Text
adds collaborative text editing capabilities similar to those found in google docs.
//...
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);
}
// ...
interface 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
const text = ctx.text("doc");
text.handler = {
insert(index,value,ctx) {
if (ctx.isLocal) return;
console.log("inserted" + value + "at" + index );
}
}
{ 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
delete (index: number, length: number) : void ;delete text
Parameters
index
index to start deletion on
numberlength
number of characters to delete
numberReturns
voidinsert
insert (index: number, text: string) : void ;insert text
Parameters
index
insert index
numbertext
text value to insert
stringReturns
voidreplace
replace (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
numbertext
text to insert
stringdelCount
number of characters to delete
numberReturns
voidvalue
value () : undefined | string ;get text value
Returns
text value or undefined if text has not been modified yet
undefined | string