@excalidraw/element 0.18.0-6d870b1c8 → 0.18.0-7b8a5f54c
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 +77 -36
- package/dist/dev/index.js.map +3 -3
- package/dist/prod/index.js +11 -11
- package/dist/types/element/src/Scene.d.ts +6 -2
- package/dist/types/element/src/delta.d.ts +4 -2
- package/dist/types/element/src/store.d.ts +5 -1
- package/dist/types/excalidraw/components/App.d.ts +4 -3
- package/dist/types/excalidraw/data/restore.d.ts +3 -3
- package/dist/types/excalidraw/types.d.ts +1 -0
- package/package.json +3 -3
package/dist/dev/index.js
CHANGED
|
@@ -13533,10 +13533,20 @@ var StoreDelta = class {
|
|
|
13533
13533
|
*/
|
|
13534
13534
|
static load({
|
|
13535
13535
|
id,
|
|
13536
|
-
elements: { added, removed, updated }
|
|
13536
|
+
elements: { added, removed, updated },
|
|
13537
|
+
appState: { delta: appStateDelta }
|
|
13537
13538
|
}) {
|
|
13538
13539
|
const elements = ElementsDelta.create(added, removed, updated);
|
|
13539
|
-
|
|
13540
|
+
const appState = AppStateDelta.create(appStateDelta);
|
|
13541
|
+
return new this(id, elements, appState);
|
|
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;
|
|
13540
13550
|
}
|
|
13541
13551
|
/**
|
|
13542
13552
|
* Inverse store delta, creates new instance of `StoreDelta`.
|
|
@@ -13547,9 +13557,7 @@ var StoreDelta = class {
|
|
|
13547
13557
|
/**
|
|
13548
13558
|
* Apply the delta to the passed elements and appState, does not modify the snapshot.
|
|
13549
13559
|
*/
|
|
13550
|
-
static applyTo(delta, elements, appState, options
|
|
13551
|
-
excludedProperties: /* @__PURE__ */ new Set()
|
|
13552
|
-
}) {
|
|
13560
|
+
static applyTo(delta, elements, appState, options) {
|
|
13553
13561
|
const [nextElements, elementsContainVisibleChange] = delta.elements.applyTo(
|
|
13554
13562
|
elements,
|
|
13555
13563
|
StoreSnapshot.empty().elements,
|
|
@@ -14398,9 +14406,9 @@ var Scene = class {
|
|
|
14398
14406
|
getFramesIncludingDeleted() {
|
|
14399
14407
|
return this.frames;
|
|
14400
14408
|
}
|
|
14401
|
-
constructor(elements = null) {
|
|
14409
|
+
constructor(elements = null, options) {
|
|
14402
14410
|
if (elements) {
|
|
14403
|
-
this.replaceAllElements(elements);
|
|
14411
|
+
this.replaceAllElements(elements, options);
|
|
14404
14412
|
}
|
|
14405
14413
|
}
|
|
14406
14414
|
getSelectedElements(opts) {
|
|
@@ -14465,10 +14473,12 @@ var Scene = class {
|
|
|
14465
14473
|
}
|
|
14466
14474
|
return didChange;
|
|
14467
14475
|
}
|
|
14468
|
-
replaceAllElements(nextElements) {
|
|
14476
|
+
replaceAllElements(nextElements, options) {
|
|
14469
14477
|
const _nextElements = toArray(nextElements);
|
|
14470
14478
|
const nextFrameLikes = [];
|
|
14471
|
-
|
|
14479
|
+
if (!options?.skipValidation) {
|
|
14480
|
+
validateIndicesThrottled(_nextElements);
|
|
14481
|
+
}
|
|
14472
14482
|
this.elements = syncInvalidIndices2(_nextElements);
|
|
14473
14483
|
this.elementsMap.clear();
|
|
14474
14484
|
this.elements.forEach((element) => {
|
|
@@ -14871,6 +14881,9 @@ var AppStateDelta = class _AppStateDelta {
|
|
|
14871
14881
|
constructor(delta) {
|
|
14872
14882
|
this.delta = delta;
|
|
14873
14883
|
}
|
|
14884
|
+
static create(delta) {
|
|
14885
|
+
return new _AppStateDelta(delta);
|
|
14886
|
+
}
|
|
14874
14887
|
static calculate(prevAppState, nextAppState) {
|
|
14875
14888
|
const delta = Delta.calculate(
|
|
14876
14889
|
prevAppState,
|
|
@@ -15407,26 +15420,30 @@ var ElementsDelta = class _ElementsDelta {
|
|
|
15407
15420
|
// redistribute the deltas as `isDeleted` could have been updated
|
|
15408
15421
|
});
|
|
15409
15422
|
}
|
|
15410
|
-
applyTo(elements, snapshot = StoreSnapshot.empty().elements, options
|
|
15411
|
-
excludedProperties: /* @__PURE__ */ new Set()
|
|
15412
|
-
}) {
|
|
15423
|
+
applyTo(elements, snapshot = StoreSnapshot.empty().elements, options) {
|
|
15413
15424
|
let nextElements = new Map(elements);
|
|
15414
15425
|
let changedElements;
|
|
15415
15426
|
const flags = {
|
|
15416
15427
|
containsVisibleDifference: false,
|
|
15417
|
-
containsZindexDifference: false
|
|
15428
|
+
containsZindexDifference: false,
|
|
15429
|
+
applyDirection: void 0
|
|
15418
15430
|
};
|
|
15419
15431
|
try {
|
|
15420
15432
|
const applyDeltas = _ElementsDelta.createApplier(
|
|
15433
|
+
elements,
|
|
15421
15434
|
nextElements,
|
|
15422
15435
|
snapshot,
|
|
15423
|
-
|
|
15424
|
-
|
|
15436
|
+
flags,
|
|
15437
|
+
options
|
|
15425
15438
|
);
|
|
15426
15439
|
const addedElements = applyDeltas(this.added);
|
|
15427
15440
|
const removedElements = applyDeltas(this.removed);
|
|
15428
15441
|
const updatedElements = applyDeltas(this.updated);
|
|
15429
|
-
const affectedElements = this.resolveConflicts(
|
|
15442
|
+
const affectedElements = this.resolveConflicts(
|
|
15443
|
+
elements,
|
|
15444
|
+
nextElements,
|
|
15445
|
+
flags.applyDirection
|
|
15446
|
+
);
|
|
15430
15447
|
changedElements = new Map([
|
|
15431
15448
|
...addedElements,
|
|
15432
15449
|
...removedElements,
|
|
@@ -15446,9 +15463,7 @@ var ElementsDelta = class _ElementsDelta {
|
|
|
15446
15463
|
changedElements,
|
|
15447
15464
|
flags
|
|
15448
15465
|
);
|
|
15449
|
-
|
|
15450
|
-
_ElementsDelta.redrawTextBoundingBoxes(tempScene, changedElements);
|
|
15451
|
-
_ElementsDelta.redrawBoundArrows(tempScene, changedElements);
|
|
15466
|
+
_ElementsDelta.redrawElements(nextElements, changedElements);
|
|
15452
15467
|
} catch (e) {
|
|
15453
15468
|
console.error(
|
|
15454
15469
|
`Couldn't mutate elements after applying elements change`,
|
|
@@ -15489,7 +15504,7 @@ var ElementsDelta = class _ElementsDelta {
|
|
|
15489
15504
|
}
|
|
15490
15505
|
return this;
|
|
15491
15506
|
}
|
|
15492
|
-
static createApplier = (nextElements, snapshot,
|
|
15507
|
+
static createApplier = (prevElements, nextElements, snapshot, flags, options) => (deltas) => {
|
|
15493
15508
|
const getElement = _ElementsDelta.createGetter(
|
|
15494
15509
|
nextElements,
|
|
15495
15510
|
snapshot,
|
|
@@ -15498,14 +15513,20 @@ var ElementsDelta = class _ElementsDelta {
|
|
|
15498
15513
|
return Object.entries(deltas).reduce((acc, [id, delta]) => {
|
|
15499
15514
|
const element = getElement(id, delta.inserted);
|
|
15500
15515
|
if (element) {
|
|
15501
|
-
const
|
|
15516
|
+
const nextElement = _ElementsDelta.applyDelta(
|
|
15502
15517
|
element,
|
|
15503
15518
|
delta,
|
|
15504
|
-
|
|
15505
|
-
|
|
15519
|
+
flags,
|
|
15520
|
+
options
|
|
15506
15521
|
);
|
|
15507
|
-
nextElements.set(
|
|
15508
|
-
acc.set(
|
|
15522
|
+
nextElements.set(nextElement.id, nextElement);
|
|
15523
|
+
acc.set(nextElement.id, nextElement);
|
|
15524
|
+
if (!flags.applyDirection) {
|
|
15525
|
+
const prevElement = prevElements.get(id);
|
|
15526
|
+
if (prevElement) {
|
|
15527
|
+
flags.applyDirection = prevElement.version > nextElement.version ? "backward" : "forward";
|
|
15528
|
+
}
|
|
15529
|
+
}
|
|
15509
15530
|
}
|
|
15510
15531
|
return acc;
|
|
15511
15532
|
}, /* @__PURE__ */ new Map());
|
|
@@ -15530,13 +15551,13 @@ var ElementsDelta = class _ElementsDelta {
|
|
|
15530
15551
|
}
|
|
15531
15552
|
return element;
|
|
15532
15553
|
};
|
|
15533
|
-
static applyDelta(element, delta,
|
|
15554
|
+
static applyDelta(element, delta, flags, options) {
|
|
15534
15555
|
const directlyApplicablePartial = {};
|
|
15535
15556
|
for (const key of Object.keys(delta.inserted)) {
|
|
15536
15557
|
if (key === "boundElements") {
|
|
15537
15558
|
continue;
|
|
15538
15559
|
}
|
|
15539
|
-
if (options
|
|
15560
|
+
if (options?.excludedProperties?.has(key)) {
|
|
15540
15561
|
continue;
|
|
15541
15562
|
}
|
|
15542
15563
|
const value = delta.inserted[key];
|
|
@@ -15564,7 +15585,7 @@ var ElementsDelta = class _ElementsDelta {
|
|
|
15564
15585
|
if (!flags.containsZindexDifference) {
|
|
15565
15586
|
flags.containsZindexDifference = delta.deleted.index !== delta.inserted.index;
|
|
15566
15587
|
}
|
|
15567
|
-
return newElementWith(element, directlyApplicablePartial);
|
|
15588
|
+
return newElementWith(element, directlyApplicablePartial, true);
|
|
15568
15589
|
}
|
|
15569
15590
|
/**
|
|
15570
15591
|
* Check for visible changes regardless of whether they were removed, added or updated.
|
|
@@ -15589,25 +15610,31 @@ var ElementsDelta = class _ElementsDelta {
|
|
|
15589
15610
|
*
|
|
15590
15611
|
* @returns all elements affected by the conflict resolution
|
|
15591
15612
|
*/
|
|
15592
|
-
resolveConflicts(prevElements, nextElements) {
|
|
15613
|
+
resolveConflicts(prevElements, nextElements, applyDirection = "forward") {
|
|
15593
15614
|
const nextAffectedElements = /* @__PURE__ */ new Map();
|
|
15594
15615
|
const updater = (element, updates) => {
|
|
15595
15616
|
const nextElement = nextElements.get(element.id);
|
|
15596
15617
|
if (!nextElement) {
|
|
15597
15618
|
return;
|
|
15598
15619
|
}
|
|
15620
|
+
const prevElement = prevElements.get(element.id);
|
|
15621
|
+
const elementUpdates = updates;
|
|
15599
15622
|
let affectedElement;
|
|
15600
|
-
if (
|
|
15623
|
+
if (prevElement === nextElement) {
|
|
15601
15624
|
affectedElement = newElementWith(
|
|
15602
15625
|
nextElement,
|
|
15603
|
-
|
|
15626
|
+
{
|
|
15627
|
+
...elementUpdates,
|
|
15628
|
+
version: applyDirection === "forward" ? nextElement.version + 1 : nextElement.version - 1
|
|
15629
|
+
},
|
|
15630
|
+
true
|
|
15604
15631
|
);
|
|
15605
15632
|
} else {
|
|
15606
|
-
affectedElement = mutateElement(
|
|
15607
|
-
|
|
15608
|
-
|
|
15609
|
-
|
|
15610
|
-
);
|
|
15633
|
+
affectedElement = mutateElement(nextElement, nextElements, {
|
|
15634
|
+
...elementUpdates,
|
|
15635
|
+
// don't modify the version further, as we've already updated it
|
|
15636
|
+
version: nextElement.version
|
|
15637
|
+
});
|
|
15611
15638
|
}
|
|
15612
15639
|
nextAffectedElements.set(affectedElement.id, affectedElement);
|
|
15613
15640
|
nextElements.set(affectedElement.id, affectedElement);
|
|
@@ -15670,6 +15697,20 @@ var ElementsDelta = class _ElementsDelta {
|
|
|
15670
15697
|
);
|
|
15671
15698
|
BindableElement.rebindAffected(nextElements, nextElement(), updater);
|
|
15672
15699
|
}
|
|
15700
|
+
static redrawElements(nextElements, changedElements) {
|
|
15701
|
+
try {
|
|
15702
|
+
const tempScene = new Scene(nextElements, { skipValidation: true });
|
|
15703
|
+
_ElementsDelta.redrawTextBoundingBoxes(tempScene, changedElements);
|
|
15704
|
+
_ElementsDelta.redrawBoundArrows(tempScene, changedElements);
|
|
15705
|
+
} catch (e) {
|
|
15706
|
+
console.error(`Couldn't redraw elements`, e);
|
|
15707
|
+
if (isTestEnv8() || isDevEnv7()) {
|
|
15708
|
+
throw e;
|
|
15709
|
+
}
|
|
15710
|
+
} finally {
|
|
15711
|
+
return nextElements;
|
|
15712
|
+
}
|
|
15713
|
+
}
|
|
15673
15714
|
static redrawTextBoundingBoxes(scene, changed) {
|
|
15674
15715
|
const elements = scene.getNonDeletedElementsMap();
|
|
15675
15716
|
const boxesToRedraw = /* @__PURE__ */ new Map();
|