Text

adds collaborative text editing capabilities similar to those found in google docs.

ts//...
const context = colab.changeContext();
const mydoc = context.text("doc"); // text node at "doc" key

// set handlers
mydoc.handlers = {
 insert(index,value,ctx){
   console.log(ctx.userId);
   console.log("inserted" + value + "at" + index );
 },

 delete(fragments,ctx){
   fragments.forEach(fragment => {
     console.log("deleted" + length + "characters at" + index );
   });
 }
}

// edit text
const edit = (index, text, delCount) => {
   mydoc.replace(index,text,delCount);
}

// ...
tsinterface Text {
  handlers: {
    delete?: (fragments: TextFragment[], ctx: Ictx) => any;
    insert?: (index: number, text: string, ctx: Ictx) => any;
    replace?: (
      fragments: TextFragment[],
      index: number,
      text: string,
      ctx: Ictx
    ) => any;
  };
  delete(index: number, length: number): void;
  insert(index: number, text: string): void;
  replace(index: number, text: string, delCount: number): void;
  value(): undefined | string;
}

index

properties

Properties

handlers

text change handlers

to set text handlers

tsconst text = ctx.text("doc");

text.handler = {
 insert(index,value,ctx) {
   if (ctx.isLocal) return;
   console.log("inserted" + value + "at" + index );
 }
}
ts{ delete?:  (fragments: TextFragment[], ctx: Ictx) => any ;insert?:  (index: number, text: string, ctx: Ictx) => any ;replace?:  (fragments: TextFragment[], index: number, text: string, ctx: Ictx) => any ; }

Methods

delete

tsdelete (index: number, length: number) : void ;

delete text

Parameters

index

index to start deletion on

tsnumber
length

number of characters to delete

tsnumber
Returns
tsvoid

insert

tsinsert (index: number, text: string) : void ;

insert text

Parameters

index

insert index

tsnumber
text

text value to insert

tsstring
Returns
tsvoid

replace

tsreplace (index: number, text: string, delCount: number) : void ;

replace text

this is equivalent to deleting a range of text then inserting text but done together. if text is a empty string it is converted to a delete only, if delCount is 0 its converted to insert. if text is empty and delCount is 0 it is a no-op.

Parameters

index

index to start replace

tsnumber
text

text to insert

tsstring
delCount

number of characters to delete

tsnumber
Returns
tsvoid

value

tsvalue () : undefined | string ;

get text value

Returns

text value or undefined if text has not been modified yet

tsundefined | string