@excalidraw/element 0.18.0-de715913e → 0.18.0-f5d54ac5a
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/dev/index.js +27 -7
- package/dist/dev/index.js.map +2 -2
- package/dist/prod/index.js +14 -14
- package/dist/types/element/src/delta.d.ts +1 -0
- package/package.json +3 -3
package/dist/dev/index.js
CHANGED
|
@@ -15260,9 +15260,13 @@ var ElementsDelta = class _ElementsDelta {
|
|
|
15260
15260
|
Number.isInteger(deleted.version) && Number.isInteger(inserted.version) && // versions should be positive, zero included
|
|
15261
15261
|
deleted.version >= 0 && inserted.version >= 0 && // versions should never be the same
|
|
15262
15262
|
deleted.version !== inserted.version);
|
|
15263
|
+
static satisfiesUniqueInvariants = (elementsDelta, id) => {
|
|
15264
|
+
const { added, removed, updated } = elementsDelta;
|
|
15265
|
+
return [added[id], removed[id], updated[id]].filter(Boolean).length === 1;
|
|
15266
|
+
};
|
|
15263
15267
|
static validate(elementsDelta, type, satifiesSpecialInvariants) {
|
|
15264
15268
|
for (const [id, delta] of Object.entries(elementsDelta[type])) {
|
|
15265
|
-
if (!this.satisfiesCommmonInvariants(delta) || !satifiesSpecialInvariants(delta)) {
|
|
15269
|
+
if (!this.satisfiesCommmonInvariants(delta) || !this.satisfiesUniqueInvariants(elementsDelta, id) || !satifiesSpecialInvariants(delta)) {
|
|
15266
15270
|
console.error(
|
|
15267
15271
|
`Broken invariant for "${type}" delta, element "${id}", delta:`,
|
|
15268
15272
|
delta
|
|
@@ -15504,7 +15508,7 @@ var ElementsDelta = class _ElementsDelta {
|
|
|
15504
15508
|
}
|
|
15505
15509
|
squash(delta) {
|
|
15506
15510
|
const { added, removed, updated } = delta;
|
|
15507
|
-
|
|
15511
|
+
const mergeBoundElements = (prevDelta, nextDelta) => {
|
|
15508
15512
|
const mergedDeletedBoundElements = Delta.mergeArrays(
|
|
15509
15513
|
prevDelta.deleted.boundElements ?? [],
|
|
15510
15514
|
nextDelta.deleted.boundElements ?? [],
|
|
@@ -15525,34 +15529,50 @@ var ElementsDelta = class _ElementsDelta {
|
|
|
15525
15529
|
boundElements: mergedInsertedBoundElements
|
|
15526
15530
|
}
|
|
15527
15531
|
);
|
|
15528
|
-
}
|
|
15532
|
+
};
|
|
15529
15533
|
for (const [id, nextDelta] of Object.entries(added)) {
|
|
15530
|
-
const prevDelta = this.added[id];
|
|
15534
|
+
const prevDelta = this.added[id] ?? this.removed[id] ?? this.updated[id];
|
|
15531
15535
|
if (!prevDelta) {
|
|
15532
15536
|
this.added[id] = nextDelta;
|
|
15533
15537
|
} else {
|
|
15534
15538
|
const mergedDelta = mergeBoundElements(prevDelta, nextDelta);
|
|
15539
|
+
delete this.removed[id];
|
|
15540
|
+
delete this.updated[id];
|
|
15535
15541
|
this.added[id] = Delta.merge(prevDelta, nextDelta, mergedDelta);
|
|
15536
15542
|
}
|
|
15537
15543
|
}
|
|
15538
15544
|
for (const [id, nextDelta] of Object.entries(removed)) {
|
|
15539
|
-
const prevDelta = this.removed[id];
|
|
15545
|
+
const prevDelta = this.added[id] ?? this.removed[id] ?? this.updated[id];
|
|
15540
15546
|
if (!prevDelta) {
|
|
15541
15547
|
this.removed[id] = nextDelta;
|
|
15542
15548
|
} else {
|
|
15543
15549
|
const mergedDelta = mergeBoundElements(prevDelta, nextDelta);
|
|
15550
|
+
delete this.added[id];
|
|
15551
|
+
delete this.updated[id];
|
|
15544
15552
|
this.removed[id] = Delta.merge(prevDelta, nextDelta, mergedDelta);
|
|
15545
15553
|
}
|
|
15546
15554
|
}
|
|
15547
15555
|
for (const [id, nextDelta] of Object.entries(updated)) {
|
|
15548
|
-
const prevDelta = this.updated[id];
|
|
15556
|
+
const prevDelta = this.added[id] ?? this.removed[id] ?? this.updated[id];
|
|
15549
15557
|
if (!prevDelta) {
|
|
15550
15558
|
this.updated[id] = nextDelta;
|
|
15551
15559
|
} else {
|
|
15552
15560
|
const mergedDelta = mergeBoundElements(prevDelta, nextDelta);
|
|
15553
|
-
|
|
15561
|
+
const updatedDelta = Delta.merge(prevDelta, nextDelta, mergedDelta);
|
|
15562
|
+
if (prevDelta === this.added[id]) {
|
|
15563
|
+
this.added[id] = updatedDelta;
|
|
15564
|
+
} else if (prevDelta === this.removed[id]) {
|
|
15565
|
+
this.removed[id] = updatedDelta;
|
|
15566
|
+
} else {
|
|
15567
|
+
this.updated[id] = updatedDelta;
|
|
15568
|
+
}
|
|
15554
15569
|
}
|
|
15555
15570
|
}
|
|
15571
|
+
if (isTestEnv8() || isDevEnv7()) {
|
|
15572
|
+
_ElementsDelta.validate(this, "added", _ElementsDelta.satisfiesAddition);
|
|
15573
|
+
_ElementsDelta.validate(this, "removed", _ElementsDelta.satisfiesRemoval);
|
|
15574
|
+
_ElementsDelta.validate(this, "updated", _ElementsDelta.satisfiesUpdate);
|
|
15575
|
+
}
|
|
15556
15576
|
return this;
|
|
15557
15577
|
}
|
|
15558
15578
|
static createApplier = (prevElements, nextElements, snapshot, flags, options) => (deltas) => {
|