@multiplatform.one/node-graph 7.7.4 → 7.8.0
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/cjs/model/history.cjs +8 -4
- package/dist/cjs/model/history.native.js +8 -4
- package/dist/cjs/model/history.native.js.map +1 -1
- package/dist/cjs/native/GraphToolbar.cjs +21 -7
- package/dist/cjs/native/GraphToolbar.native.js +21 -7
- package/dist/cjs/native/GraphToolbar.native.js.map +1 -1
- package/dist/cjs/react-flow/useGraphController.cjs +9 -17
- package/dist/cjs/react-flow/useGraphController.native.js +10 -18
- package/dist/cjs/react-flow/useGraphController.native.js.map +1 -1
- package/dist/esm/model/history.mjs +8 -4
- package/dist/esm/model/history.mjs.map +1 -1
- package/dist/esm/model/history.native.js +8 -4
- package/dist/esm/model/history.native.js.map +1 -1
- package/dist/esm/native/GraphToolbar.mjs +18 -4
- package/dist/esm/native/GraphToolbar.mjs.map +1 -1
- package/dist/esm/native/GraphToolbar.native.js +18 -4
- package/dist/esm/native/GraphToolbar.native.js.map +1 -1
- package/dist/esm/react-flow/useGraphController.mjs +9 -17
- package/dist/esm/react-flow/useGraphController.mjs.map +1 -1
- package/dist/esm/react-flow/useGraphController.native.js +10 -18
- package/dist/esm/react-flow/useGraphController.native.js.map +1 -1
- package/dist/jsx/model/history.mjs +8 -4
- package/dist/jsx/model/history.mjs.map +1 -1
- package/dist/jsx/model/history.native.js +8 -4
- package/dist/jsx/model/history.native.js.map +1 -1
- package/dist/jsx/native/GraphToolbar.mjs +18 -4
- package/dist/jsx/native/GraphToolbar.mjs.map +1 -1
- package/dist/jsx/native/GraphToolbar.native.js +21 -7
- package/dist/jsx/native/GraphToolbar.native.js.map +1 -1
- package/dist/jsx/react-flow/useGraphController.mjs +9 -17
- package/dist/jsx/react-flow/useGraphController.mjs.map +1 -1
- package/dist/jsx/react-flow/useGraphController.native.js +10 -18
- package/dist/jsx/react-flow/useGraphController.native.js.map +1 -1
- package/package.json +7 -6
- package/src/NodeGraph.historyBridge.spec.tsx +87 -0
- package/src/bench/Perf200.stories.tsx +43 -11
- package/src/interaction/Lasso.stories.tsx +22 -7
- package/src/layout/AutoLayout.stories.spec.tsx +26 -0
- package/src/layout/AutoLayout.stories.tsx +22 -12
- package/src/model/history.spec.ts +19 -0
- package/src/model/history.ts +17 -6
- package/src/native/GraphToolbar.spec.tsx +53 -0
- package/src/native/GraphToolbar.tsx +18 -14
- package/src/react-flow/useGraphController.ts +14 -12
- package/types/model/history.d.ts +3 -2
- package/types/model/history.d.ts.map +1 -1
- package/types/native/GraphToolbar.d.ts +4 -10
- package/types/native/GraphToolbar.d.ts.map +1 -1
- package/types/react-flow/useGraphController.d.ts.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["startTransition","useCallback","useEffect","useMemo","useRef","useState","applyCommand","createHistory","validateConnection","validateDrop","layout","reconcilePositions","FINE_PORT_PITCH","portSpacing","preserveFlowState","toFlowEdges","toFlowNodes","applyEdgeChanges","applyNodeChanges","warned","Set","warnOnce","message","process","env","NODE_ENV","has","add","console","warn","resetControllerWarnings","clear","defaultGraphNodeType","emptyDocument","version","nodes","edges","positionsOf","out","node","id","position","dragDeltas","document","live","deltas","to","dx","x","dy","y","useGraphController","options","schema","controlledDocument","defaultDocument","onDocumentChange","onConnectionRefused","readOnly","size","coarsePointer","nodeType","readMeasuredSizes","controlled","ownDocument","setOwnDocument","history","historyVersion","setHistoryVersion","portSpacingPx","mapping","setNodes","setEdges","nodesRef","current","documentRef","schemaRef","previous","commit","command","next","onNodesChange","changes","layoutTouchedRef","change","type","dragEnded","some","dragging","Object","keys","length","t","onEdgesChange","removed","filter","map","ids","connectionContext","connection","source","target","sourceHandle","targetHandle","port","isValidConnection","ctx","ok","onConnect","verdict","kind","defaultEdgeKind","spec","edge","data","defaultData","measuredRef","layoutGenerationRef","layoutRunner","setLayoutRunner","lastLayoutMs","setLastLayoutMs","layoutPending","setLayoutPending","relayout","layoutOptions","generation","result","measured","touched","runner","ms","positions","undo","commands","redo","canUndo","canRedo","names","includes","applyGraphCommand"],"sources":["../../../src/react-flow/useGraphController.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["startTransition","useCallback","useEffect","useMemo","useRef","useState","applyCommand","createHistory","validateConnection","validateDrop","layout","reconcilePositions","FINE_PORT_PITCH","portSpacing","preserveFlowState","toFlowEdges","toFlowNodes","applyEdgeChanges","applyNodeChanges","warned","Set","warnOnce","message","process","env","NODE_ENV","has","add","console","warn","resetControllerWarnings","clear","defaultGraphNodeType","emptyDocument","version","nodes","edges","positionsOf","out","node","id","position","dragDeltas","document","live","deltas","to","dx","x","dy","y","useGraphController","options","schema","controlledDocument","defaultDocument","onDocumentChange","onConnectionRefused","readOnly","size","coarsePointer","nodeType","readMeasuredSizes","controlled","ownDocument","setOwnDocument","history","historyVersion","setHistoryVersion","portSpacingPx","mapping","setNodes","setEdges","nodesRef","current","documentRef","schemaRef","previous","commit","command","next","onNodesChange","changes","layoutTouchedRef","change","type","dragEnded","some","dragging","Object","keys","length","t","onEdgesChange","removed","filter","map","ids","connectionContext","connection","source","target","sourceHandle","targetHandle","port","isValidConnection","ctx","ok","onConnect","verdict","kind","defaultEdgeKind","spec","edge","data","defaultData","measuredRef","layoutGenerationRef","layoutRunner","setLayoutRunner","lastLayoutMs","setLastLayoutMs","layoutPending","setLayoutPending","relayout","layoutOptions","generation","result","measured","touched","runner","ms","positions","publishHistoryChange","undo","redo","canUndo","canRedo","names","includes","applyGraphCommand"],"sources":["../../../src/react-flow/useGraphController.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -332,32 +332,24 @@ function useGraphController(options) {
|
|
|
332
332
|
});
|
|
333
333
|
return result;
|
|
334
334
|
}, [coarsePointer, commit, readOnly, size]);
|
|
335
|
-
var
|
|
336
|
-
var next = history.undo(documentRef.current);
|
|
337
|
-
setHistoryVersion(function (version) {
|
|
338
|
-
return version + 1;
|
|
339
|
-
});
|
|
335
|
+
var publishHistoryChange = (0, import_react.useCallback)(function (next, command) {
|
|
340
336
|
if (next === documentRef.current) return;
|
|
341
337
|
if (!controlled) setOwnDocument(next);
|
|
342
338
|
documentRef.current = next;
|
|
343
|
-
onDocumentChange === null || onDocumentChange === void 0 ? void 0 : onDocumentChange(next,
|
|
344
|
-
|
|
345
|
-
|
|
339
|
+
onDocumentChange === null || onDocumentChange === void 0 ? void 0 : onDocumentChange(next, command);
|
|
340
|
+
}, [controlled, onDocumentChange]);
|
|
341
|
+
var undo = (0, import_react.useCallback)(function () {
|
|
342
|
+
history.undo(documentRef.current, publishHistoryChange);
|
|
343
|
+
setHistoryVersion(function (version) {
|
|
344
|
+
return version + 1;
|
|
346
345
|
});
|
|
347
|
-
}, [
|
|
346
|
+
}, [history, publishHistoryChange]);
|
|
348
347
|
var redo = (0, import_react.useCallback)(function () {
|
|
349
|
-
|
|
348
|
+
history.redo(documentRef.current, publishHistoryChange);
|
|
350
349
|
setHistoryVersion(function (version) {
|
|
351
350
|
return version + 1;
|
|
352
351
|
});
|
|
353
|
-
|
|
354
|
-
if (!controlled) setOwnDocument(next);
|
|
355
|
-
documentRef.current = next;
|
|
356
|
-
onDocumentChange === null || onDocumentChange === void 0 ? void 0 : onDocumentChange(next, {
|
|
357
|
-
t: "batch",
|
|
358
|
-
commands: []
|
|
359
|
-
});
|
|
360
|
-
}, [controlled, history, onDocumentChange]);
|
|
352
|
+
}, [history, publishHistoryChange]);
|
|
361
353
|
return {
|
|
362
354
|
document,
|
|
363
355
|
nodes,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toCommonJS","mod","value","useGraphController_exports","applyGraphCommand","defaultGraphNodeType","resetControllerWarnings","useGraphController","module","exports","import_react","require","import_model","import_layout","import_nodeMeasure","import_flowAdapter","import_xy","warned","Set","warnOnce","message","process","env","NODE_ENV","has","add","console","warn","clear","emptyDocument","version","nodes","edges","positionsOf","out","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Symbol","iterator","_step","next","done","node","id","position","err","return","dragDeltas","document","live","deltas","dx","x","dy","y","options","schema","controlledDocument","defaultDocument","onDocumentChange","onConnectionRefused","readOnly","size","coarsePointer","nodeType","readMeasuredSizes","controlled","ownDocument","setOwnDocument","useState","_ref","history","useMemo","createHistory","historyVersion","setHistoryVersion","portSpacingPx","portSpacing","FINE_PORT_PITCH","mapping","setNodes","toFlowNodes","setEdges","toFlowEdges","nodesRef","useRef","current","documentRef","schemaRef","useEffect","previous","preserveFlowState","commit","useCallback","command","onNodesChange","changes","applyNodeChanges","layoutTouchedRef","change","type","dragEnded","some","change2","dragging","keys","length","t","onEdgesChange","applyEdgeChanges","removed","filter","map","ids","connectionContext","connection","source","sourceHandle","targetHandle","port","isValidConnection","ctx","validateConnection","ok","onConnect"],"sources":["../../../src/react-flow/useGraphController.ts"],"sourcesContent":[null],"mappings":"AAqBA,YAAS;;AAWT,IAAAA,SAAS,GAAAC,MAAA,CAAcC,cAAA;AAGvB,IAAAC,gBAAiB,GAAAF,MAAA,CAAAG,wBAA0B;AAG3C,IAAAC,iBAAS,GAAAJ,MAAiB,CAAAK,mBAAmB;AAG7C,IAAAC,YAAS,GAAAN,MAAA,CAAAO,SAAmB,CAAAC,cAAa;AACzC,IAAAC,QAAS,GAAAA,CAAAC,MAAA,EAAAC,GAAkB;EAO3B,KAAM,IAAAC,IAAS,IAAAD,GAAA,EACfZ,SAAS,CAAAW,MAAS,EAAAE,IAAA,EAAuB;IAAAC,GAAA,EAAAF,GAAA,CAAAC,IAAA;IAAAE,UAAA;EAAA;AACvC;AACA,IAAAC,WAAW,GAAIA,CAAAC,EAAA,EAAAC,IAAU,EAAAC,MAAA,EAAAC,IAAA;EACzB,IAAAF,IAAO,IAAI,OAAOA,IAAA,wBAAAA,IAAA;IAElB,SAAQG,GAAK,IAAAhB,iBAAA,CAAAa,IAAA,GACf,KAAAX,YAAA,CAAAe,IAAA,CAAAL,EAAA,EAAAI,GAAA,KAAAA,GAAA,KAAAF,MAAA,EAGOnB,SAAS,CAAAiB,EAAA,EAAAI,GAAA;MAAAP,GAAA,EAAAA,CAAA,KAAgCI,IAAA,CAAAG,GAAA;MAAAN,UAAA,IAAAK,IAAA,GAAAjB,gBAAA,CAAAe,IAAA,EAAAG,GAAA,MAAAD,IAAA,CAAAL;IAAA;EAC9C;EACF,OAAAE,EAAA;AA+DO;AAEP,IAAAM,YAAM,GAAAC,GAAgB,IAAER,WAAY,CAAAhB,SAAW,KAAO,YAAG;EAAAyB,KAAA;AAAA,IAAAD,GAAA;AAEzD,IAAAE,0BAE4C;AAC1ChB,QAAM,CAAAgB,0BAAiD;EACvDC,iBAAW,EAAQA,CAAA,KAAOA,iBAAe;EACzCC,oBAAO,EAAAA,CAAA,KAAAA,oBAAA;EACTC,uBAAA,EAAAA,CAAA,KAAAA,uBAAA;EAGAC,kBACE,EAAAA,CAAA,KAAAA;AAGA;AACAC,MAAA,CAAAC,OAAM,GAAmDT,YAAC,CAAAG,0BAAA;AAC1D,IAAAO,YAAW,GAAAC,OAAQ,QAAS;AAC1B,IAAAC,YAAW,GAAAD,OAAU,CAAE;AACvB,IAAAE,aAAS,GAAAF,OAAA;AACT,IAAAG,kBAAkB,GAAAH,OAAK,iCAAS;AAChC,IAAAI,kBAAkB,GAAAJ,OAAK,0BAAS;AAChC,IAAAK,SAAI,GAAOL,OAAK,iBAAU;AAC1B,IAAAM,MAAA,GAAO,eAAgB,IAAIC,GAAG,CAAG;AAAA,SACnCC,SAAAC,OAAA;EACA,IAAAC,OAAO,CAAAC,GAAA,CAAAC,QAAA;EACT,IAAAN,MAAA,CAAAO,GAAA,CAAAJ,OAAA;EAEOH,MAAA,CAASQ,GAAA,CAAAL,OAAA;EAGdM,OAAM,CAAAC,IAAA,oCAAAP,OAAA;AAAA;AACJ,SACAd,uBAAUA,CAAA;EAAAW,MACV,CAAAW,KAAA;AAAA;AACA,IACAvB,oBAAA;AAAA,IACAwB,aAAW;EAAAC,OACX,EAAO;EAAAC,KACP;EAAgBC,KAChB;AAAW;AACX,SACEC,YAAAF,KAAA;EAEJ,IAAAG,GAAM;EACN,IAAIC,yBAAc;IAAoBC,iBAAW;IAAAC,cAAA;EAC/C;IAAA,KACE,IAAAC,SAAA,GAAAP,KAAA,CAAAQ,MAAA,CAAAC,QAAA,KAAAC,KAAA,IAAAN,yBAAA,IAAAM,KAAA,GAAAH,SAAA,CAAAI,IAAA,IAAAC,IAAA,GAAAR,yBAAA;MAEF,IAAAS,IAAA,GAAAH,KAAA,CAAAvC,KAAA;MACFgC,GAAA,CAAAU,IAAA,CAAAC,EAAA,IAAAD,IAAA,CAAAE,QAAA;IAEA;EAAsC,EACpC,OACEC,GAAA;IACJX,iBAAA;IACAC,cAAM,GAAWU,GAAA;EAEjB,UAAM;IACJ;MAAyC,KAAAZ,yBAAA,IAAAG,SAAA,CAAAU,MAAA;QAAAV,SAAA,CAAAU,MAAA;MAAA;IAAA;MAKxC,IAAAZ,iBAAA;QACH,MAAAC,cAAA;MACA;IAEA;EACA;EAAgB,OACdH,GAAO;AAAgC;AACT,SAChCe,WAAAC,QAAA,EAAAnB,KAAA;EAEA,IAAAoB,IAAO,GAAAlB,WAAe,CAAAF,KAAI;EAAA,IAAoCqB,MAC5D;EACF,IAAAjB,yBAAA;IAAAC,iBAAA;IAAAC,cAAA;EACA;IACA,KAAM,IAAAC,SAAW,GAAAY,QAAY,CAAAnB,KAAA,CAAAQ,MAAA,CAAAC,QAAA,KAAAC,KAAA,IAAAN,yBAAA,IAAAM,KAAA,GAAAH,SAAA,CAAAI,IAAA,IAAAC,IAAA,GAAAR,yBAAA;MAC7B,IAAAS,IAAS,GAAAH,KAAU,CAAAvC,KAAA;MACnB,IAAMR,EAAA,GAAAyD,IAAA,CAAAP,IAAc,CAAAC,EAAA;MACpB,KAAAnD,EAAA,EAAY;MAEZ,IAAM2D,EAAA,GAAA3D,EAAA,CAAA4D,CAAA,GAAYV,IAAA,CAAOE,QAAM,CAAAQ,CAAA;MAC/B,IAAAC,EAAU,GAAA7D,EAAA,CAAA8D,CAAA,GAAUZ,IAAA,CAAAE,QAAA,CAAAU,CAAA;MAgBpB,IAAAH,EAAU,MAAM,IAAAE,EAAA;MACdH,MAAM,CAAAR,IAAA,CAAAC,EAAU;QAChBS,CAAA,EAAAD,EAAS;QACTG,CAAA,EAAAD;MACE;IAEJ;EAAe,EACb,OAACR,GAAA;IACCX,iBAAM,GAAU;IAChBC,cAAM,GAAOU,GAAA;EACb;IACA;MACA,KAAAZ,yBAAsB,IAAAG,SAAA,CAAAU,MAAA;QACtBV,SAAA,CAAAU,MAAA,CAAmB;MACrB;IACA,CAAC;MACH,IAAAZ,iBAAA;QAEM,MAAAC,cAAgB;MACnB;IACC;EACA;EACA,OAAAe,MAAS;AAIT;AACE,SAAA7C,kBAAWA,CAAAkD,OAAU;EACnB;IAAAC,MAAI;IAAAR,QAAO,EAAAS,kBAAqB;IAAAC,eAAiB;IAAAC,gBAAmB;IAAEC,mBAAA;IAAAC,QAAA;IAAAC,IAAA;IAAAC,aAAA;IAAAC,QAAA,GAAA7D,oBAAA;IAAA8D;EAAA,IAAAV,OAAA;EAAA,IAAAW,UACxE,GAAAT,kBAAA;EAAA,IACFS,UAAA,IAAAR,eAAA;IACAzC,QAAI,8HAAU;EAEd;EAA0B,KAAAkD,WACvB,EAAWC,cAAO,IAAS,IAAA5D,YAAc,CAAA6D,QAAO,cAAa;IAAA,IAChEC,IAAA;IACA,OAAK,CAAAA,IAAA,GAAAZ,eAAW,aAAAA,eAAA,cAAAA,eAAA,GAAAD,kBAAA,cAAAa,IAAA,cAAAA,IAAA,GAAA3C,aAAA;EAChB;EACA,IAAAqB,QAAI,GAAOkB,UAAK,GAAQT,kBAAc,GAAAU,WAAA;EACtC,IAAAI,OAAO,GAAE,EAAG,EAAA/D,YAAa,CAAAgE,OAAQ,EACnC;IACC,OAAQ,IAAA9D,YAAQ,CAAA+D,aAAA,EAAAlB,OAAA,CAAAgB,OAAA;EACnB;EAEA;EACE;EACE;EACA;EACA,EACA;EACG,KAAAG,cAEG,EAAAC,iBAAgB,QAAAnE,YAAA,CAAA6D,QAAA;EAAA,IACpBO,aACM,GAAAb,aAAoB,OAAAnD,kBAAA,CAAAiE,WAAA;IAC5Bd;EACA,KAAAnD,kBAAY,CAAAkE,eAAoB;EAAS,IAC3CC,OAAA,OAAAvE,YAAA,CAAAgE,OAAA;IACA,OAAC;MACHV,IAAA;MAEAc,aAAM;MACHZ;IACC;EAIA,IACAF,IAAA,EAAOc,aACL,EAAsBZ,QACtB;EACiE,KAAAnC,KACjE,EAAAmD,QAAU,IAAM,IAAAxE,YAAW,CAAQ6D,QAAM,cAAW;IAAa,OACnE,IAAAxD,kBAAA,CAAAoE,WAAA,EAAAjC,QAAA,EAAAQ,MAAA,EAAAuB,OAAA;EAAA,EACF;EAAA,IACC,CAAAjD,KAAM,EAAAoD,QAAA,QAAA1E,YAAA,CAAA6D,QAAA;IACT,WAAAxD,kBAAA,CAAAsE,WAAA,EAAAnC,QAAA,EAAAQ,MAAA;EAEA;EAA0B,IACvB4B,QAAA,OAAkC5E,YAAA,CAAA6E,MAAA,EAAAxD,KAAA;EACjCuD,QAAI,CAAAE,OAAA,GAAUzD,KAAA;EACd,IAAA0D,WAAM,GAAM,IAAA/E,YAAkB,CAAA6E,MAAA,EAAArC,QAAU;EACxCuC,WAAK,CAAAD,OAAK,GAAOtC,QAAA;EAKjB,IAAAwC,SAAO,OAAAhF,YAAmB,CAAG6E,MAAE,EAAA7B,MAAA;EAAAgC,SACjC,CAAAF,OAAA,GAAA9B,MAAA;EAAA,EACA,EAAChD,YAAA,CAAAiF,SAAmB,cAAQ;IAC9B,IAAAH,OAAA,GAAAE,SAAA,CAAAF,OAAA;IAEAN,QAAM,WAAYU,QAAA;MACf,WAAA7E,kBAA2B,CAAA8E,iBAAA,MAAA9E,kBAAA,CAAAoE,WAAA,EAAAjC,QAAA,EAAAsC,OAAA,EAAAP,OAAA,GAAAW,QAAA;IAC1B;IACAR,QAAM,KAAArE,kBAAM,CAAkBsE,WAAU,EAAAnC,QAAA,EAAAsC,OAAA;EACxC,IACAtC,QAAM,EACNQ,MAAI,CAACb,EAAA,EACHoC,OAAA,CACA;EAAA,IACFa,MAAA,OAAApF,YAAA,CAAAqF,WAAA,YAAAC,OAAA;IACA,IAAAR,OAAM,GAAAC,WAAO,CAAAD,OAAgB;IAC7B,IAAA9C,IAAK,GAAA+B,OAAM,CAAAqB,MAAA,CAAAN,OAAA,EAAAQ,OAAA;IACXnB,iBAAc,WAAO/C,OAAoE;MACzF,OAAMA,OAAO;IAAA;IACqE,IAChF,CAAAsC,UAAA,EAAAE,cAAA,CAAA5B,IAAA;IAAA+C,WACA,CAAQD,OAAI,GAAA9C,IAAA;IAAAmB,gBACA,aAAAA,gBAAA,uBAAAA,gBAAA,CAAAnB,IAAA,EAAAsD,OAAA;EAAA,IAAA5B,UAAA,EAAAK,OAAA,EAAAZ,gBAIA,CAAgB;EAE9B,IAAAoC,aAAY,OAAAvF,YAAoB,CAAAqF,WAAO,YAAAG,OAAA;IACzC,IAAAxD,IAAA,OAAA1B,SAAA,CAAAmF,gBAAA,EAAAD,OAAA,EAAAZ,QAAA,CAAAE,OAAA;IACAF,QAAC,CAAQE,OAAA,GAAA9C,IAAA;IACXwC,QAAA,CAAAxC,IAAA;IAgBA,IAAM0D,gBAAc,CAAAZ,OAAO;MAC3B,IAAArD,yBAAsB;QAAAC,iBAAA;QAAAC,cAAA;MACtB,IAAM;QACA,SAAAC,SAAA,GAAmB4D,OAA2B,CAAA3D,MAAI,CAAAC,QAAA,KAAAC,KAAA,IAAAN,yBAAA,IAAAM,KAAA,GAAAH,SAAA,CAAAI,IAAA,IAAAC,IAAA,GAAAR,yBAAA;UACjD,IAAAkE,MAAA,GAAc5D,KAAA,CAAAvC,KAAA;UACd,IAAAmG,MAAA,CAAAC,IAAc,eAAe,EAAIF,gBAA4B,CAAAZ,OAAA,CAAA/D,GAAA,CAAA4E,MAAA,CAAAxD,EAAA;QAC9D;MAEN,EAAM,OAAAE,GAAA,EAAW;QACfX,iBAAO,GAAuC;QAC5CC,cAAe,GAAAU,GAAA;MACf,UAAI;QAEJ,IAAM;UACN,KAAAZ,yBAA2B,IAAAG,SAAI,CAAAU,MAAY;YAC3CV,SAAA,CAAAU,MAAqB;UAEjB;QACJ,UAAI;UACF,IAAAZ,iBAAsB;YACpB,MAAGC,cAAA;UACH;QAAA;MACA;IAC0D;IAC3D,IACH0B,QAAE;IACA,IAAAwC,SAAI,GAAAL,OAAA,CAAAM,IAAoB,WAAAC,OAAY;MACtC,OAAAA,OAAA,CAAAH,IAAA,mBAAAG,OAAA,CAAAC,QAAA;IAIA;IAEA,KAAAH,SAAM;IACN,IAAAnD,MAAA,GAAAH,UAAiB,CAAAwC,WAAU,CAAAD,OAAA,EAAA9C,IAAA;IAC3B,IAAAhE,MAAA,CAAAiI,IAAA,CAAAvD,MAAgB,EAAAwD,MAAO,KAAU;IACjCd,MAAA;MACAe,CAAA,aAAc;MAEdzD;IACA;EAIA,IACE0C,MAAA,EAA6D/B,QAC9D,CACD;EAAO,IACT+C,aAAA,OAAApG,YAAA,CAAAqF,WAAA,YAAAG,OAAA;IACA,IAACxD,IAAA,OAAA1B,SAAuB,CAAA+F,gBAAc,EAAAb,OAAA,EAAAlE,KAAA;IACxCoD,QAAA,CAAA1C,IAAA;IAEA,IAAMqB,
|
|
1
|
+
{"version":3,"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toCommonJS","mod","value","useGraphController_exports","applyGraphCommand","defaultGraphNodeType","resetControllerWarnings","useGraphController","module","exports","import_react","require","import_model","import_layout","import_nodeMeasure","import_flowAdapter","import_xy","warned","Set","warnOnce","message","process","env","NODE_ENV","has","add","console","warn","clear","emptyDocument","version","nodes","edges","positionsOf","out","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Symbol","iterator","_step","next","done","node","id","position","err","return","dragDeltas","document","live","deltas","dx","x","dy","y","options","schema","controlledDocument","defaultDocument","onDocumentChange","onConnectionRefused","readOnly","size","coarsePointer","nodeType","readMeasuredSizes","controlled","ownDocument","setOwnDocument","useState","_ref","history","useMemo","createHistory","historyVersion","setHistoryVersion","portSpacingPx","portSpacing","FINE_PORT_PITCH","mapping","setNodes","toFlowNodes","setEdges","toFlowEdges","nodesRef","useRef","current","documentRef","schemaRef","useEffect","previous","preserveFlowState","commit","useCallback","command","onNodesChange","changes","applyNodeChanges","layoutTouchedRef","change","type","dragEnded","some","change2","dragging","keys","length","t","onEdgesChange","applyEdgeChanges","removed","filter","map","ids","connectionContext","connection","source","sourceHandle","targetHandle","port","isValidConnection","ctx","validateConnection","ok","onConnect"],"sources":["../../../src/react-flow/useGraphController.ts"],"sourcesContent":[null],"mappings":"AAqBA,YAAS;;AAWT,IAAAA,SAAS,GAAAC,MAAA,CAAcC,cAAA;AAGvB,IAAAC,gBAAiB,GAAAF,MAAA,CAAAG,wBAA0B;AAG3C,IAAAC,iBAAS,GAAAJ,MAAiB,CAAAK,mBAAmB;AAG7C,IAAAC,YAAS,GAAAN,MAAA,CAAAO,SAAmB,CAAAC,cAAa;AACzC,IAAAC,QAAS,GAAAA,CAAAC,MAAA,EAAAC,GAAkB;EAO3B,KAAM,IAAAC,IAAS,IAAAD,GAAA,EACfZ,SAAS,CAAAW,MAAS,EAAAE,IAAA,EAAuB;IAAAC,GAAA,EAAAF,GAAA,CAAAC,IAAA;IAAAE,UAAA;EAAA;AACvC;AACA,IAAAC,WAAW,GAAIA,CAAAC,EAAA,EAAAC,IAAU,EAAAC,MAAA,EAAAC,IAAA;EACzB,IAAAF,IAAO,IAAI,OAAOA,IAAA,wBAAAA,IAAA;IAElB,SAAQG,GAAK,IAAAhB,iBAAA,CAAAa,IAAA,GACf,KAAAX,YAAA,CAAAe,IAAA,CAAAL,EAAA,EAAAI,GAAA,KAAAA,GAAA,KAAAF,MAAA,EAGOnB,SAAS,CAAAiB,EAAA,EAAAI,GAAA;MAAAP,GAAA,EAAAA,CAAA,KAAgCI,IAAA,CAAAG,GAAA;MAAAN,UAAA,IAAAK,IAAA,GAAAjB,gBAAA,CAAAe,IAAA,EAAAG,GAAA,MAAAD,IAAA,CAAAL;IAAA;EAC9C;EACF,OAAAE,EAAA;AA+DO;AAEP,IAAAM,YAAM,GAAAC,GAAgB,IAAER,WAAY,CAAAhB,SAAW,KAAO,YAAG;EAAAyB,KAAA;AAAA,IAAAD,GAAA;AAEzD,IAAAE,0BAE4C;AAC1ChB,QAAM,CAAAgB,0BAAiD;EACvDC,iBAAW,EAAQA,CAAA,KAAOA,iBAAe;EACzCC,oBAAO,EAAAA,CAAA,KAAAA,oBAAA;EACTC,uBAAA,EAAAA,CAAA,KAAAA,uBAAA;EAGAC,kBACE,EAAAA,CAAA,KAAAA;AAGA;AACAC,MAAA,CAAAC,OAAM,GAAmDT,YAAC,CAAAG,0BAAA;AAC1D,IAAAO,YAAW,GAAAC,OAAQ,QAAS;AAC1B,IAAAC,YAAW,GAAAD,OAAU,CAAE;AACvB,IAAAE,aAAS,GAAAF,OAAA;AACT,IAAAG,kBAAkB,GAAAH,OAAK,iCAAS;AAChC,IAAAI,kBAAkB,GAAAJ,OAAK,0BAAS;AAChC,IAAAK,SAAI,GAAOL,OAAK,iBAAU;AAC1B,IAAAM,MAAA,GAAO,eAAgB,IAAIC,GAAG,CAAG;AAAA,SACnCC,SAAAC,OAAA;EACA,IAAAC,OAAO,CAAAC,GAAA,CAAAC,QAAA;EACT,IAAAN,MAAA,CAAAO,GAAA,CAAAJ,OAAA;EAEOH,MAAA,CAASQ,GAAA,CAAAL,OAAA;EAGdM,OAAM,CAAAC,IAAA,oCAAAP,OAAA;AAAA;AACJ,SACAd,uBAAUA,CAAA;EAAAW,MACV,CAAAW,KAAA;AAAA;AACA,IACAvB,oBAAA;AAAA,IACAwB,aAAW;EAAAC,OACX,EAAO;EAAAC,KACP;EAAgBC,KAChB;AAAW;AACX,SACEC,YAAAF,KAAA;EAEJ,IAAAG,GAAM;EACN,IAAIC,yBAAc;IAAoBC,iBAAW;IAAAC,cAAA;EAC/C;IAAA,KACE,IAAAC,SAAA,GAAAP,KAAA,CAAAQ,MAAA,CAAAC,QAAA,KAAAC,KAAA,IAAAN,yBAAA,IAAAM,KAAA,GAAAH,SAAA,CAAAI,IAAA,IAAAC,IAAA,GAAAR,yBAAA;MAEF,IAAAS,IAAA,GAAAH,KAAA,CAAAvC,KAAA;MACFgC,GAAA,CAAAU,IAAA,CAAAC,EAAA,IAAAD,IAAA,CAAAE,QAAA;IAEA;EAAsC,EACpC,OACEC,GAAA;IACJX,iBAAA;IACAC,cAAM,GAAWU,GAAA;EAEjB,UAAM;IACJ;MAAyC,KAAAZ,yBAAA,IAAAG,SAAA,CAAAU,MAAA;QAAAV,SAAA,CAAAU,MAAA;MAAA;IAAA;MAKxC,IAAAZ,iBAAA;QACH,MAAAC,cAAA;MACA;IAEA;EACA;EAAgB,OACdH,GAAO;AAAgC;AACT,SAChCe,WAAAC,QAAA,EAAAnB,KAAA;EAEA,IAAAoB,IAAO,GAAAlB,WAAe,CAAAF,KAAI;EAAA,IAAoCqB,MAC5D;EACF,IAAAjB,yBAAA;IAAAC,iBAAA;IAAAC,cAAA;EACA;IACA,KAAM,IAAAC,SAAW,GAAAY,QAAY,CAAAnB,KAAA,CAAAQ,MAAA,CAAAC,QAAA,KAAAC,KAAA,IAAAN,yBAAA,IAAAM,KAAA,GAAAH,SAAA,CAAAI,IAAA,IAAAC,IAAA,GAAAR,yBAAA;MAC7B,IAAAS,IAAS,GAAAH,KAAU,CAAAvC,KAAA;MACnB,IAAMR,EAAA,GAAAyD,IAAA,CAAAP,IAAc,CAAAC,EAAA;MACpB,KAAAnD,EAAA,EAAY;MAEZ,IAAM2D,EAAA,GAAA3D,EAAA,CAAA4D,CAAA,GAAYV,IAAA,CAAOE,QAAM,CAAAQ,CAAA;MAC/B,IAAAC,EAAU,GAAA7D,EAAA,CAAA8D,CAAA,GAAUZ,IAAA,CAAAE,QAAA,CAAAU,CAAA;MAgBpB,IAAAH,EAAU,MAAM,IAAAE,EAAA;MACdH,MAAM,CAAAR,IAAA,CAAAC,EAAU;QAChBS,CAAA,EAAAD,EAAS;QACTG,CAAA,EAAAD;MACE;IAEJ;EAAe,EACb,OAACR,GAAA;IACCX,iBAAM,GAAU;IAChBC,cAAM,GAAOU,GAAA;EACb;IACA;MACA,KAAAZ,yBAAsB,IAAAG,SAAA,CAAAU,MAAA;QACtBV,SAAA,CAAAU,MAAA,CAAmB;MACrB;IACA,CAAC;MACH,IAAAZ,iBAAA;QAEM,MAAAC,cAAgB;MACnB;IACC;EACA;EACA,OAAAe,MAAS;AAIT;AACE,SAAA7C,kBAAWA,CAAAkD,OAAU;EACnB;IAAAC,MAAI;IAAAR,QAAO,EAAAS,kBAAqB;IAAAC,eAAiB;IAAAC,gBAAmB;IAAEC,mBAAA;IAAAC,QAAA;IAAAC,IAAA;IAAAC,aAAA;IAAAC,QAAA,GAAA7D,oBAAA;IAAA8D;EAAA,IAAAV,OAAA;EAAA,IAAAW,UACxE,GAAAT,kBAAA;EAAA,IACFS,UAAA,IAAAR,eAAA;IACAzC,QAAI,8HAAU;EAEd;EAA0B,KAAAkD,WACvB,EAAWC,cAAO,IAAS,IAAA5D,YAAc,CAAA6D,QAAO,cAAa;IAAA,IAChEC,IAAA;IACA,OAAK,CAAAA,IAAA,GAAAZ,eAAW,aAAAA,eAAA,cAAAA,eAAA,GAAAD,kBAAA,cAAAa,IAAA,cAAAA,IAAA,GAAA3C,aAAA;EAChB;EACA,IAAAqB,QAAI,GAAOkB,UAAK,GAAQT,kBAAc,GAAAU,WAAA;EACtC,IAAAI,OAAO,GAAE,EAAG,EAAA/D,YAAa,CAAAgE,OAAQ,EACnC;IACC,OAAQ,IAAA9D,YAAQ,CAAA+D,aAAA,EAAAlB,OAAA,CAAAgB,OAAA;EACnB;EAEA;EACE;EACE;EACA;EACA,EACA;EACG,KAAAG,cAEG,EAAAC,iBAAgB,QAAAnE,YAAA,CAAA6D,QAAA;EAAA,IACpBO,aACM,GAAAb,aAAoB,OAAAnD,kBAAA,CAAAiE,WAAA;IAC5Bd;EACA,KAAAnD,kBAAY,CAAAkE,eAAoB;EAAS,IAC3CC,OAAA,OAAAvE,YAAA,CAAAgE,OAAA;IACA,OAAC;MACHV,IAAA;MAEAc,aAAM;MACHZ;IACC;EAIA,IACAF,IAAA,EAAOc,aACL,EAAsBZ,QACtB;EACiE,KAAAnC,KACjE,EAAAmD,QAAU,IAAM,IAAAxE,YAAW,CAAQ6D,QAAM,cAAW;IAAa,OACnE,IAAAxD,kBAAA,CAAAoE,WAAA,EAAAjC,QAAA,EAAAQ,MAAA,EAAAuB,OAAA;EAAA,EACF;EAAA,IACC,CAAAjD,KAAM,EAAAoD,QAAA,QAAA1E,YAAA,CAAA6D,QAAA;IACT,WAAAxD,kBAAA,CAAAsE,WAAA,EAAAnC,QAAA,EAAAQ,MAAA;EAEA;EAA0B,IACvB4B,QAAA,OAAkC5E,YAAA,CAAA6E,MAAA,EAAAxD,KAAA;EACjCuD,QAAI,CAAAE,OAAA,GAAUzD,KAAA;EACd,IAAA0D,WAAM,GAAM,IAAA/E,YAAkB,CAAA6E,MAAA,EAAArC,QAAU;EACxCuC,WAAK,CAAAD,OAAK,GAAOtC,QAAA;EAKjB,IAAAwC,SAAO,OAAAhF,YAAmB,CAAG6E,MAAE,EAAA7B,MAAA;EAAAgC,SACjC,CAAAF,OAAA,GAAA9B,MAAA;EAAA,EACA,EAAChD,YAAA,CAAAiF,SAAmB,cAAQ;IAC9B,IAAAH,OAAA,GAAAE,SAAA,CAAAF,OAAA;IAEAN,QAAM,WAAYU,QAAA;MACf,WAAA7E,kBAA2B,CAAA8E,iBAAA,MAAA9E,kBAAA,CAAAoE,WAAA,EAAAjC,QAAA,EAAAsC,OAAA,EAAAP,OAAA,GAAAW,QAAA;IAC1B;IACAR,QAAM,KAAArE,kBAAM,CAAkBsE,WAAU,EAAAnC,QAAA,EAAAsC,OAAA;EACxC,IACAtC,QAAM,EACNQ,MAAI,CAACb,EAAA,EACHoC,OAAA,CACA;EAAA,IACFa,MAAA,OAAApF,YAAA,CAAAqF,WAAA,YAAAC,OAAA;IACA,IAAAR,OAAM,GAAAC,WAAO,CAAAD,OAAgB;IAC7B,IAAA9C,IAAK,GAAA+B,OAAM,CAAAqB,MAAA,CAAAN,OAAA,EAAAQ,OAAA;IACXnB,iBAAc,WAAO/C,OAAoE;MACzF,OAAMA,OAAO;IAAA;IACqE,IAChF,CAAAsC,UAAA,EAAAE,cAAA,CAAA5B,IAAA;IAAA+C,WACA,CAAQD,OAAI,GAAA9C,IAAA;IAAAmB,gBACA,aAAAA,gBAAA,uBAAAA,gBAAA,CAAAnB,IAAA,EAAAsD,OAAA;EAAA,IAAA5B,UAAA,EAAAK,OAAA,EAAAZ,gBAIA,CAAgB;EAE9B,IAAAoC,aAAY,OAAAvF,YAAoB,CAAAqF,WAAO,YAAAG,OAAA;IACzC,IAAAxD,IAAA,OAAA1B,SAAA,CAAAmF,gBAAA,EAAAD,OAAA,EAAAZ,QAAA,CAAAE,OAAA;IACAF,QAAC,CAAQE,OAAA,GAAA9C,IAAA;IACXwC,QAAA,CAAAxC,IAAA;IAgBA,IAAM0D,gBAAc,CAAAZ,OAAO;MAC3B,IAAArD,yBAAsB;QAAAC,iBAAA;QAAAC,cAAA;MACtB,IAAM;QACA,SAAAC,SAAA,GAAmB4D,OAA2B,CAAA3D,MAAI,CAAAC,QAAA,KAAAC,KAAA,IAAAN,yBAAA,IAAAM,KAAA,GAAAH,SAAA,CAAAI,IAAA,IAAAC,IAAA,GAAAR,yBAAA;UACjD,IAAAkE,MAAA,GAAc5D,KAAA,CAAAvC,KAAA;UACd,IAAAmG,MAAA,CAAAC,IAAc,eAAe,EAAIF,gBAA4B,CAAAZ,OAAA,CAAA/D,GAAA,CAAA4E,MAAA,CAAAxD,EAAA;QAC9D;MAEN,EAAM,OAAAE,GAAA,EAAW;QACfX,iBAAO,GAAuC;QAC5CC,cAAe,GAAAU,GAAA;MACf,UAAI;QAEJ,IAAM;UACN,KAAAZ,yBAA2B,IAAAG,SAAI,CAAAU,MAAY;YAC3CV,SAAA,CAAAU,MAAqB;UAEjB;QACJ,UAAI;UACF,IAAAZ,iBAAsB;YACpB,MAAGC,cAAA;UACH;QAAA;MACA;IAC0D;IAC3D,IACH0B,QAAE;IACA,IAAAwC,SAAI,GAAAL,OAAA,CAAAM,IAAoB,WAAAC,OAAY;MACtC,OAAAA,OAAA,CAAAH,IAAA,mBAAAG,OAAA,CAAAC,QAAA;IAIA;IAEA,KAAAH,SAAM;IACN,IAAAnD,MAAA,GAAAH,UAAiB,CAAAwC,WAAU,CAAAD,OAAA,EAAA9C,IAAA;IAC3B,IAAAhE,MAAA,CAAAiI,IAAA,CAAAvD,MAAgB,EAAAwD,MAAO,KAAU;IACjCd,MAAA;MACAe,CAAA,aAAc;MAEdzD;IACA;EAIA,IACE0C,MAAA,EAA6D/B,QAC9D,CACD;EAAO,IACT+C,aAAA,OAAApG,YAAA,CAAAqF,WAAA,YAAAG,OAAA;IACA,IAACxD,IAAA,OAAA1B,SAAuB,CAAA+F,gBAAc,EAAAb,OAAA,EAAAlE,KAAA;IACxCoD,QAAA,CAAA1C,IAAA;IAEA,IAAMqB,QAAA;IACJ,IAACiD,OAA2B,GAAAd,OAAgC,CAAAe,MAAA,WAAAZ,MAAA;MAC1D,OAAIA,MAAS,CAAAC,IAAA,aAAY;IACzB,GAAAY,GAAI,CAAC,UAAAb,MAAY;MACjB,OAAAA,MAAY,CAAAxD,EAAA;IACZ;IACF,IAAAmE,OAAA,CAAAJ,MAAA;IACAd,MAAC;MACHe,CAAA;MAEAM,GAAM,EAAAH;IACJ;EACA,IACFlB,MAAI,EAEJ9D,KAAM,EACJ+B,QAAQ,CACR;EACF,IAAIqD,iBAAS,OAAA1G,YAAqB,CAAAqF,WAAA,YAAAsB,UAAA;IAElC,KAAOA,UAAA,CAAAC,MAAA,KAAAD,UAAA,CAAAjI,MAAA;IACL,KAAAiI,UAAA,CAAAE,YAAA,KAAAF,UAAA,CAAAG,YAAA;IACA;MACAtE,QAAA,EAAAuC,WAAA,CAAAD,OAAA;MACA9B,MAAA;MACA4D,MAAA;QACA1E,IAAA,EAAAyE,UAAA,CAAAC,MAAA;QACAG,IAAA,EAAAJ,UAAA,CAAAE;MACA;MACAnI,MAAA;QACAwD,IAAA,EAAAyE,UAAA,CAAAjI,MAAA;QAAAqI,IAAA,EAAAJ,UAAA,CAAAG;MAAA;IAGA;EAAmE,GACnE,CACA9D,MAAA,EACA;EAAA,IACAgE,iBAAA,OAAAhH,YAAA,CAAAqF,WAAA,YAAAsB,UAAA;IACA,IAAAtD,QAAA;IACF,IAAA4D,GAAA,GAAAP,iBAAA,CAAAC,UAAA;IACF,KAAAM,GAAA;IASA,OAAS,IAAA/G,YACP,CAAAgH,kBACoB,EAAAD,GAAA,EAAAE,EAAA;EACpB,IACAT,iBAAa,EACfrD,QAAA,CAGO;EAIL,IAAA+D,SAAO,OAAapH,YAAU,CAAAqF,WAAO,YAAAsB,UAAA;IACvC,IAAA7C,IAAA","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@multiplatform.one/node-graph",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.8.0",
|
|
4
4
|
"description": "Node graph editor — React Flow on web, Tamagui knob-aware nodes, an Expo DOM host on native",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"multiplatform",
|
|
@@ -83,8 +83,9 @@
|
|
|
83
83
|
"@xyflow/react": "^12.11.5",
|
|
84
84
|
"@xyflow/system": "0.0.81",
|
|
85
85
|
"tamagui": "2.7.6",
|
|
86
|
-
"@multiplatform.one/
|
|
87
|
-
"@multiplatform.one/
|
|
86
|
+
"@multiplatform.one/theme": "7.8.0",
|
|
87
|
+
"@multiplatform.one/platform": "7.8.0",
|
|
88
|
+
"@multiplatform.one/forms": "7.8.0"
|
|
88
89
|
},
|
|
89
90
|
"devDependencies": {
|
|
90
91
|
"@tamagui/build": "2.7.6",
|
|
@@ -97,8 +98,8 @@
|
|
|
97
98
|
"react-dom": "19.2.5",
|
|
98
99
|
"subset-font": "^2.7.0",
|
|
99
100
|
"vitest": "^4.1.5",
|
|
100
|
-
"@multiplatform.one/config": "7.
|
|
101
|
-
"@multiplatform.one/test-utils": "7.
|
|
101
|
+
"@multiplatform.one/config": "7.8.0",
|
|
102
|
+
"@multiplatform.one/test-utils": "7.8.0"
|
|
102
103
|
},
|
|
103
104
|
"peerDependencies": {
|
|
104
105
|
"expo": ">=55",
|
|
@@ -107,7 +108,7 @@
|
|
|
107
108
|
"react-dom": "^19.1.0",
|
|
108
109
|
"react-native": ">=0.83.0",
|
|
109
110
|
"react-native-webview": ">=13.16.0",
|
|
110
|
-
"@multiplatform.one/components": "7.
|
|
111
|
+
"@multiplatform.one/components": "^7.8.0"
|
|
111
112
|
},
|
|
112
113
|
"peerDependenciesMeta": {
|
|
113
114
|
"@multiplatform.one/components": {
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { useState } from "react";
|
|
2
|
+
import { renderWithProviders } from "@multiplatform.one/test-utils";
|
|
3
|
+
import { act, cleanup, renderHook } from "@testing-library/react";
|
|
4
|
+
import { afterEach, expect, it, vi } from "vitest";
|
|
5
|
+
import { NodeGraph } from "./NodeGraph.native";
|
|
6
|
+
import { demoDocument, demoSchema, type DemoNodeData } from "./react-flow/fixtures";
|
|
7
|
+
import type { BuiltinEdgeData } from "./edges/edgeKinds";
|
|
8
|
+
import type { GraphCommand } from "./model";
|
|
9
|
+
import { useGraphController } from "./react-flow/useGraphController";
|
|
10
|
+
|
|
11
|
+
const host = vi.hoisted(() => ({
|
|
12
|
+
props: undefined as
|
|
13
|
+
| undefined
|
|
14
|
+
| {
|
|
15
|
+
rev: number;
|
|
16
|
+
documentJson: string;
|
|
17
|
+
onCommit: (rev: number, commandsJson: string) => void;
|
|
18
|
+
},
|
|
19
|
+
}));
|
|
20
|
+
vi.mock("./native/NodeGraph.native", () => ({
|
|
21
|
+
NodeGraphNative: (props: NonNullable<typeof host.props>) => {
|
|
22
|
+
host.props = props;
|
|
23
|
+
return null;
|
|
24
|
+
},
|
|
25
|
+
}));
|
|
26
|
+
|
|
27
|
+
afterEach(cleanup);
|
|
28
|
+
|
|
29
|
+
type Command = GraphCommand<DemoNodeData, BuiltinEdgeData>;
|
|
30
|
+
const examples: Array<[string, Command[]]> = [
|
|
31
|
+
["move", [{ t: "moveNodes", deltas: { a: { x: 10, y: 5 } } }]],
|
|
32
|
+
[
|
|
33
|
+
"coalesced moves",
|
|
34
|
+
[
|
|
35
|
+
{ t: "moveNodes", deltas: { a: { x: 10, y: 5 } } },
|
|
36
|
+
{ t: "moveNodes", deltas: { a: { x: 20, y: 10 } } },
|
|
37
|
+
],
|
|
38
|
+
],
|
|
39
|
+
["connected node removal", [{ t: "removeNodes", ids: ["a"] }]],
|
|
40
|
+
];
|
|
41
|
+
|
|
42
|
+
for (const controlled of [false, true])
|
|
43
|
+
it.each(examples)(
|
|
44
|
+
`publishes the actual ${controlled ? "controlled" : "uncontrolled"} native document for %s undo and redo`,
|
|
45
|
+
(_name, commands) => {
|
|
46
|
+
const initial = demoDocument();
|
|
47
|
+
const schema = demoSchema();
|
|
48
|
+
const onDocumentChange = vi.fn();
|
|
49
|
+
function Host() {
|
|
50
|
+
const [value, setValue] = useState(initial);
|
|
51
|
+
return (
|
|
52
|
+
<NodeGraph
|
|
53
|
+
schema={schema}
|
|
54
|
+
{...(controlled ? { document: value } : { defaultDocument: initial })}
|
|
55
|
+
onDocumentChange={(next, command) => {
|
|
56
|
+
onDocumentChange(next, command);
|
|
57
|
+
if (controlled) setValue(next);
|
|
58
|
+
}}
|
|
59
|
+
/>
|
|
60
|
+
);
|
|
61
|
+
}
|
|
62
|
+
renderWithProviders(<Host />);
|
|
63
|
+
const { result } = renderHook(() =>
|
|
64
|
+
useGraphController({
|
|
65
|
+
schema,
|
|
66
|
+
defaultDocument: initial,
|
|
67
|
+
history: { now: () => 0 },
|
|
68
|
+
// Match NodeGraphDomInner's real serialized command-only transport.
|
|
69
|
+
onDocumentChange: (_next, command) =>
|
|
70
|
+
host.props!.onCommit(host.props!.rev + 1, JSON.stringify([command])),
|
|
71
|
+
}),
|
|
72
|
+
);
|
|
73
|
+
for (const command of commands) act(() => result.current.commit(command));
|
|
74
|
+
const changed = result.current.document;
|
|
75
|
+
expect(changed).not.toEqual(initial);
|
|
76
|
+
expect(onDocumentChange.mock.lastCall?.[0]).toEqual(changed);
|
|
77
|
+
act(() => result.current.undo());
|
|
78
|
+
expect(result.current.document).toEqual(initial);
|
|
79
|
+
expect(onDocumentChange.mock.lastCall?.[0]).toEqual(initial);
|
|
80
|
+
expect(JSON.parse(host.props!.documentJson)).toEqual(initial);
|
|
81
|
+
act(() => result.current.redo());
|
|
82
|
+
expect(result.current.document).toEqual(changed);
|
|
83
|
+
expect(onDocumentChange.mock.lastCall?.[0]).toEqual(changed);
|
|
84
|
+
expect(JSON.parse(host.props!.documentJson)).toEqual(changed);
|
|
85
|
+
expect(onDocumentChange).toHaveBeenCalledTimes(commands.length + 2);
|
|
86
|
+
},
|
|
87
|
+
);
|
|
@@ -48,6 +48,7 @@
|
|
|
48
48
|
|
|
49
49
|
import type { Meta, StoryObj } from "@storybook/react-native-web-vite";
|
|
50
50
|
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
51
|
+
import { pressTargetStyle } from "@multiplatform.one/theme";
|
|
51
52
|
import { Button, SizableText, XStack, YStack } from "tamagui";
|
|
52
53
|
import type { FrameStats } from "../bench/frameSampler";
|
|
53
54
|
import { gestureEndMark, gestureStartMark } from "../bench/frameSampler";
|
|
@@ -73,6 +74,7 @@ const meta: Meta<typeof NodeGraph> = {
|
|
|
73
74
|
parameters: {
|
|
74
75
|
status: { type: "beta" },
|
|
75
76
|
layout: "fullscreen",
|
|
77
|
+
nativeGallery: { scroll: false },
|
|
76
78
|
docs: {
|
|
77
79
|
description: {
|
|
78
80
|
component:
|
|
@@ -253,20 +255,36 @@ function Bench({ variant }: { readonly variant: "tamagui" | "control" }) {
|
|
|
253
255
|
}, [culling, layoutRunner, start, stop, variant]);
|
|
254
256
|
|
|
255
257
|
return (
|
|
256
|
-
<YStack
|
|
258
|
+
<YStack
|
|
259
|
+
width="100%"
|
|
260
|
+
height={hasDomRealm ? 700 : undefined}
|
|
261
|
+
flex={hasDomRealm ? undefined : 1}
|
|
262
|
+
minHeight={0}
|
|
263
|
+
padding="$3"
|
|
264
|
+
gap="$2"
|
|
265
|
+
>
|
|
257
266
|
<SizableText size="$2" opacity={0.7}>
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
reporter and says so, rather than printing plausible numbers.
|
|
267
|
+
{hasDomRealm
|
|
268
|
+
? "200 nodes, ~400 edges, one seed. Start, then bracket each pan with Gesture start / Gesture end, then Stop. The readout's p95 and mean are over the BRACKETED frames only; the idle frames between pans are counted, not mixed in. A run where nothing moved is DISCARDED by the reporter and says so, rather than printing plausible numbers."
|
|
269
|
+
: "Start, mark each pan with Gesture start / end, then Stop to read the result."}
|
|
262
270
|
</SizableText>
|
|
263
271
|
{/* OUTSIDE the canvas. These were children until milestone 6, which is why
|
|
264
272
|
no device ever had a Start button. */}
|
|
265
273
|
<XStack gap="$2" alignItems="center" flexWrap="wrap">
|
|
266
|
-
<Button
|
|
274
|
+
<Button
|
|
275
|
+
size="$2"
|
|
276
|
+
{...(hasDomRealm ? {} : pressTargetStyle())}
|
|
277
|
+
disabled={sampling}
|
|
278
|
+
onPress={() => start("run")}
|
|
279
|
+
>
|
|
267
280
|
Start
|
|
268
281
|
</Button>
|
|
269
|
-
<Button
|
|
282
|
+
<Button
|
|
283
|
+
size="$2"
|
|
284
|
+
{...(hasDomRealm ? {} : pressTargetStyle())}
|
|
285
|
+
disabled={!sampling}
|
|
286
|
+
onPress={() => stop("run")}
|
|
287
|
+
>
|
|
270
288
|
Stop
|
|
271
289
|
</Button>
|
|
272
290
|
{/*
|
|
@@ -275,10 +293,19 @@ function Bench({ variant }: { readonly variant: "tamagui" | "control" }) {
|
|
|
275
293
|
scripted pan and the next — which is exactly the caveat the m6 iOS
|
|
276
294
|
number shipped with.
|
|
277
295
|
*/}
|
|
278
|
-
<Button
|
|
296
|
+
<Button
|
|
297
|
+
size="$2"
|
|
298
|
+
{...(hasDomRealm ? {} : pressTargetStyle())}
|
|
299
|
+
disabled={!sampling}
|
|
300
|
+
onPress={markGesture}
|
|
301
|
+
>
|
|
279
302
|
{inGesture ? "Gesture end" : "Gesture start"}
|
|
280
303
|
</Button>
|
|
281
|
-
<Button
|
|
304
|
+
<Button
|
|
305
|
+
size="$2"
|
|
306
|
+
{...(hasDomRealm ? {} : pressTargetStyle())}
|
|
307
|
+
onPress={() => graph.current?.relayout()}
|
|
308
|
+
>
|
|
282
309
|
Tidy
|
|
283
310
|
</Button>
|
|
284
311
|
{/*
|
|
@@ -286,7 +313,12 @@ function Bench({ variant }: { readonly variant: "tamagui" | "control" }) {
|
|
|
286
313
|
now — but because a culling change inside a sampled window silently
|
|
287
314
|
changes what the window measured.
|
|
288
315
|
*/}
|
|
289
|
-
<Button
|
|
316
|
+
<Button
|
|
317
|
+
size="$2"
|
|
318
|
+
{...(hasDomRealm ? {} : pressTargetStyle())}
|
|
319
|
+
disabled={sampling}
|
|
320
|
+
onPress={() => setCulling((on) => !on)}
|
|
321
|
+
>
|
|
290
322
|
{culling ? "Culling ON" : "Culling OFF"}
|
|
291
323
|
</Button>
|
|
292
324
|
</XStack>
|
|
@@ -306,7 +338,7 @@ function Bench({ variant }: { readonly variant: "tamagui" | "control" }) {
|
|
|
306
338
|
<SizableText size="$2" fontFamily="$mono">
|
|
307
339
|
{sampling ? "sampling…" : summarize(report)}
|
|
308
340
|
</SizableText>
|
|
309
|
-
<YStack flex={1}>
|
|
341
|
+
<YStack flex={1} minHeight={0}>
|
|
310
342
|
{/*
|
|
311
343
|
NO `key`. `onlyRenderVisibleElements` is an ordinary React Flow prop
|
|
312
344
|
and flips in place; keying the canvas on it threw the canvas away and
|
|
@@ -63,6 +63,7 @@ const meta: Meta<typeof NodeGraph> = {
|
|
|
63
63
|
parameters: {
|
|
64
64
|
status: { type: "beta" },
|
|
65
65
|
layout: "fullscreen",
|
|
66
|
+
nativeGallery: { scroll: false },
|
|
66
67
|
docs: {
|
|
67
68
|
description: {
|
|
68
69
|
component:
|
|
@@ -95,7 +96,14 @@ function ToolbarModeStory() {
|
|
|
95
96
|
}, []);
|
|
96
97
|
|
|
97
98
|
return (
|
|
98
|
-
<YStack
|
|
99
|
+
<YStack
|
|
100
|
+
width="100%"
|
|
101
|
+
height={hasDomRealm ? 560 : undefined}
|
|
102
|
+
flex={hasDomRealm ? undefined : 1}
|
|
103
|
+
minHeight={0}
|
|
104
|
+
padding="$3"
|
|
105
|
+
gap="$3"
|
|
106
|
+
>
|
|
99
107
|
<XStack alignItems="center" gap="$3" flexWrap="wrap">
|
|
100
108
|
<GraphToolbar mode={mode} onModeChange={setMode} />
|
|
101
109
|
<SizableText fontFamily="$mono" size="$2">
|
|
@@ -104,7 +112,7 @@ function ToolbarModeStory() {
|
|
|
104
112
|
}`}
|
|
105
113
|
</SizableText>
|
|
106
114
|
</XStack>
|
|
107
|
-
<YStack flex={1}>
|
|
115
|
+
<YStack flex={1} minHeight={0}>
|
|
108
116
|
<NodeGraph
|
|
109
117
|
schema={schema}
|
|
110
118
|
defaultDocument={demoDocumentLarge(12)}
|
|
@@ -156,7 +164,14 @@ function LongPressStory() {
|
|
|
156
164
|
}, []);
|
|
157
165
|
|
|
158
166
|
return (
|
|
159
|
-
<YStack
|
|
167
|
+
<YStack
|
|
168
|
+
width="100%"
|
|
169
|
+
height={hasDomRealm ? 560 : undefined}
|
|
170
|
+
flex={hasDomRealm ? undefined : 1}
|
|
171
|
+
minHeight={0}
|
|
172
|
+
padding="$3"
|
|
173
|
+
gap="$3"
|
|
174
|
+
>
|
|
160
175
|
<XStack alignItems="center" gap="$3" flexWrap="wrap">
|
|
161
176
|
<GraphToolbar mode={mode} onModeChange={setMode} />
|
|
162
177
|
<SizableText fontFamily="$mono" size="$2">
|
|
@@ -167,11 +182,11 @@ function LongPressStory() {
|
|
|
167
182
|
{`selected: ${selected.length ? selected.join(", ") : "none"}`}
|
|
168
183
|
</SizableText>
|
|
169
184
|
<SizableText size="$2" opacity={0.7}>
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
185
|
+
{hasDomRealm
|
|
186
|
+
? "Hold for 350 ms without moving more than 10 px, then drag. The interceptor takes the move stream away from d3-zoom inside the canvas's own realm, so the marquee draws and the graph underneath does not pan. A second finger cancels: a pinch is not a lasso."
|
|
187
|
+
: "Hold briefly, then drag to select. A second finger cancels the selection gesture."}
|
|
173
188
|
</SizableText>
|
|
174
|
-
<YStack flex={1}>
|
|
189
|
+
<YStack flex={1} minHeight={0}>
|
|
175
190
|
<NodeGraph
|
|
176
191
|
schema={schema}
|
|
177
192
|
defaultDocument={demoDocumentLarge(12)}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { ComponentType } from "react";
|
|
2
|
+
import { cleanup, fireEvent, screen } from "@testing-library/react";
|
|
3
|
+
import { renderWithProviders } from "@multiplatform.one/test-utils";
|
|
4
|
+
import { afterEach, expect, it, vi } from "vitest";
|
|
5
|
+
import { Undo } from "./AutoLayout.stories";
|
|
6
|
+
|
|
7
|
+
vi.mock("../native/DomOnlyStory", () => ({ hasDomRealm: false }));
|
|
8
|
+
vi.mock("../NodeGraph", () => ({
|
|
9
|
+
NodeGraph: ({ interactionMode }: { interactionMode: string }) => (
|
|
10
|
+
<div data-testid="canvas" data-mode={interactionMode} />
|
|
11
|
+
),
|
|
12
|
+
}));
|
|
13
|
+
|
|
14
|
+
afterEach(cleanup);
|
|
15
|
+
|
|
16
|
+
it("keeps useful native actions, omits the DOM-only stamp, and wires mode to the canvas", () => {
|
|
17
|
+
const Story = Undo.render as ComponentType;
|
|
18
|
+
renderWithProviders(<Story />);
|
|
19
|
+
expect(screen.queryByRole("button", { name: "Stamp positions" })).toBeNull();
|
|
20
|
+
expect(screen.queryByText("no stamp yet")).toBeNull();
|
|
21
|
+
for (const name of ["Tidy the graph", "Undo", "Redo"])
|
|
22
|
+
expect(screen.getByRole("button", { name })).toBeTruthy();
|
|
23
|
+
expect(screen.getByTestId("canvas").getAttribute("data-mode")).toBe("pan");
|
|
24
|
+
fireEvent.click(screen.getByRole("button", { name: "Select mode" }));
|
|
25
|
+
expect(screen.getByTestId("canvas").getAttribute("data-mode")).toBe("select");
|
|
26
|
+
});
|
|
@@ -37,8 +37,10 @@
|
|
|
37
37
|
|
|
38
38
|
import type { Meta, StoryObj } from "@storybook/react-native-web-vite";
|
|
39
39
|
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
40
|
-
import { Button
|
|
40
|
+
import { Button } from "@multiplatform.one/forms";
|
|
41
|
+
import { SizableText, XStack, YStack } from "tamagui";
|
|
41
42
|
import type { GraphEventWire } from "../dom/wire";
|
|
43
|
+
import type { GraphInteractionMode } from "../interaction/useLassoSelect";
|
|
42
44
|
import type { BuiltinEdgeData } from "../edges/edgeKinds";
|
|
43
45
|
import type { GraphDocument } from "../model/index";
|
|
44
46
|
import { GraphToolbar } from "../native/GraphToolbar";
|
|
@@ -59,6 +61,7 @@ const meta: Meta<typeof NodeGraph> = {
|
|
|
59
61
|
parameters: {
|
|
60
62
|
status: { type: "beta" },
|
|
61
63
|
layout: "fullscreen",
|
|
64
|
+
nativeGallery: { scroll: false },
|
|
62
65
|
docs: {
|
|
63
66
|
description: {
|
|
64
67
|
component:
|
|
@@ -154,6 +157,7 @@ function AutoLayoutPage({
|
|
|
154
157
|
readonly fitView?: boolean;
|
|
155
158
|
}) {
|
|
156
159
|
const graph = useRef<NodeGraphHandle>(null);
|
|
160
|
+
const [mode, setMode] = useState<GraphInteractionMode>("pan");
|
|
157
161
|
const [reading, setReading] = useState<LayoutReading | null>(null);
|
|
158
162
|
const [pending, setPending] = useState(false);
|
|
159
163
|
const [checksum, setChecksum] = useState<string | null>(null);
|
|
@@ -237,29 +241,34 @@ function AutoLayoutPage({
|
|
|
237
241
|
const wrongRunner = reading?.runner === "inline" && typeof globalThis.Worker === "function";
|
|
238
242
|
|
|
239
243
|
return (
|
|
240
|
-
<YStack
|
|
244
|
+
<YStack
|
|
245
|
+
width="100%"
|
|
246
|
+
height={hasDomRealm ? 640 : undefined}
|
|
247
|
+
flex={hasDomRealm ? undefined : 1}
|
|
248
|
+
minHeight={0}
|
|
249
|
+
padding="$3"
|
|
250
|
+
gap="$2"
|
|
251
|
+
>
|
|
241
252
|
<SizableText size="$2" opacity={0.7}>
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
253
|
+
{hasDomRealm
|
|
254
|
+
? "Press Tidy. The readout is the assertion: `worker-blob` on web AND on device — the relayout runs inside the canvas, and on native the canvas is a WebView, which has a real Worker. `inline` on a platform that has Worker is a failed run, not a slow one."
|
|
255
|
+
: "Tidy rearranges the graph. Undo restores its previous layout."}
|
|
245
256
|
</SizableText>
|
|
246
257
|
{/* OUTSIDE the canvas. On native a child of <NodeGraph> is dropped, which
|
|
247
258
|
is why this page had no Tidy button on any device until milestone 6. */}
|
|
248
259
|
<XStack gap="$3" alignItems="center" flexWrap="wrap">
|
|
249
260
|
<GraphToolbar
|
|
250
|
-
mode=
|
|
251
|
-
onModeChange={
|
|
261
|
+
mode={mode}
|
|
262
|
+
onModeChange={setMode}
|
|
252
263
|
onFitView={() => graph.current?.fitView()}
|
|
253
264
|
onTidy={tidy}
|
|
254
265
|
onUndo={() => graph.current?.undo()}
|
|
255
266
|
onRedo={() => graph.current?.redo()}
|
|
256
267
|
busy={pending}
|
|
257
268
|
/>
|
|
258
|
-
{showChecksum ? (
|
|
269
|
+
{showChecksum && hasDomRealm ? (
|
|
259
270
|
<>
|
|
260
|
-
<Button
|
|
261
|
-
Stamp positions
|
|
262
|
-
</Button>
|
|
271
|
+
<Button onPress={stamp}>Stamp positions</Button>
|
|
263
272
|
<SizableText size="$2" opacity={0.7}>
|
|
264
273
|
{checksum === null ? "no stamp yet" : `checksum ${checksum}`}
|
|
265
274
|
</SizableText>
|
|
@@ -297,11 +306,12 @@ function AutoLayoutPage({
|
|
|
297
306
|
</SizableText>
|
|
298
307
|
) : null}
|
|
299
308
|
</XStack>
|
|
300
|
-
<YStack flex={1}>
|
|
309
|
+
<YStack flex={1} minHeight={0}>
|
|
301
310
|
<NodeGraph
|
|
302
311
|
schema={schema}
|
|
303
312
|
defaultDocument={document}
|
|
304
313
|
fitView={fitView}
|
|
314
|
+
interactionMode={mode}
|
|
305
315
|
graphRef={graph}
|
|
306
316
|
onGraphEvent={onGraphEvent}
|
|
307
317
|
>
|
|
@@ -47,6 +47,25 @@ const relayout: GraphCommand<Nodes, Edges> = {
|
|
|
47
47
|
positions: { a: { x: 0, y: 0 }, b: { x: 0, y: 60 } },
|
|
48
48
|
};
|
|
49
49
|
|
|
50
|
+
it("reports the applied history command without notifying for an empty stack", () => {
|
|
51
|
+
const history = createHistory<Nodes, Edges>();
|
|
52
|
+
const applied: Array<[Doc, GraphCommand<Nodes, Edges>]> = [];
|
|
53
|
+
const observe = (next: Doc, command: GraphCommand<Nodes, Edges>) => applied.push([next, command]);
|
|
54
|
+
expect(history.undo(doc, observe)).toBe(doc);
|
|
55
|
+
expect(history.redo(doc, observe)).toBe(doc);
|
|
56
|
+
expect(applied).toEqual([]);
|
|
57
|
+
const changed = history.commit(doc, drag(6));
|
|
58
|
+
const undone = history.undo(changed, observe);
|
|
59
|
+
expect(undone).toEqual(doc);
|
|
60
|
+
expect(history.redo(undone, observe)).toEqual(changed);
|
|
61
|
+
expect(applied).toEqual([
|
|
62
|
+
[doc, drag(-6)],
|
|
63
|
+
[changed, drag(6)],
|
|
64
|
+
]);
|
|
65
|
+
history.redo(changed, observe);
|
|
66
|
+
expect(applied).toHaveLength(2);
|
|
67
|
+
});
|
|
68
|
+
|
|
50
69
|
describe("a 30-step drag", () => {
|
|
51
70
|
// 20 ms a step, so the gesture runs 580 ms — LONGER than the 400 ms default.
|
|
52
71
|
// That is deliberate: the window measures the gap since the last movement,
|
package/src/model/history.ts
CHANGED
|
@@ -33,8 +33,15 @@ export interface HistoryOptions {
|
|
|
33
33
|
export interface GraphHistory<N extends NodeKindDefs, E extends EdgeKindDefs> {
|
|
34
34
|
/** Apply the command, record it, return the new document. */
|
|
35
35
|
readonly commit: (doc: GraphDocument<N, E>, command: GraphCommand<N, E>) => GraphDocument<N, E>;
|
|
36
|
-
|
|
37
|
-
readonly
|
|
36
|
+
/** Notify command transports with the journal entry that produced the document. */
|
|
37
|
+
readonly undo: (
|
|
38
|
+
doc: GraphDocument<N, E>,
|
|
39
|
+
onApplied?: (next: GraphDocument<N, E>, command: GraphCommand<N, E>) => void,
|
|
40
|
+
) => GraphDocument<N, E>;
|
|
41
|
+
readonly redo: (
|
|
42
|
+
doc: GraphDocument<N, E>,
|
|
43
|
+
onApplied?: (next: GraphDocument<N, E>, command: GraphCommand<N, E>) => void,
|
|
44
|
+
) => GraphDocument<N, E>;
|
|
38
45
|
readonly canUndo: () => boolean;
|
|
39
46
|
readonly canRedo: () => boolean;
|
|
40
47
|
readonly depth: () => number;
|
|
@@ -127,18 +134,22 @@ export function createHistory<N extends NodeKindDefs, E extends EdgeKindDefs>(
|
|
|
127
134
|
return next;
|
|
128
135
|
},
|
|
129
136
|
|
|
130
|
-
undo(doc) {
|
|
137
|
+
undo(doc, onApplied) {
|
|
131
138
|
const entry = past.pop();
|
|
132
139
|
if (!entry) return doc;
|
|
133
140
|
future.push(entry);
|
|
134
|
-
|
|
141
|
+
const next = applyCommand(doc, entry.undo);
|
|
142
|
+
onApplied?.(next, entry.undo);
|
|
143
|
+
return next;
|
|
135
144
|
},
|
|
136
145
|
|
|
137
|
-
redo(doc) {
|
|
146
|
+
redo(doc, onApplied) {
|
|
138
147
|
const entry = future.pop();
|
|
139
148
|
if (!entry) return doc;
|
|
140
149
|
past.push(entry);
|
|
141
|
-
|
|
150
|
+
const next = applyCommand(doc, entry.redo);
|
|
151
|
+
onApplied?.(next, entry.redo);
|
|
152
|
+
return next;
|
|
142
153
|
},
|
|
143
154
|
|
|
144
155
|
canUndo: () => past.length > 0,
|