Skip to main content
Version: v1

MergeTree Class

Signature

export declare class MergeTree

Constructors

Constructor Description
(constructor)(options) Constructs a new instance of the MergeTree class

Static Properties

Property Type Description
options { incrementalUpdate: boolean; insertAfterRemovedSegs: boolean; zamboniSegments: boolean; }

Properties

Property Modifiers Type Description
collabWindow CollaborationWindow
length number Returns the current length of the MergeTree for the local client.
mergeTreeDeltaCallback optional MergeTreeDeltaCallback
mergeTreeMaintenanceCallback optional MergeTreeMaintenanceCallback
options optional PropertySet | undefined
pendingSegments List<SegmentGroup> | undefined
root IMergeBlock

Methods

Method Alerts Return Type Description
ackPendingSegment(opArgs) void Assign sequence number to existing segment; update partial lengths to reflect the change
addLocalReference(lref) Deprecated void
addMinSeqListener(minRequired, onMinGE) void
annotateRange(start, end, props, combiningOp, refSeq, clientId, seq, opArgs) void Annotate a range with properties
blockClone(block, segments) MergeBlock
clone() void
createLocalReferencePosition(segment, offset, refType, properties, client) LocalReferencePosition
findTile(startPos, clientId, tileLabel, posPrecedesTile) { tile: ReferencePosition; pos: number; } | undefined
getCollabWindow() CollaborationWindow
getContainingSegment(pos, refSeq, clientId) { segment: T | undefined; offset: number | undefined; }
getLength(refSeq, clientId) number
getMarkerFromId(id) ISegment | undefined
getPosition(node, refSeq, clientId) number
getStackContext(startPos, clientId, rangeLabels) RangeStackMap
getStats() MergeTreeStats
incrementalBlockMap(stateStack) void
insertAtReferencePosition(referencePosition, insertSegment, opArgs) void
insertSegments(pos, segments, refSeq, clientId, seq, opArgs) void
localNetLength(segment) number
map(actions, refSeq, clientId, accum) void
mapIdToSegment(id, segment) void
mapRange(actions, refSeq, clientId, accum, start, end, splitRange) void
markRangeRemoved(start, end, refSeq, clientId, seq, overwrite, opArgs) void
posFromRelativePos(relativePos, refseq, clientId) number Given a position specified relative to a marker id, lookup the marker and convert the position to a character position.
referencePositionToLocalPosition(refPos, refSeq, clientId) number
reloadFromSegments(segments) void
removeLocalReference(segment, lref) Deprecated void
removeLocalReferencePosition(lref) LocalReferencePosition | undefined
resolveRemoteClientPosition(remoteClientPosition, remoteClientRefSeq, remoteClientId) number | undefined Resolves a remote client's position against the local sequence and returns the remote client's position relative to the local sequence. The client ref seq must be above the minimum sequence number or the return value will be undefined. Generally this method is used in conjunction with signals which provide point in time values for the below parameters, and is useful for things like displaying user position. It should not be used with persisted values as persisted values will quickly become invalid as the remoteClientRefSeq moves below the minimum sequence number
setMinSeq(minSeq) void
startCollaboration(localClientId, minSeq, currentSeq) void
walkAllSegments(block, action, accum) boolean

Constructor Details

(constructor)

Constructs a new instance of the MergeTree class

Signature
constructor(options?: PropertySet | undefined);

Parameters

Parameter Modifiers Type Description
options optional PropertySet | undefined

Property Details

collabWindow

Signature
readonly collabWindow: CollaborationWindow;

Type: CollaborationWindow

length

Returns the current length of the MergeTree for the local client.

Signature
get length(): number;

Type: number

mergeTreeDeltaCallback

Signature
mergeTreeDeltaCallback?: MergeTreeDeltaCallback;

Type: MergeTreeDeltaCallback

mergeTreeMaintenanceCallback

Signature
mergeTreeMaintenanceCallback?: MergeTreeMaintenanceCallback;

Type: MergeTreeMaintenanceCallback

options

Signature
options?: PropertySet | undefined;

Type: PropertySet | undefined

options

Signature
static readonly options: {
incrementalUpdate: boolean;
insertAfterRemovedSegs: boolean;
zamboniSegments: boolean;
};

Type: { incrementalUpdate: boolean; insertAfterRemovedSegs: boolean; zamboniSegments: boolean; }

pendingSegments

Signature
pendingSegments: List<SegmentGroup> | undefined;

Type: List<SegmentGroup> | undefined

root

Signature
root: IMergeBlock;

Type: IMergeBlock

Method Details

ackPendingSegment

Assign sequence number to existing segment; update partial lengths to reflect the change

Signature
ackPendingSegment(opArgs: IMergeTreeDeltaOpArgs): void;

Parameters

Parameter Type Description
opArgs IMergeTreeDeltaOpArgs

addLocalReference

This API is deprecated and will be removed in a future release.
  • use createLocalReference
Signature
addLocalReference(lref: LocalReference): void;

Parameters

Parameter Type Description
lref LocalReference

addMinSeqListener

Signature
addMinSeqListener(minRequired: number, onMinGE: (minSeq: number) => void): void;

Parameters

Parameter Type Description
minRequired number
onMinGE (minSeq: number) => void

annotateRange

Annotate a range with properties

Signature
annotateRange(start: number, end: number, props: PropertySet, combiningOp: ICombiningOp | undefined, refSeq: number, clientId: number, seq: number, opArgs: IMergeTreeDeltaOpArgs): void;

Parameters

Parameter Type Description
start number The inclusive start position of the range to annotate
end number The exclusive end position of the range to annotate
props PropertySet The properties to annotate the range with
combiningOp ICombiningOp | undefined Optional. Specifies how to combine values for the property, such as "incr" for increment.
refSeq number The reference sequence number to use to apply the annotate
clientId number The id of the client making the annotate
seq number The sequence number of the annotate operation
opArgs IMergeTreeDeltaOpArgs The op args for the annotate op. this is passed to the merge tree callback if there is one

blockClone

Signature
blockClone(block: IMergeBlock, segments?: ISegment[]): MergeBlock;

Parameters

Parameter Modifiers Type Description
block IMergeBlock
segments optional ISegment[]

Returns

Return type: MergeBlock

clone

Signature
clone(): void;

createLocalReferencePosition

Signature
createLocalReferencePosition(segment: ISegment, offset: number | undefined, refType: ReferenceType, properties: PropertySet | undefined, client: Client): LocalReferencePosition;

Parameters

Parameter Type Description
segment ISegment
offset number | undefined
refType ReferenceType
properties PropertySet | undefined
client Client

Returns

Return type: LocalReferencePosition

findTile

Signature
findTile(startPos: number, clientId: number, tileLabel: string, posPrecedesTile?: boolean): {
tile: ReferencePosition;
pos: number;
} | undefined;

Parameters

Parameter Modifiers Type Description
startPos number
clientId number
tileLabel string
posPrecedesTile optional boolean

Returns

Return type: { tile: ReferencePosition; pos: number; } | undefined

getCollabWindow

Signature
getCollabWindow(): CollaborationWindow;

Returns

Return type: CollaborationWindow

getContainingSegment

Signature
getContainingSegment<T extends ISegment>(pos: number, refSeq: number, clientId: number): {
segment: T | undefined;
offset: number | undefined;
};
Type Parameters
Parameter Constraint Description
T ISegment

Parameters

Parameter Type Description
pos number
refSeq number
clientId number

Returns

Return type: { segment: T | undefined; offset: number | undefined; }

getLength

Signature
getLength(refSeq: number, clientId: number): number;

Parameters

Parameter Type Description
refSeq number
clientId number

Returns

Return type: number

getMarkerFromId

Signature
getMarkerFromId(id: string): ISegment | undefined;

Parameters

Parameter Type Description
id string

Returns

Return type: ISegment | undefined

getPosition

Signature
getPosition(node: MergeNode, refSeq: number, clientId: number): number;

Parameters

Parameter Type Description
node MergeNode
refSeq number
clientId number

Returns

Return type: number

getStackContext

Signature
getStackContext(startPos: number, clientId: number, rangeLabels: string[]): RangeStackMap;

Parameters

Parameter Type Description
startPos number
clientId number
rangeLabels string[]

Returns

Return type: RangeStackMap

getStats

Signature
getStats(): MergeTreeStats;

Returns

Return type: MergeTreeStats

incrementalBlockMap

Signature
incrementalBlockMap<TContext>(stateStack: Stack<IncrementalMapState<TContext>>): void;
Type Parameters
Parameter Description
TContext

Parameters

Parameter Type Description
stateStack Stack<IncrementalMapState<TContext>>

insertAtReferencePosition

Signature
insertAtReferencePosition(referencePosition: ReferencePosition, insertSegment: ISegment, opArgs: IMergeTreeDeltaOpArgs): void;

Parameters

Parameter Type Description
referencePosition ReferencePosition
insertSegment ISegment
opArgs IMergeTreeDeltaOpArgs

insertSegments

Signature
insertSegments(pos: number, segments: ISegment[], refSeq: number, clientId: number, seq: number, opArgs: IMergeTreeDeltaOpArgs | undefined): void;

Parameters

Parameter Type Description
pos number
segments ISegment[]
refSeq number
clientId number
seq number
opArgs IMergeTreeDeltaOpArgs | undefined

localNetLength

Signature
localNetLength(segment: ISegment): number;

Parameters

Parameter Type Description
segment ISegment

Returns

Return type: number

map

Signature
map<TClientData>(actions: SegmentActions<TClientData>, refSeq: number, clientId: number, accum: TClientData): void;
Type Parameters
Parameter Description
TClientData

Parameters

Parameter Type Description
actions SegmentActions<TClientData>
refSeq number
clientId number
accum TClientData

mapIdToSegment

Signature
mapIdToSegment(id: string, segment: ISegment): void;

Parameters

Parameter Type Description
id string
segment ISegment

mapRange

Signature
mapRange<TClientData>(actions: SegmentActions<TClientData>, refSeq: number, clientId: number, accum: TClientData, start?: number, end?: number, splitRange?: boolean): void;
Type Parameters
Parameter Description
TClientData

Parameters

Parameter Modifiers Type Description
actions SegmentActions<TClientData>
refSeq number
clientId number
accum TClientData
start optional number
end optional number
splitRange optional boolean

markRangeRemoved

Signature
markRangeRemoved(start: number, end: number, refSeq: number, clientId: number, seq: number, overwrite: boolean | undefined, opArgs: IMergeTreeDeltaOpArgs): void;

Parameters

Parameter Type Description
start number
end number
refSeq number
clientId number
seq number
overwrite boolean | undefined
opArgs IMergeTreeDeltaOpArgs

posFromRelativePos

Given a position specified relative to a marker id, lookup the marker and convert the position to a character position.

Signature
posFromRelativePos(relativePos: IRelativePosition, refseq?: number, clientId?: number): number;

Parameters

Parameter Modifiers Type Description
relativePos IRelativePosition Id of marker (may be indirect) and whether position is before or after marker.
refseq optional number The reference sequence number at which to compute the position.
clientId optional number The client id with which to compute the position.

Returns

Return type: number

referencePositionToLocalPosition

Signature
referencePositionToLocalPosition(refPos: ReferencePosition, refSeq?: number, clientId?: number): number;

Parameters

Parameter Modifiers Type Description
refPos ReferencePosition
refSeq optional number
clientId optional number

Returns

Return type: number

reloadFromSegments

Signature
reloadFromSegments(segments: ISegment[]): void;

Parameters

Parameter Type Description
segments ISegment[]

removeLocalReference

This API is deprecated and will be removed in a future release.
  • use removeLocalReferencePosition
Signature
removeLocalReference(segment: ISegment, lref: LocalReference): void;

Parameters

Parameter Type Description
segment ISegment
lref LocalReference

removeLocalReferencePosition

Signature
removeLocalReferencePosition(lref: LocalReferencePosition): LocalReferencePosition | undefined;

Parameters

Parameter Type Description
lref LocalReferencePosition

Returns

Return type: LocalReferencePosition | undefined

resolveRemoteClientPosition

Resolves a remote client's position against the local sequence and returns the remote client's position relative to the local sequence. The client ref seq must be above the minimum sequence number or the return value will be undefined. Generally this method is used in conjunction with signals which provide point in time values for the below parameters, and is useful for things like displaying user position. It should not be used with persisted values as persisted values will quickly become invalid as the remoteClientRefSeq moves below the minimum sequence number

Signature
resolveRemoteClientPosition(remoteClientPosition: number, remoteClientRefSeq: number, remoteClientId: number): number | undefined;

Parameters

Parameter Type Description
remoteClientPosition number The remote client's position to resolve
remoteClientRefSeq number The reference sequence number of the remote client
remoteClientId number The client id of the remote client

Returns

Return type: number | undefined

setMinSeq

Signature
setMinSeq(minSeq: number): void;

Parameters

Parameter Type Description
minSeq number

startCollaboration

Signature
startCollaboration(localClientId: number, minSeq: number, currentSeq: number): void;

Parameters

Parameter Type Description
localClientId number
minSeq number
currentSeq number

walkAllSegments

Signature
walkAllSegments<TClientData>(block: IMergeBlock, action: (segment: ISegment, accum?: TClientData) => boolean, accum?: TClientData): boolean;
Type Parameters
Parameter Description
TClientData

Parameters

Parameter Modifiers Type Description
block IMergeBlock
action (segment: ISegment, accum?: TClientData) => boolean
accum optional TClientData

Returns

Return type: boolean