@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,237 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `NodeGraph/Overview` — 500 nodes, and the crossover you have to watch.
|
|
3
|
+
*
|
|
4
|
+
* The thing to check is not that the graph looks different below zoom 0.35.
|
|
5
|
+
* It is that NOTHING MOVES when it does. React Flow 12 installs a per-node
|
|
6
|
+
* `ResizeObserver`, so a level of detail that changed a node's height would
|
|
7
|
+
* re-measure every node on every zoom tick and drag every attached edge
|
|
8
|
+
* endpoint with it (design §5). At 500 nodes that is a canvas that shivers
|
|
9
|
+
* whenever a user zooms.
|
|
10
|
+
*
|
|
11
|
+
* So: zoom slowly through 0.35 and watch an edge endpoint. It must stay welded
|
|
12
|
+
* to its port. `lod.spec.tsx` asserts the CAUSE — the element tree is identical
|
|
13
|
+
* across modes and the declared box does not change — because happy-dom lays
|
|
14
|
+
* nothing out and cannot measure the effect. This story is where the effect is
|
|
15
|
+
* checked, in a browser, on the number of nodes that makes it visible.
|
|
16
|
+
*
|
|
17
|
+
* The readout above each canvas prints React Flow's OWN measured handle
|
|
18
|
+
* positions and node height for one node, so the check is a readable number on
|
|
19
|
+
* both sides of the crossover rather than a squint at a pixel.
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
import { Preset, Surface } from "@multiplatform.one/theme";
|
|
23
|
+
import { useState } from "react";
|
|
24
|
+
import { Label, SizableText, Switch, View, XStack, YStack } from "tamagui";
|
|
25
|
+
import type { BuiltinEdgeData } from "../edges/edgeKinds";
|
|
26
|
+
import type { GraphDocument } from "../model/index";
|
|
27
|
+
import { demoGraphSchema } from "../react-flow/demoNodeBody";
|
|
28
|
+
import type { DemoNodeData } from "../react-flow/fixtures";
|
|
29
|
+
import { NodeGraphWeb } from "../react-flow/NodeGraphWeb";
|
|
30
|
+
import { Background, Controls, MiniMap, useStore } from "../react-flow/xy";
|
|
31
|
+
import { defaultOverviewZoom, lodForZoom } from "./lod";
|
|
32
|
+
|
|
33
|
+
export default {
|
|
34
|
+
title: "NodeGraph/Overview",
|
|
35
|
+
parameters: {
|
|
36
|
+
status: { type: "beta" },
|
|
37
|
+
docs: {
|
|
38
|
+
description: {
|
|
39
|
+
component:
|
|
40
|
+
"Level of detail at 500 nodes. Below overviewZoom (0.35) node children fade to opacity 0; they never unmount, so the box keeps the same height and React Flow's per-node ResizeObserver has nothing to chase. Zoom through the crossover and watch an edge endpoint: it must not move.",
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
type Doc = GraphDocument<DemoNodeData, BuiltinEdgeData>;
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* 500 nodes on a 25-wide grid, chained into a long edge list.
|
|
50
|
+
*
|
|
51
|
+
* Deterministic, not random: a story whose graph changes between reloads
|
|
52
|
+
* cannot be compared against a screenshot from five minutes ago.
|
|
53
|
+
*/
|
|
54
|
+
function bigDocument(count = 500): Doc {
|
|
55
|
+
const kinds = ["source", "transform", "sink"] as const;
|
|
56
|
+
const perRow = 25;
|
|
57
|
+
const nodes = Array.from({ length: count }, (_, index) => {
|
|
58
|
+
const kind = kinds[index % kinds.length];
|
|
59
|
+
const data =
|
|
60
|
+
kind === "source"
|
|
61
|
+
? { table: `orders_${index}` }
|
|
62
|
+
: kind === "transform"
|
|
63
|
+
? { expression: `row => row.${index}` }
|
|
64
|
+
: { target: `warehouse_${index}` };
|
|
65
|
+
return {
|
|
66
|
+
id: `n${index}`,
|
|
67
|
+
kind,
|
|
68
|
+
position: { x: (index % perRow) * 300, y: Math.floor(index / perRow) * 220 },
|
|
69
|
+
data,
|
|
70
|
+
} as Doc["nodes"][number];
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
const edgeKinds = ["flow", "data", "error", "conditional"] as const;
|
|
74
|
+
const edges: Doc["edges"][number][] = [];
|
|
75
|
+
for (let index = 0; index + 1 < count; index += 1) {
|
|
76
|
+
const from = nodes[index];
|
|
77
|
+
const to = nodes[index + 1];
|
|
78
|
+
const sourcePort = from.kind === "source" ? "rows" : from.kind === "transform" ? "ok" : null;
|
|
79
|
+
if (!sourcePort) continue;
|
|
80
|
+
edges.push({
|
|
81
|
+
id: `${from.id}->${to.id}`,
|
|
82
|
+
kind: edgeKinds[edges.length % edgeKinds.length],
|
|
83
|
+
source: { node: from.id, port: sourcePort },
|
|
84
|
+
target: { node: to.id, port: "in" },
|
|
85
|
+
data: {},
|
|
86
|
+
} as Doc["edges"][number]);
|
|
87
|
+
}
|
|
88
|
+
return { version: 1, nodes, edges };
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
const bigDoc = bigDocument(500);
|
|
92
|
+
const schema = demoGraphSchema();
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* The live zoom, the mode it resolves to, and the handle positions React Flow
|
|
96
|
+
* has MEASURED for one node.
|
|
97
|
+
*
|
|
98
|
+
* `handleBounds` is what every edge endpoint is computed from, so reading it
|
|
99
|
+
* directly is reading the thing that must not move — rather than reading a
|
|
100
|
+
* pixel and hoping.
|
|
101
|
+
*/
|
|
102
|
+
function Readout({ nodeId }: { nodeId: string }) {
|
|
103
|
+
const zoom = useStore((state) => state.transform[2]);
|
|
104
|
+
const bounds = useStore((state) => {
|
|
105
|
+
const node = state.nodeLookup.get(nodeId);
|
|
106
|
+
const handles = [
|
|
107
|
+
...(node?.internals.handleBounds?.source ?? []),
|
|
108
|
+
...(node?.internals.handleBounds?.target ?? []),
|
|
109
|
+
];
|
|
110
|
+
return handles
|
|
111
|
+
.map((handle) => `${handle.id ?? "?"} ${Math.round(handle.x)},${Math.round(handle.y)}`)
|
|
112
|
+
.join(" | ");
|
|
113
|
+
});
|
|
114
|
+
const height = useStore((state) => state.nodeLookup.get(nodeId)?.measured?.height ?? 0);
|
|
115
|
+
return (
|
|
116
|
+
// Pinned as a panel rather than left to flow: as a bare row it rendered
|
|
117
|
+
// over the canvas at the top-left and the handle numbers — the whole point
|
|
118
|
+
// of the readout — were clipped off the right edge.
|
|
119
|
+
<XStack
|
|
120
|
+
position="absolute"
|
|
121
|
+
top={0}
|
|
122
|
+
left={0}
|
|
123
|
+
right={0}
|
|
124
|
+
zIndex={6}
|
|
125
|
+
gap="$5"
|
|
126
|
+
padding="$2"
|
|
127
|
+
alignItems="center"
|
|
128
|
+
flexWrap="wrap"
|
|
129
|
+
backgroundColor="$background"
|
|
130
|
+
borderBottomWidth={1}
|
|
131
|
+
borderColor="$borderColor"
|
|
132
|
+
pointerEvents="none"
|
|
133
|
+
>
|
|
134
|
+
<SizableText size="$2" fontWeight="600">
|
|
135
|
+
zoom {zoom.toFixed(3)}
|
|
136
|
+
</SizableText>
|
|
137
|
+
<SizableText size="$2" fontWeight="600">
|
|
138
|
+
mode {lodForZoom(zoom, defaultOverviewZoom)}
|
|
139
|
+
</SizableText>
|
|
140
|
+
<SizableText size="$2">
|
|
141
|
+
{nodeId} height {Math.round(height)}
|
|
142
|
+
</SizableText>
|
|
143
|
+
<SizableText size="$2" opacity={0.7}>
|
|
144
|
+
handles {bounds || "not measured yet"}
|
|
145
|
+
</SizableText>
|
|
146
|
+
</XStack>
|
|
147
|
+
);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* 500 nodes, culling on, the readout pinned above the canvas.
|
|
152
|
+
*
|
|
153
|
+
* Zoom out past 0.35 and back. `height` and `handles` must print the same
|
|
154
|
+
* numbers on both sides of the crossover; `mode` is the only line that changes.
|
|
155
|
+
*/
|
|
156
|
+
export const main = {
|
|
157
|
+
name: "Main",
|
|
158
|
+
// The Preset CASCADES. `cascade={false}` starts from `defaultKnobs` and merges
|
|
159
|
+
// only `overrides`, so on a story that passes none it replaces the whole knob
|
|
160
|
+
// set and discards every Storybook global — the page then paints one fixed
|
|
161
|
+
// signature at every stop, which reads exactly like a component ignoring its
|
|
162
|
+
// knobs. The milestone-1 fuzz found that on `GraphPort → Crowded`. A fuzz PAGE
|
|
163
|
+
// may pin, because it passes `overrides` and the page is the evidence; an
|
|
164
|
+
// ordinary story may not. `Surface size="medium"` stays: it is the size
|
|
165
|
+
// AUTHORITY over the knob (LC-68), which is what keeps the readout comparable
|
|
166
|
+
// between reloads, and it is why `size` is not fuzzable here.
|
|
167
|
+
render: () => (
|
|
168
|
+
<Preset>
|
|
169
|
+
<Surface size="medium" density="comfortable">
|
|
170
|
+
<YStack gap="$3" padding="$3">
|
|
171
|
+
<View width="100%" height={620}>
|
|
172
|
+
<NodeGraphWeb schema={schema} defaultDocument={bigDoc}>
|
|
173
|
+
<Readout nodeId="n1" />
|
|
174
|
+
<Background />
|
|
175
|
+
<Controls />
|
|
176
|
+
<MiniMap pannable zoomable />
|
|
177
|
+
</NodeGraphWeb>
|
|
178
|
+
</View>
|
|
179
|
+
<SizableText size="$2" opacity={0.7}>
|
|
180
|
+
500 nodes, 333 edges. Zoom through 0.35 with the controls or a pinch and watch the
|
|
181
|
+
handle numbers: they must not move. The bodies fade; the boxes do not resize.
|
|
182
|
+
</SizableText>
|
|
183
|
+
</YStack>
|
|
184
|
+
</Surface>
|
|
185
|
+
</Preset>
|
|
186
|
+
),
|
|
187
|
+
};
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* The crossover with the threshold under your thumb.
|
|
191
|
+
*
|
|
192
|
+
* Raising `overviewZoom` to 1 puts the whole canvas in overview at ordinary
|
|
193
|
+
* zoom, which is the cheapest way to see the fade without pinching — and the
|
|
194
|
+
* readout still has to print the same height.
|
|
195
|
+
*/
|
|
196
|
+
export const crossover = {
|
|
197
|
+
name: "Crossover",
|
|
198
|
+
render: () => {
|
|
199
|
+
const [high, setHigh] = useState(false);
|
|
200
|
+
return (
|
|
201
|
+
<Preset>
|
|
202
|
+
<Surface size="medium" density="comfortable">
|
|
203
|
+
<YStack gap="$3" padding="$3">
|
|
204
|
+
<XStack gap="$2" alignItems="center">
|
|
205
|
+
<Switch
|
|
206
|
+
id="overview-zoom"
|
|
207
|
+
size="$2"
|
|
208
|
+
checked={high}
|
|
209
|
+
onCheckedChange={(v) => setHigh(Boolean(v))}
|
|
210
|
+
>
|
|
211
|
+
<Switch.Thumb />
|
|
212
|
+
</Switch>
|
|
213
|
+
<Label htmlFor="overview-zoom" size="$2">
|
|
214
|
+
overviewZoom 1 (everything is overview) instead of {defaultOverviewZoom}
|
|
215
|
+
</Label>
|
|
216
|
+
</XStack>
|
|
217
|
+
<View width="100%" height={560}>
|
|
218
|
+
<NodeGraphWeb
|
|
219
|
+
schema={schema}
|
|
220
|
+
defaultDocument={bigDoc}
|
|
221
|
+
overviewZoom={high ? 1 : defaultOverviewZoom}
|
|
222
|
+
>
|
|
223
|
+
<Readout nodeId="n1" />
|
|
224
|
+
<Controls />
|
|
225
|
+
</NodeGraphWeb>
|
|
226
|
+
</View>
|
|
227
|
+
<SizableText size="$2" opacity={0.7}>
|
|
228
|
+
Flip the switch and read the height. The node fades to a plain box and the number does
|
|
229
|
+
not change — that is the invariant, and it is why the children fade instead of
|
|
230
|
+
unmounting.
|
|
231
|
+
</SizableText>
|
|
232
|
+
</YStack>
|
|
233
|
+
</Surface>
|
|
234
|
+
</Preset>
|
|
235
|
+
);
|
|
236
|
+
},
|
|
237
|
+
};
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Task 1.9, the pure half: H1, H3 and H4 from design §7.1.
|
|
3
|
+
*
|
|
4
|
+
* The point of separating these from `GraphPort.spec.tsx` is that the painted
|
|
5
|
+
* dot and the hit region are two numbers with two different laws, and a sweep
|
|
6
|
+
* that measures one against the other's row produces the false FAIL
|
|
7
|
+
* `knob-laws.md` names as the commonest.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import { MIN_PRESS_TARGET } from "@multiplatform.one/theme";
|
|
11
|
+
import { describe, expect, it } from "vitest";
|
|
12
|
+
import {
|
|
13
|
+
FINE_PORT_HIT_MIN,
|
|
14
|
+
paintedPortSize,
|
|
15
|
+
paintedPortSizePx,
|
|
16
|
+
portConnectionRadius,
|
|
17
|
+
portHitSize,
|
|
18
|
+
portRegionInset,
|
|
19
|
+
} from "./handleGeometry";
|
|
20
|
+
import { FINE_PORT_PITCH, type GraphNodeSizeKnob, portSpacing } from "./nodeMeasure";
|
|
21
|
+
|
|
22
|
+
const sizes = ["small", "medium", "large"] as const satisfies readonly GraphNodeSizeKnob[];
|
|
23
|
+
|
|
24
|
+
describe("H1: the painted dot follows the size knob and is never 44", () => {
|
|
25
|
+
it("is 8 / 10 / 12", () => {
|
|
26
|
+
expect(paintedPortSize("small")).toBe(8);
|
|
27
|
+
expect(paintedPortSize("medium")).toBe(10);
|
|
28
|
+
expect(paintedPortSize("large")).toBe(12);
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
it("is never the press floor at any stop — a 44 px dot is a different component", () => {
|
|
32
|
+
for (const size of sizes) {
|
|
33
|
+
expect(paintedPortSize(size)).not.toBe(MIN_PRESS_TARGET);
|
|
34
|
+
expect(paintedPortSize(size)).toBeLessThan(MIN_PRESS_TARGET);
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
it("steps with the knob rather than sitting still", () => {
|
|
39
|
+
expect(new Set(Object.values(paintedPortSizePx)).size).toBe(sizes.length);
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
describe("H3: 44 on coarse pointers, max(painted, 24) on fine", () => {
|
|
44
|
+
it("is exactly the press floor on a coarse pointer at every size", () => {
|
|
45
|
+
for (const size of sizes) {
|
|
46
|
+
expect(portHitSize({ size, coarsePointer: true })).toBe(MIN_PRESS_TARGET);
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
it("is max(painted, 24) on a fine pointer at every size", () => {
|
|
51
|
+
for (const size of sizes) {
|
|
52
|
+
expect(portHitSize({ size, coarsePointer: false })).toBe(
|
|
53
|
+
Math.max(paintedPortSize(size), FINE_PORT_HIT_MIN),
|
|
54
|
+
);
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
it("is smaller on fine than on coarse — that split is the whole law", () => {
|
|
59
|
+
for (const size of sizes) {
|
|
60
|
+
expect(portHitSize({ size, coarsePointer: false })).toBeLessThan(
|
|
61
|
+
portHitSize({ size, coarsePointer: true }),
|
|
62
|
+
);
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
it("always exceeds the painted dot, so the region grows outward", () => {
|
|
67
|
+
for (const size of sizes) {
|
|
68
|
+
for (const coarsePointer of [true, false]) {
|
|
69
|
+
expect(portHitSize({ size, coarsePointer })).toBeGreaterThan(paintedPortSize(size));
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
describe("H4: the crowding cap is min(44, portSpacing)", () => {
|
|
76
|
+
it("caps a coarse hit at the port pitch when the pitch is the tighter number", () => {
|
|
77
|
+
for (const portSpacingPx of [30, 36, 44, 60]) {
|
|
78
|
+
expect(portHitSize({ size: "medium", coarsePointer: true, portSpacingPx })).toBe(
|
|
79
|
+
Math.min(MIN_PRESS_TARGET, portSpacingPx),
|
|
80
|
+
);
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
it("does not cap when the ports are far enough apart", () => {
|
|
85
|
+
expect(portHitSize({ size: "medium", coarsePointer: true, portSpacingPx: 80 })).toBe(
|
|
86
|
+
MIN_PRESS_TARGET,
|
|
87
|
+
);
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
it("never lets a crowded hit shrink below the dot the user can see", () => {
|
|
91
|
+
// A pitch of 4 is narrower than every painted stop. The cap must floor at
|
|
92
|
+
// the painted size, or the ::after would inset INWARD and the target would
|
|
93
|
+
// be smaller than the affordance.
|
|
94
|
+
for (const size of sizes) {
|
|
95
|
+
expect(portHitSize({ size, coarsePointer: true, portSpacingPx: 4 })).toBe(
|
|
96
|
+
paintedPortSize(size),
|
|
97
|
+
);
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
it("leaves the default pitch uncapped, so the cap is a guard and not the norm", () => {
|
|
102
|
+
for (const coarsePointer of [true, false]) {
|
|
103
|
+
const withDefault = portHitSize({ size: "medium", coarsePointer });
|
|
104
|
+
const explicit = portHitSize({
|
|
105
|
+
size: "medium",
|
|
106
|
+
coarsePointer,
|
|
107
|
+
portSpacingPx: portSpacing({ coarsePointer }),
|
|
108
|
+
});
|
|
109
|
+
expect(withDefault).toBe(explicit);
|
|
110
|
+
}
|
|
111
|
+
expect(portSpacing({ coarsePointer: true })).toBe(MIN_PRESS_TARGET);
|
|
112
|
+
expect(portSpacing({ coarsePointer: false })).toBe(FINE_PORT_PITCH);
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
describe("H2: the region is an outward inset, so the handle box never moves", () => {
|
|
117
|
+
it("is negative wherever the hit exceeds the dot", () => {
|
|
118
|
+
for (const size of sizes) {
|
|
119
|
+
for (const coarsePointer of [true, false]) {
|
|
120
|
+
expect(portRegionInset({ size, coarsePointer })).toBeLessThan(0);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
it("is exactly half the difference, so the region stays concentric", () => {
|
|
126
|
+
for (const size of sizes) {
|
|
127
|
+
const inset = portRegionInset({ size, coarsePointer: true });
|
|
128
|
+
expect(paintedPortSize(size) - 2 * inset).toBe(portHitSize({ size, coarsePointer: true }));
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
it("adds the ring back, because the pseudo-element insets from the PADDING box", () => {
|
|
133
|
+
// The dot is border-box with a knob-driven ring, so its padding box is
|
|
134
|
+
// `size - 2 × border`. Without this term Chrome renders a 44 as a 42 —
|
|
135
|
+
// measured, and the reason the parameter exists at all.
|
|
136
|
+
for (const size of sizes) {
|
|
137
|
+
for (const borderWidthPx of [1, 2, 3]) {
|
|
138
|
+
const inset = portRegionInset({ size, coarsePointer: true, borderWidthPx });
|
|
139
|
+
const paddingBox = paintedPortSize(size) - 2 * borderWidthPx;
|
|
140
|
+
expect(paddingBox - 2 * inset).toBe(portHitSize({ size, coarsePointer: true }));
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
|
|
145
|
+
it("collapses to zero when crowding pins the hit to the dot and there is no ring", () => {
|
|
146
|
+
expect(portRegionInset({ size: "medium", coarsePointer: true, portSpacingPx: 4 })).toBe(0);
|
|
147
|
+
});
|
|
148
|
+
});
|
|
149
|
+
|
|
150
|
+
describe("H5: the magnetic drop radius matches the visible affordance", () => {
|
|
151
|
+
it("is the hit diameter, not React Flow's 20 px default", () => {
|
|
152
|
+
for (const size of sizes) {
|
|
153
|
+
for (const coarsePointer of [true, false]) {
|
|
154
|
+
expect(portConnectionRadius({ size, coarsePointer })).toBe(
|
|
155
|
+
portHitSize({ size, coarsePointer }),
|
|
156
|
+
);
|
|
157
|
+
expect(portConnectionRadius({ size, coarsePointer })).not.toBe(20);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
});
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Port geometry — pure. The painted dot and the region you can actually hit
|
|
3
|
+
* are two different numbers, and design §7.1 is emphatic that conflating them
|
|
4
|
+
* is the commonest false FAIL in a knob sweep.
|
|
5
|
+
*
|
|
6
|
+
* The laws, verbatim from §7.1:
|
|
7
|
+
*
|
|
8
|
+
* H1. The painted dot is 8 / 10 / 12 by the size knob and NEVER grows to 44.
|
|
9
|
+
* A 44 px painted dot is a different component.
|
|
10
|
+
* H2. The hit region is a pseudo-element, never element growth, because
|
|
11
|
+
* `getEdgePosition` reads the handle box's outer edge (`center` defaults
|
|
12
|
+
* to false) — growing 8 to 44 would move every rendered edge endpoint 18
|
|
13
|
+
* flow units outward on exactly the sides an LR graph uses.
|
|
14
|
+
* H3. 44 on coarse pointers, `max(painted, 24)` on fine. A 44 px invisible
|
|
15
|
+
* disc around every handle on a dense mouse canvas steals clicks from the
|
|
16
|
+
* node body.
|
|
17
|
+
* H4. Two ports closer than the hit diameter would have overlapping discs and
|
|
18
|
+
* the wrong one would win, so the hit caps at `min(44, portSpacing)`.
|
|
19
|
+
* H7. The region is 44 SCREEN px at every zoom, not 44 px of flow space.
|
|
20
|
+
* Added in milestone 6, and it is the only law here that was measured on a
|
|
21
|
+
* phone before it was written down. Every element a node owns lives inside
|
|
22
|
+
* `.react-flow__viewport`, whose transform carries the zoom, so a region
|
|
23
|
+
* declared 44 px renders 44 x zoom. On the iPhone 16e at zoom 0.377 that
|
|
24
|
+
* is 16.6 pt wide — a half-width of 8.3 pt — and a tap 18 pt off the
|
|
25
|
+
* painted centre panned the canvas instead of grabbing the port. Same miss
|
|
26
|
+
* on emulator-5592 at zoom 0.397. So the inset carries a 1/zoom term and
|
|
27
|
+
* the sheet reads the live zoom from `--mpo-graph-zoom`.
|
|
28
|
+
*
|
|
29
|
+
* H2 and H7 are the CSS in `css/graph.css`, not numbers; the rest are here.
|
|
30
|
+
*/
|
|
31
|
+
|
|
32
|
+
import { MIN_PRESS_TARGET } from "@multiplatform.one/theme";
|
|
33
|
+
import { type GraphNodeSizeKnob, type GraphPortSide, portSpacing } from "./nodeMeasure";
|
|
34
|
+
|
|
35
|
+
/** H1. Painted diameter per size stop. Never 44 at any stop, by construction. */
|
|
36
|
+
export const paintedPortSizePx: Record<GraphNodeSizeKnob, number> = {
|
|
37
|
+
small: 8,
|
|
38
|
+
medium: 10,
|
|
39
|
+
large: 12,
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* H3's fine-pointer floor. Below this a mouse target is a coin toss; above 44
|
|
44
|
+
* it would start eating the node body, which is why fine and coarse differ at
|
|
45
|
+
* all.
|
|
46
|
+
*/
|
|
47
|
+
export const FINE_PORT_HIT_MIN = 24;
|
|
48
|
+
|
|
49
|
+
export function paintedPortSize(size: GraphNodeSizeKnob): number {
|
|
50
|
+
return paintedPortSizePx[size];
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* H3 with H4's cap applied.
|
|
55
|
+
*
|
|
56
|
+
* The floor at the painted size is geometric, not a taste call: the hit region
|
|
57
|
+
* is a pseudo-element inset OUTWARD from the dot, so a hit smaller than the
|
|
58
|
+
* dot would inset inward and shrink the target below what the user can see.
|
|
59
|
+
*/
|
|
60
|
+
export function portHitSize(opts: {
|
|
61
|
+
readonly size: GraphNodeSizeKnob;
|
|
62
|
+
readonly coarsePointer: boolean;
|
|
63
|
+
/** The node's port pitch. Defaults to the pitch for this pointer kind. */
|
|
64
|
+
readonly portSpacingPx?: number;
|
|
65
|
+
}): number {
|
|
66
|
+
const painted = paintedPortSize(opts.size);
|
|
67
|
+
const wanted = opts.coarsePointer ? MIN_PRESS_TARGET : Math.max(painted, FINE_PORT_HIT_MIN);
|
|
68
|
+
const spacing = opts.portSpacingPx ?? portSpacing({ coarsePointer: opts.coarsePointer });
|
|
69
|
+
return Math.max(painted, Math.min(wanted, spacing));
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* The `inset` the `::after` region carries, in px.
|
|
74
|
+
*
|
|
75
|
+
* NEGATIVE when the hit is larger than the dot, which is the whole point: the
|
|
76
|
+
* pseudo-element grows outward from the painted disc without touching the
|
|
77
|
+
* handle's own box, so `handleBounds` — which reads `getBoundingClientRect()`
|
|
78
|
+
* and `getDimensions()` — sees nothing change and every edge endpoint stays
|
|
79
|
+
* where the 8 px dot put it.
|
|
80
|
+
*
|
|
81
|
+
* `borderWidthPx` is not decoration. An absolutely positioned pseudo-element
|
|
82
|
+
* insets from its parent's PADDING box, and the dot is `box-sizing:
|
|
83
|
+
* border-box` with a knob-driven ring, so the padding box is `size - 2 ×
|
|
84
|
+
* border`. Measured in Chrome before this term existed: a 44 asked for
|
|
85
|
+
* rendered as 42. A press floor that lands two pixels under the floor is not
|
|
86
|
+
* a floor, so the ring is added back here rather than rounded away.
|
|
87
|
+
*/
|
|
88
|
+
export function portRegionInset(opts: {
|
|
89
|
+
readonly size: GraphNodeSizeKnob;
|
|
90
|
+
readonly coarsePointer: boolean;
|
|
91
|
+
readonly portSpacingPx?: number;
|
|
92
|
+
/** The dot's ring, from `knobProps.surface.borderWidth`. */
|
|
93
|
+
readonly borderWidthPx?: number;
|
|
94
|
+
}): number {
|
|
95
|
+
return portRegionInsetAtZoom({ ...opts, zoom: 1 });
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* H7. The same inset with the viewport zoom divided back out.
|
|
100
|
+
*
|
|
101
|
+
* The region has to be `hit` SCREEN px, and it is painted inside a box the
|
|
102
|
+
* viewport transform scales by `zoom`. Local width is therefore `hit / zoom`,
|
|
103
|
+
* and the inset that produces it is `(painted - hit / zoom) / 2`, plus the ring
|
|
104
|
+
* term H2 already carries. At zoom 1 this IS `portRegionInset`, which is what
|
|
105
|
+
* `handleGeometry.spec.ts` asserts, so the new term cannot silently change the
|
|
106
|
+
* number the desktop canvas has always used.
|
|
107
|
+
*
|
|
108
|
+
* The floor on `zoom` is not defensive tidiness: dividing by zero in CSS is
|
|
109
|
+
* silent and yields an infinite region that swallows the whole canvas. React
|
|
110
|
+
* Flow never emits a zoom of 0, so the guard costs nothing and removes the one
|
|
111
|
+
* way this arithmetic can produce something catastrophic.
|
|
112
|
+
*
|
|
113
|
+
* `css/graph.css` computes the identical expression from
|
|
114
|
+
* `--mpo-graph-handle-size`, `--mpo-graph-handle-hit`,
|
|
115
|
+
* `--mpo-graph-handle-border` and `--mpo-graph-zoom`. `GraphPort.spec.tsx`
|
|
116
|
+
* reads the rule text and checks the two agree, because jsdom cannot resolve a
|
|
117
|
+
* pseudo-element and a spec written against `getComputedStyle(el, "::after")`
|
|
118
|
+
* would assert nothing at all.
|
|
119
|
+
*/
|
|
120
|
+
export function portRegionInsetAtZoom(opts: {
|
|
121
|
+
readonly size: GraphNodeSizeKnob;
|
|
122
|
+
readonly coarsePointer: boolean;
|
|
123
|
+
readonly portSpacingPx?: number;
|
|
124
|
+
readonly borderWidthPx?: number;
|
|
125
|
+
/** The live viewport zoom. 1 outside a canvas. */
|
|
126
|
+
readonly zoom: number;
|
|
127
|
+
}): number {
|
|
128
|
+
const zoom = opts.zoom > 0 ? opts.zoom : 1;
|
|
129
|
+
return (paintedPortSize(opts.size) - portHitSize(opts) / zoom) / 2 - (opts.borderWidthPx ?? 0);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* What the region ACTUALLY measures on screen, in px, at a given zoom.
|
|
134
|
+
*
|
|
135
|
+
* The number MPO-212's 3.4 criterion is about, and the one nothing computed
|
|
136
|
+
* before milestone 6. With the 1/zoom term this is `portHitSize(opts)` at every
|
|
137
|
+
* zoom, which is the whole claim — so a spec asserting it at 0.4 and at 2 is
|
|
138
|
+
* asserting the fix rather than the arithmetic that implements it.
|
|
139
|
+
*/
|
|
140
|
+
export function portRegionScreenSize(opts: {
|
|
141
|
+
readonly size: GraphNodeSizeKnob;
|
|
142
|
+
readonly coarsePointer: boolean;
|
|
143
|
+
readonly portSpacingPx?: number;
|
|
144
|
+
readonly borderWidthPx?: number;
|
|
145
|
+
readonly zoom: number;
|
|
146
|
+
}): number {
|
|
147
|
+
const zoom = opts.zoom > 0 ? opts.zoom : 1;
|
|
148
|
+
const painted = paintedPortSize(opts.size);
|
|
149
|
+
const inset = portRegionInsetAtZoom(opts);
|
|
150
|
+
// The local box, then back to screen px. `borderWidthPx` enters the inset and
|
|
151
|
+
// must therefore leave again here, or the ring would be counted twice.
|
|
152
|
+
const local = painted - 2 * inset - 2 * (opts.borderWidthPx ?? 0);
|
|
153
|
+
return local * zoom;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* H5. `connectionRadius` matches the hit diameter, so the magnetic drop radius
|
|
158
|
+
* is the visible affordance rather than React Flow's 20 px default. Wired into
|
|
159
|
+
* the canvas in task 1.11; the number lives here with its siblings.
|
|
160
|
+
*/
|
|
161
|
+
export function portConnectionRadius(opts: {
|
|
162
|
+
readonly size: GraphNodeSizeKnob;
|
|
163
|
+
readonly coarsePointer: boolean;
|
|
164
|
+
readonly portSpacingPx?: number;
|
|
165
|
+
}): number {
|
|
166
|
+
return portHitSize(opts);
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
/** A rectangle in the node's own coordinate space, top-left anchored. */
|
|
170
|
+
export interface PortRect {
|
|
171
|
+
readonly x: number;
|
|
172
|
+
readonly y: number;
|
|
173
|
+
readonly width: number;
|
|
174
|
+
readonly height: number;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* The two rectangles a port occupies, which are NOT the same rectangle.
|
|
179
|
+
*
|
|
180
|
+
* `box` is what React Flow measures. `handleBounds` is built from
|
|
181
|
+
* `getBoundingClientRect()` and `getDimensions()` (`dom.ts:82-91`), so `box` is
|
|
182
|
+
* the handle ELEMENT — and `getHandlePosition` turns it into the point every
|
|
183
|
+
* edge is drawn to.
|
|
184
|
+
*
|
|
185
|
+
* `region` is what a finger lands on: the `::after` pseudo-element. A
|
|
186
|
+
* pseudo-element is not in the box tree its parent reports, so it moves
|
|
187
|
+
* `region` without moving `box`.
|
|
188
|
+
*
|
|
189
|
+
* Keeping them apart in the TYPE is the mechanism H2 describes. Element growth
|
|
190
|
+
* would collapse them into one rectangle, and every edge endpoint on an LR
|
|
191
|
+
* graph would slide outward by half the difference — 18 units at 8 → 44.
|
|
192
|
+
*/
|
|
193
|
+
export interface PortGeometry {
|
|
194
|
+
/** What `handleBounds` measures. Painted size only; `hit` never enters. */
|
|
195
|
+
readonly box: PortRect;
|
|
196
|
+
/** What the pointer hits — the `::after` region. Grows with `hit`. */
|
|
197
|
+
readonly region: PortRect;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
function centredOn(cx: number, cy: number, side: number): PortRect {
|
|
201
|
+
return { x: cx - side / 2, y: cy - side / 2, width: side, height: side };
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
/**
|
|
205
|
+
* Where a port sits on its node, and how big each of its two rectangles is.
|
|
206
|
+
*
|
|
207
|
+
* `painted` and `hit` are separate parameters ON PURPOSE, so the endpoint law
|
|
208
|
+
* is falsifiable: a caller can ask for a 44 px hit and read back a box that did
|
|
209
|
+
* not move. A single-size signature could not express the broken mechanism, and
|
|
210
|
+
* a test that cannot express the bug cannot catch it.
|
|
211
|
+
*
|
|
212
|
+
* React Flow's own sheet centres a handle on the node edge — `left: 0` /
|
|
213
|
+
* `right: 0` with `translate(∓50%)` and `top: 50%` with `translateY(-50%)`
|
|
214
|
+
* (style.css `.react-flow__handle-left` and friends) — so both rectangles are
|
|
215
|
+
* concentric on that edge point rather than tangent to it.
|
|
216
|
+
*/
|
|
217
|
+
export function portGeometry(opts: {
|
|
218
|
+
readonly painted: number;
|
|
219
|
+
readonly hit: number;
|
|
220
|
+
readonly side: GraphPortSide;
|
|
221
|
+
readonly nodeWidth: number;
|
|
222
|
+
readonly nodeHeight: number;
|
|
223
|
+
/** Distance along the port's edge, from the node's top-left corner. */
|
|
224
|
+
readonly offset: number;
|
|
225
|
+
}): PortGeometry {
|
|
226
|
+
const { painted, hit, side, nodeWidth, nodeHeight, offset } = opts;
|
|
227
|
+
const cx =
|
|
228
|
+
side === "left" ? 0 : side === "right" ? nodeWidth : Math.min(Math.max(offset, 0), nodeWidth);
|
|
229
|
+
const cy =
|
|
230
|
+
side === "top" ? 0 : side === "bottom" ? nodeHeight : Math.min(Math.max(offset, 0), nodeHeight);
|
|
231
|
+
return { box: centredOn(cx, cy, painted), region: centredOn(cx, cy, hit) };
|
|
232
|
+
}
|