@excalidraw/element 0.18.0-dda3affcb-8fc71066d → 0.18.0-de715913e
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 +100 -25
- package/dist/dev/index.js.map +3 -3
- package/dist/prod/index.js +11 -11
- package/dist/types/element/src/delta.d.ts +2 -3
- package/dist/types/element/src/store.d.ts +4 -0
- package/dist/types/excalidraw/components/App.d.ts +3 -3
- package/dist/types/excalidraw/types.d.ts +1 -2
- package/package.json +3 -3
package/dist/dev/index.js
CHANGED
|
@@ -13540,6 +13540,14 @@ var StoreDelta = class {
|
|
|
13540
13540
|
const appState = AppStateDelta.create(appStateDelta);
|
|
13541
13541
|
return new this(id, elements, appState);
|
|
13542
13542
|
}
|
|
13543
|
+
/**
|
|
13544
|
+
* Squash the passed delta into the current instance.
|
|
13545
|
+
*/
|
|
13546
|
+
squash(delta) {
|
|
13547
|
+
this.elements.squash(delta.elements);
|
|
13548
|
+
this.appState.squash(delta.appState);
|
|
13549
|
+
return this;
|
|
13550
|
+
}
|
|
13543
13551
|
/**
|
|
13544
13552
|
* Inverse store delta, creates new instance of `StoreDelta`.
|
|
13545
13553
|
*/
|
|
@@ -14643,10 +14651,10 @@ var Delta = class _Delta {
|
|
|
14643
14651
|
/**
|
|
14644
14652
|
* Merges two deltas into a new one.
|
|
14645
14653
|
*/
|
|
14646
|
-
static merge(delta1, delta2) {
|
|
14654
|
+
static merge(delta1, delta2, delta3) {
|
|
14647
14655
|
return _Delta.create(
|
|
14648
|
-
{ ...delta1.deleted, ...delta2.deleted },
|
|
14649
|
-
{ ...delta1.inserted, ...delta2.inserted }
|
|
14656
|
+
{ ...delta1.deleted, ...delta2.deleted, ...delta3?.deleted ?? {} },
|
|
14657
|
+
{ ...delta1.inserted, ...delta2.inserted, ...delta3?.inserted ?? {} }
|
|
14650
14658
|
);
|
|
14651
14659
|
}
|
|
14652
14660
|
/**
|
|
@@ -14654,7 +14662,7 @@ var Delta = class _Delta {
|
|
|
14654
14662
|
*/
|
|
14655
14663
|
static mergeObjects(prev, added, removed) {
|
|
14656
14664
|
const cloned = { ...prev };
|
|
14657
|
-
for (const key of Object.keys(removed)) {
|
|
14665
|
+
for (const key of Object.keys(removed ?? {})) {
|
|
14658
14666
|
delete cloned[key];
|
|
14659
14667
|
}
|
|
14660
14668
|
return { ...cloned, ...added };
|
|
@@ -14898,7 +14906,33 @@ var AppStateDelta = class _AppStateDelta {
|
|
|
14898
14906
|
return new _AppStateDelta(inversedDelta);
|
|
14899
14907
|
}
|
|
14900
14908
|
squash(delta) {
|
|
14901
|
-
|
|
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);
|
|
14902
14936
|
return this;
|
|
14903
14937
|
}
|
|
14904
14938
|
applyTo(appState, nextElements) {
|
|
@@ -15417,10 +15451,12 @@ var ElementsDelta = class _ElementsDelta {
|
|
|
15417
15451
|
let changedElements;
|
|
15418
15452
|
const flags = {
|
|
15419
15453
|
containsVisibleDifference: false,
|
|
15420
|
-
containsZindexDifference: false
|
|
15454
|
+
containsZindexDifference: false,
|
|
15455
|
+
applyDirection: void 0
|
|
15421
15456
|
};
|
|
15422
15457
|
try {
|
|
15423
15458
|
const applyDeltas = _ElementsDelta.createApplier(
|
|
15459
|
+
elements,
|
|
15424
15460
|
nextElements,
|
|
15425
15461
|
snapshot,
|
|
15426
15462
|
flags,
|
|
@@ -15429,7 +15465,11 @@ var ElementsDelta = class _ElementsDelta {
|
|
|
15429
15465
|
const addedElements = applyDeltas(this.added);
|
|
15430
15466
|
const removedElements = applyDeltas(this.removed);
|
|
15431
15467
|
const updatedElements = applyDeltas(this.updated);
|
|
15432
|
-
const affectedElements = this.resolveConflicts(
|
|
15468
|
+
const affectedElements = this.resolveConflicts(
|
|
15469
|
+
elements,
|
|
15470
|
+
nextElements,
|
|
15471
|
+
flags.applyDirection
|
|
15472
|
+
);
|
|
15433
15473
|
changedElements = new Map([
|
|
15434
15474
|
...addedElements,
|
|
15435
15475
|
...removedElements,
|
|
@@ -15449,9 +15489,7 @@ var ElementsDelta = class _ElementsDelta {
|
|
|
15449
15489
|
changedElements,
|
|
15450
15490
|
flags
|
|
15451
15491
|
);
|
|
15452
|
-
|
|
15453
|
-
_ElementsDelta.redrawElements(nextElements, changedElements);
|
|
15454
|
-
}
|
|
15492
|
+
_ElementsDelta.redrawElements(nextElements, changedElements);
|
|
15455
15493
|
} catch (e) {
|
|
15456
15494
|
console.error(
|
|
15457
15495
|
`Couldn't mutate elements after applying elements change`,
|
|
@@ -15466,12 +15504,35 @@ var ElementsDelta = class _ElementsDelta {
|
|
|
15466
15504
|
}
|
|
15467
15505
|
squash(delta) {
|
|
15468
15506
|
const { added, removed, updated } = delta;
|
|
15507
|
+
function mergeBoundElements(prevDelta, nextDelta) {
|
|
15508
|
+
const mergedDeletedBoundElements = Delta.mergeArrays(
|
|
15509
|
+
prevDelta.deleted.boundElements ?? [],
|
|
15510
|
+
nextDelta.deleted.boundElements ?? [],
|
|
15511
|
+
void 0,
|
|
15512
|
+
(x) => x.id
|
|
15513
|
+
) ?? [];
|
|
15514
|
+
const mergedInsertedBoundElements = Delta.mergeArrays(
|
|
15515
|
+
prevDelta.inserted.boundElements ?? [],
|
|
15516
|
+
nextDelta.inserted.boundElements ?? [],
|
|
15517
|
+
void 0,
|
|
15518
|
+
(x) => x.id
|
|
15519
|
+
) ?? [];
|
|
15520
|
+
return Delta.create(
|
|
15521
|
+
{
|
|
15522
|
+
boundElements: mergedDeletedBoundElements
|
|
15523
|
+
},
|
|
15524
|
+
{
|
|
15525
|
+
boundElements: mergedInsertedBoundElements
|
|
15526
|
+
}
|
|
15527
|
+
);
|
|
15528
|
+
}
|
|
15469
15529
|
for (const [id, nextDelta] of Object.entries(added)) {
|
|
15470
15530
|
const prevDelta = this.added[id];
|
|
15471
15531
|
if (!prevDelta) {
|
|
15472
15532
|
this.added[id] = nextDelta;
|
|
15473
15533
|
} else {
|
|
15474
|
-
|
|
15534
|
+
const mergedDelta = mergeBoundElements(prevDelta, nextDelta);
|
|
15535
|
+
this.added[id] = Delta.merge(prevDelta, nextDelta, mergedDelta);
|
|
15475
15536
|
}
|
|
15476
15537
|
}
|
|
15477
15538
|
for (const [id, nextDelta] of Object.entries(removed)) {
|
|
@@ -15479,7 +15540,8 @@ var ElementsDelta = class _ElementsDelta {
|
|
|
15479
15540
|
if (!prevDelta) {
|
|
15480
15541
|
this.removed[id] = nextDelta;
|
|
15481
15542
|
} else {
|
|
15482
|
-
|
|
15543
|
+
const mergedDelta = mergeBoundElements(prevDelta, nextDelta);
|
|
15544
|
+
this.removed[id] = Delta.merge(prevDelta, nextDelta, mergedDelta);
|
|
15483
15545
|
}
|
|
15484
15546
|
}
|
|
15485
15547
|
for (const [id, nextDelta] of Object.entries(updated)) {
|
|
@@ -15487,12 +15549,13 @@ var ElementsDelta = class _ElementsDelta {
|
|
|
15487
15549
|
if (!prevDelta) {
|
|
15488
15550
|
this.updated[id] = nextDelta;
|
|
15489
15551
|
} else {
|
|
15490
|
-
|
|
15552
|
+
const mergedDelta = mergeBoundElements(prevDelta, nextDelta);
|
|
15553
|
+
this.updated[id] = Delta.merge(prevDelta, nextDelta, mergedDelta);
|
|
15491
15554
|
}
|
|
15492
15555
|
}
|
|
15493
15556
|
return this;
|
|
15494
15557
|
}
|
|
15495
|
-
static createApplier = (nextElements, snapshot, flags, options) => (deltas) => {
|
|
15558
|
+
static createApplier = (prevElements, nextElements, snapshot, flags, options) => (deltas) => {
|
|
15496
15559
|
const getElement = _ElementsDelta.createGetter(
|
|
15497
15560
|
nextElements,
|
|
15498
15561
|
snapshot,
|
|
@@ -15501,14 +15564,20 @@ var ElementsDelta = class _ElementsDelta {
|
|
|
15501
15564
|
return Object.entries(deltas).reduce((acc, [id, delta]) => {
|
|
15502
15565
|
const element = getElement(id, delta.inserted);
|
|
15503
15566
|
if (element) {
|
|
15504
|
-
const
|
|
15567
|
+
const nextElement = _ElementsDelta.applyDelta(
|
|
15505
15568
|
element,
|
|
15506
15569
|
delta,
|
|
15507
15570
|
flags,
|
|
15508
15571
|
options
|
|
15509
15572
|
);
|
|
15510
|
-
nextElements.set(
|
|
15511
|
-
acc.set(
|
|
15573
|
+
nextElements.set(nextElement.id, nextElement);
|
|
15574
|
+
acc.set(nextElement.id, nextElement);
|
|
15575
|
+
if (!flags.applyDirection) {
|
|
15576
|
+
const prevElement = prevElements.get(id);
|
|
15577
|
+
if (prevElement) {
|
|
15578
|
+
flags.applyDirection = prevElement.version > nextElement.version ? "backward" : "forward";
|
|
15579
|
+
}
|
|
15580
|
+
}
|
|
15512
15581
|
}
|
|
15513
15582
|
return acc;
|
|
15514
15583
|
}, /* @__PURE__ */ new Map());
|
|
@@ -15567,7 +15636,7 @@ var ElementsDelta = class _ElementsDelta {
|
|
|
15567
15636
|
if (!flags.containsZindexDifference) {
|
|
15568
15637
|
flags.containsZindexDifference = delta.deleted.index !== delta.inserted.index;
|
|
15569
15638
|
}
|
|
15570
|
-
return newElementWith(element, directlyApplicablePartial);
|
|
15639
|
+
return newElementWith(element, directlyApplicablePartial, true);
|
|
15571
15640
|
}
|
|
15572
15641
|
/**
|
|
15573
15642
|
* Check for visible changes regardless of whether they were removed, added or updated.
|
|
@@ -15592,7 +15661,7 @@ var ElementsDelta = class _ElementsDelta {
|
|
|
15592
15661
|
*
|
|
15593
15662
|
* @returns all elements affected by the conflict resolution
|
|
15594
15663
|
*/
|
|
15595
|
-
resolveConflicts(prevElements, nextElements) {
|
|
15664
|
+
resolveConflicts(prevElements, nextElements, applyDirection = "forward") {
|
|
15596
15665
|
const nextAffectedElements = /* @__PURE__ */ new Map();
|
|
15597
15666
|
const updater = (element, updates) => {
|
|
15598
15667
|
const nextElement = nextElements.get(element.id);
|
|
@@ -15600,18 +15669,24 @@ var ElementsDelta = class _ElementsDelta {
|
|
|
15600
15669
|
return;
|
|
15601
15670
|
}
|
|
15602
15671
|
const prevElement = prevElements.get(element.id);
|
|
15672
|
+
const nextVersion = applyDirection === "forward" ? nextElement.version + 1 : nextElement.version - 1;
|
|
15673
|
+
const elementUpdates = updates;
|
|
15603
15674
|
let affectedElement;
|
|
15604
15675
|
if (prevElement === nextElement) {
|
|
15605
15676
|
affectedElement = newElementWith(
|
|
15606
15677
|
nextElement,
|
|
15607
|
-
|
|
15678
|
+
{
|
|
15679
|
+
...elementUpdates,
|
|
15680
|
+
version: nextVersion
|
|
15681
|
+
},
|
|
15682
|
+
true
|
|
15608
15683
|
);
|
|
15609
15684
|
} else {
|
|
15610
|
-
affectedElement = mutateElement(
|
|
15611
|
-
|
|
15612
|
-
|
|
15613
|
-
|
|
15614
|
-
);
|
|
15685
|
+
affectedElement = mutateElement(nextElement, nextElements, {
|
|
15686
|
+
...elementUpdates,
|
|
15687
|
+
// don't modify the version further, if it's already different
|
|
15688
|
+
version: prevElement?.version !== nextElement.version ? nextElement.version : nextVersion
|
|
15689
|
+
});
|
|
15615
15690
|
}
|
|
15616
15691
|
nextAffectedElements.set(affectedElement.id, affectedElement);
|
|
15617
15692
|
nextElements.set(affectedElement.id, affectedElement);
|