semiotic 3.7.4 → 3.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +60 -15
- package/README.md +135 -24
- package/agent-skill/semiotic-charts/SKILL.md +146 -0
- package/ai/cli.js +133 -45
- package/ai/componentMetadata.cjs +6 -1
- package/ai/dist/mcp-server.js +1651 -154
- package/ai/examples.md +174 -0
- package/ai/schema.json +2934 -517
- package/ai/surface-manifest.json +200 -0
- package/ai/system-prompt.md +19 -3
- package/dist/components/Annotation.d.ts +4 -0
- package/dist/components/CategoryColors.d.ts +1 -1
- package/dist/components/ChartContainer.d.ts +91 -0
- package/dist/components/ChartGrid.d.ts +11 -1
- package/dist/components/CircularBrush.d.ts +61 -0
- package/dist/components/ContextLayout.d.ts +5 -1
- package/dist/components/DataSummaryContext.d.ts +1 -0
- package/dist/components/DirectManipulationControl.d.ts +63 -0
- package/dist/components/LinkedCharts.d.ts +3 -1
- package/dist/components/MobileAnnotationCalloutList.d.ts +13 -0
- package/dist/components/MobileChartContainer.d.ts +51 -0
- package/dist/components/MobileStandardControls.d.ts +68 -0
- package/dist/components/SmallMultipleChart.d.ts +84 -0
- package/dist/components/Tooltip/FlippingTooltip.d.ts +21 -0
- package/dist/components/ai/ChartRecipe.d.ts +16 -0
- package/dist/components/ai/IntentMark.d.ts +15 -0
- package/dist/components/ai/chartCapabilities.d.ts +8 -1
- package/dist/components/ai/chartCapabilityTypes.d.ts +42 -1
- package/dist/components/ai/chartClinic.d.ts +91 -0
- package/dist/components/ai/chartRecipeRegistry.d.ts +14 -0
- package/dist/components/ai/chartRecipes.d.ts +278 -0
- package/dist/components/ai/dataPitfallsBridge.d.ts +203 -0
- package/dist/components/ai/dataQualityBridge.d.ts +201 -0
- package/dist/components/ai/describeChart.d.ts +9 -0
- package/dist/components/ai/describeRecipeChart.d.ts +16 -0
- package/dist/components/ai/generativeChart.d.ts +170 -0
- package/dist/components/ai/intentManifest.d.ts +62 -0
- package/dist/components/ai/navigationTree.d.ts +3 -0
- package/dist/components/ai/observedSceneAudit.d.ts +72 -0
- package/dist/components/ai/readerGrounding.d.ts +83 -0
- package/dist/components/ai/recipeCapability.d.ts +8 -0
- package/dist/components/ai/recipeNavigation.d.ts +13 -0
- package/dist/components/ai/recipeSemantics.d.ts +11 -0
- package/dist/components/ai/repairChartConfig.d.ts +9 -0
- package/dist/components/ai/suggestCharts.d.ts +11 -1
- package/dist/components/charts/custom/GeoCustomChart.d.ts +48 -0
- package/dist/components/charts/custom/NetworkCustomChart.d.ts +22 -3
- package/dist/components/charts/custom/OrdinalCustomChart.d.ts +8 -2
- package/dist/components/charts/custom/XYCustomChart.d.ts +11 -2
- package/dist/components/charts/geo/DistanceCartogram.d.ts +1 -1
- package/dist/components/charts/geo/FlowMap.d.ts +1 -1
- package/dist/components/charts/geo/ProportionalSymbolMap.d.ts +1 -1
- package/dist/components/charts/geo/index.d.ts +2 -0
- package/dist/components/charts/index.d.ts +29 -1
- package/dist/components/charts/network/ChordDiagram.d.ts +1 -1
- package/dist/components/charts/network/CirclePack.d.ts +1 -1
- package/dist/components/charts/network/ForceDirectedGraph.d.ts +15 -5
- package/dist/components/charts/network/OrbitDiagram.d.ts +1 -1
- package/dist/components/charts/network/ProcessSankey.d.ts +1 -1
- package/dist/components/charts/network/SankeyDiagram.d.ts +1 -1
- package/dist/components/charts/network/TreeDiagram.d.ts +1 -1
- package/dist/components/charts/network/Treemap.d.ts +1 -1
- package/dist/components/charts/network/useForceLayout.d.ts +17 -0
- package/dist/components/charts/ordinal/BarChart.d.ts +1 -1
- package/dist/components/charts/ordinal/BoxPlot.d.ts +1 -1
- package/dist/components/charts/ordinal/DonutChart.d.ts +1 -1
- package/dist/components/charts/ordinal/DotPlot.d.ts +1 -1
- package/dist/components/charts/ordinal/FunnelChart.d.ts +1 -1
- package/dist/components/charts/ordinal/GroupedBarChart.d.ts +1 -1
- package/dist/components/charts/ordinal/Histogram.d.ts +1 -1
- package/dist/components/charts/ordinal/PieChart.d.ts +1 -1
- package/dist/components/charts/ordinal/RidgelinePlot.d.ts +1 -1
- package/dist/components/charts/ordinal/StackedBarChart.d.ts +1 -1
- package/dist/components/charts/ordinal/SwarmPlot.d.ts +8 -1
- package/dist/components/charts/ordinal/SwimlaneChart.d.ts +1 -1
- package/dist/components/charts/ordinal/ViolinPlot.d.ts +1 -1
- package/dist/components/charts/physics/ChainReactionChart.d.ts +9 -0
- package/dist/components/charts/physics/CollisionSwarmChart.capability.d.ts +2 -0
- package/dist/components/charts/physics/CollisionSwarmChart.d.ts +47 -0
- package/dist/components/charts/physics/EventDropChart.capability.d.ts +2 -0
- package/dist/components/charts/physics/EventDropChart.d.ts +53 -0
- package/dist/components/charts/physics/GaltonBoardChart.capability.d.ts +2 -0
- package/dist/components/charts/physics/GaltonBoardChart.d.ts +66 -0
- package/dist/components/charts/physics/GauntletChart.capability.d.ts +2 -0
- package/dist/components/charts/physics/GauntletChart.d.ts +73 -0
- package/dist/components/charts/physics/PhysicalFlowChart.capability.d.ts +2 -0
- package/dist/components/charts/physics/PhysicalFlowChart.d.ts +63 -0
- package/dist/components/charts/physics/PhysicsCustomChart.d.ts +120 -0
- package/dist/components/charts/physics/PhysicsPileChart.capability.d.ts +2 -0
- package/dist/components/charts/physics/PhysicsPileChart.d.ts +53 -0
- package/dist/components/charts/physics/ProcessFlowChart.capability.d.ts +2 -0
- package/dist/components/charts/physics/ProcessFlowChart.d.ts +96 -0
- package/dist/components/charts/physics/chainReactionOverlay.d.ts +22 -0
- package/dist/components/charts/physics/chainReactionRuntime.d.ts +37 -0
- package/dist/components/charts/physics/chainReactionTypes.d.ts +97 -0
- package/dist/components/charts/physics/collisionSwarmPhysics.d.ts +27 -0
- package/dist/components/charts/physics/dependencyMachine.d.ts +188 -0
- package/dist/components/charts/physics/eventDropPhysics.d.ts +64 -0
- package/dist/components/charts/physics/galtonBoardPhysics.d.ts +28 -0
- package/dist/components/charts/physics/gauntletChartProps.d.ts +67 -0
- package/dist/components/charts/physics/gauntletChrome.d.ts +33 -0
- package/dist/components/charts/physics/gauntletController.d.ts +73 -0
- package/dist/components/charts/physics/gauntletEffects.d.ts +36 -0
- package/dist/components/charts/physics/gauntletPhysics.d.ts +71 -0
- package/dist/components/charts/physics/gauntletRuntime.d.ts +42 -0
- package/dist/components/charts/physics/gauntletTypes.d.ts +213 -0
- package/dist/components/charts/physics/physicalFlowPhysics.d.ts +57 -0
- package/dist/components/charts/physics/physicsChartShared.d.ts +41 -0
- package/dist/components/charts/physics/physicsChartUtils.d.ts +18 -0
- package/dist/components/charts/physics/physicsEncoding.d.ts +142 -0
- package/dist/components/charts/physics/physicsHocHandle.d.ts +53 -0
- package/dist/components/charts/physics/physicsHocUtils.d.ts +128 -0
- package/dist/components/charts/physics/physicsPilePhysics.d.ts +41 -0
- package/dist/components/charts/physics/physicsProcessPrimitives.d.ts +38 -0
- package/dist/components/charts/physics/processFlowPhysics.d.ts +97 -0
- package/dist/components/charts/realtime/RealtimeHeatmap.d.ts +9 -1
- package/dist/components/charts/realtime/RealtimeHistogram.d.ts +9 -1
- package/dist/components/charts/realtime/RealtimeLineChart.d.ts +30 -1
- package/dist/components/charts/realtime/RealtimeSwarmChart.d.ts +16 -2
- package/dist/components/charts/realtime/RealtimeWaterfallChart.d.ts +9 -1
- package/dist/components/charts/realtime/aggregate.d.ts +51 -0
- package/dist/components/charts/realtime/eventTime.d.ts +26 -0
- package/dist/components/charts/shared/auditMobileVisualization.d.ts +91 -0
- package/dist/components/charts/shared/chartDefinitionPilot.d.ts +145 -0
- package/dist/components/charts/shared/chartFamilySets.d.ts +20 -0
- package/dist/components/charts/shared/chartSpecCore.d.ts +165 -0
- package/dist/components/charts/shared/chartSpecs.d.ts +8 -127
- package/dist/components/charts/shared/chartSpecsGeo.d.ts +2 -0
- package/dist/components/charts/shared/chartSpecsNetwork.d.ts +2 -0
- package/dist/components/charts/shared/chartSpecsOrdinal.d.ts +2 -0
- package/dist/components/charts/shared/chartSpecsPhysics.d.ts +2 -0
- package/dist/components/charts/shared/chartSpecsRealtime.d.ts +2 -0
- package/dist/components/charts/shared/chartSpecsValue.d.ts +2 -0
- package/dist/components/charts/shared/chartSpecsXY.d.ts +2 -0
- package/dist/components/charts/shared/colorContrast.d.ts +3 -0
- package/dist/components/charts/shared/colorPalettes.d.ts +2 -0
- package/dist/components/charts/shared/colorUtils.d.ts +17 -13
- package/dist/components/charts/shared/diagnoseAnnotationChecks.d.ts +4 -0
- package/dist/components/charts/shared/diagnoseConfig.d.ts +9 -14
- package/dist/components/charts/shared/diagnoseMisleadingChecks.d.ts +9 -0
- package/dist/components/charts/shared/diagnosePhysicsChecks.d.ts +3 -0
- package/dist/components/charts/shared/diagnoseTypes.d.ts +10 -0
- package/dist/components/charts/shared/hooks.d.ts +28 -5
- package/dist/components/charts/shared/minMax.d.ts +3 -0
- package/dist/components/charts/shared/motionEncoding.d.ts +145 -0
- package/dist/components/charts/shared/radialGeometry.d.ts +0 -18
- package/dist/components/charts/shared/responsiveRules.d.ts +56 -0
- package/dist/components/charts/shared/smartTooltip.d.ts +27 -0
- package/dist/components/charts/shared/statisticalOverlays.d.ts +35 -0
- package/dist/components/charts/shared/streamPropsHelpers.d.ts +12 -2
- package/dist/components/charts/shared/temporalStrings.d.ts +7 -0
- package/dist/components/charts/shared/tooltipUtils.d.ts +2 -0
- package/dist/components/charts/shared/types.d.ts +49 -1
- package/dist/components/charts/shared/useChartSetup.d.ts +10 -3
- package/dist/components/charts/shared/useCustomChartSetup.d.ts +15 -6
- package/dist/components/charts/shared/useNetworkChartSetup.d.ts +6 -2
- package/dist/components/charts/shared/useOrdinalPieceStyle.d.ts +1 -1
- package/dist/components/charts/shared/useStreamingLegend.d.ts +1 -1
- package/dist/components/charts/shared/useSyncedPushData.d.ts +49 -0
- package/dist/components/charts/shared/validateChartData.d.ts +1 -1
- package/dist/components/charts/shared/validationMap.d.ts +0 -11
- package/dist/components/charts/xy/AreaChart.d.ts +1 -1
- package/dist/components/charts/xy/BubbleChart.d.ts +1 -1
- package/dist/components/charts/xy/LineChart.d.ts +1 -1
- package/dist/components/charts/xy/MinimapChart.d.ts +1 -1
- package/dist/components/charts/xy/MultiAxisLineChart.d.ts +2 -2
- package/dist/components/charts/xy/QuadrantChart.d.ts +1 -1
- package/dist/components/charts/xy/Scatterplot.d.ts +10 -1
- package/dist/components/charts/xy/ScatterplotMatrix.d.ts +11 -1
- package/dist/components/charts/xy/StackedAreaChart.d.ts +9 -4
- package/dist/components/controls/controlAudit.d.ts +24 -0
- package/dist/components/controls/controlContract.d.ts +57 -0
- package/dist/components/data/fromArrow.d.ts +54 -0
- package/dist/components/data/fromFlintChart.d.ts +74 -0
- package/dist/components/data/fromMermaid.d.ts +47 -0
- package/dist/components/data/fromObservablePlot.d.ts +69 -0
- package/dist/components/data/fromVegaLite.d.ts +27 -0
- package/dist/components/data/portability/index.d.ts +17 -0
- package/dist/components/data/portability/result.d.ts +52 -0
- package/dist/components/data/portability/spec.d.ts +160 -0
- package/dist/components/data/portability/vegaLite.d.ts +80 -0
- package/dist/components/export/chartConfig.d.ts +11 -0
- package/dist/components/realtime/ReorderBuffer.d.ts +54 -0
- package/dist/components/realtime/RunningStats.d.ts +66 -0
- package/dist/components/realtime/WindowAccumulator.d.ts +105 -0
- package/dist/components/realtime/parseWindowDuration.d.ts +12 -0
- package/dist/components/realtime/types.d.ts +11 -0
- package/dist/components/recipes/annotationLayout.d.ts +29 -0
- package/dist/components/recipes/axisFixedForce.d.ts +119 -0
- package/dist/components/recipes/boba.d.ts +23 -0
- package/dist/components/recipes/customTooltip.d.ts +31 -0
- package/dist/components/recipes/cyclical.d.ts +39 -0
- package/dist/components/recipes/edgeRouter.d.ts +103 -0
- package/dist/components/recipes/forceLayout.d.ts +48 -0
- package/dist/components/recipes/forceLayoutAsync.d.ts +17 -0
- package/dist/components/recipes/gofishBobaHandwritten.d.ts +3 -0
- package/dist/components/recipes/gofishDisplayListFixtures.generated.d.ts +37 -0
- package/dist/components/recipes/gofishIR.d.ts +215 -0
- package/dist/components/recipes/gofishIRExamples.d.ts +38 -0
- package/dist/components/recipes/intervalLanes.d.ts +87 -0
- package/dist/components/recipes/intervals.d.ts +80 -0
- package/dist/components/recipes/isometricLandmarks.d.ts +88 -0
- package/dist/components/recipes/isotypeGlyphs.d.ts +17 -0
- package/dist/components/recipes/mermaidDag.d.ts +44 -0
- package/dist/components/recipes/mobileAnnotationStrategy.d.ts +48 -0
- package/dist/components/recipes/mobileChartFamilyRecipes.d.ts +59 -0
- package/dist/components/recipes/networkAnalysis.d.ts +102 -0
- package/dist/components/recipes/networkLayouts.d.ts +83 -0
- package/dist/components/recipes/packedClusterMatrix.d.ts +166 -0
- package/dist/components/recipes/physics.d.ts +122 -0
- package/dist/components/recipes/physicsReference.d.ts +102 -0
- package/dist/components/recipes/processAggregates.d.ts +32 -0
- package/dist/components/recipes/processChrome.d.ts +67 -0
- package/dist/components/recipes/processJourney.d.ts +54 -0
- package/dist/components/recipes/processPhysics.d.ts +300 -0
- package/dist/components/recipes/processVolumeGeometry.d.ts +28 -0
- package/dist/components/recipes/radialCoords.d.ts +69 -0
- package/dist/components/recipes/random.d.ts +2 -0
- package/dist/components/recipes/recipeChrome.d.ts +191 -0
- package/dist/components/recipes/recipeGlyph.d.ts +42 -0
- package/dist/components/recipes/recipeLegend.d.ts +109 -0
- package/dist/components/recipes/recipeUtils.d.ts +157 -0
- package/dist/components/recipes/runs.d.ts +59 -0
- package/dist/components/recipes/tokenEncoding.d.ts +157 -0
- package/dist/components/recipes/tokenLayer.d.ts +79 -0
- package/dist/components/recipes/unitize.d.ts +108 -0
- package/dist/components/recipes/vector.d.ts +28 -0
- package/dist/components/recipes/waffle.d.ts +43 -0
- package/dist/components/semiotic-ai-core.d.ts +47 -0
- package/dist/components/semiotic-ai.d.ts +52 -4
- package/dist/components/semiotic-controls.d.ts +18 -0
- package/dist/components/semiotic-data.d.ts +2 -0
- package/dist/components/semiotic-experimental.d.ts +49 -0
- package/dist/components/semiotic-geo.d.ts +11 -0
- package/dist/components/semiotic-network.d.ts +14 -1
- package/dist/components/semiotic-ordinal.d.ts +10 -0
- package/dist/components/semiotic-physics-matter.d.ts +10 -0
- package/dist/components/semiotic-physics-rapier.d.ts +9 -0
- package/dist/components/semiotic-physics.d.ts +56 -0
- package/dist/components/semiotic-realtime-core.d.ts +34 -0
- package/dist/components/semiotic-realtime-react.d.ts +10 -0
- package/dist/components/semiotic-realtime.d.ts +4 -22
- package/dist/components/semiotic-recipes-core.d.ts +92 -0
- package/dist/components/semiotic-recipes-react.d.ts +7 -0
- package/dist/components/semiotic-recipes.d.ts +4 -26
- package/dist/components/semiotic-server-edge.d.ts +8 -0
- package/dist/components/semiotic-server-node.d.ts +5 -0
- package/dist/components/semiotic-server.d.ts +2 -2
- package/dist/components/semiotic-themes-core.d.ts +53 -0
- package/dist/components/semiotic-themes-react.d.ts +4 -0
- package/dist/components/semiotic-themes.d.ts +6 -74
- package/dist/components/semiotic-utils-core.d.ts +46 -0
- package/dist/components/semiotic-utils-react.d.ts +5 -0
- package/dist/components/semiotic-utils.d.ts +3 -39
- package/dist/components/semiotic-xy.d.ts +10 -0
- package/dist/components/semiotic.d.ts +39 -7
- package/dist/components/server/animatedGif.d.ts +36 -0
- package/dist/components/server/renderEvidence.d.ts +1 -1
- package/dist/components/server/renderToStaticSVG.d.ts +3 -35
- package/dist/components/server/serverChartConfigShared.d.ts +17 -0
- package/dist/components/server/serverChartConfigs.d.ts +19 -9
- package/dist/components/server/serverChartConfigsCustom.d.ts +5 -0
- package/dist/components/server/serverChartConfigsGeo.d.ts +9 -0
- package/dist/components/server/serverChartConfigsNetwork.d.ts +8 -0
- package/dist/components/server/serverChartConfigsOrdinal.d.ts +16 -0
- package/dist/components/server/serverChartConfigsPhysics.d.ts +9 -0
- package/dist/components/server/serverChartConfigsXY.d.ts +11 -0
- package/dist/components/server/staticGeo.d.ts +4 -0
- package/dist/components/server/staticLegend.d.ts +1 -1
- package/dist/components/server/staticNetwork.d.ts +8 -0
- package/dist/components/server/staticOrdinal.d.ts +11 -0
- package/dist/components/server/staticPhysics.d.ts +3 -0
- package/dist/components/server/staticSVGChrome.d.ts +110 -0
- package/dist/components/server/staticXY.d.ts +4 -0
- package/dist/components/store/ObservationStore.d.ts +23 -3
- package/dist/components/store/SelectionStore.d.ts +1 -1
- package/dist/components/store/ThemeStore.d.ts +1 -1
- package/dist/components/store/TooltipStore.d.ts +1 -1
- package/dist/components/store/createStore.d.ts +1 -1
- package/dist/components/store/designTokens.d.ts +15 -0
- package/dist/components/store/themeSerialization.d.ts +32 -0
- package/dist/components/store/useChartInterrogation.d.ts +9 -0
- package/dist/components/stream/AccessibleDataTable.d.ts +3 -13
- package/dist/components/stream/FocusRing.d.ts +4 -2
- package/dist/components/stream/GeoCanvasHitTester.d.ts +1 -1
- package/dist/components/stream/GeoPipelineStore.d.ts +28 -0
- package/dist/components/stream/NetworkHtmlMarksLayer.d.ts +44 -0
- package/dist/components/stream/NetworkPipelineStore.d.ts +62 -25
- package/dist/components/stream/NetworkSVGOverlay.d.ts +15 -0
- package/dist/components/stream/OrdinalPipelineStore.d.ts +64 -2
- package/dist/components/stream/PipelineStore.d.ts +100 -162
- package/dist/components/stream/SceneGraph.d.ts +14 -2
- package/dist/components/stream/StreamGeoFrame.d.ts +1 -1
- package/dist/components/stream/StreamNetworkFrame.d.ts +1 -1
- package/dist/components/stream/StreamOrdinalFrame.d.ts +1 -1
- package/dist/components/stream/StreamXYFrame.d.ts +2 -18
- package/dist/components/stream/accessibleDataRows.d.ts +33 -0
- package/dist/components/stream/accessorUtils.d.ts +23 -10
- package/dist/components/stream/brushAccessibility.d.ts +25 -0
- package/dist/components/stream/canvasBackground.d.ts +24 -0
- package/dist/components/stream/canvasSetup.d.ts +4 -1
- package/dist/components/stream/customLayout.d.ts +20 -0
- package/dist/components/stream/customLayoutDiagnostics.d.ts +11 -0
- package/dist/components/stream/customLayoutFailure.d.ts +33 -0
- package/dist/components/stream/customLayoutPalette.d.ts +19 -9
- package/dist/components/stream/customLayoutSelection.d.ts +52 -0
- package/dist/components/stream/frameThemeColors.d.ts +24 -0
- package/dist/components/stream/geoAnnotationAnchors.d.ts +14 -0
- package/dist/components/stream/geoCartogram.d.ts +17 -0
- package/dist/components/stream/geoCustomLayout.d.ts +59 -0
- package/dist/components/stream/geoDefaultTooltip.d.ts +11 -0
- package/dist/components/stream/geoFrameHelpers.d.ts +34 -0
- package/dist/components/stream/geoPipelineHelpers.d.ts +46 -0
- package/dist/components/stream/geoTypes.d.ts +56 -7
- package/dist/components/stream/glyphDef.d.ts +98 -0
- package/dist/components/stream/hitTarget.d.ts +170 -0
- package/dist/components/stream/hoverUtils.d.ts +3 -0
- package/dist/components/stream/keyboardNav.d.ts +4 -1
- package/dist/components/stream/layouts/forceLayoutPlugin.d.ts +9 -1
- package/dist/components/stream/layouts/forceLayoutWorkerClient.d.ts +57 -0
- package/dist/components/stream/networkBezier.d.ts +10 -0
- package/dist/components/stream/networkColorAccessors.d.ts +49 -0
- package/dist/components/stream/networkCustomLayout.d.ts +66 -1
- package/dist/components/stream/networkDefaultTooltip.d.ts +10 -0
- package/dist/components/stream/networkFrameInteraction.d.ts +37 -0
- package/dist/components/stream/networkFramePaint.d.ts +43 -0
- package/dist/components/stream/networkPipelineConfig.d.ts +22 -0
- package/dist/components/stream/networkPipelineHelpers.d.ts +12 -0
- package/dist/components/stream/networkRealtimeEncoding.d.ts +41 -0
- package/dist/components/stream/networkTypes.d.ts +104 -5
- package/dist/components/stream/ordinalCanvasRenderers.d.ts +7 -0
- package/dist/components/stream/ordinalCustomLayout.d.ts +17 -1
- package/dist/components/stream/ordinalDataIndex.d.ts +5 -0
- package/dist/components/stream/ordinalDefaultTooltip.d.ts +10 -0
- package/dist/components/stream/ordinalDomain.d.ts +38 -0
- package/dist/components/stream/ordinalPipelineUpdateResults.d.ts +12 -0
- package/dist/components/stream/ordinalPulse.d.ts +10 -0
- package/dist/components/stream/ordinalPulseResources.d.ts +3 -0
- package/dist/components/stream/ordinalSceneBuilders/sceneBuilderMap.d.ts +5 -0
- package/dist/components/stream/ordinalSceneBuilders/types.d.ts +2 -0
- package/dist/components/stream/ordinalSpatialIndex.d.ts +9 -0
- package/dist/components/stream/ordinalTypes.d.ts +56 -8
- package/dist/components/stream/paintNeeds.d.ts +31 -0
- package/dist/components/stream/physics/CapacityQueueController.d.ts +5 -0
- package/dist/components/stream/physics/CapacityQueueTypes.d.ts +134 -0
- package/dist/components/stream/physics/MatterPhysicsEngineAdapter.d.ts +42 -0
- package/dist/components/stream/physics/PhysicsAccessibility.d.ts +48 -0
- package/dist/components/stream/physics/PhysicsAnnotations.d.ts +58 -0
- package/dist/components/stream/physics/PhysicsBodyBudget.d.ts +26 -0
- package/dist/components/stream/physics/PhysicsBodySpatialIndex.d.ts +10 -0
- package/dist/components/stream/physics/PhysicsCanvasTheme.d.ts +26 -0
- package/dist/components/stream/physics/PhysicsControllers.d.ts +75 -0
- package/dist/components/stream/physics/PhysicsEngineAdapter.d.ts +59 -0
- package/dist/components/stream/physics/PhysicsEngineConformance.d.ts +23 -0
- package/dist/components/stream/physics/PhysicsEvidence.d.ts +25 -0
- package/dist/components/stream/physics/PhysicsKernel.d.ts +207 -0
- package/dist/components/stream/physics/PhysicsOptionalEngineAdapters.d.ts +12 -0
- package/dist/components/stream/physics/PhysicsPipelineStore.d.ts +84 -0
- package/dist/components/stream/physics/PhysicsPipelineTypes.d.ts +181 -0
- package/dist/components/stream/physics/PhysicsSVGOverlay.d.ts +72 -0
- package/dist/components/stream/physics/PhysicsSediment.d.ts +69 -0
- package/dist/components/stream/physics/PhysicsSettledSVG.d.ts +18 -0
- package/dist/components/stream/physics/PhysicsSettledScene.d.ts +21 -0
- package/dist/components/stream/physics/PhysicsWorkerClient.d.ts +24 -0
- package/dist/components/stream/physics/PhysicsWorkerProtocol.d.ts +101 -0
- package/dist/components/stream/physics/PhysicsWorkerRuntime.d.ts +5 -0
- package/dist/components/stream/physics/RapierPhysicsEngineAdapter.d.ts +18 -0
- package/dist/components/stream/physics/ServiceOperationsControllers.d.ts +27 -0
- package/dist/components/stream/physics/ServiceOperationsTypes.d.ts +89 -0
- package/dist/components/stream/physics/StreamPhysicsFrame.d.ts +6 -0
- package/dist/components/stream/physics/StreamPhysicsTypes.d.ts +302 -0
- package/dist/components/stream/physics/physicsBodyCanvas.d.ts +27 -0
- package/dist/components/stream/physics/physicsPipelineControls.d.ts +4 -0
- package/dist/components/stream/physics/physicsPipelineHelpers.d.ts +41 -0
- package/dist/components/stream/physics/physicsPipelineObservations.d.ts +14 -0
- package/dist/components/stream/physics/physicsPipelineUpdateResults.d.ts +9 -0
- package/dist/components/stream/physics/physicsRegionRuntime.d.ts +54 -0
- package/dist/components/stream/physics/physicsSemanticUI.d.ts +20 -0
- package/dist/components/stream/physics/usePhysicsFrameLifecyclePolicy.d.ts +16 -0
- package/dist/components/stream/pipelineBufferUtils.d.ts +26 -0
- package/dist/components/stream/pipelineConfig.d.ts +177 -0
- package/dist/components/stream/pipelineDecay.d.ts +20 -2
- package/dist/components/stream/pipelineDomainResolution.d.ts +62 -0
- package/dist/components/stream/pipelineIdentityOps.d.ts +26 -0
- package/dist/components/stream/pipelinePulse.d.ts +16 -2
- package/dist/components/stream/pipelineRibbons.d.ts +41 -0
- package/dist/components/stream/pipelineSpatialIndex.d.ts +12 -0
- package/dist/components/stream/pipelineStoreUpdateResults.d.ts +12 -0
- package/dist/components/stream/pipelineStyleResolvers.d.ts +46 -0
- package/dist/components/stream/pipelineTransitions.d.ts +2 -0
- package/dist/components/stream/pipelineUpdateContract.d.ts +62 -0
- package/dist/components/stream/pulseFrameRefresh.d.ts +22 -0
- package/dist/components/stream/renderers/glyphCanvasRenderer.d.ts +6 -0
- package/dist/components/stream/renderers/networkSymbolRenderer.d.ts +2 -0
- package/dist/components/stream/renderers/resolveCSSColor.d.ts +6 -0
- package/dist/components/stream/renderers/symbolCanvasRenderer.d.ts +2 -0
- package/dist/components/stream/sceneRevisionDiagnostics.d.ts +18 -0
- package/dist/components/stream/stalenessBands.d.ts +28 -0
- package/dist/components/stream/streamStoreSync.d.ts +37 -0
- package/dist/components/stream/symbolPath.d.ts +24 -0
- package/dist/components/stream/types.d.ts +206 -9
- package/dist/components/stream/useFrame.d.ts +21 -2
- package/dist/components/stream/useHydration.d.ts +6 -0
- package/dist/components/stream/useLegendCategoryEmission.d.ts +5 -0
- package/dist/components/stream/useStalenessCheck.d.ts +6 -1
- package/dist/components/stream/workerModuleUrl.d.ts +10 -0
- package/dist/components/stream/xyAnnotationAnchors.d.ts +13 -0
- package/dist/components/stream/xyCanvasRenderers.d.ts +7 -0
- package/dist/components/stream/xyCrosshair.d.ts +11 -0
- package/dist/components/stream/xyDateTicks.d.ts +9 -0
- package/dist/components/stream/xyDefaultTooltip.d.ts +10 -0
- package/dist/components/stream/xySceneBuilders/pointScene.d.ts +2 -2
- package/dist/components/stream/xySceneBuilders/types.d.ts +9 -4
- package/dist/controls.min.js +2 -0
- package/dist/controls.module.min.js +2 -0
- package/dist/forceLayoutWorker.js +1 -0
- package/dist/geo.min.js +1 -1
- package/dist/geo.module.min.js +1 -1
- package/dist/network.min.js +1 -1
- package/dist/network.module.min.js +1 -1
- package/dist/ordinal.min.js +1 -1
- package/dist/ordinal.module.min.js +1 -1
- package/dist/physics-matter.min.js +1 -0
- package/dist/physics-matter.module.min.js +1 -0
- package/dist/physics-rapier.min.js +1 -0
- package/dist/physics-rapier.module.min.js +1 -0
- package/dist/physics.min.js +2 -0
- package/dist/physics.module.min.js +2 -0
- package/dist/physicsWorker.js +1 -0
- package/dist/realtime.min.js +1 -1
- package/dist/realtime.module.min.js +1 -1
- package/dist/semiotic-ai-chunk-OG7BQUUW.module.min.js +2 -0
- package/dist/semiotic-ai-core.d.ts +47 -0
- package/dist/semiotic-ai-core.min.js +1 -0
- package/dist/semiotic-ai-core.module.min.js +1 -0
- package/dist/semiotic-ai-statisticalOverlays-CY4WKR4A.module.min.js +2 -0
- package/dist/semiotic-ai.d.ts +52 -4
- package/dist/semiotic-ai.min.js +1 -1
- package/dist/semiotic-ai.module.min.js +1 -1
- package/dist/semiotic-chunk-3FSVZ46U.module.min.js +2 -0
- package/dist/semiotic-controls.d.ts +18 -0
- package/dist/semiotic-data.d.ts +2 -0
- package/dist/semiotic-data.min.js +1 -1
- package/dist/semiotic-data.module.min.js +1 -1
- package/dist/semiotic-experimental.d.ts +49 -0
- package/dist/semiotic-experimental.min.js +1 -0
- package/dist/semiotic-experimental.module.min.js +1 -0
- package/dist/semiotic-geo.d.ts +11 -0
- package/dist/semiotic-network.d.ts +14 -1
- package/dist/semiotic-ordinal.d.ts +10 -0
- package/dist/semiotic-physics-matter.d.ts +10 -0
- package/dist/semiotic-physics-rapier.d.ts +9 -0
- package/dist/semiotic-physics.d.ts +56 -0
- package/dist/semiotic-realtime-core.d.ts +34 -0
- package/dist/semiotic-realtime-core.min.js +1 -0
- package/dist/semiotic-realtime-core.module.min.js +1 -0
- package/dist/semiotic-realtime-react.d.ts +10 -0
- package/dist/semiotic-realtime-react.min.js +2 -0
- package/dist/semiotic-realtime-react.module.min.js +2 -0
- package/dist/semiotic-realtime.d.ts +4 -22
- package/dist/semiotic-recipes-core.d.ts +92 -0
- package/dist/semiotic-recipes-core.min.js +1 -0
- package/dist/semiotic-recipes-core.module.min.js +1 -0
- package/dist/semiotic-recipes-react.d.ts +7 -0
- package/dist/semiotic-recipes-react.min.js +2 -0
- package/dist/semiotic-recipes-react.module.min.js +2 -0
- package/dist/semiotic-recipes.d.ts +4 -26
- package/dist/semiotic-recipes.min.js +1 -1
- package/dist/semiotic-recipes.module.min.js +1 -1
- package/dist/semiotic-server-edge.d.ts +8 -0
- package/dist/semiotic-server-edge.min.js +1 -0
- package/dist/semiotic-server-edge.module.min.js +1 -0
- package/dist/semiotic-server-node.d.ts +5 -0
- package/dist/semiotic-server-node.min.js +1 -0
- package/dist/semiotic-server-node.module.min.js +1 -0
- package/dist/semiotic-server.d.ts +2 -2
- package/dist/semiotic-statisticalOverlays-UOMSFKVJ.module.min.js +2 -0
- package/dist/semiotic-themes-core.d.ts +53 -0
- package/dist/semiotic-themes-core.min.js +1 -0
- package/dist/semiotic-themes-core.module.min.js +1 -0
- package/dist/semiotic-themes-react.d.ts +4 -0
- package/dist/semiotic-themes-react.min.js +2 -0
- package/dist/semiotic-themes-react.module.min.js +2 -0
- package/dist/semiotic-themes.d.ts +6 -74
- package/dist/semiotic-themes.min.js +1 -2
- package/dist/semiotic-themes.module.min.js +1 -2
- package/dist/semiotic-utils-core.d.ts +46 -0
- package/dist/semiotic-utils-core.min.js +1 -0
- package/dist/semiotic-utils-core.module.min.js +1 -0
- package/dist/semiotic-utils-react.d.ts +5 -0
- package/dist/semiotic-utils-react.min.js +2 -0
- package/dist/semiotic-utils-react.module.min.js +2 -0
- package/dist/semiotic-utils.d.ts +3 -39
- package/dist/semiotic-utils.min.js +1 -2
- package/dist/semiotic-utils.module.min.js +1 -2
- package/dist/semiotic-value.min.js +1 -1
- package/dist/semiotic-value.module.min.js +1 -1
- package/dist/semiotic-xy.d.ts +10 -0
- package/dist/semiotic.d.ts +39 -7
- package/dist/semiotic.min.js +1 -1
- package/dist/semiotic.module.min.js +1 -1
- package/dist/server.min.js +1 -1
- package/dist/server.module.min.js +1 -1
- package/dist/xy-chunk-IWD6IB6V.module.min.js +2 -0
- package/dist/xy-statisticalOverlays-7RWG6LJT.module.min.js +2 -0
- package/dist/xy.min.js +1 -1
- package/dist/xy.module.min.js +1 -1
- package/package.json +246 -86
- package/spec/README.md +152 -0
- package/spec/bindings/README.md +35 -0
- package/spec/bindings/vega-lite.mjs +112 -0
- package/spec/v0.1/annotation-provenance.schema.json +127 -0
- package/spec/v0.1/audience-profile.schema.json +67 -0
- package/spec/v0.1/chart-capability.schema.json +186 -0
- package/dist/semiotic-ai-statisticalOverlays-C2PPlmXv.js +0 -1
- package/dist/semiotic-statisticalOverlays-C3DsOgr_.js +0 -1
- package/dist/xy-statisticalOverlays-C2PPlmXv.js +0 -1
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import type { PointSceneNode, RectSceneNode, SceneDatum } from "./types";
|
|
2
|
+
import type { GeoAreaSceneNode } from "./geoTypes";
|
|
3
|
+
import type { NetworkCircleNode, NetworkRectNode } from "./networkTypes";
|
|
4
|
+
/** Default hit/keyboard-focus radius (px) — larger than a typical glyph so the
|
|
5
|
+
* target is easy to hit by pointer and to land on by keyboard (Fitts's law). */
|
|
6
|
+
export declare const DEFAULT_HIT_RADIUS = 8;
|
|
7
|
+
export interface HitTargetPointProps {
|
|
8
|
+
/** Plot-relative x of the mark's center. */
|
|
9
|
+
x: number;
|
|
10
|
+
/** Plot-relative y of the mark's center. */
|
|
11
|
+
y: number;
|
|
12
|
+
/** The raw user datum to surface on hover/click/focus and in the data table. */
|
|
13
|
+
datum: SceneDatum;
|
|
14
|
+
/** Stable identity. Set as the node's `pointId` (annotation anchor + nav-tree
|
|
15
|
+
* leaf match) *and* its transition key, so the mark keeps identity across
|
|
16
|
+
* re-layouts. Strongly recommended for interactive/animated custom charts. */
|
|
17
|
+
id?: string | number;
|
|
18
|
+
/** Hit + keyboard-focus radius in px. @default {@link DEFAULT_HIT_RADIUS} */
|
|
19
|
+
r?: number;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* A transparent, hit-testable **point** node for a custom XY or ordinal layout
|
|
23
|
+
* whose visible marks live in `overlays`. Inherits keyboard navigation, the
|
|
24
|
+
* focus ring, annotation anchoring (by `id` → `pointId`), tooltip/`onObservation`
|
|
25
|
+
* emission, and transition identity. See the module overview for the full
|
|
26
|
+
* contract.
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ```ts
|
|
30
|
+
* nodes: ctx.data.map((row) => {
|
|
31
|
+
* const { x, y } = polarToXY(angle(row.day), radius(row.value))
|
|
32
|
+
* return hitTargetPoint({ x, y, datum: row, id: `day-${row.day}` })
|
|
33
|
+
* })
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export declare function hitTargetPoint(props: HitTargetPointProps): PointSceneNode;
|
|
37
|
+
/**
|
|
38
|
+
* A transparent, hit-testable point node for a custom **geo** layout whose
|
|
39
|
+
* visible marks (sprites, icons, forts) live in `overlays`. Project a lon/lat
|
|
40
|
+
* with `ctx.scales.projectedPoint(lon, lat)` first, then pass the resulting
|
|
41
|
+
* `x` / `y`. Functionally identical to {@link hitTargetPoint} — geo scenes use
|
|
42
|
+
* the same `PointSceneNode` — but named for discoverability: it makes
|
|
43
|
+
* overlay-drawn geographic marks keyboard-navigable, focus-ringed, and
|
|
44
|
+
* annotation-anchorable, exactly as {@link networkHitTarget} does for networks.
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* ```ts
|
|
48
|
+
* // inside a GeoCustomChart layout
|
|
49
|
+
* nodes: pois.map((p) => {
|
|
50
|
+
* const [x, y] = ctx.scales.projectedPoint(p.lon, p.lat)!
|
|
51
|
+
* return geoHitTarget({ x, y, datum: p, id: p.id })
|
|
52
|
+
* })
|
|
53
|
+
* ```
|
|
54
|
+
*/
|
|
55
|
+
export declare function geoHitTarget(props: HitTargetPointProps): PointSceneNode;
|
|
56
|
+
export interface GeoAreaHitTargetProps {
|
|
57
|
+
/** SVG path string in plot-relative screen coordinates. */
|
|
58
|
+
pathData: string;
|
|
59
|
+
/** Screen-space centroid for tooltip and focus positioning. */
|
|
60
|
+
centroid: [number, number];
|
|
61
|
+
/** Screen-space bounds as [[x0, y0], [x1, y1]]. */
|
|
62
|
+
bounds: [[number, number], [number, number]];
|
|
63
|
+
/** The raw user datum to surface on hover/click/focus and in the data table. */
|
|
64
|
+
datum: SceneDatum;
|
|
65
|
+
/** Optional series/category key for grouped selection + legend interaction. */
|
|
66
|
+
group?: string;
|
|
67
|
+
/** Screen-space area in px^2. Defaults to the bounding-box area. */
|
|
68
|
+
screenArea?: number;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* A transparent, hit-testable **area** node for a custom geo layout whose
|
|
72
|
+
* visible polygons live in `overlays`. Use this when the semantic mark is not
|
|
73
|
+
* point-like: isometric tiles, schematic regions, hex/cell maps, contour bands,
|
|
74
|
+
* or any hand-built path that should retain GeoFrame hover, keyboard focus,
|
|
75
|
+
* tooltips, accessible rows, and shape-aware canvas hit testing.
|
|
76
|
+
*
|
|
77
|
+
* @example
|
|
78
|
+
* ```ts
|
|
79
|
+
* return geoAreaHitTarget({
|
|
80
|
+
* pathData: diamondPath(x, y, tileWidth, tileHeight),
|
|
81
|
+
* centroid: [x, y],
|
|
82
|
+
* bounds: [[x - tileWidth / 2, y - tileHeight / 2], [x + tileWidth / 2, y + tileHeight / 2]],
|
|
83
|
+
* screenArea: (tileWidth * tileHeight) / 2,
|
|
84
|
+
* datum: tile,
|
|
85
|
+
* group: tile.kind,
|
|
86
|
+
* })
|
|
87
|
+
* ```
|
|
88
|
+
*/
|
|
89
|
+
export declare function geoAreaHitTarget(props: GeoAreaHitTargetProps): GeoAreaSceneNode;
|
|
90
|
+
export interface HitTargetRectProps {
|
|
91
|
+
/** Plot-relative x of the rect's top-left corner. */
|
|
92
|
+
x: number;
|
|
93
|
+
/** Plot-relative y of the rect's top-left corner. */
|
|
94
|
+
y: number;
|
|
95
|
+
/** Rect width in px. */
|
|
96
|
+
width: number;
|
|
97
|
+
/** Rect height in px. */
|
|
98
|
+
height: number;
|
|
99
|
+
/** The raw user datum to surface on hover/click/focus and in the data table. */
|
|
100
|
+
datum: SceneDatum;
|
|
101
|
+
/** Stable identity — used as the transition key, and as `group` for shared
|
|
102
|
+
* selection. (Rect nodes anchor annotations by their center via the
|
|
103
|
+
* point-anchor harvest only on network; for XY/ordinal pair a rect hit area
|
|
104
|
+
* with {@link hitTargetPoint} if you need annotation anchoring.) */
|
|
105
|
+
id?: string | number;
|
|
106
|
+
/** Optional series/category key for grouped selection + legend interaction. */
|
|
107
|
+
group?: string;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* A transparent, hit-testable **rect** node for a custom XY or ordinal layout —
|
|
111
|
+
* the rectangular sibling of {@link hitTargetPoint}, for marks that read as a
|
|
112
|
+
* box (a bar, an interval lane segment, a labelled card). Same free interaction:
|
|
113
|
+
* keyboard nav, focus ring, tooltip/`onObservation`, transition identity.
|
|
114
|
+
*/
|
|
115
|
+
export declare function hitTargetRect(props: HitTargetRectProps): RectSceneNode;
|
|
116
|
+
export interface NetworkHitTargetCircleProps {
|
|
117
|
+
/** Plot-relative x of the mark's center. */
|
|
118
|
+
x: number;
|
|
119
|
+
/** Plot-relative y of the mark's center. */
|
|
120
|
+
y: number;
|
|
121
|
+
/** The raw user datum (the object you passed in `nodes`, typically `node.data`). */
|
|
122
|
+
datum: SceneDatum;
|
|
123
|
+
/** Stable identity — set as the node `id`, which is how a `pointId`-anchored
|
|
124
|
+
* annotation resolves to this mark and how shared selection keys it. */
|
|
125
|
+
id?: string | number;
|
|
126
|
+
/** Hit + keyboard-focus radius in px. @default {@link DEFAULT_HIT_RADIUS} */
|
|
127
|
+
r?: number;
|
|
128
|
+
/** Optional accessible label override for the node. */
|
|
129
|
+
label?: string;
|
|
130
|
+
}
|
|
131
|
+
export interface NetworkHitTargetRectProps {
|
|
132
|
+
/** Plot-relative x of the rect's top-left corner. */
|
|
133
|
+
x: number;
|
|
134
|
+
/** Plot-relative y of the rect's top-left corner. */
|
|
135
|
+
y: number;
|
|
136
|
+
/** Rect width in px. */
|
|
137
|
+
width: number;
|
|
138
|
+
/** Rect height in px. */
|
|
139
|
+
height: number;
|
|
140
|
+
/** The raw user datum (the object you passed in `nodes`, typically `node.data`). */
|
|
141
|
+
datum: SceneDatum;
|
|
142
|
+
/** Stable identity — set as the node `id` for annotation anchoring + selection. */
|
|
143
|
+
id?: string | number;
|
|
144
|
+
/** Optional accessible label override for the node. */
|
|
145
|
+
label?: string;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* A transparent, hit-testable node for a custom **network** layout. Pass `width`
|
|
149
|
+
* + `height` for a rect (a labelled box / card), or omit them for a circle of
|
|
150
|
+
* radius `r`. Every network scene node is harvested as an annotation anchor, so
|
|
151
|
+
* `id` resolves a `{ pointId: id }` annotation to this mark. Inherits the same
|
|
152
|
+
* keyboard nav, focus ring, tooltip/`onObservation`, and shared-selection
|
|
153
|
+
* threading the built-in network charts get.
|
|
154
|
+
*
|
|
155
|
+
* @example
|
|
156
|
+
* ```ts
|
|
157
|
+
* sceneNodes: positioned.map((node) =>
|
|
158
|
+
* networkHitTarget({
|
|
159
|
+
* x: node.x - node.width / 2,
|
|
160
|
+
* y: node.y - node.height / 2,
|
|
161
|
+
* width: node.width,
|
|
162
|
+
* height: node.height,
|
|
163
|
+
* datum: node,
|
|
164
|
+
* id: node.id,
|
|
165
|
+
* })
|
|
166
|
+
* )
|
|
167
|
+
* ```
|
|
168
|
+
*/
|
|
169
|
+
export declare function networkHitTarget(props: NetworkHitTargetRectProps): NetworkRectNode;
|
|
170
|
+
export declare function networkHitTarget(props: NetworkHitTargetCircleProps): NetworkCircleNode;
|
|
@@ -18,7 +18,10 @@ import type { HoverData } from "../realtime/types";
|
|
|
18
18
|
export interface HoverPointerCoords {
|
|
19
19
|
clientX: number;
|
|
20
20
|
clientY: number;
|
|
21
|
+
pointerType?: string;
|
|
21
22
|
}
|
|
23
|
+
export declare const TOUCH_HIT_RADIUS = 24;
|
|
24
|
+
export declare function getPointerHitRadius(baseRadius: number, pointerType?: string): number;
|
|
22
25
|
export declare function normalizeHoverDatum(rawDatum: any): any;
|
|
23
26
|
/**
|
|
24
27
|
* Build a HoverData object from a raw datum and pixel coordinates.
|
|
@@ -20,11 +20,14 @@ export interface NavPoint {
|
|
|
20
20
|
y: number;
|
|
21
21
|
datum: Datum | null;
|
|
22
22
|
/** Shape hint for focus ring rendering */
|
|
23
|
-
shape?: "circle" | "rect" | "wedge";
|
|
23
|
+
shape?: "circle" | "rect" | "wedge" | "geoarea";
|
|
24
24
|
/** Width of rect-shaped elements (bars, sankey nodes) */
|
|
25
25
|
w?: number;
|
|
26
26
|
/** Height of rect-shaped elements */
|
|
27
27
|
h?: number;
|
|
28
|
+
/** SVG path (plot-relative) for a geoarea focus ring — the shape is
|
|
29
|
+
* outlined instead of drawing a circle at the centroid. */
|
|
30
|
+
pathData?: string;
|
|
28
31
|
/** Group identifier for graph navigation (series name, category, node id) */
|
|
29
32
|
group?: string;
|
|
30
33
|
/** Index in NavGraph.flat — set by buildNavGraph for O(1) lookup */
|
|
@@ -1,2 +1,10 @@
|
|
|
1
|
-
import type { NetworkLayoutPlugin } from "../networkTypes";
|
|
1
|
+
import type { NetworkLayoutPlugin, RealtimeNode } from "../networkTypes";
|
|
2
|
+
import type { Datum } from "../../charts/shared/datumTypes";
|
|
2
3
|
export declare const forceLayoutPlugin: NetworkLayoutPlugin;
|
|
4
|
+
/**
|
|
5
|
+
* Build a function that returns a node radius. If `nodeSize` is a number,
|
|
6
|
+
* use it directly. If it is a string accessor, look up `node.data[nodeSize]`
|
|
7
|
+
* and scale the result to `nodeSizeRange`. If it is a function, call it.
|
|
8
|
+
* Falls back to a default radius of 8.
|
|
9
|
+
*/
|
|
10
|
+
export declare function resolveNodeSizeFn(nodeSize: number | string | ((d: Datum) => number) | undefined, nodeSizeRange: [number, number] | undefined, allNodes: RealtimeNode[]): (node: RealtimeNode) => number;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type { GraphEdge, GraphNode, Point } from "../../recipes/networkAnalysis";
|
|
2
|
+
import type { ForceLayoutOptions } from "../../recipes/forceLayout";
|
|
3
|
+
import type { NetworkPipelineConfig, RealtimeEdge, RealtimeNode } from "../networkTypes";
|
|
4
|
+
export type ForceLayoutExecution = "auto" | "worker" | "sync";
|
|
5
|
+
export interface NormalizedForceWorkerRequest {
|
|
6
|
+
kind: "normalized";
|
|
7
|
+
nodes: GraphNode[];
|
|
8
|
+
edges: GraphEdge[];
|
|
9
|
+
options: Omit<ForceLayoutOptions, "nodeRadius">;
|
|
10
|
+
nodeRadii?: Record<string, number>;
|
|
11
|
+
}
|
|
12
|
+
export interface FrameForceWorkerRequest {
|
|
13
|
+
kind: "frame";
|
|
14
|
+
nodes: RealtimeNode[];
|
|
15
|
+
edges: RealtimeEdge[];
|
|
16
|
+
config: {
|
|
17
|
+
chartType: "force";
|
|
18
|
+
iterations?: number;
|
|
19
|
+
forceStrength?: number;
|
|
20
|
+
};
|
|
21
|
+
size: [number, number];
|
|
22
|
+
}
|
|
23
|
+
export type ForceWorkerRequest = NormalizedForceWorkerRequest | FrameForceWorkerRequest;
|
|
24
|
+
export interface ForceWorkerResponse {
|
|
25
|
+
positions: Record<string, Point>;
|
|
26
|
+
}
|
|
27
|
+
export declare const DEFAULT_FORCE_WORKER_THRESHOLD = 40000;
|
|
28
|
+
export declare function shouldUseForceWorker(execution: ForceLayoutExecution, nodeCount: number, edgeCount: number, iterations: number, threshold?: number): boolean;
|
|
29
|
+
export declare function canUseForceWorker(): boolean;
|
|
30
|
+
export declare function createForceLayoutWorker(): Worker;
|
|
31
|
+
export declare function createFrameForceWorkerRequest(nodes: RealtimeNode[], edges: RealtimeEdge[], config: NetworkPipelineConfig, size: [number, number], previousPositions?: Map<string, {
|
|
32
|
+
x: number;
|
|
33
|
+
y: number;
|
|
34
|
+
}> | null): FrameForceWorkerRequest;
|
|
35
|
+
/**
|
|
36
|
+
* Long-lived force-layout worker session. Mirrors PhysicsWorkerSession:
|
|
37
|
+
* one Worker is reused across layouts so module parse + startup cost is
|
|
38
|
+
* paid once per page, not once per graph re-layout.
|
|
39
|
+
*/
|
|
40
|
+
export declare class ForceLayoutWorkerSession {
|
|
41
|
+
private nextRequestId;
|
|
42
|
+
private pending;
|
|
43
|
+
private worker;
|
|
44
|
+
private dead;
|
|
45
|
+
constructor(worker?: Worker);
|
|
46
|
+
get isDead(): boolean;
|
|
47
|
+
request(request: ForceWorkerRequest, signal?: AbortSignal): Promise<ForceWorkerResponse>;
|
|
48
|
+
terminate(): void;
|
|
49
|
+
private rejectAll;
|
|
50
|
+
}
|
|
51
|
+
/** Test helper: drop the shared session so the next call creates a fresh Worker. */
|
|
52
|
+
export declare function _resetSharedForceLayoutSessionForTest(): void;
|
|
53
|
+
/**
|
|
54
|
+
* Run a force layout on a reused worker session.
|
|
55
|
+
* Prefer this over constructing a new Worker per layout.
|
|
56
|
+
*/
|
|
57
|
+
export declare function runForceLayoutWorker(request: ForceWorkerRequest, signal?: AbortSignal): Promise<ForceWorkerResponse>;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { BezierCache, RealtimeEdge, RealtimeNode } from "./networkTypes";
|
|
2
|
+
/** Default cubic control-point curvature (fraction of span). */
|
|
3
|
+
export declare const NETWORK_EDGE_CURVATURE = 0.5;
|
|
4
|
+
export declare function buildStandardBezier(edge: RealtimeEdge, sourceNode: RealtimeNode, targetNode: RealtimeNode, curvature?: number): BezierCache;
|
|
5
|
+
export declare function buildCircularBezier(edge: RealtimeEdge, curvature?: number): BezierCache;
|
|
6
|
+
/**
|
|
7
|
+
* Resolve source/target RealtimeNodes and attach the edge's bezier cache.
|
|
8
|
+
* Returns false if endpoints cannot be resolved.
|
|
9
|
+
*/
|
|
10
|
+
export declare function updateEdgeBezier(edge: RealtimeEdge, nodes: Map<string, RealtimeNode>, curvature?: number): boolean;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { Datum } from "../charts/shared/datumTypes";
|
|
2
|
+
import type { RealtimeEdge, RealtimeNode } from "./networkTypes";
|
|
3
|
+
export declare function resolveNetworkEdgeEndpoint(endpoint: RealtimeNode | string | undefined, nodes: Map<string, RealtimeNode> | undefined): RealtimeNode | null;
|
|
4
|
+
export declare function resolveNetworkNodeColor(options: {
|
|
5
|
+
node: RealtimeNode;
|
|
6
|
+
colorBy?: string | ((node: RealtimeNode) => unknown);
|
|
7
|
+
colorScheme?: string | string[] | Record<string, string>;
|
|
8
|
+
nodeColorMap: Map<string, string>;
|
|
9
|
+
colorIndexRef: {
|
|
10
|
+
current: number;
|
|
11
|
+
};
|
|
12
|
+
}): string;
|
|
13
|
+
export declare function resolveNetworkEdgeColor(options: {
|
|
14
|
+
edge: RealtimeEdge;
|
|
15
|
+
edgeColorBy?: string | ((edge: RealtimeEdge) => string);
|
|
16
|
+
getNodeColor: (node: RealtimeNode) => string;
|
|
17
|
+
resolveEndpoint: (endpoint: RealtimeNode | string | undefined) => RealtimeNode | null;
|
|
18
|
+
fallback: string;
|
|
19
|
+
}): string;
|
|
20
|
+
export declare function resolveNetworkParticleColor(options: {
|
|
21
|
+
edge: RealtimeEdge;
|
|
22
|
+
particleStyleColor?: string | ((edge: RealtimeEdge, node: RealtimeNode) => string);
|
|
23
|
+
particleColorBy?: string;
|
|
24
|
+
hasExplicitParticleColorBy: boolean;
|
|
25
|
+
getEdgeColor: (edge: RealtimeEdge) => string;
|
|
26
|
+
getNodeColor: (node: RealtimeNode) => string;
|
|
27
|
+
resolveEndpoint: (endpoint: RealtimeNode | string | undefined) => RealtimeNode | null;
|
|
28
|
+
fallback: string;
|
|
29
|
+
}): string;
|
|
30
|
+
/** Sync scene fills into the node color map; fill gaps from palette. */
|
|
31
|
+
export declare function syncNetworkNodeColorMap(options: {
|
|
32
|
+
sceneNodes: ReadonlyArray<{
|
|
33
|
+
id?: string;
|
|
34
|
+
style?: {
|
|
35
|
+
fill?: unknown;
|
|
36
|
+
};
|
|
37
|
+
}>;
|
|
38
|
+
nodes: Iterable<RealtimeNode>;
|
|
39
|
+
nodeColorMap: Map<string, string>;
|
|
40
|
+
colorScheme?: string | string[] | Record<string, string>;
|
|
41
|
+
}): number;
|
|
42
|
+
export declare function networkEdgeFallbackColor(theme: {
|
|
43
|
+
colors?: {
|
|
44
|
+
border?: string;
|
|
45
|
+
secondary?: string;
|
|
46
|
+
primary?: string;
|
|
47
|
+
};
|
|
48
|
+
} | null | undefined): string;
|
|
49
|
+
export type { Datum };
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { ReactNode } from "react";
|
|
2
2
|
import type { NetworkSceneNode, NetworkSceneEdge, NetworkLabel, RealtimeNode, RealtimeEdge } from "./networkTypes";
|
|
3
|
-
import type { ThemeSemanticColors } from "./types";
|
|
3
|
+
import type { Style, ThemeSemanticColors } from "./types";
|
|
4
4
|
import type { Datum } from "../charts/shared/datumTypes";
|
|
5
|
+
import type { CustomLayoutSelection } from "./customLayoutSelection";
|
|
5
6
|
/**
|
|
6
7
|
* The shared selection state, projected into the custom-layout context.
|
|
7
8
|
*
|
|
@@ -90,6 +91,43 @@ export interface NetworkLayoutContext<C extends object = Record<string, unknown>
|
|
|
90
91
|
*/
|
|
91
92
|
selection?: NetworkLayoutSelection | null;
|
|
92
93
|
}
|
|
94
|
+
/**
|
|
95
|
+
* An HTML/React node positioned in plot space, rendered into a real DOM layer
|
|
96
|
+
* above the canvas (and above the SVG `overlays`) — **not** an SVG
|
|
97
|
+
* `<foreignObject>`.
|
|
98
|
+
*
|
|
99
|
+
* Reach for this over `overlays` when a mark is text-heavy or a rich component
|
|
100
|
+
* (a labelled card, an Axon widget) **and** it dims/animates on interaction.
|
|
101
|
+
* HTML-in-SVG (`<foreignObject>`) gets no compositor layer, so an `opacity`
|
|
102
|
+
* change — the common hover-dim — re-rasterizes the text; on a large graph that
|
|
103
|
+
* stalls the interaction. A real DOM element composites `opacity` / `transform`
|
|
104
|
+
* / `visibility` without re-painting its contents.
|
|
105
|
+
*
|
|
106
|
+
* The framework owns placement: each mark is wrapped in an absolutely-positioned
|
|
107
|
+
* element that tracks the same margin (and any future zoom/pan) transform the
|
|
108
|
+
* canvas and `overlays` receive, so a mark at `(x, y)` lands exactly where a
|
|
109
|
+
* `sceneNode` at `(x, y)` does. The consumer owns the content's appearance.
|
|
110
|
+
*
|
|
111
|
+
* Marks are non-interactive by default (`pointer-events: none`) — pointer events
|
|
112
|
+
* fall through to the canvas, so existing `sceneNodes` hit-testing
|
|
113
|
+
* (`onObservation` / `onClick`) is unaffected. Emit a transparent hit-rect
|
|
114
|
+
* `sceneNode` per mark to keep the canvas authoritative for interaction.
|
|
115
|
+
*/
|
|
116
|
+
export interface NetworkHtmlMark {
|
|
117
|
+
/** Stable identity for keying / reconciliation across layout runs. A
|
|
118
|
+
* position-only update repositions without remounting the content. */
|
|
119
|
+
id: string;
|
|
120
|
+
/** Top-left x in plot coordinates — the same space as `sceneNodes`. */
|
|
121
|
+
x: number;
|
|
122
|
+
/** Top-left y in plot coordinates — the same space as `sceneNodes`. */
|
|
123
|
+
y: number;
|
|
124
|
+
/** Wrapper width in plot units. */
|
|
125
|
+
width: number;
|
|
126
|
+
/** Wrapper height in plot units. */
|
|
127
|
+
height: number;
|
|
128
|
+
/** Arbitrary HTML/React rendered inside the positioned wrapper. */
|
|
129
|
+
content: ReactNode;
|
|
130
|
+
}
|
|
93
131
|
export interface NetworkLayoutResult {
|
|
94
132
|
/** Positioned scene primitives. Circles, rects, or arcs. */
|
|
95
133
|
sceneNodes?: NetworkSceneNode[];
|
|
@@ -99,4 +137,31 @@ export interface NetworkLayoutResult {
|
|
|
99
137
|
labels?: NetworkLabel[];
|
|
100
138
|
/** SVG overlays composited above the canvas. */
|
|
101
139
|
overlays?: ReactNode;
|
|
140
|
+
/**
|
|
141
|
+
* HTML/React nodes positioned in plot space, rendered into one real DOM layer
|
|
142
|
+
* above the canvas and SVG `overlays`. Use for rich-text / component marks that
|
|
143
|
+
* dim or animate on hover — they composite `opacity`/`transform` changes
|
|
144
|
+
* instead of re-rasterizing text the way an SVG `<foreignObject>` does. The
|
|
145
|
+
* framework owns positioning + transform so marks stay pixel-aligned with
|
|
146
|
+
* `sceneNodes`. Additive: a layout that omits it renders no extra DOM. See
|
|
147
|
+
* {@link NetworkHtmlMark}.
|
|
148
|
+
*/
|
|
149
|
+
htmlMarks?: NetworkHtmlMark[];
|
|
150
|
+
/**
|
|
151
|
+
* **Per-frame restyle of canvas marks, without re-positioning.** When present,
|
|
152
|
+
* a selection/hover change re-applies styles to the existing scene nodes and
|
|
153
|
+
* repaints — it does **not** re-run the layout or rebuild the quadtree. Return
|
|
154
|
+
* a style patch merged onto the node's *base* style (the style it was emitted
|
|
155
|
+
* with); return nothing to leave it unchanged.
|
|
156
|
+
*
|
|
157
|
+
* This is the canvas counterpart to {@link useCustomLayoutSelection} (which
|
|
158
|
+
* restyles `overlays`): compute geometry once in the layout body, and express
|
|
159
|
+
* selection-driven dimming/highlighting here so hover stays O(nodes) paint
|
|
160
|
+
* instead of O(nodes+edges) relayout. Providing it opts the chart into the
|
|
161
|
+
* cheap selection path; omit it and selection changes re-run the layout (the
|
|
162
|
+
* pre-existing behavior).
|
|
163
|
+
*/
|
|
164
|
+
restyle?: (node: NetworkSceneNode, selection: CustomLayoutSelection | null) => Partial<Style> | void;
|
|
165
|
+
/** Per-frame restyle of edges — same contract as {@link NetworkLayoutResult.restyle}. */
|
|
166
|
+
restyleEdge?: (edge: NetworkSceneEdge, selection: CustomLayoutSelection | null) => Partial<Style> | void;
|
|
102
167
|
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default network hover tooltip for StreamNetworkFrame.
|
|
3
|
+
* Uses shared `defaultTooltipStyle` for theme CSS-var consistency.
|
|
4
|
+
*/
|
|
5
|
+
import * as React from "react";
|
|
6
|
+
import type { HoverData } from "../realtime/types";
|
|
7
|
+
declare function DefaultNetworkTooltip({ data }: {
|
|
8
|
+
data: HoverData;
|
|
9
|
+
}): React.JSX.Element | null;
|
|
10
|
+
export { DefaultNetworkTooltip };
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pointer hit-testing helpers for StreamNetworkFrame hover/click.
|
|
3
|
+
* Returns a structured result so the frame owns React setState.
|
|
4
|
+
*/
|
|
5
|
+
import type { HoverData } from "../realtime/types";
|
|
6
|
+
import { type HoverPointerCoords } from "./hoverUtils";
|
|
7
|
+
import type { NetworkSceneEdge, NetworkSceneNode } from "./networkTypes";
|
|
8
|
+
import type { Quadtree } from "d3-quadtree";
|
|
9
|
+
import type { NetworkCircleNode } from "./networkTypes";
|
|
10
|
+
export type NetworkPointerHit = {
|
|
11
|
+
kind: "miss-outside";
|
|
12
|
+
} | {
|
|
13
|
+
kind: "miss";
|
|
14
|
+
} | {
|
|
15
|
+
kind: "hit";
|
|
16
|
+
hover: HoverData;
|
|
17
|
+
};
|
|
18
|
+
export declare function resolveNetworkPointerHit(options: {
|
|
19
|
+
clientX: number;
|
|
20
|
+
clientY: number;
|
|
21
|
+
canvasRect: DOMRect;
|
|
22
|
+
margin: {
|
|
23
|
+
left: number;
|
|
24
|
+
top: number;
|
|
25
|
+
};
|
|
26
|
+
adjustedWidth: number;
|
|
27
|
+
adjustedHeight: number;
|
|
28
|
+
sceneNodes: NetworkSceneNode[];
|
|
29
|
+
sceneEdges: NetworkSceneEdge[];
|
|
30
|
+
nodeQuadtree: Quadtree<NetworkCircleNode> | null;
|
|
31
|
+
maxNodeRadius: number;
|
|
32
|
+
hitRadius?: number;
|
|
33
|
+
}): NetworkPointerHit;
|
|
34
|
+
export declare function pointerFromMouseEvent(e: {
|
|
35
|
+
clientX: number;
|
|
36
|
+
clientY: number;
|
|
37
|
+
}): HoverPointerCoords;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { NetworkPipelineStore } from "./NetworkPipelineStore";
|
|
2
|
+
import type { NetworkPipelineConfig, ParticleStyle, RealtimeEdge } from "./networkTypes";
|
|
3
|
+
import type { MarginType } from "../types/marginType";
|
|
4
|
+
import type { DecayConfig, PulseConfig, StalenessConfig } from "./types";
|
|
5
|
+
export interface NetworkFramePaintContext {
|
|
6
|
+
canvas: HTMLCanvasElement;
|
|
7
|
+
store: NetworkPipelineStore;
|
|
8
|
+
size: [number, number];
|
|
9
|
+
margin: MarginType;
|
|
10
|
+
adjustedWidth: number;
|
|
11
|
+
adjustedHeight: number;
|
|
12
|
+
background?: string;
|
|
13
|
+
dirtyRef: {
|
|
14
|
+
current: boolean;
|
|
15
|
+
};
|
|
16
|
+
lastFrameTimeRef: {
|
|
17
|
+
current: number;
|
|
18
|
+
};
|
|
19
|
+
reducedMotion: boolean;
|
|
20
|
+
showParticles: boolean;
|
|
21
|
+
isContinuous: boolean;
|
|
22
|
+
/** Truthy animate (boolean or config object) enables topology-diff pulses. */
|
|
23
|
+
animate: unknown;
|
|
24
|
+
decay?: DecayConfig;
|
|
25
|
+
pulse?: PulseConfig;
|
|
26
|
+
thresholds?: NetworkPipelineConfig["thresholds"];
|
|
27
|
+
staleness?: StalenessConfig;
|
|
28
|
+
particleStyle: ParticleStyle;
|
|
29
|
+
getParticleColor: (edge: RealtimeEdge, node?: unknown) => string;
|
|
30
|
+
pendingAnnotationFrameRef: {
|
|
31
|
+
current: boolean;
|
|
32
|
+
};
|
|
33
|
+
lastAnnotationFrameTimeRef: {
|
|
34
|
+
current: number;
|
|
35
|
+
};
|
|
36
|
+
setAnnotationFrame: (updater: (f: number) => number) => void;
|
|
37
|
+
scheduleNextFrame: () => void;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Run one paint tick. Returns whether another rAF should be scheduled
|
|
41
|
+
* (also invoked via scheduleNextFrame for continuous modes).
|
|
42
|
+
*/
|
|
43
|
+
export declare function paintNetworkFrame(ctx: NetworkFramePaintContext): void;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build NetworkPipelineConfig from StreamNetworkFrame props + theme.
|
|
3
|
+
* Keeps the large useMemo payload out of the React component file.
|
|
4
|
+
*/
|
|
5
|
+
import type { SemioticTheme } from "../store/ThemeStore";
|
|
6
|
+
import type { NetworkPipelineConfig } from "./networkTypes";
|
|
7
|
+
import type { StreamNetworkFrameProps } from "./networkTypes";
|
|
8
|
+
export type NetworkPipelineConfigSources = Pick<StreamNetworkFrameProps, "chartType" | "nodeIDAccessor" | "sourceAccessor" | "targetAccessor" | "valueAccessor" | "edgeIdAccessor" | "childrenAccessor" | "hierarchySum" | "orientation" | "nodeAlign" | "nodePaddingRatio" | "nodeWidth" | "iterations" | "forceStrength" | "padAngle" | "groupWidth" | "sortGroups" | "edgeSort" | "treeOrientation" | "edgeType" | "padding" | "paddingTop" | "nodeStyle" | "edgeStyle" | "nodeLabel" | "showLabels" | "labelMode" | "colorBy" | "colorScheme" | "edgeColorBy" | "edgeOpacity" | "colorByDepth" | "nodeSize" | "nodeSizeRange" | "decay" | "pulse" | "transition" | "staleness" | "thresholds" | "orbitMode" | "orbitSize" | "orbitSpeed" | "orbitRevolution" | "orbitRevolutionStyle" | "orbitEccentricity" | "orbitShowRings" | "orbitAnimated" | "customNetworkLayout" | "onLayoutError" | "layoutConfig"> & {
|
|
9
|
+
tensionConfig: NetworkPipelineConfig["tensionConfig"];
|
|
10
|
+
showParticles: boolean;
|
|
11
|
+
particleStyle: NetworkPipelineConfig["particleStyle"];
|
|
12
|
+
introAnimation: boolean;
|
|
13
|
+
currentTheme: SemioticTheme | null | undefined;
|
|
14
|
+
};
|
|
15
|
+
export declare function buildNetworkPipelineConfig(sources: NetworkPipelineConfigSources): NetworkPipelineConfig;
|
|
16
|
+
/** Fields that force re-ingest / re-layout when changed. */
|
|
17
|
+
export type NetworkLayoutConfigSignature = Pick<NetworkPipelineConfigSources, "chartType" | "nodeIDAccessor" | "sourceAccessor" | "targetAccessor" | "valueAccessor" | "edgeIdAccessor" | "childrenAccessor" | "hierarchySum" | "orientation" | "nodeAlign" | "nodePaddingRatio" | "nodeWidth" | "iterations" | "forceStrength" | "padAngle" | "groupWidth" | "sortGroups" | "edgeSort" | "treeOrientation" | "edgeType" | "padding" | "paddingTop" | "tensionConfig" | "customNetworkLayout"> & {
|
|
18
|
+
orbitMode?: NetworkPipelineConfigSources["orbitMode"];
|
|
19
|
+
orbitSize?: NetworkPipelineConfigSources["orbitSize"];
|
|
20
|
+
orbitEccentricity?: NetworkPipelineConfigSources["orbitEccentricity"];
|
|
21
|
+
};
|
|
22
|
+
export declare function buildNetworkLayoutConfigSignature(sources: NetworkLayoutConfigSignature): Record<string, unknown>;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Network pipeline pure helpers (node factory + bezier cache validation).
|
|
3
|
+
*/
|
|
4
|
+
import type { RealtimeNode, BezierCache } from "./networkTypes";
|
|
5
|
+
export declare function createNode(id: string): RealtimeNode;
|
|
6
|
+
/** Validate a value matches the `BezierCache` shape before assigning it
|
|
7
|
+
* to a `RealtimeEdge`. The particle pipeline reads
|
|
8
|
+
* `edge.bezier.points[i].x` etc. unguarded — a malformed bezier
|
|
9
|
+
* (e.g. `bezier: true`, missing points, non-finite coords) would
|
|
10
|
+
* crash the canvas frame loop. */
|
|
11
|
+
export declare function isValidBezierCache(value: unknown): value is BezierCache;
|
|
12
|
+
export declare function isFourFinitePoints(pts: unknown): boolean;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { NetworkSceneEdge, NetworkSceneNode, RealtimeNode } from "./networkTypes";
|
|
2
|
+
import type { DecayConfig, PulseConfig } from "./types";
|
|
3
|
+
import type { NetworkPipelineConfig } from "./networkTypes";
|
|
4
|
+
export type NetworkTimestampMap = Map<string, number>;
|
|
5
|
+
export declare function applyNetworkPulse(options: {
|
|
6
|
+
sceneNodes: NetworkSceneNode[];
|
|
7
|
+
sceneEdges: NetworkSceneEdge[];
|
|
8
|
+
nodeTimestamps: NetworkTimestampMap;
|
|
9
|
+
edgeTimestamps: NetworkTimestampMap;
|
|
10
|
+
pulse: PulseConfig | undefined;
|
|
11
|
+
now: number;
|
|
12
|
+
}): void;
|
|
13
|
+
export interface NetworkDecayCache {
|
|
14
|
+
sortedNodes: [string, number][] | null;
|
|
15
|
+
ageMap: Map<string, number> | null;
|
|
16
|
+
}
|
|
17
|
+
export declare function applyNetworkDecay(options: {
|
|
18
|
+
sceneNodes: NetworkSceneNode[];
|
|
19
|
+
nodeTimestamps: NetworkTimestampMap;
|
|
20
|
+
decay: DecayConfig | undefined;
|
|
21
|
+
cache: NetworkDecayCache;
|
|
22
|
+
}): void;
|
|
23
|
+
export declare function applyNetworkTopologyDiff(options: {
|
|
24
|
+
sceneNodes: NetworkSceneNode[];
|
|
25
|
+
addedNodes: Set<string>;
|
|
26
|
+
lastTopologyChangeTime: number;
|
|
27
|
+
now: number;
|
|
28
|
+
}): void;
|
|
29
|
+
export declare function hasActiveNetworkTopologyDiff(addedNodes: Set<string>, lastTopologyChangeTime: number, now?: number): boolean;
|
|
30
|
+
export declare function applyNetworkThresholds(options: {
|
|
31
|
+
sceneNodes: NetworkSceneNode[];
|
|
32
|
+
nodes: Map<string, RealtimeNode>;
|
|
33
|
+
thresholds: NetworkPipelineConfig["thresholds"];
|
|
34
|
+
now: number;
|
|
35
|
+
}): void;
|
|
36
|
+
export declare function hasActiveNetworkThresholds(nodes: Iterable<RealtimeNode>, thresholds: NetworkPipelineConfig["thresholds"]): boolean;
|
|
37
|
+
export declare function hasActiveNetworkPulses(options: {
|
|
38
|
+
pulse: PulseConfig | undefined;
|
|
39
|
+
lastIngestTime: number;
|
|
40
|
+
now?: number;
|
|
41
|
+
}): boolean;
|