Skip to content

JSON CRDT "str" node binding to any generic plain text editor UI.

Notifications You must be signed in to change notification settings

streamich/collaborative-editor

Repository files navigation

Collaborative plain text editor binding

This package provides binding for a generic text editor to a JSON CRDT str node.

collaborative-editor

Usage

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();

Preview

About

JSON CRDT "str" node binding to any generic plain text editor UI.

Resources

Stars

Watchers

Forks

Sponsor this project

 

Packages

No packages published