@multiplatform.one/node-graph 7.7.2
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/LICENSE +201 -0
- package/README.md +80 -0
- package/css/graph.css +171 -0
- package/demo.ts +14 -0
- package/dist/cjs/NodeGraph.cjs +34 -0
- package/dist/cjs/NodeGraph.native.js +37 -0
- package/dist/cjs/NodeGraph.native.js.map +1 -0
- package/dist/cjs/bench/frameSampler.cjs +290 -0
- package/dist/cjs/bench/frameSampler.native.js +409 -0
- package/dist/cjs/bench/frameSampler.native.js.map +1 -0
- package/dist/cjs/bench/generateGraph.cjs +125 -0
- package/dist/cjs/bench/generateGraph.native.js +128 -0
- package/dist/cjs/bench/generateGraph.native.js.map +1 -0
- package/dist/cjs/diagnostics/GraphDiagnostics.cjs +154 -0
- package/dist/cjs/diagnostics/GraphDiagnostics.native.js +166 -0
- package/dist/cjs/diagnostics/GraphDiagnostics.native.js.map +1 -0
- package/dist/cjs/diagnostics/LiveGraphDiagnostics.cjs +101 -0
- package/dist/cjs/diagnostics/LiveGraphDiagnostics.native.js +106 -0
- package/dist/cjs/diagnostics/LiveGraphDiagnostics.native.js.map +1 -0
- package/dist/cjs/diagnostics/fromWire.cjs +48 -0
- package/dist/cjs/diagnostics/fromWire.native.js +51 -0
- package/dist/cjs/diagnostics/fromWire.native.js.map +1 -0
- package/dist/cjs/diagnostics/lastError.cjs +67 -0
- package/dist/cjs/diagnostics/lastError.native.js +75 -0
- package/dist/cjs/diagnostics/lastError.native.js.map +1 -0
- package/dist/cjs/diagnostics/types.cjs +18 -0
- package/dist/cjs/diagnostics/types.native.js +21 -0
- package/dist/cjs/diagnostics/types.native.js.map +1 -0
- package/dist/cjs/diagnostics/useGraphDiagnostics.cjs +69 -0
- package/dist/cjs/diagnostics/useGraphDiagnostics.native.js +75 -0
- package/dist/cjs/diagnostics/useGraphDiagnostics.native.js.map +1 -0
- package/dist/cjs/dom/GraphDomLayout.cjs +37 -0
- package/dist/cjs/dom/GraphDomLayout.native.js +40 -0
- package/dist/cjs/dom/GraphDomLayout.native.js.map +1 -0
- package/dist/cjs/dom/boot.cjs +100 -0
- package/dist/cjs/dom/boot.native.js +111 -0
- package/dist/cjs/dom/boot.native.js.map +1 -0
- package/dist/cjs/dom/wire.cjs +215 -0
- package/dist/cjs/dom/wire.native.js +274 -0
- package/dist/cjs/dom/wire.native.js.map +1 -0
- package/dist/cjs/edges/GraphEdge.cjs +169 -0
- package/dist/cjs/edges/GraphEdge.native.js +178 -0
- package/dist/cjs/edges/GraphEdge.native.js.map +1 -0
- package/dist/cjs/edges/edgeKinds.cjs +51 -0
- package/dist/cjs/edges/edgeKinds.native.js +54 -0
- package/dist/cjs/edges/edgeKinds.native.js.map +1 -0
- package/dist/cjs/edges/edgeStyle.cjs +94 -0
- package/dist/cjs/edges/edgeStyle.native.js +99 -0
- package/dist/cjs/edges/edgeStyle.native.js.map +1 -0
- package/dist/cjs/index.cjs +197 -0
- package/dist/cjs/index.native.js +200 -0
- package/dist/cjs/index.native.js.map +1 -0
- package/dist/cjs/interaction/lassoIntercept.cjs +54 -0
- package/dist/cjs/interaction/lassoIntercept.native.js +57 -0
- package/dist/cjs/interaction/lassoIntercept.native.js.map +1 -0
- package/dist/cjs/interaction/legalTargets.cjs +75 -0
- package/dist/cjs/interaction/legalTargets.native.js +118 -0
- package/dist/cjs/interaction/legalTargets.native.js.map +1 -0
- package/dist/cjs/interaction/snapAlignment.cjs +165 -0
- package/dist/cjs/interaction/snapAlignment.native.js +245 -0
- package/dist/cjs/interaction/snapAlignment.native.js.map +1 -0
- package/dist/cjs/interaction/snapChanges.cjs +214 -0
- package/dist/cjs/interaction/snapChanges.native.js +269 -0
- package/dist/cjs/interaction/snapChanges.native.js.map +1 -0
- package/dist/cjs/interaction/spatialHash.cjs +97 -0
- package/dist/cjs/interaction/spatialHash.native.js +165 -0
- package/dist/cjs/interaction/spatialHash.native.js.map +1 -0
- package/dist/cjs/interaction/useLassoSelect.cjs +259 -0
- package/dist/cjs/interaction/useLassoSelect.native.js +287 -0
- package/dist/cjs/interaction/useLassoSelect.native.js.map +1 -0
- package/dist/cjs/knobs/KnobEnvelopeProvider.cjs +77 -0
- package/dist/cjs/knobs/KnobEnvelopeProvider.native.js +85 -0
- package/dist/cjs/knobs/KnobEnvelopeProvider.native.js.map +1 -0
- package/dist/cjs/knobs/envelope.cjs +59 -0
- package/dist/cjs/knobs/envelope.native.js +78 -0
- package/dist/cjs/knobs/envelope.native.js.map +1 -0
- package/dist/cjs/knobs/graphKnobs.cjs +39 -0
- package/dist/cjs/knobs/graphKnobs.native.js +43 -0
- package/dist/cjs/knobs/graphKnobs.native.js.map +1 -0
- package/dist/cjs/knobs/useKnobEnvelope.cjs +108 -0
- package/dist/cjs/knobs/useKnobEnvelope.native.js +140 -0
- package/dist/cjs/knobs/useKnobEnvelope.native.js.map +1 -0
- package/dist/cjs/layout/dagre.cjs +125 -0
- package/dist/cjs/layout/dagre.native.js +259 -0
- package/dist/cjs/layout/dagre.native.js.map +1 -0
- package/dist/cjs/layout/layout.cjs +84 -0
- package/dist/cjs/layout/layout.native.js +112 -0
- package/dist/cjs/layout/layout.native.js.map +1 -0
- package/dist/cjs/layout/runner.cjs +194 -0
- package/dist/cjs/layout/runner.native.js +247 -0
- package/dist/cjs/layout/runner.native.js.map +1 -0
- package/dist/cjs/layout/structuredCloneShim.cjs +80 -0
- package/dist/cjs/layout/structuredCloneShim.native.js +160 -0
- package/dist/cjs/layout/structuredCloneShim.native.js.map +1 -0
- package/dist/cjs/layout/types.cjs +18 -0
- package/dist/cjs/layout/types.native.js +21 -0
- package/dist/cjs/layout/types.native.js.map +1 -0
- package/dist/cjs/layout/worker.entry.cjs +58 -0
- package/dist/cjs/layout/worker.entry.native.js +75 -0
- package/dist/cjs/layout/worker.entry.native.js.map +1 -0
- package/dist/cjs/layout/worker.generated.cjs +32 -0
- package/dist/cjs/layout/worker.generated.native.js +35 -0
- package/dist/cjs/layout/worker.generated.native.js.map +1 -0
- package/dist/cjs/model/commands.cjs +235 -0
- package/dist/cjs/model/commands.native.js +317 -0
- package/dist/cjs/model/commands.native.js.map +1 -0
- package/dist/cjs/model/connect.cjs +159 -0
- package/dist/cjs/model/connect.native.js +239 -0
- package/dist/cjs/model/connect.native.js.map +1 -0
- package/dist/cjs/model/document.cjs +18 -0
- package/dist/cjs/model/document.native.js +21 -0
- package/dist/cjs/model/document.native.js.map +1 -0
- package/dist/cjs/model/history.cjs +121 -0
- package/dist/cjs/model/history.native.js +178 -0
- package/dist/cjs/model/history.native.js.map +1 -0
- package/dist/cjs/model/index.cjs +60 -0
- package/dist/cjs/model/index.native.js +63 -0
- package/dist/cjs/model/index.native.js.map +1 -0
- package/dist/cjs/model/schema.cjs +63 -0
- package/dist/cjs/model/schema.native.js +68 -0
- package/dist/cjs/model/schema.native.js.map +1 -0
- package/dist/cjs/model/select.cjs +78 -0
- package/dist/cjs/model/select.native.js +107 -0
- package/dist/cjs/model/select.native.js.map +1 -0
- package/dist/cjs/model/serialize.cjs +332 -0
- package/dist/cjs/model/serialize.native.js +374 -0
- package/dist/cjs/model/serialize.native.js.map +1 -0
- package/dist/cjs/native/DomOnlyStory.cjs +60 -0
- package/dist/cjs/native/DomOnlyStory.native.js +66 -0
- package/dist/cjs/native/DomOnlyStory.native.js.map +1 -0
- package/dist/cjs/native/GraphToolbar.cjs +101 -0
- package/dist/cjs/native/GraphToolbar.native.js +107 -0
- package/dist/cjs/native/GraphToolbar.native.js.map +1 -0
- package/dist/cjs/native/domEntryRegistry.cjs +39 -0
- package/dist/cjs/native/domEntryRegistry.native.js +42 -0
- package/dist/cjs/native/domEntryRegistry.native.js.map +1 -0
- package/dist/cjs/native/graphChildren.cjs +45 -0
- package/dist/cjs/native/graphChildren.native.js +50 -0
- package/dist/cjs/native/graphChildren.native.js.map +1 -0
- package/dist/cjs/nodes/GraphNode.cjs +161 -0
- package/dist/cjs/nodes/GraphNode.native.js +206 -0
- package/dist/cjs/nodes/GraphNode.native.js.map +1 -0
- package/dist/cjs/nodes/GraphPort.cjs +104 -0
- package/dist/cjs/nodes/GraphPort.native.js +108 -0
- package/dist/cjs/nodes/GraphPort.native.js.map +1 -0
- package/dist/cjs/nodes/handleGeometry.cjs +98 -0
- package/dist/cjs/nodes/handleGeometry.native.js +104 -0
- package/dist/cjs/nodes/handleGeometry.native.js.map +1 -0
- package/dist/cjs/nodes/lod.cjs +41 -0
- package/dist/cjs/nodes/lod.native.js +45 -0
- package/dist/cjs/nodes/lod.native.js.map +1 -0
- package/dist/cjs/nodes/nodeMeasure.cjs +108 -0
- package/dist/cjs/nodes/nodeMeasure.native.js +134 -0
- package/dist/cjs/nodes/nodeMeasure.native.js.map +1 -0
- package/dist/cjs/nodes/overviewNode.cjs +74 -0
- package/dist/cjs/nodes/overviewNode.native.js +81 -0
- package/dist/cjs/nodes/overviewNode.native.js.map +1 -0
- package/dist/cjs/react-flow/ConnectionPuck.cjs +122 -0
- package/dist/cjs/react-flow/ConnectionPuck.native.js +143 -0
- package/dist/cjs/react-flow/ConnectionPuck.native.js.map +1 -0
- package/dist/cjs/react-flow/GraphActions.cjs +47 -0
- package/dist/cjs/react-flow/GraphActions.native.js +51 -0
- package/dist/cjs/react-flow/GraphActions.native.js.map +1 -0
- package/dist/cjs/react-flow/GraphCommandBridge.cjs +238 -0
- package/dist/cjs/react-flow/GraphCommandBridge.native.js +272 -0
- package/dist/cjs/react-flow/GraphCommandBridge.native.js.map +1 -0
- package/dist/cjs/react-flow/GraphNodeHost.cjs +77 -0
- package/dist/cjs/react-flow/GraphNodeHost.native.js +89 -0
- package/dist/cjs/react-flow/GraphNodeHost.native.js.map +1 -0
- package/dist/cjs/react-flow/GraphPaintProbe.cjs +60 -0
- package/dist/cjs/react-flow/GraphPaintProbe.native.js +65 -0
- package/dist/cjs/react-flow/GraphPaintProbe.native.js.map +1 -0
- package/dist/cjs/react-flow/GraphZoomVar.cjs +42 -0
- package/dist/cjs/react-flow/GraphZoomVar.native.js +48 -0
- package/dist/cjs/react-flow/GraphZoomVar.native.js.map +1 -0
- package/dist/cjs/react-flow/LassoOverlay.cjs +47 -0
- package/dist/cjs/react-flow/LassoOverlay.native.js +51 -0
- package/dist/cjs/react-flow/LassoOverlay.native.js.map +1 -0
- package/dist/cjs/react-flow/NodeGraphWeb.cjs +386 -0
- package/dist/cjs/react-flow/NodeGraphWeb.native.js +515 -0
- package/dist/cjs/react-flow/NodeGraphWeb.native.js.map +1 -0
- package/dist/cjs/react-flow/SnapGuides.cjs +89 -0
- package/dist/cjs/react-flow/SnapGuides.native.js +114 -0
- package/dist/cjs/react-flow/SnapGuides.native.js.map +1 -0
- package/dist/cjs/react-flow/demoControlBody.cjs +93 -0
- package/dist/cjs/react-flow/demoControlBody.native.js +104 -0
- package/dist/cjs/react-flow/demoControlBody.native.js.map +1 -0
- package/dist/cjs/react-flow/demoNodeBody.cjs +121 -0
- package/dist/cjs/react-flow/demoNodeBody.native.js +131 -0
- package/dist/cjs/react-flow/demoNodeBody.native.js.map +1 -0
- package/dist/cjs/react-flow/fixtures.cjs +215 -0
- package/dist/cjs/react-flow/fixtures.native.js +225 -0
- package/dist/cjs/react-flow/fixtures.native.js.map +1 -0
- package/dist/cjs/react-flow/flowAdapter.cjs +121 -0
- package/dist/cjs/react-flow/flowAdapter.native.js +133 -0
- package/dist/cjs/react-flow/flowAdapter.native.js.map +1 -0
- package/dist/cjs/react-flow/graphHandle.cjs +28 -0
- package/dist/cjs/react-flow/graphHandle.native.js +31 -0
- package/dist/cjs/react-flow/graphHandle.native.js.map +1 -0
- package/dist/cjs/react-flow/nodeCensus.cjs +56 -0
- package/dist/cjs/react-flow/nodeCensus.native.js +80 -0
- package/dist/cjs/react-flow/nodeCensus.native.js.map +1 -0
- package/dist/cjs/react-flow/useGraphController.cjs +297 -0
- package/dist/cjs/react-flow/useGraphController.native.js +393 -0
- package/dist/cjs/react-flow/useGraphController.native.js.map +1 -0
- package/dist/cjs/react-flow/xy.cjs +60 -0
- package/dist/cjs/react-flow/xy.native.js +63 -0
- package/dist/cjs/react-flow/xy.native.js.map +1 -0
- package/dist/cjs/theme/GraphFaces.cjs +114 -0
- package/dist/cjs/theme/GraphFaces.native.js +181 -0
- package/dist/cjs/theme/GraphFaces.native.js.map +1 -0
- package/dist/cjs/theme/GraphVarsStyle.cjs +88 -0
- package/dist/cjs/theme/GraphVarsStyle.native.js +100 -0
- package/dist/cjs/theme/GraphVarsStyle.native.js.map +1 -0
- package/dist/cjs/theme/faces.cjs +121 -0
- package/dist/cjs/theme/faces.generated.cjs +48 -0
- package/dist/cjs/theme/faces.generated.native.js +51 -0
- package/dist/cjs/theme/faces.generated.native.js.map +1 -0
- package/dist/cjs/theme/faces.native.js +133 -0
- package/dist/cjs/theme/faces.native.js.map +1 -0
- package/dist/cjs/theme/graphVars.cjs +318 -0
- package/dist/cjs/theme/graphVars.native.js +351 -0
- package/dist/cjs/theme/graphVars.native.js.map +1 -0
- package/dist/esm/NodeGraph.mjs +9 -0
- package/dist/esm/NodeGraph.mjs.map +1 -0
- package/dist/esm/NodeGraph.native.js +9 -0
- package/dist/esm/NodeGraph.native.js.map +1 -0
- package/dist/esm/bench/frameSampler.mjs +255 -0
- package/dist/esm/bench/frameSampler.mjs.map +1 -0
- package/dist/esm/bench/frameSampler.native.js +371 -0
- package/dist/esm/bench/frameSampler.native.js.map +1 -0
- package/dist/esm/bench/generateGraph.mjs +99 -0
- package/dist/esm/bench/generateGraph.mjs.map +1 -0
- package/dist/esm/bench/generateGraph.native.js +99 -0
- package/dist/esm/bench/generateGraph.native.js.map +1 -0
- package/dist/esm/diagnostics/GraphDiagnostics.mjs +128 -0
- package/dist/esm/diagnostics/GraphDiagnostics.mjs.map +1 -0
- package/dist/esm/diagnostics/GraphDiagnostics.native.js +137 -0
- package/dist/esm/diagnostics/GraphDiagnostics.native.js.map +1 -0
- package/dist/esm/diagnostics/LiveGraphDiagnostics.mjs +76 -0
- package/dist/esm/diagnostics/LiveGraphDiagnostics.mjs.map +1 -0
- package/dist/esm/diagnostics/LiveGraphDiagnostics.native.js +78 -0
- package/dist/esm/diagnostics/LiveGraphDiagnostics.native.js.map +1 -0
- package/dist/esm/diagnostics/fromWire.mjs +23 -0
- package/dist/esm/diagnostics/fromWire.mjs.map +1 -0
- package/dist/esm/diagnostics/fromWire.native.js +23 -0
- package/dist/esm/diagnostics/fromWire.native.js.map +1 -0
- package/dist/esm/diagnostics/lastError.mjs +39 -0
- package/dist/esm/diagnostics/lastError.mjs.map +1 -0
- package/dist/esm/diagnostics/lastError.native.js +44 -0
- package/dist/esm/diagnostics/lastError.native.js.map +1 -0
- package/dist/esm/diagnostics/types.mjs +2 -0
- package/dist/esm/diagnostics/types.mjs.map +1 -0
- package/dist/esm/diagnostics/types.native.js +2 -0
- package/dist/esm/diagnostics/types.native.js.map +1 -0
- package/dist/esm/diagnostics/useGraphDiagnostics.mjs +44 -0
- package/dist/esm/diagnostics/useGraphDiagnostics.mjs.map +1 -0
- package/dist/esm/diagnostics/useGraphDiagnostics.native.js +47 -0
- package/dist/esm/diagnostics/useGraphDiagnostics.native.js.map +1 -0
- package/dist/esm/dom/GraphDomLayout.mjs +11 -0
- package/dist/esm/dom/GraphDomLayout.mjs.map +1 -0
- package/dist/esm/dom/GraphDomLayout.native.js +11 -0
- package/dist/esm/dom/GraphDomLayout.native.js.map +1 -0
- package/dist/esm/dom/boot.mjs +67 -0
- package/dist/esm/dom/boot.mjs.map +1 -0
- package/dist/esm/dom/boot.native.js +75 -0
- package/dist/esm/dom/boot.native.js.map +1 -0
- package/dist/esm/dom/wire.mjs +183 -0
- package/dist/esm/dom/wire.mjs.map +1 -0
- package/dist/esm/dom/wire.native.js +239 -0
- package/dist/esm/dom/wire.native.js.map +1 -0
- package/dist/esm/edges/GraphEdge.mjs +139 -0
- package/dist/esm/edges/GraphEdge.mjs.map +1 -0
- package/dist/esm/edges/GraphEdge.native.js +145 -0
- package/dist/esm/edges/GraphEdge.native.js.map +1 -0
- package/dist/esm/edges/edgeKinds.mjs +25 -0
- package/dist/esm/edges/edgeKinds.mjs.map +1 -0
- package/dist/esm/edges/edgeKinds.native.js +25 -0
- package/dist/esm/edges/edgeKinds.native.js.map +1 -0
- package/dist/esm/edges/edgeStyle.mjs +63 -0
- package/dist/esm/edges/edgeStyle.mjs.map +1 -0
- package/dist/esm/edges/edgeStyle.native.js +65 -0
- package/dist/esm/edges/edgeStyle.native.js.map +1 -0
- package/dist/esm/index.mjs +50 -0
- package/dist/esm/index.mjs.map +1 -0
- package/dist/esm/index.native.js +50 -0
- package/dist/esm/index.native.js.map +1 -0
- package/dist/esm/interaction/lassoIntercept.mjs +29 -0
- package/dist/esm/interaction/lassoIntercept.mjs.map +1 -0
- package/dist/esm/interaction/lassoIntercept.native.js +29 -0
- package/dist/esm/interaction/lassoIntercept.native.js.map +1 -0
- package/dist/esm/interaction/legalTargets.mjs +48 -0
- package/dist/esm/interaction/legalTargets.mjs.map +1 -0
- package/dist/esm/interaction/legalTargets.native.js +88 -0
- package/dist/esm/interaction/legalTargets.native.js.map +1 -0
- package/dist/esm/interaction/snapAlignment.mjs +137 -0
- package/dist/esm/interaction/snapAlignment.mjs.map +1 -0
- package/dist/esm/interaction/snapAlignment.native.js +214 -0
- package/dist/esm/interaction/snapAlignment.native.js.map +1 -0
- package/dist/esm/interaction/snapChanges.mjs +184 -0
- package/dist/esm/interaction/snapChanges.mjs.map +1 -0
- package/dist/esm/interaction/snapChanges.native.js +236 -0
- package/dist/esm/interaction/snapChanges.native.js.map +1 -0
- package/dist/esm/interaction/spatialHash.mjs +71 -0
- package/dist/esm/interaction/spatialHash.mjs.map +1 -0
- package/dist/esm/interaction/spatialHash.native.js +136 -0
- package/dist/esm/interaction/spatialHash.native.js.map +1 -0
- package/dist/esm/interaction/useLassoSelect.mjs +231 -0
- package/dist/esm/interaction/useLassoSelect.mjs.map +1 -0
- package/dist/esm/interaction/useLassoSelect.native.js +256 -0
- package/dist/esm/interaction/useLassoSelect.native.js.map +1 -0
- package/dist/esm/knobs/KnobEnvelopeProvider.mjs +51 -0
- package/dist/esm/knobs/KnobEnvelopeProvider.mjs.map +1 -0
- package/dist/esm/knobs/KnobEnvelopeProvider.native.js +56 -0
- package/dist/esm/knobs/KnobEnvelopeProvider.native.js.map +1 -0
- package/dist/esm/knobs/envelope.mjs +29 -0
- package/dist/esm/knobs/envelope.mjs.map +1 -0
- package/dist/esm/knobs/envelope.native.js +45 -0
- package/dist/esm/knobs/envelope.native.js.map +1 -0
- package/dist/esm/knobs/graphKnobs.mjs +14 -0
- package/dist/esm/knobs/graphKnobs.mjs.map +1 -0
- package/dist/esm/knobs/graphKnobs.native.js +15 -0
- package/dist/esm/knobs/graphKnobs.native.js.map +1 -0
- package/dist/esm/knobs/useKnobEnvelope.mjs +83 -0
- package/dist/esm/knobs/useKnobEnvelope.mjs.map +1 -0
- package/dist/esm/knobs/useKnobEnvelope.native.js +112 -0
- package/dist/esm/knobs/useKnobEnvelope.native.js.map +1 -0
- package/dist/esm/layout/dagre.mjs +99 -0
- package/dist/esm/layout/dagre.mjs.map +1 -0
- package/dist/esm/layout/dagre.native.js +230 -0
- package/dist/esm/layout/dagre.native.js.map +1 -0
- package/dist/esm/layout/layout.mjs +57 -0
- package/dist/esm/layout/layout.mjs.map +1 -0
- package/dist/esm/layout/layout.native.js +82 -0
- package/dist/esm/layout/layout.native.js.map +1 -0
- package/dist/esm/layout/runner.mjs +164 -0
- package/dist/esm/layout/runner.mjs.map +1 -0
- package/dist/esm/layout/runner.native.js +214 -0
- package/dist/esm/layout/runner.native.js.map +1 -0
- package/dist/esm/layout/structuredCloneShim.mjs +54 -0
- package/dist/esm/layout/structuredCloneShim.mjs.map +1 -0
- package/dist/esm/layout/structuredCloneShim.native.js +131 -0
- package/dist/esm/layout/structuredCloneShim.native.js.map +1 -0
- package/dist/esm/layout/types.mjs +2 -0
- package/dist/esm/layout/types.mjs.map +1 -0
- package/dist/esm/layout/types.native.js +2 -0
- package/dist/esm/layout/types.native.js.map +1 -0
- package/dist/esm/layout/worker.entry.mjs +33 -0
- package/dist/esm/layout/worker.entry.mjs.map +1 -0
- package/dist/esm/layout/worker.entry.native.js +47 -0
- package/dist/esm/layout/worker.entry.native.js.map +1 -0
- package/dist/esm/layout/worker.generated.mjs +5 -0
- package/dist/esm/layout/worker.generated.mjs.map +1 -0
- package/dist/esm/layout/worker.generated.native.js +5 -0
- package/dist/esm/layout/worker.generated.native.js.map +1 -0
- package/dist/esm/model/commands.mjs +209 -0
- package/dist/esm/model/commands.mjs.map +1 -0
- package/dist/esm/model/commands.native.js +288 -0
- package/dist/esm/model/commands.native.js.map +1 -0
- package/dist/esm/model/connect.mjs +124 -0
- package/dist/esm/model/connect.mjs.map +1 -0
- package/dist/esm/model/connect.native.js +201 -0
- package/dist/esm/model/connect.native.js.map +1 -0
- package/dist/esm/model/document.mjs +2 -0
- package/dist/esm/model/document.mjs.map +1 -0
- package/dist/esm/model/document.native.js +2 -0
- package/dist/esm/model/document.native.js.map +1 -0
- package/dist/esm/model/history.mjs +96 -0
- package/dist/esm/model/history.mjs.map +1 -0
- package/dist/esm/model/history.native.js +150 -0
- package/dist/esm/model/history.native.js.map +1 -0
- package/dist/esm/model/index.mjs +8 -0
- package/dist/esm/model/index.mjs.map +1 -0
- package/dist/esm/model/index.native.js +8 -0
- package/dist/esm/model/index.native.js.map +1 -0
- package/dist/esm/model/schema.mjs +32 -0
- package/dist/esm/model/schema.mjs.map +1 -0
- package/dist/esm/model/schema.native.js +34 -0
- package/dist/esm/model/schema.native.js.map +1 -0
- package/dist/esm/model/select.mjs +49 -0
- package/dist/esm/model/select.mjs.map +1 -0
- package/dist/esm/model/select.native.js +75 -0
- package/dist/esm/model/select.native.js.map +1 -0
- package/dist/esm/model/serialize.mjs +306 -0
- package/dist/esm/model/serialize.mjs.map +1 -0
- package/dist/esm/model/serialize.native.js +345 -0
- package/dist/esm/model/serialize.native.js.map +1 -0
- package/dist/esm/native/DomOnlyStory.mjs +33 -0
- package/dist/esm/native/DomOnlyStory.mjs.map +1 -0
- package/dist/esm/native/DomOnlyStory.native.js +36 -0
- package/dist/esm/native/DomOnlyStory.native.js.map +1 -0
- package/dist/esm/native/GraphToolbar.mjs +76 -0
- package/dist/esm/native/GraphToolbar.mjs.map +1 -0
- package/dist/esm/native/GraphToolbar.native.js +79 -0
- package/dist/esm/native/GraphToolbar.native.js.map +1 -0
- package/dist/esm/native/domEntryRegistry.mjs +12 -0
- package/dist/esm/native/domEntryRegistry.mjs.map +1 -0
- package/dist/esm/native/domEntryRegistry.native.js +12 -0
- package/dist/esm/native/domEntryRegistry.native.js.map +1 -0
- package/dist/esm/native/graphChildren.mjs +18 -0
- package/dist/esm/native/graphChildren.mjs.map +1 -0
- package/dist/esm/native/graphChildren.native.js +20 -0
- package/dist/esm/native/graphChildren.native.js.map +1 -0
- package/dist/esm/nodes/GraphNode.mjs +136 -0
- package/dist/esm/nodes/GraphNode.mjs.map +1 -0
- package/dist/esm/nodes/GraphNode.native.js +178 -0
- package/dist/esm/nodes/GraphNode.native.js.map +1 -0
- package/dist/esm/nodes/GraphPort.mjs +79 -0
- package/dist/esm/nodes/GraphPort.mjs.map +1 -0
- package/dist/esm/nodes/GraphPort.native.js +80 -0
- package/dist/esm/nodes/GraphPort.native.js.map +1 -0
- package/dist/esm/nodes/handleGeometry.mjs +65 -0
- package/dist/esm/nodes/handleGeometry.mjs.map +1 -0
- package/dist/esm/nodes/handleGeometry.native.js +68 -0
- package/dist/esm/nodes/handleGeometry.native.js.map +1 -0
- package/dist/esm/nodes/lod.mjs +13 -0
- package/dist/esm/nodes/lod.mjs.map +1 -0
- package/dist/esm/nodes/lod.native.js +14 -0
- package/dist/esm/nodes/lod.native.js.map +1 -0
- package/dist/esm/nodes/nodeMeasure.mjs +72 -0
- package/dist/esm/nodes/nodeMeasure.mjs.map +1 -0
- package/dist/esm/nodes/nodeMeasure.native.js +95 -0
- package/dist/esm/nodes/nodeMeasure.native.js.map +1 -0
- package/dist/esm/nodes/overviewNode.mjs +49 -0
- package/dist/esm/nodes/overviewNode.mjs.map +1 -0
- package/dist/esm/nodes/overviewNode.native.js +53 -0
- package/dist/esm/nodes/overviewNode.native.js.map +1 -0
- package/dist/esm/react-flow/ConnectionPuck.mjs +96 -0
- package/dist/esm/react-flow/ConnectionPuck.mjs.map +1 -0
- package/dist/esm/react-flow/ConnectionPuck.native.js +114 -0
- package/dist/esm/react-flow/ConnectionPuck.native.js.map +1 -0
- package/dist/esm/react-flow/GraphActions.mjs +21 -0
- package/dist/esm/react-flow/GraphActions.mjs.map +1 -0
- package/dist/esm/react-flow/GraphActions.native.js +22 -0
- package/dist/esm/react-flow/GraphActions.native.js.map +1 -0
- package/dist/esm/react-flow/GraphCommandBridge.mjs +213 -0
- package/dist/esm/react-flow/GraphCommandBridge.mjs.map +1 -0
- package/dist/esm/react-flow/GraphCommandBridge.native.js +244 -0
- package/dist/esm/react-flow/GraphCommandBridge.native.js.map +1 -0
- package/dist/esm/react-flow/GraphNodeHost.mjs +50 -0
- package/dist/esm/react-flow/GraphNodeHost.mjs.map +1 -0
- package/dist/esm/react-flow/GraphNodeHost.native.js +59 -0
- package/dist/esm/react-flow/GraphNodeHost.native.js.map +1 -0
- package/dist/esm/react-flow/GraphPaintProbe.mjs +35 -0
- package/dist/esm/react-flow/GraphPaintProbe.mjs.map +1 -0
- package/dist/esm/react-flow/GraphPaintProbe.native.js +37 -0
- package/dist/esm/react-flow/GraphPaintProbe.native.js.map +1 -0
- package/dist/esm/react-flow/GraphZoomVar.mjs +16 -0
- package/dist/esm/react-flow/GraphZoomVar.mjs.map +1 -0
- package/dist/esm/react-flow/GraphZoomVar.native.js +19 -0
- package/dist/esm/react-flow/GraphZoomVar.native.js.map +1 -0
- package/dist/esm/react-flow/LassoOverlay.mjs +22 -0
- package/dist/esm/react-flow/LassoOverlay.mjs.map +1 -0
- package/dist/esm/react-flow/LassoOverlay.native.js +23 -0
- package/dist/esm/react-flow/LassoOverlay.native.js.map +1 -0
- package/dist/esm/react-flow/NodeGraphWeb.mjs +359 -0
- package/dist/esm/react-flow/NodeGraphWeb.mjs.map +1 -0
- package/dist/esm/react-flow/NodeGraphWeb.native.js +485 -0
- package/dist/esm/react-flow/NodeGraphWeb.native.js.map +1 -0
- package/dist/esm/react-flow/SnapGuides.mjs +60 -0
- package/dist/esm/react-flow/SnapGuides.mjs.map +1 -0
- package/dist/esm/react-flow/SnapGuides.native.js +82 -0
- package/dist/esm/react-flow/SnapGuides.native.js.map +1 -0
- package/dist/esm/react-flow/demoControlBody.mjs +67 -0
- package/dist/esm/react-flow/demoControlBody.mjs.map +1 -0
- package/dist/esm/react-flow/demoControlBody.native.js +75 -0
- package/dist/esm/react-flow/demoControlBody.native.js.map +1 -0
- package/dist/esm/react-flow/demoNodeBody.mjs +91 -0
- package/dist/esm/react-flow/demoNodeBody.mjs.map +1 -0
- package/dist/esm/react-flow/demoNodeBody.native.js +98 -0
- package/dist/esm/react-flow/demoNodeBody.native.js.map +1 -0
- package/dist/esm/react-flow/fixtures.mjs +185 -0
- package/dist/esm/react-flow/fixtures.mjs.map +1 -0
- package/dist/esm/react-flow/fixtures.native.js +192 -0
- package/dist/esm/react-flow/fixtures.native.js.map +1 -0
- package/dist/esm/react-flow/flowAdapter.mjs +94 -0
- package/dist/esm/react-flow/flowAdapter.mjs.map +1 -0
- package/dist/esm/react-flow/flowAdapter.native.js +103 -0
- package/dist/esm/react-flow/flowAdapter.native.js.map +1 -0
- package/dist/esm/react-flow/graphHandle.mjs +3 -0
- package/dist/esm/react-flow/graphHandle.mjs.map +1 -0
- package/dist/esm/react-flow/graphHandle.native.js +3 -0
- package/dist/esm/react-flow/graphHandle.native.js.map +1 -0
- package/dist/esm/react-flow/nodeCensus.mjs +28 -0
- package/dist/esm/react-flow/nodeCensus.mjs.map +1 -0
- package/dist/esm/react-flow/nodeCensus.native.js +49 -0
- package/dist/esm/react-flow/nodeCensus.native.js.map +1 -0
- package/dist/esm/react-flow/useGraphController.mjs +269 -0
- package/dist/esm/react-flow/useGraphController.mjs.map +1 -0
- package/dist/esm/react-flow/useGraphController.native.js +362 -0
- package/dist/esm/react-flow/useGraphController.native.js.map +1 -0
- package/dist/esm/react-flow/xy.mjs +8 -0
- package/dist/esm/react-flow/xy.mjs.map +1 -0
- package/dist/esm/react-flow/xy.native.js +8 -0
- package/dist/esm/react-flow/xy.native.js.map +1 -0
- package/dist/esm/theme/GraphFaces.mjs +88 -0
- package/dist/esm/theme/GraphFaces.mjs.map +1 -0
- package/dist/esm/theme/GraphFaces.native.js +152 -0
- package/dist/esm/theme/GraphFaces.native.js.map +1 -0
- package/dist/esm/theme/GraphVarsStyle.mjs +59 -0
- package/dist/esm/theme/GraphVarsStyle.mjs.map +1 -0
- package/dist/esm/theme/GraphVarsStyle.native.js +68 -0
- package/dist/esm/theme/GraphVarsStyle.native.js.map +1 -0
- package/dist/esm/theme/faces.generated.mjs +23 -0
- package/dist/esm/theme/faces.generated.mjs.map +1 -0
- package/dist/esm/theme/faces.generated.native.js +23 -0
- package/dist/esm/theme/faces.generated.native.js.map +1 -0
- package/dist/esm/theme/faces.mjs +89 -0
- package/dist/esm/theme/faces.mjs.map +1 -0
- package/dist/esm/theme/faces.native.js +98 -0
- package/dist/esm/theme/faces.native.js.map +1 -0
- package/dist/esm/theme/graphVars.mjs +284 -0
- package/dist/esm/theme/graphVars.mjs.map +1 -0
- package/dist/esm/theme/graphVars.native.js +314 -0
- package/dist/esm/theme/graphVars.native.js.map +1 -0
- package/dist/jsx/NodeGraph.mjs +9 -0
- package/dist/jsx/NodeGraph.mjs.map +1 -0
- package/dist/jsx/NodeGraph.native.js +37 -0
- package/dist/jsx/NodeGraph.native.js.map +1 -0
- package/dist/jsx/bench/frameSampler.mjs +255 -0
- package/dist/jsx/bench/frameSampler.mjs.map +1 -0
- package/dist/jsx/bench/frameSampler.native.js +409 -0
- package/dist/jsx/bench/frameSampler.native.js.map +1 -0
- package/dist/jsx/bench/generateGraph.mjs +99 -0
- package/dist/jsx/bench/generateGraph.mjs.map +1 -0
- package/dist/jsx/bench/generateGraph.native.js +128 -0
- package/dist/jsx/bench/generateGraph.native.js.map +1 -0
- package/dist/jsx/diagnostics/GraphDiagnostics.mjs +128 -0
- package/dist/jsx/diagnostics/GraphDiagnostics.mjs.map +1 -0
- package/dist/jsx/diagnostics/GraphDiagnostics.native.js +166 -0
- package/dist/jsx/diagnostics/GraphDiagnostics.native.js.map +1 -0
- package/dist/jsx/diagnostics/LiveGraphDiagnostics.mjs +76 -0
- package/dist/jsx/diagnostics/LiveGraphDiagnostics.mjs.map +1 -0
- package/dist/jsx/diagnostics/LiveGraphDiagnostics.native.js +106 -0
- package/dist/jsx/diagnostics/LiveGraphDiagnostics.native.js.map +1 -0
- package/dist/jsx/diagnostics/fromWire.mjs +23 -0
- package/dist/jsx/diagnostics/fromWire.mjs.map +1 -0
- package/dist/jsx/diagnostics/fromWire.native.js +51 -0
- package/dist/jsx/diagnostics/fromWire.native.js.map +1 -0
- package/dist/jsx/diagnostics/lastError.mjs +39 -0
- package/dist/jsx/diagnostics/lastError.mjs.map +1 -0
- package/dist/jsx/diagnostics/lastError.native.js +75 -0
- package/dist/jsx/diagnostics/lastError.native.js.map +1 -0
- package/dist/jsx/diagnostics/types.mjs +2 -0
- package/dist/jsx/diagnostics/types.mjs.map +1 -0
- package/dist/jsx/diagnostics/types.native.js +21 -0
- package/dist/jsx/diagnostics/types.native.js.map +1 -0
- package/dist/jsx/diagnostics/useGraphDiagnostics.mjs +44 -0
- package/dist/jsx/diagnostics/useGraphDiagnostics.mjs.map +1 -0
- package/dist/jsx/diagnostics/useGraphDiagnostics.native.js +75 -0
- package/dist/jsx/diagnostics/useGraphDiagnostics.native.js.map +1 -0
- package/dist/jsx/dom/GraphDomLayout.mjs +11 -0
- package/dist/jsx/dom/GraphDomLayout.mjs.map +1 -0
- package/dist/jsx/dom/GraphDomLayout.native.js +40 -0
- package/dist/jsx/dom/GraphDomLayout.native.js.map +1 -0
- package/dist/jsx/dom/boot.mjs +67 -0
- package/dist/jsx/dom/boot.mjs.map +1 -0
- package/dist/jsx/dom/boot.native.js +111 -0
- package/dist/jsx/dom/boot.native.js.map +1 -0
- package/dist/jsx/dom/wire.mjs +183 -0
- package/dist/jsx/dom/wire.mjs.map +1 -0
- package/dist/jsx/dom/wire.native.js +274 -0
- package/dist/jsx/dom/wire.native.js.map +1 -0
- package/dist/jsx/edges/GraphEdge.mjs +139 -0
- package/dist/jsx/edges/GraphEdge.mjs.map +1 -0
- package/dist/jsx/edges/GraphEdge.native.js +178 -0
- package/dist/jsx/edges/GraphEdge.native.js.map +1 -0
- package/dist/jsx/edges/edgeKinds.mjs +25 -0
- package/dist/jsx/edges/edgeKinds.mjs.map +1 -0
- package/dist/jsx/edges/edgeKinds.native.js +54 -0
- package/dist/jsx/edges/edgeKinds.native.js.map +1 -0
- package/dist/jsx/edges/edgeStyle.mjs +63 -0
- package/dist/jsx/edges/edgeStyle.mjs.map +1 -0
- package/dist/jsx/edges/edgeStyle.native.js +99 -0
- package/dist/jsx/edges/edgeStyle.native.js.map +1 -0
- package/dist/jsx/index.js +50 -0
- package/dist/jsx/index.js.map +1 -0
- package/dist/jsx/index.mjs +50 -0
- package/dist/jsx/index.mjs.map +1 -0
- package/dist/jsx/index.native.js +200 -0
- package/dist/jsx/index.native.js.map +1 -0
- package/dist/jsx/interaction/lassoIntercept.mjs +29 -0
- package/dist/jsx/interaction/lassoIntercept.mjs.map +1 -0
- package/dist/jsx/interaction/lassoIntercept.native.js +57 -0
- package/dist/jsx/interaction/lassoIntercept.native.js.map +1 -0
- package/dist/jsx/interaction/legalTargets.mjs +48 -0
- package/dist/jsx/interaction/legalTargets.mjs.map +1 -0
- package/dist/jsx/interaction/legalTargets.native.js +118 -0
- package/dist/jsx/interaction/legalTargets.native.js.map +1 -0
- package/dist/jsx/interaction/snapAlignment.mjs +137 -0
- package/dist/jsx/interaction/snapAlignment.mjs.map +1 -0
- package/dist/jsx/interaction/snapAlignment.native.js +245 -0
- package/dist/jsx/interaction/snapAlignment.native.js.map +1 -0
- package/dist/jsx/interaction/snapChanges.mjs +184 -0
- package/dist/jsx/interaction/snapChanges.mjs.map +1 -0
- package/dist/jsx/interaction/snapChanges.native.js +269 -0
- package/dist/jsx/interaction/snapChanges.native.js.map +1 -0
- package/dist/jsx/interaction/spatialHash.mjs +71 -0
- package/dist/jsx/interaction/spatialHash.mjs.map +1 -0
- package/dist/jsx/interaction/spatialHash.native.js +165 -0
- package/dist/jsx/interaction/spatialHash.native.js.map +1 -0
- package/dist/jsx/interaction/useLassoSelect.mjs +231 -0
- package/dist/jsx/interaction/useLassoSelect.mjs.map +1 -0
- package/dist/jsx/interaction/useLassoSelect.native.js +287 -0
- package/dist/jsx/interaction/useLassoSelect.native.js.map +1 -0
- package/dist/jsx/knobs/KnobEnvelopeProvider.mjs +51 -0
- package/dist/jsx/knobs/KnobEnvelopeProvider.mjs.map +1 -0
- package/dist/jsx/knobs/KnobEnvelopeProvider.native.js +85 -0
- package/dist/jsx/knobs/KnobEnvelopeProvider.native.js.map +1 -0
- package/dist/jsx/knobs/envelope.mjs +29 -0
- package/dist/jsx/knobs/envelope.mjs.map +1 -0
- package/dist/jsx/knobs/envelope.native.js +78 -0
- package/dist/jsx/knobs/envelope.native.js.map +1 -0
- package/dist/jsx/knobs/graphKnobs.mjs +14 -0
- package/dist/jsx/knobs/graphKnobs.mjs.map +1 -0
- package/dist/jsx/knobs/graphKnobs.native.js +43 -0
- package/dist/jsx/knobs/graphKnobs.native.js.map +1 -0
- package/dist/jsx/knobs/useKnobEnvelope.mjs +83 -0
- package/dist/jsx/knobs/useKnobEnvelope.mjs.map +1 -0
- package/dist/jsx/knobs/useKnobEnvelope.native.js +140 -0
- package/dist/jsx/knobs/useKnobEnvelope.native.js.map +1 -0
- package/dist/jsx/layout/dagre.mjs +99 -0
- package/dist/jsx/layout/dagre.mjs.map +1 -0
- package/dist/jsx/layout/dagre.native.js +259 -0
- package/dist/jsx/layout/dagre.native.js.map +1 -0
- package/dist/jsx/layout/layout.mjs +57 -0
- package/dist/jsx/layout/layout.mjs.map +1 -0
- package/dist/jsx/layout/layout.native.js +112 -0
- package/dist/jsx/layout/layout.native.js.map +1 -0
- package/dist/jsx/layout/runner.mjs +164 -0
- package/dist/jsx/layout/runner.mjs.map +1 -0
- package/dist/jsx/layout/runner.native.js +247 -0
- package/dist/jsx/layout/runner.native.js.map +1 -0
- package/dist/jsx/layout/structuredCloneShim.mjs +54 -0
- package/dist/jsx/layout/structuredCloneShim.mjs.map +1 -0
- package/dist/jsx/layout/structuredCloneShim.native.js +160 -0
- package/dist/jsx/layout/structuredCloneShim.native.js.map +1 -0
- package/dist/jsx/layout/types.mjs +2 -0
- package/dist/jsx/layout/types.mjs.map +1 -0
- package/dist/jsx/layout/types.native.js +21 -0
- package/dist/jsx/layout/types.native.js.map +1 -0
- package/dist/jsx/layout/worker.entry.mjs +33 -0
- package/dist/jsx/layout/worker.entry.mjs.map +1 -0
- package/dist/jsx/layout/worker.entry.native.js +75 -0
- package/dist/jsx/layout/worker.entry.native.js.map +1 -0
- package/dist/jsx/layout/worker.generated.mjs +5 -0
- package/dist/jsx/layout/worker.generated.mjs.map +1 -0
- package/dist/jsx/layout/worker.generated.native.js +35 -0
- package/dist/jsx/layout/worker.generated.native.js.map +1 -0
- package/dist/jsx/model/commands.mjs +209 -0
- package/dist/jsx/model/commands.mjs.map +1 -0
- package/dist/jsx/model/commands.native.js +317 -0
- package/dist/jsx/model/commands.native.js.map +1 -0
- package/dist/jsx/model/connect.mjs +124 -0
- package/dist/jsx/model/connect.mjs.map +1 -0
- package/dist/jsx/model/connect.native.js +239 -0
- package/dist/jsx/model/connect.native.js.map +1 -0
- package/dist/jsx/model/document.mjs +2 -0
- package/dist/jsx/model/document.mjs.map +1 -0
- package/dist/jsx/model/document.native.js +21 -0
- package/dist/jsx/model/document.native.js.map +1 -0
- package/dist/jsx/model/history.mjs +96 -0
- package/dist/jsx/model/history.mjs.map +1 -0
- package/dist/jsx/model/history.native.js +178 -0
- package/dist/jsx/model/history.native.js.map +1 -0
- package/dist/jsx/model/index.mjs +8 -0
- package/dist/jsx/model/index.mjs.map +1 -0
- package/dist/jsx/model/index.native.js +63 -0
- package/dist/jsx/model/index.native.js.map +1 -0
- package/dist/jsx/model/schema.mjs +32 -0
- package/dist/jsx/model/schema.mjs.map +1 -0
- package/dist/jsx/model/schema.native.js +68 -0
- package/dist/jsx/model/schema.native.js.map +1 -0
- package/dist/jsx/model/select.mjs +49 -0
- package/dist/jsx/model/select.mjs.map +1 -0
- package/dist/jsx/model/select.native.js +107 -0
- package/dist/jsx/model/select.native.js.map +1 -0
- package/dist/jsx/model/serialize.mjs +306 -0
- package/dist/jsx/model/serialize.mjs.map +1 -0
- package/dist/jsx/model/serialize.native.js +374 -0
- package/dist/jsx/model/serialize.native.js.map +1 -0
- package/dist/jsx/native/DomOnlyStory.mjs +33 -0
- package/dist/jsx/native/DomOnlyStory.mjs.map +1 -0
- package/dist/jsx/native/DomOnlyStory.native.js +66 -0
- package/dist/jsx/native/DomOnlyStory.native.js.map +1 -0
- package/dist/jsx/native/GraphToolbar.mjs +76 -0
- package/dist/jsx/native/GraphToolbar.mjs.map +1 -0
- package/dist/jsx/native/GraphToolbar.native.js +107 -0
- package/dist/jsx/native/GraphToolbar.native.js.map +1 -0
- package/dist/jsx/native/domEntryRegistry.mjs +12 -0
- package/dist/jsx/native/domEntryRegistry.mjs.map +1 -0
- package/dist/jsx/native/domEntryRegistry.native.js +42 -0
- package/dist/jsx/native/domEntryRegistry.native.js.map +1 -0
- package/dist/jsx/native/graphChildren.mjs +18 -0
- package/dist/jsx/native/graphChildren.mjs.map +1 -0
- package/dist/jsx/native/graphChildren.native.js +50 -0
- package/dist/jsx/native/graphChildren.native.js.map +1 -0
- package/dist/jsx/nodes/GraphNode.mjs +136 -0
- package/dist/jsx/nodes/GraphNode.mjs.map +1 -0
- package/dist/jsx/nodes/GraphNode.native.js +206 -0
- package/dist/jsx/nodes/GraphNode.native.js.map +1 -0
- package/dist/jsx/nodes/GraphPort.mjs +79 -0
- package/dist/jsx/nodes/GraphPort.mjs.map +1 -0
- package/dist/jsx/nodes/GraphPort.native.js +108 -0
- package/dist/jsx/nodes/GraphPort.native.js.map +1 -0
- package/dist/jsx/nodes/handleGeometry.mjs +65 -0
- package/dist/jsx/nodes/handleGeometry.mjs.map +1 -0
- package/dist/jsx/nodes/handleGeometry.native.js +104 -0
- package/dist/jsx/nodes/handleGeometry.native.js.map +1 -0
- package/dist/jsx/nodes/lod.mjs +13 -0
- package/dist/jsx/nodes/lod.mjs.map +1 -0
- package/dist/jsx/nodes/lod.native.js +45 -0
- package/dist/jsx/nodes/lod.native.js.map +1 -0
- package/dist/jsx/nodes/nodeMeasure.mjs +72 -0
- package/dist/jsx/nodes/nodeMeasure.mjs.map +1 -0
- package/dist/jsx/nodes/nodeMeasure.native.js +134 -0
- package/dist/jsx/nodes/nodeMeasure.native.js.map +1 -0
- package/dist/jsx/nodes/overviewNode.mjs +49 -0
- package/dist/jsx/nodes/overviewNode.mjs.map +1 -0
- package/dist/jsx/nodes/overviewNode.native.js +81 -0
- package/dist/jsx/nodes/overviewNode.native.js.map +1 -0
- package/dist/jsx/react-flow/ConnectionPuck.mjs +96 -0
- package/dist/jsx/react-flow/ConnectionPuck.mjs.map +1 -0
- package/dist/jsx/react-flow/ConnectionPuck.native.js +143 -0
- package/dist/jsx/react-flow/ConnectionPuck.native.js.map +1 -0
- package/dist/jsx/react-flow/GraphActions.mjs +21 -0
- package/dist/jsx/react-flow/GraphActions.mjs.map +1 -0
- package/dist/jsx/react-flow/GraphActions.native.js +51 -0
- package/dist/jsx/react-flow/GraphActions.native.js.map +1 -0
- package/dist/jsx/react-flow/GraphCommandBridge.mjs +213 -0
- package/dist/jsx/react-flow/GraphCommandBridge.mjs.map +1 -0
- package/dist/jsx/react-flow/GraphCommandBridge.native.js +272 -0
- package/dist/jsx/react-flow/GraphCommandBridge.native.js.map +1 -0
- package/dist/jsx/react-flow/GraphNodeHost.mjs +50 -0
- package/dist/jsx/react-flow/GraphNodeHost.mjs.map +1 -0
- package/dist/jsx/react-flow/GraphNodeHost.native.js +89 -0
- package/dist/jsx/react-flow/GraphNodeHost.native.js.map +1 -0
- package/dist/jsx/react-flow/GraphPaintProbe.mjs +35 -0
- package/dist/jsx/react-flow/GraphPaintProbe.mjs.map +1 -0
- package/dist/jsx/react-flow/GraphPaintProbe.native.js +65 -0
- package/dist/jsx/react-flow/GraphPaintProbe.native.js.map +1 -0
- package/dist/jsx/react-flow/GraphZoomVar.mjs +16 -0
- package/dist/jsx/react-flow/GraphZoomVar.mjs.map +1 -0
- package/dist/jsx/react-flow/GraphZoomVar.native.js +48 -0
- package/dist/jsx/react-flow/GraphZoomVar.native.js.map +1 -0
- package/dist/jsx/react-flow/LassoOverlay.mjs +22 -0
- package/dist/jsx/react-flow/LassoOverlay.mjs.map +1 -0
- package/dist/jsx/react-flow/LassoOverlay.native.js +51 -0
- package/dist/jsx/react-flow/LassoOverlay.native.js.map +1 -0
- package/dist/jsx/react-flow/NodeGraphWeb.mjs +359 -0
- package/dist/jsx/react-flow/NodeGraphWeb.mjs.map +1 -0
- package/dist/jsx/react-flow/NodeGraphWeb.native.js +515 -0
- package/dist/jsx/react-flow/NodeGraphWeb.native.js.map +1 -0
- package/dist/jsx/react-flow/SnapGuides.mjs +60 -0
- package/dist/jsx/react-flow/SnapGuides.mjs.map +1 -0
- package/dist/jsx/react-flow/SnapGuides.native.js +114 -0
- package/dist/jsx/react-flow/SnapGuides.native.js.map +1 -0
- package/dist/jsx/react-flow/demoControlBody.mjs +67 -0
- package/dist/jsx/react-flow/demoControlBody.mjs.map +1 -0
- package/dist/jsx/react-flow/demoControlBody.native.js +104 -0
- package/dist/jsx/react-flow/demoControlBody.native.js.map +1 -0
- package/dist/jsx/react-flow/demoNodeBody.mjs +91 -0
- package/dist/jsx/react-flow/demoNodeBody.mjs.map +1 -0
- package/dist/jsx/react-flow/demoNodeBody.native.js +131 -0
- package/dist/jsx/react-flow/demoNodeBody.native.js.map +1 -0
- package/dist/jsx/react-flow/fixtures.mjs +185 -0
- package/dist/jsx/react-flow/fixtures.mjs.map +1 -0
- package/dist/jsx/react-flow/fixtures.native.js +225 -0
- package/dist/jsx/react-flow/fixtures.native.js.map +1 -0
- package/dist/jsx/react-flow/flowAdapter.mjs +94 -0
- package/dist/jsx/react-flow/flowAdapter.mjs.map +1 -0
- package/dist/jsx/react-flow/flowAdapter.native.js +133 -0
- package/dist/jsx/react-flow/flowAdapter.native.js.map +1 -0
- package/dist/jsx/react-flow/graphHandle.mjs +3 -0
- package/dist/jsx/react-flow/graphHandle.mjs.map +1 -0
- package/dist/jsx/react-flow/graphHandle.native.js +31 -0
- package/dist/jsx/react-flow/graphHandle.native.js.map +1 -0
- package/dist/jsx/react-flow/nodeCensus.mjs +28 -0
- package/dist/jsx/react-flow/nodeCensus.mjs.map +1 -0
- package/dist/jsx/react-flow/nodeCensus.native.js +80 -0
- package/dist/jsx/react-flow/nodeCensus.native.js.map +1 -0
- package/dist/jsx/react-flow/useGraphController.mjs +269 -0
- package/dist/jsx/react-flow/useGraphController.mjs.map +1 -0
- package/dist/jsx/react-flow/useGraphController.native.js +393 -0
- package/dist/jsx/react-flow/useGraphController.native.js.map +1 -0
- package/dist/jsx/react-flow/xy.mjs +8 -0
- package/dist/jsx/react-flow/xy.mjs.map +1 -0
- package/dist/jsx/react-flow/xy.native.js +63 -0
- package/dist/jsx/react-flow/xy.native.js.map +1 -0
- package/dist/jsx/theme/GraphFaces.mjs +88 -0
- package/dist/jsx/theme/GraphFaces.mjs.map +1 -0
- package/dist/jsx/theme/GraphFaces.native.js +181 -0
- package/dist/jsx/theme/GraphFaces.native.js.map +1 -0
- package/dist/jsx/theme/GraphVarsStyle.mjs +59 -0
- package/dist/jsx/theme/GraphVarsStyle.mjs.map +1 -0
- package/dist/jsx/theme/GraphVarsStyle.native.js +100 -0
- package/dist/jsx/theme/GraphVarsStyle.native.js.map +1 -0
- package/dist/jsx/theme/faces.generated.mjs +23 -0
- package/dist/jsx/theme/faces.generated.mjs.map +1 -0
- package/dist/jsx/theme/faces.generated.native.js +51 -0
- package/dist/jsx/theme/faces.generated.native.js.map +1 -0
- package/dist/jsx/theme/faces.mjs +89 -0
- package/dist/jsx/theme/faces.mjs.map +1 -0
- package/dist/jsx/theme/faces.native.js +133 -0
- package/dist/jsx/theme/faces.native.js.map +1 -0
- package/dist/jsx/theme/graphVars.mjs +284 -0
- package/dist/jsx/theme/graphVars.mjs.map +1 -0
- package/dist/jsx/theme/graphVars.native.js +351 -0
- package/dist/jsx/theme/graphVars.native.js.map +1 -0
- package/dom-inner.ts +21 -0
- package/metro/index.js +174 -0
- package/metro/index.spec.mjs +235 -0
- package/model.ts +9 -0
- package/package.json +137 -0
- package/src/NodeGraph.native.spec.ts +164 -0
- package/src/NodeGraph.native.tsx +278 -0
- package/src/NodeGraph.tsx +27 -0
- package/src/bench/Perf200.stories.tsx +351 -0
- package/src/bench/frameSampler.spec.ts +467 -0
- package/src/bench/frameSampler.ts +516 -0
- package/src/bench/generateGraph.ts +138 -0
- package/src/diagnostics/GraphDiagnostics.spec.tsx +206 -0
- package/src/diagnostics/GraphDiagnostics.stories.tsx +194 -0
- package/src/diagnostics/GraphDiagnostics.tsx +140 -0
- package/src/diagnostics/LiveGraphDiagnostics.native.tsx +61 -0
- package/src/diagnostics/LiveGraphDiagnostics.tsx +121 -0
- package/src/diagnostics/deliberateBreak.ts +35 -0
- package/src/diagnostics/fromWire.spec.ts +74 -0
- package/src/diagnostics/fromWire.ts +48 -0
- package/src/diagnostics/lastError.ts +91 -0
- package/src/diagnostics/types.ts +103 -0
- package/src/diagnostics/useGraphDiagnostics.spec.tsx +199 -0
- package/src/diagnostics/useGraphDiagnostics.ts +85 -0
- package/src/dom/GraphDomLayout.spec.tsx +56 -0
- package/src/dom/GraphDomLayout.tsx +49 -0
- package/src/dom/NodeGraphDom.ts +43 -0
- package/src/dom/NodeGraphDomInner.tsx +524 -0
- package/src/dom/NodeGraphDomShell.ts +402 -0
- package/src/dom/boot.spec.ts +90 -0
- package/src/dom/boot.ts +153 -0
- package/src/dom/domEntry.spec.ts +481 -0
- package/src/dom/importGraph.spec.ts +287 -0
- package/src/dom/schemaRegistry.spec.tsx +182 -0
- package/src/dom/wire.spec.ts +486 -0
- package/src/dom/wire.ts +493 -0
- package/src/edges/Edges.stories.tsx +271 -0
- package/src/edges/GraphEdge.tsx +198 -0
- package/src/edges/edgeKinds.ts +51 -0
- package/src/edges/edgeStyle.spec.ts +295 -0
- package/src/edges/edgeStyle.ts +124 -0
- package/src/index.native.ts +147 -0
- package/src/index.ts +243 -0
- package/src/interaction/Lasso.stories.tsx +198 -0
- package/src/interaction/Snapping.stories.tsx +189 -0
- package/src/interaction/lassoIntercept.spec.ts +166 -0
- package/src/interaction/lassoIntercept.ts +81 -0
- package/src/interaction/legalTargets.spec.ts +304 -0
- package/src/interaction/legalTargets.ts +91 -0
- package/src/interaction/snapAlignment.spec.ts +412 -0
- package/src/interaction/snapAlignment.ts +209 -0
- package/src/interaction/snapChanges.spec.ts +273 -0
- package/src/interaction/snapChanges.ts +292 -0
- package/src/interaction/spatialHash.spec.ts +168 -0
- package/src/interaction/spatialHash.ts +128 -0
- package/src/interaction/useLassoSelect.spec.tsx +487 -0
- package/src/interaction/useLassoSelect.ts +489 -0
- package/src/knobs/KnobEnvelopeProvider.tsx +110 -0
- package/src/knobs/envelope.spec.tsx +371 -0
- package/src/knobs/envelope.ts +130 -0
- package/src/knobs/envelopeTheme.spec.ts +58 -0
- package/src/knobs/graphKnobs.ts +36 -0
- package/src/knobs/useKnobEnvelope.ts +152 -0
- package/src/layout/AutoLayout.stories.tsx +338 -0
- package/src/layout/dagre.ts +149 -0
- package/src/layout/layout.spec.ts +244 -0
- package/src/layout/layout.ts +121 -0
- package/src/layout/runner.spec.ts +365 -0
- package/src/layout/runner.ts +256 -0
- package/src/layout/structuredCloneShim.spec.ts +103 -0
- package/src/layout/structuredCloneShim.ts +106 -0
- package/src/layout/types.ts +112 -0
- package/src/layout/worker.entry.ts +74 -0
- package/src/layout/worker.generated.spec.ts +157 -0
- package/src/layout/worker.generated.ts +32 -0
- package/src/model/commands.spec.ts +214 -0
- package/src/model/commands.ts +209 -0
- package/src/model/connect.spec.ts +444 -0
- package/src/model/connect.ts +281 -0
- package/src/model/document.ts +121 -0
- package/src/model/history.spec.ts +278 -0
- package/src/model/history.ts +153 -0
- package/src/model/index.ts +74 -0
- package/src/model/schema.ts +177 -0
- package/src/model/select.spec.ts +220 -0
- package/src/model/select.ts +88 -0
- package/src/model/serialize.spec.ts +393 -0
- package/src/model/serialize.ts +395 -0
- package/src/native/DomOnlyStory.tsx +72 -0
- package/src/native/GraphFallback.native.tsx +123 -0
- package/src/native/GraphToolbar.tsx +171 -0
- package/src/native/NodeGraph.native.tsx +505 -0
- package/src/native/domEntryRegistry.spec.ts +66 -0
- package/src/native/domEntryRegistry.ts +45 -0
- package/src/native/graphChildren.spec.ts +67 -0
- package/src/native/graphChildren.ts +62 -0
- package/src/native/graphFallback.spec.ts +49 -0
- package/src/native/graphHandleRemount.spec.tsx +189 -0
- package/src/nodes/GraphNode.spec.tsx +270 -0
- package/src/nodes/GraphNode.stories.tsx +451 -0
- package/src/nodes/GraphNode.tsx +240 -0
- package/src/nodes/GraphPort.spec.tsx +442 -0
- package/src/nodes/GraphPort.stories.tsx +407 -0
- package/src/nodes/GraphPort.tsx +117 -0
- package/src/nodes/Overview.stories.tsx +237 -0
- package/src/nodes/handleGeometry.spec.ts +161 -0
- package/src/nodes/handleGeometry.ts +232 -0
- package/src/nodes/lod.spec.tsx +300 -0
- package/src/nodes/lod.ts +69 -0
- package/src/nodes/nodeMeasure.spec.ts +245 -0
- package/src/nodes/nodeMeasure.ts +216 -0
- package/src/nodes/overviewNode.tsx +71 -0
- package/src/packageShape.spec.ts +145 -0
- package/src/react-flow/ConnectionPuck.spec.tsx +242 -0
- package/src/react-flow/ConnectionPuck.tsx +175 -0
- package/src/react-flow/GraphActions.tsx +64 -0
- package/src/react-flow/GraphCommandBridge.spec.tsx +130 -0
- package/src/react-flow/GraphCommandBridge.tsx +288 -0
- package/src/react-flow/GraphNodeHost.tsx +101 -0
- package/src/react-flow/GraphPaintProbe.spec.tsx +116 -0
- package/src/react-flow/GraphPaintProbe.tsx +65 -0
- package/src/react-flow/GraphZoomVar.tsx +48 -0
- package/src/react-flow/LassoOverlay.tsx +59 -0
- package/src/react-flow/NodeGraphWeb.spec.tsx +441 -0
- package/src/react-flow/NodeGraphWeb.stories.tsx +260 -0
- package/src/react-flow/NodeGraphWeb.tsx +645 -0
- package/src/react-flow/SnapGuides.spec.tsx +161 -0
- package/src/react-flow/SnapGuides.tsx +113 -0
- package/src/react-flow/demoControlBody.tsx +96 -0
- package/src/react-flow/demoNodeBody.tsx +121 -0
- package/src/react-flow/fixtures.ts +185 -0
- package/src/react-flow/flowAdapter.ts +170 -0
- package/src/react-flow/graphHandle.ts +112 -0
- package/src/react-flow/nodeCensus.spec.ts +66 -0
- package/src/react-flow/nodeCensus.ts +69 -0
- package/src/react-flow/useGraphController.spec.tsx +849 -0
- package/src/react-flow/useGraphController.ts +473 -0
- package/src/react-flow/xy.spec.ts +182 -0
- package/src/react-flow/xy.ts +131 -0
- package/src/theme/GraphFaces.spec.tsx +101 -0
- package/src/theme/GraphFaces.tsx +218 -0
- package/src/theme/GraphVarsStyle.tsx +113 -0
- package/src/theme/faces.generated.ts +53 -0
- package/src/theme/faces.spec.ts +228 -0
- package/src/theme/faces.ts +275 -0
- package/src/theme/graphCss.spec.ts +111 -0
- package/src/theme/graphVars.spec.ts +322 -0
- package/src/theme/graphVars.ts +441 -0
- package/types/NodeGraph.d.ts +17 -0
- package/types/NodeGraph.d.ts.map +1 -0
- package/types/NodeGraph.native.d.ts +142 -0
- package/types/NodeGraph.native.d.ts.map +1 -0
- package/types/bench/frameSampler.d.ts +235 -0
- package/types/bench/frameSampler.d.ts.map +1 -0
- package/types/bench/generateGraph.d.ts +43 -0
- package/types/bench/generateGraph.d.ts.map +1 -0
- package/types/diagnostics/GraphDiagnostics.d.ts +30 -0
- package/types/diagnostics/GraphDiagnostics.d.ts.map +1 -0
- package/types/diagnostics/LiveGraphDiagnostics.d.ts +27 -0
- package/types/diagnostics/LiveGraphDiagnostics.d.ts.map +1 -0
- package/types/diagnostics/LiveGraphDiagnostics.native.d.ts +25 -0
- package/types/diagnostics/LiveGraphDiagnostics.native.d.ts.map +1 -0
- package/types/diagnostics/deliberateBreak.d.ts +28 -0
- package/types/diagnostics/deliberateBreak.d.ts.map +1 -0
- package/types/diagnostics/fromWire.d.ts +17 -0
- package/types/diagnostics/fromWire.d.ts.map +1 -0
- package/types/diagnostics/lastError.d.ts +50 -0
- package/types/diagnostics/lastError.d.ts.map +1 -0
- package/types/diagnostics/types.d.ts +101 -0
- package/types/diagnostics/types.d.ts.map +1 -0
- package/types/diagnostics/useGraphDiagnostics.d.ts +23 -0
- package/types/diagnostics/useGraphDiagnostics.d.ts.map +1 -0
- package/types/dom/GraphDomLayout.d.ts +40 -0
- package/types/dom/GraphDomLayout.d.ts.map +1 -0
- package/types/dom/NodeGraphDom.d.ts +4 -0
- package/types/dom/NodeGraphDom.d.ts.map +1 -0
- package/types/dom/NodeGraphDomInner.d.ts +26 -0
- package/types/dom/NodeGraphDomInner.d.ts.map +1 -0
- package/types/dom/NodeGraphDomShell.d.ts +221 -0
- package/types/dom/NodeGraphDomShell.d.ts.map +1 -0
- package/types/dom/boot.d.ts +90 -0
- package/types/dom/boot.d.ts.map +1 -0
- package/types/dom/wire.d.ts +355 -0
- package/types/dom/wire.d.ts.map +1 -0
- package/types/edges/GraphEdge.d.ts +59 -0
- package/types/edges/GraphEdge.d.ts.map +1 -0
- package/types/edges/edgeKinds.d.ts +43 -0
- package/types/edges/edgeKinds.d.ts.map +1 -0
- package/types/edges/edgeStyle.d.ts +79 -0
- package/types/edges/edgeStyle.d.ts.map +1 -0
- package/types/index.d.ts +123 -0
- package/types/index.d.ts.map +1 -0
- package/types/index.native.d.ts +86 -0
- package/types/index.native.d.ts.map +1 -0
- package/types/interaction/lassoIntercept.d.ts +58 -0
- package/types/interaction/lassoIntercept.d.ts.map +1 -0
- package/types/interaction/legalTargets.d.ts +59 -0
- package/types/interaction/legalTargets.d.ts.map +1 -0
- package/types/interaction/snapAlignment.d.ts +85 -0
- package/types/interaction/snapAlignment.d.ts.map +1 -0
- package/types/interaction/snapChanges.d.ts +133 -0
- package/types/interaction/snapChanges.d.ts.map +1 -0
- package/types/interaction/spatialHash.d.ts +37 -0
- package/types/interaction/spatialHash.d.ts.map +1 -0
- package/types/interaction/useLassoSelect.d.ts +151 -0
- package/types/interaction/useLassoSelect.d.ts.map +1 -0
- package/types/knobs/KnobEnvelopeProvider.d.ts +45 -0
- package/types/knobs/KnobEnvelopeProvider.d.ts.map +1 -0
- package/types/knobs/envelope.d.ts +99 -0
- package/types/knobs/envelope.d.ts.map +1 -0
- package/types/knobs/graphKnobs.d.ts +26 -0
- package/types/knobs/graphKnobs.d.ts.map +1 -0
- package/types/knobs/useKnobEnvelope.d.ts +43 -0
- package/types/knobs/useKnobEnvelope.d.ts.map +1 -0
- package/types/layout/dagre.d.ts +39 -0
- package/types/layout/dagre.d.ts.map +1 -0
- package/types/layout/layout.d.ts +58 -0
- package/types/layout/layout.d.ts.map +1 -0
- package/types/layout/runner.d.ts +60 -0
- package/types/layout/runner.d.ts.map +1 -0
- package/types/layout/structuredCloneShim.d.ts +44 -0
- package/types/layout/structuredCloneShim.d.ts.map +1 -0
- package/types/layout/types.d.ts +113 -0
- package/types/layout/types.d.ts.map +1 -0
- package/types/layout/worker.entry.d.ts +34 -0
- package/types/layout/worker.entry.d.ts.map +1 -0
- package/types/layout/worker.generated.d.ts +26 -0
- package/types/layout/worker.generated.d.ts.map +1 -0
- package/types/model/commands.d.ts +49 -0
- package/types/model/commands.d.ts.map +1 -0
- package/types/model/connect.d.ts +83 -0
- package/types/model/connect.d.ts.map +1 -0
- package/types/model/document.d.ts +111 -0
- package/types/model/document.d.ts.map +1 -0
- package/types/model/history.d.ts +40 -0
- package/types/model/history.d.ts.map +1 -0
- package/types/model/index.d.ts +20 -0
- package/types/model/index.d.ts.map +1 -0
- package/types/model/schema.d.ts +136 -0
- package/types/model/schema.d.ts.map +1 -0
- package/types/model/select.d.ts +41 -0
- package/types/model/select.d.ts.map +1 -0
- package/types/model/serialize.d.ts +33 -0
- package/types/model/serialize.d.ts.map +1 -0
- package/types/native/DomOnlyStory.d.ts +49 -0
- package/types/native/DomOnlyStory.d.ts.map +1 -0
- package/types/native/GraphFallback.native.d.ts +41 -0
- package/types/native/GraphFallback.native.d.ts.map +1 -0
- package/types/native/GraphToolbar.d.ts +75 -0
- package/types/native/GraphToolbar.d.ts.map +1 -0
- package/types/native/NodeGraph.native.d.ts +128 -0
- package/types/native/NodeGraph.native.d.ts.map +1 -0
- package/types/native/domEntryRegistry.d.ts +33 -0
- package/types/native/domEntryRegistry.d.ts.map +1 -0
- package/types/native/graphChildren.d.ts +36 -0
- package/types/native/graphChildren.d.ts.map +1 -0
- package/types/nodes/GraphNode.d.ts +48 -0
- package/types/nodes/GraphNode.d.ts.map +1 -0
- package/types/nodes/GraphPort.d.ts +41 -0
- package/types/nodes/GraphPort.d.ts.map +1 -0
- package/types/nodes/handleGeometry.d.ts +183 -0
- package/types/nodes/handleGeometry.d.ts.map +1 -0
- package/types/nodes/lod.d.ts +55 -0
- package/types/nodes/lod.d.ts.map +1 -0
- package/types/nodes/nodeMeasure.d.ts +146 -0
- package/types/nodes/nodeMeasure.d.ts.map +1 -0
- package/types/nodes/overviewNode.d.ts +34 -0
- package/types/nodes/overviewNode.d.ts.map +1 -0
- package/types/react-flow/ConnectionPuck.d.ts +62 -0
- package/types/react-flow/ConnectionPuck.d.ts.map +1 -0
- package/types/react-flow/GraphActions.d.ts +45 -0
- package/types/react-flow/GraphActions.d.ts.map +1 -0
- package/types/react-flow/GraphCommandBridge.d.ts +45 -0
- package/types/react-flow/GraphCommandBridge.d.ts.map +1 -0
- package/types/react-flow/GraphNodeHost.d.ts +32 -0
- package/types/react-flow/GraphNodeHost.d.ts.map +1 -0
- package/types/react-flow/GraphPaintProbe.d.ts +26 -0
- package/types/react-flow/GraphPaintProbe.d.ts.map +1 -0
- package/types/react-flow/GraphZoomVar.d.ts +31 -0
- package/types/react-flow/GraphZoomVar.d.ts.map +1 -0
- package/types/react-flow/LassoOverlay.d.ts +39 -0
- package/types/react-flow/LassoOverlay.d.ts.map +1 -0
- package/types/react-flow/NodeGraphWeb.d.ts +195 -0
- package/types/react-flow/NodeGraphWeb.d.ts.map +1 -0
- package/types/react-flow/SnapGuides.d.ts +49 -0
- package/types/react-flow/SnapGuides.d.ts.map +1 -0
- package/types/react-flow/demoControlBody.d.ts +47 -0
- package/types/react-flow/demoControlBody.d.ts.map +1 -0
- package/types/react-flow/demoNodeBody.d.ts +37 -0
- package/types/react-flow/demoNodeBody.d.ts.map +1 -0
- package/types/react-flow/fixtures.d.ts +107 -0
- package/types/react-flow/fixtures.d.ts.map +1 -0
- package/types/react-flow/flowAdapter.d.ts +56 -0
- package/types/react-flow/flowAdapter.d.ts.map +1 -0
- package/types/react-flow/graphHandle.d.ts +90 -0
- package/types/react-flow/graphHandle.d.ts.map +1 -0
- package/types/react-flow/nodeCensus.d.ts +42 -0
- package/types/react-flow/nodeCensus.d.ts.map +1 -0
- package/types/react-flow/useGraphController.d.ts +93 -0
- package/types/react-flow/useGraphController.d.ts.map +1 -0
- package/types/react-flow/xy.d.ts +84 -0
- package/types/react-flow/xy.d.ts.map +1 -0
- package/types/theme/GraphFaces.d.ts +82 -0
- package/types/theme/GraphFaces.d.ts.map +1 -0
- package/types/theme/GraphVarsStyle.d.ts +56 -0
- package/types/theme/GraphVarsStyle.d.ts.map +1 -0
- package/types/theme/faces.d.ts +152 -0
- package/types/theme/faces.d.ts.map +1 -0
- package/types/theme/faces.generated.d.ts +27 -0
- package/types/theme/faces.generated.d.ts.map +1 -0
- package/types/theme/graphVars.d.ts +155 -0
- package/types/theme/graphVars.d.ts.map +1 -0
|
@@ -0,0 +1,441 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Task 1.11, the rendered half.
|
|
3
|
+
*
|
|
4
|
+
* The plan's four claims: it mounts, it renders N nodes, culling defaults on,
|
|
5
|
+
* and `colorMode` follows the envelope scheme.
|
|
6
|
+
*
|
|
7
|
+
* ONE of those cannot be observed here and it is stated rather than faked.
|
|
8
|
+
* `onlyRenderVisibleElements` culls through `getNodesInside`, which skips a
|
|
9
|
+
* node React Flow has not MEASURED — and happy-dom measures nothing, so every
|
|
10
|
+
* node is treated as unmeasured and nothing is ever culled. Measured directly:
|
|
11
|
+
* a node parked at (900000, 900000) with the store reporting 500×500 renders
|
|
12
|
+
* with culling on, off and unset alike. So the default is asserted where it is
|
|
13
|
+
* decided (`graphCanvasDefaults`) plus the fact that the resolved value reaches
|
|
14
|
+
* `ReactFlow` — proved through `colorMode`, which travels the same spread and
|
|
15
|
+
* IS observable, as a wrapper class. The culling itself is measured in Chrome,
|
|
16
|
+
* on `NodeGraph/NodeGraph → Large200`, and reported on the ticket.
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
import { Preset, Surface } from "@multiplatform.one/theme";
|
|
20
|
+
import { renderWithProviders } from "@multiplatform.one/test-utils";
|
|
21
|
+
import { cleanup } from "@testing-library/react";
|
|
22
|
+
import type { ReactElement } from "react";
|
|
23
|
+
import { Theme } from "tamagui";
|
|
24
|
+
import { afterEach, describe, expect, it, vi } from "vitest";
|
|
25
|
+
import { graphRootClassName } from "../theme/GraphVarsStyle";
|
|
26
|
+
import { demoGraphSchema } from "./demoNodeBody";
|
|
27
|
+
import { mountedNodeCount, resetNodeCensus } from "./nodeCensus";
|
|
28
|
+
import { demoDocument, demoDocumentLarge } from "./fixtures";
|
|
29
|
+
import { portConnectionRadius } from "../nodes/handleGeometry";
|
|
30
|
+
import type { GraphCommands } from "./graphHandle";
|
|
31
|
+
import { NodeGraphWeb, graphCanvasDefaults } from "./NodeGraphWeb";
|
|
32
|
+
import { useStore } from "./xy";
|
|
33
|
+
|
|
34
|
+
afterEach(() => {
|
|
35
|
+
cleanup();
|
|
36
|
+
// The census is a module global by design — one JS realm holds one canvas
|
|
37
|
+
// inside a WebView. Across tests in one process it has to be cleared, or the
|
|
38
|
+
// previous mount's nodes are still counted.
|
|
39
|
+
resetNodeCensus();
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
function mount(element: ReactElement) {
|
|
43
|
+
return renderWithProviders(
|
|
44
|
+
<Preset cascade={false}>
|
|
45
|
+
<Surface size="medium" density="comfortable">
|
|
46
|
+
{element}
|
|
47
|
+
</Surface>
|
|
48
|
+
</Preset>,
|
|
49
|
+
);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/** React Flow tags every rendered node wrapper with the node id. */
|
|
53
|
+
function renderedNodeIds(container: HTMLElement): string[] {
|
|
54
|
+
return Array.from(container.querySelectorAll(".react-flow__node")).map(
|
|
55
|
+
(element) => element.getAttribute("data-id") ?? "",
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
describe("it mounts", () => {
|
|
60
|
+
it("renders one React Flow node per document node", () => {
|
|
61
|
+
const { container } = mount(
|
|
62
|
+
<NodeGraphWeb schema={demoGraphSchema()} defaultDocument={demoDocument()} />,
|
|
63
|
+
);
|
|
64
|
+
expect(renderedNodeIds(container).sort()).toEqual(["a", "b", "c"]);
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
it("renders twelve for the twelve-node graph the Main story shows", () => {
|
|
68
|
+
const { container } = mount(
|
|
69
|
+
<NodeGraphWeb schema={demoGraphSchema()} defaultDocument={demoDocumentLarge(12)} />,
|
|
70
|
+
);
|
|
71
|
+
expect(renderedNodeIds(container)).toHaveLength(12);
|
|
72
|
+
// Not the edges. React Flow builds an edge from its two HANDLE BOUNDS, and
|
|
73
|
+
// happy-dom measures no element, so `handleBounds` is never populated and
|
|
74
|
+
// every edge is dropped before it paints — measured here, 8 edges in the
|
|
75
|
+
// document and 0 in the DOM. The edge MAPPING is asserted in
|
|
76
|
+
// `useGraphController.spec.tsx` (ids, handles, marker, kind) and the
|
|
77
|
+
// painted result in Chrome, on `NodeGraph/Edges` and `NodeGraph/NodeGraph`.
|
|
78
|
+
expect(container.querySelector(".react-flow__edges")).not.toBeNull();
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
it("counts the nodes it mounted in the census, which is what nodesMounted reports", () => {
|
|
82
|
+
// Design 9.5's `nodesMounted` used to be filled with `document.nodes.length`
|
|
83
|
+
// — the document's count, which is a different number the moment culling
|
|
84
|
+
// drops one. This is the register that makes it the mounted count instead.
|
|
85
|
+
// happy-dom cannot cull (see the header), so here the two agree at twelve,
|
|
86
|
+
// and the number that matters on device is read off the panel.
|
|
87
|
+
const { container, unmount } = mount(
|
|
88
|
+
<NodeGraphWeb schema={demoGraphSchema()} defaultDocument={demoDocumentLarge(12)} />,
|
|
89
|
+
);
|
|
90
|
+
expect(mountedNodeCount()).toBe(renderedNodeIds(container).length);
|
|
91
|
+
expect(mountedNodeCount()).toBe(12);
|
|
92
|
+
unmount();
|
|
93
|
+
// And it releases: a canvas that has gone away must not still be counted,
|
|
94
|
+
// or a second mount reports twenty-four.
|
|
95
|
+
expect(mountedNodeCount()).toBe(0);
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
it("renders each node's own Tamagui body, not a placeholder", () => {
|
|
99
|
+
const { container } = mount(
|
|
100
|
+
<NodeGraphWeb schema={demoGraphSchema()} defaultDocument={demoDocument()} />,
|
|
101
|
+
);
|
|
102
|
+
// The bodies come from the schema's `render`, so the titles differ per kind.
|
|
103
|
+
const titles = Array.from(container.querySelectorAll("[data-graph-node-title]")).map(
|
|
104
|
+
(element) => element.textContent,
|
|
105
|
+
);
|
|
106
|
+
expect(titles.sort()).toEqual(["Sink", "Source", "Transform"]);
|
|
107
|
+
// …and each carries its ports, which only the schema knows.
|
|
108
|
+
expect(container.querySelectorAll("[data-graph-port]").length).toBe(5);
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
it("renders an empty graph without throwing", () => {
|
|
112
|
+
const { container } = mount(
|
|
113
|
+
<NodeGraphWeb
|
|
114
|
+
schema={demoGraphSchema()}
|
|
115
|
+
defaultDocument={{ version: 1, nodes: [], edges: [] }}
|
|
116
|
+
/>,
|
|
117
|
+
);
|
|
118
|
+
expect(renderedNodeIds(container)).toHaveLength(0);
|
|
119
|
+
expect(container.querySelector(`.${graphRootClassName}`)).not.toBeNull();
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
it("says so, loudly, when a document names a kind the schema does not declare", () => {
|
|
123
|
+
const { container } = mount(
|
|
124
|
+
<NodeGraphWeb
|
|
125
|
+
schema={demoGraphSchema()}
|
|
126
|
+
defaultDocument={
|
|
127
|
+
{
|
|
128
|
+
version: 1,
|
|
129
|
+
nodes: [{ id: "x", kind: "wormhole", position: { x: 0, y: 0 }, data: {} }],
|
|
130
|
+
edges: [],
|
|
131
|
+
// biome-ignore lint: the point of the case is a document the schema refuses
|
|
132
|
+
} as never
|
|
133
|
+
}
|
|
134
|
+
/>,
|
|
135
|
+
);
|
|
136
|
+
expect(container.querySelector("[data-graph-node-unknown='wormhole']")).not.toBeNull();
|
|
137
|
+
});
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
describe("the kind's declared measure reaches the painted node", () => {
|
|
141
|
+
it("paints the width the seed predicted, not the default table's", () => {
|
|
142
|
+
// Found by the knob fuzz, not by a spec: `NodeKindSpec.measure` reached
|
|
143
|
+
// the React Flow SEED and stopped there, because `GraphNodeRenderProps`
|
|
144
|
+
// carried no `measure` for the body to forward. So a node was seeded at
|
|
145
|
+
// one width and painted at another, and every kind with a non-default
|
|
146
|
+
// width defeated the seeding it exists to feed.
|
|
147
|
+
const { container } = mount(
|
|
148
|
+
<NodeGraphWeb schema={demoGraphSchema()} defaultDocument={demoDocument()} />,
|
|
149
|
+
);
|
|
150
|
+
const painted = Object.fromEntries(
|
|
151
|
+
Array.from(container.querySelectorAll("[data-graph-node]")).map((element) => [
|
|
152
|
+
element.getAttribute("data-graph-node"),
|
|
153
|
+
element.getAttribute("data-graph-node-width"),
|
|
154
|
+
]),
|
|
155
|
+
);
|
|
156
|
+
// `sink` declares 240; the default table has no 240 at any size stop.
|
|
157
|
+
expect(painted.c).toBe("240");
|
|
158
|
+
expect(painted.a).toBe("190");
|
|
159
|
+
expect(painted.b).toBe("190");
|
|
160
|
+
});
|
|
161
|
+
});
|
|
162
|
+
|
|
163
|
+
describe("the root", () => {
|
|
164
|
+
it("carries the scope class every rule in css/graph.css is written against", () => {
|
|
165
|
+
const { container } = mount(
|
|
166
|
+
<NodeGraphWeb schema={demoGraphSchema()} defaultDocument={demoDocument()} />,
|
|
167
|
+
);
|
|
168
|
+
const root = container.querySelector(`.${graphRootClassName}`);
|
|
169
|
+
expect(root).not.toBeNull();
|
|
170
|
+
// The React Flow wrapper is INSIDE it, so the var layer written on the root
|
|
171
|
+
// cascades into React Flow's own stylesheet.
|
|
172
|
+
expect(root?.querySelector("[data-testid='rf__wrapper']")).not.toBeNull();
|
|
173
|
+
});
|
|
174
|
+
|
|
175
|
+
it("keeps a consumer's className alongside its own", () => {
|
|
176
|
+
const { container } = mount(
|
|
177
|
+
<NodeGraphWeb
|
|
178
|
+
schema={demoGraphSchema()}
|
|
179
|
+
defaultDocument={demoDocument()}
|
|
180
|
+
className="editor-pane"
|
|
181
|
+
/>,
|
|
182
|
+
);
|
|
183
|
+
const root = container.querySelector(".editor-pane");
|
|
184
|
+
expect(root?.classList.contains(graphRootClassName)).toBe(true);
|
|
185
|
+
});
|
|
186
|
+
|
|
187
|
+
it("writes the --xy-* sheet, so React Flow paints from mpo tokens", () => {
|
|
188
|
+
const { container } = mount(
|
|
189
|
+
<NodeGraphWeb schema={demoGraphSchema()} defaultDocument={demoDocument()} />,
|
|
190
|
+
);
|
|
191
|
+
const style = container.querySelector("style[data-mpo-graph-vars]");
|
|
192
|
+
expect(style).not.toBeNull();
|
|
193
|
+
const text = style?.textContent ?? "";
|
|
194
|
+
expect(text).toContain(`.${graphRootClassName} {`);
|
|
195
|
+
expect(text).toMatch(/--xy-edge-stroke:/);
|
|
196
|
+
// The bridge's whole point: no literal colour reaches the sheet.
|
|
197
|
+
expect(/#[0-9a-f]{3,8}\b/i.test(text)).toBe(false);
|
|
198
|
+
});
|
|
199
|
+
});
|
|
200
|
+
|
|
201
|
+
describe("the knob envelope reaches the nodes", () => {
|
|
202
|
+
/**
|
|
203
|
+
* Removing `KnobEnvelopeProvider` outright SURVIVED the first version of this
|
|
204
|
+
* file. On web the host's Preset stack is already above the canvas, so the
|
|
205
|
+
* rebuild looks like a no-op — but it is the only path `props.knobs` takes to
|
|
206
|
+
* a node, and it is the whole mechanism milestone 2 runs inside the WebView.
|
|
207
|
+
* A composition nothing tests is a composition someone deletes.
|
|
208
|
+
*/
|
|
209
|
+
const radiusOf = (container: HTMLElement) =>
|
|
210
|
+
Array.from(container.querySelectorAll("[data-graph-node-radius]")).map((element) =>
|
|
211
|
+
element.getAttribute("data-graph-node-radius"),
|
|
212
|
+
);
|
|
213
|
+
|
|
214
|
+
it("carries props.knobs through the envelope and onto every node frame", () => {
|
|
215
|
+
const square = mount(
|
|
216
|
+
<NodeGraphWeb
|
|
217
|
+
schema={demoGraphSchema()}
|
|
218
|
+
defaultDocument={demoDocument()}
|
|
219
|
+
knobs={{ borderRadius: "none" }}
|
|
220
|
+
/>,
|
|
221
|
+
);
|
|
222
|
+
const squareRadii = radiusOf(square.container);
|
|
223
|
+
cleanup();
|
|
224
|
+
|
|
225
|
+
const round = mount(
|
|
226
|
+
<NodeGraphWeb
|
|
227
|
+
schema={demoGraphSchema()}
|
|
228
|
+
defaultDocument={demoDocument()}
|
|
229
|
+
knobs={{ borderRadius: "full" }}
|
|
230
|
+
/>,
|
|
231
|
+
);
|
|
232
|
+
const roundRadii = radiusOf(round.container);
|
|
233
|
+
|
|
234
|
+
expect(squareRadii).toHaveLength(3);
|
|
235
|
+
expect(new Set(squareRadii)).toEqual(new Set(["0"]));
|
|
236
|
+
expect(roundRadii).toHaveLength(3);
|
|
237
|
+
expect(roundRadii).not.toEqual(squareRadii);
|
|
238
|
+
});
|
|
239
|
+
});
|
|
240
|
+
|
|
241
|
+
describe("colorMode follows the envelope scheme", () => {
|
|
242
|
+
it.each([
|
|
243
|
+
["light", "light"],
|
|
244
|
+
["dark", "dark"],
|
|
245
|
+
])("under <Theme name=%s> the canvas is %s", (themeName, expected) => {
|
|
246
|
+
const { container } = mount(
|
|
247
|
+
<Theme name={themeName as "light" | "dark"}>
|
|
248
|
+
<NodeGraphWeb schema={demoGraphSchema()} defaultDocument={demoDocument()} />
|
|
249
|
+
</Theme>,
|
|
250
|
+
);
|
|
251
|
+
const wrapper = container.querySelector("[data-testid='rf__wrapper']");
|
|
252
|
+
expect(wrapper?.classList.contains(expected)).toBe(true);
|
|
253
|
+
expect(
|
|
254
|
+
container.querySelector(`.${graphRootClassName}`)?.getAttribute("data-graph-scheme"),
|
|
255
|
+
).toBe(expected);
|
|
256
|
+
});
|
|
257
|
+
|
|
258
|
+
it("is the same value the sheet declares, so chrome and bodies cannot disagree", () => {
|
|
259
|
+
const { container } = mount(
|
|
260
|
+
<Theme name="dark">
|
|
261
|
+
<NodeGraphWeb schema={demoGraphSchema()} defaultDocument={demoDocument()} />
|
|
262
|
+
</Theme>,
|
|
263
|
+
);
|
|
264
|
+
expect(container.querySelector("style[data-mpo-graph-vars]")?.textContent).toContain(
|
|
265
|
+
"color-scheme: dark;",
|
|
266
|
+
);
|
|
267
|
+
});
|
|
268
|
+
});
|
|
269
|
+
|
|
270
|
+
describe("onlyRenderVisibleElements", () => {
|
|
271
|
+
it("defaults to true — React Flow's own default is false", () => {
|
|
272
|
+
// The measured reason, design §5: node drag 25.71 ms → 10.58 ms at 200
|
|
273
|
+
// nodes / 4× throttle. If this flips, the 200-node story gets slower and
|
|
274
|
+
// nothing else in the suite notices.
|
|
275
|
+
expect(graphCanvasDefaults.onlyRenderVisibleElements).toBe(true);
|
|
276
|
+
});
|
|
277
|
+
|
|
278
|
+
it("cannot be observed in happy-dom, and that is measured, not assumed", () => {
|
|
279
|
+
// A node 900000 px away is culled in a browser and rendered here, because
|
|
280
|
+
// `getNodesInside` skips unmeasured nodes and happy-dom measures none.
|
|
281
|
+
// Written as a test so the day happy-dom starts measuring, this fails and
|
|
282
|
+
// someone strengthens the assertion above instead of trusting a comment.
|
|
283
|
+
const far = {
|
|
284
|
+
version: 1 as const,
|
|
285
|
+
nodes: [
|
|
286
|
+
...demoDocument().nodes,
|
|
287
|
+
{
|
|
288
|
+
id: "far",
|
|
289
|
+
kind: "sink" as const,
|
|
290
|
+
position: { x: 900000, y: 900000 },
|
|
291
|
+
data: { target: "x" },
|
|
292
|
+
},
|
|
293
|
+
],
|
|
294
|
+
edges: [],
|
|
295
|
+
};
|
|
296
|
+
const { container } = mount(
|
|
297
|
+
<NodeGraphWeb schema={demoGraphSchema()} defaultDocument={far} onlyRenderVisibleElements />,
|
|
298
|
+
);
|
|
299
|
+
expect(renderedNodeIds(container)).toContain("far");
|
|
300
|
+
});
|
|
301
|
+
|
|
302
|
+
/**
|
|
303
|
+
* IT FLIPS IN PLACE. React Flow takes it as an ordinary prop, and until the
|
|
304
|
+
* m6 device pass `Perf200` toggled it with a `key` on `<NodeGraph>` instead —
|
|
305
|
+
* which throws the canvas away and builds a new one.
|
|
306
|
+
*
|
|
307
|
+
* On a phone that is not a slow toggle, it is a lost harness: the remount
|
|
308
|
+
* discards the frame sampler mid-session and resets the viewport, so the five
|
|
309
|
+
* runs design §13.2 asks for are five runs of five different starting states.
|
|
310
|
+
* It also discarded the imperative handle, which is what left the culling-OFF
|
|
311
|
+
* readout on `sampling…` forever (see `native/graphHandleRemount.spec.tsx`).
|
|
312
|
+
*
|
|
313
|
+
* Three things have to survive the flip, and node identity alone is not
|
|
314
|
+
* enough — React would give the same ids to a freshly built canvas.
|
|
315
|
+
*/
|
|
316
|
+
it("flips in place: the same nodes, the same DOM, the same command slot", () => {
|
|
317
|
+
const slot: { current: GraphCommands | null } = { current: null };
|
|
318
|
+
const onCanvasMounted = vi.fn();
|
|
319
|
+
const canvas = (culling: boolean) => (
|
|
320
|
+
<NodeGraphWeb
|
|
321
|
+
schema={demoGraphSchema()}
|
|
322
|
+
defaultDocument={demoDocumentLarge(12)}
|
|
323
|
+
onlyRenderVisibleElements={culling}
|
|
324
|
+
commandSlot={slot}
|
|
325
|
+
onCanvasMounted={onCanvasMounted}
|
|
326
|
+
/>
|
|
327
|
+
);
|
|
328
|
+
const view = mount(canvas(true));
|
|
329
|
+
const before = renderedNodeIds(view.container);
|
|
330
|
+
const firstNode = view.container.querySelector(".react-flow__node");
|
|
331
|
+
const commands = slot.current;
|
|
332
|
+
expect(before).toHaveLength(12);
|
|
333
|
+
expect(commands, "the bridge never registered its commands").not.toBeNull();
|
|
334
|
+
// Counted rather than pinned to 1: what matters is that the TOGGLE adds
|
|
335
|
+
// none, not how many times the bridge's own effect settled on first mount.
|
|
336
|
+
const mountsBefore = onCanvasMounted.mock.calls.length;
|
|
337
|
+
|
|
338
|
+
view.rerender(
|
|
339
|
+
<Preset cascade={false}>
|
|
340
|
+
<Surface size="medium" density="comfortable">
|
|
341
|
+
{canvas(false)}
|
|
342
|
+
</Surface>
|
|
343
|
+
</Preset>,
|
|
344
|
+
);
|
|
345
|
+
|
|
346
|
+
expect(renderedNodeIds(view.container), "the node ids did not survive the toggle").toEqual(
|
|
347
|
+
before,
|
|
348
|
+
);
|
|
349
|
+
expect(
|
|
350
|
+
view.container.querySelector(".react-flow__node"),
|
|
351
|
+
"the canvas was rebuilt: same ids, different elements",
|
|
352
|
+
).toBe(firstNode);
|
|
353
|
+
expect(slot.current, "the command bridge remounted, so the sampler mid-run was discarded").toBe(
|
|
354
|
+
commands,
|
|
355
|
+
);
|
|
356
|
+
expect(
|
|
357
|
+
onCanvasMounted.mock.calls.length,
|
|
358
|
+
"the canvas mounted again, which is what a `key` toggle does",
|
|
359
|
+
).toBe(mountsBefore);
|
|
360
|
+
});
|
|
361
|
+
});
|
|
362
|
+
|
|
363
|
+
describe("readOnly", () => {
|
|
364
|
+
it("stops React Flow from dragging or connecting, and still renders", () => {
|
|
365
|
+
const { container } = mount(
|
|
366
|
+
<NodeGraphWeb schema={demoGraphSchema()} defaultDocument={demoDocument()} readOnly />,
|
|
367
|
+
);
|
|
368
|
+
expect(renderedNodeIds(container)).toHaveLength(3);
|
|
369
|
+
// React Flow marks a draggable node with the `draggable` class; a read-only
|
|
370
|
+
// canvas has none.
|
|
371
|
+
expect(container.querySelectorAll(".react-flow__node.draggable")).toHaveLength(0);
|
|
372
|
+
});
|
|
373
|
+
});
|
|
374
|
+
|
|
375
|
+
describe("the controlled canvas", () => {
|
|
376
|
+
it("reports a change without moving until the parent sends a new document", () => {
|
|
377
|
+
const onDocumentChange = vi.fn();
|
|
378
|
+
const document = demoDocument();
|
|
379
|
+
const { container } = mount(
|
|
380
|
+
<NodeGraphWeb
|
|
381
|
+
schema={demoGraphSchema()}
|
|
382
|
+
document={document}
|
|
383
|
+
onDocumentChange={onDocumentChange}
|
|
384
|
+
/>,
|
|
385
|
+
);
|
|
386
|
+
expect(renderedNodeIds(container).sort()).toEqual(["a", "b", "c"]);
|
|
387
|
+
expect(onDocumentChange).not.toHaveBeenCalled();
|
|
388
|
+
});
|
|
389
|
+
});
|
|
390
|
+
|
|
391
|
+
/**
|
|
392
|
+
* H5 (design §7.1, task 3.4). React Flow's magnetic drop radius defaults to
|
|
393
|
+
* 20 px, which agrees with neither of our two hit diameters. 20 under a 44 px
|
|
394
|
+
* touch target is a drop that looks on the port and refuses; 20 over a 24 px
|
|
395
|
+
* mouse target is one that looks off it and takes. So the canvas sets the
|
|
396
|
+
* radius to the hit diameter and the affordance and the behaviour are one
|
|
397
|
+
* number.
|
|
398
|
+
*
|
|
399
|
+
* Read off React Flow's OWN store rather than a prop we passed to ourselves —
|
|
400
|
+
* that is the difference between asserting the wiring and asserting the
|
|
401
|
+
* variable.
|
|
402
|
+
*/
|
|
403
|
+
function ConnectionRadiusProbe({ onValue }: { onValue: (value: number) => void }) {
|
|
404
|
+
onValue(useStore((state) => state.connectionRadius));
|
|
405
|
+
return null;
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
describe("connectionRadius matches the visible affordance", () => {
|
|
409
|
+
function radiusFor(coarsePointer: boolean): number {
|
|
410
|
+
let seen = Number.NaN;
|
|
411
|
+
mount(
|
|
412
|
+
<NodeGraphWeb
|
|
413
|
+
schema={demoGraphSchema()}
|
|
414
|
+
defaultDocument={demoDocument()}
|
|
415
|
+
coarsePointer={coarsePointer}
|
|
416
|
+
>
|
|
417
|
+
<ConnectionRadiusProbe
|
|
418
|
+
onValue={(value) => {
|
|
419
|
+
seen = value;
|
|
420
|
+
}}
|
|
421
|
+
/>
|
|
422
|
+
</NodeGraphWeb>,
|
|
423
|
+
);
|
|
424
|
+
return seen;
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
it("is the press floor on a coarse pointer", () => {
|
|
428
|
+
expect(radiusFor(true)).toBe(portConnectionRadius({ size: "medium", coarsePointer: true }));
|
|
429
|
+
expect(radiusFor(true)).toBe(44);
|
|
430
|
+
});
|
|
431
|
+
|
|
432
|
+
it("is the fine-pointer hit diameter on a fine pointer", () => {
|
|
433
|
+
expect(radiusFor(false)).toBe(portConnectionRadius({ size: "medium", coarsePointer: false }));
|
|
434
|
+
expect(radiusFor(false)).toBe(24);
|
|
435
|
+
});
|
|
436
|
+
|
|
437
|
+
it("is never React Flow's 20 px default on either pointer kind", () => {
|
|
438
|
+
expect(radiusFor(true)).not.toBe(20);
|
|
439
|
+
expect(radiusFor(false)).not.toBe(20);
|
|
440
|
+
});
|
|
441
|
+
});
|
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `NodeGraph/NodeGraph` — the whole editor (design §12.1).
|
|
3
|
+
*
|
|
4
|
+
* Every story mounts the same `demoGraphSchema()` the two task-1.11 specs
|
|
5
|
+
* mount, so a story that renders and a spec that passes are looking at one
|
|
6
|
+
* tree. The canvas brings its own `ReactFlowProvider` and both stylesheets, so
|
|
7
|
+
* a story is exactly what a consumer writes.
|
|
8
|
+
*
|
|
9
|
+
* `AutoLayout` is milestone 4's and is not here yet.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import { Preset } from "@multiplatform.one/theme";
|
|
13
|
+
import type { Knobs } from "@multiplatform.one/theme";
|
|
14
|
+
import type { Meta, StoryObj } from "@storybook/react-native-web-vite";
|
|
15
|
+
import { useState } from "react";
|
|
16
|
+
import { SizableText, Theme, XStack, YStack } from "tamagui";
|
|
17
|
+
import type { BuiltinEdgeData } from "../edges/edgeKinds";
|
|
18
|
+
import type { GraphDocument } from "../model/index";
|
|
19
|
+
import { NodeGraph } from "../NodeGraph";
|
|
20
|
+
import { demoGraphSchema } from "./demoNodeBody";
|
|
21
|
+
import type { DemoNodeData } from "./fixtures";
|
|
22
|
+
import { demoDocument, demoDocumentLarge } from "./fixtures";
|
|
23
|
+
import { Background, Controls, MiniMap } from "./xy";
|
|
24
|
+
|
|
25
|
+
type Doc = GraphDocument<DemoNodeData, BuiltinEdgeData>;
|
|
26
|
+
|
|
27
|
+
const schema = demoGraphSchema();
|
|
28
|
+
|
|
29
|
+
const meta: Meta<typeof NodeGraph> = {
|
|
30
|
+
title: "NodeGraph/NodeGraph",
|
|
31
|
+
component: NodeGraph,
|
|
32
|
+
parameters: {
|
|
33
|
+
status: { type: "beta" },
|
|
34
|
+
layout: "fullscreen",
|
|
35
|
+
docs: {
|
|
36
|
+
description: {
|
|
37
|
+
component:
|
|
38
|
+
"The web editor: GraphVars writes the --xy-* token layer, KnobEnvelopeProvider rebuilds the Preset/Surface/Intent stack, and one registered node type and one registered edge type switch on the model kind internally. Nodes are Tamagui bodies resolved through the real useResolvedKnobs; culling is on by default, which is measured (node drag 25.71ms to 10.58ms at 200 nodes).",
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
},
|
|
42
|
+
argTypes: {
|
|
43
|
+
readOnly: { control: "boolean" },
|
|
44
|
+
coarsePointer: { control: "boolean", description: "Touch surface — widens the port pitch" },
|
|
45
|
+
onlyRenderVisibleElements: { control: "boolean" },
|
|
46
|
+
},
|
|
47
|
+
};
|
|
48
|
+
export default meta;
|
|
49
|
+
|
|
50
|
+
type Story = StoryObj<typeof NodeGraph>;
|
|
51
|
+
|
|
52
|
+
/** Every story needs a real box: React Flow measures its parent, not the window. */
|
|
53
|
+
function Canvas({ children, height = 560 }: { children: React.ReactNode; height?: number }) {
|
|
54
|
+
return (
|
|
55
|
+
<YStack width="100%" height={height} padding="$3">
|
|
56
|
+
{children}
|
|
57
|
+
</YStack>
|
|
58
|
+
);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* The controls are named one by one rather than spread from `args`. A
|
|
63
|
+
* `{...args}` spread pins `NodeGraph`'s kind parameters to their defaults
|
|
64
|
+
* before `schema` can infer them, and the demo document then stops type-checking
|
|
65
|
+
* against its own schema — inference through a spread is worth nothing here.
|
|
66
|
+
*/
|
|
67
|
+
export const Main: Story = {
|
|
68
|
+
render: (args) => (
|
|
69
|
+
<Canvas>
|
|
70
|
+
<NodeGraph
|
|
71
|
+
schema={schema}
|
|
72
|
+
defaultDocument={demoDocumentLarge(12)}
|
|
73
|
+
readOnly={args.readOnly}
|
|
74
|
+
coarsePointer={args.coarsePointer}
|
|
75
|
+
onlyRenderVisibleElements={args.onlyRenderVisibleElements}
|
|
76
|
+
>
|
|
77
|
+
<Background />
|
|
78
|
+
<Controls />
|
|
79
|
+
</NodeGraph>
|
|
80
|
+
</Canvas>
|
|
81
|
+
),
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* The four edge kinds on one canvas. `NodeGraph/Edges` shows them isolated;
|
|
86
|
+
* this is the same table under real Tamagui nodes, which is where a stroke that
|
|
87
|
+
* disappears against the node fill actually shows up.
|
|
88
|
+
*/
|
|
89
|
+
export const TypedEdges: Story = {
|
|
90
|
+
render: () => (
|
|
91
|
+
<Canvas>
|
|
92
|
+
<NodeGraph schema={schema} defaultDocument={demoDocumentLarge(8)}>
|
|
93
|
+
<Background />
|
|
94
|
+
</NodeGraph>
|
|
95
|
+
</Canvas>
|
|
96
|
+
),
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Two hundred nodes. This is where `onlyRenderVisibleElements` earns its
|
|
101
|
+
* default: count `.react-flow__node` in the inspector against the 200 in the
|
|
102
|
+
* document, then flip the control off and count again.
|
|
103
|
+
*/
|
|
104
|
+
export const Large200: Story = {
|
|
105
|
+
render: () => (
|
|
106
|
+
<Canvas height={640}>
|
|
107
|
+
<NodeGraph schema={schema} defaultDocument={demoDocumentLarge(200)}>
|
|
108
|
+
<Background />
|
|
109
|
+
<Controls />
|
|
110
|
+
<MiniMap pannable zoomable />
|
|
111
|
+
</NodeGraph>
|
|
112
|
+
</Canvas>
|
|
113
|
+
),
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
export const Empty: Story = {
|
|
117
|
+
render: () => (
|
|
118
|
+
<Canvas height={320}>
|
|
119
|
+
<NodeGraph schema={schema} defaultDocument={{ version: 1, nodes: [], edges: [] }}>
|
|
120
|
+
<Background />
|
|
121
|
+
</NodeGraph>
|
|
122
|
+
</Canvas>
|
|
123
|
+
),
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
export const ReadOnly: Story = {
|
|
127
|
+
render: () => (
|
|
128
|
+
<Canvas>
|
|
129
|
+
<NodeGraph schema={schema} defaultDocument={demoDocument()} readOnly>
|
|
130
|
+
<Background />
|
|
131
|
+
</NodeGraph>
|
|
132
|
+
</Canvas>
|
|
133
|
+
),
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Controlled: the story owns the document and writes it back on every change.
|
|
138
|
+
* The counter is the proof a 30-frame drag is ONE change, not thirty.
|
|
139
|
+
*/
|
|
140
|
+
export const Controlled: Story = {
|
|
141
|
+
render: () => {
|
|
142
|
+
const [document, setDocument] = useState<Doc>(() => demoDocument());
|
|
143
|
+
const [changes, setChanges] = useState(0);
|
|
144
|
+
return (
|
|
145
|
+
<Canvas>
|
|
146
|
+
<XStack gap="$3" alignItems="center" paddingBottom="$2">
|
|
147
|
+
<SizableText size="$2">{`onDocumentChange calls: ${changes}`}</SizableText>
|
|
148
|
+
<SizableText size="$2" opacity={0.6}>
|
|
149
|
+
{`node a at ${Math.round(document.nodes[0]?.position.x ?? 0)}, ${Math.round(
|
|
150
|
+
document.nodes[0]?.position.y ?? 0,
|
|
151
|
+
)}`}
|
|
152
|
+
</SizableText>
|
|
153
|
+
</XStack>
|
|
154
|
+
<YStack flex={1}>
|
|
155
|
+
<NodeGraph
|
|
156
|
+
schema={schema}
|
|
157
|
+
document={document}
|
|
158
|
+
onDocumentChange={(next) => {
|
|
159
|
+
setDocument(next);
|
|
160
|
+
setChanges((count) => count + 1);
|
|
161
|
+
}}
|
|
162
|
+
>
|
|
163
|
+
<Background />
|
|
164
|
+
</NodeGraph>
|
|
165
|
+
</YStack>
|
|
166
|
+
</Canvas>
|
|
167
|
+
);
|
|
168
|
+
},
|
|
169
|
+
};
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* The knob fuzz, WITH EDGES (design §11). `node scripts/knob-fuzz.mjs
|
|
173
|
+
* MPO-191-graphnode 3` prints these three combos; they are transcribed here
|
|
174
|
+
* rather than generated, so the story shows the same thing on every machine.
|
|
175
|
+
*
|
|
176
|
+
* Combo 1 has `borderWidth: none` and `elevation: none`, which paints a node
|
|
177
|
+
* with no visible frame at all. That is the knobs OBEYING, not a defect — the
|
|
178
|
+
* canvas background differs from the node fill, which is exactly what a graph
|
|
179
|
+
* on a real canvas looks like and why this combo is fuzzed with edges.
|
|
180
|
+
*/
|
|
181
|
+
const fuzzCombos: readonly { readonly label: string; readonly knobs: Partial<Knobs> }[] = [
|
|
182
|
+
{
|
|
183
|
+
label: "combo 1 · radius medium · borderWidth none · elevation none",
|
|
184
|
+
knobs: {
|
|
185
|
+
fillStyle: "filled",
|
|
186
|
+
borderRadius: "medium",
|
|
187
|
+
borderWidth: "none",
|
|
188
|
+
elevation: "none",
|
|
189
|
+
space: "large",
|
|
190
|
+
size: "medium",
|
|
191
|
+
textAccent: "medium",
|
|
192
|
+
headingFont: "geometric",
|
|
193
|
+
bodyFont: "sans-serif",
|
|
194
|
+
fontWeight: "bold",
|
|
195
|
+
animation: "tooltip",
|
|
196
|
+
},
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
label: "combo 2 · radius none · size small · animation none",
|
|
200
|
+
knobs: {
|
|
201
|
+
fillStyle: "filled",
|
|
202
|
+
borderRadius: "none",
|
|
203
|
+
borderWidth: "none",
|
|
204
|
+
elevation: "small",
|
|
205
|
+
space: "small",
|
|
206
|
+
size: "small",
|
|
207
|
+
textAccent: "medium",
|
|
208
|
+
headingFont: "rounded",
|
|
209
|
+
bodyFont: "cursive",
|
|
210
|
+
fontWeight: "regular",
|
|
211
|
+
animation: "none",
|
|
212
|
+
},
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
label: "combo 3 · radius full · size large · elevation large",
|
|
216
|
+
knobs: {
|
|
217
|
+
fillStyle: "filled",
|
|
218
|
+
borderRadius: "full",
|
|
219
|
+
borderWidth: "small",
|
|
220
|
+
elevation: "large",
|
|
221
|
+
space: "medium",
|
|
222
|
+
size: "large",
|
|
223
|
+
textAccent: "high",
|
|
224
|
+
headingFont: "mono",
|
|
225
|
+
bodyFont: "serif",
|
|
226
|
+
fontWeight: "bold",
|
|
227
|
+
animation: "bouncy",
|
|
228
|
+
},
|
|
229
|
+
},
|
|
230
|
+
];
|
|
231
|
+
|
|
232
|
+
export const KnobFuzz: Story = {
|
|
233
|
+
render: () => (
|
|
234
|
+
<YStack padding="$3" gap="$5">
|
|
235
|
+
{(["light", "dark"] as const).map((scheme) => (
|
|
236
|
+
<Theme key={scheme} name={scheme}>
|
|
237
|
+
<YStack gap="$3" padding="$3" backgroundColor="$background">
|
|
238
|
+
<SizableText size="$3" fontWeight="600">
|
|
239
|
+
{scheme}
|
|
240
|
+
</SizableText>
|
|
241
|
+
{fuzzCombos.map((combo) => (
|
|
242
|
+
<YStack key={combo.label} gap="$2">
|
|
243
|
+
<SizableText size="$2" opacity={0.7}>
|
|
244
|
+
{combo.label}
|
|
245
|
+
</SizableText>
|
|
246
|
+
<YStack height={280}>
|
|
247
|
+
<Preset cascade={false} overrides={combo.knobs}>
|
|
248
|
+
<NodeGraph schema={schema} defaultDocument={demoDocumentLarge(6)}>
|
|
249
|
+
<Background />
|
|
250
|
+
</NodeGraph>
|
|
251
|
+
</Preset>
|
|
252
|
+
</YStack>
|
|
253
|
+
</YStack>
|
|
254
|
+
))}
|
|
255
|
+
</YStack>
|
|
256
|
+
</Theme>
|
|
257
|
+
))}
|
|
258
|
+
</YStack>
|
|
259
|
+
),
|
|
260
|
+
};
|