@dwelle/excalidraw 0.5.0-c0212b3 → 0.5.0-c45e6ba
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/{chunk-UYYRR25G.js → chunk-BT2OAKRD.js} +2 -2
- package/dist/dev/{chunk-JSZNJITD.js → chunk-VF5WL5WV.js} +205 -59
- package/dist/dev/{chunk-JSZNJITD.js.map → chunk-VF5WL5WV.js.map} +3 -3
- package/dist/dev/data/{image-ENWDYSLD.js → image-FLUMXXQ3.js} +3 -3
- package/dist/dev/index.js +17 -3
- package/dist/dev/index.js.map +2 -2
- package/dist/dev/subset-shared.chunk.js +1 -1
- package/dist/dev/subset-worker.chunk.js +1 -1
- package/dist/prod/{chunk-OXIT2V7F.js → chunk-2Y234DVR.js} +1 -1
- package/dist/prod/chunk-7VEMU5CP.js +33 -0
- package/dist/prod/data/image-YMMRU2KP.js +1 -0
- package/dist/prod/index.js +15 -15
- package/dist/prod/subset-shared.chunk.js +1 -1
- package/dist/prod/subset-worker.chunk.js +1 -1
- package/dist/types/element/src/Scene.d.ts +6 -2
- package/dist/types/element/src/delta.d.ts +6 -3
- package/dist/types/element/src/store.d.ts +6 -1
- package/dist/types/excalidraw/components/App.d.ts +3 -2
- package/dist/types/excalidraw/types.d.ts +1 -0
- package/history.ts +1 -1
- package/package.json +1 -1
- package/dist/prod/chunk-M63Q4V4B.js +0 -33
- package/dist/prod/data/image-NKZDMVSD.js +0 -1
- /package/dist/dev/{chunk-UYYRR25G.js.map → chunk-BT2OAKRD.js.map} +0 -0
- /package/dist/dev/data/{image-ENWDYSLD.js.map → image-FLUMXXQ3.js.map} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// <define:import.meta.env>
|
|
2
|
-
var define_import_meta_env_default = { MODE: "development", VITE_APP_BACKEND_V2_GET_URL: "https://json-dev.excalidraw.com/api/v2/", VITE_APP_BACKEND_V2_POST_URL: "https://json-dev.excalidraw.com/api/v2/post/", VITE_APP_LIBRARY_URL: "https://libraries.excalidraw.com", VITE_APP_LIBRARY_BACKEND: "https://us-central1-excalidraw-room-persistence.cloudfunctions.net/libraries", VITE_APP_WS_SERVER_URL: "http://localhost:3002", VITE_APP_PLUS_LP: "https://plus.excalidraw.com", VITE_APP_PLUS_APP: "http://localhost:3000", VITE_APP_AI_BACKEND: "http://localhost:3015", VITE_APP_FIREBASE_CONFIG: '{"apiKey":"AIzaSyCMkxA60XIW8KbqMYL7edC4qT5l4qHX2h8","authDomain":"excalidraw-oss-dev.firebaseapp.com","projectId":"excalidraw-oss-dev","storageBucket":"excalidraw-oss-dev.appspot.com","messagingSenderId":"664559512677","appId":"1:664559512677:web:a385181f2928d328a7aa8c"}', VITE_APP_DEV_DISABLE_LIVE_RELOAD: "", VITE_APP_ENABLE_TRACKING: "true", FAST_REFRESH: "false", VITE_APP_PORT: "3000", VITE_APP_DEBUG_ENABLE_TEXT_CONTAINER_BOUNDING_BOX: "", VITE_APP_COLLAPSE_OVERLAY: "true", VITE_APP_ENABLE_ESLINT: "true", VITE_APP_ENABLE_PWA: "false", VITE_APP_PLUS_EXPORT_PUBLIC_KEY: "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAm2g5T+Rub6Kbf1Mf57t0\n7r2zeHuVg4dla3r5ryXMswtzz6x767octl6oLThn33mQsPSy3GKglFZoCTXJR4ij\nba8SxB04sL/N8eRrKja7TFWjCVtRwTTfyy771NYYNFVJclkxHyE5qw4m27crHF1y\nUNWEjuqNMi/lwAErS9fFa2oJlWyT8U7zzv/5kQREkxZI6y9v0AF3qcbsy2731FnD\ns9ChJvOUW9toIab2gsIdrKW8ZNpu084ZFVKb6LNjvIXI1Se4oMTHeszXzNptzlot\nkdxxjOoaQMAyfljFSot1F1FlU6MQlag7UnFGvFjRHN1JI5q4K+n3a67DX+TMyRqS\nHQIDAQAB", VITE_APP_DISABLE_PREVENT_UNLOAD: "", PKG_NAME: "@excalidraw/excalidraw", PKG_VERSION: "0.5.0-
|
|
2
|
+
var define_import_meta_env_default = { MODE: "development", VITE_APP_BACKEND_V2_GET_URL: "https://json-dev.excalidraw.com/api/v2/", VITE_APP_BACKEND_V2_POST_URL: "https://json-dev.excalidraw.com/api/v2/post/", VITE_APP_LIBRARY_URL: "https://libraries.excalidraw.com", VITE_APP_LIBRARY_BACKEND: "https://us-central1-excalidraw-room-persistence.cloudfunctions.net/libraries", VITE_APP_WS_SERVER_URL: "http://localhost:3002", VITE_APP_PLUS_LP: "https://plus.excalidraw.com", VITE_APP_PLUS_APP: "http://localhost:3000", VITE_APP_AI_BACKEND: "http://localhost:3015", VITE_APP_FIREBASE_CONFIG: '{"apiKey":"AIzaSyCMkxA60XIW8KbqMYL7edC4qT5l4qHX2h8","authDomain":"excalidraw-oss-dev.firebaseapp.com","projectId":"excalidraw-oss-dev","storageBucket":"excalidraw-oss-dev.appspot.com","messagingSenderId":"664559512677","appId":"1:664559512677:web:a385181f2928d328a7aa8c"}', VITE_APP_DEV_DISABLE_LIVE_RELOAD: "", VITE_APP_ENABLE_TRACKING: "true", FAST_REFRESH: "false", VITE_APP_PORT: "3000", VITE_APP_DEBUG_ENABLE_TEXT_CONTAINER_BOUNDING_BOX: "", VITE_APP_COLLAPSE_OVERLAY: "true", VITE_APP_ENABLE_ESLINT: "true", VITE_APP_ENABLE_PWA: "false", VITE_APP_PLUS_EXPORT_PUBLIC_KEY: "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAm2g5T+Rub6Kbf1Mf57t0\n7r2zeHuVg4dla3r5ryXMswtzz6x767octl6oLThn33mQsPSy3GKglFZoCTXJR4ij\nba8SxB04sL/N8eRrKja7TFWjCVtRwTTfyy771NYYNFVJclkxHyE5qw4m27crHF1y\nUNWEjuqNMi/lwAErS9fFa2oJlWyT8U7zzv/5kQREkxZI6y9v0AF3qcbsy2731FnD\ns9ChJvOUW9toIab2gsIdrKW8ZNpu084ZFVKb6LNjvIXI1Se4oMTHeszXzNptzlot\nkdxxjOoaQMAyfljFSot1F1FlU6MQlag7UnFGvFjRHN1JI5q4K+n3a67DX+TMyRqS\nHQIDAQAB", VITE_APP_DISABLE_PREVENT_UNLOAD: "", PKG_NAME: "@excalidraw/excalidraw", PKG_VERSION: "0.5.0-c45e6ba", DEV: true };
|
|
3
3
|
|
|
4
4
|
export {
|
|
5
5
|
define_import_meta_env_default
|
|
6
6
|
};
|
|
7
|
-
//# sourceMappingURL=chunk-
|
|
7
|
+
//# sourceMappingURL=chunk-BT2OAKRD.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
define_import_meta_env_default
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-BT2OAKRD.js";
|
|
4
4
|
import {
|
|
5
5
|
__publicField
|
|
6
6
|
} from "./chunk-XDFCUUT6.js";
|
|
@@ -12973,7 +12973,7 @@ var EphemeralIncrement = class extends StoreIncrement {
|
|
|
12973
12973
|
this.change = change;
|
|
12974
12974
|
}
|
|
12975
12975
|
};
|
|
12976
|
-
var StoreDelta = class {
|
|
12976
|
+
var StoreDelta = class _StoreDelta {
|
|
12977
12977
|
constructor(id, elements, appState) {
|
|
12978
12978
|
this.id = id;
|
|
12979
12979
|
this.elements = elements;
|
|
@@ -13011,10 +13011,23 @@ var StoreDelta = class {
|
|
|
13011
13011
|
*/
|
|
13012
13012
|
static load({
|
|
13013
13013
|
id,
|
|
13014
|
-
elements: { added, removed, updated }
|
|
13014
|
+
elements: { added, removed, updated },
|
|
13015
|
+
appState: { delta: appStateDelta }
|
|
13015
13016
|
}) {
|
|
13016
13017
|
const elements = ElementsDelta.create(added, removed, updated);
|
|
13017
|
-
|
|
13018
|
+
const appState = AppStateDelta.create(appStateDelta);
|
|
13019
|
+
return new this(id, elements, appState);
|
|
13020
|
+
}
|
|
13021
|
+
/**
|
|
13022
|
+
* Squash the passed deltas into the aggregated delta instance.
|
|
13023
|
+
*/
|
|
13024
|
+
static squash(...deltas) {
|
|
13025
|
+
const aggregatedDelta = _StoreDelta.empty();
|
|
13026
|
+
for (const delta of deltas) {
|
|
13027
|
+
aggregatedDelta.elements.squash(delta.elements);
|
|
13028
|
+
aggregatedDelta.appState.squash(delta.appState);
|
|
13029
|
+
}
|
|
13030
|
+
return aggregatedDelta;
|
|
13018
13031
|
}
|
|
13019
13032
|
/**
|
|
13020
13033
|
* Inverse store delta, creates new instance of `StoreDelta`.
|
|
@@ -13025,9 +13038,7 @@ var StoreDelta = class {
|
|
|
13025
13038
|
/**
|
|
13026
13039
|
* Apply the delta to the passed elements and appState, does not modify the snapshot.
|
|
13027
13040
|
*/
|
|
13028
|
-
static applyTo(delta, elements, appState, options
|
|
13029
|
-
excludedProperties: /* @__PURE__ */ new Set()
|
|
13030
|
-
}) {
|
|
13041
|
+
static applyTo(delta, elements, appState, options) {
|
|
13031
13042
|
const [nextElements, elementsContainVisibleChange] = delta.elements.applyTo(
|
|
13032
13043
|
elements,
|
|
13033
13044
|
StoreSnapshot.empty().elements,
|
|
@@ -13053,6 +13064,9 @@ var StoreDelta = class {
|
|
|
13053
13064
|
}
|
|
13054
13065
|
);
|
|
13055
13066
|
}
|
|
13067
|
+
static empty() {
|
|
13068
|
+
return _StoreDelta.create(ElementsDelta.empty(), AppStateDelta.empty());
|
|
13069
|
+
}
|
|
13056
13070
|
isEmpty() {
|
|
13057
13071
|
return this.elements.isEmpty() && this.appState.isEmpty();
|
|
13058
13072
|
}
|
|
@@ -13603,7 +13617,7 @@ var hashSelectionOpts = (opts) => {
|
|
|
13603
13617
|
return hash;
|
|
13604
13618
|
};
|
|
13605
13619
|
var Scene = class {
|
|
13606
|
-
constructor(elements = null) {
|
|
13620
|
+
constructor(elements = null, options) {
|
|
13607
13621
|
// ---------------------------------------------------------------------------
|
|
13608
13622
|
// instance methods/props
|
|
13609
13623
|
// ---------------------------------------------------------------------------
|
|
@@ -13658,7 +13672,7 @@ var Scene = class {
|
|
|
13658
13672
|
return getElementsInGroup(elementsMap, id);
|
|
13659
13673
|
});
|
|
13660
13674
|
if (elements) {
|
|
13661
|
-
this.replaceAllElements(elements);
|
|
13675
|
+
this.replaceAllElements(elements, options);
|
|
13662
13676
|
}
|
|
13663
13677
|
}
|
|
13664
13678
|
getSceneNonce() {
|
|
@@ -13741,10 +13755,12 @@ var Scene = class {
|
|
|
13741
13755
|
}
|
|
13742
13756
|
return didChange;
|
|
13743
13757
|
}
|
|
13744
|
-
replaceAllElements(nextElements) {
|
|
13758
|
+
replaceAllElements(nextElements, options) {
|
|
13745
13759
|
const _nextElements = toArray(nextElements);
|
|
13746
13760
|
const nextFrameLikes = [];
|
|
13747
|
-
|
|
13761
|
+
if (!options?.skipValidation) {
|
|
13762
|
+
validateIndicesThrottled(_nextElements);
|
|
13763
|
+
}
|
|
13748
13764
|
this.elements = syncInvalidIndices(_nextElements);
|
|
13749
13765
|
this.elementsMap.clear();
|
|
13750
13766
|
this.elements.forEach((element) => {
|
|
@@ -13889,16 +13905,16 @@ var Delta = class _Delta {
|
|
|
13889
13905
|
/**
|
|
13890
13906
|
* Merges two deltas into a new one.
|
|
13891
13907
|
*/
|
|
13892
|
-
static merge(delta1, delta2) {
|
|
13908
|
+
static merge(delta1, delta2, delta3 = _Delta.empty()) {
|
|
13893
13909
|
return _Delta.create(
|
|
13894
|
-
{ ...delta1.deleted, ...delta2.deleted },
|
|
13895
|
-
{ ...delta1.inserted, ...delta2.inserted }
|
|
13910
|
+
{ ...delta1.deleted, ...delta2.deleted, ...delta3.deleted },
|
|
13911
|
+
{ ...delta1.inserted, ...delta2.inserted, ...delta3.inserted }
|
|
13896
13912
|
);
|
|
13897
13913
|
}
|
|
13898
13914
|
/**
|
|
13899
13915
|
* Merges deleted and inserted object partials.
|
|
13900
13916
|
*/
|
|
13901
|
-
static mergeObjects(prev, added, removed) {
|
|
13917
|
+
static mergeObjects(prev, added, removed = {}) {
|
|
13902
13918
|
const cloned = { ...prev };
|
|
13903
13919
|
for (const key of Object.keys(removed)) {
|
|
13904
13920
|
delete cloned[key];
|
|
@@ -14119,6 +14135,9 @@ var AppStateDelta = class _AppStateDelta {
|
|
|
14119
14135
|
constructor(delta) {
|
|
14120
14136
|
this.delta = delta;
|
|
14121
14137
|
}
|
|
14138
|
+
static create(delta) {
|
|
14139
|
+
return new _AppStateDelta(delta);
|
|
14140
|
+
}
|
|
14122
14141
|
static calculate(prevAppState, nextAppState) {
|
|
14123
14142
|
const delta = Delta.calculate(
|
|
14124
14143
|
prevAppState,
|
|
@@ -14141,18 +14160,65 @@ var AppStateDelta = class _AppStateDelta {
|
|
|
14141
14160
|
return new _AppStateDelta(inversedDelta);
|
|
14142
14161
|
}
|
|
14143
14162
|
squash(delta) {
|
|
14144
|
-
|
|
14163
|
+
if (delta.isEmpty()) {
|
|
14164
|
+
return this;
|
|
14165
|
+
}
|
|
14166
|
+
const mergedDeletedSelectedElementIds = Delta.mergeObjects(
|
|
14167
|
+
this.delta.deleted.selectedElementIds ?? {},
|
|
14168
|
+
delta.delta.deleted.selectedElementIds ?? {}
|
|
14169
|
+
);
|
|
14170
|
+
const mergedInsertedSelectedElementIds = Delta.mergeObjects(
|
|
14171
|
+
this.delta.inserted.selectedElementIds ?? {},
|
|
14172
|
+
delta.delta.inserted.selectedElementIds ?? {}
|
|
14173
|
+
);
|
|
14174
|
+
const mergedDeletedSelectedGroupIds = Delta.mergeObjects(
|
|
14175
|
+
this.delta.deleted.selectedGroupIds ?? {},
|
|
14176
|
+
delta.delta.deleted.selectedGroupIds ?? {}
|
|
14177
|
+
);
|
|
14178
|
+
const mergedInsertedSelectedGroupIds = Delta.mergeObjects(
|
|
14179
|
+
this.delta.inserted.selectedGroupIds ?? {},
|
|
14180
|
+
delta.delta.inserted.selectedGroupIds ?? {}
|
|
14181
|
+
);
|
|
14182
|
+
const mergedDeletedLockedMultiSelections = Delta.mergeObjects(
|
|
14183
|
+
this.delta.deleted.lockedMultiSelections ?? {},
|
|
14184
|
+
delta.delta.deleted.lockedMultiSelections ?? {}
|
|
14185
|
+
);
|
|
14186
|
+
const mergedInsertedLockedMultiSelections = Delta.mergeObjects(
|
|
14187
|
+
this.delta.inserted.lockedMultiSelections ?? {},
|
|
14188
|
+
delta.delta.inserted.lockedMultiSelections ?? {}
|
|
14189
|
+
);
|
|
14190
|
+
const mergedInserted = {};
|
|
14191
|
+
const mergedDeleted = {};
|
|
14192
|
+
if (Object.keys(mergedDeletedSelectedElementIds).length || Object.keys(mergedInsertedSelectedElementIds).length) {
|
|
14193
|
+
mergedDeleted.selectedElementIds = mergedDeletedSelectedElementIds;
|
|
14194
|
+
mergedInserted.selectedElementIds = mergedInsertedSelectedElementIds;
|
|
14195
|
+
}
|
|
14196
|
+
if (Object.keys(mergedDeletedSelectedGroupIds).length || Object.keys(mergedInsertedSelectedGroupIds).length) {
|
|
14197
|
+
mergedDeleted.selectedGroupIds = mergedDeletedSelectedGroupIds;
|
|
14198
|
+
mergedInserted.selectedGroupIds = mergedInsertedSelectedGroupIds;
|
|
14199
|
+
}
|
|
14200
|
+
if (Object.keys(mergedDeletedLockedMultiSelections).length || Object.keys(mergedInsertedLockedMultiSelections).length) {
|
|
14201
|
+
mergedDeleted.lockedMultiSelections = mergedDeletedLockedMultiSelections;
|
|
14202
|
+
mergedInserted.lockedMultiSelections = mergedInsertedLockedMultiSelections;
|
|
14203
|
+
}
|
|
14204
|
+
this.delta = Delta.merge(
|
|
14205
|
+
this.delta,
|
|
14206
|
+
delta.delta,
|
|
14207
|
+
Delta.create(mergedDeleted, mergedInserted)
|
|
14208
|
+
);
|
|
14145
14209
|
return this;
|
|
14146
14210
|
}
|
|
14147
14211
|
applyTo(appState, nextElements) {
|
|
14148
14212
|
try {
|
|
14149
14213
|
const {
|
|
14150
14214
|
selectedElementIds: deletedSelectedElementIds = {},
|
|
14151
|
-
selectedGroupIds: deletedSelectedGroupIds = {}
|
|
14215
|
+
selectedGroupIds: deletedSelectedGroupIds = {},
|
|
14216
|
+
lockedMultiSelections: deletedLockedMultiSelections = {}
|
|
14152
14217
|
} = this.delta.deleted;
|
|
14153
14218
|
const {
|
|
14154
14219
|
selectedElementIds: insertedSelectedElementIds = {},
|
|
14155
14220
|
selectedGroupIds: insertedSelectedGroupIds = {},
|
|
14221
|
+
lockedMultiSelections: insertedLockedMultiSelections = {},
|
|
14156
14222
|
selectedLinearElement: insertedSelectedLinearElement,
|
|
14157
14223
|
...directlyApplicablePartial
|
|
14158
14224
|
} = this.delta.inserted;
|
|
@@ -14166,6 +14232,11 @@ var AppStateDelta = class _AppStateDelta {
|
|
|
14166
14232
|
insertedSelectedGroupIds,
|
|
14167
14233
|
deletedSelectedGroupIds
|
|
14168
14234
|
);
|
|
14235
|
+
const mergedLockedMultiSelections = Delta.mergeObjects(
|
|
14236
|
+
appState.lockedMultiSelections,
|
|
14237
|
+
insertedLockedMultiSelections,
|
|
14238
|
+
deletedLockedMultiSelections
|
|
14239
|
+
);
|
|
14169
14240
|
const selectedLinearElement = insertedSelectedLinearElement && nextElements.has(insertedSelectedLinearElement.elementId) ? new LinearElementEditor(
|
|
14170
14241
|
nextElements.get(
|
|
14171
14242
|
insertedSelectedLinearElement.elementId
|
|
@@ -14178,6 +14249,7 @@ var AppStateDelta = class _AppStateDelta {
|
|
|
14178
14249
|
...directlyApplicablePartial,
|
|
14179
14250
|
selectedElementIds: mergedSelectedElementIds,
|
|
14180
14251
|
selectedGroupIds: mergedSelectedGroupIds,
|
|
14252
|
+
lockedMultiSelections: mergedLockedMultiSelections,
|
|
14181
14253
|
selectedLinearElement: typeof insertedSelectedLinearElement !== "undefined" ? selectedLinearElement : appState.selectedLinearElement
|
|
14182
14254
|
};
|
|
14183
14255
|
const constainsVisibleChanges = this.filterInvisibleChanges(
|
|
@@ -14381,12 +14453,6 @@ var AppStateDelta = class _AppStateDelta {
|
|
|
14381
14453
|
"lockedMultiSelections",
|
|
14382
14454
|
(prevValue) => prevValue ?? {}
|
|
14383
14455
|
);
|
|
14384
|
-
Delta.diffObjects(
|
|
14385
|
-
deleted,
|
|
14386
|
-
inserted,
|
|
14387
|
-
"activeLockedId",
|
|
14388
|
-
(prevValue) => prevValue ?? null
|
|
14389
|
-
);
|
|
14390
14456
|
} catch (e) {
|
|
14391
14457
|
console.error(`Couldn't postprocess appstate change deltas.`);
|
|
14392
14458
|
if (isTestEnv() || isDevEnv()) {
|
|
@@ -14449,7 +14515,7 @@ var _ElementsDelta = class _ElementsDelta {
|
|
|
14449
14515
|
}
|
|
14450
14516
|
static validate(elementsDelta, type, satifiesSpecialInvariants) {
|
|
14451
14517
|
for (const [id, delta] of Object.entries(elementsDelta[type])) {
|
|
14452
|
-
if (!this.satisfiesCommmonInvariants(delta) || !satifiesSpecialInvariants(delta)) {
|
|
14518
|
+
if (!this.satisfiesCommmonInvariants(delta) || !this.satisfiesUniqueInvariants(elementsDelta, id) || !satifiesSpecialInvariants(delta)) {
|
|
14453
14519
|
console.error(
|
|
14454
14520
|
`Broken invariant for "${type}" delta, element "${id}", delta:`,
|
|
14455
14521
|
delta
|
|
@@ -14633,26 +14699,30 @@ var _ElementsDelta = class _ElementsDelta {
|
|
|
14633
14699
|
// redistribute the deltas as `isDeleted` could have been updated
|
|
14634
14700
|
});
|
|
14635
14701
|
}
|
|
14636
|
-
applyTo(elements, snapshot = StoreSnapshot.empty().elements, options
|
|
14637
|
-
excludedProperties: /* @__PURE__ */ new Set()
|
|
14638
|
-
}) {
|
|
14702
|
+
applyTo(elements, snapshot = StoreSnapshot.empty().elements, options) {
|
|
14639
14703
|
let nextElements = new Map(elements);
|
|
14640
14704
|
let changedElements;
|
|
14641
14705
|
const flags = {
|
|
14642
14706
|
containsVisibleDifference: false,
|
|
14643
|
-
containsZindexDifference: false
|
|
14707
|
+
containsZindexDifference: false,
|
|
14708
|
+
applyDirection: void 0
|
|
14644
14709
|
};
|
|
14645
14710
|
try {
|
|
14646
14711
|
const applyDeltas = _ElementsDelta.createApplier(
|
|
14712
|
+
elements,
|
|
14647
14713
|
nextElements,
|
|
14648
14714
|
snapshot,
|
|
14649
|
-
|
|
14650
|
-
|
|
14715
|
+
flags,
|
|
14716
|
+
options
|
|
14651
14717
|
);
|
|
14652
14718
|
const addedElements = applyDeltas(this.added);
|
|
14653
14719
|
const removedElements = applyDeltas(this.removed);
|
|
14654
14720
|
const updatedElements = applyDeltas(this.updated);
|
|
14655
|
-
const affectedElements = this.resolveConflicts(
|
|
14721
|
+
const affectedElements = this.resolveConflicts(
|
|
14722
|
+
elements,
|
|
14723
|
+
nextElements,
|
|
14724
|
+
flags.applyDirection
|
|
14725
|
+
);
|
|
14656
14726
|
changedElements = new Map([
|
|
14657
14727
|
...addedElements,
|
|
14658
14728
|
...removedElements,
|
|
@@ -14672,9 +14742,7 @@ var _ElementsDelta = class _ElementsDelta {
|
|
|
14672
14742
|
changedElements,
|
|
14673
14743
|
flags
|
|
14674
14744
|
);
|
|
14675
|
-
|
|
14676
|
-
_ElementsDelta.redrawTextBoundingBoxes(tempScene, changedElements);
|
|
14677
|
-
_ElementsDelta.redrawBoundArrows(tempScene, changedElements);
|
|
14745
|
+
_ElementsDelta.redrawElements(nextElements, changedElements);
|
|
14678
14746
|
} catch (e) {
|
|
14679
14747
|
console.error(
|
|
14680
14748
|
`Couldn't mutate elements after applying elements change`,
|
|
@@ -14688,40 +14756,87 @@ var _ElementsDelta = class _ElementsDelta {
|
|
|
14688
14756
|
}
|
|
14689
14757
|
}
|
|
14690
14758
|
squash(delta) {
|
|
14759
|
+
if (delta.isEmpty()) {
|
|
14760
|
+
return this;
|
|
14761
|
+
}
|
|
14691
14762
|
const { added, removed, updated } = delta;
|
|
14763
|
+
const mergeBoundElements = (prevDelta, nextDelta) => {
|
|
14764
|
+
const mergedDeletedBoundElements = Delta.mergeArrays(
|
|
14765
|
+
prevDelta.deleted.boundElements ?? [],
|
|
14766
|
+
nextDelta.deleted.boundElements ?? [],
|
|
14767
|
+
void 0,
|
|
14768
|
+
(x) => x.id
|
|
14769
|
+
) ?? [];
|
|
14770
|
+
const mergedInsertedBoundElements = Delta.mergeArrays(
|
|
14771
|
+
prevDelta.inserted.boundElements ?? [],
|
|
14772
|
+
nextDelta.inserted.boundElements ?? [],
|
|
14773
|
+
void 0,
|
|
14774
|
+
(x) => x.id
|
|
14775
|
+
) ?? [];
|
|
14776
|
+
if (!mergedDeletedBoundElements.length && !mergedInsertedBoundElements.length) {
|
|
14777
|
+
return;
|
|
14778
|
+
}
|
|
14779
|
+
return Delta.create(
|
|
14780
|
+
{
|
|
14781
|
+
boundElements: mergedDeletedBoundElements
|
|
14782
|
+
},
|
|
14783
|
+
{
|
|
14784
|
+
boundElements: mergedInsertedBoundElements
|
|
14785
|
+
}
|
|
14786
|
+
);
|
|
14787
|
+
};
|
|
14692
14788
|
for (const [id, nextDelta] of Object.entries(added)) {
|
|
14693
|
-
const prevDelta = this.added[id];
|
|
14789
|
+
const prevDelta = this.added[id] ?? this.removed[id] ?? this.updated[id];
|
|
14694
14790
|
if (!prevDelta) {
|
|
14695
14791
|
this.added[id] = nextDelta;
|
|
14696
14792
|
} else {
|
|
14697
|
-
|
|
14793
|
+
const mergedDelta = mergeBoundElements(prevDelta, nextDelta);
|
|
14794
|
+
delete this.removed[id];
|
|
14795
|
+
delete this.updated[id];
|
|
14796
|
+
this.added[id] = Delta.merge(prevDelta, nextDelta, mergedDelta);
|
|
14698
14797
|
}
|
|
14699
14798
|
}
|
|
14700
14799
|
for (const [id, nextDelta] of Object.entries(removed)) {
|
|
14701
|
-
const prevDelta = this.removed[id];
|
|
14800
|
+
const prevDelta = this.added[id] ?? this.removed[id] ?? this.updated[id];
|
|
14702
14801
|
if (!prevDelta) {
|
|
14703
14802
|
this.removed[id] = nextDelta;
|
|
14704
14803
|
} else {
|
|
14705
|
-
|
|
14804
|
+
const mergedDelta = mergeBoundElements(prevDelta, nextDelta);
|
|
14805
|
+
delete this.added[id];
|
|
14806
|
+
delete this.updated[id];
|
|
14807
|
+
this.removed[id] = Delta.merge(prevDelta, nextDelta, mergedDelta);
|
|
14706
14808
|
}
|
|
14707
14809
|
}
|
|
14708
14810
|
for (const [id, nextDelta] of Object.entries(updated)) {
|
|
14709
|
-
const prevDelta = this.updated[id];
|
|
14811
|
+
const prevDelta = this.added[id] ?? this.removed[id] ?? this.updated[id];
|
|
14710
14812
|
if (!prevDelta) {
|
|
14711
14813
|
this.updated[id] = nextDelta;
|
|
14712
14814
|
} else {
|
|
14713
|
-
|
|
14815
|
+
const mergedDelta = mergeBoundElements(prevDelta, nextDelta);
|
|
14816
|
+
const updatedDelta = Delta.merge(prevDelta, nextDelta, mergedDelta);
|
|
14817
|
+
if (prevDelta === this.added[id]) {
|
|
14818
|
+
this.added[id] = updatedDelta;
|
|
14819
|
+
} else if (prevDelta === this.removed[id]) {
|
|
14820
|
+
this.removed[id] = updatedDelta;
|
|
14821
|
+
} else {
|
|
14822
|
+
this.updated[id] = updatedDelta;
|
|
14823
|
+
}
|
|
14714
14824
|
}
|
|
14715
14825
|
}
|
|
14826
|
+
if (isTestEnv() || isDevEnv()) {
|
|
14827
|
+
_ElementsDelta.validate(this, "added", _ElementsDelta.satisfiesAddition);
|
|
14828
|
+
_ElementsDelta.validate(this, "removed", _ElementsDelta.satisfiesRemoval);
|
|
14829
|
+
_ElementsDelta.validate(this, "updated", _ElementsDelta.satisfiesUpdate);
|
|
14830
|
+
}
|
|
14716
14831
|
return this;
|
|
14717
14832
|
}
|
|
14718
|
-
static applyDelta(element, delta,
|
|
14833
|
+
static applyDelta(element, delta, flags, options) {
|
|
14719
14834
|
const directlyApplicablePartial = {};
|
|
14720
14835
|
for (const key of Object.keys(delta.inserted)) {
|
|
14721
14836
|
if (key === "boundElements") {
|
|
14722
14837
|
continue;
|
|
14723
14838
|
}
|
|
14724
|
-
if (options
|
|
14839
|
+
if (options?.excludedProperties?.has(key)) {
|
|
14725
14840
|
continue;
|
|
14726
14841
|
}
|
|
14727
14842
|
const value = delta.inserted[key];
|
|
@@ -14749,7 +14864,7 @@ var _ElementsDelta = class _ElementsDelta {
|
|
|
14749
14864
|
if (!flags.containsZindexDifference) {
|
|
14750
14865
|
flags.containsZindexDifference = delta.deleted.index !== delta.inserted.index;
|
|
14751
14866
|
}
|
|
14752
|
-
return newElementWith(element, directlyApplicablePartial);
|
|
14867
|
+
return newElementWith(element, directlyApplicablePartial, true);
|
|
14753
14868
|
}
|
|
14754
14869
|
/**
|
|
14755
14870
|
* Check for visible changes regardless of whether they were removed, added or updated.
|
|
@@ -14774,25 +14889,32 @@ var _ElementsDelta = class _ElementsDelta {
|
|
|
14774
14889
|
*
|
|
14775
14890
|
* @returns all elements affected by the conflict resolution
|
|
14776
14891
|
*/
|
|
14777
|
-
resolveConflicts(prevElements, nextElements) {
|
|
14892
|
+
resolveConflicts(prevElements, nextElements, applyDirection = "forward") {
|
|
14778
14893
|
const nextAffectedElements = /* @__PURE__ */ new Map();
|
|
14779
14894
|
const updater = (element, updates) => {
|
|
14780
14895
|
const nextElement = nextElements.get(element.id);
|
|
14781
14896
|
if (!nextElement) {
|
|
14782
14897
|
return;
|
|
14783
14898
|
}
|
|
14899
|
+
const prevElement = prevElements.get(element.id);
|
|
14900
|
+
const nextVersion = applyDirection === "forward" ? nextElement.version + 1 : nextElement.version - 1;
|
|
14901
|
+
const elementUpdates = updates;
|
|
14784
14902
|
let affectedElement;
|
|
14785
|
-
if (
|
|
14903
|
+
if (prevElement === nextElement) {
|
|
14786
14904
|
affectedElement = newElementWith(
|
|
14787
14905
|
nextElement,
|
|
14788
|
-
|
|
14906
|
+
{
|
|
14907
|
+
...elementUpdates,
|
|
14908
|
+
version: nextVersion
|
|
14909
|
+
},
|
|
14910
|
+
true
|
|
14789
14911
|
);
|
|
14790
14912
|
} else {
|
|
14791
|
-
affectedElement = mutateElement(
|
|
14792
|
-
|
|
14793
|
-
|
|
14794
|
-
|
|
14795
|
-
);
|
|
14913
|
+
affectedElement = mutateElement(nextElement, nextElements, {
|
|
14914
|
+
...elementUpdates,
|
|
14915
|
+
// don't modify the version further, if it's already different
|
|
14916
|
+
version: prevElement?.version !== nextElement.version ? nextElement.version : nextVersion
|
|
14917
|
+
});
|
|
14796
14918
|
}
|
|
14797
14919
|
nextAffectedElements.set(affectedElement.id, affectedElement);
|
|
14798
14920
|
nextElements.set(affectedElement.id, affectedElement);
|
|
@@ -14855,6 +14977,20 @@ var _ElementsDelta = class _ElementsDelta {
|
|
|
14855
14977
|
);
|
|
14856
14978
|
BindableElement.rebindAffected(nextElements, nextElement(), updater);
|
|
14857
14979
|
}
|
|
14980
|
+
static redrawElements(nextElements, changedElements) {
|
|
14981
|
+
try {
|
|
14982
|
+
const tempScene = new Scene(nextElements, { skipValidation: true });
|
|
14983
|
+
_ElementsDelta.redrawTextBoundingBoxes(tempScene, changedElements);
|
|
14984
|
+
_ElementsDelta.redrawBoundArrows(tempScene, changedElements);
|
|
14985
|
+
} catch (e) {
|
|
14986
|
+
console.error(`Couldn't redraw elements`, e);
|
|
14987
|
+
if (isTestEnv() || isDevEnv()) {
|
|
14988
|
+
throw e;
|
|
14989
|
+
}
|
|
14990
|
+
} finally {
|
|
14991
|
+
return nextElements;
|
|
14992
|
+
}
|
|
14993
|
+
}
|
|
14858
14994
|
static redrawTextBoundingBoxes(scene, changed) {
|
|
14859
14995
|
const elements = scene.getNonDeletedElementsMap();
|
|
14860
14996
|
const boxesToRedraw = /* @__PURE__ */ new Map();
|
|
@@ -14970,7 +15106,11 @@ __publicField(_ElementsDelta, "satisfiesCommmonInvariants", ({
|
|
|
14970
15106
|
Number.isInteger(deleted.version) && Number.isInteger(inserted.version) && // versions should be positive, zero included
|
|
14971
15107
|
deleted.version >= 0 && inserted.version >= 0 && // versions should never be the same
|
|
14972
15108
|
deleted.version !== inserted.version));
|
|
14973
|
-
__publicField(_ElementsDelta, "
|
|
15109
|
+
__publicField(_ElementsDelta, "satisfiesUniqueInvariants", (elementsDelta, id) => {
|
|
15110
|
+
const { added, removed, updated } = elementsDelta;
|
|
15111
|
+
return [added[id], removed[id], updated[id]].filter(Boolean).length === 1;
|
|
15112
|
+
});
|
|
15113
|
+
__publicField(_ElementsDelta, "createApplier", (prevElements, nextElements, snapshot, flags, options) => (deltas) => {
|
|
14974
15114
|
const getElement = _ElementsDelta.createGetter(
|
|
14975
15115
|
nextElements,
|
|
14976
15116
|
snapshot,
|
|
@@ -14979,14 +15119,20 @@ __publicField(_ElementsDelta, "createApplier", (nextElements, snapshot, options,
|
|
|
14979
15119
|
return Object.entries(deltas).reduce((acc, [id, delta]) => {
|
|
14980
15120
|
const element = getElement(id, delta.inserted);
|
|
14981
15121
|
if (element) {
|
|
14982
|
-
const
|
|
15122
|
+
const nextElement = _ElementsDelta.applyDelta(
|
|
14983
15123
|
element,
|
|
14984
15124
|
delta,
|
|
14985
|
-
|
|
14986
|
-
|
|
15125
|
+
flags,
|
|
15126
|
+
options
|
|
14987
15127
|
);
|
|
14988
|
-
nextElements.set(
|
|
14989
|
-
acc.set(
|
|
15128
|
+
nextElements.set(nextElement.id, nextElement);
|
|
15129
|
+
acc.set(nextElement.id, nextElement);
|
|
15130
|
+
if (!flags.applyDirection) {
|
|
15131
|
+
const prevElement = prevElements.get(id);
|
|
15132
|
+
if (prevElement) {
|
|
15133
|
+
flags.applyDirection = prevElement.version > nextElement.version ? "backward" : "forward";
|
|
15134
|
+
}
|
|
15135
|
+
}
|
|
14990
15136
|
}
|
|
14991
15137
|
return acc;
|
|
14992
15138
|
}, /* @__PURE__ */ new Map());
|
|
@@ -23324,7 +23470,7 @@ var parseFileContents = async (blob) => {
|
|
|
23324
23470
|
let contents;
|
|
23325
23471
|
if (blob.type === MIME_TYPES.png) {
|
|
23326
23472
|
try {
|
|
23327
|
-
return await (await import("./data/image-
|
|
23473
|
+
return await (await import("./data/image-FLUMXXQ3.js")).decodePngMetadata(blob);
|
|
23328
23474
|
} catch (error) {
|
|
23329
23475
|
if (error.message === "INVALID") {
|
|
23330
23476
|
throw new ImageSceneDataError(
|
|
@@ -24190,4 +24336,4 @@ export {
|
|
|
24190
24336
|
createFile,
|
|
24191
24337
|
normalizeFile
|
|
24192
24338
|
};
|
|
24193
|
-
//# sourceMappingURL=chunk-
|
|
24339
|
+
//# sourceMappingURL=chunk-VF5WL5WV.js.map
|