@excalidraw/element 0.18.0-7b8a5f54c → 0.18.0-880dbb25e
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
CHANGED
|
@@ -14651,10 +14651,10 @@ var Delta = class _Delta {
|
|
|
14651
14651
|
/**
|
|
14652
14652
|
* Merges two deltas into a new one.
|
|
14653
14653
|
*/
|
|
14654
|
-
static merge(delta1, delta2) {
|
|
14654
|
+
static merge(delta1, delta2, delta3) {
|
|
14655
14655
|
return _Delta.create(
|
|
14656
|
-
{ ...delta1.deleted, ...delta2.deleted },
|
|
14657
|
-
{ ...delta1.inserted, ...delta2.inserted }
|
|
14656
|
+
{ ...delta1.deleted, ...delta2.deleted, ...delta3?.deleted ?? {} },
|
|
14657
|
+
{ ...delta1.inserted, ...delta2.inserted, ...delta3?.inserted ?? {} }
|
|
14658
14658
|
);
|
|
14659
14659
|
}
|
|
14660
14660
|
/**
|
|
@@ -14662,7 +14662,7 @@ var Delta = class _Delta {
|
|
|
14662
14662
|
*/
|
|
14663
14663
|
static mergeObjects(prev, added, removed) {
|
|
14664
14664
|
const cloned = { ...prev };
|
|
14665
|
-
for (const key of Object.keys(removed)) {
|
|
14665
|
+
for (const key of Object.keys(removed ?? {})) {
|
|
14666
14666
|
delete cloned[key];
|
|
14667
14667
|
}
|
|
14668
14668
|
return { ...cloned, ...added };
|
|
@@ -14906,7 +14906,33 @@ var AppStateDelta = class _AppStateDelta {
|
|
|
14906
14906
|
return new _AppStateDelta(inversedDelta);
|
|
14907
14907
|
}
|
|
14908
14908
|
squash(delta) {
|
|
14909
|
-
|
|
14909
|
+
const mergedDeletedSelectedElementIds = Delta.mergeObjects(
|
|
14910
|
+
this.delta.deleted.selectedElementIds ?? {},
|
|
14911
|
+
delta.delta.deleted.selectedElementIds ?? {}
|
|
14912
|
+
);
|
|
14913
|
+
const mergedInsertedSelectedElementIds = Delta.mergeObjects(
|
|
14914
|
+
this.delta.inserted.selectedElementIds ?? {},
|
|
14915
|
+
delta.delta.inserted.selectedElementIds ?? {}
|
|
14916
|
+
);
|
|
14917
|
+
const mergedInsertedSelectedGroupIds = Delta.mergeObjects(
|
|
14918
|
+
this.delta.inserted.selectedGroupIds ?? {},
|
|
14919
|
+
delta.delta.inserted.selectedGroupIds ?? {}
|
|
14920
|
+
);
|
|
14921
|
+
const mergedDeletedSelectedGroupIds = Delta.mergeObjects(
|
|
14922
|
+
this.delta.deleted.selectedGroupIds ?? {},
|
|
14923
|
+
delta.delta.deleted.selectedGroupIds ?? {}
|
|
14924
|
+
);
|
|
14925
|
+
const mergedDelta = Delta.create(
|
|
14926
|
+
{
|
|
14927
|
+
selectedElementIds: mergedDeletedSelectedElementIds,
|
|
14928
|
+
selectedGroupIds: mergedDeletedSelectedGroupIds
|
|
14929
|
+
},
|
|
14930
|
+
{
|
|
14931
|
+
selectedElementIds: mergedInsertedSelectedElementIds,
|
|
14932
|
+
selectedGroupIds: mergedInsertedSelectedGroupIds
|
|
14933
|
+
}
|
|
14934
|
+
);
|
|
14935
|
+
this.delta = Delta.merge(this.delta, delta.delta, mergedDelta);
|
|
14910
14936
|
return this;
|
|
14911
14937
|
}
|
|
14912
14938
|
applyTo(appState, nextElements) {
|
|
@@ -15234,9 +15260,13 @@ var ElementsDelta = class _ElementsDelta {
|
|
|
15234
15260
|
Number.isInteger(deleted.version) && Number.isInteger(inserted.version) && // versions should be positive, zero included
|
|
15235
15261
|
deleted.version >= 0 && inserted.version >= 0 && // versions should never be the same
|
|
15236
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
|
+
};
|
|
15237
15267
|
static validate(elementsDelta, type, satifiesSpecialInvariants) {
|
|
15238
15268
|
for (const [id, delta] of Object.entries(elementsDelta[type])) {
|
|
15239
|
-
if (!this.satisfiesCommmonInvariants(delta) || !satifiesSpecialInvariants(delta)) {
|
|
15269
|
+
if (!this.satisfiesCommmonInvariants(delta) || !this.satisfiesUniqueInvariants(elementsDelta, id) || !satifiesSpecialInvariants(delta)) {
|
|
15240
15270
|
console.error(
|
|
15241
15271
|
`Broken invariant for "${type}" delta, element "${id}", delta:`,
|
|
15242
15272
|
delta
|
|
@@ -15478,30 +15508,71 @@ var ElementsDelta = class _ElementsDelta {
|
|
|
15478
15508
|
}
|
|
15479
15509
|
squash(delta) {
|
|
15480
15510
|
const { added, removed, updated } = delta;
|
|
15511
|
+
const mergeBoundElements = (prevDelta, nextDelta) => {
|
|
15512
|
+
const mergedDeletedBoundElements = Delta.mergeArrays(
|
|
15513
|
+
prevDelta.deleted.boundElements ?? [],
|
|
15514
|
+
nextDelta.deleted.boundElements ?? [],
|
|
15515
|
+
void 0,
|
|
15516
|
+
(x) => x.id
|
|
15517
|
+
) ?? [];
|
|
15518
|
+
const mergedInsertedBoundElements = Delta.mergeArrays(
|
|
15519
|
+
prevDelta.inserted.boundElements ?? [],
|
|
15520
|
+
nextDelta.inserted.boundElements ?? [],
|
|
15521
|
+
void 0,
|
|
15522
|
+
(x) => x.id
|
|
15523
|
+
) ?? [];
|
|
15524
|
+
return Delta.create(
|
|
15525
|
+
{
|
|
15526
|
+
boundElements: mergedDeletedBoundElements
|
|
15527
|
+
},
|
|
15528
|
+
{
|
|
15529
|
+
boundElements: mergedInsertedBoundElements
|
|
15530
|
+
}
|
|
15531
|
+
);
|
|
15532
|
+
};
|
|
15481
15533
|
for (const [id, nextDelta] of Object.entries(added)) {
|
|
15482
|
-
const prevDelta = this.added[id];
|
|
15534
|
+
const prevDelta = this.added[id] ?? this.removed[id] ?? this.updated[id];
|
|
15483
15535
|
if (!prevDelta) {
|
|
15484
15536
|
this.added[id] = nextDelta;
|
|
15485
15537
|
} else {
|
|
15486
|
-
|
|
15538
|
+
const mergedDelta = mergeBoundElements(prevDelta, nextDelta);
|
|
15539
|
+
delete this.removed[id];
|
|
15540
|
+
delete this.updated[id];
|
|
15541
|
+
this.added[id] = Delta.merge(prevDelta, nextDelta, mergedDelta);
|
|
15487
15542
|
}
|
|
15488
15543
|
}
|
|
15489
15544
|
for (const [id, nextDelta] of Object.entries(removed)) {
|
|
15490
|
-
const prevDelta = this.removed[id];
|
|
15545
|
+
const prevDelta = this.added[id] ?? this.removed[id] ?? this.updated[id];
|
|
15491
15546
|
if (!prevDelta) {
|
|
15492
15547
|
this.removed[id] = nextDelta;
|
|
15493
15548
|
} else {
|
|
15494
|
-
|
|
15549
|
+
const mergedDelta = mergeBoundElements(prevDelta, nextDelta);
|
|
15550
|
+
delete this.added[id];
|
|
15551
|
+
delete this.updated[id];
|
|
15552
|
+
this.removed[id] = Delta.merge(prevDelta, nextDelta, mergedDelta);
|
|
15495
15553
|
}
|
|
15496
15554
|
}
|
|
15497
15555
|
for (const [id, nextDelta] of Object.entries(updated)) {
|
|
15498
|
-
const prevDelta = this.updated[id];
|
|
15556
|
+
const prevDelta = this.added[id] ?? this.removed[id] ?? this.updated[id];
|
|
15499
15557
|
if (!prevDelta) {
|
|
15500
15558
|
this.updated[id] = nextDelta;
|
|
15501
15559
|
} else {
|
|
15502
|
-
|
|
15560
|
+
const mergedDelta = mergeBoundElements(prevDelta, nextDelta);
|
|
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
|
+
}
|
|
15503
15569
|
}
|
|
15504
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
|
+
}
|
|
15505
15576
|
return this;
|
|
15506
15577
|
}
|
|
15507
15578
|
static createApplier = (prevElements, nextElements, snapshot, flags, options) => (deltas) => {
|
|
@@ -15618,6 +15689,7 @@ var ElementsDelta = class _ElementsDelta {
|
|
|
15618
15689
|
return;
|
|
15619
15690
|
}
|
|
15620
15691
|
const prevElement = prevElements.get(element.id);
|
|
15692
|
+
const nextVersion = applyDirection === "forward" ? nextElement.version + 1 : nextElement.version - 1;
|
|
15621
15693
|
const elementUpdates = updates;
|
|
15622
15694
|
let affectedElement;
|
|
15623
15695
|
if (prevElement === nextElement) {
|
|
@@ -15625,15 +15697,15 @@ var ElementsDelta = class _ElementsDelta {
|
|
|
15625
15697
|
nextElement,
|
|
15626
15698
|
{
|
|
15627
15699
|
...elementUpdates,
|
|
15628
|
-
version:
|
|
15700
|
+
version: nextVersion
|
|
15629
15701
|
},
|
|
15630
15702
|
true
|
|
15631
15703
|
);
|
|
15632
15704
|
} else {
|
|
15633
15705
|
affectedElement = mutateElement(nextElement, nextElements, {
|
|
15634
15706
|
...elementUpdates,
|
|
15635
|
-
// don't modify the version further,
|
|
15636
|
-
version: nextElement.version
|
|
15707
|
+
// don't modify the version further, if it's already different
|
|
15708
|
+
version: prevElement?.version !== nextElement.version ? nextElement.version : nextVersion
|
|
15637
15709
|
});
|
|
15638
15710
|
}
|
|
15639
15711
|
nextAffectedElements.set(affectedElement.id, affectedElement);
|