This package provides binding for a generic text editor to a JSON CRDT str
node.
Installation:
npm install json-joy collaborative-editor
Simple integration for any plain text editor, for the most basic integration
you only need to implement the .get()
and .set()
methods:
import {StrBinding, EditorFacade} from 'collaborative-editor';
import {Model} from 'json-joy/lib/json-crdt';
const str = model.api.str(['path', 'to', 'string']);
const unbind = StrBinding.bind(str, {
get: () => input.value,
set: (value: string) => input.value = value,
}, true);
For a better integration, implement as many EditorFacade
methods as possible:
import {StrBinding, EditorFacade} from 'collaborative-editor';
const editor: EditorFacade = {
// ...
};
const str = model.api.str(['path', 'to', 'string']);
const binding = new StrBinding(str, editor);
binding.syncFromModel();
binding.bind(polling);
// When done, unbind the binding.
binding.unbind();
- See demo.