@fluidframework/sequence 0.58.1000 → 0.58.1001
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/dist/intervalCollection.d.ts +6 -6
- package/dist/intervalCollection.d.ts.map +1 -1
- package/dist/intervalCollection.js +19 -19
- package/dist/intervalCollection.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/lib/intervalCollection.d.ts +6 -6
- package/lib/intervalCollection.d.ts.map +1 -1
- package/lib/intervalCollection.js +19 -19
- package/lib/intervalCollection.js.map +1 -1
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/package.json +10 -10
- package/src/intervalCollection.ts +29 -20
- package/src/packageVersion.ts +1 -1
|
@@ -59,7 +59,7 @@ export interface ISerializableInterval extends IInterval {
|
|
|
59
59
|
export interface IIntervalHelpers<TInterval extends ISerializableInterval> {
|
|
60
60
|
compareEnds(a: TInterval, b: TInterval): number;
|
|
61
61
|
create(label: string, start: number, end: number,
|
|
62
|
-
client: Client, intervalType?: IntervalType): TInterval;
|
|
62
|
+
client: Client, intervalType?: IntervalType, op?: ISequencedDocumentMessage): TInterval;
|
|
63
63
|
}
|
|
64
64
|
|
|
65
65
|
export class Interval implements ISerializableInterval {
|
|
@@ -179,7 +179,7 @@ export class Interval implements ISerializableInterval {
|
|
|
179
179
|
}
|
|
180
180
|
}
|
|
181
181
|
|
|
182
|
-
public modify(label: string, start: number, end: number) {
|
|
182
|
+
public modify(label: string, start: number, end: number, op?: ISequencedDocumentMessage) {
|
|
183
183
|
const startPos = start ?? this.start;
|
|
184
184
|
const endPos = end ?? this.end;
|
|
185
185
|
if (this.start === startPos && this.end === endPos) {
|
|
@@ -294,16 +294,17 @@ export class SequenceInterval implements ISerializableInterval {
|
|
|
294
294
|
return (endPos > bstart) && (startPos < bend);
|
|
295
295
|
}
|
|
296
296
|
|
|
297
|
-
public modify(label: string, start: number, end: number) {
|
|
298
|
-
const startPos = start ?? this.start.
|
|
299
|
-
const endPos = end ?? this.end.
|
|
297
|
+
public modify(label: string, start: number, end: number, op?: ISequencedDocumentMessage) {
|
|
298
|
+
const startPos = start ?? this.start.toPosition();
|
|
299
|
+
const endPos = end ?? this.end.toPosition();
|
|
300
300
|
|
|
301
|
-
if (this.start.
|
|
301
|
+
if (this.start.toPosition() === startPos && this.end.toPosition() === endPos) {
|
|
302
302
|
// Return undefined to indicate that no change is necessary.
|
|
303
303
|
return;
|
|
304
304
|
}
|
|
305
305
|
|
|
306
|
-
const newInterval =
|
|
306
|
+
const newInterval =
|
|
307
|
+
createSequenceInterval(label, startPos, endPos, this.start.getClient(), this.intervalType, op);
|
|
307
308
|
if (this.properties) {
|
|
308
309
|
newInterval.addProperties(this.properties);
|
|
309
310
|
}
|
|
@@ -314,8 +315,9 @@ export class SequenceInterval implements ISerializableInterval {
|
|
|
314
315
|
function createPositionReference(
|
|
315
316
|
client: Client,
|
|
316
317
|
pos: number,
|
|
317
|
-
refType: ReferenceType
|
|
318
|
-
|
|
318
|
+
refType: ReferenceType,
|
|
319
|
+
op?: ISequencedDocumentMessage): LocalReference {
|
|
320
|
+
const segoff = client.getContainingSegment(pos, op);
|
|
319
321
|
if (segoff && segoff.segment) {
|
|
320
322
|
const lref = new LocalReference(client, segoff.segment, segoff.offset, refType);
|
|
321
323
|
if (refType !== ReferenceType.Transient) {
|
|
@@ -331,7 +333,8 @@ function createSequenceInterval(
|
|
|
331
333
|
start: number,
|
|
332
334
|
end: number,
|
|
333
335
|
client: Client,
|
|
334
|
-
intervalType: IntervalType
|
|
336
|
+
intervalType: IntervalType,
|
|
337
|
+
op?: ISequencedDocumentMessage): SequenceInterval {
|
|
335
338
|
let beginRefType = ReferenceType.RangeBegin;
|
|
336
339
|
let endRefType = ReferenceType.RangeEnd;
|
|
337
340
|
if (intervalType === IntervalType.Nest) {
|
|
@@ -348,8 +351,8 @@ function createSequenceInterval(
|
|
|
348
351
|
endRefType |= ReferenceType.SlideOnRemove;
|
|
349
352
|
}
|
|
350
353
|
|
|
351
|
-
const startLref = createPositionReference(client, start, beginRefType);
|
|
352
|
-
const endLref = createPositionReference(client, end, endRefType);
|
|
354
|
+
const startLref = createPositionReference(client, start, beginRefType, op);
|
|
355
|
+
const endLref = createPositionReference(client, end, endRefType, op);
|
|
353
356
|
if (startLref && endLref) {
|
|
354
357
|
startLref.pairedRef = endLref;
|
|
355
358
|
endLref.pairedRef = startLref;
|
|
@@ -570,16 +573,21 @@ export class LocalIntervalCollection<TInterval extends ISerializableInterval> {
|
|
|
570
573
|
this.endIntervalTree.remove(interval);
|
|
571
574
|
}
|
|
572
575
|
|
|
573
|
-
public createInterval(
|
|
574
|
-
|
|
576
|
+
public createInterval(
|
|
577
|
+
start: number,
|
|
578
|
+
end: number,
|
|
579
|
+
intervalType: IntervalType,
|
|
580
|
+
op?: ISequencedDocumentMessage): TInterval {
|
|
581
|
+
return this.helpers.create(this.label, start, end, this.client, intervalType, op);
|
|
575
582
|
}
|
|
576
583
|
|
|
577
584
|
public addInterval(
|
|
578
585
|
start: number,
|
|
579
586
|
end: number,
|
|
580
587
|
intervalType: IntervalType,
|
|
581
|
-
props?: PropertySet
|
|
582
|
-
|
|
588
|
+
props?: PropertySet,
|
|
589
|
+
op?: ISequencedDocumentMessage) {
|
|
590
|
+
const interval: TInterval = this.createInterval(start, end, intervalType, op);
|
|
583
591
|
if (interval) {
|
|
584
592
|
if (!interval.properties) {
|
|
585
593
|
interval.properties = createMap<any>();
|
|
@@ -619,8 +627,8 @@ export class LocalIntervalCollection<TInterval extends ISerializableInterval> {
|
|
|
619
627
|
return result;
|
|
620
628
|
}
|
|
621
629
|
|
|
622
|
-
public changeInterval(interval: TInterval, start: number, end: number) {
|
|
623
|
-
const newInterval = interval.modify(this.label, start, end) as TInterval | undefined;
|
|
630
|
+
public changeInterval(interval: TInterval, start: number, end: number, op?: ISequencedDocumentMessage) {
|
|
631
|
+
const newInterval = interval.modify(this.label, start, end, op) as TInterval | undefined;
|
|
624
632
|
if (newInterval) {
|
|
625
633
|
this.removeExistingInterval(interval);
|
|
626
634
|
this.add(newInterval);
|
|
@@ -1096,7 +1104,7 @@ export class IntervalCollection<TInterval extends ISerializableInterval>
|
|
|
1096
1104
|
if (start !== undefined || end !== undefined) {
|
|
1097
1105
|
// If changeInterval gives us a new interval, work with that one. Otherwise keep working with
|
|
1098
1106
|
// the one we originally found in the tree.
|
|
1099
|
-
interval = this.localCollection.changeInterval(interval, start, end) ?? interval;
|
|
1107
|
+
interval = this.localCollection.changeInterval(interval, start, end, op) ?? interval;
|
|
1100
1108
|
}
|
|
1101
1109
|
const deltaProps = interval.addProperties(serializedInterval.properties, true, op.sequenceNumber);
|
|
1102
1110
|
if (this.onDeserialize) {
|
|
@@ -1144,7 +1152,8 @@ export class IntervalCollection<TInterval extends ISerializableInterval>
|
|
|
1144
1152
|
serializedInterval.start,
|
|
1145
1153
|
serializedInterval.end,
|
|
1146
1154
|
serializedInterval.intervalType,
|
|
1147
|
-
serializedInterval.properties
|
|
1155
|
+
serializedInterval.properties,
|
|
1156
|
+
op);
|
|
1148
1157
|
|
|
1149
1158
|
if (interval) {
|
|
1150
1159
|
// Local ops get submitted to the server. Remote ops have the deserializer run.
|
package/src/packageVersion.ts
CHANGED