@fluidframework/sequence 2.0.0-dev.7.4.0.217212 → 2.0.0-dev.7.4.0.221926
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +57 -0
- package/api-extractor.json +0 -3
- package/api-report/sequence.api.md +33 -25
- package/dist/intervalCollection.d.ts +31 -6
- package/dist/intervalCollection.d.ts.map +1 -1
- package/dist/intervalCollection.js +45 -43
- package/dist/intervalCollection.js.map +1 -1
- package/dist/intervalIndex/intervalIndex.d.ts +1 -1
- package/dist/intervalIndex/intervalIndex.js.map +1 -1
- package/dist/intervals/intervalUtils.d.ts +6 -7
- package/dist/intervals/intervalUtils.d.ts.map +1 -1
- package/dist/intervals/intervalUtils.js +2 -2
- package/dist/intervals/intervalUtils.js.map +1 -1
- package/dist/intervals/sequenceInterval.d.ts +1 -1
- package/dist/intervals/sequenceInterval.js +1 -1
- package/dist/intervals/sequenceInterval.js.map +1 -1
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/sequence-alpha.d.ts +1188 -106
- package/dist/sequence-beta.d.ts +44 -0
- package/dist/sequence-public.d.ts +44 -0
- package/dist/sequence-untrimmed.d.ts +40 -26
- package/dist/sequence.d.ts +2 -2
- package/dist/sequence.js +1 -1
- package/dist/sequence.js.map +1 -1
- package/dist/sequenceDeltaEvent.d.ts +4 -4
- package/dist/sequenceDeltaEvent.js +3 -3
- package/dist/sequenceDeltaEvent.js.map +1 -1
- package/dist/sequenceFactory.d.ts +1 -1
- package/dist/sequenceFactory.js +1 -1
- package/dist/sequenceFactory.js.map +1 -1
- package/dist/sharedIntervalCollection.d.ts +1 -1
- package/dist/sharedIntervalCollection.js.map +1 -1
- package/dist/sharedString.d.ts +3 -3
- package/dist/sharedString.js +1 -1
- package/dist/sharedString.js.map +1 -1
- package/lib/defaultMap.js +22 -18
- package/lib/defaultMap.js.map +1 -1
- package/lib/defaultMapInterfaces.js +2 -1
- package/lib/defaultMapInterfaces.js.map +1 -1
- package/lib/index.js +45 -10
- package/lib/index.js.map +1 -1
- package/lib/intervalCollection.d.ts +31 -6
- package/lib/intervalCollection.d.ts.map +1 -1
- package/lib/intervalCollection.js +169 -154
- package/lib/intervalCollection.js.map +1 -1
- package/lib/intervalIndex/endpointInRangeIndex.js +17 -12
- package/lib/intervalIndex/endpointInRangeIndex.js.map +1 -1
- package/lib/intervalIndex/endpointIndex.js +13 -8
- package/lib/intervalIndex/endpointIndex.js.map +1 -1
- package/lib/intervalIndex/idIntervalIndex.js +8 -4
- package/lib/intervalIndex/idIntervalIndex.js.map +1 -1
- package/lib/intervalIndex/index.js +19 -6
- package/lib/intervalIndex/index.js.map +1 -1
- package/lib/intervalIndex/intervalIndex.d.ts +1 -1
- package/lib/intervalIndex/intervalIndex.js +2 -1
- package/lib/intervalIndex/intervalIndex.js.map +1 -1
- package/lib/intervalIndex/intervalIndexUtils.js +8 -4
- package/lib/intervalIndex/intervalIndexUtils.js.map +1 -1
- package/lib/intervalIndex/overlappingIntervalsIndex.js +15 -10
- package/lib/intervalIndex/overlappingIntervalsIndex.js.map +1 -1
- package/lib/intervalIndex/overlappingSequenceIntervalsIndex.js +14 -10
- package/lib/intervalIndex/overlappingSequenceIntervalsIndex.js.map +1 -1
- package/lib/intervalIndex/sequenceIntervalIndexes.js +2 -1
- package/lib/intervalIndex/sequenceIntervalIndexes.js.map +1 -1
- package/lib/intervalIndex/startpointInRangeIndex.js +17 -12
- package/lib/intervalIndex/startpointInRangeIndex.js.map +1 -1
- package/lib/intervalTree.js +9 -4
- package/lib/intervalTree.js.map +1 -1
- package/lib/intervals/index.js +18 -3
- package/lib/intervals/index.js.map +1 -1
- package/lib/intervals/interval.js +18 -13
- package/lib/intervals/interval.js.map +1 -1
- package/lib/intervals/intervalUtils.d.ts +6 -7
- package/lib/intervals/intervalUtils.d.ts.map +1 -1
- package/lib/intervals/intervalUtils.js +20 -15
- package/lib/intervals/intervalUtils.js.map +1 -1
- package/lib/intervals/sequenceInterval.d.ts +1 -1
- package/lib/intervals/sequenceInterval.js +66 -60
- package/lib/intervals/sequenceInterval.js.map +1 -1
- package/lib/localValues.js +9 -4
- package/lib/localValues.js.map +1 -1
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.js +5 -2
- package/lib/packageVersion.js.map +1 -1
- package/lib/revertibles.js +69 -59
- package/lib/revertibles.js.map +1 -1
- package/lib/sequence-alpha.d.ts +1188 -106
- package/lib/sequence-beta.d.ts +44 -0
- package/lib/sequence-public.d.ts +44 -0
- package/lib/sequence-untrimmed.d.ts +40 -26
- package/lib/sequence.d.ts +2 -2
- package/lib/sequence.js +45 -40
- package/lib/sequence.js.map +1 -1
- package/lib/sequenceDeltaEvent.d.ts +4 -4
- package/lib/sequenceDeltaEvent.js +16 -10
- package/lib/sequenceDeltaEvent.js.map +1 -1
- package/lib/sequenceFactory.d.ts +1 -1
- package/lib/sequenceFactory.js +14 -10
- package/lib/sequenceFactory.js.map +1 -1
- package/lib/sharedIntervalCollection.d.ts +1 -1
- package/lib/sharedIntervalCollection.js +18 -13
- package/lib/sharedIntervalCollection.js.map +1 -1
- package/lib/sharedSequence.js +11 -6
- package/lib/sharedSequence.js.map +1 -1
- package/lib/sharedString.d.ts +3 -3
- package/lib/sharedString.js +22 -17
- package/lib/sharedString.js.map +1 -1
- package/package.json +18 -17
- package/sequence.test-files.tar +0 -0
- package/src/intervalCollection.ts +88 -55
- package/src/intervalIndex/intervalIndex.ts +1 -1
- package/src/intervals/intervalUtils.ts +6 -7
- package/src/intervals/sequenceInterval.ts +1 -1
- package/src/packageVersion.ts +1 -1
- package/src/sequence.ts +2 -2
- package/src/sequenceDeltaEvent.ts +4 -4
- package/src/sequenceFactory.ts +1 -1
- package/src/sharedIntervalCollection.ts +1 -1
- package/src/sharedString.ts +3 -3
|
@@ -87,7 +87,7 @@ import {
|
|
|
87
87
|
* If a SequencePlace is the endpoint of a range (e.g. start/end of an interval or search range),
|
|
88
88
|
* the Side value means it is exclusive if it is nearer to the other position and inclusive if it is farther.
|
|
89
89
|
* E.g. the start of a range with Side.After is exclusive of the character at the position.
|
|
90
|
-
* @
|
|
90
|
+
* @alpha
|
|
91
91
|
*/
|
|
92
92
|
export type SequencePlace = number | "start" | "end" | InteriorSequencePlace;
|
|
93
93
|
|
|
@@ -95,7 +95,7 @@ export type SequencePlace = number | "start" | "end" | InteriorSequencePlace;
|
|
|
95
95
|
* A sequence place that does not refer to the special endpoint segments.
|
|
96
96
|
*
|
|
97
97
|
* See {@link SequencePlace} for additional context.
|
|
98
|
-
* @
|
|
98
|
+
* @alpha
|
|
99
99
|
*/
|
|
100
100
|
export interface InteriorSequencePlace {
|
|
101
101
|
pos: number;
|
|
@@ -106,7 +106,7 @@ export interface InteriorSequencePlace {
|
|
|
106
106
|
* Defines a side relative to a character in a sequence.
|
|
107
107
|
*
|
|
108
108
|
* @remarks See {@link SequencePlace} for additional context on usage.
|
|
109
|
-
* @
|
|
109
|
+
* @alpha
|
|
110
110
|
*/
|
|
111
111
|
export enum Side {
|
|
112
112
|
Before = 0,
|
|
@@ -626,7 +626,7 @@ export function makeOpsMap<T extends ISerializableInterval>(): Map<
|
|
|
626
626
|
}
|
|
627
627
|
|
|
628
628
|
/**
|
|
629
|
-
* @
|
|
629
|
+
* @alpha
|
|
630
630
|
*/
|
|
631
631
|
export type DeserializeCallback = (properties: PropertySet) => void;
|
|
632
632
|
|
|
@@ -665,7 +665,7 @@ class IntervalCollectionIterator<TInterval extends ISerializableInterval>
|
|
|
665
665
|
|
|
666
666
|
/**
|
|
667
667
|
* Change events emitted by `IntervalCollection`s
|
|
668
|
-
* @
|
|
668
|
+
* @alpha
|
|
669
669
|
*/
|
|
670
670
|
export interface IIntervalCollectionEvent<TInterval extends ISerializableInterval> extends IEvent {
|
|
671
671
|
/**
|
|
@@ -733,7 +733,7 @@ const isSequencePlace = (place: any): place is SequencePlace => {
|
|
|
733
733
|
/**
|
|
734
734
|
* Collection of intervals that supports addition, modification, removal, and efficient spatial querying.
|
|
735
735
|
* Changes to this collection will be incur updates on collaborating clients (i.e. they are not local-only).
|
|
736
|
-
* @
|
|
736
|
+
* @alpha
|
|
737
737
|
*/
|
|
738
738
|
export interface IIntervalCollection<TInterval extends ISerializableInterval>
|
|
739
739
|
extends TypedEventEmitter<IIntervalCollectionEvent<TInterval>> {
|
|
@@ -865,6 +865,7 @@ export interface IIntervalCollection<TInterval extends ISerializableInterval>
|
|
|
865
865
|
removeIntervalById(id: string): TInterval | undefined;
|
|
866
866
|
/**
|
|
867
867
|
* Changes the properties on an existing interval.
|
|
868
|
+
* @deprecated - call change with the id and and object containing the new properties
|
|
868
869
|
* @param id - Id of the interval whose properties should be changed
|
|
869
870
|
* @param props - Property set to apply to the interval. Shallow merging is used between any existing properties
|
|
870
871
|
* and `prop`, i.e. the interval will end up with a property object equivalent to `{ ...oldProps, ...props }`.
|
|
@@ -872,12 +873,25 @@ export interface IIntervalCollection<TInterval extends ISerializableInterval>
|
|
|
872
873
|
changeProperties(id: string, props: PropertySet);
|
|
873
874
|
/**
|
|
874
875
|
* Changes the endpoints of an existing interval.
|
|
876
|
+
* @deprecated - call change with the start and end parameters encapsulated in an object
|
|
875
877
|
* @param id - Id of the interval to change
|
|
876
878
|
* @param start - New start value. To leave the endpoint unchanged, pass the current value.
|
|
877
879
|
* @param end - New end value. To leave the endpoint unchanged, pass the current value.
|
|
878
880
|
* @returns the interval that was changed, if it existed in the collection.
|
|
879
881
|
*/
|
|
880
882
|
change(id: string, start: SequencePlace, end: SequencePlace): TInterval | undefined;
|
|
883
|
+
/**
|
|
884
|
+
* Changes the endpoints, properties, or both of an existing interval.
|
|
885
|
+
* @param id - Id of the Interval to change
|
|
886
|
+
* @returns the interval that was changed, if it existed in the collection.
|
|
887
|
+
* Pass the desired new start position, end position, and/or properties in an object. Start and end positions must be changed
|
|
888
|
+
* simultaneously - they must either both be specified or both undefined. To only change the properties, leave both endpoints
|
|
889
|
+
* undefined. To only change the endpoints, leave the properties undefined.
|
|
890
|
+
*/
|
|
891
|
+
change(
|
|
892
|
+
id: string,
|
|
893
|
+
{ start, end, props }: { start?: SequencePlace; end?: SequencePlace; props?: PropertySet },
|
|
894
|
+
): TInterval | undefined;
|
|
881
895
|
|
|
882
896
|
attachDeserializer(onDeserialize: DeserializeCallback): void;
|
|
883
897
|
/**
|
|
@@ -1390,70 +1404,83 @@ export class IntervalCollection<TInterval extends ISerializableInterval>
|
|
|
1390
1404
|
|
|
1391
1405
|
/**
|
|
1392
1406
|
* {@inheritdoc IIntervalCollection.changeProperties}
|
|
1407
|
+
* @deprecated - call change with the id and an object containing the new props values
|
|
1393
1408
|
*/
|
|
1394
1409
|
public changeProperties(id: string, props: PropertySet) {
|
|
1395
|
-
|
|
1396
|
-
throw new LoggingError("Attach must be called before accessing intervals");
|
|
1397
|
-
}
|
|
1398
|
-
if (typeof id !== "string") {
|
|
1399
|
-
throw new LoggingError("Change API requires an ID that is a string");
|
|
1400
|
-
}
|
|
1401
|
-
if (!props) {
|
|
1402
|
-
throw new LoggingError("changeProperties should be called with a property set");
|
|
1403
|
-
}
|
|
1404
|
-
// prevent the overwriting of an interval label, it should remain unchanged
|
|
1405
|
-
// once it has been inserted into the collection.
|
|
1406
|
-
if (props[reservedRangeLabelsKey] !== undefined) {
|
|
1407
|
-
throw new LoggingError(
|
|
1408
|
-
"The label property should not be modified once inserted to the collection",
|
|
1409
|
-
);
|
|
1410
|
-
}
|
|
1411
|
-
|
|
1412
|
-
const interval = this.getIntervalById(id);
|
|
1413
|
-
if (interval) {
|
|
1414
|
-
const deltaProps = interval.addProperties(
|
|
1415
|
-
props,
|
|
1416
|
-
true,
|
|
1417
|
-
this.isCollaborating ? UnassignedSequenceNumber : UniversalSequenceNumber,
|
|
1418
|
-
);
|
|
1419
|
-
const serializedInterval: ISerializedInterval = interval.serialize();
|
|
1420
|
-
|
|
1421
|
-
// Emit a change op that will only change properties. Add the ID to
|
|
1422
|
-
// the property bag provided by the caller.
|
|
1423
|
-
serializedInterval.start = undefined as any;
|
|
1424
|
-
serializedInterval.end = undefined as any;
|
|
1425
|
-
|
|
1426
|
-
serializedInterval.properties = props;
|
|
1427
|
-
serializedInterval.properties[reservedIntervalIdKey] = interval.getIntervalId();
|
|
1428
|
-
const localSeq = this.getNextLocalSeq();
|
|
1429
|
-
this.localSeqToSerializedInterval.set(localSeq, serializedInterval);
|
|
1430
|
-
this.emitter.emit("change", undefined, serializedInterval, { localSeq });
|
|
1431
|
-
this.emit("propertyChanged", interval, deltaProps, true, undefined);
|
|
1432
|
-
}
|
|
1410
|
+
this.change(id, { props });
|
|
1433
1411
|
}
|
|
1434
1412
|
|
|
1413
|
+
/**
|
|
1414
|
+
* {@inheritdoc IIntervalCollection.change}
|
|
1415
|
+
* @deprecated - call change with the id and an object containing the new start, end, and/or props values
|
|
1416
|
+
*/
|
|
1417
|
+
public change(id: string, start: SequencePlace, end: SequencePlace): TInterval | undefined;
|
|
1435
1418
|
/**
|
|
1436
1419
|
* {@inheritdoc IIntervalCollection.change}
|
|
1437
1420
|
*/
|
|
1438
|
-
public change(
|
|
1421
|
+
public change(
|
|
1422
|
+
id: string,
|
|
1423
|
+
{ start, end, props }: { start?: SequencePlace; end?: SequencePlace; props?: PropertySet },
|
|
1424
|
+
): TInterval | undefined;
|
|
1425
|
+
public change(
|
|
1426
|
+
arg1: string,
|
|
1427
|
+
arg2: SequencePlace | { start?: SequencePlace; end?: SequencePlace; props?: PropertySet },
|
|
1428
|
+
arg3?: SequencePlace,
|
|
1429
|
+
): TInterval | undefined {
|
|
1430
|
+
const id: string = arg1;
|
|
1431
|
+
let start: SequencePlace | undefined;
|
|
1432
|
+
let end: SequencePlace | undefined;
|
|
1433
|
+
let props: PropertySet | undefined;
|
|
1434
|
+
if (isSequencePlace(arg2)) {
|
|
1435
|
+
start = arg2;
|
|
1436
|
+
end = arg3;
|
|
1437
|
+
} else {
|
|
1438
|
+
start = arg2.start;
|
|
1439
|
+
end = arg2.end;
|
|
1440
|
+
props = arg2.props;
|
|
1441
|
+
}
|
|
1442
|
+
|
|
1439
1443
|
if (!this.localCollection) {
|
|
1440
1444
|
throw new LoggingError("Attach must be called before accessing intervals");
|
|
1441
1445
|
}
|
|
1442
1446
|
|
|
1443
1447
|
// Force id to be a string.
|
|
1444
1448
|
if (typeof id !== "string") {
|
|
1445
|
-
throw new
|
|
1449
|
+
throw new UsageError("Change API requires an ID that is a string");
|
|
1450
|
+
}
|
|
1451
|
+
|
|
1452
|
+
// Ensure that both start and end are defined or both are undefined.
|
|
1453
|
+
if ((start === undefined) !== (end === undefined)) {
|
|
1454
|
+
throw new UsageError(
|
|
1455
|
+
"Change API requires both start and end to be defined or undefined",
|
|
1456
|
+
);
|
|
1457
|
+
}
|
|
1458
|
+
|
|
1459
|
+
// prevent the overwriting of an interval label, it should remain unchanged
|
|
1460
|
+
// once it has been inserted into the collection.
|
|
1461
|
+
if (props?.[reservedRangeLabelsKey] !== undefined) {
|
|
1462
|
+
throw new UsageError(
|
|
1463
|
+
"The label property should not be modified once inserted to the collection",
|
|
1464
|
+
);
|
|
1446
1465
|
}
|
|
1447
1466
|
|
|
1448
1467
|
const interval = this.getIntervalById(id);
|
|
1449
1468
|
if (interval) {
|
|
1450
|
-
|
|
1451
|
-
|
|
1452
|
-
|
|
1469
|
+
let deltaProps: PropertySet | undefined;
|
|
1470
|
+
let newInterval: TInterval | undefined;
|
|
1471
|
+
if (props !== undefined) {
|
|
1472
|
+
deltaProps = interval.addProperties(
|
|
1473
|
+
props,
|
|
1474
|
+
true,
|
|
1475
|
+
this.isCollaborating ? UnassignedSequenceNumber : UniversalSequenceNumber,
|
|
1476
|
+
);
|
|
1453
1477
|
}
|
|
1454
|
-
if (
|
|
1455
|
-
|
|
1456
|
-
|
|
1478
|
+
if (start !== undefined && end !== undefined) {
|
|
1479
|
+
newInterval = this.localCollection.changeInterval(interval, start, end);
|
|
1480
|
+
if (!this.isCollaborating && newInterval instanceof SequenceInterval) {
|
|
1481
|
+
setSlideOnRemove(newInterval.start);
|
|
1482
|
+
setSlideOnRemove(newInterval.end);
|
|
1483
|
+
}
|
|
1457
1484
|
}
|
|
1458
1485
|
const serializedInterval: SerializedIntervalDelta = interval.serialize();
|
|
1459
1486
|
const { startPos, startSide, endPos, endSide } = endpointPosAndSide(start, end);
|
|
@@ -1463,15 +1490,21 @@ export class IntervalCollection<TInterval extends ISerializableInterval>
|
|
|
1463
1490
|
serializedInterval.startSide = startSide;
|
|
1464
1491
|
serializedInterval.endSide = endSide;
|
|
1465
1492
|
serializedInterval.stickiness = stickiness;
|
|
1466
|
-
// Emit a property bag containing
|
|
1493
|
+
// Emit a property bag containing the ID and the other (if any) properties changed
|
|
1467
1494
|
serializedInterval.properties = {
|
|
1468
1495
|
[reservedIntervalIdKey]: interval.getIntervalId(),
|
|
1496
|
+
...props,
|
|
1469
1497
|
};
|
|
1470
1498
|
const localSeq = this.getNextLocalSeq();
|
|
1471
1499
|
this.localSeqToSerializedInterval.set(localSeq, serializedInterval);
|
|
1472
1500
|
this.emitter.emit("change", undefined, serializedInterval, { localSeq });
|
|
1473
|
-
|
|
1474
|
-
|
|
1501
|
+
if (deltaProps !== undefined) {
|
|
1502
|
+
this.emit("propertyChanged", interval, deltaProps, true, undefined);
|
|
1503
|
+
}
|
|
1504
|
+
if (newInterval) {
|
|
1505
|
+
this.addPendingChange(id, serializedInterval);
|
|
1506
|
+
this.emitChange(newInterval, interval, true, false);
|
|
1507
|
+
}
|
|
1475
1508
|
return newInterval;
|
|
1476
1509
|
}
|
|
1477
1510
|
// No interval to change
|
|
@@ -13,7 +13,7 @@ import { ISerializableInterval } from "../intervals";
|
|
|
13
13
|
* - "find all intervals with start endpoint between these two points"
|
|
14
14
|
* - "find all intervals which overlap this range"
|
|
15
15
|
* etc.
|
|
16
|
-
* @
|
|
16
|
+
* @alpha
|
|
17
17
|
*/
|
|
18
18
|
export interface IntervalIndex<TInterval extends ISerializableInterval> {
|
|
19
19
|
/**
|
|
@@ -17,7 +17,7 @@ import { SequencePlace, Side } from "../intervalCollection";
|
|
|
17
17
|
|
|
18
18
|
/**
|
|
19
19
|
* Basic interval abstraction
|
|
20
|
-
* @
|
|
20
|
+
* @alpha
|
|
21
21
|
*/
|
|
22
22
|
export interface IInterval {
|
|
23
23
|
/**
|
|
@@ -84,7 +84,7 @@ export const IntervalOpType = {
|
|
|
84
84
|
*/
|
|
85
85
|
export type IntervalOpType = (typeof IntervalOpType)[keyof typeof IntervalOpType];
|
|
86
86
|
/**
|
|
87
|
-
* @
|
|
87
|
+
* @alpha
|
|
88
88
|
*/
|
|
89
89
|
export enum IntervalType {
|
|
90
90
|
Simple = 0x0,
|
|
@@ -111,7 +111,7 @@ export enum IntervalType {
|
|
|
111
111
|
/**
|
|
112
112
|
* Serialized object representation of an interval.
|
|
113
113
|
* This representation is used for ops that create or change intervals.
|
|
114
|
-
* @
|
|
114
|
+
* @alpha
|
|
115
115
|
*/
|
|
116
116
|
export interface ISerializedInterval {
|
|
117
117
|
/**
|
|
@@ -139,7 +139,7 @@ export interface ISerializedInterval {
|
|
|
139
139
|
}
|
|
140
140
|
|
|
141
141
|
/**
|
|
142
|
-
* @
|
|
142
|
+
* @alpha
|
|
143
143
|
*/
|
|
144
144
|
export interface ISerializableInterval extends IInterval {
|
|
145
145
|
/** Serializable bag of properties associated with the interval. */
|
|
@@ -240,7 +240,7 @@ export interface IIntervalHelpers<TInterval extends ISerializableInterval> {
|
|
|
240
240
|
* Note that interval stickiness is currently an experimental feature and must
|
|
241
241
|
* be explicitly enabled with the `intervalStickinessEnabled` flag
|
|
242
242
|
*
|
|
243
|
-
* @
|
|
243
|
+
* @alpha
|
|
244
244
|
*/
|
|
245
245
|
export const IntervalStickiness = {
|
|
246
246
|
/**
|
|
@@ -272,8 +272,7 @@ export const IntervalStickiness = {
|
|
|
272
272
|
*
|
|
273
273
|
* Note that interval stickiness is currently an experimental feature and must
|
|
274
274
|
* be explicitly enabled with the `intervalStickinessEnabled` flag
|
|
275
|
-
*
|
|
276
|
-
* @internal
|
|
275
|
+
* @alpha
|
|
277
276
|
*/
|
|
278
277
|
export type IntervalStickiness = (typeof IntervalStickiness)[keyof typeof IntervalStickiness];
|
|
279
278
|
|
|
@@ -100,7 +100,7 @@ function maxSide(sideA: Side, sideB: Side): Side {
|
|
|
100
100
|
* `mergeTreeReferencesCanSlideToEndpoint` feature flag set to true, the endpoints
|
|
101
101
|
* of the interval that are exclusive will have the ability to slide to these
|
|
102
102
|
* special endpoint segments.
|
|
103
|
-
* @
|
|
103
|
+
* @alpha
|
|
104
104
|
*/
|
|
105
105
|
export class SequenceInterval implements ISerializableInterval {
|
|
106
106
|
/**
|
package/src/packageVersion.ts
CHANGED
package/src/sequence.ts
CHANGED
|
@@ -98,7 +98,7 @@ const contentPath = "content";
|
|
|
98
98
|
* - `event` - Various information on the segments that were modified.
|
|
99
99
|
*
|
|
100
100
|
* - `target` - The sequence itself.
|
|
101
|
-
* @
|
|
101
|
+
* @alpha
|
|
102
102
|
*/
|
|
103
103
|
export interface ISharedSegmentSequenceEvents extends ISharedObjectEvents {
|
|
104
104
|
(
|
|
@@ -116,7 +116,7 @@ export interface ISharedSegmentSequenceEvents extends ISharedObjectEvents {
|
|
|
116
116
|
}
|
|
117
117
|
|
|
118
118
|
/**
|
|
119
|
-
* @
|
|
119
|
+
* @alpha
|
|
120
120
|
*/
|
|
121
121
|
export abstract class SharedSegmentSequence<T extends ISegment>
|
|
122
122
|
extends SharedObject<ISharedSegmentSequenceEvents>
|
|
@@ -25,7 +25,7 @@ import {
|
|
|
25
25
|
* The properties of this object and its sub-objects represent the state of the sequence at the
|
|
26
26
|
* point in time at which the operation was applied.
|
|
27
27
|
* They will not take into any future modifications performed to the underlying sequence and merge tree.
|
|
28
|
-
* @
|
|
28
|
+
* @alpha
|
|
29
29
|
*/
|
|
30
30
|
export abstract class SequenceEvent<
|
|
31
31
|
TOperation extends MergeTreeDeltaOperationTypes = MergeTreeDeltaOperationTypes,
|
|
@@ -108,7 +108,7 @@ export abstract class SequenceEvent<
|
|
|
108
108
|
* For group ops, each op will get its own event, and the group op property will be set on the op args.
|
|
109
109
|
*
|
|
110
110
|
* Ops may get multiple events. For instance, an insert-replace will get a remove then an insert event.
|
|
111
|
-
* @
|
|
111
|
+
* @alpha
|
|
112
112
|
*/
|
|
113
113
|
export class SequenceDeltaEvent extends SequenceEvent<MergeTreeDeltaOperationType> {
|
|
114
114
|
/**
|
|
@@ -132,7 +132,7 @@ export class SequenceDeltaEvent extends SequenceEvent<MergeTreeDeltaOperationTyp
|
|
|
132
132
|
* The properties of this object and its sub-objects represent the state of the sequence at the
|
|
133
133
|
* point in time at which the operation was applied.
|
|
134
134
|
* They will not take into consideration any future modifications performed to the underlying sequence and merge tree.
|
|
135
|
-
* @
|
|
135
|
+
* @alpha
|
|
136
136
|
*/
|
|
137
137
|
export class SequenceMaintenanceEvent extends SequenceEvent<MergeTreeMaintenanceType> {
|
|
138
138
|
constructor(
|
|
@@ -146,7 +146,7 @@ export class SequenceMaintenanceEvent extends SequenceEvent<MergeTreeMaintenance
|
|
|
146
146
|
|
|
147
147
|
/**
|
|
148
148
|
* A range that has changed corresponding to a segment modification.
|
|
149
|
-
* @
|
|
149
|
+
* @alpha
|
|
150
150
|
*/
|
|
151
151
|
export interface ISequenceDeltaRange<
|
|
152
152
|
TOperation extends MergeTreeDeltaOperationTypes = MergeTreeDeltaOperationTypes,
|
package/src/sequenceFactory.ts
CHANGED
|
@@ -14,7 +14,7 @@ import { pkgVersion } from "./packageVersion";
|
|
|
14
14
|
import { SharedString, SharedStringSegment } from "./sharedString";
|
|
15
15
|
|
|
16
16
|
/**
|
|
17
|
-
* @
|
|
17
|
+
* @alpha
|
|
18
18
|
*/
|
|
19
19
|
export class SharedStringFactory implements IChannelFactory {
|
|
20
20
|
// TODO rename back to https://graph.microsoft.com/types/mergeTree/string once paparazzi is able to dynamically
|
|
@@ -76,7 +76,7 @@ export class SharedIntervalCollectionFactory implements IChannelFactory {
|
|
|
76
76
|
}
|
|
77
77
|
|
|
78
78
|
/**
|
|
79
|
-
* @
|
|
79
|
+
* @alpha
|
|
80
80
|
*/
|
|
81
81
|
export interface ISharedIntervalCollection<TInterval extends ISerializableInterval> {
|
|
82
82
|
getIntervalCollection(label: string): IIntervalCollection<TInterval>;
|
package/src/sharedString.ts
CHANGED
|
@@ -24,7 +24,7 @@ import { SharedStringFactory } from "./sequenceFactory";
|
|
|
24
24
|
|
|
25
25
|
/**
|
|
26
26
|
* Fluid object interface describing access methods on a SharedString
|
|
27
|
-
* @
|
|
27
|
+
* @alpha
|
|
28
28
|
*/
|
|
29
29
|
export interface ISharedString extends SharedSegmentSequence<SharedStringSegment> {
|
|
30
30
|
/**
|
|
@@ -54,7 +54,7 @@ export interface ISharedString extends SharedSegmentSequence<SharedStringSegment
|
|
|
54
54
|
}
|
|
55
55
|
|
|
56
56
|
/**
|
|
57
|
-
* @
|
|
57
|
+
* @alpha
|
|
58
58
|
*/
|
|
59
59
|
export type SharedStringSegment = TextSegment | Marker;
|
|
60
60
|
|
|
@@ -66,7 +66,7 @@ export type SharedStringSegment = TextSegment | Marker;
|
|
|
66
66
|
* In addition to text, a Shared String can also contain markers. Markers can be
|
|
67
67
|
* used to store metadata at positions within the text, like the details of an
|
|
68
68
|
* image or Fluid object that should be rendered with the text.
|
|
69
|
-
* @
|
|
69
|
+
* @alpha
|
|
70
70
|
*/
|
|
71
71
|
export class SharedString
|
|
72
72
|
extends SharedSegmentSequence<SharedStringSegment>
|