@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,489 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Select mode: the free half of the lasso (design §7.3, task 3.6).
|
|
3
|
+
*
|
|
4
|
+
* There are two ways into a marquee on touch and this is the one that costs
|
|
5
|
+
* nothing, because it is upstream's own path rather than a mechanism we own.
|
|
6
|
+
* The toolbar flips a mode; the canvas re-renders with
|
|
7
|
+
* `panOnDrag={false} selectionOnDrag selectionMode={SelectionMode.Partial}`;
|
|
8
|
+
* the next `pointerdown` then passes React Flow's touch guard.
|
|
9
|
+
*
|
|
10
|
+
* That guard, verbatim from the installed 12.11.5 (`Pane/index.tsx:143-148`,
|
|
11
|
+
* shipped at `dist/esm/index.js:1481`):
|
|
12
|
+
*
|
|
13
|
+
* if (event.pointerType === 'touch' && panOnDrag !== false && !selectionKeyPressed) return;
|
|
14
|
+
*
|
|
15
|
+
* `panOnDrag !== false` is an IDENTITY check, so `false` is the only value in
|
|
16
|
+
* the language that opens it. `0`, `[]`, `null` and `undefined` are every bit
|
|
17
|
+
* as truthy to that line as `true` is, and each of them yields a select mode
|
|
18
|
+
* that looks right in a props table and does nothing under a finger. Hence
|
|
19
|
+
* `panOnDrag: false as const` below rather than anything computed, and hence
|
|
20
|
+
* the spec asserting it with `toBe(false)`.
|
|
21
|
+
*
|
|
22
|
+
* `SelectionMode.Partial` is the touch default on purpose: `Full` asks the user
|
|
23
|
+
* to enclose a node completely, and on a phone the marquee is drawn with the
|
|
24
|
+
* thing you are aiming at hidden under your hand.
|
|
25
|
+
*
|
|
26
|
+
* The long press (design §7.3 L1-L7) is the OTHER entry point, added in task
|
|
27
|
+
* 3.7 below. It drives this same mode and it is opt-in, so that if the
|
|
28
|
+
* interceptor turns out not to work on a real WebView, toolbar mode is
|
|
29
|
+
* untouched and there is still a lasso.
|
|
30
|
+
*/
|
|
31
|
+
|
|
32
|
+
import type { RefObject } from "react";
|
|
33
|
+
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
34
|
+
import type { MarqueeMode, NodeId, NodeRect, Rect, Viewport } from "../model/index";
|
|
35
|
+
import { selectInMarquee } from "../model/index";
|
|
36
|
+
import { SelectionMode, reactFlowPaneSelector } from "../react-flow/xy";
|
|
37
|
+
import { installLassoIntercept } from "./lassoIntercept";
|
|
38
|
+
import type { LassoIntercept } from "./lassoIntercept";
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* `pan` is React Flow's ordinary canvas — one finger pans, and that is what
|
|
42
|
+
* every graph does today. `select` swaps that one finger for a marquee.
|
|
43
|
+
*
|
|
44
|
+
* Two values, not three: a "connect" mode was considered and dropped, because
|
|
45
|
+
* connecting already starts from a port rather than from the pane and a mode
|
|
46
|
+
* for it would be a mode the user has to remember to leave.
|
|
47
|
+
*/
|
|
48
|
+
export type GraphInteractionMode = "pan" | "select";
|
|
49
|
+
|
|
50
|
+
/** Exactly the React Flow props the mode decides, and no others. */
|
|
51
|
+
export interface LassoFlowProps {
|
|
52
|
+
readonly panOnDrag: boolean;
|
|
53
|
+
readonly selectionOnDrag: boolean;
|
|
54
|
+
readonly selectionMode: SelectionMode;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
const panProps: LassoFlowProps = {
|
|
58
|
+
panOnDrag: true,
|
|
59
|
+
selectionOnDrag: false,
|
|
60
|
+
selectionMode: SelectionMode.Partial,
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
const selectProps: LassoFlowProps = {
|
|
64
|
+
panOnDrag: false,
|
|
65
|
+
selectionOnDrag: true,
|
|
66
|
+
selectionMode: SelectionMode.Partial,
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Frozen module constants rather than a fresh object per call: these are spread
|
|
71
|
+
* onto `ReactFlow` on every render of the canvas, and a new `selectionMode`
|
|
72
|
+
* identity each time is a prop change React Flow has to reconcile for nothing.
|
|
73
|
+
*/
|
|
74
|
+
export function lassoFlowProps(mode: GraphInteractionMode): LassoFlowProps {
|
|
75
|
+
return mode === "select" ? selectProps : panProps;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/* ── The long press (design §7.3 L1-L7, task 3.7) ──────────────────────── */
|
|
79
|
+
|
|
80
|
+
/** Design §7.3 L1. Long enough not to fire on a flick, short enough to feel deliberate. */
|
|
81
|
+
export const lassoHoldMs = 350;
|
|
82
|
+
/** Design §7.3 L2. Past this before the timer fires, it was a pan and it stays one. */
|
|
83
|
+
export const lassoSlopPx = 10;
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* The viewport, as a port rather than as `useReactFlow()`.
|
|
87
|
+
*
|
|
88
|
+
* Arming has to UNDO the sub-slop drift d3 already applied during the hold
|
|
89
|
+
* (L3), which means reading the viewport at `touchstart` and writing it back
|
|
90
|
+
* 350 ms later. Taking that as two functions rather than reaching for the
|
|
91
|
+
* instance keeps this hook mountable outside `ReactFlowProvider` — and, more
|
|
92
|
+
* usefully, keeps the screen/flow arithmetic below honest: it is the same
|
|
93
|
+
* `(screen - paneOrigin - pan) / zoom` React Flow uses, written out, rather
|
|
94
|
+
* than a helper whose behaviour a spec would have to take on trust.
|
|
95
|
+
*
|
|
96
|
+
* Whether d3 HONOURS a `setViewport` mid-gesture is not something a unit test
|
|
97
|
+
* can answer. That is the device video's job, and until it exists the long
|
|
98
|
+
* press is a hypothesis (design §7.3).
|
|
99
|
+
*/
|
|
100
|
+
export interface LassoViewportPort {
|
|
101
|
+
readonly get: () => Viewport;
|
|
102
|
+
readonly set: (viewport: Viewport) => void;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
export interface LassoLongPressOptions {
|
|
106
|
+
/**
|
|
107
|
+
* The canvas root. The pane is found under it by class, so a consumer
|
|
108
|
+
* threads one ref instead of reaching into React Flow's tree.
|
|
109
|
+
*/
|
|
110
|
+
readonly rootRef: RefObject<HTMLElement | null>;
|
|
111
|
+
readonly viewport: LassoViewportPort;
|
|
112
|
+
/** Every node's rect in FLOW units. Same shape `model/select.ts` takes. */
|
|
113
|
+
readonly getNodeRects: () => readonly NodeRect[];
|
|
114
|
+
readonly onSelect?: (ids: readonly NodeId[]) => void;
|
|
115
|
+
/**
|
|
116
|
+
* Design §7.3 L3. A WebView cannot buzz, so the canvas asks and the native
|
|
117
|
+
* shell does it — this is what becomes `{ t: "haptic", kind: "selection" }`.
|
|
118
|
+
*/
|
|
119
|
+
readonly onHaptic?: () => void;
|
|
120
|
+
/**
|
|
121
|
+
* Every way OUT of an armed gesture that is not a selection: past the slop, a
|
|
122
|
+
* second finger, an unmount. Milestone 6 added it because a native shell has
|
|
123
|
+
* a readout to clear and a marquee to stop drawing, and without this it could
|
|
124
|
+
* only learn that a lasso had ended by inferring it from a `select` that
|
|
125
|
+
* never came.
|
|
126
|
+
*
|
|
127
|
+
* Fires ONCE per armed gesture and never for a press that never armed — a tap
|
|
128
|
+
* is not a cancelled lasso.
|
|
129
|
+
*/
|
|
130
|
+
readonly onCancel?: () => void;
|
|
131
|
+
readonly holdMs?: number;
|
|
132
|
+
readonly slopPx?: number;
|
|
133
|
+
readonly marqueeMode?: MarqueeMode;
|
|
134
|
+
/**
|
|
135
|
+
* Design §7.3 L7: on fine pointers NOTHING changes. Default false, so the
|
|
136
|
+
* long press is something a touch canvas opts into and a mouse canvas never
|
|
137
|
+
* sees — React Flow's own `selectionKeyCode` lasso stays the desktop answer.
|
|
138
|
+
*/
|
|
139
|
+
readonly enabled?: boolean;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
export interface UseLassoSelectOptions {
|
|
143
|
+
/** Controlled. When set, the hook never changes the mode itself. */
|
|
144
|
+
readonly mode?: GraphInteractionMode;
|
|
145
|
+
/** Uncontrolled seed. Defaults to `pan`, so a canvas with no toolbar is unchanged. */
|
|
146
|
+
readonly defaultMode?: GraphInteractionMode;
|
|
147
|
+
readonly onModeChange?: (mode: GraphInteractionMode) => void;
|
|
148
|
+
readonly longPress?: LassoLongPressOptions;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
export interface LassoSelect {
|
|
152
|
+
/** What the TOOLBAR says. Arming does not change it, so the button does not flicker. */
|
|
153
|
+
readonly mode: GraphInteractionMode;
|
|
154
|
+
readonly setMode: (mode: GraphInteractionMode) => void;
|
|
155
|
+
readonly toggleMode: () => void;
|
|
156
|
+
/**
|
|
157
|
+
* What the CANVAS should be given — `select` while armed, whatever the
|
|
158
|
+
* toolbar says otherwise. Pass this to `NodeGraphWeb`'s `interactionMode`,
|
|
159
|
+
* not `mode`.
|
|
160
|
+
*
|
|
161
|
+
* Measured in Chrome before this existed: the story passed `mode`, the pane
|
|
162
|
+
* kept its `draggable` class through the whole armed gesture, and L3's
|
|
163
|
+
* "set `panOnDrag={false}` so nothing new starts" was true of `flowProps`
|
|
164
|
+
* and of nothing else. The interceptor stops the gesture already running;
|
|
165
|
+
* this is what stops the next one.
|
|
166
|
+
*/
|
|
167
|
+
readonly effectiveMode: GraphInteractionMode;
|
|
168
|
+
readonly flowProps: LassoFlowProps;
|
|
169
|
+
/** True between the hold firing and the finger lifting. */
|
|
170
|
+
readonly armed: boolean;
|
|
171
|
+
/** The marquee in pane-relative SCREEN px, or null. `LassoOverlay` paints it. */
|
|
172
|
+
readonly marquee: Rect | null;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
function rectBetween(a: XYPoint, b: XYPoint): Rect {
|
|
176
|
+
return {
|
|
177
|
+
x: Math.min(a.x, b.x),
|
|
178
|
+
y: Math.min(a.y, b.y),
|
|
179
|
+
width: Math.abs(a.x - b.x),
|
|
180
|
+
height: Math.abs(a.y - b.y),
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
interface XYPoint {
|
|
185
|
+
readonly x: number;
|
|
186
|
+
readonly y: number;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
function firstTouch(event: TouchEvent): Touch | undefined {
|
|
190
|
+
return event.touches[0] ?? event.changedTouches[0];
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
/**
|
|
194
|
+
* Controlled and uncontrolled, the same way `useGraphController` does it: the
|
|
195
|
+
* prop wins when present, and `onModeChange` fires either way so a native shell
|
|
196
|
+
* can mirror the mode into its own toolbar without owning it.
|
|
197
|
+
*/
|
|
198
|
+
export function useLassoSelect(options: UseLassoSelectOptions = {}): LassoSelect {
|
|
199
|
+
const { mode: controlled, defaultMode = "pan", onModeChange } = options;
|
|
200
|
+
const [uncontrolled, setUncontrolled] = useState<GraphInteractionMode>(defaultMode);
|
|
201
|
+
const mode = controlled ?? uncontrolled;
|
|
202
|
+
|
|
203
|
+
// Read through a ref inside `setMode` so `toggleMode` does not have to be
|
|
204
|
+
// rebuilt on every mode change. The canvas passes these straight to a
|
|
205
|
+
// toolbar, and a toolbar that re-renders on each of its own presses is the
|
|
206
|
+
// small kind of waste that adds up at 200 nodes.
|
|
207
|
+
const current = useRef(mode);
|
|
208
|
+
current.current = mode;
|
|
209
|
+
|
|
210
|
+
const setMode = useCallback(
|
|
211
|
+
(next: GraphInteractionMode) => {
|
|
212
|
+
if (next === current.current) return;
|
|
213
|
+
if (controlled === undefined) setUncontrolled(next);
|
|
214
|
+
onModeChange?.(next);
|
|
215
|
+
},
|
|
216
|
+
[controlled, onModeChange],
|
|
217
|
+
);
|
|
218
|
+
|
|
219
|
+
const toggleMode = useCallback(() => {
|
|
220
|
+
setMode(current.current === "select" ? "pan" : "select");
|
|
221
|
+
}, [setMode]);
|
|
222
|
+
|
|
223
|
+
const { armed, marquee } = useLassoLongPress(options.longPress);
|
|
224
|
+
|
|
225
|
+
// While armed the canvas must not start anything NEW (design §7.3 L3), so it
|
|
226
|
+
// takes select-mode props whatever the toolbar says. The interceptor stops
|
|
227
|
+
// the gesture already running; `panOnDrag: false` stops the next one.
|
|
228
|
+
const effectiveMode: GraphInteractionMode = armed ? "select" : mode;
|
|
229
|
+
|
|
230
|
+
return useMemo(
|
|
231
|
+
() => ({
|
|
232
|
+
mode,
|
|
233
|
+
setMode,
|
|
234
|
+
toggleMode,
|
|
235
|
+
effectiveMode,
|
|
236
|
+
flowProps: lassoFlowProps(effectiveMode),
|
|
237
|
+
armed,
|
|
238
|
+
marquee,
|
|
239
|
+
}),
|
|
240
|
+
[mode, setMode, toggleMode, effectiveMode, armed, marquee],
|
|
241
|
+
);
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
/**
|
|
245
|
+
* L1-L7, as one state machine with three states: idle, PENDING (the finger is
|
|
246
|
+
* down and the timer is running) and ARMED (the timer fired and the interceptor
|
|
247
|
+
* is installed).
|
|
248
|
+
*
|
|
249
|
+
* Everything the gesture needs lives in one ref rather than in state, because a
|
|
250
|
+
* `touchmove` arrives per frame and a `setState` per frame would re-render the
|
|
251
|
+
* whole canvas to move a rectangle. Only the two things that PAINT — `armed`
|
|
252
|
+
* and `marquee` — are state.
|
|
253
|
+
*
|
|
254
|
+
* The listeners are attached once, on the pane, for the life of the mount, and
|
|
255
|
+
* the state machine decides what to do. Attaching and detaching them as the
|
|
256
|
+
* gesture progresses would be four more places for a stuck listener to hide,
|
|
257
|
+
* and design §7.3 already lists three mechanisms that failed in exactly that
|
|
258
|
+
* way.
|
|
259
|
+
*/
|
|
260
|
+
function useLassoLongPress(options?: LassoLongPressOptions): {
|
|
261
|
+
armed: boolean;
|
|
262
|
+
marquee: Rect | null;
|
|
263
|
+
} {
|
|
264
|
+
const [armed, setArmed] = useState(false);
|
|
265
|
+
const [marquee, setMarquee] = useState<Rect | null>(null);
|
|
266
|
+
|
|
267
|
+
// The options object is rebuilt by the caller on every render; reading it
|
|
268
|
+
// through a ref keeps the effect below from tearing down its listeners each
|
|
269
|
+
// time, which mid-gesture would drop the gesture.
|
|
270
|
+
const latest = useRef(options);
|
|
271
|
+
latest.current = options;
|
|
272
|
+
|
|
273
|
+
const gesture = useRef<{
|
|
274
|
+
timer: ReturnType<typeof setTimeout> | null;
|
|
275
|
+
origin: XYPoint | null;
|
|
276
|
+
snapshot: Viewport | null;
|
|
277
|
+
intercept: LassoIntercept | null;
|
|
278
|
+
/**
|
|
279
|
+
* The marquee, MIRRORED out of state.
|
|
280
|
+
*
|
|
281
|
+
* `marquee` is state because it paints, and the commit at L6 has to read it
|
|
282
|
+
* synchronously on the `touchend` — a `setMarquee` updater does not run
|
|
283
|
+
* until the next render, so a commit written inside one is reading a value
|
|
284
|
+
* from the future and reporting a cancel from the past. It was written that
|
|
285
|
+
* way and worked by accident; milestone 6 needed the same value to decide
|
|
286
|
+
* between `select` and `cancel`, which is where the accident showed.
|
|
287
|
+
*/
|
|
288
|
+
marquee: Rect | null;
|
|
289
|
+
}>({ timer: null, origin: null, snapshot: null, intercept: null, marquee: null });
|
|
290
|
+
|
|
291
|
+
const enabled = options?.enabled ?? false;
|
|
292
|
+
const rootRef = options?.rootRef;
|
|
293
|
+
|
|
294
|
+
useEffect(() => {
|
|
295
|
+
if (!enabled) return;
|
|
296
|
+
const root = rootRef?.current;
|
|
297
|
+
const pane = root?.querySelector<HTMLElement>(reactFlowPaneSelector);
|
|
298
|
+
if (!pane) return;
|
|
299
|
+
|
|
300
|
+
const state = gesture.current;
|
|
301
|
+
/**
|
|
302
|
+
* True only for the microsecond the arm spends dispatching its own
|
|
303
|
+
* `touchcancel`. `dispatchEvent` is synchronous, so a boolean is exact.
|
|
304
|
+
*
|
|
305
|
+
* Found by the L1 spec throwing rather than by reading the diff: the
|
|
306
|
+
* escape hatch that tells d3 to let go is a `touchcancel` at the pane, and
|
|
307
|
+
* the pane is where THIS hook listens for the finger lifting. Arming
|
|
308
|
+
* therefore ended the gesture it had just started, one line after starting
|
|
309
|
+
* it. `isTrusted` cannot separate the two — every event in a spec is
|
|
310
|
+
* untrusted — so the dispatcher says so itself.
|
|
311
|
+
*/
|
|
312
|
+
let selfCancelling = false;
|
|
313
|
+
|
|
314
|
+
/**
|
|
315
|
+
* Everything back to idle. Safe to call from any state, and it is.
|
|
316
|
+
*
|
|
317
|
+
* `announce` separates the two callers. `reset()` after a COMMITTED
|
|
318
|
+
* selection must not also report a cancel — the gesture ended the way it
|
|
319
|
+
* was meant to — while every other exit from an ARMED gesture must, or a
|
|
320
|
+
* native readout has no way to learn the lasso is over. A press that never
|
|
321
|
+
* armed reports nothing either way: a tap is not a cancelled lasso.
|
|
322
|
+
*/
|
|
323
|
+
/** Writes both halves at once, so the ref and the paint cannot disagree. */
|
|
324
|
+
const putMarquee = (rect: Rect | null) => {
|
|
325
|
+
state.marquee = rect;
|
|
326
|
+
setMarquee(rect);
|
|
327
|
+
};
|
|
328
|
+
|
|
329
|
+
const reset = (announce = true) => {
|
|
330
|
+
const wasArmed = state.intercept !== null;
|
|
331
|
+
if (state.timer !== null) clearTimeout(state.timer);
|
|
332
|
+
state.timer = null;
|
|
333
|
+
state.origin = null;
|
|
334
|
+
state.snapshot = null;
|
|
335
|
+
state.intercept?.release();
|
|
336
|
+
state.intercept = null;
|
|
337
|
+
setArmed(false);
|
|
338
|
+
putMarquee(null);
|
|
339
|
+
if (announce && wasArmed) latest.current?.onCancel?.();
|
|
340
|
+
};
|
|
341
|
+
|
|
342
|
+
const paneOrigin = () => {
|
|
343
|
+
const box = pane.getBoundingClientRect();
|
|
344
|
+
return { x: box.left, y: box.top };
|
|
345
|
+
};
|
|
346
|
+
|
|
347
|
+
/**
|
|
348
|
+
* Screen px to flow units, written out rather than delegated. `pan` and
|
|
349
|
+
* `zoom` come from the port, the pane's own box turns a client point into
|
|
350
|
+
* a pane-relative one, and the rest is the transform React Flow's viewport
|
|
351
|
+
* applies, inverted.
|
|
352
|
+
*/
|
|
353
|
+
const toFlow = (point: XYPoint): XYPoint => {
|
|
354
|
+
const view = latest.current?.viewport.get();
|
|
355
|
+
if (!view) return point;
|
|
356
|
+
return { x: (point.x - view.x) / view.zoom, y: (point.y - view.y) / view.zoom };
|
|
357
|
+
};
|
|
358
|
+
|
|
359
|
+
/** L3, in the order design §7.3 gives, because the order is the mechanism. */
|
|
360
|
+
const arm = () => {
|
|
361
|
+
const opts = latest.current;
|
|
362
|
+
if (!opts || !state.origin) return;
|
|
363
|
+
state.timer = null;
|
|
364
|
+
|
|
365
|
+
opts.onHaptic?.();
|
|
366
|
+
state.intercept = installLassoIntercept({
|
|
367
|
+
ancestor: pane.ownerDocument,
|
|
368
|
+
onIntercept: onArmedMove,
|
|
369
|
+
});
|
|
370
|
+
// d3 keeps a live `g.touch0` until it sees an end or a cancel, and it
|
|
371
|
+
// will never see another move now. Without this it sits mid-gesture and
|
|
372
|
+
// the NEXT touch continues the old pan.
|
|
373
|
+
selfCancelling = true;
|
|
374
|
+
try {
|
|
375
|
+
pane.dispatchEvent(
|
|
376
|
+
new TouchEvent("touchcancel", { bubbles: true, cancelable: true, touches: [] }),
|
|
377
|
+
);
|
|
378
|
+
} finally {
|
|
379
|
+
selfCancelling = false;
|
|
380
|
+
}
|
|
381
|
+
// Undo the drift d3 applied under the slop threshold: up to 10 px of pan
|
|
382
|
+
// happened during the hold and the user did not ask for it.
|
|
383
|
+
if (state.snapshot) opts.viewport.set(state.snapshot);
|
|
384
|
+
|
|
385
|
+
setArmed(true);
|
|
386
|
+
putMarquee({ x: state.origin.x, y: state.origin.y, width: 0, height: 0 });
|
|
387
|
+
};
|
|
388
|
+
|
|
389
|
+
/** Fed by the interceptor, so the marquee is drawn from the events it swallowed. */
|
|
390
|
+
const onArmedMove = (event: TouchEvent) => {
|
|
391
|
+
// L5. A second finger is a pinch, and a pinch is not a lasso.
|
|
392
|
+
if (event.touches.length > 1) {
|
|
393
|
+
reset();
|
|
394
|
+
return;
|
|
395
|
+
}
|
|
396
|
+
const touch = firstTouch(event);
|
|
397
|
+
if (!touch || !state.origin) return;
|
|
398
|
+
const origin = paneOrigin();
|
|
399
|
+
putMarquee(
|
|
400
|
+
rectBetween(state.origin, {
|
|
401
|
+
x: touch.clientX - origin.x,
|
|
402
|
+
y: touch.clientY - origin.y,
|
|
403
|
+
}),
|
|
404
|
+
);
|
|
405
|
+
};
|
|
406
|
+
|
|
407
|
+
const onTouchStart = (event: TouchEvent) => {
|
|
408
|
+
const opts = latest.current;
|
|
409
|
+
if (!opts) return;
|
|
410
|
+
// L5, the other half: a finger landing while armed, or while pending,
|
|
411
|
+
// hands the gesture back for pinch.
|
|
412
|
+
if (event.touches.length > 1) {
|
|
413
|
+
reset();
|
|
414
|
+
return;
|
|
415
|
+
}
|
|
416
|
+
const touch = firstTouch(event);
|
|
417
|
+
if (!touch) return;
|
|
418
|
+
const origin = paneOrigin();
|
|
419
|
+
state.origin = { x: touch.clientX - origin.x, y: touch.clientY - origin.y };
|
|
420
|
+
state.snapshot = opts.viewport.get(); // L1
|
|
421
|
+
if (state.timer !== null) clearTimeout(state.timer);
|
|
422
|
+
state.timer = setTimeout(arm, opts.holdMs ?? lassoHoldMs);
|
|
423
|
+
};
|
|
424
|
+
|
|
425
|
+
/**
|
|
426
|
+
* Only ever sees the PENDING phase: once armed, the interceptor above has
|
|
427
|
+
* already stopped the event before it reaches this bubble listener. That
|
|
428
|
+
* is the mechanism working on its own author, and it is why arming feeds
|
|
429
|
+
* `onArmedMove` from the interceptor instead of from here.
|
|
430
|
+
*/
|
|
431
|
+
const onTouchMove = (event: TouchEvent) => {
|
|
432
|
+
if (state.timer === null) return;
|
|
433
|
+
const touch = firstTouch(event);
|
|
434
|
+
if (!touch || !state.origin) return;
|
|
435
|
+
const origin = paneOrigin();
|
|
436
|
+
const dx = touch.clientX - origin.x - state.origin.x;
|
|
437
|
+
const dy = touch.clientY - origin.y - state.origin.y;
|
|
438
|
+
// L2. Past the slop it was a pan, and the pan never knew we were here.
|
|
439
|
+
if (Math.hypot(dx, dy) > (latest.current?.slopPx ?? lassoSlopPx)) reset();
|
|
440
|
+
};
|
|
441
|
+
|
|
442
|
+
/** L6. Commit, emit, remove the interceptor, restore the props. */
|
|
443
|
+
const onTouchEnd = () => {
|
|
444
|
+
if (selfCancelling) return;
|
|
445
|
+
const opts = latest.current;
|
|
446
|
+
// An armed gesture that lifts without a marquee is a CANCEL, not a
|
|
447
|
+
// selection of nothing: the finger held, the interceptor installed, and
|
|
448
|
+
// then nothing was drawn. `reset` cannot tell the two apart on its own,
|
|
449
|
+
// so the commit path below flips this.
|
|
450
|
+
let committed = false;
|
|
451
|
+
const drawn = state.marquee;
|
|
452
|
+
if (state.intercept && opts && drawn && (drawn.width > 0 || drawn.height > 0)) {
|
|
453
|
+
committed = true;
|
|
454
|
+
const topLeft = toFlow(drawn);
|
|
455
|
+
const bottomRight = toFlow({
|
|
456
|
+
x: drawn.x + drawn.width,
|
|
457
|
+
y: drawn.y + drawn.height,
|
|
458
|
+
});
|
|
459
|
+
opts.onSelect?.(
|
|
460
|
+
selectInMarquee(
|
|
461
|
+
opts.getNodeRects(),
|
|
462
|
+
{
|
|
463
|
+
x: topLeft.x,
|
|
464
|
+
y: topLeft.y,
|
|
465
|
+
width: bottomRight.x - topLeft.x,
|
|
466
|
+
height: bottomRight.y - topLeft.y,
|
|
467
|
+
},
|
|
468
|
+
opts.marqueeMode ?? "partial",
|
|
469
|
+
),
|
|
470
|
+
);
|
|
471
|
+
}
|
|
472
|
+
reset(!committed);
|
|
473
|
+
};
|
|
474
|
+
|
|
475
|
+
pane.addEventListener("touchstart", onTouchStart, { passive: true });
|
|
476
|
+
pane.addEventListener("touchmove", onTouchMove, { passive: true });
|
|
477
|
+
pane.addEventListener("touchend", onTouchEnd, { passive: true });
|
|
478
|
+
pane.addEventListener("touchcancel", onTouchEnd, { passive: true });
|
|
479
|
+
return () => {
|
|
480
|
+
pane.removeEventListener("touchstart", onTouchStart);
|
|
481
|
+
pane.removeEventListener("touchmove", onTouchMove);
|
|
482
|
+
pane.removeEventListener("touchend", onTouchEnd);
|
|
483
|
+
pane.removeEventListener("touchcancel", onTouchEnd);
|
|
484
|
+
reset();
|
|
485
|
+
};
|
|
486
|
+
}, [enabled, rootRef]);
|
|
487
|
+
|
|
488
|
+
return { armed, marquee };
|
|
489
|
+
}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DOM side of the knob envelope: rebuild the real stack from the inputs.
|
|
3
|
+
*
|
|
4
|
+
* It uses the theme package's OWN components — `<Preset>`, `<Surface>`,
|
|
5
|
+
* `IntentContext.Provider` — and never raw `PresetContext.Provider`, so a later
|
|
6
|
+
* change to Preset's merge order or Surface's LC-68 clamp cannot desync the two
|
|
7
|
+
* sides. Design: docs/design/node-graph-editor.md 6.1.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import { type ReactNode, useMemo } from "react";
|
|
11
|
+
import { type TamaguiInternalConfig, TamaguiProvider, Theme } from "tamagui";
|
|
12
|
+
import type { ThemeName } from "@tamagui/web";
|
|
13
|
+
import {
|
|
14
|
+
IntentContext,
|
|
15
|
+
Preset,
|
|
16
|
+
Surface,
|
|
17
|
+
type SurfaceDensity,
|
|
18
|
+
type SurfaceSizeIntent,
|
|
19
|
+
} from "@multiplatform.one/theme";
|
|
20
|
+
import { type KnobEnvelope, knobsForEnvelope } from "./envelope";
|
|
21
|
+
|
|
22
|
+
export interface KnobEnvelopeProviderProps {
|
|
23
|
+
readonly envelope: KnobEnvelope;
|
|
24
|
+
/**
|
|
25
|
+
* Only the DOM/WebView host passes a config: it is a fresh React root with no
|
|
26
|
+
* provider above it. On web the graph renders inside the app's existing
|
|
27
|
+
* `TamaguiProvider`, and mounting a second one there would give the subtree a
|
|
28
|
+
* different token table from the page around it.
|
|
29
|
+
*/
|
|
30
|
+
readonly config?: TamaguiInternalConfig;
|
|
31
|
+
readonly children?: ReactNode;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* The theme name this side can actually resolve.
|
|
36
|
+
*
|
|
37
|
+
* `envelope.themeName` is the HOST's, and across the bridge the two realms are
|
|
38
|
+
* different Tamagui builds with different theme tables: the app's config knows
|
|
39
|
+
* `light_blue`, the DOM bundle's knows whatever `@multiplatform.one/theme`
|
|
40
|
+
* created. Tamagui does not degrade on a name it cannot find — it THROWS
|
|
41
|
+
* `Missing theme.` — so an unportable name took the whole canvas down.
|
|
42
|
+
*
|
|
43
|
+
* Measured on the iPhone 16e simulator at task 2.7: `render: Missing theme.`,
|
|
44
|
+
* caught by the entry's error boundary. Design 6.1 assumed the name crossed;
|
|
45
|
+
* it does not, and the envelope already carries `scheme` for exactly the part
|
|
46
|
+
* that must survive.
|
|
47
|
+
*
|
|
48
|
+
* On WEB there is no `config`, because the graph renders inside the app's own
|
|
49
|
+
* provider and that provider owns the table — so the name is passed through
|
|
50
|
+
* untouched and nothing changes for the platform that was already working.
|
|
51
|
+
*
|
|
52
|
+
* @returns the name to mount, or undefined to inherit.
|
|
53
|
+
*/
|
|
54
|
+
export function resolveEnvelopeThemeName(
|
|
55
|
+
envelope: Pick<KnobEnvelope, "scheme" | "themeName">,
|
|
56
|
+
themes?: Readonly<Record<string, unknown>>,
|
|
57
|
+
): string | undefined {
|
|
58
|
+
const wanted = envelope.themeName;
|
|
59
|
+
if (!themes) return wanted || undefined;
|
|
60
|
+
if (wanted && Object.hasOwn(themes, wanted)) return wanted;
|
|
61
|
+
if (Object.hasOwn(themes, envelope.scheme)) return envelope.scheme;
|
|
62
|
+
return undefined;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export function KnobEnvelopeProvider({ envelope, config, children }: KnobEnvelopeProviderProps) {
|
|
66
|
+
const knobs = useMemo(() => knobsForEnvelope(envelope), [envelope]);
|
|
67
|
+
const themeName = useMemo(
|
|
68
|
+
() => resolveEnvelopeThemeName(envelope, config?.themes),
|
|
69
|
+
[config, envelope],
|
|
70
|
+
);
|
|
71
|
+
|
|
72
|
+
// `cascade={false}` starts from `defaultKnobs` and merges `overrides`
|
|
73
|
+
// (Preset.tsx:57-76), which is exactly "replace the whole knob set with the
|
|
74
|
+
// host's". A named preset still resolves through `getPreset`, which is what
|
|
75
|
+
// carries its `intents` map across.
|
|
76
|
+
let tree: ReactNode = (
|
|
77
|
+
<Preset preset={envelope.presetName} cascade={false} overrides={knobs}>
|
|
78
|
+
<Surface
|
|
79
|
+
size={
|
|
80
|
+
envelope.surface.size === "unset"
|
|
81
|
+
? undefined
|
|
82
|
+
: (envelope.surface.size as SurfaceSizeIntent)
|
|
83
|
+
}
|
|
84
|
+
density={
|
|
85
|
+
envelope.surface.density === "unset"
|
|
86
|
+
? undefined
|
|
87
|
+
: (envelope.surface.density as SurfaceDensity)
|
|
88
|
+
}
|
|
89
|
+
>
|
|
90
|
+
<IntentContext.Provider value={envelope.intent}>{children}</IntentContext.Provider>
|
|
91
|
+
</Surface>
|
|
92
|
+
</Preset>
|
|
93
|
+
);
|
|
94
|
+
|
|
95
|
+
// An empty name is not a theme: `<Theme name="">` would ask Tamagui to
|
|
96
|
+
// resolve a theme that does not exist and silently inherit the parent.
|
|
97
|
+
if (themeName) {
|
|
98
|
+
tree = <Theme name={themeName as ThemeName}>{tree}</Theme>;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
if (config) {
|
|
102
|
+
tree = (
|
|
103
|
+
<TamaguiProvider config={config} defaultTheme={themeName}>
|
|
104
|
+
{tree}
|
|
105
|
+
</TamaguiProvider>
|
|
106
|
+
);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
return <>{tree}</>;
|
|
110
|
+
}
|