y-mxgraph 0.3.0 → 0.3.1
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/README.md +4 -1
- package/README.zh-CN.md +2 -0
- package/binding/index.d.ts +19 -0
- package/binding/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/types/drawio.d.ts +5 -0
- package/types/drawio.d.ts.map +1 -1
- package/y-mxgraph.cjs.js +22 -5
- package/y-mxgraph.cjs.js.map +1 -1
- package/y-mxgraph.es.js +22 -5
- package/y-mxgraph.es.js.map +1 -1
- package/y-mxgraph.iife.js +22 -5
- package/y-mxgraph.iife.js.map +1 -1
- package/y-mxgraph.umd.js +22 -5
- package/y-mxgraph.umd.js.map +1 -1
package/README.md
CHANGED
|
@@ -42,7 +42,10 @@ App.main((app) => {
|
|
|
42
42
|
// `file.setData(xml)` is intentionally NOT called so draw.io does not
|
|
43
43
|
// mark the file as modified and pop up the "Save diagrams to:" dialog.
|
|
44
44
|
// Override via `applyFileData` if you need to sync `file.data` too.
|
|
45
|
-
|
|
45
|
+
//
|
|
46
|
+
// `disableBeforeUnload` (default: true) disables draw.io's native
|
|
47
|
+
// "All changes will be lost" dialog since Yjs handles persistence.
|
|
48
|
+
const binding = new Binding(file, { doc });
|
|
46
49
|
|
|
47
50
|
window.addEventListener('beforeunload', () => binding.destroy());
|
|
48
51
|
});
|
package/README.zh-CN.md
CHANGED
|
@@ -36,6 +36,8 @@ App.main((app) => {
|
|
|
36
36
|
app.currentFile.data = Binding.generateFileTemplate('diagram-0');
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
+
// `disableBeforeUnload`(默认 true)禁用 draw.io 的 "All changes will be lost" 弹窗,
|
|
40
|
+
// 因为 Yjs 已接管持久化。如需保留原生行为(如使用 File System Access API),设为 false。
|
|
39
41
|
const binding = new Binding(app.currentFile, { doc });
|
|
40
42
|
|
|
41
43
|
window.addEventListener('beforeunload', () => binding.destroy());
|
package/binding/index.d.ts
CHANGED
|
@@ -31,6 +31,18 @@ export interface BindDrawioFileOptions {
|
|
|
31
31
|
* `file.save()`),可提供自定义实现。
|
|
32
32
|
*/
|
|
33
33
|
applyFileData?: (file: DrawioFile, xml: string) => void;
|
|
34
|
+
/**
|
|
35
|
+
* 是否禁用 draw.io 的 beforeUnload 弹窗,默认 `true`。
|
|
36
|
+
*
|
|
37
|
+
* Yjs 接管持久化后,draw.io 的原生保存状态不再有意义。
|
|
38
|
+
* 但 draw.io 内部会在特定条件下(如 LocalFile 无 fileHandle、
|
|
39
|
+
* 图表非空等)弹出 "All changes will be lost" 或
|
|
40
|
+
* "Ensure your data has been saved" 提示。
|
|
41
|
+
*
|
|
42
|
+
* 设为 `true` 可彻底禁用这些弹窗,适合纯 Yjs 协作场景。
|
|
43
|
+
* 若需要保留原生行为(如使用 File System Access API),设为 `false`。
|
|
44
|
+
*/
|
|
45
|
+
disableBeforeUnload?: boolean;
|
|
34
46
|
}
|
|
35
47
|
/**
|
|
36
48
|
* Y-MXGraph 绑定类,管理 draw.io 文件与 Y.Doc 的双向同步
|
|
@@ -59,9 +71,16 @@ export declare class Binding {
|
|
|
59
71
|
private cleanupUndoManager?;
|
|
60
72
|
/** 初始内容策略 */
|
|
61
73
|
private initialContentStrategy;
|
|
74
|
+
/** draw.io UI 引用,用于重置状态和获取 currentFile */
|
|
75
|
+
private ui;
|
|
62
76
|
/** replace 策略下,构造时 doc 为空,现在 doc 有数据时需要强制替换 */
|
|
63
77
|
private get shouldReplaceWhenDocHasData();
|
|
64
78
|
constructor(file: DrawioFile, options: BindDrawioFileOptions);
|
|
79
|
+
/**
|
|
80
|
+
* 重置 editor 和 file 的 modified 状态及状态栏。
|
|
81
|
+
* Yjs 接管持久化后,draw.io 的原生保存状态不再有意义。
|
|
82
|
+
*/
|
|
83
|
+
private resetEditorStatus;
|
|
65
84
|
/**
|
|
66
85
|
* 销毁绑定,解除所有监听器
|
|
67
86
|
* @param deep - 是否深度清理(包括 awareness/undoManager),默认 false
|
package/binding/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/binding/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAiBvD,OAAO,KAAK,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/binding/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAiBvD,OAAO,KAAK,EAAE,UAAU,EAA0B,MAAM,iBAAiB,CAAC;AAE1E;;;;;GAKG;AACH,MAAM,MAAM,sBAAsB,GAC9B,SAAS,GACT,cAAc,GACd,cAAc,CAAC;AAEnB,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC;IACX,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,WAAW,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,MAAM,CAAC,EACH,OAAO,GACP;QACE,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IACN;;OAEG;IACH,cAAc,CAAC,EAAE,sBAAsB,CAAC;IACxC;;;;;;;;OAQG;IACH,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACxD;;;;;;;;;;OAUG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AA0KD;;;;;;;GAOG;AACH,qBAAa,OAAO;IAClB,wBAAwB;IACxB,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC;IACpB,6BAA6B;IAC7B,OAAO,CAAC,YAAY,CAAe;IACnC,sBAAsB;IACtB,OAAO,CAAC,kBAAkB,CAAS;IACnC,4BAA4B;IAC5B,OAAO,CAAC,cAAc,CAAS;IAC/B,2BAA2B;IAC3B,OAAO,CAAC,UAAU,CAAa;IAC/B,oBAAoB;IACpB,OAAO,CAAC,WAAW,CAKT;IACV,gCAAgC;IAChC,OAAO,CAAC,mBAAmB,CAAC,CAAa;IACzC,yBAAyB;IACzB,OAAO,CAAC,kBAAkB,CAAC,CAAa;IACxC,aAAa;IACb,OAAO,CAAC,sBAAsB,CAAyB;IACvD,0CAA0C;IAC1C,OAAO,CAAC,EAAE,CAAyB;IAEnC,+CAA+C;IAC/C,OAAO,KAAK,2BAA2B,GAEtC;gBAEW,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,qBAAqB;IAoJ5D;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAOzB;;;OAGG;IACH,OAAO,CAAC,IAAI,UAAQ,GAAG,IAAI;IAS3B;;;;;;;;;;;;;;OAcG;IACH,MAAM,CAAC,oBAAoB,CAAC,SAAS,SAAc,GAAG,MAAM;IAa5D;;;OAGG;IACH,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,qBAAqB,GAAG,OAAO;CAGzE"}
|
package/package.json
CHANGED
package/types/drawio.d.ts
CHANGED
|
@@ -41,6 +41,8 @@ export interface MxGraph {
|
|
|
41
41
|
/** draw.io 编辑器 */
|
|
42
42
|
export interface DrawioEditor {
|
|
43
43
|
graph: MxGraph;
|
|
44
|
+
setStatus(status: string): void;
|
|
45
|
+
setModified(modified: boolean): void;
|
|
44
46
|
undoManager?: {
|
|
45
47
|
eventListeners?: unknown[];
|
|
46
48
|
undoListener?: (...args: unknown[]) => void;
|
|
@@ -51,6 +53,7 @@ export interface DrawioEditor {
|
|
|
51
53
|
/** draw.io UI */
|
|
52
54
|
export interface DrawioUi {
|
|
53
55
|
editor: DrawioEditor;
|
|
56
|
+
currentFile: DrawioFile | null;
|
|
54
57
|
currentPage?: DrawioPage | null;
|
|
55
58
|
diagramContainer: HTMLElement;
|
|
56
59
|
pages: unknown[];
|
|
@@ -75,6 +78,8 @@ export interface DrawioFile {
|
|
|
75
78
|
patch(patches: unknown[]): void;
|
|
76
79
|
/** 仅赋值 this.data = xml,不触发 UI 重绘 */
|
|
77
80
|
setData(data: string): void;
|
|
81
|
+
isModified(): boolean;
|
|
82
|
+
setModified(modified: boolean): void;
|
|
78
83
|
}
|
|
79
84
|
/** draw.io App(demo 中通过 iframe 访问) */
|
|
80
85
|
export interface DrawioApp {
|
package/types/drawio.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drawio.d.ts","sourceRoot":"","sources":["../../src/types/drawio.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"drawio.d.ts","sourceRoot":"","sources":["../../src/types/drawio.ts"],"names":[],"mappings":"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"}
|
package/y-mxgraph.cjs.js
CHANGED
|
@@ -1569,6 +1569,7 @@ class Binding {
|
|
|
1569
1569
|
constructor(file, options) {
|
|
1570
1570
|
this.suppressLocalApply = false;
|
|
1571
1571
|
this.docInitialized = false;
|
|
1572
|
+
this.ui = null;
|
|
1572
1573
|
const {
|
|
1573
1574
|
doc,
|
|
1574
1575
|
awareness,
|
|
@@ -1576,13 +1577,18 @@ class Binding {
|
|
|
1576
1577
|
mouseMoveThrottle,
|
|
1577
1578
|
cursor,
|
|
1578
1579
|
initialContent = "replace",
|
|
1579
|
-
applyFileData = defaultApplyFileData
|
|
1580
|
+
applyFileData = defaultApplyFileData,
|
|
1581
|
+
disableBeforeUnload = true
|
|
1580
1582
|
} = options;
|
|
1581
1583
|
this.doc = doc;
|
|
1582
1584
|
this.initialContentStrategy = initialContent;
|
|
1583
1585
|
const ui = file.getUi();
|
|
1584
1586
|
const graph = ui.editor.graph;
|
|
1585
1587
|
this.mxGraphModel = graph.model;
|
|
1588
|
+
this.ui = ui;
|
|
1589
|
+
if (disableBeforeUnload) {
|
|
1590
|
+
ui.onBeforeUnload = () => null;
|
|
1591
|
+
}
|
|
1586
1592
|
this.suppressLocalApply = true;
|
|
1587
1593
|
try {
|
|
1588
1594
|
this.docInitialized = reconcileInitialContent(
|
|
@@ -1617,6 +1623,7 @@ class Binding {
|
|
|
1617
1623
|
}
|
|
1618
1624
|
file.setShadowPages(file.ui.clonePages(file.ui.pages));
|
|
1619
1625
|
applyFilePatch(doc, patch, { origin: LOCAL_ORIGIN });
|
|
1626
|
+
this.resetEditorStatus();
|
|
1620
1627
|
};
|
|
1621
1628
|
this.mxGraphModel.addListener("change", this.mxListener);
|
|
1622
1629
|
this.docObserver = (events, transaction) => {
|
|
@@ -1635,10 +1642,7 @@ class Binding {
|
|
|
1635
1642
|
applyFileData(file, xml);
|
|
1636
1643
|
file.setShadowPages(file.ui.clonePages(file.ui.pages));
|
|
1637
1644
|
initDocSnapshot(doc, false);
|
|
1638
|
-
|
|
1639
|
-
const editor = ui2.editor;
|
|
1640
|
-
editor.setStatus("");
|
|
1641
|
-
editor.setModified(false);
|
|
1645
|
+
this.resetEditorStatus();
|
|
1642
1646
|
} finally {
|
|
1643
1647
|
this.suppressLocalApply = false;
|
|
1644
1648
|
}
|
|
@@ -1657,6 +1661,7 @@ class Binding {
|
|
|
1657
1661
|
try {
|
|
1658
1662
|
file.patch([patch]);
|
|
1659
1663
|
file.setShadowPages(file.ui.clonePages(file.ui.pages));
|
|
1664
|
+
this.resetEditorStatus();
|
|
1660
1665
|
} finally {
|
|
1661
1666
|
this.suppressLocalApply = false;
|
|
1662
1667
|
}
|
|
@@ -1678,6 +1683,18 @@ class Binding {
|
|
|
1678
1683
|
get shouldReplaceWhenDocHasData() {
|
|
1679
1684
|
return this.initialContentStrategy === "replace" && !this.docInitialized;
|
|
1680
1685
|
}
|
|
1686
|
+
/**
|
|
1687
|
+
* 重置 editor 和 file 的 modified 状态及状态栏。
|
|
1688
|
+
* Yjs 接管持久化后,draw.io 的原生保存状态不再有意义。
|
|
1689
|
+
*/
|
|
1690
|
+
resetEditorStatus() {
|
|
1691
|
+
var _a;
|
|
1692
|
+
if (!this.ui)
|
|
1693
|
+
return;
|
|
1694
|
+
this.ui.editor.setModified(false);
|
|
1695
|
+
this.ui.editor.setStatus("");
|
|
1696
|
+
(_a = this.ui.currentFile) == null ? void 0 : _a.setModified(false);
|
|
1697
|
+
}
|
|
1681
1698
|
/**
|
|
1682
1699
|
* 销毁绑定,解除所有监听器
|
|
1683
1700
|
* @param deep - 是否深度清理(包括 awareness/undoManager),默认 false
|