@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,645 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The web canvas: `GraphVars` + `KnobEnvelopeProvider` + `ReactFlow`, in that
|
|
3
|
+
* order, under one root that carries the package's scope class.
|
|
4
|
+
*
|
|
5
|
+
* The order is the whole composition:
|
|
6
|
+
*
|
|
7
|
+
* 1. `GraphVars` writes the `--xy-*` / `--mpo-graph-*` layer onto the root, so
|
|
8
|
+
* React Flow's OWN stylesheet paints from mpo tokens instead of its
|
|
9
|
+
* defaults. Nothing else in the package touches a `.react-flow__` selector
|
|
10
|
+
* (`checkGraphVarsCoverage` in public/config/lint.mjs fails the build if it
|
|
11
|
+
* does, outside `css/graph.css`).
|
|
12
|
+
* 2. `KnobEnvelopeProvider` rebuilds the Preset / Surface / Intent stack from
|
|
13
|
+
* the envelope. On web that is the degenerate case — the host stack is
|
|
14
|
+
* already above us — and it is HERE anyway, because milestone 2's WebView
|
|
15
|
+
* entry must run the same code path. One path, not two that drift.
|
|
16
|
+
* 3. `ReactFlow` with exactly two registrations: one node type and one edge
|
|
17
|
+
* type, both switching on the model kind internally.
|
|
18
|
+
*
|
|
19
|
+
* Two stylesheets are imported. `@xyflow/react/dist/style.css` is required and
|
|
20
|
+
* is NOT restated by this package — `css/graph.css` deliberately carries only
|
|
21
|
+
* the handle `position: absolute` the 44pt region needs, not the edge
|
|
22
|
+
* placement rules. Importing it here means a consumer cannot forget.
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
import "@xyflow/react/dist/style.css";
|
|
26
|
+
import "../../css/graph.css";
|
|
27
|
+
|
|
28
|
+
import { isTouchSurface, useResolvedKnobs } from "@multiplatform.one/theme";
|
|
29
|
+
import type { Knobs } from "@multiplatform.one/theme";
|
|
30
|
+
import {
|
|
31
|
+
type CSSProperties,
|
|
32
|
+
type ReactNode,
|
|
33
|
+
type Ref,
|
|
34
|
+
useCallback,
|
|
35
|
+
useEffect,
|
|
36
|
+
useImperativeHandle,
|
|
37
|
+
useMemo,
|
|
38
|
+
useRef,
|
|
39
|
+
useState,
|
|
40
|
+
} from "react";
|
|
41
|
+
import { graphEdgeTypes } from "../edges/GraphEdge";
|
|
42
|
+
import {
|
|
43
|
+
applySnapToChanges,
|
|
44
|
+
createSnapSession,
|
|
45
|
+
snapContextOptions,
|
|
46
|
+
} from "../interaction/snapChanges";
|
|
47
|
+
import type { GraphSnappingOptions } from "../interaction/snapChanges";
|
|
48
|
+
import type { SnapGuide } from "../interaction/snapAlignment";
|
|
49
|
+
import { useLassoSelect } from "../interaction/useLassoSelect";
|
|
50
|
+
import type { GraphInteractionMode, LassoLongPressOptions } from "../interaction/useLassoSelect";
|
|
51
|
+
import { LassoOverlay } from "./LassoOverlay";
|
|
52
|
+
import { SnapGuides } from "./SnapGuides";
|
|
53
|
+
import { ConnectionPuck } from "./ConnectionPuck";
|
|
54
|
+
import { KnobEnvelopeProvider } from "../knobs/KnobEnvelopeProvider";
|
|
55
|
+
import { useKnobEnvelope } from "../knobs/useKnobEnvelope";
|
|
56
|
+
import type { GraphEventWire } from "../dom/wire";
|
|
57
|
+
import type {
|
|
58
|
+
ConnectionVerdict,
|
|
59
|
+
EdgeKindDefs,
|
|
60
|
+
GraphCommand,
|
|
61
|
+
GraphDocument,
|
|
62
|
+
GraphSchema,
|
|
63
|
+
NodeId,
|
|
64
|
+
NodeKindDefs,
|
|
65
|
+
NodeRect,
|
|
66
|
+
Viewport,
|
|
67
|
+
} from "../model/index";
|
|
68
|
+
import { portConnectionRadius } from "../nodes/handleGeometry";
|
|
69
|
+
import { defaultOverviewZoom } from "../nodes/lod";
|
|
70
|
+
import type { GraphNodeSizeKnob } from "../nodes/nodeMeasure";
|
|
71
|
+
import { GraphVars, graphRootClassName } from "../theme/GraphVarsStyle";
|
|
72
|
+
import { GraphActionsProvider } from "./GraphActions";
|
|
73
|
+
import type { GraphActions } from "./GraphActions";
|
|
74
|
+
import { GraphCommandBridge } from "./GraphCommandBridge";
|
|
75
|
+
import { GraphPaintProbe } from "./GraphPaintProbe";
|
|
76
|
+
import { GraphZoomVar } from "./GraphZoomVar";
|
|
77
|
+
import type { GraphCommandSlot, GraphCommands, NodeGraphHandle } from "./graphHandle";
|
|
78
|
+
import { GraphHostProvider, GraphNodeHost } from "./GraphNodeHost";
|
|
79
|
+
import { defaultGraphNodeType, useGraphController } from "./useGraphController";
|
|
80
|
+
import { ReactFlow, ReactFlowProvider, useReactFlow, useStore } from "./xy";
|
|
81
|
+
import type { NodeChange, NodeTypes } from "./xy";
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* The canvas decisions this package makes, spelled once so they can be read
|
|
85
|
+
* and asserted without mounting anything.
|
|
86
|
+
*
|
|
87
|
+
* `onlyRenderVisibleElements` is true, against React Flow's own `false`. It is
|
|
88
|
+
* measured: node drag 25.71 ms → 10.58 ms at 200 nodes / 4× throttle (design
|
|
89
|
+
* §5). It costs nothing at small graphs and is the single largest win at large
|
|
90
|
+
* ones, so the default is the measured one and a consumer opts OUT.
|
|
91
|
+
*/
|
|
92
|
+
export const graphCanvasDefaults = {
|
|
93
|
+
onlyRenderVisibleElements: true,
|
|
94
|
+
fitView: true,
|
|
95
|
+
/** Below this zoom a node draws in `overview` mode. Design §5. */
|
|
96
|
+
overviewZoom: defaultOverviewZoom,
|
|
97
|
+
/**
|
|
98
|
+
* React Flow's own default is **0.5**, which is ABOVE `overviewZoom`.
|
|
99
|
+
*
|
|
100
|
+
* Measured in Chrome on `NodeGraph/Overview` at 500 nodes: the zoom-out
|
|
101
|
+
* control bottomed out at 0.5, `fitView` clamped there and showed 50 of the
|
|
102
|
+
* 500 nodes, and the overview mode this milestone builds was unreachable —
|
|
103
|
+
* not broken, unreachable, which is worse, because every unit spec around it
|
|
104
|
+
* was green. A level of detail below a floor the user cannot cross is dead
|
|
105
|
+
* code with a passing test suite.
|
|
106
|
+
*
|
|
107
|
+
* `graphCanvasDefaults.minZoom < graphCanvasDefaults.overviewZoom` is
|
|
108
|
+
* asserted in `lod.spec.tsx`, so the two cannot drift back into that state.
|
|
109
|
+
*/
|
|
110
|
+
minZoom: 0.05,
|
|
111
|
+
maxZoom: 2,
|
|
112
|
+
} as const;
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Re-fit once React Flow has MEASURED the nodes, not just seeded them.
|
|
116
|
+
*
|
|
117
|
+
* Measured in Chrome on `Main`: the seed (design §5) makes React Flow consider
|
|
118
|
+
* every node initialized on the first frame, so its own `fitView` runs against
|
|
119
|
+
* the SEEDED box — 72 px tall — and never runs again. The observer then reports
|
|
120
|
+
* the real 147 px and the bottom row hangs out of the pane. Seeding and
|
|
121
|
+
* fitting are both right; what was missing is that fitting has to happen after
|
|
122
|
+
* the correction, once.
|
|
123
|
+
*
|
|
124
|
+
* Not asserted in a spec: happy-dom measures nothing, so `measured` never turns
|
|
125
|
+
* true there and the effect can only be exercised in a browser. It is what the
|
|
126
|
+
* browser found, and it is checked there.
|
|
127
|
+
*/
|
|
128
|
+
function FitOnFirstMeasure({ enabled }: { enabled: boolean }) {
|
|
129
|
+
const { fitView } = useReactFlow();
|
|
130
|
+
const allMeasured = useStore((state) => {
|
|
131
|
+
let total = 0;
|
|
132
|
+
let measured = 0;
|
|
133
|
+
for (const node of state.nodeLookup.values()) {
|
|
134
|
+
total += 1;
|
|
135
|
+
if (node.measured?.height) measured += 1;
|
|
136
|
+
}
|
|
137
|
+
return total > 0 && total === measured;
|
|
138
|
+
});
|
|
139
|
+
const fitted = useRef(false);
|
|
140
|
+
useEffect(() => {
|
|
141
|
+
if (!enabled || fitted.current || !allMeasured) return;
|
|
142
|
+
fitted.current = true;
|
|
143
|
+
void fitView();
|
|
144
|
+
}, [enabled, allMeasured, fitView]);
|
|
145
|
+
return null;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
export interface NodeGraphWebProps<N extends NodeKindDefs, E extends EdgeKindDefs> {
|
|
149
|
+
readonly schema: GraphSchema<N, E>;
|
|
150
|
+
/** Controlled. */
|
|
151
|
+
readonly document?: GraphDocument<N, E>;
|
|
152
|
+
/** Uncontrolled seed. */
|
|
153
|
+
readonly defaultDocument?: GraphDocument<N, E>;
|
|
154
|
+
readonly onDocumentChange?: (document: GraphDocument<N, E>, command: GraphCommand<N, E>) => void;
|
|
155
|
+
readonly onConnectionRefused?: (verdict: ConnectionVerdict) => void;
|
|
156
|
+
readonly readOnly?: boolean;
|
|
157
|
+
/** Merged on top of the whole Preset chain, and carried across the bridge. */
|
|
158
|
+
readonly knobs?: Partial<Knobs>;
|
|
159
|
+
/** The name the host mounted `<Preset preset=…>` with. See `KnobEnvelope.presetName`. */
|
|
160
|
+
readonly presetName?: string;
|
|
161
|
+
readonly intent?: string | null;
|
|
162
|
+
/**
|
|
163
|
+
* Touch surface: widens the port pitch, raises the handle hit region to the
|
|
164
|
+
* 44 px press floor, and makes fields display-only.
|
|
165
|
+
*
|
|
166
|
+
* Defaults to `isTouchSurface()` (design 7.1 H3). It used to default to
|
|
167
|
+
* `false`, which meant a canvas mounted inside the WebView with nobody
|
|
168
|
+
* passing the prop painted 24 px targets and set `--mpo-graph-handle-hit`
|
|
169
|
+
* to 24 — the press floor missed by twenty pixels, silently, on the one
|
|
170
|
+
* surface the floor is for.
|
|
171
|
+
*/
|
|
172
|
+
readonly coarsePointer?: boolean;
|
|
173
|
+
/**
|
|
174
|
+
* `pan` (the default) is React Flow's ordinary canvas. `select` swaps the
|
|
175
|
+
* one-finger pan for a marquee by setting `panOnDrag={false}`, which is the
|
|
176
|
+
* only value that opens the touch guard at `Pane/index.tsx:146` — design
|
|
177
|
+
* §7.3, and `lassoFlowProps` carries the reasoning.
|
|
178
|
+
*
|
|
179
|
+
* Controlled on purpose: the toolbar that flips it lives in the native shell
|
|
180
|
+
* (`GraphToolbar`), outside the WebView, so the canvas is told the mode
|
|
181
|
+
* rather than owning it.
|
|
182
|
+
*/
|
|
183
|
+
readonly interactionMode?: GraphInteractionMode;
|
|
184
|
+
readonly onlyRenderVisibleElements?: boolean;
|
|
185
|
+
readonly fitView?: boolean;
|
|
186
|
+
readonly overviewZoom?: number;
|
|
187
|
+
/**
|
|
188
|
+
* Alignment snapping and the optional grid, design §7.2. Alignment is on;
|
|
189
|
+
* pass `{ alignment: false }` to turn the whole thing off, or a `grid` in
|
|
190
|
+
* flow units to compose one with it.
|
|
191
|
+
*/
|
|
192
|
+
readonly snapping?: GraphSnappingOptions;
|
|
193
|
+
/**
|
|
194
|
+
* Defaults to 0.05, well under `overviewZoom`. React Flow's own 0.5 sits
|
|
195
|
+
* ABOVE it, which makes overview mode unreachable — see
|
|
196
|
+
* `graphCanvasDefaults.minZoom`. Raising this above `overviewZoom` turns the
|
|
197
|
+
* level of detail off, and that is the consumer's call to make explicitly.
|
|
198
|
+
*/
|
|
199
|
+
readonly minZoom?: number;
|
|
200
|
+
readonly maxZoom?: number;
|
|
201
|
+
/** Extra node types a consumer registers alongside the built-in one. */
|
|
202
|
+
readonly nodeTypes?: NodeTypes;
|
|
203
|
+
readonly className?: string;
|
|
204
|
+
readonly style?: CSSProperties;
|
|
205
|
+
/**
|
|
206
|
+
* The one overlay that says what a connection drag is currently over
|
|
207
|
+
* (design §7.4). On by default: it exists only while a drag is in progress,
|
|
208
|
+
* and on a phone the finger occludes the port it is aiming at, which the
|
|
209
|
+
* native spike named the hardest touch item verbatim.
|
|
210
|
+
*/
|
|
211
|
+
readonly connectionPuck?: boolean;
|
|
212
|
+
/** Names a node for the puck. Defaults to the node id. */
|
|
213
|
+
readonly nodeLabel?: (nodeId: string) => string | undefined;
|
|
214
|
+
/**
|
|
215
|
+
* The long press, design §7.3, INSIDE the canvas.
|
|
216
|
+
*
|
|
217
|
+
* It used to be a hook a consumer called and wired to a DOM ref of its own
|
|
218
|
+
* (`NodeGraph/Lasso` → `LongPress` did exactly that). On native that story
|
|
219
|
+
* could not mount at all — `View config getter callback for component 'div'
|
|
220
|
+
* must be a function` — because the ref hung off the React Native host tree
|
|
221
|
+
* while the pane it must intercept lives in the WebView's realm, which a
|
|
222
|
+
* host-side ref can never reach.
|
|
223
|
+
*
|
|
224
|
+
* So the gesture moved in here, where the pane exists on both platforms, and
|
|
225
|
+
* a native consumer arms it with a serializable option instead of a hook.
|
|
226
|
+
* Off by default: design §7.3 L7 says nothing changes on a fine pointer.
|
|
227
|
+
*/
|
|
228
|
+
readonly longPressLasso?: boolean;
|
|
229
|
+
/**
|
|
230
|
+
* The single channel, on web.
|
|
231
|
+
*
|
|
232
|
+
* Design §9.1's `onEvent`, unwrapped: on native the same union crosses the
|
|
233
|
+
* bridge as JSON, and on web it is handed straight to the caller. One prop
|
|
234
|
+
* rather than six callbacks, for the reason the bridge has one channel —
|
|
235
|
+
* adding an event is then a change to a type and to nothing else.
|
|
236
|
+
*/
|
|
237
|
+
readonly onGraphEvent?: (event: GraphEventWire) => void;
|
|
238
|
+
/**
|
|
239
|
+
* The imperative handle, design §9.1.
|
|
240
|
+
*
|
|
241
|
+
* The same eleven commands the native shell forwards across the bridge, so a
|
|
242
|
+
* toolbar written as a sibling drives the canvas identically on both
|
|
243
|
+
* platforms. That is milestone 6's whole rule: a native consumer cannot put
|
|
244
|
+
* children inside the canvas, so the handle is the surface, and a handle that
|
|
245
|
+
* existed only on native would be a surface the web story could not rehearse.
|
|
246
|
+
*/
|
|
247
|
+
readonly graphRef?: Ref<NodeGraphHandle>;
|
|
248
|
+
/**
|
|
249
|
+
* The DOM shell's own slot, threaded down so `useDOMImperativeHandle` can
|
|
250
|
+
* forward into it. Consumers use `graphRef`; this is the bridge's door and it
|
|
251
|
+
* is documented so nobody mistakes it for one.
|
|
252
|
+
*/
|
|
253
|
+
readonly commandSlot?: GraphCommandSlot;
|
|
254
|
+
/**
|
|
255
|
+
* Which realm this canvas is painting in. Recorded on every perf report, so a
|
|
256
|
+
* device run and a desktop run are distinguishable in the data rather than in
|
|
257
|
+
* someone's memory.
|
|
258
|
+
*/
|
|
259
|
+
readonly renderer?: "react-flow-web" | "react-flow-dom";
|
|
260
|
+
/**
|
|
261
|
+
* Milliseconds from the DOM bundle's first line to now, when there is a boot
|
|
262
|
+
* record to read. Rides the `paint` event, which is what the native watchdog
|
|
263
|
+
* is measured against (design §9.4). Web has no boot record and passes none.
|
|
264
|
+
*/
|
|
265
|
+
readonly readBootMs?: () => number | null;
|
|
266
|
+
/** The DOM realm stamps its boot stage here. Web passes nothing. */
|
|
267
|
+
readonly onCanvasMounted?: () => void;
|
|
268
|
+
/** `Background`, `Controls`, `MiniMap` — React Flow children. */
|
|
269
|
+
readonly children?: ReactNode;
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
function NodeGraphCanvas<N extends NodeKindDefs, E extends EdgeKindDefs>(
|
|
273
|
+
props: NodeGraphWebProps<N, E>,
|
|
274
|
+
) {
|
|
275
|
+
const {
|
|
276
|
+
schema,
|
|
277
|
+
document,
|
|
278
|
+
defaultDocument,
|
|
279
|
+
onDocumentChange,
|
|
280
|
+
onConnectionRefused,
|
|
281
|
+
readOnly = false,
|
|
282
|
+
knobs,
|
|
283
|
+
presetName,
|
|
284
|
+
intent,
|
|
285
|
+
coarsePointer = isTouchSurface(),
|
|
286
|
+
interactionMode = "pan",
|
|
287
|
+
onlyRenderVisibleElements = graphCanvasDefaults.onlyRenderVisibleElements,
|
|
288
|
+
fitView = graphCanvasDefaults.fitView,
|
|
289
|
+
overviewZoom = graphCanvasDefaults.overviewZoom,
|
|
290
|
+
snapping,
|
|
291
|
+
minZoom = graphCanvasDefaults.minZoom,
|
|
292
|
+
maxZoom = graphCanvasDefaults.maxZoom,
|
|
293
|
+
nodeTypes,
|
|
294
|
+
connectionPuck = true,
|
|
295
|
+
longPressLasso = false,
|
|
296
|
+
nodeLabel,
|
|
297
|
+
className,
|
|
298
|
+
style,
|
|
299
|
+
children,
|
|
300
|
+
} = props;
|
|
301
|
+
|
|
302
|
+
/**
|
|
303
|
+
* The canvas root element, needed by three things that all have to agree on
|
|
304
|
+
* WHICH canvas they mean: the zoom variable H7 reads, the frame sampler's
|
|
305
|
+
* transform probe, and the long press's hunt for `.react-flow__pane`. Two
|
|
306
|
+
* canvases on one page is exactly the `NodeGraph/Perf200` layout, so scoping
|
|
307
|
+
* them to a root is not hypothetical tidiness.
|
|
308
|
+
*/
|
|
309
|
+
const rootRef = useRef<HTMLDivElement | null>(null);
|
|
310
|
+
|
|
311
|
+
/**
|
|
312
|
+
* The one channel. A stable identity even when the caller passes an inline
|
|
313
|
+
* arrow, because the command bridge builds its handle once and a changing
|
|
314
|
+
* `emit` would rebuild it mid-gesture.
|
|
315
|
+
*/
|
|
316
|
+
const graphEventRef = useRef(props.onGraphEvent);
|
|
317
|
+
graphEventRef.current = props.onGraphEvent;
|
|
318
|
+
const emit = useCallback((event: GraphEventWire) => graphEventRef.current?.(event), []);
|
|
319
|
+
|
|
320
|
+
const perfHost = props.renderer ?? "react-flow-web";
|
|
321
|
+
const readBootMsRef = useRef(props.readBootMs);
|
|
322
|
+
readBootMsRef.current = props.readBootMs;
|
|
323
|
+
/**
|
|
324
|
+
* The frame after React Flow's first render. It is what the native watchdog
|
|
325
|
+
* times against, because `ready` waits `graphReadySettleMs` for its own
|
|
326
|
+
* diagnostics to fill in and therefore cannot be the thing a liveness check
|
|
327
|
+
* measures — on emulator-5592 the 12 s budget fired on a canvas that was
|
|
328
|
+
* already on screen.
|
|
329
|
+
*/
|
|
330
|
+
const onPaint = useCallback(
|
|
331
|
+
() => emit({ t: "paint", bootMs: readBootMsRef.current?.() ?? null }),
|
|
332
|
+
[emit],
|
|
333
|
+
);
|
|
334
|
+
|
|
335
|
+
// The canvas CHROME's knobs. A node's own paint comes from its body's
|
|
336
|
+
// `useResolvedKnobs`, not from here; this is the `size` the measure seed
|
|
337
|
+
// reads and the pointer class the var layer needs.
|
|
338
|
+
const { knobProps } = useResolvedKnobs();
|
|
339
|
+
const size = knobProps.size as GraphNodeSizeKnob;
|
|
340
|
+
|
|
341
|
+
const envelope = useKnobEnvelope({
|
|
342
|
+
knobs,
|
|
343
|
+
presetName,
|
|
344
|
+
intent: intent ?? undefined,
|
|
345
|
+
pointer: coarsePointer ? "coarse" : "fine",
|
|
346
|
+
});
|
|
347
|
+
|
|
348
|
+
/**
|
|
349
|
+
* H5. The magnetic drop radius is the hit DIAMETER, not React Flow's 20 px
|
|
350
|
+
* default, so what snaps a connection is the same circle the user can see
|
|
351
|
+
* and press. 20 px under a 44 px target means a drop that looks on the port
|
|
352
|
+
* and refuses; 44 under a 24 px target means one that looks off it and takes.
|
|
353
|
+
*/
|
|
354
|
+
const connectionRadius = portConnectionRadius({ size, coarsePointer });
|
|
355
|
+
|
|
356
|
+
const reactFlowApi = useReactFlow();
|
|
357
|
+
/**
|
|
358
|
+
* The boxes React Flow's ResizeObserver has actually reported, read on
|
|
359
|
+
* demand. See `GraphLayoutOptions.measured`: laying a graph out on the seed
|
|
360
|
+
* puts ranks 18 flow units apart where `rankSpacing` asked for 90, because
|
|
361
|
+
* the demo kinds seed 72 px and paint 144-192.
|
|
362
|
+
*/
|
|
363
|
+
const readMeasuredSizes = useCallback(() => {
|
|
364
|
+
const sizes: Record<string, { width: number; height: number }> = {};
|
|
365
|
+
for (const node of reactFlowApi.getNodes()) {
|
|
366
|
+
const width = node.measured?.width;
|
|
367
|
+
const height = node.measured?.height;
|
|
368
|
+
if (width && height) sizes[node.id] = { width, height };
|
|
369
|
+
}
|
|
370
|
+
return sizes;
|
|
371
|
+
}, [reactFlowApi]);
|
|
372
|
+
|
|
373
|
+
const controller = useGraphController<N, E>({
|
|
374
|
+
schema,
|
|
375
|
+
document,
|
|
376
|
+
defaultDocument,
|
|
377
|
+
onDocumentChange,
|
|
378
|
+
onConnectionRefused,
|
|
379
|
+
readOnly,
|
|
380
|
+
size,
|
|
381
|
+
coarsePointer,
|
|
382
|
+
readMeasuredSizes,
|
|
383
|
+
});
|
|
384
|
+
|
|
385
|
+
const setNodeData = useCallback(
|
|
386
|
+
(id: string, patch: Record<string, unknown>) => {
|
|
387
|
+
const node = controller.document.nodes.find((candidate) => candidate.id === id);
|
|
388
|
+
if (!node) return;
|
|
389
|
+
controller.commit({
|
|
390
|
+
t: "setNodeData",
|
|
391
|
+
id,
|
|
392
|
+
data: { ...(node.data as Record<string, unknown>), ...patch },
|
|
393
|
+
} as GraphCommand<N, E>);
|
|
394
|
+
},
|
|
395
|
+
[controller],
|
|
396
|
+
);
|
|
397
|
+
|
|
398
|
+
const host = useMemo(
|
|
399
|
+
() => ({
|
|
400
|
+
schema: schema as unknown as GraphSchema<NodeKindDefs, EdgeKindDefs>,
|
|
401
|
+
overviewZoom,
|
|
402
|
+
coarsePointer,
|
|
403
|
+
readOnly,
|
|
404
|
+
setNodeData,
|
|
405
|
+
}),
|
|
406
|
+
[schema, overviewZoom, coarsePointer, readOnly, setNodeData],
|
|
407
|
+
);
|
|
408
|
+
|
|
409
|
+
// Snapping sits BETWEEN React Flow and the controller: it rewrites the live
|
|
410
|
+
// drag frames, and the controller still sees one `dragging: false` change and
|
|
411
|
+
// commits once (design §4.5). The session is a ref, not state — it is the
|
|
412
|
+
// drag's memory (S3) and re-rendering on it would rebuild the index it exists
|
|
413
|
+
// to keep.
|
|
414
|
+
const snapSession = useRef(createSnapSession());
|
|
415
|
+
const [guides, setGuides] = useState<readonly SnapGuide[]>([]);
|
|
416
|
+
const snapOptions = snapContextOptions({
|
|
417
|
+
snapping,
|
|
418
|
+
animation: envelope.knobs.animation as string | undefined,
|
|
419
|
+
reducedMotion: envelope.prefersReducedMotion,
|
|
420
|
+
coarsePointer,
|
|
421
|
+
});
|
|
422
|
+
const { alignment: snapAlignmentOn, grid: snapGrid, thresholdScreenPx } = snapOptions;
|
|
423
|
+
const reactFlow = reactFlowApi;
|
|
424
|
+
const controllerNodesRef = useRef(controller.nodes);
|
|
425
|
+
controllerNodesRef.current = controller.nodes;
|
|
426
|
+
const controllerChangeRef = useRef(controller.onNodesChange);
|
|
427
|
+
controllerChangeRef.current = controller.onNodesChange;
|
|
428
|
+
|
|
429
|
+
const onNodesChange = useCallback(
|
|
430
|
+
(changes: NodeChange[]) => {
|
|
431
|
+
const snapped = applySnapToChanges(changes, {
|
|
432
|
+
nodes: controllerNodesRef.current,
|
|
433
|
+
zoom: reactFlow.getZoom(),
|
|
434
|
+
session: snapSession.current,
|
|
435
|
+
alignment: snapAlignmentOn,
|
|
436
|
+
grid: snapGrid,
|
|
437
|
+
thresholdScreenPx,
|
|
438
|
+
});
|
|
439
|
+
// Same reference when nothing fired, so an ordinary pan does not
|
|
440
|
+
// re-render the guide layer 120 times a second.
|
|
441
|
+
setGuides((previous) =>
|
|
442
|
+
previous.length === 0 && snapped.guides.length === 0 ? previous : snapped.guides,
|
|
443
|
+
);
|
|
444
|
+
controllerChangeRef.current(snapped.changes as NodeChange[]);
|
|
445
|
+
},
|
|
446
|
+
[reactFlow, snapAlignmentOn, snapGrid, thresholdScreenPx],
|
|
447
|
+
);
|
|
448
|
+
|
|
449
|
+
/**
|
|
450
|
+
* The long press, design §7.3 L1-L7, mounted where the pane is.
|
|
451
|
+
*
|
|
452
|
+
* `useLassoSelect` is called with `mode` CONTROLLED, so it never changes the
|
|
453
|
+
* toolbar's mode itself — the toolbar is a sibling and owns that. What this
|
|
454
|
+
* call is for is `effectiveMode` and `marquee`: while armed the canvas must
|
|
455
|
+
* take `panOnDrag={false}` whatever the toolbar says, or the interceptor
|
|
456
|
+
* stops the gesture already running and the NEXT one pans anyway.
|
|
457
|
+
*/
|
|
458
|
+
const longPress = useMemo<LassoLongPressOptions>(
|
|
459
|
+
() => ({
|
|
460
|
+
rootRef,
|
|
461
|
+
enabled: longPressLasso,
|
|
462
|
+
viewport: {
|
|
463
|
+
get: (): Viewport => reactFlowApi.getViewport(),
|
|
464
|
+
set: (viewport: Viewport) => {
|
|
465
|
+
void reactFlowApi.setViewport(viewport, { duration: 0 });
|
|
466
|
+
},
|
|
467
|
+
},
|
|
468
|
+
getNodeRects: (): readonly NodeRect[] =>
|
|
469
|
+
reactFlowApi.getNodes().map((node) => ({
|
|
470
|
+
id: node.id,
|
|
471
|
+
rect: {
|
|
472
|
+
x: node.position.x,
|
|
473
|
+
y: node.position.y,
|
|
474
|
+
width: node.measured?.width ?? node.width ?? 0,
|
|
475
|
+
height: node.measured?.height ?? node.height ?? 0,
|
|
476
|
+
},
|
|
477
|
+
})),
|
|
478
|
+
onSelect: (ids: readonly NodeId[]) => {
|
|
479
|
+
const wanted = new Set<string>(ids);
|
|
480
|
+
reactFlowApi.setNodes((nodes) =>
|
|
481
|
+
nodes.map((node) => ({ ...node, selected: wanted.has(node.id) })),
|
|
482
|
+
);
|
|
483
|
+
emit({ t: "lasso", phase: "select", ids, haptic: null });
|
|
484
|
+
// The ordinary selection event too, so a consumer that only cares WHAT
|
|
485
|
+
// is selected does not have to know a lasso happened.
|
|
486
|
+
emit({ t: "selection", ids });
|
|
487
|
+
},
|
|
488
|
+
// A WebView cannot buzz. The shell can, so the canvas asks — a HINT, not
|
|
489
|
+
// a command: whether a buzz is appropriate is the shell's call.
|
|
490
|
+
onHaptic: () => emit({ t: "lasso", phase: "arm", ids: [], haptic: "selection" }),
|
|
491
|
+
onCancel: () => emit({ t: "lasso", phase: "cancel", ids: [], haptic: null }),
|
|
492
|
+
}),
|
|
493
|
+
[emit, longPressLasso, reactFlowApi],
|
|
494
|
+
);
|
|
495
|
+
|
|
496
|
+
const lasso = useLassoSelect({ mode: interactionMode, longPress });
|
|
497
|
+
|
|
498
|
+
/**
|
|
499
|
+
* The imperative handle, filled by `GraphCommandBridge` below.
|
|
500
|
+
*
|
|
501
|
+
* `commandSlot` is the DOM shell's own ref when the canvas is inside a
|
|
502
|
+
* WebView, and this local one on web. One slot either way, so the eleven
|
|
503
|
+
* commands have exactly one implementation.
|
|
504
|
+
*/
|
|
505
|
+
const ownSlot = useRef<GraphCommands | null>(null);
|
|
506
|
+
const slot = props.commandSlot ?? ownSlot;
|
|
507
|
+
|
|
508
|
+
/**
|
|
509
|
+
* A stable forwarder, not the slot itself: the slot is null until React Flow
|
|
510
|
+
* mounts, and a `graphRef` that handed out null would make a sibling toolbar
|
|
511
|
+
* fail on the first press after every remount.
|
|
512
|
+
*/
|
|
513
|
+
const handle = useMemo<NodeGraphHandle>(
|
|
514
|
+
() => ({
|
|
515
|
+
fitView: () => slot.current?.fitView(),
|
|
516
|
+
relayout: () => slot.current?.relayout(),
|
|
517
|
+
zoomTo: (zoom) => slot.current?.zoomTo(zoom),
|
|
518
|
+
centerOn: (nodeId) => slot.current?.centerOn(nodeId),
|
|
519
|
+
setSelection: (ids) => slot.current?.setSelection(ids),
|
|
520
|
+
exportViewport: () => slot.current?.exportViewport(),
|
|
521
|
+
undo: () => slot.current?.undo(),
|
|
522
|
+
redo: () => slot.current?.redo(),
|
|
523
|
+
perfStart: (label) => slot.current?.perfStart(label),
|
|
524
|
+
perfStop: (label) => slot.current?.perfStop(label),
|
|
525
|
+
perfMark: (label) => slot.current?.perfMark(label),
|
|
526
|
+
setViewport: (x, y, zoom) => slot.current?.setViewport(x, y, zoom),
|
|
527
|
+
synthPinch: (scale, steps) => slot.current?.synthPinch(scale, steps),
|
|
528
|
+
}),
|
|
529
|
+
[slot],
|
|
530
|
+
);
|
|
531
|
+
useImperativeHandle(props.graphRef, () => handle, [handle]);
|
|
532
|
+
|
|
533
|
+
const types = useMemo<NodeTypes>(
|
|
534
|
+
() => ({ [defaultGraphNodeType]: GraphNodeHost, ...nodeTypes }),
|
|
535
|
+
[nodeTypes],
|
|
536
|
+
);
|
|
537
|
+
|
|
538
|
+
// Published to `children`, which mount BELOW the controller. A Tidy or Undo
|
|
539
|
+
// button has no other way to reach it — see `GraphActions.tsx`.
|
|
540
|
+
const actions = useMemo<GraphActions>(
|
|
541
|
+
() => ({
|
|
542
|
+
relayout: controller.relayout,
|
|
543
|
+
undo: controller.undo,
|
|
544
|
+
redo: controller.redo,
|
|
545
|
+
canUndo: controller.canUndo,
|
|
546
|
+
canRedo: controller.canRedo,
|
|
547
|
+
layoutRunner: controller.layoutRunner,
|
|
548
|
+
lastLayoutMs: controller.lastLayoutMs,
|
|
549
|
+
layoutPending: controller.layoutPending,
|
|
550
|
+
nodeCount: controller.document.nodes.length,
|
|
551
|
+
}),
|
|
552
|
+
[
|
|
553
|
+
controller.relayout,
|
|
554
|
+
controller.undo,
|
|
555
|
+
controller.redo,
|
|
556
|
+
controller.canUndo,
|
|
557
|
+
controller.canRedo,
|
|
558
|
+
controller.layoutRunner,
|
|
559
|
+
controller.lastLayoutMs,
|
|
560
|
+
controller.layoutPending,
|
|
561
|
+
controller.document.nodes.length,
|
|
562
|
+
],
|
|
563
|
+
);
|
|
564
|
+
|
|
565
|
+
return (
|
|
566
|
+
<div
|
|
567
|
+
ref={rootRef}
|
|
568
|
+
className={className ? `${graphRootClassName} ${className}` : graphRootClassName}
|
|
569
|
+
data-graph-scheme={envelope.scheme}
|
|
570
|
+
style={{ width: "100%", height: "100%", ...style }}
|
|
571
|
+
>
|
|
572
|
+
<GraphVars vars={envelope.vars} scheme={envelope.scheme} revision={envelope.revision} />
|
|
573
|
+
<KnobEnvelopeProvider envelope={envelope}>
|
|
574
|
+
<GraphActionsProvider value={actions}>
|
|
575
|
+
<GraphHostProvider value={host}>
|
|
576
|
+
<ReactFlow
|
|
577
|
+
nodes={controller.nodes}
|
|
578
|
+
edges={controller.edges}
|
|
579
|
+
nodeTypes={types}
|
|
580
|
+
edgeTypes={graphEdgeTypes}
|
|
581
|
+
onNodesChange={onNodesChange}
|
|
582
|
+
onEdgesChange={controller.onEdgesChange}
|
|
583
|
+
onConnect={controller.onConnect}
|
|
584
|
+
isValidConnection={controller.isValidConnection}
|
|
585
|
+
connectionRadius={connectionRadius}
|
|
586
|
+
onlyRenderVisibleElements={onlyRenderVisibleElements}
|
|
587
|
+
fitView={fitView}
|
|
588
|
+
minZoom={minZoom}
|
|
589
|
+
maxZoom={maxZoom}
|
|
590
|
+
{...lasso.flowProps}
|
|
591
|
+
// The scheme the envelope resolved, so the canvas chrome and the
|
|
592
|
+
// Tamagui bodies inside it cannot disagree about which theme is on.
|
|
593
|
+
colorMode={envelope.scheme}
|
|
594
|
+
nodesDraggable={!readOnly}
|
|
595
|
+
nodesConnectable={!readOnly}
|
|
596
|
+
elementsSelectable
|
|
597
|
+
proOptions={{ hideAttribution: true }}
|
|
598
|
+
>
|
|
599
|
+
<FitOnFirstMeasure enabled={fitView} />
|
|
600
|
+
<GraphZoomVar rootRef={rootRef} />
|
|
601
|
+
<GraphPaintProbe onPaint={onPaint} />
|
|
602
|
+
<GraphCommandBridge
|
|
603
|
+
commands={slot}
|
|
604
|
+
culling={onlyRenderVisibleElements}
|
|
605
|
+
emit={emit}
|
|
606
|
+
host={perfHost}
|
|
607
|
+
rootRef={rootRef}
|
|
608
|
+
onMounted={props.onCanvasMounted}
|
|
609
|
+
/>
|
|
610
|
+
<SnapGuides guides={guides} animated={snapOptions.animateGuides} />
|
|
611
|
+
{/* INSIDE the canvas, so the `--xy-selection-*` layer is in scope.
|
|
612
|
+
Outside it the rectangle is the right size and invisible. */}
|
|
613
|
+
<LassoOverlay rect={lasso.marquee} />
|
|
614
|
+
{connectionPuck ? (
|
|
615
|
+
<ConnectionPuck
|
|
616
|
+
document={controller.document}
|
|
617
|
+
schema={schema}
|
|
618
|
+
nodeLabel={nodeLabel}
|
|
619
|
+
/>
|
|
620
|
+
) : null}
|
|
621
|
+
{children}
|
|
622
|
+
</ReactFlow>
|
|
623
|
+
</GraphHostProvider>
|
|
624
|
+
</GraphActionsProvider>
|
|
625
|
+
</KnobEnvelopeProvider>
|
|
626
|
+
</div>
|
|
627
|
+
);
|
|
628
|
+
}
|
|
629
|
+
|
|
630
|
+
/**
|
|
631
|
+
* `ReactFlowProvider` is mounted by the package, not asked of the consumer.
|
|
632
|
+
*
|
|
633
|
+
* `GraphNodeHost` reads the store for the live zoom and `GraphNode` calls
|
|
634
|
+
* `useUpdateNodeInternals`; both throw outside a provider. Making the consumer
|
|
635
|
+
* remember it is a failure mode with a confusing message.
|
|
636
|
+
*/
|
|
637
|
+
export function NodeGraphWeb<N extends NodeKindDefs, E extends EdgeKindDefs>(
|
|
638
|
+
props: NodeGraphWebProps<N, E>,
|
|
639
|
+
) {
|
|
640
|
+
return (
|
|
641
|
+
<ReactFlowProvider>
|
|
642
|
+
<NodeGraphCanvas {...props} />
|
|
643
|
+
</ReactFlowProvider>
|
|
644
|
+
);
|
|
645
|
+
}
|