y-mxgraph 0.8.2 → 0.8.4
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/binding/patch.d.ts +2 -0
- package/binding/patch.d.ts.map +1 -1
- package/iframe-bridge/provider.cjs +42 -21
- package/iframe-bridge/provider.cjs.map +1 -1
- package/iframe-bridge/provider.js +42 -21
- package/iframe-bridge/provider.js.map +1 -1
- package/iframe-bridge/server.cjs +9 -11
- package/iframe-bridge/server.cjs.map +1 -1
- package/iframe-bridge/server.js +9 -11
- package/iframe-bridge/server.js.map +1 -1
- package/{index-BtfQrQYT.js → index-BhW4J2Zt.js} +21 -10
- package/index-BhW4J2Zt.js.map +1 -0
- package/{index-CaG-EdEK.cjs → index-D3Hk2QcW.cjs} +18 -7
- package/index-D3Hk2QcW.cjs.map +1 -0
- package/models/diagram.d.ts +1 -1
- package/models/mxGraphModel.d.ts +4 -1
- package/models/mxGraphModel.d.ts.map +1 -1
- package/models/view.d.ts +12 -0
- package/models/view.d.ts.map +1 -0
- package/package.json +1 -1
- package/transform.cjs +1 -1
- package/transform.js +1 -1
- package/y-mxgraph.cjs +140 -27
- package/y-mxgraph.cjs.map +1 -1
- package/y-mxgraph.js +140 -27
- package/y-mxgraph.js.map +1 -1
- package/index-BtfQrQYT.js.map +0 -1
- package/index-CaG-EdEK.cjs.map +0 -1
package/y-mxgraph.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const transform = require("./index-
|
|
3
|
+
const transform = require("./index-D3Hk2QcW.cjs");
|
|
4
4
|
const Y = require("yjs");
|
|
5
5
|
const colord = require("colord");
|
|
6
6
|
function _interopNamespaceDefault(e) {
|
|
@@ -20,6 +20,54 @@ function _interopNamespaceDefault(e) {
|
|
|
20
20
|
return Object.freeze(n);
|
|
21
21
|
}
|
|
22
22
|
const Y__namespace = /* @__PURE__ */ _interopNamespaceDefault(Y);
|
|
23
|
+
function patchValueToXmlAttr(value) {
|
|
24
|
+
try {
|
|
25
|
+
const parsed = JSON.parse(value);
|
|
26
|
+
if (typeof parsed === "string") return parsed;
|
|
27
|
+
} catch (e) {
|
|
28
|
+
}
|
|
29
|
+
return value;
|
|
30
|
+
}
|
|
31
|
+
function xmlAttrToPatchValue(value) {
|
|
32
|
+
return JSON.stringify(value);
|
|
33
|
+
}
|
|
34
|
+
function getBackground(diagram) {
|
|
35
|
+
const gm = transform.getMap(diagram, transform.key);
|
|
36
|
+
if (!gm) return void 0;
|
|
37
|
+
const bg = gm.get(transform.backgroundKey);
|
|
38
|
+
return bg || void 0;
|
|
39
|
+
}
|
|
40
|
+
function setBackground(diagram, background) {
|
|
41
|
+
const gm = transform.getMap(diagram, transform.key);
|
|
42
|
+
if (!gm) return;
|
|
43
|
+
if (background != null && background !== "") {
|
|
44
|
+
gm.set(transform.backgroundKey, background);
|
|
45
|
+
} else {
|
|
46
|
+
gm.delete(transform.backgroundKey);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
function diffBackgroundViewPatch(prev, curr) {
|
|
50
|
+
const pv = prev != null ? prev : "";
|
|
51
|
+
const cv = curr != null ? curr : "";
|
|
52
|
+
if (pv === cv) return void 0;
|
|
53
|
+
return {
|
|
54
|
+
background: cv === "" ? '""' : xmlAttrToPatchValue(cv)
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
function applyViewPatch(diagram, viewPatch) {
|
|
58
|
+
if (!("background" in viewPatch)) return;
|
|
59
|
+
const raw = viewPatch.background;
|
|
60
|
+
if (raw === null || raw === void 0) {
|
|
61
|
+
setBackground(diagram, void 0);
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
const str = String(raw);
|
|
65
|
+
if (str === "" || str === '""' || str === "null") {
|
|
66
|
+
setBackground(diagram, void 0);
|
|
67
|
+
} else {
|
|
68
|
+
setBackground(diagram, patchValueToXmlAttr(str));
|
|
69
|
+
}
|
|
70
|
+
}
|
|
23
71
|
var __defProp$1 = Object.defineProperty;
|
|
24
72
|
var __defProps = Object.defineProperties;
|
|
25
73
|
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
@@ -72,11 +120,39 @@ function ensureUniqueOrder(orderArr) {
|
|
|
72
120
|
dupIdx.sort((a, b) => b - a).forEach((idx) => orderArr.delete(idx, 1));
|
|
73
121
|
}
|
|
74
122
|
}
|
|
123
|
+
function pruneEmptyPatch(patch) {
|
|
124
|
+
var _a, _b;
|
|
125
|
+
if (!patch[DIFF_UPDATE]) return patch;
|
|
126
|
+
for (const id of Object.keys(patch[DIFF_UPDATE])) {
|
|
127
|
+
const u = patch[DIFF_UPDATE][id];
|
|
128
|
+
const cells = u.cells;
|
|
129
|
+
if (cells == null ? void 0 : cells[DIFF_UPDATE]) {
|
|
130
|
+
for (const cid of Object.keys(cells[DIFF_UPDATE])) {
|
|
131
|
+
if (Object.keys(cells[DIFF_UPDATE][cid]).length === 0) {
|
|
132
|
+
delete cells[DIFF_UPDATE][cid];
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
if (Object.keys(cells[DIFF_UPDATE]).length === 0) {
|
|
136
|
+
delete cells[DIFF_UPDATE];
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
if (cells && !((_a = cells[DIFF_REMOVE]) == null ? void 0 : _a.length) && !((_b = cells[DIFF_INSERT]) == null ? void 0 : _b.length) && (!cells[DIFF_UPDATE] || Object.keys(cells[DIFF_UPDATE]).length === 0)) {
|
|
140
|
+
delete u.cells;
|
|
141
|
+
}
|
|
142
|
+
if (Object.keys(u).length === 0) {
|
|
143
|
+
delete patch[DIFF_UPDATE][id];
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
if (Object.keys(patch[DIFF_UPDATE]).length === 0) {
|
|
147
|
+
delete patch[DIFF_UPDATE];
|
|
148
|
+
}
|
|
149
|
+
return patch;
|
|
150
|
+
}
|
|
75
151
|
function applyFilePatch(doc, patch, options) {
|
|
76
152
|
doc.transact(() => {
|
|
77
|
-
const mxfile = doc.getMap(transform.key);
|
|
153
|
+
const mxfile = doc.getMap(transform.key$1);
|
|
78
154
|
if (patch[DIFF_REMOVE]) {
|
|
79
|
-
const diagramsMap = mxfile.get(transform.key$
|
|
155
|
+
const diagramsMap = mxfile.get(transform.key$2);
|
|
80
156
|
const orderArr = mxfile.get(
|
|
81
157
|
transform.diagramOrderKey
|
|
82
158
|
);
|
|
@@ -90,7 +166,7 @@ function applyFilePatch(doc, patch, options) {
|
|
|
90
166
|
}
|
|
91
167
|
}
|
|
92
168
|
if (patch[DIFF_INSERT]) {
|
|
93
|
-
const diagramsMap = mxfile.get(transform.key$
|
|
169
|
+
const diagramsMap = mxfile.get(transform.key$2);
|
|
94
170
|
const orderArr = mxfile.get(
|
|
95
171
|
transform.diagramOrderKey
|
|
96
172
|
);
|
|
@@ -161,7 +237,7 @@ function applyFilePatch(doc, patch, options) {
|
|
|
161
237
|
if (patch[DIFF_UPDATE]) {
|
|
162
238
|
Object.keys(patch[DIFF_UPDATE]).forEach((id) => {
|
|
163
239
|
const diagramsMap = mxfile.get(
|
|
164
|
-
transform.key$
|
|
240
|
+
transform.key$2
|
|
165
241
|
);
|
|
166
242
|
const diagram = diagramsMap.get(id);
|
|
167
243
|
if (diagram) {
|
|
@@ -172,8 +248,11 @@ function applyFilePatch(doc, patch, options) {
|
|
|
172
248
|
update.name || ""
|
|
173
249
|
);
|
|
174
250
|
}
|
|
251
|
+
if (update.view && typeof update.view === "object") {
|
|
252
|
+
applyViewPatch(diagram, update.view);
|
|
253
|
+
}
|
|
175
254
|
if (update.cells) {
|
|
176
|
-
const yMxGraphModel = diagram.get(transform.key
|
|
255
|
+
const yMxGraphModel = diagram.get(transform.key);
|
|
177
256
|
if (!yMxGraphModel) return;
|
|
178
257
|
const cellsMap = yMxGraphModel.get(transform.key$3);
|
|
179
258
|
const orderArr = yMxGraphModel.get(transform.mxCellOrderKey);
|
|
@@ -308,8 +387,8 @@ function applyFilePatch(doc, patch, options) {
|
|
|
308
387
|
}
|
|
309
388
|
function initDocSnapshot(doc, resetSnapshot = false) {
|
|
310
389
|
try {
|
|
311
|
-
const mxfile = doc.getMap(transform.key);
|
|
312
|
-
const diagramsMap = mxfile.get(transform.key$
|
|
390
|
+
const mxfile = doc.getMap(transform.key$1);
|
|
391
|
+
const diagramsMap = mxfile.get(transform.key$2);
|
|
313
392
|
const orderArr = mxfile.get(transform.diagramOrderKey);
|
|
314
393
|
const orderIds = orderArr ? orderArr.toArray() : [];
|
|
315
394
|
const allDiagramIds = orderIds.length > 0 ? orderIds : diagramsMap ? Array.from(diagramsMap.keys()) : [];
|
|
@@ -317,13 +396,14 @@ function initDocSnapshot(doc, resetSnapshot = false) {
|
|
|
317
396
|
const snap = {
|
|
318
397
|
diagramOrder,
|
|
319
398
|
cellsOrder: /* @__PURE__ */ new Map(),
|
|
320
|
-
cellAttrs: /* @__PURE__ */ new Map()
|
|
399
|
+
cellAttrs: /* @__PURE__ */ new Map(),
|
|
400
|
+
diagramBackground: /* @__PURE__ */ new Map()
|
|
321
401
|
};
|
|
322
402
|
const diagrams = diagramOrder.map((id) => diagramsMap.get(id)).filter((d) => !!d);
|
|
323
403
|
for (const d of diagrams) {
|
|
324
404
|
const did = d.get("id") || "";
|
|
325
405
|
if (!did) continue;
|
|
326
|
-
const gm = d.get(transform.key
|
|
406
|
+
const gm = d.get(transform.key);
|
|
327
407
|
if (gm) {
|
|
328
408
|
const order = gm.get(transform.mxCellOrderKey);
|
|
329
409
|
const ids = order ? order.toArray().slice() : [];
|
|
@@ -346,6 +426,7 @@ function initDocSnapshot(doc, resetSnapshot = false) {
|
|
|
346
426
|
snap.cellsOrder.set(did, []);
|
|
347
427
|
snap.cellAttrs.set(did, /* @__PURE__ */ new Map());
|
|
348
428
|
}
|
|
429
|
+
snap.diagramBackground.set(did, getBackground(d));
|
|
349
430
|
}
|
|
350
431
|
docSnapshots.set(doc, snap);
|
|
351
432
|
} catch (e) {
|
|
@@ -358,21 +439,23 @@ function generatePatch(events, explicitDoc) {
|
|
|
358
439
|
const doc = (_b = (_a = events[0]) == null ? void 0 : _a.transaction) == null ? void 0 : _b.doc;
|
|
359
440
|
if (!doc) return patch;
|
|
360
441
|
if (!events || events.length === 0) return patch;
|
|
361
|
-
const mxfile = doc.getMap(transform.key);
|
|
362
|
-
const diagramsMap = mxfile.get(transform.key$
|
|
442
|
+
const mxfile = doc.getMap(transform.key$1);
|
|
443
|
+
const diagramsMap = mxfile.get(transform.key$2);
|
|
363
444
|
const orderArr = mxfile.get(transform.diagramOrderKey);
|
|
364
445
|
let snap = docSnapshots.get(doc);
|
|
365
446
|
if (!snap) {
|
|
366
447
|
snap = {
|
|
367
448
|
diagramOrder: null,
|
|
368
449
|
cellsOrder: /* @__PURE__ */ new Map(),
|
|
369
|
-
cellAttrs: /* @__PURE__ */ new Map()
|
|
450
|
+
cellAttrs: /* @__PURE__ */ new Map(),
|
|
451
|
+
diagramBackground: /* @__PURE__ */ new Map()
|
|
370
452
|
};
|
|
371
453
|
docSnapshots.set(doc, snap);
|
|
372
454
|
}
|
|
373
455
|
const prevDiagramOrder = snap.diagramOrder;
|
|
374
456
|
const prevCellsOrder = snap.cellsOrder;
|
|
375
457
|
const prevCellsAttrs = snap.cellAttrs;
|
|
458
|
+
const prevDiagramBackground = snap.diagramBackground;
|
|
376
459
|
const ensureUpdate = (diagramId) => {
|
|
377
460
|
patch[DIFF_UPDATE] = patch[DIFF_UPDATE] || {};
|
|
378
461
|
patch[DIFF_UPDATE][diagramId] = patch[DIFF_UPDATE][diagramId] || {};
|
|
@@ -388,10 +471,12 @@ function generatePatch(events, explicitDoc) {
|
|
|
388
471
|
const diagramsList = currDiagramOrder.map((id) => diagramsMap.get(id)).filter((d) => !!d);
|
|
389
472
|
const currCellsOrder = /* @__PURE__ */ new Map();
|
|
390
473
|
const cellAttrMap = /* @__PURE__ */ new Map();
|
|
474
|
+
const currDiagramBackground = /* @__PURE__ */ new Map();
|
|
391
475
|
for (const d of diagramsList) {
|
|
392
476
|
const did = d.get("id") || "";
|
|
477
|
+
currDiagramBackground.set(did, getBackground(d));
|
|
393
478
|
const attrs = /* @__PURE__ */ new Map();
|
|
394
|
-
const gm = d.get(transform.key
|
|
479
|
+
const gm = d.get(transform.key);
|
|
395
480
|
if (gm) {
|
|
396
481
|
const cellsMap = gm.get(transform.key$3);
|
|
397
482
|
const orderArr2 = gm.get(transform.mxCellOrderKey);
|
|
@@ -511,19 +596,35 @@ function generatePatch(events, explicitDoc) {
|
|
|
511
596
|
if (!(target instanceof Y__namespace.Map)) continue;
|
|
512
597
|
if (!diagramSet.has(target)) continue;
|
|
513
598
|
const changed = ev.keysChanged || /* @__PURE__ */ new Set();
|
|
514
|
-
if (!changed
|
|
599
|
+
if (!(changed == null ? void 0 : changed.has("name"))) continue;
|
|
515
600
|
const did = target.get("id") || "";
|
|
516
601
|
if (!did || insertedDiagramIdGlobal.has(did)) continue;
|
|
517
|
-
|
|
518
|
-
u.name = target.get("name") || "";
|
|
602
|
+
ensureUpdate(did).name = target.get("name") || "";
|
|
519
603
|
}
|
|
520
604
|
}
|
|
521
605
|
if (!prevDiagramOrder) {
|
|
522
606
|
for (const d of diagramsList) {
|
|
523
607
|
const did = d.get("id") || "";
|
|
524
608
|
if (!did) continue;
|
|
525
|
-
|
|
526
|
-
|
|
609
|
+
ensureUpdate(did).name = d.get("name") || "";
|
|
610
|
+
}
|
|
611
|
+
}
|
|
612
|
+
for (const ev of events) {
|
|
613
|
+
const target = ev.target;
|
|
614
|
+
if (!(target instanceof Y__namespace.Map)) continue;
|
|
615
|
+
for (const d of diagramsList) {
|
|
616
|
+
const gm = d.get(transform.key);
|
|
617
|
+
if (gm !== target) continue;
|
|
618
|
+
const changed = ev.keysChanged || /* @__PURE__ */ new Set();
|
|
619
|
+
if (!changed.has(transform.backgroundKey)) continue;
|
|
620
|
+
const did = d.get("id") || "";
|
|
621
|
+
if (!did || insertedDiagramIdGlobal.has(did)) continue;
|
|
622
|
+
const viewDiff = diffBackgroundViewPatch(
|
|
623
|
+
prevDiagramBackground.get(did),
|
|
624
|
+
getBackground(d)
|
|
625
|
+
);
|
|
626
|
+
if (viewDiff) ensureUpdate(did).view = viewDiff;
|
|
627
|
+
break;
|
|
527
628
|
}
|
|
528
629
|
}
|
|
529
630
|
for (const ev of events) {
|
|
@@ -552,6 +653,14 @@ function generatePatch(events, explicitDoc) {
|
|
|
552
653
|
}
|
|
553
654
|
}
|
|
554
655
|
if (prevDiagramOrder) {
|
|
656
|
+
for (const [did, currBg] of currDiagramBackground.entries()) {
|
|
657
|
+
if (insertedDiagramIdGlobal.has(did)) continue;
|
|
658
|
+
const viewDiff = diffBackgroundViewPatch(
|
|
659
|
+
prevDiagramBackground.get(did),
|
|
660
|
+
currBg
|
|
661
|
+
);
|
|
662
|
+
if (viewDiff) ensureUpdate(did).view = viewDiff;
|
|
663
|
+
}
|
|
555
664
|
for (const [did, currAttrsMap] of cellAttrMap.entries()) {
|
|
556
665
|
const prevAttrsMap = prevCellsAttrs.get(did) || /* @__PURE__ */ new Map();
|
|
557
666
|
const cellsPatch = ensureCellSection(did);
|
|
@@ -599,8 +708,12 @@ function generatePatch(events, explicitDoc) {
|
|
|
599
708
|
}
|
|
600
709
|
snap.cellsOrder = newCellsOrder;
|
|
601
710
|
snap.cellAttrs = newCellsAttrs;
|
|
711
|
+
snap.diagramBackground = /* @__PURE__ */ new Map();
|
|
712
|
+
for (const [did, bg] of currDiagramBackground.entries()) {
|
|
713
|
+
snap.diagramBackground.set(did, bg);
|
|
714
|
+
}
|
|
602
715
|
docSnapshots.set(doc, snap);
|
|
603
|
-
return patch;
|
|
716
|
+
return pruneEmptyPatch(patch);
|
|
604
717
|
}
|
|
605
718
|
const LOCAL_ORIGIN = {};
|
|
606
719
|
function createMxEventObject(name, props) {
|
|
@@ -1273,8 +1386,8 @@ function mergeFileIntoDoc(doc, fileXml, strategy) {
|
|
|
1273
1386
|
);
|
|
1274
1387
|
return false;
|
|
1275
1388
|
}
|
|
1276
|
-
const mxfileMap = doc.getMap(transform.key);
|
|
1277
|
-
const diagramMap = mxfileMap.get(transform.key$
|
|
1389
|
+
const mxfileMap = doc.getMap(transform.key$1);
|
|
1390
|
+
const diagramMap = mxfileMap.get(transform.key$2);
|
|
1278
1391
|
const diagramOrder = mxfileMap.get(transform.diagramOrderKey);
|
|
1279
1392
|
if (!diagramMap || !diagramOrder) {
|
|
1280
1393
|
console.warn("[y-mxgraph] 合并失败,doc 结构不完整,回退到 replace");
|
|
@@ -1301,7 +1414,7 @@ function mergeFileIntoDoc(doc, fileXml, strategy) {
|
|
|
1301
1414
|
return true;
|
|
1302
1415
|
}
|
|
1303
1416
|
function reconcileInitialContent(doc, file, strategy, applyFileData) {
|
|
1304
|
-
const mxfileMap = doc.getMap(transform.key);
|
|
1417
|
+
const mxfileMap = doc.getMap(transform.key$1);
|
|
1305
1418
|
const docHasData = mxfileMap.size > 0;
|
|
1306
1419
|
const fileHasAnyData = !!file.data;
|
|
1307
1420
|
const fileHasDiagrams = fileHasAnyData && file.data.includes("<diagram");
|
|
@@ -1432,8 +1545,8 @@ class Binding {
|
|
|
1432
1545
|
return;
|
|
1433
1546
|
}
|
|
1434
1547
|
if (this.shouldReplaceWhenDocHasData && !transaction.local) {
|
|
1435
|
-
const mxfileMap = doc.getMap(transform.key);
|
|
1436
|
-
const diagramMap = mxfileMap.get(transform.key$
|
|
1548
|
+
const mxfileMap = doc.getMap(transform.key$1);
|
|
1549
|
+
const diagramMap = mxfileMap.get(transform.key$2);
|
|
1437
1550
|
if (diagramMap && diagramMap.size > 0) {
|
|
1438
1551
|
const xml = transform.ydoc2xml(doc);
|
|
1439
1552
|
if (xml && xml.includes("<diagram")) {
|
|
@@ -1465,7 +1578,7 @@ class Binding {
|
|
|
1465
1578
|
this.suppressLocalApply = false;
|
|
1466
1579
|
}
|
|
1467
1580
|
};
|
|
1468
|
-
doc.getMap(transform.key).observeDeep(this.docObserver);
|
|
1581
|
+
doc.getMap(transform.key$1).observeDeep(this.docObserver);
|
|
1469
1582
|
if (awareness) {
|
|
1470
1583
|
this.cleanupCollaborator = bindCollaborator(file, {
|
|
1471
1584
|
awareness,
|
|
@@ -1500,7 +1613,7 @@ class Binding {
|
|
|
1500
1613
|
destroy(deep = false) {
|
|
1501
1614
|
var _a, _b;
|
|
1502
1615
|
this.mxGraphModel.removeListener("change", this.mxListener);
|
|
1503
|
-
this.doc.getMap(transform.key).unobserveDeep(this.docObserver);
|
|
1616
|
+
this.doc.getMap(transform.key$1).unobserveDeep(this.docObserver);
|
|
1504
1617
|
if (deep) {
|
|
1505
1618
|
(_a = this.cleanupCollaborator) == null ? void 0 : _a.call(this);
|
|
1506
1619
|
(_b = this.cleanupUndoManager) == null ? void 0 : _b.call(this);
|