SharedString Class
The Shared String is a specialized data structure for handling collaborative text. It is based on a more general Sequence data structure but has additional features that make working with text easier.
In addition to text, a Shared String can also contain markers. Markers can be used to store metadata at positions within the text, like the details of an image or Fluid object that should be rendered with the text.
Signature
export declare class SharedString extends SharedSegmentSequence<SharedStringSegment> implements ISharedString
Extends: SharedSegmentSequence<SharedStringSegment
Implements: ISharedString
Constructors
Constructor | Description |
---|---|
(constructor)(document, id, attributes) | Constructs a new instance of the SharedString class |
Static Methods
Method | Return Type | Description |
---|---|---|
create(runtime, id) | SharedString | Create a new shared string. |
getFactory() | SharedStringFactory | Get a factory for SharedString to register with the data store. |
Properties
Property | Type | Description |
---|---|---|
id | string | |
ISharedString | ISharedString |
Methods
Method | Return Type | Description |
---|---|---|
annotateMarker(marker, props, combiningOp) | void | Annotates the marker with the provided properties. |
annotateMarkerNotifyConsensus(marker, props, callback) | void | Annotates the marker with the provided properties and calls the callback on consensus. |
findTile(startPos, tileLabel, preceding) | { tile: ReferencePosition; pos: number; } | |
getMarkerFromId(id) | ISegment | |
getText(start, end) | string | Retrieve text from the SharedString in string format. |
getTextAndMarkers(label) | { parallelText: string[]; parallelMarkers: Marker[]; } | |
getTextRangeWithMarkers(start, end) | string | |
getTextRangeWithPlaceholders(start, end) | string | |
getTextWithPlaceholders() | string | Adds spaces for markers and handles, so that position calculations account for them. |
insertMarker(pos, refType, props) | IMergeTreeInsertMsg | Inserts a marker at the position. |
insertMarkerRelative(relativePos1, refType, props) | void | Inserts a marker at a relative position. |
insertText(pos, text, props) | void | Inserts the text at the position. |
insertTextRelative(relativePos1, text, props) | void | Inserts the text at the position. |
removeText(start, end) | IMergeTreeRemoveMsg | Removes the text in the given range. |
replaceText(start, end, text, props) | void | Replaces a range with the provided text. |
Constructor Details
(constructor)
Constructs a new instance of the SharedString
class
Signature
constructor(document: IFluidDataStoreRuntime, id: string, attributes: IChannelAttributes);
Parameters
Parameter | Type | Description |
---|---|---|
document | IFluidDataStoreRuntime | |
id | string | |
attributes | IChannelAttributes |
Property Details
id
Signature
id: string;
Type: string
ISharedString
Signature
get ISharedString(): ISharedString;
Type: ISharedString
Method Details
annotateMarker
Annotates the marker with the provided properties.
Signature
annotateMarker(marker: Marker, props: PropertySet, combiningOp?: ICombiningOp): void;
Parameters
Parameter | Modifiers | Type | Description |
---|---|---|---|
marker | Marker | The marker to annotate | |
props | PropertySet | The properties to annotate the marker with | |
combiningOp | optional | ICombiningOp | Optional. Specifies how to combine values for the property, such as "incr" for increment. |
annotateMarkerNotifyConsensus
Annotates the marker with the provided properties and calls the callback on consensus.
Signature
annotateMarkerNotifyConsensus(marker: Marker, props: PropertySet, callback: (m: Marker) => void): void;
Parameters
Parameter | Type | Description |
---|---|---|
marker | Marker | The marker to annotate |
props | PropertySet | The properties to annotate the marker with |
callback | (m: Marker) => void |
create
Create a new shared string.
Signature
static create(runtime: IFluidDataStoreRuntime, id?: string): SharedString;
Parameters
Parameter | Modifiers | Type | Description |
---|---|---|---|
runtime | IFluidDataStoreRuntime | data store runtime the new shared string belongs to | |
id | optional | string | optional name of the shared string |
Returns
newly create shared string (but not attached yet)
Return type: SharedString
findTile
Signature
findTile(startPos: number | undefined, tileLabel: string, preceding?: boolean): {
tile: ReferencePosition;
pos: number;
};
Parameters
Parameter | Modifiers | Type | Description |
---|---|---|---|
startPos | number | undefined | ||
tileLabel | string | ||
preceding | optional | boolean |
Returns
Return type: { tile: ReferencePosition; pos: number; }
getFactory
Get a factory for SharedString to register with the data store.
Signature
static getFactory(): SharedStringFactory;
Returns
a factory that creates and load SharedString
Return type: SharedStringFactory
getMarkerFromId
Signature
getMarkerFromId(id: string): ISegment;
Parameters
Parameter | Type | Description |
---|---|---|
id | string |
Returns
Return type: ISegment
getText
Retrieve text from the SharedString in string format.
Signature
getText(start?: number, end?: number): string;
Parameters
Parameter | Modifiers | Type | Description |
---|---|---|---|
start | optional | number | The starting index of the text to retrieve, or 0 if omitted. |
end | optional | number | The ending index of the text to retrieve, or the end of the string if omitted |
Returns
The requested text content as a string.
Return type: string
getTextAndMarkers
Signature
getTextAndMarkers(label: string): {
parallelText: string[];
parallelMarkers: Marker[];
};
Parameters
Parameter | Type | Description |
---|---|---|
label | string |
Returns
Return type: { parallelText: string[]; parallelMarkers: Marker[]; }
getTextRangeWithMarkers
Signature
getTextRangeWithMarkers(start: number, end: number): string;
Parameters
Parameter | Type | Description |
---|---|---|
start | number | |
end | number |
Returns
Return type: string
getTextRangeWithPlaceholders
Signature
getTextRangeWithPlaceholders(start: number, end: number): string;
Parameters
Parameter | Type | Description |
---|---|---|
start | number | |
end | number |
Returns
Return type: string
getTextWithPlaceholders
Adds spaces for markers and handles, so that position calculations account for them.
Signature
getTextWithPlaceholders(): string;
Returns
Return type: string
insertMarker
Inserts a marker at the position.
Signature
insertMarker(pos: number, refType: ReferenceType, props?: PropertySet): IMergeTreeInsertMsg;
Parameters
Parameter | Modifiers | Type | Description |
---|---|---|---|
pos | number | The position to insert the marker at | |
refType | ReferenceType | The reference type of the marker | |
props | optional | PropertySet | The properties of the marker |
Returns
Return type: IMergeTreeInsertMsg
insertMarkerRelative
Inserts a marker at a relative position.
Signature
insertMarkerRelative(relativePos1: IRelativePosition, refType: ReferenceType, props?: PropertySet): void;
Parameters
Parameter | Modifiers | Type | Description |
---|---|---|---|
relativePos1 | IRelativePosition | The relative position to insert the marker at | |
refType | ReferenceType | The reference type of the marker | |
props | optional | PropertySet | The properties of the marker |
insertText
Inserts the text at the position.
Signature
insertText(pos: number, text: string, props?: PropertySet): void;
Parameters
Parameter | Modifiers | Type | Description |
---|---|---|---|
pos | number | The position to insert the text at | |
text | string | The text to insert | |
props | optional | PropertySet | The properties of the text |
insertTextRelative
Inserts the text at the position.
Signature
insertTextRelative(relativePos1: IRelativePosition, text: string, props?: PropertySet): void;
Parameters
Parameter | Modifiers | Type | Description |
---|---|---|---|
relativePos1 | IRelativePosition | The relative position to insert the text at | |
text | string | The text to insert | |
props | optional | PropertySet | The properties of text |
removeText
Removes the text in the given range.
Signature
removeText(start: number, end: number): IMergeTreeRemoveMsg;
Parameters
Parameter | Type | Description |
---|---|---|
start | number | The inclusive start of the range to remove |
end | number | The exclusive end of the range to replace |
Returns
the message sent.
Return type: IMergeTreeRemoveMsg
replaceText
Replaces a range with the provided text.
Signature
replaceText(start: number, end: number, text: string, props?: PropertySet): void;
Parameters
Parameter | Modifiers | Type | Description |
---|---|---|---|
start | number | The inclusive start of the range to replace | |
end | number | The exclusive end of the range to replace | |
text | string | The text to replace the range with | |
props | optional | PropertySet | Optional. The properties of the replacement text |