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,14 @@
|
|
|
1
|
+
import type { PhysicsEngineAdapter } from "./PhysicsEngineAdapter";
|
|
2
|
+
import type { PhysicsKernelEvent } from "./PhysicsKernel";
|
|
3
|
+
import type { PhysicsObservationEvent, PhysicsSimulationState } from "./PhysicsPipelineTypes";
|
|
4
|
+
import { type NormalizedObservationConfig } from "./physicsPipelineHelpers";
|
|
5
|
+
export interface PhysicsObservationContext {
|
|
6
|
+
elapsedSeconds: number;
|
|
7
|
+
observation: NormalizedObservationConfig;
|
|
8
|
+
emit: (event: PhysicsObservationEvent) => void;
|
|
9
|
+
}
|
|
10
|
+
export declare function observePhysicsKernelEvents(world: PhysicsEngineAdapter, events: PhysicsKernelEvent[], context: PhysicsObservationContext): void;
|
|
11
|
+
export declare function observePhysicsSensorTransitions(world: PhysicsEngineAdapter, previousPairs: ReadonlySet<string>, context: PhysicsObservationContext): Set<string>;
|
|
12
|
+
export declare function removePhysicsSensorPairsForBodies(pairs: Set<string>, bodyIds: ReadonlySet<string>): void;
|
|
13
|
+
export declare function resolvePhysicsSimulationState(paused: boolean, visible: boolean, hasQueuedBodies: boolean, allSleeping: boolean): PhysicsSimulationState;
|
|
14
|
+
export declare function emitPhysicsSimulationStateTransition(previous: PhysicsSimulationState, next: PhysicsSimulationState, context: PhysicsObservationContext): void;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { PhysicsKernelOptions } from "./PhysicsKernel";
|
|
2
|
+
import type { PhysicsPipelineConfig } from "./PhysicsPipelineTypes";
|
|
3
|
+
import type { Invalidation } from "../pipelineUpdateContract";
|
|
4
|
+
export declare const PHYSICS_BODY_INVALIDATIONS: readonly Invalidation[];
|
|
5
|
+
export declare const PHYSICS_MOTION_INVALIDATIONS: readonly Invalidation[];
|
|
6
|
+
export declare const PHYSICS_CONFIG_INVALIDATIONS: readonly Invalidation[];
|
|
7
|
+
export declare const PHYSICS_STATE_INVALIDATIONS: readonly Invalidation[];
|
|
8
|
+
export declare function physicsKernelOptionsEqual(a: PhysicsKernelOptions | undefined, b: PhysicsKernelOptions | undefined): boolean;
|
|
9
|
+
export declare function changedPhysicsConfigKeys(config: PhysicsPipelineConfig, previous: PhysicsPipelineConfig): string[];
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Region effect application, body forces, and post-tick pipeline for
|
|
3
|
+
* StreamPhysicsFrame. Pure control-surface helpers — no React.
|
|
4
|
+
*/
|
|
5
|
+
import type { Style } from "../types";
|
|
6
|
+
import type { PhysicsBodyState, PhysicsColliderSpec } from "./PhysicsKernel";
|
|
7
|
+
import type { PhysicsPipelineControlSurface, PhysicsPipelineStore, PhysicsPipelineTickResult, PhysicsSimulationState } from "./PhysicsPipelineStore";
|
|
8
|
+
import { composePhysicsControllers } from "./PhysicsControllers";
|
|
9
|
+
import type { PhysicsBodySelection, StreamPhysicsBodyForce, StreamPhysicsBodyForceContext, StreamPhysicsBodyRegionState, StreamPhysicsRegionEffect, StreamPhysicsRegionEffectContext, StreamPhysicsRegionVector, PhysicsSemanticItem, StreamPhysicsFrameProps } from "./StreamPhysicsTypes";
|
|
10
|
+
/** Internal region bookkeeping (Sets for O(1) membership). */
|
|
11
|
+
export interface InternalStreamPhysicsBodyRegionState {
|
|
12
|
+
activeRegionIds: Set<string>;
|
|
13
|
+
regionIds: Set<string>;
|
|
14
|
+
charges: Record<string, unknown>;
|
|
15
|
+
attributes: Record<string, unknown>;
|
|
16
|
+
energy: number;
|
|
17
|
+
}
|
|
18
|
+
export declare function isSelected(body: PhysicsBodyState, selection: PhysicsBodySelection | null | undefined): boolean;
|
|
19
|
+
export declare function regionSensorId(region: StreamPhysicsRegionEffect): string;
|
|
20
|
+
export declare function regionBoundaryColliders(region: StreamPhysicsRegionEffect): PhysicsColliderSpec[];
|
|
21
|
+
export declare function publicRegionState(state: InternalStreamPhysicsBodyRegionState | undefined): StreamPhysicsBodyRegionState | undefined;
|
|
22
|
+
export declare function cloneRegionStateSnapshot(state: Map<string, InternalStreamPhysicsBodyRegionState>): Record<string, StreamPhysicsBodyRegionState>;
|
|
23
|
+
export declare function ensureInternalRegionState(state: Map<string, InternalStreamPhysicsBodyRegionState>, bodyId: string): InternalStreamPhysicsBodyRegionState;
|
|
24
|
+
export declare function resolveRegionVector(vector: StreamPhysicsRegionVector | ((context: StreamPhysicsRegionEffectContext) => StreamPhysicsRegionVector | null | undefined) | undefined, context: StreamPhysicsRegionEffectContext): StreamPhysicsRegionVector | null;
|
|
25
|
+
export declare function mergeRegionAttributes(region: StreamPhysicsRegionEffect, context: StreamPhysicsRegionEffectContext, state: InternalStreamPhysicsBodyRegionState): void;
|
|
26
|
+
export declare function resolveRegionCharge(region: StreamPhysicsRegionEffect, context: StreamPhysicsRegionEffectContext): unknown;
|
|
27
|
+
export declare function regionToSemanticItem(region: StreamPhysicsRegionEffect): PhysicsSemanticItem | null;
|
|
28
|
+
export declare function regionRuntimeEffectsRequireSync(regionEffects: readonly StreamPhysicsRegionEffect[]): boolean;
|
|
29
|
+
export declare function applyActiveRegionEffects(controls: PhysicsPipelineControlSurface, regionEffects: readonly StreamPhysicsRegionEffect[], regionState: Map<string, InternalStreamPhysicsBodyRegionState>, dtSeconds: number): boolean;
|
|
30
|
+
export declare function resolveBodyForceVector(force: StreamPhysicsBodyForce | undefined, context: StreamPhysicsBodyForceContext): StreamPhysicsRegionVector | null;
|
|
31
|
+
export declare function applyBodyForces(controls: PhysicsPipelineControlSurface, bodyForces: StreamPhysicsBodyForce | undefined, regionEffects: readonly StreamPhysicsRegionEffect[], regionState: Map<string, InternalStreamPhysicsBodyRegionState>, simulationState: PhysicsSimulationState, dtSeconds: number): boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Shared post-tick pipeline: region forces → body forces → controllers → onTick.
|
|
34
|
+
* Used by the main RAF path and the worker-fallback path (DRY + one snapshot).
|
|
35
|
+
*/
|
|
36
|
+
export declare function runPhysicsPostTick(options: {
|
|
37
|
+
store: PhysicsPipelineStore;
|
|
38
|
+
result: PhysicsPipelineTickResult;
|
|
39
|
+
regionEffects: readonly StreamPhysicsRegionEffect[];
|
|
40
|
+
regionState: Map<string, InternalStreamPhysicsBodyRegionState>;
|
|
41
|
+
bodyForces: StreamPhysicsBodyForce | undefined;
|
|
42
|
+
composed: ReturnType<typeof composePhysicsControllers>;
|
|
43
|
+
onTick?: (result: PhysicsPipelineTickResult, controls: PhysicsPipelineControlSurface) => void;
|
|
44
|
+
}): {
|
|
45
|
+
regionEffectsApplied: boolean;
|
|
46
|
+
bodyForcesApplied: boolean;
|
|
47
|
+
snapshot: ReturnType<PhysicsPipelineStore["snapshot"]>;
|
|
48
|
+
};
|
|
49
|
+
export declare function resolveStyle(body: PhysicsBodyState, simulationState: PhysicsSimulationState, bodyStyle: StreamPhysicsFrameProps["bodyStyle"], selectedBodyStyle: StreamPhysicsFrameProps["selectedBodyStyle"], selection: StreamPhysicsFrameProps["selection"], regionState: StreamPhysicsBodyRegionState | undefined, activeRegions: StreamPhysicsRegionEffect[], fallbackFill: string, fallbackStroke: string, primitives?: {
|
|
50
|
+
color?: string;
|
|
51
|
+
stroke?: string;
|
|
52
|
+
strokeWidth?: number;
|
|
53
|
+
opacity?: number;
|
|
54
|
+
}): Style;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Physics frame semantic items, default tooltip, and accessible data table.
|
|
3
|
+
*/
|
|
4
|
+
import * as React from "react";
|
|
5
|
+
import type { PhysicsBodyState } from "./PhysicsKernel";
|
|
6
|
+
import type { PhysicsSimulationState } from "./PhysicsPipelineStore";
|
|
7
|
+
import type { PhysicsHoverData, PhysicsSemanticItem, StreamPhysicsFrameProps } from "./StreamPhysicsTypes";
|
|
8
|
+
export declare const SR_ONLY_STYLE: React.CSSProperties;
|
|
9
|
+
declare function physicsHoverData(body: PhysicsBodyState): PhysicsHoverData;
|
|
10
|
+
declare function createBodySemanticItems(bodies: readonly PhysicsBodyState[], simulationState: PhysicsSimulationState, bodySemanticItems: StreamPhysicsFrameProps["bodySemanticItems"], limit: number): PhysicsSemanticItem[];
|
|
11
|
+
declare function semanticItemsChanged(previous: readonly PhysicsSemanticItem[], next: readonly PhysicsSemanticItem[]): boolean;
|
|
12
|
+
declare function DefaultPhysicsTooltip({ hover }: {
|
|
13
|
+
hover: PhysicsHoverData;
|
|
14
|
+
}): React.ReactElement;
|
|
15
|
+
declare function PhysicsSemanticDataTable(props: {
|
|
16
|
+
chartTitle?: string;
|
|
17
|
+
items: readonly PhysicsSemanticItem[];
|
|
18
|
+
tableId: string;
|
|
19
|
+
}): React.ReactElement;
|
|
20
|
+
export { physicsHoverData, createBodySemanticItems, semanticItemsChanged, DefaultPhysicsTooltip, PhysicsSemanticDataTable };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type MutableRefObject, type RefObject } from "react";
|
|
2
|
+
import type { PhysicsPipelineStore } from "./PhysicsPipelineStore";
|
|
3
|
+
import type { PhysicsWorkerCommand } from "./PhysicsWorkerProtocol";
|
|
4
|
+
export declare function isPhysicsDocumentVisible(): boolean;
|
|
5
|
+
interface PhysicsFrameLifecyclePolicyInput {
|
|
6
|
+
cancelRender: () => void;
|
|
7
|
+
lastFrameTimeRef: MutableRefObject<number | null>;
|
|
8
|
+
paused: boolean;
|
|
9
|
+
postWorkerCommand: (command: PhysicsWorkerCommand, notifyTick?: boolean) => void;
|
|
10
|
+
requestRender: () => void;
|
|
11
|
+
storeRef: RefObject<PhysicsPipelineStore | null>;
|
|
12
|
+
suspendWhenHidden: boolean;
|
|
13
|
+
}
|
|
14
|
+
/** Keep pause and page-visibility scheduling policy consistent for physics frames. */
|
|
15
|
+
export declare function usePhysicsFrameLifecyclePolicy({ cancelRender, lastFrameTimeRef, paused, postWorkerCommand, requestRender, storeRef, suspendWhenHidden }: PhysicsFrameLifecyclePolicyInput): void;
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { RingBuffer } from "../realtime/RingBuffer";
|
|
2
|
+
/**
|
|
3
|
+
* Resize a data buffer and its optional timestamp companion to fit a bounded
|
|
4
|
+
* replacement dataset. Keeps timestamp/data indices aligned for pulse logic.
|
|
5
|
+
*/
|
|
6
|
+
export declare function ensureRingBufferCapacity<T>(buffer: RingBuffer<T>, targetSize: number, timestampBuffer?: RingBuffer<number> | null): void;
|
|
7
|
+
/**
|
|
8
|
+
* Create a timestamp companion for data that predates pulse tracking.
|
|
9
|
+
*
|
|
10
|
+
* A pulse buffer is indexed in lockstep with the datum buffer. When pulse is
|
|
11
|
+
* enabled after mount, an empty companion would make the next inserted datum
|
|
12
|
+
* line up with the *oldest* retained datum. Seed every retained row at the
|
|
13
|
+
* activation time instead, so the two rings start aligned and the newly
|
|
14
|
+
* enabled encoding has a coherent first frame.
|
|
15
|
+
*/
|
|
16
|
+
export declare function createTimestampBufferForData<T>(buffer: RingBuffer<T>, timestamp: number): RingBuffer<number>;
|
|
17
|
+
/**
|
|
18
|
+
* Push a datum and its ingest timestamp in lockstep. Returns any evicted datum
|
|
19
|
+
* from the data buffer so callers can update extents/categories.
|
|
20
|
+
*/
|
|
21
|
+
export declare function pushWithTimestamp<T>(buffer: RingBuffer<T>, datum: T, timestampBuffer: RingBuffer<number> | null | undefined, timestamp: number): T | undefined;
|
|
22
|
+
/**
|
|
23
|
+
* Compact a timestamp ring buffer before removing matching rows from the data
|
|
24
|
+
* ring buffer. The predicate must be the same one passed to `buffer.remove()`.
|
|
25
|
+
*/
|
|
26
|
+
export declare function compactTimestampBufferForRemoval<T>(buffer: RingBuffer<T>, timestampBuffer: RingBuffer<number> | null | undefined, predicate: (item: T) => boolean): void;
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PipelineStore configuration types + growing-window capacity constants.
|
|
3
|
+
*/
|
|
4
|
+
import type { Datum } from "../charts/shared/datumTypes";
|
|
5
|
+
import type { StreamChartType, ArrowOfTime, WindowMode, DecayConfig, PulseConfig, TransitionConfig, StalenessConfig, CurveType, BarStyle, ThemeSemanticColors, BandConfig, CandlestickStyle, Style } from "./types";
|
|
6
|
+
import type { SymbolName } from "./symbolPath";
|
|
7
|
+
import type { CoercibleNumber } from "./accessorUtils";
|
|
8
|
+
import type { CustomLayout } from "./customLayout";
|
|
9
|
+
import type { CustomLayoutSelection } from "./customLayoutSelection";
|
|
10
|
+
import type { MarginType } from "../types/marginType";
|
|
11
|
+
export interface PipelineConfig {
|
|
12
|
+
chartType: StreamChartType;
|
|
13
|
+
runtimeMode?: "streaming" | "bounded";
|
|
14
|
+
windowSize: number;
|
|
15
|
+
windowMode: WindowMode;
|
|
16
|
+
arrowOfTime: ArrowOfTime;
|
|
17
|
+
extentPadding: number;
|
|
18
|
+
/** Pixel inset on scale ranges to prevent glyph clipping at chart edges. Default 0. */
|
|
19
|
+
scalePadding?: number;
|
|
20
|
+
/** When `"exact"`, the x and y axis domains pin to the literal data
|
|
21
|
+
* min/max — `extentPadding` is skipped so the first and last ticks
|
|
22
|
+
* read as the actual data bounds. Default `"nice"` keeps the existing
|
|
23
|
+
* padded domain so glyphs at the extremes don't clip the plot edge. */
|
|
24
|
+
axisExtent?: import("../charts/shared/axisExtent").AxisExtentMode;
|
|
25
|
+
/**
|
|
26
|
+
* Hard cap for `windowMode: "growing"`. Defaults to
|
|
27
|
+
* {@link DEFAULT_GROWING_MAX_CAPACITY} (100_000). Canvas scene graphs
|
|
28
|
+
* degrade well before the previous 1e6 ceiling; pass a higher value
|
|
29
|
+
* only when you know the host can afford it.
|
|
30
|
+
*/
|
|
31
|
+
maxCapacity?: number;
|
|
32
|
+
xAccessor?: string | ((d: Datum) => CoercibleNumber);
|
|
33
|
+
yAccessor?: string | ((d: Datum) => CoercibleNumber);
|
|
34
|
+
timeAccessor?: string | ((d: Datum) => CoercibleNumber);
|
|
35
|
+
valueAccessor?: string | ((d: Datum) => CoercibleNumber);
|
|
36
|
+
colorAccessor?: string | ((d: Datum) => string);
|
|
37
|
+
sizeAccessor?: string | ((d: Datum) => CoercibleNumber);
|
|
38
|
+
/** Categorical accessor → glyph shape (scatter/bubble). Emits SymbolSceneNodes. */
|
|
39
|
+
symbolAccessor?: string | ((d: Datum) => string);
|
|
40
|
+
/** Explicit `{category → shape}` map; unmapped categories auto-assign. */
|
|
41
|
+
symbolMap?: Record<string, SymbolName>;
|
|
42
|
+
groupAccessor?: string | ((d: Datum) => string);
|
|
43
|
+
categoryAccessor?: string | ((d: Datum) => string);
|
|
44
|
+
lineDataAccessor?: string;
|
|
45
|
+
/**
|
|
46
|
+
* Escape hatch for the unusual case where a *stable* function accessor's
|
|
47
|
+
* captured semantics change without its identity changing (e.g. a
|
|
48
|
+
* `useCallback([])`-memoized closure that reads external mutable state).
|
|
49
|
+
* Accessor equality is identity-based, so such a change is invisible to the
|
|
50
|
+
* store. Bump this number to force the store to re-derive domains and rebuild
|
|
51
|
+
* the scene against the current accessor. Prefer changing the accessor
|
|
52
|
+
* identity (add the captured value to the `useCallback` dependency array);
|
|
53
|
+
* reach for `accessorRevision` only when you cannot. */
|
|
54
|
+
accessorRevision?: number;
|
|
55
|
+
xScaleType?: "linear" | "log" | "time";
|
|
56
|
+
yScaleType?: "linear" | "log" | "symlog";
|
|
57
|
+
xExtent?: [number | undefined, number | undefined] | [number];
|
|
58
|
+
yExtent?: [number | undefined, number | undefined] | [number];
|
|
59
|
+
sizeRange?: [number, number];
|
|
60
|
+
binSize?: number;
|
|
61
|
+
normalize?: boolean;
|
|
62
|
+
/** Stacked area baseline mode. Only consulted by stackedarea chart type. */
|
|
63
|
+
baseline?: "zero" | "wiggle" | "silhouette" | "diverging";
|
|
64
|
+
/** Stack order — see StreamXYFrameProps.stackOrder. */
|
|
65
|
+
stackOrder?: "key" | "input" | "insideOut" | "asc" | "desc";
|
|
66
|
+
openAccessor?: string | ((d: Datum) => CoercibleNumber);
|
|
67
|
+
highAccessor?: string | ((d: Datum) => CoercibleNumber);
|
|
68
|
+
lowAccessor?: string | ((d: Datum) => CoercibleNumber);
|
|
69
|
+
closeAccessor?: string | ((d: Datum) => CoercibleNumber);
|
|
70
|
+
candlestickStyle?: CandlestickStyle;
|
|
71
|
+
/** Internal: set by PipelineStore when open/close accessors are both missing */
|
|
72
|
+
candlestickRangeMode?: boolean;
|
|
73
|
+
boundsAccessor?: string | ((d: Datum) => CoercibleNumber);
|
|
74
|
+
boundsStyle?: any;
|
|
75
|
+
y0Accessor?: string | ((d: Datum) => CoercibleNumber);
|
|
76
|
+
band?: BandConfig | BandConfig[];
|
|
77
|
+
gradientFill?: {
|
|
78
|
+
topOpacity: number;
|
|
79
|
+
bottomOpacity: number;
|
|
80
|
+
} | {
|
|
81
|
+
colorStops: Array<{
|
|
82
|
+
offset: number;
|
|
83
|
+
color: string;
|
|
84
|
+
}>;
|
|
85
|
+
};
|
|
86
|
+
areaGroups?: Set<string>;
|
|
87
|
+
lineGradient?: {
|
|
88
|
+
colorStops: Array<{
|
|
89
|
+
offset: number;
|
|
90
|
+
color: string;
|
|
91
|
+
}>;
|
|
92
|
+
};
|
|
93
|
+
lineStyle?: any;
|
|
94
|
+
pointStyle?: (d: Datum) => Style & {
|
|
95
|
+
r?: number;
|
|
96
|
+
};
|
|
97
|
+
areaStyle?: (d: Datum) => Style;
|
|
98
|
+
swarmStyle?: {
|
|
99
|
+
radius?: number;
|
|
100
|
+
fill?: string;
|
|
101
|
+
opacity?: number;
|
|
102
|
+
stroke?: string;
|
|
103
|
+
strokeWidth?: number;
|
|
104
|
+
};
|
|
105
|
+
waterfallStyle?: {
|
|
106
|
+
positiveColor?: string;
|
|
107
|
+
negativeColor?: string;
|
|
108
|
+
connectorStroke?: string;
|
|
109
|
+
connectorWidth?: number;
|
|
110
|
+
gap?: number;
|
|
111
|
+
stroke?: string;
|
|
112
|
+
strokeWidth?: number;
|
|
113
|
+
};
|
|
114
|
+
colorScheme?: string | string[] | Record<string, string>;
|
|
115
|
+
/** Theme categorical palette — used as fallback when colorScheme is not an explicit array */
|
|
116
|
+
themeCategorical?: string[];
|
|
117
|
+
/**
|
|
118
|
+
* Theme-resolved semantic role colors. Scene builders use these as the
|
|
119
|
+
* default before falling back to hardcoded hex. Populated by the Stream
|
|
120
|
+
* Frame from the in-memory `SemioticTheme.colors` object at render time
|
|
121
|
+
* — the values are concrete hex (or whatever the preset declares), not
|
|
122
|
+
* `var(...)` strings, and so this channel does NOT participate in the
|
|
123
|
+
* DOM CSS cascade. Changing the ambient theme (`<ThemeProvider>`) or
|
|
124
|
+
* swapping to a nested provider is how you override these values.
|
|
125
|
+
*
|
|
126
|
+
* Per-scope overrides via CSS custom properties
|
|
127
|
+
* (e.g. `<div style={{ "--semiotic-danger": "#c00" }}>`) work only for
|
|
128
|
+
* values a user explicitly passes through as `var(--...)` strings in
|
|
129
|
+
* chart props — those are resolved via `getComputedStyle` in the
|
|
130
|
+
* canvas renderer at paint time (see `resolveCSSColor.ts`). The theme
|
|
131
|
+
* defaults in this field don't read CSS.
|
|
132
|
+
*/
|
|
133
|
+
themeSemantic?: ThemeSemanticColors;
|
|
134
|
+
/** Theme sequential scheme name (e.g. "blues") — fallback when `colorScheme` is not explicitly set for magnitude encodings (heatmap, choropleth, size). */
|
|
135
|
+
themeSequential?: string;
|
|
136
|
+
/** Theme diverging scheme name (e.g. "RdBu") — fallback when `colorScheme` is not explicitly set for midpoint encodings (likert, bivariate, ± deviation). */
|
|
137
|
+
themeDiverging?: string;
|
|
138
|
+
barColors?: Record<string, string>;
|
|
139
|
+
/** Histogram bar style — fill/stroke/strokeWidth/gap. Accepted by RealtimeHistogram and routed through to the bar scene builder. */
|
|
140
|
+
barStyle?: BarStyle;
|
|
141
|
+
annotations?: Datum[];
|
|
142
|
+
decay?: DecayConfig;
|
|
143
|
+
pulse?: PulseConfig;
|
|
144
|
+
transition?: TransitionConfig;
|
|
145
|
+
/** Whether to animate elements on first render (points scale up, lines/areas clip from left, rects grow from baseline) */
|
|
146
|
+
introAnimation?: boolean;
|
|
147
|
+
staleness?: StalenessConfig;
|
|
148
|
+
heatmapAggregation?: "count" | "sum" | "mean";
|
|
149
|
+
heatmapXBins?: number;
|
|
150
|
+
heatmapYBins?: number;
|
|
151
|
+
showValues?: boolean;
|
|
152
|
+
heatmapValueFormat?: (v: number) => string;
|
|
153
|
+
pointIdAccessor?: string | ((d: Datum) => string);
|
|
154
|
+
curve?: CurveType;
|
|
155
|
+
/** When provided, replaces chart-type dispatch in scene building.
|
|
156
|
+
* Receives a LayoutContext (scales, dimensions, theme, resolveColor)
|
|
157
|
+
* and returns scene nodes plus optional overlays. */
|
|
158
|
+
customLayout?: CustomLayout;
|
|
159
|
+
/** Called when `customLayout` throws. The previous successful custom scene
|
|
160
|
+
* remains visible when one exists; inspect the diagnostic's `recovery` to
|
|
161
|
+
* distinguish that case from an initial empty-scene failure. */
|
|
162
|
+
onLayoutError?: (diagnostic: import("./customLayoutFailure").CustomLayoutFailureDiagnostic) => void;
|
|
163
|
+
/** User-supplied config blob threaded through to LayoutContext.config. */
|
|
164
|
+
layoutConfig?: object;
|
|
165
|
+
/** Resolved margin — passed through so LayoutContext.dimensions.margin reflects what the frame actually used. */
|
|
166
|
+
layoutMargin?: MarginType;
|
|
167
|
+
/** Resolved shared selection projected into LayoutContext.selection. Owned by
|
|
168
|
+
* a dedicated frame effect (kept off the rebuild-triggering path). */
|
|
169
|
+
layoutSelection?: CustomLayoutSelection | null;
|
|
170
|
+
}
|
|
171
|
+
/** Default hard cap for `windowMode: "growing"`. */
|
|
172
|
+
export declare const DEFAULT_GROWING_MAX_CAPACITY = 100000;
|
|
173
|
+
/**
|
|
174
|
+
* Dev-only warning threshold: when a growing buffer first crosses this
|
|
175
|
+
* size we log once so unbounded push loops surface before the hard cap.
|
|
176
|
+
*/
|
|
177
|
+
export declare const GROWING_CAPACITY_WARN_THRESHOLD = 50000;
|
|
@@ -3,7 +3,12 @@ import type { Datum } from "../charts/shared/datumTypes";
|
|
|
3
3
|
* Shared decay encoding utilities for all pipeline stores.
|
|
4
4
|
*
|
|
5
5
|
* `computeDecayOpacity()` — core algorithm used by all four pipeline stores
|
|
6
|
-
* (XY, Ordinal, Network, Geo) to compute age-based opacity.
|
|
6
|
+
* (XY, Ordinal, Network, Geo) to compute age-based opacity. It is the
|
|
7
|
+
* buffer-index projection of the runtime-neutral `opacityFromAge` age→opacity
|
|
8
|
+
* ramp: streaming decay is just "age measured in buffer positions", where the
|
|
9
|
+
* oldest surviving datum sits `bufferSize - 1` positions behind the newest.
|
|
10
|
+
* Keeping one ramp implementation means the streaming runtime, physics
|
|
11
|
+
* bodies, and any future age-based encoding share the exact same curves.
|
|
7
12
|
*
|
|
8
13
|
* `applyDecay()` — XY-specific application that handles per-vertex decay
|
|
9
14
|
* for line/area nodes. Other stores call `computeDecayOpacity()` directly
|
|
@@ -13,10 +18,23 @@ import type { SceneNode, DecayConfig } from "./types";
|
|
|
13
18
|
/**
|
|
14
19
|
* Compute decay opacity for a datum at `bufferIndex` out of `bufferSize` items.
|
|
15
20
|
* Index 0 = oldest, bufferSize-1 = newest. Returns 0–1.
|
|
21
|
+
*
|
|
22
|
+
* Delegates to the shared {@link opacityFromAge} ramp with age expressed in
|
|
23
|
+
* buffer positions (`age = 0` at the newest datum, `extent = bufferSize - 1`
|
|
24
|
+
* at the oldest). The buffer-based half-life / step defaults are passed
|
|
25
|
+
* explicitly so the streaming ramp is unchanged from its standalone form.
|
|
16
26
|
*/
|
|
17
27
|
export declare function computeDecayOpacity(decay: DecayConfig, bufferIndex: number, bufferSize: number): number;
|
|
28
|
+
/**
|
|
29
|
+
* Build a datum→buffer-index map. Callers that apply decay + pulse in the
|
|
30
|
+
* same scene pass should share one map (and cache it by ingest version)
|
|
31
|
+
* so continuous animation does not re-walk the buffer twice per frame.
|
|
32
|
+
*/
|
|
33
|
+
export declare function buildDatumIndexMap(data: readonly Datum[]): Map<Datum, number>;
|
|
18
34
|
/**
|
|
19
35
|
* Apply decay opacity to a list of scene nodes.
|
|
20
36
|
* Uses the datum's index in the buffer data array.
|
|
37
|
+
*
|
|
38
|
+
* @param indexMap Optional prebuilt datum→index map (see {@link buildDatumIndexMap}).
|
|
21
39
|
*/
|
|
22
|
-
export declare function applyDecay(decay: DecayConfig, nodes: SceneNode[], data: Datum[]): void;
|
|
40
|
+
export declare function applyDecay(decay: DecayConfig, nodes: SceneNode[], data: Datum[], indexMap?: Map<any, number>): void;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure domain / scale resolution for PipelineStore.computeScene.
|
|
3
|
+
* Chart-type-specific y-extent rules + d3 scale construction.
|
|
4
|
+
*/
|
|
5
|
+
import { type ScaleLinear } from "d3-scale";
|
|
6
|
+
import type { Datum } from "../charts/shared/datumTypes";
|
|
7
|
+
import type { PipelineConfig } from "./pipelineConfig";
|
|
8
|
+
import type { ArrowOfTime, StreamScales } from "./types";
|
|
9
|
+
import type { ResolvedRibbon } from "./xySceneBuilders/ribbonScene";
|
|
10
|
+
import type { RingBuffer } from "../realtime/RingBuffer";
|
|
11
|
+
export type StackExtentCache = {
|
|
12
|
+
key: string;
|
|
13
|
+
yDomain: [number, number];
|
|
14
|
+
};
|
|
15
|
+
export declare function getTimeAxis(arrowOfTime: ArrowOfTime): "x" | "y";
|
|
16
|
+
export declare function mergePartialDomain(dataDomain: [number, number], userExtent: [number | undefined, number | undefined] | [number] | undefined): [number, number];
|
|
17
|
+
export declare function isFullySpecifiedExtent(extent: [number | undefined, number | undefined] | [number] | undefined): boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Stacked-area y-domain covering cumulative stack sums (or [0,1] when
|
|
20
|
+
* normalized). Mirrors buildStackedAreaNodes order for wiggle offsets.
|
|
21
|
+
*/
|
|
22
|
+
export declare function resolveStackedAreaYDomain(options: {
|
|
23
|
+
config: Pick<PipelineConfig, "normalize" | "baseline" | "stackOrder" | "extentPadding" | "axisExtent">;
|
|
24
|
+
groups: {
|
|
25
|
+
key: string;
|
|
26
|
+
data: Datum[];
|
|
27
|
+
}[];
|
|
28
|
+
getX: (d: Datum) => number;
|
|
29
|
+
getY: (d: Datum) => number;
|
|
30
|
+
bufferSize: number;
|
|
31
|
+
ingestVersion: number;
|
|
32
|
+
stackExtentCache: StackExtentCache | null;
|
|
33
|
+
}): {
|
|
34
|
+
yDomain: [number, number];
|
|
35
|
+
stackExtentCache: StackExtentCache;
|
|
36
|
+
};
|
|
37
|
+
export declare function resolveBarBinYDomain(buffer: RingBuffer<Datum>, getX: (d: Datum) => number, getY: (d: Datum) => number, binSize: number, getCategory: ((d: Datum) => string) | undefined, extentPadding: number, exactMode: boolean): [number, number];
|
|
38
|
+
export declare function resolveWaterfallYDomain(buffer: RingBuffer<Datum>, getY: (d: Datum) => number, extentPadding: number, exactMode: boolean): [number, number];
|
|
39
|
+
export declare function expandYDomainWithRibbons(yDomain: [number, number], bufferArray: Datum[], ribbons: ResolvedRibbon[]): [number, number];
|
|
40
|
+
export declare function padYDomain(yDomain: [number, number], options: {
|
|
41
|
+
exactMode: boolean;
|
|
42
|
+
extentPadding: number;
|
|
43
|
+
userMin?: number;
|
|
44
|
+
userMax?: number;
|
|
45
|
+
yScaleType?: PipelineConfig["yScaleType"];
|
|
46
|
+
dataYDomain: [number, number];
|
|
47
|
+
}): [number, number];
|
|
48
|
+
export declare function reapplyPartialYExtent(yDomain: [number, number], yExtent: PipelineConfig["yExtent"], yFullySpecified: boolean): [number, number];
|
|
49
|
+
export declare function rescueDegenerateDomains(xDomain: [number, number], yDomain: [number, number], xScaleType?: PipelineConfig["xScaleType"]): {
|
|
50
|
+
xDomain: [number, number];
|
|
51
|
+
yDomain: [number, number];
|
|
52
|
+
};
|
|
53
|
+
export declare function makePipelineScale(type: "linear" | "log" | "symlog" | "time" | undefined, domain: [number, number], range: [number, number]): ScaleLinear<number, number>;
|
|
54
|
+
export declare function buildPipelineScales(options: {
|
|
55
|
+
config: PipelineConfig;
|
|
56
|
+
layout: {
|
|
57
|
+
width: number;
|
|
58
|
+
height: number;
|
|
59
|
+
};
|
|
60
|
+
xDomain: [number, number];
|
|
61
|
+
yDomain: [number, number];
|
|
62
|
+
}): StreamScales;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared identity-keyed mutation helpers for family pipeline stores.
|
|
3
|
+
*
|
|
4
|
+
* XY/Ordinal/Network stores each own their buffers, but remove/update by
|
|
5
|
+
* stable id follow the same shape: resolve ids → scan buffer → rebuild.
|
|
6
|
+
* Centralizing the pure scan logic keeps behavior aligned without forcing
|
|
7
|
+
* a single mega-class.
|
|
8
|
+
*/
|
|
9
|
+
import type { Datum } from "../charts/shared/datumTypes";
|
|
10
|
+
export declare function toIdSet(id: string | string[]): Set<string>;
|
|
11
|
+
/**
|
|
12
|
+
* Remove rows whose id is in `ids`. Returns `{ kept, removed }` where
|
|
13
|
+
* `kept` preserves original order.
|
|
14
|
+
*/
|
|
15
|
+
export declare function partitionById(data: readonly Datum[], ids: Set<string>, getId: (d: Datum) => string): {
|
|
16
|
+
kept: Datum[];
|
|
17
|
+
removed: Datum[];
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Apply an updater to rows matching `ids`. Returns updated rows (the new
|
|
21
|
+
* objects) and the full next array (order preserved).
|
|
22
|
+
*/
|
|
23
|
+
export declare function updateById(data: readonly Datum[], ids: Set<string>, getId: (d: Datum) => string, updater: (d: Datum) => Datum): {
|
|
24
|
+
next: Datum[];
|
|
25
|
+
updated: Datum[];
|
|
26
|
+
};
|
|
@@ -17,9 +17,23 @@ import type { RingBuffer } from "../realtime/RingBuffer";
|
|
|
17
17
|
export declare function computePulseIntensity(pulse: PulseConfig, insertTime: number, now: number): number;
|
|
18
18
|
/**
|
|
19
19
|
* Apply pulse glow to scene nodes using insertion timestamps.
|
|
20
|
+
*
|
|
21
|
+
* @param indexMap Optional prebuilt datum→index map so a scene pass that
|
|
22
|
+
* also runs decay can share one O(n) walk of the buffer.
|
|
23
|
+
*/
|
|
24
|
+
export declare function applyPulse(pulse: PulseConfig, nodes: SceneNode[], data: Datum[], timestampBuffer: RingBuffer<number>, indexMap?: Map<any, number>, now?: number): boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Update the pulse-owned fields for a node that the pipeline has matched to
|
|
27
|
+
* source data. Keeping this narrow is important for custom layouts: nodes
|
|
28
|
+
* which do not map back to a datum are left entirely alone, including any
|
|
29
|
+
* user-owned underscore fields they may carry.
|
|
20
30
|
*/
|
|
21
|
-
export declare function
|
|
31
|
+
export declare function setPulseState(node: {
|
|
32
|
+
_pulseIntensity?: number;
|
|
33
|
+
_pulseColor?: string;
|
|
34
|
+
_pulseGlowRadius?: number;
|
|
35
|
+
}, intensity: number, pulseColor: string, glowRadius?: number): boolean;
|
|
22
36
|
/**
|
|
23
37
|
* Check whether there are active pulse animations needing continuous rendering.
|
|
24
38
|
*/
|
|
25
|
-
export declare function hasActivePulses(pulse: PulseConfig, timestampBuffer: RingBuffer<number> | null): boolean;
|
|
39
|
+
export declare function hasActivePulses(pulse: PulseConfig, timestampBuffer: RingBuffer<number> | null, now?: number): boolean;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ribbon resolution — compose `boundsAccessor` + `band` into ResolvedRibbon[].
|
|
3
|
+
* Extracted from PipelineStore so scene builders / tests can reuse without
|
|
4
|
+
* the full store class.
|
|
5
|
+
*/
|
|
6
|
+
import type { Datum } from "../charts/shared/datumTypes";
|
|
7
|
+
import type { BandConfig, StreamChartType, Style } from "./types";
|
|
8
|
+
import type { ResolvedRibbon } from "./xySceneBuilders/ribbonScene";
|
|
9
|
+
import { type CoercibleNumber } from "./accessorUtils";
|
|
10
|
+
/**
|
|
11
|
+
* Minimal config surface required to resolve envelope ribbons.
|
|
12
|
+
* Full PipelineConfig satisfies this; kept narrow for pure helpers.
|
|
13
|
+
*/
|
|
14
|
+
export interface RibbonResolveConfig {
|
|
15
|
+
chartType: StreamChartType;
|
|
16
|
+
runtimeMode?: "streaming" | "bounded";
|
|
17
|
+
valueAccessor?: string | ((d: Datum) => CoercibleNumber);
|
|
18
|
+
yAccessor?: string | ((d: Datum) => CoercibleNumber);
|
|
19
|
+
boundsAccessor?: string | ((d: Datum) => CoercibleNumber);
|
|
20
|
+
boundsStyle?: Style | ((d: Datum, group?: string) => Style);
|
|
21
|
+
band?: BandConfig | BandConfig[];
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Read a value off a datum preserving null/undefined as NaN so ribbon
|
|
25
|
+
* gap semantics work. `resolveAccessor` coerces null→0 via unary `+`,
|
|
26
|
+
* which would silently produce a "valid" 0 baseline for missing data —
|
|
27
|
+
* fine for primary y values, wrong for envelope edges.
|
|
28
|
+
*/
|
|
29
|
+
export declare function resolveRibbonValueAccessor(accessor: string | ((d: Datum) => CoercibleNumber) | undefined, fallback: string): (d: Datum) => number;
|
|
30
|
+
/**
|
|
31
|
+
* Compose the full ribbon list from both public envelope APIs:
|
|
32
|
+
* `boundsAccessor` (symmetric ±offset) and `band` (asymmetric pairs).
|
|
33
|
+
* Bounds is prepended so it paints furthest back when both are set on
|
|
34
|
+
* the same chart. Both surfaces share scene-builder, y-extent, and
|
|
35
|
+
* style-cascade machinery — only the resolution differs.
|
|
36
|
+
*
|
|
37
|
+
* Both APIs use null-preserving accessors (NaN for null/undefined) so
|
|
38
|
+
* the unified `buildRibbonForGroup` can rely on a single
|
|
39
|
+
* `Number.isFinite` check to skip gap datums.
|
|
40
|
+
*/
|
|
41
|
+
export declare function resolveRibbons(config: RibbonResolveConfig): ResolvedRibbon[];
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type Quadtree } from "d3-quadtree";
|
|
2
|
+
import type { PipelineConfig } from "./pipelineConfig";
|
|
3
|
+
import type { PointSceneNode, SceneNode } from "./types";
|
|
4
|
+
/** Retained point-scene spatial index used by PipelineStore hit testing. */
|
|
5
|
+
export declare class PipelineSpatialIndex {
|
|
6
|
+
private maxRadius;
|
|
7
|
+
private tree;
|
|
8
|
+
get quadtree(): Quadtree<PointSceneNode> | null;
|
|
9
|
+
get maxPointRadius(): number;
|
|
10
|
+
clear(): void;
|
|
11
|
+
rebuild(chartType: PipelineConfig["chartType"], scene: SceneNode[]): void;
|
|
12
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type ChangeSet, type UpdateResult } from "./pipelineUpdateContract";
|
|
2
|
+
type DataChangeKind = Extract<ChangeSet["kind"], "ingest" | "replace" | "remove" | "update" | "clear">;
|
|
3
|
+
/** Result bookkeeping and invalidation policy for the XY PipelineStore pilot. */
|
|
4
|
+
export declare class PipelineStoreUpdateResults {
|
|
5
|
+
private tracker;
|
|
6
|
+
get last(): UpdateResult;
|
|
7
|
+
recordData(kind: DataChangeKind, count?: number): UpdateResult;
|
|
8
|
+
recordNoop(kind: DataChangeKind | "restyle"): UpdateResult;
|
|
9
|
+
recordRestyle(hasCustomRestyle: boolean): UpdateResult;
|
|
10
|
+
recordConfig(keys: readonly string[], requiresRebuild: boolean, extentAccessorChanged: boolean): UpdateResult;
|
|
11
|
+
}
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure style / color-map resolution helpers for PipelineStore.
|
|
3
|
+
* Accept a small context object so the store methods stay thin wrappers.
|
|
4
|
+
*/
|
|
5
|
+
import type { Datum } from "../charts/shared/datumTypes";
|
|
6
|
+
import type { PipelineConfig } from "./pipelineConfig";
|
|
7
|
+
import type { Style } from "./types";
|
|
8
|
+
export interface PipelineColorMapCache {
|
|
9
|
+
key: string;
|
|
10
|
+
map: Map<string, string>;
|
|
11
|
+
version: number;
|
|
12
|
+
}
|
|
13
|
+
export interface PipelineGroupDataCache {
|
|
14
|
+
version: number;
|
|
15
|
+
group: ((d: Datum) => string) | undefined;
|
|
16
|
+
data: Datum[];
|
|
17
|
+
result: {
|
|
18
|
+
key: string;
|
|
19
|
+
data: Datum[];
|
|
20
|
+
}[];
|
|
21
|
+
}
|
|
22
|
+
export declare function groupPipelineData(data: Datum[], getGroup: ((d: Datum) => string) | undefined, ingestVersion: number, cache: PipelineGroupDataCache | null): {
|
|
23
|
+
result: {
|
|
24
|
+
key: string;
|
|
25
|
+
data: Datum[];
|
|
26
|
+
}[];
|
|
27
|
+
cache: PipelineGroupDataCache;
|
|
28
|
+
};
|
|
29
|
+
export declare function resolvePipelineColorMap(data: Datum[], getColor: ((d: Datum) => string) | undefined, config: Pick<PipelineConfig, "colorScheme" | "themeCategorical">, ingestVersion: number, cache: PipelineColorMapCache | null): {
|
|
30
|
+
map: Map<string, string>;
|
|
31
|
+
cache: PipelineColorMapCache;
|
|
32
|
+
};
|
|
33
|
+
export declare function resolvePipelineGroupColor(options: {
|
|
34
|
+
group: string;
|
|
35
|
+
colorMapCache: PipelineColorMapCache | null;
|
|
36
|
+
groupColorMap: Map<string, string>;
|
|
37
|
+
groupColorCounter: number;
|
|
38
|
+
groupColorMapCap: number;
|
|
39
|
+
config: Pick<PipelineConfig, "colorScheme" | "themeCategorical">;
|
|
40
|
+
}): {
|
|
41
|
+
color: string | null;
|
|
42
|
+
groupColorCounter: number;
|
|
43
|
+
};
|
|
44
|
+
export declare function resolvePipelineLineStyle(config: PipelineConfig, group: string, sampleDatum: Datum | undefined, resolveGroupColor: (group: string) => string | null): Style;
|
|
45
|
+
export declare function resolvePipelineAreaStyle(config: PipelineConfig, group: string, sampleDatum: Datum | undefined, resolveGroupColor: (group: string) => string | null): Style;
|
|
46
|
+
export declare function resolvePipelineBoundsStyle(config: PipelineConfig, group: string, sampleDatum: Datum | undefined, resolveLineStyle: (group: string, sampleDatum?: Datum) => Style): Style;
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
* Consumed by: PipelineStore.computeScene (after decay/pulse)
|
|
12
12
|
*/
|
|
13
13
|
import type { SceneNode, TransitionConfig } from "./types";
|
|
14
|
+
import type { GlyphDef } from "./glyphDef";
|
|
14
15
|
import type { ActiveTransition } from "./pipelineTransitionUtils";
|
|
15
16
|
import type { Datum } from "../charts/shared/datumTypes";
|
|
16
17
|
export type PrevPosition = {
|
|
@@ -24,6 +25,7 @@ export type PrevPosition = {
|
|
|
24
25
|
closeY?: number;
|
|
25
26
|
highY?: number;
|
|
26
27
|
lowY?: number;
|
|
28
|
+
glyph?: GlyphDef;
|
|
27
29
|
};
|
|
28
30
|
export type PrevPath = {
|
|
29
31
|
topPath?: [number, number][];
|