semiotic 3.7.5 → 3.8.1

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.
Files changed (575) hide show
  1. package/CLAUDE.md +63 -18
  2. package/README.md +121 -27
  3. package/agent-skill/semiotic-charts/SKILL.md +146 -0
  4. package/ai/cli.js +133 -45
  5. package/ai/componentMetadata.cjs +6 -1
  6. package/ai/dist/mcp-server.js +1741 -163
  7. package/ai/examples.md +174 -0
  8. package/ai/schema.json +2733 -536
  9. package/ai/surface-manifest.json +201 -0
  10. package/ai/system-prompt.md +20 -4
  11. package/dist/__tests__/scenarios/mcpProtocolTypes.d.ts +20 -0
  12. package/dist/components/AccessibleNavTree.d.ts +7 -1
  13. package/dist/components/CategoryColors.d.ts +1 -1
  14. package/dist/components/ChartContainer.d.ts +91 -0
  15. package/dist/components/ChartGrid.d.ts +11 -1
  16. package/dist/components/CircularBrush.d.ts +61 -0
  17. package/dist/components/ContextLayout.d.ts +5 -1
  18. package/dist/components/DirectManipulationControl.d.ts +63 -0
  19. package/dist/components/LinkedCharts.d.ts +3 -1
  20. package/dist/components/MobileAnnotationCalloutList.d.ts +13 -0
  21. package/dist/components/MobileChartContainer.d.ts +51 -0
  22. package/dist/components/MobileStandardControls.d.ts +68 -0
  23. package/dist/components/SmallMultipleChart.d.ts +84 -0
  24. package/dist/components/Tooltip/FlippingTooltip.d.ts +21 -0
  25. package/dist/components/ai/ChartRecipe.d.ts +16 -0
  26. package/dist/components/ai/IntentMark.d.ts +15 -0
  27. package/dist/components/ai/chartCapabilities.d.ts +8 -1
  28. package/dist/components/ai/chartCapabilityTypes.d.ts +26 -1
  29. package/dist/components/ai/chartClinic.d.ts +91 -0
  30. package/dist/components/ai/chartClinicMetadata.generated.d.ts +15 -0
  31. package/dist/components/ai/chartRecipeRegistry.d.ts +14 -0
  32. package/dist/components/ai/chartRecipes.d.ts +278 -0
  33. package/dist/components/ai/dataPitfallsBridge.d.ts +102 -0
  34. package/dist/components/ai/describeChart.d.ts +7 -0
  35. package/dist/components/ai/describeRecipeChart.d.ts +16 -0
  36. package/dist/components/ai/generativeChart.d.ts +28 -3
  37. package/dist/components/ai/intentManifest.d.ts +62 -0
  38. package/dist/components/ai/navigationTree.d.ts +3 -0
  39. package/dist/components/ai/observedSceneAudit.d.ts +72 -0
  40. package/dist/components/ai/readerGrounding.d.ts +83 -0
  41. package/dist/components/ai/recipeCapability.d.ts +8 -0
  42. package/dist/components/ai/recipeNavigation.d.ts +13 -0
  43. package/dist/components/ai/recipeSemantics.d.ts +11 -0
  44. package/dist/components/ai/repairChartConfig.d.ts +9 -0
  45. package/dist/components/ai/suggestCharts.d.ts +11 -1
  46. package/dist/components/ai/useNavigationSync.d.ts +17 -2
  47. package/dist/components/chartContainerMobile.d.ts +9 -0
  48. package/dist/components/charts/custom/GeoCustomChart.d.ts +48 -0
  49. package/dist/components/charts/custom/NetworkCustomChart.d.ts +8 -2
  50. package/dist/components/charts/custom/OrdinalCustomChart.d.ts +8 -2
  51. package/dist/components/charts/custom/XYCustomChart.d.ts +11 -2
  52. package/dist/components/charts/geo/ChoroplethMap.d.ts +19 -2
  53. package/dist/components/charts/geo/DistanceCartogram.d.ts +15 -3
  54. package/dist/components/charts/geo/FlowMap.d.ts +11 -7
  55. package/dist/components/charts/geo/ProportionalSymbolMap.d.ts +15 -3
  56. package/dist/components/charts/geo/index.d.ts +2 -0
  57. package/dist/components/charts/index.d.ts +35 -1
  58. package/dist/components/charts/network/ChordDiagram.d.ts +10 -2
  59. package/dist/components/charts/network/CirclePack.d.ts +1 -1
  60. package/dist/components/charts/network/ForceDirectedGraph.d.ts +26 -5
  61. package/dist/components/charts/network/OrbitDiagram.d.ts +1 -1
  62. package/dist/components/charts/network/ProcessSankey.d.ts +1 -1
  63. package/dist/components/charts/network/SankeyDiagram.d.ts +10 -2
  64. package/dist/components/charts/network/TreeDiagram.d.ts +1 -1
  65. package/dist/components/charts/network/Treemap.d.ts +1 -1
  66. package/dist/components/charts/network/useForceLayout.d.ts +17 -0
  67. package/dist/components/charts/ordinal/BarChart.d.ts +22 -1
  68. package/dist/components/charts/ordinal/BoxPlot.d.ts +1 -1
  69. package/dist/components/charts/ordinal/DonutChart.d.ts +1 -1
  70. package/dist/components/charts/ordinal/DotPlot.d.ts +1 -1
  71. package/dist/components/charts/ordinal/FunnelChart.d.ts +1 -1
  72. package/dist/components/charts/ordinal/GroupedBarChart.d.ts +12 -1
  73. package/dist/components/charts/ordinal/Histogram.d.ts +1 -1
  74. package/dist/components/charts/ordinal/PieChart.d.ts +1 -1
  75. package/dist/components/charts/ordinal/RidgelinePlot.d.ts +1 -1
  76. package/dist/components/charts/ordinal/StackedBarChart.d.ts +12 -1
  77. package/dist/components/charts/ordinal/SwarmPlot.d.ts +1 -1
  78. package/dist/components/charts/ordinal/SwimlaneChart.d.ts +1 -1
  79. package/dist/components/charts/ordinal/ViolinPlot.d.ts +1 -1
  80. package/dist/components/charts/physics/ChainReactionChart.d.ts +9 -0
  81. package/dist/components/charts/physics/CollisionSwarmChart.capability.d.ts +2 -0
  82. package/dist/components/charts/physics/CollisionSwarmChart.d.ts +54 -0
  83. package/dist/components/charts/physics/EventDropChart.capability.d.ts +2 -0
  84. package/dist/components/charts/physics/EventDropChart.d.ts +60 -0
  85. package/dist/components/charts/physics/GaltonBoardChart.capability.d.ts +2 -0
  86. package/dist/components/charts/physics/GaltonBoardChart.d.ts +74 -0
  87. package/dist/components/charts/physics/GauntletChart.capability.d.ts +2 -0
  88. package/dist/components/charts/physics/GauntletChart.d.ts +73 -0
  89. package/dist/components/charts/physics/PhysicalFlowChart.capability.d.ts +2 -0
  90. package/dist/components/charts/physics/PhysicalFlowChart.d.ts +63 -0
  91. package/dist/components/charts/physics/PhysicsCustomChart.d.ts +99 -0
  92. package/dist/components/charts/physics/PhysicsPileChart.capability.d.ts +2 -0
  93. package/dist/components/charts/physics/PhysicsPileChart.d.ts +60 -0
  94. package/dist/components/charts/physics/ProcessFlowChart.capability.d.ts +2 -0
  95. package/dist/components/charts/physics/ProcessFlowChart.d.ts +96 -0
  96. package/dist/components/charts/physics/chainReactionOverlay.d.ts +22 -0
  97. package/dist/components/charts/physics/chainReactionRuntime.d.ts +37 -0
  98. package/dist/components/charts/physics/chainReactionTypes.d.ts +97 -0
  99. package/dist/components/charts/physics/collisionSwarmPhysics.d.ts +27 -0
  100. package/dist/components/charts/physics/dependencyMachine.d.ts +188 -0
  101. package/dist/components/charts/physics/eventDropPhysics.d.ts +64 -0
  102. package/dist/components/charts/physics/galtonBoardPhysics.d.ts +28 -0
  103. package/dist/components/charts/physics/gauntletChartProps.d.ts +67 -0
  104. package/dist/components/charts/physics/gauntletChrome.d.ts +33 -0
  105. package/dist/components/charts/physics/gauntletController.d.ts +73 -0
  106. package/dist/components/charts/physics/gauntletEffects.d.ts +36 -0
  107. package/dist/components/charts/physics/gauntletPhysics.d.ts +71 -0
  108. package/dist/components/charts/physics/gauntletRuntime.d.ts +42 -0
  109. package/dist/components/charts/physics/gauntletTypes.d.ts +213 -0
  110. package/dist/components/charts/physics/physicalFlowPhysics.d.ts +57 -0
  111. package/dist/components/charts/physics/physicsChartShared.d.ts +57 -0
  112. package/dist/components/charts/physics/physicsChartUtils.d.ts +18 -0
  113. package/dist/components/charts/physics/physicsCustomLayout.d.ts +32 -0
  114. package/dist/components/charts/physics/physicsEncoding.d.ts +142 -0
  115. package/dist/components/charts/physics/physicsHocHandle.d.ts +53 -0
  116. package/dist/components/charts/physics/physicsHocUtils.d.ts +128 -0
  117. package/dist/components/charts/physics/physicsPilePhysics.d.ts +41 -0
  118. package/dist/components/charts/physics/physicsProcessPrimitives.d.ts +38 -0
  119. package/dist/components/charts/physics/processFlowPhysics.d.ts +97 -0
  120. package/dist/components/charts/realtime/RealtimeHeatmap.d.ts +9 -1
  121. package/dist/components/charts/realtime/RealtimeHistogram.d.ts +9 -1
  122. package/dist/components/charts/realtime/RealtimeLineChart.d.ts +9 -1
  123. package/dist/components/charts/realtime/RealtimeSwarmChart.d.ts +16 -2
  124. package/dist/components/charts/realtime/RealtimeWaterfallChart.d.ts +9 -1
  125. package/dist/components/charts/shared/AnnotationLabel.d.ts +88 -0
  126. package/dist/components/charts/shared/annotationActivation.d.ts +35 -0
  127. package/dist/components/charts/shared/annotationLabelLayout.d.ts +5 -0
  128. package/dist/components/charts/shared/annotationRules.d.ts +2 -1
  129. package/dist/components/charts/shared/auditMobileVisualization.d.ts +91 -0
  130. package/dist/components/charts/shared/chartDefinitionPilot.d.ts +145 -0
  131. package/dist/components/charts/shared/chartFamilySets.d.ts +20 -0
  132. package/dist/components/charts/shared/chartSelectionUtils.d.ts +4 -0
  133. package/dist/components/charts/shared/chartSpecCore.d.ts +165 -0
  134. package/dist/components/charts/shared/chartSpecs.d.ts +8 -127
  135. package/dist/components/charts/shared/chartSpecsGeo.d.ts +2 -0
  136. package/dist/components/charts/shared/chartSpecsNetwork.d.ts +2 -0
  137. package/dist/components/charts/shared/chartSpecsOrdinal.d.ts +2 -0
  138. package/dist/components/charts/shared/chartSpecsPhysics.d.ts +2 -0
  139. package/dist/components/charts/shared/chartSpecsRealtime.d.ts +2 -0
  140. package/dist/components/charts/shared/chartSpecsValue.d.ts +2 -0
  141. package/dist/components/charts/shared/chartSpecsXY.d.ts +2 -0
  142. package/dist/components/charts/shared/colorContrast.d.ts +3 -0
  143. package/dist/components/charts/shared/colorUtils.d.ts +16 -1
  144. package/dist/components/charts/shared/datumTypes.d.ts +2 -0
  145. package/dist/components/charts/shared/diagnoseAnnotationChecks.d.ts +6 -0
  146. package/dist/components/charts/shared/diagnoseConfig.d.ts +9 -14
  147. package/dist/components/charts/shared/diagnoseMisleadingChecks.d.ts +9 -0
  148. package/dist/components/charts/shared/diagnosePhysicsChecks.d.ts +3 -0
  149. package/dist/components/charts/shared/diagnoseTypes.d.ts +10 -0
  150. package/dist/components/charts/shared/formatUtils.d.ts +3 -3
  151. package/dist/components/charts/shared/hatchFill.d.ts +87 -0
  152. package/dist/components/charts/shared/hooks.d.ts +34 -10
  153. package/dist/components/charts/shared/knownChartComponents.d.ts +9 -0
  154. package/dist/components/charts/shared/leastSquaresRegression.d.ts +16 -0
  155. package/dist/components/charts/shared/mergeShapeStyle.d.ts +3 -2
  156. package/dist/components/charts/shared/motionEncoding.d.ts +145 -0
  157. package/dist/components/charts/shared/responsiveRules.d.ts +56 -0
  158. package/dist/components/charts/shared/semanticInteractions.d.ts +42 -0
  159. package/dist/components/charts/shared/sparseArray.d.ts +1 -1
  160. package/dist/components/charts/shared/streamPropsHelpers.d.ts +17 -5
  161. package/dist/components/charts/shared/styleRules.d.ts +205 -0
  162. package/dist/components/charts/shared/temporalStrings.d.ts +7 -0
  163. package/dist/components/charts/shared/tooltipUtils.d.ts +22 -9
  164. package/dist/components/charts/shared/types.d.ts +58 -7
  165. package/dist/components/charts/shared/useAreaSeriesSetup.d.ts +16 -2
  166. package/dist/components/charts/shared/useChartSetup.d.ts +11 -4
  167. package/dist/components/charts/shared/useCustomChartSetup.d.ts +17 -5
  168. package/dist/components/charts/shared/useFrameImperativeHandle.d.ts +1 -2
  169. package/dist/components/charts/shared/useLikertAggregation.d.ts +4 -4
  170. package/dist/components/charts/shared/useNetworkChartSetup.d.ts +6 -2
  171. package/dist/components/charts/shared/useOrdinalBrush.d.ts +2 -1
  172. package/dist/components/charts/shared/useOrdinalPieceStyle.d.ts +25 -2
  173. package/dist/components/charts/shared/useStreamingLegend.d.ts +2 -2
  174. package/dist/components/charts/shared/useSyncedPushData.d.ts +49 -0
  175. package/dist/components/charts/shared/useXYLineStyle.d.ts +10 -0
  176. package/dist/components/charts/shared/useXYPointStyle.d.ts +19 -1
  177. package/dist/components/charts/shared/validateChartData.d.ts +7 -5
  178. package/dist/components/charts/shared/validationMap.d.ts +7 -9
  179. package/dist/components/charts/shared/validationMap.generated.d.ts +6 -0
  180. package/dist/components/charts/shared/withChartWrapper.d.ts +4 -3
  181. package/dist/components/charts/value/targetPresentation.d.ts +22 -0
  182. package/dist/components/charts/value/types.d.ts +5 -6
  183. package/dist/components/charts/xy/AreaChart.d.ts +9 -1
  184. package/dist/components/charts/xy/BubbleChart.d.ts +10 -1
  185. package/dist/components/charts/xy/ConnectedScatterplot.d.ts +7 -0
  186. package/dist/components/charts/xy/DifferenceChart.d.ts +1 -52
  187. package/dist/components/charts/xy/Heatmap.d.ts +2 -2
  188. package/dist/components/charts/xy/LineChart.d.ts +12 -1
  189. package/dist/components/charts/xy/MinimapChart.d.ts +1 -1
  190. package/dist/components/charts/xy/MultiAxisLineChart.d.ts +2 -2
  191. package/dist/components/charts/xy/QuadrantChart.d.ts +8 -1
  192. package/dist/components/charts/xy/Scatterplot.d.ts +11 -1
  193. package/dist/components/charts/xy/ScatterplotMatrix.d.ts +11 -1
  194. package/dist/components/charts/xy/StackedAreaChart.d.ts +16 -4
  195. package/dist/components/charts/xy/differenceSegments.d.ts +49 -0
  196. package/dist/components/charts/xy/scatterplotMatrixInteractionTypes.d.ts +12 -0
  197. package/dist/components/controls/SentenceFilter.d.ts +97 -0
  198. package/dist/components/controls/controlAudit.d.ts +24 -0
  199. package/dist/components/controls/controlContract.d.ts +57 -0
  200. package/dist/components/data/fromFlintChart.d.ts +74 -0
  201. package/dist/components/data/fromVegaLite.d.ts +46 -9
  202. package/dist/components/data/portability/index.d.ts +6 -3
  203. package/dist/components/data/portability/result.d.ts +52 -0
  204. package/dist/components/data/portability/spec.d.ts +31 -0
  205. package/dist/components/data/portability/vegaLite.d.ts +24 -6
  206. package/dist/components/export/chartConfig.d.ts +11 -0
  207. package/dist/components/realtime/types.d.ts +11 -0
  208. package/dist/components/recipes/annotationLayout.d.ts +29 -0
  209. package/dist/components/recipes/axisFixedForce.d.ts +119 -0
  210. package/dist/components/recipes/{gofishBoba.d.ts → boba.d.ts} +2 -2
  211. package/dist/components/recipes/cyclical.d.ts +39 -0
  212. package/dist/components/recipes/edgeRouter.d.ts +103 -0
  213. package/dist/components/recipes/forceLayout.d.ts +48 -0
  214. package/dist/components/recipes/forceLayoutAsync.d.ts +17 -0
  215. package/dist/components/recipes/gofishBobaHandwritten.d.ts +3 -0
  216. package/dist/components/recipes/gofishDisplayListFixtures.generated.d.ts +37 -0
  217. package/dist/components/recipes/gofishIR.d.ts +178 -132
  218. package/dist/components/recipes/gofishIRExamples.d.ts +30 -81
  219. package/dist/components/recipes/intervalLanes.d.ts +87 -0
  220. package/dist/components/recipes/intervals.d.ts +80 -0
  221. package/dist/components/recipes/isometricLandmarks.d.ts +88 -0
  222. package/dist/components/recipes/isotypeGlyphs.d.ts +17 -0
  223. package/dist/components/recipes/mobileAnnotationStrategy.d.ts +48 -0
  224. package/dist/components/recipes/mobileChartFamilyRecipes.d.ts +59 -0
  225. package/dist/components/recipes/networkAnalysis.d.ts +102 -0
  226. package/dist/components/recipes/networkLayouts.d.ts +83 -0
  227. package/dist/components/recipes/physics.d.ts +122 -0
  228. package/dist/components/recipes/physicsReference.d.ts +102 -0
  229. package/dist/components/recipes/processAggregates.d.ts +32 -0
  230. package/dist/components/recipes/processChrome.d.ts +67 -0
  231. package/dist/components/recipes/processJourney.d.ts +54 -0
  232. package/dist/components/recipes/processPhysics.d.ts +300 -0
  233. package/dist/components/recipes/processVolumeGeometry.d.ts +28 -0
  234. package/dist/components/recipes/radialCoords.d.ts +69 -0
  235. package/dist/components/recipes/random.d.ts +2 -0
  236. package/dist/components/recipes/recipeChrome.d.ts +91 -0
  237. package/dist/components/recipes/recipeGlyph.d.ts +42 -0
  238. package/dist/components/recipes/recipeLegend.d.ts +53 -1
  239. package/dist/components/recipes/recipeUtils.d.ts +52 -0
  240. package/dist/components/recipes/runs.d.ts +59 -0
  241. package/dist/components/recipes/tokenEncoding.d.ts +157 -0
  242. package/dist/components/recipes/tokenLayer.d.ts +79 -0
  243. package/dist/components/recipes/unitize.d.ts +108 -0
  244. package/dist/components/recipes/vector.d.ts +28 -0
  245. package/dist/components/recipes/waffle.d.ts +43 -0
  246. package/dist/components/rough/createRoughRenderMode.d.ts +46 -0
  247. package/dist/components/semiotic-ai-core.d.ts +47 -0
  248. package/dist/components/semiotic-ai.d.ts +53 -9
  249. package/dist/components/semiotic-controls.d.ts +20 -0
  250. package/dist/components/semiotic-experimental.d.ts +38 -9
  251. package/dist/components/semiotic-geo.d.ts +15 -0
  252. package/dist/components/semiotic-network.d.ts +15 -0
  253. package/dist/components/semiotic-ordinal.d.ts +14 -0
  254. package/dist/components/semiotic-physics-matter.d.ts +10 -0
  255. package/dist/components/semiotic-physics-rapier.d.ts +9 -0
  256. package/dist/components/semiotic-physics.d.ts +60 -0
  257. package/dist/components/semiotic-realtime-core.d.ts +34 -0
  258. package/dist/components/semiotic-realtime-react.d.ts +10 -0
  259. package/dist/components/semiotic-realtime.d.ts +4 -30
  260. package/dist/components/semiotic-recipes-core.d.ts +92 -0
  261. package/dist/components/semiotic-recipes-react.d.ts +7 -0
  262. package/dist/components/semiotic-recipes.d.ts +4 -43
  263. package/dist/components/semiotic-rough.d.ts +4 -0
  264. package/dist/components/semiotic-server-edge.d.ts +8 -0
  265. package/dist/components/semiotic-server-node.d.ts +5 -0
  266. package/dist/components/semiotic-server.d.ts +2 -2
  267. package/dist/components/semiotic-themes-core.d.ts +53 -0
  268. package/dist/components/semiotic-themes-react.d.ts +4 -0
  269. package/dist/components/semiotic-themes.d.ts +6 -76
  270. package/dist/components/semiotic-utils-core.d.ts +50 -0
  271. package/dist/components/semiotic-utils-react.d.ts +5 -0
  272. package/dist/components/semiotic-utils.d.ts +3 -39
  273. package/dist/components/semiotic-xy.d.ts +12 -0
  274. package/dist/components/semiotic.d.ts +44 -8
  275. package/dist/components/server/animatedGif.d.ts +36 -0
  276. package/dist/components/server/optionalImageTypes.d.ts +37 -0
  277. package/dist/components/server/renderEvidence.d.ts +1 -1
  278. package/dist/components/server/renderToStaticSVG.d.ts +3 -35
  279. package/dist/components/server/serverChartConfigShared.d.ts +21 -0
  280. package/dist/components/server/serverChartConfigs.d.ts +22 -12
  281. package/dist/components/server/serverChartConfigsCustom.d.ts +5 -0
  282. package/dist/components/server/serverChartConfigsGeo.d.ts +9 -0
  283. package/dist/components/server/serverChartConfigsNetwork.d.ts +8 -0
  284. package/dist/components/server/serverChartConfigsOrdinal.d.ts +16 -0
  285. package/dist/components/server/serverChartConfigsPhysics.d.ts +9 -0
  286. package/dist/components/server/serverChartConfigsXY.d.ts +11 -0
  287. package/dist/components/server/staticAnnotations.d.ts +6 -3
  288. package/dist/components/server/staticGeo.d.ts +4 -0
  289. package/dist/components/server/staticLegend.d.ts +2 -2
  290. package/dist/components/server/staticNetwork.d.ts +8 -0
  291. package/dist/components/server/staticOrdinal.d.ts +11 -0
  292. package/dist/components/server/staticPhysics.d.ts +3 -0
  293. package/dist/components/server/staticSVGChrome.d.ts +110 -0
  294. package/dist/components/server/staticXY.d.ts +4 -0
  295. package/dist/components/store/ObservationStore.d.ts +23 -2
  296. package/dist/components/store/themeSerialization.d.ts +32 -0
  297. package/dist/components/store/useChartInterrogation.d.ts +9 -0
  298. package/dist/components/stream/AccessibleDataTable.d.ts +7 -23
  299. package/dist/components/stream/AriaLiveTooltip.d.ts +9 -0
  300. package/dist/components/stream/CanvasHitTester.d.ts +4 -4
  301. package/dist/components/stream/DataSourceAdapter.d.ts +1 -1
  302. package/dist/components/stream/FocusRing.d.ts +4 -2
  303. package/dist/components/stream/FrameRuntime.d.ts +57 -0
  304. package/dist/components/stream/GeoCanvasHitTester.d.ts +1 -1
  305. package/dist/components/stream/GeoParticlePool.d.ts +1 -1
  306. package/dist/components/stream/GeoPipelineStore.d.ts +62 -3
  307. package/dist/components/stream/GeoSVGOverlay.d.ts +64 -0
  308. package/dist/components/stream/NetworkCanvasHitTester.d.ts +2 -1
  309. package/dist/components/stream/NetworkPipelineStore.d.ts +44 -36
  310. package/dist/components/stream/NetworkSSRFrame.d.ts +17 -0
  311. package/dist/components/stream/NetworkSVGOverlay.d.ts +10 -1
  312. package/dist/components/stream/OrdinalCanvasHitTester.d.ts +2 -2
  313. package/dist/components/stream/OrdinalPipelineStore.d.ts +55 -11
  314. package/dist/components/stream/OrdinalSVGOverlay.d.ts +9 -1
  315. package/dist/components/stream/OrdinalStyleResolver.d.ts +12 -0
  316. package/dist/components/stream/ParticlePool.d.ts +1 -1
  317. package/dist/components/stream/PipelineStore.d.ts +81 -174
  318. package/dist/components/stream/SVGOverlay.d.ts +6 -0
  319. package/dist/components/stream/SceneGraph.d.ts +12 -4
  320. package/dist/components/stream/StreamGeoFrame.d.ts +1 -1
  321. package/dist/components/stream/StreamNetworkFrame.d.ts +1 -1
  322. package/dist/components/stream/StreamOrdinalFrame.d.ts +1 -1
  323. package/dist/components/stream/StreamXYFrame.d.ts +2 -18
  324. package/dist/components/stream/accessibleDataRows.d.ts +33 -0
  325. package/dist/components/stream/accessorUtils.d.ts +25 -12
  326. package/dist/components/stream/annotationAccessorResolver.d.ts +2 -2
  327. package/dist/components/stream/brushAccessibility.d.ts +25 -0
  328. package/dist/components/stream/canvasBackground.d.ts +24 -0
  329. package/dist/components/stream/canvasSetup.d.ts +4 -1
  330. package/dist/components/stream/customLayoutFailure.d.ts +33 -0
  331. package/dist/components/stream/customLayoutPalette.d.ts +19 -9
  332. package/dist/components/stream/frameGraphics.d.ts +4 -0
  333. package/dist/components/stream/frameKeyboardNavigation.d.ts +45 -0
  334. package/dist/components/stream/frameThemeColors.d.ts +24 -0
  335. package/dist/components/stream/geoAnnotationAnchors.d.ts +14 -0
  336. package/dist/components/stream/geoCartogram.d.ts +17 -0
  337. package/dist/components/stream/geoCustomLayout.d.ts +59 -0
  338. package/dist/components/stream/geoDefaultTooltip.d.ts +11 -0
  339. package/dist/components/stream/geoFrameHelpers.d.ts +34 -0
  340. package/dist/components/stream/geoPipelineHelpers.d.ts +46 -0
  341. package/dist/components/stream/geoPipelineUpdateResults.d.ts +34 -0
  342. package/dist/components/stream/geoSceneBuilder.d.ts +16 -0
  343. package/dist/components/stream/geoTypes.d.ts +97 -15
  344. package/dist/components/stream/glyphDef.d.ts +98 -0
  345. package/dist/components/stream/hitTarget.d.ts +170 -0
  346. package/dist/components/stream/hitTestUtils.d.ts +2 -2
  347. package/dist/components/stream/hoverUtils.d.ts +7 -2
  348. package/dist/components/stream/keyboardNav.d.ts +4 -1
  349. package/dist/components/stream/layouts/forceLayoutPlugin.d.ts +9 -1
  350. package/dist/components/stream/layouts/forceLayoutWorkerClient.d.ts +58 -0
  351. package/dist/components/stream/layouts/hierarchyUtils.d.ts +2 -2
  352. package/dist/components/stream/networkBezier.d.ts +10 -0
  353. package/dist/components/stream/networkColorAccessors.d.ts +49 -0
  354. package/dist/components/stream/networkCustomLayoutRunner.d.ts +23 -0
  355. package/dist/components/stream/networkCustomRestyle.d.ts +15 -0
  356. package/dist/components/stream/networkDefaultTooltip.d.ts +10 -0
  357. package/dist/components/stream/networkFrameAnimation.d.ts +7 -0
  358. package/dist/components/stream/networkFrameHandleTypes.d.ts +39 -0
  359. package/dist/components/stream/networkFrameInteraction.d.ts +37 -0
  360. package/dist/components/stream/networkFrameObservations.d.ts +15 -0
  361. package/dist/components/stream/networkFramePaint.d.ts +52 -0
  362. package/dist/components/stream/networkInteractionTypes.d.ts +26 -0
  363. package/dist/components/stream/networkPipelineConfig.d.ts +22 -0
  364. package/dist/components/stream/networkPipelineHelpers.d.ts +12 -0
  365. package/dist/components/stream/networkPipelineUpdateResults.d.ts +38 -0
  366. package/dist/components/stream/networkRealtimeEncoding.d.ts +41 -0
  367. package/dist/components/stream/networkTypes.d.ts +103 -51
  368. package/dist/components/stream/ordinalCanvasRenderers.d.ts +7 -0
  369. package/dist/components/stream/ordinalDataIndex.d.ts +5 -0
  370. package/dist/components/stream/ordinalDefaultTooltip.d.ts +10 -0
  371. package/dist/components/stream/ordinalDomain.d.ts +38 -0
  372. package/dist/components/stream/ordinalPipelineUpdateResults.d.ts +31 -0
  373. package/dist/components/stream/ordinalPulse.d.ts +10 -0
  374. package/dist/components/stream/ordinalPulseResources.d.ts +3 -0
  375. package/dist/components/stream/ordinalSceneBuilders/sceneBuilderMap.d.ts +5 -0
  376. package/dist/components/stream/ordinalSceneBuilders/types.d.ts +2 -2
  377. package/dist/components/stream/ordinalSpatialIndex.d.ts +9 -0
  378. package/dist/components/stream/ordinalTypes.d.ts +68 -9
  379. package/dist/components/stream/paintNeeds.d.ts +31 -0
  380. package/dist/components/stream/physics/CapacityQueueController.d.ts +5 -0
  381. package/dist/components/stream/physics/CapacityQueueTypes.d.ts +134 -0
  382. package/dist/components/stream/physics/MatterPhysicsEngineAdapter.d.ts +42 -0
  383. package/dist/components/stream/physics/PhysicsAccessibility.d.ts +48 -0
  384. package/dist/components/stream/physics/PhysicsAnnotations.d.ts +58 -0
  385. package/dist/components/stream/physics/PhysicsBodyBudget.d.ts +26 -0
  386. package/dist/components/stream/physics/PhysicsBodySpatialIndex.d.ts +10 -0
  387. package/dist/components/stream/physics/PhysicsCanvasTheme.d.ts +26 -0
  388. package/dist/components/stream/physics/PhysicsControllers.d.ts +75 -0
  389. package/dist/components/stream/physics/PhysicsEngineAdapter.d.ts +59 -0
  390. package/dist/components/stream/physics/PhysicsEngineConformance.d.ts +23 -0
  391. package/dist/components/stream/physics/PhysicsEvidence.d.ts +25 -0
  392. package/dist/components/stream/physics/PhysicsKernel.d.ts +207 -0
  393. package/dist/components/stream/physics/PhysicsOptionalEngineAdapters.d.ts +12 -0
  394. package/dist/components/stream/physics/PhysicsPipelineStore.d.ts +86 -0
  395. package/dist/components/stream/physics/PhysicsPipelineTypes.d.ts +181 -0
  396. package/dist/components/stream/physics/PhysicsSVGOverlay.d.ts +78 -0
  397. package/dist/components/stream/physics/PhysicsSediment.d.ts +69 -0
  398. package/dist/components/stream/physics/PhysicsSettledSVG.d.ts +18 -0
  399. package/dist/components/stream/physics/PhysicsSettledScene.d.ts +21 -0
  400. package/dist/components/stream/physics/PhysicsWorkerClient.d.ts +24 -0
  401. package/dist/components/stream/physics/PhysicsWorkerProtocol.d.ts +101 -0
  402. package/dist/components/stream/physics/PhysicsWorkerRuntime.d.ts +5 -0
  403. package/dist/components/stream/physics/RapierPhysicsEngineAdapter.d.ts +18 -0
  404. package/dist/components/stream/physics/ServiceOperationsControllers.d.ts +27 -0
  405. package/dist/components/stream/physics/ServiceOperationsTypes.d.ts +89 -0
  406. package/dist/components/stream/physics/StreamPhysicsFrame.d.ts +6 -0
  407. package/dist/components/stream/physics/StreamPhysicsTypes.d.ts +317 -0
  408. package/dist/components/stream/physics/physicsBodyCanvas.d.ts +27 -0
  409. package/dist/components/stream/physics/physicsFrameObservations.d.ts +19 -0
  410. package/dist/components/stream/physics/physicsFrameSetup.d.ts +4 -0
  411. package/dist/components/stream/physics/physicsPipelineControls.d.ts +4 -0
  412. package/dist/components/stream/physics/physicsPipelineHelpers.d.ts +41 -0
  413. package/dist/components/stream/physics/physicsPipelineObservations.d.ts +14 -0
  414. package/dist/components/stream/physics/physicsPipelineUpdateResults.d.ts +27 -0
  415. package/dist/components/stream/physics/physicsRegionRuntime.d.ts +54 -0
  416. package/dist/components/stream/physics/physicsSemanticUI.d.ts +20 -0
  417. package/dist/components/stream/physics/usePhysicsFrameLifecyclePolicy.d.ts +18 -0
  418. package/dist/components/stream/pipelineBufferUtils.d.ts +26 -0
  419. package/dist/components/stream/pipelineConfig.d.ts +179 -0
  420. package/dist/components/stream/pipelineDecay.d.ts +21 -3
  421. package/dist/components/stream/pipelineDomainResolution.d.ts +62 -0
  422. package/dist/components/stream/pipelineIdentityOps.d.ts +26 -0
  423. package/dist/components/stream/pipelinePulse.d.ts +17 -3
  424. package/dist/components/stream/pipelineRibbons.d.ts +41 -0
  425. package/dist/components/stream/pipelineSpatialIndex.d.ts +12 -0
  426. package/dist/components/stream/pipelineStoreUpdateResults.d.ts +33 -0
  427. package/dist/components/stream/pipelineStyleResolvers.d.ts +46 -0
  428. package/dist/components/stream/pipelineTransitions.d.ts +3 -1
  429. package/dist/components/stream/pipelineUpdateContract.d.ts +69 -0
  430. package/dist/components/stream/pipelineUpdateStore.d.ts +21 -0
  431. package/dist/components/stream/pulseFrameRefresh.d.ts +22 -0
  432. package/dist/components/stream/renderBackend.d.ts +27 -0
  433. package/dist/components/stream/renderers/canvasRenderHelpers.d.ts +15 -1
  434. package/dist/components/stream/renderers/geoCanvasRenderer.d.ts +3 -2
  435. package/dist/components/stream/renderers/glyphCanvasRenderer.d.ts +6 -0
  436. package/dist/components/stream/renderers/networkParticleRenderer.d.ts +1 -1
  437. package/dist/components/stream/renderers/resolveCSSColor.d.ts +6 -0
  438. package/dist/components/stream/sceneRenderBackendTypes.d.ts +28 -0
  439. package/dist/components/stream/sceneRevisionDiagnostics.d.ts +45 -0
  440. package/dist/components/stream/streamSemanticTypes.d.ts +16 -0
  441. package/dist/components/stream/streamStoreSync.d.ts +37 -0
  442. package/dist/components/stream/streamThemeTypes.d.ts +14 -0
  443. package/dist/components/stream/svgOverlayUtils.d.ts +10 -0
  444. package/dist/components/stream/test-utils/frameScheduler.d.ts +12 -0
  445. package/dist/components/stream/test-utils/revisionConsumption.d.ts +13 -0
  446. package/dist/components/stream/titleLayout.d.ts +31 -0
  447. package/dist/components/stream/types.d.ts +165 -72
  448. package/dist/components/stream/useCanvasFrameHost.d.ts +71 -0
  449. package/dist/components/stream/useFrame.d.ts +44 -2
  450. package/dist/components/stream/useHydration.d.ts +6 -0
  451. package/dist/components/stream/useLegendCategoryEmission.d.ts +5 -0
  452. package/dist/components/stream/useSemanticFrameInteractions.d.ts +22 -0
  453. package/dist/components/stream/useUpdateResultSnapshot.d.ts +7 -0
  454. package/dist/components/stream/workerModuleUrl.d.ts +10 -0
  455. package/dist/components/stream/xyAnnotationAnchors.d.ts +13 -0
  456. package/dist/components/stream/xyCanvasRenderers.d.ts +7 -0
  457. package/dist/components/stream/xyCrosshair.d.ts +11 -0
  458. package/dist/components/stream/xyDateTicks.d.ts +9 -0
  459. package/dist/components/stream/xyDefaultTooltip.d.ts +10 -0
  460. package/dist/components/stream/xyFrameAxisTypes.d.ts +50 -0
  461. package/dist/components/stream/xySceneBuilders/types.d.ts +10 -9
  462. package/dist/controls.min.js +2 -0
  463. package/dist/controls.module.min.js +2 -0
  464. package/dist/forceLayoutWorker.js +1 -0
  465. package/dist/geo.min.js +1 -1
  466. package/dist/geo.module.min.js +1 -1
  467. package/dist/network.min.js +1 -1
  468. package/dist/network.module.min.js +1 -1
  469. package/dist/ordinal.min.js +1 -1
  470. package/dist/ordinal.module.min.js +1 -1
  471. package/dist/physics-matter.min.js +1 -0
  472. package/dist/physics-matter.module.min.js +1 -0
  473. package/dist/physics-rapier.min.js +1 -0
  474. package/dist/physics-rapier.module.min.js +1 -0
  475. package/dist/physics.min.js +2 -0
  476. package/dist/physics.module.min.js +2 -0
  477. package/dist/physicsWorker.js +1 -0
  478. package/dist/realtime.min.js +1 -1
  479. package/dist/realtime.module.min.js +1 -1
  480. package/dist/rough.min.js +1 -0
  481. package/dist/rough.module.min.js +1 -0
  482. package/dist/semiotic-ai-chunk-OG7BQUUW.module.min.js +2 -0
  483. package/dist/semiotic-ai-core.d.ts +47 -0
  484. package/dist/semiotic-ai-core.min.js +1 -0
  485. package/dist/semiotic-ai-core.module.min.js +1 -0
  486. package/dist/semiotic-ai-statisticalOverlays-CY4WKR4A.module.min.js +2 -0
  487. package/dist/semiotic-ai.d.ts +53 -9
  488. package/dist/semiotic-ai.min.js +1 -1
  489. package/dist/semiotic-ai.module.min.js +1 -1
  490. package/dist/semiotic-chunk-3FSVZ46U.module.min.js +2 -0
  491. package/dist/semiotic-controls.d.ts +20 -0
  492. package/dist/semiotic-data.min.js +1 -1
  493. package/dist/semiotic-data.module.min.js +1 -1
  494. package/dist/semiotic-experimental.d.ts +38 -9
  495. package/dist/semiotic-experimental.min.js +1 -1
  496. package/dist/semiotic-experimental.module.min.js +1 -1
  497. package/dist/semiotic-geo.d.ts +15 -0
  498. package/dist/semiotic-network.d.ts +15 -0
  499. package/dist/semiotic-ordinal.d.ts +14 -0
  500. package/dist/semiotic-physics-matter.d.ts +10 -0
  501. package/dist/semiotic-physics-rapier.d.ts +9 -0
  502. package/dist/semiotic-physics.d.ts +60 -0
  503. package/dist/semiotic-realtime-core.d.ts +34 -0
  504. package/dist/semiotic-realtime-core.min.js +1 -0
  505. package/dist/semiotic-realtime-core.module.min.js +1 -0
  506. package/dist/semiotic-realtime-react.d.ts +10 -0
  507. package/dist/semiotic-realtime-react.min.js +2 -0
  508. package/dist/semiotic-realtime-react.module.min.js +2 -0
  509. package/dist/semiotic-realtime.d.ts +4 -30
  510. package/dist/semiotic-recipes-core.d.ts +92 -0
  511. package/dist/semiotic-recipes-core.min.js +1 -0
  512. package/dist/semiotic-recipes-core.module.min.js +1 -0
  513. package/dist/semiotic-recipes-react.d.ts +7 -0
  514. package/dist/semiotic-recipes-react.min.js +2 -0
  515. package/dist/semiotic-recipes-react.module.min.js +2 -0
  516. package/dist/semiotic-recipes.d.ts +4 -43
  517. package/dist/semiotic-recipes.min.js +1 -1
  518. package/dist/semiotic-recipes.module.min.js +1 -1
  519. package/dist/semiotic-rough.d.ts +4 -0
  520. package/dist/semiotic-server-edge.d.ts +8 -0
  521. package/dist/semiotic-server-edge.min.js +1 -0
  522. package/dist/semiotic-server-edge.module.min.js +1 -0
  523. package/dist/semiotic-server-node.d.ts +5 -0
  524. package/dist/semiotic-server-node.min.js +1 -0
  525. package/dist/semiotic-server-node.module.min.js +1 -0
  526. package/dist/semiotic-server.d.ts +2 -2
  527. package/dist/semiotic-statisticalOverlays-UOMSFKVJ.module.min.js +2 -0
  528. package/dist/semiotic-themes-core.d.ts +53 -0
  529. package/dist/semiotic-themes-core.min.js +1 -0
  530. package/dist/semiotic-themes-core.module.min.js +1 -0
  531. package/dist/semiotic-themes-react.d.ts +4 -0
  532. package/dist/semiotic-themes-react.min.js +2 -0
  533. package/dist/semiotic-themes-react.module.min.js +2 -0
  534. package/dist/semiotic-themes.d.ts +6 -76
  535. package/dist/semiotic-themes.min.js +1 -2
  536. package/dist/semiotic-themes.module.min.js +1 -2
  537. package/dist/semiotic-utils-core.d.ts +50 -0
  538. package/dist/semiotic-utils-core.min.js +1 -0
  539. package/dist/semiotic-utils-core.module.min.js +1 -0
  540. package/dist/semiotic-utils-react.d.ts +5 -0
  541. package/dist/semiotic-utils-react.min.js +2 -0
  542. package/dist/semiotic-utils-react.module.min.js +2 -0
  543. package/dist/semiotic-utils.d.ts +3 -39
  544. package/dist/semiotic-utils.min.js +1 -2
  545. package/dist/semiotic-utils.module.min.js +1 -2
  546. package/dist/semiotic-value.min.js +1 -1
  547. package/dist/semiotic-value.module.min.js +1 -1
  548. package/dist/semiotic-xy.d.ts +12 -0
  549. package/dist/semiotic.d.ts +44 -8
  550. package/dist/semiotic.min.js +1 -1
  551. package/dist/semiotic.module.min.js +1 -1
  552. package/dist/server.min.js +1 -1
  553. package/dist/server.module.min.js +1 -1
  554. package/dist/test-utils/capturedFrameProps.d.ts +67 -0
  555. package/dist/test-utils/frameMock.d.ts +12 -9
  556. package/dist/xy-chunk-IWD6IB6V.module.min.js +2 -0
  557. package/dist/xy-statisticalOverlays-7RWG6LJT.module.min.js +2 -0
  558. package/dist/xy.min.js +1 -1
  559. package/dist/xy.module.min.js +1 -1
  560. package/package.json +259 -88
  561. package/spec/README.md +152 -0
  562. package/spec/bindings/README.md +35 -0
  563. package/spec/bindings/vega-lite.mjs +112 -0
  564. package/spec/v0.1/annotation-provenance.schema.json +127 -0
  565. package/spec/v0.1/audience-profile.schema.json +67 -0
  566. package/spec/v0.1/chart-capability.schema.json +186 -0
  567. package/dist/components/recipes/gofish.d.ts +0 -207
  568. package/dist/components/recipes/gofishInterpreter.d.ts +0 -52
  569. package/dist/components/recipes/gofishLambdas.d.ts +0 -145
  570. package/dist/semiotic-ai-semiotic-ai-u954ylUn.js +0 -2
  571. package/dist/semiotic-ai-statisticalOverlays-CU7jW05Q.js +0 -1
  572. package/dist/semiotic-semiotic-BmrYbi99.js +0 -2
  573. package/dist/semiotic-statisticalOverlays-IjZw8Lsu.js +0 -1
  574. package/dist/xy-semiotic-xy-Dufu3D0-.js +0 -2
  575. package/dist/xy-statisticalOverlays-3Ni9bRph.js +0 -1
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Pure physics pipeline helpers: spawn scheduling, colliders, cloning, hit geometry.
3
+ * Extracted from PhysicsPipelineStore so the store class stays orchestration-only.
4
+ */
5
+ import { type PhysicsActiveSensorPair, type PhysicsBodyState, type PhysicsColliderSpec, type PhysicsKernelOptions, type PhysicsKernelSnapshot } from "./PhysicsKernel";
6
+ import type { PhysicsBodyBudgetOptions } from "./PhysicsBodyBudget";
7
+ import type { PhysicsBoundsColliderOptions, PhysicsObservationEvent, PhysicsPipelineConfig, PhysicsPipelineObservationOptions, PhysicsPipelineQueuedSpawnSnapshot, PhysicsPlotBounds, PhysicsQueuedSpawn, PhysicsSensorObservationConfig, PhysicsSimulationState, PhysicsSpawnPacingOptions, PhysicsXBinColliderOptions } from "./PhysicsPipelineTypes";
8
+ export type InternalQueuedSpawn = PhysicsPipelineQueuedSpawnSnapshot;
9
+ export declare const DEFAULT_PHYSICS_PIPELINE_CONFIG: Required<Omit<PhysicsPipelineConfig, "bodyBudget" | "colliders" | "engine" | "kernel" | "observation" | "sediment">>;
10
+ export interface NormalizedObservationConfig {
11
+ chartId: string;
12
+ chartType: string;
13
+ sensors: Record<string, PhysicsSensorObservationConfig>;
14
+ onObservation?: (event: PhysicsObservationEvent) => void;
15
+ onSimulationStateChange?: (state: PhysicsSimulationState, previousState: PhysicsSimulationState) => void;
16
+ }
17
+ export declare const DEFAULT_OBSERVATION_CONFIG: NormalizedObservationConfig;
18
+ export declare function normalizeObservationConfig(options?: PhysicsPipelineObservationOptions, previous?: NormalizedObservationConfig): NormalizedObservationConfig;
19
+ export declare function cloneSpawn(spawn: PhysicsQueuedSpawn): PhysicsQueuedSpawn;
20
+ export declare function finiteNumber(value: unknown): number | undefined;
21
+ export declare function schedulePhysicsSpawns(spawns: PhysicsQueuedSpawn[], options?: PhysicsSpawnPacingOptions): PhysicsQueuedSpawn[];
22
+ export declare function cloneQueuedSpawn(spawn: InternalQueuedSpawn): InternalQueuedSpawn;
23
+ export declare function cloneColliders(colliders: PhysicsColliderSpec[]): PhysicsColliderSpec[];
24
+ export declare function cloneBodyBudgetOptions(options: false | PhysicsBodyBudgetOptions): false | PhysicsBodyBudgetOptions;
25
+ export declare function sortQueue(a: InternalQueuedSpawn, b: InternalQueuedSpawn): number;
26
+ export declare function requiredKernelOptions(kernel: PhysicsKernelSnapshot["options"]): Required<PhysicsKernelOptions>;
27
+ export declare function bodySearchRadius(body: PhysicsBodyState): number;
28
+ export declare function bodyHitDistanceSquared(body: PhysicsBodyState, x: number, y: number, radius: number): number | null;
29
+ export declare function sensorPairKey(sensorId: string, bodyId: string): string;
30
+ export declare function parseSensorPairKey(key: string): PhysicsActiveSensorPair;
31
+ export type PhysicsQuadtreeLeaf = {
32
+ data?: PhysicsBodyState;
33
+ next?: PhysicsQuadtreeLeaf;
34
+ length?: number;
35
+ };
36
+ export declare function collidersFromPlotBounds(bounds: PhysicsPlotBounds, options?: PhysicsBoundsColliderOptions): PhysicsColliderSpec[];
37
+ export declare function collidersFromXScaleBins(options: PhysicsXBinColliderOptions): PhysicsColliderSpec[];
38
+ export interface PhysicsPipelineEvictionResult {
39
+ evicted: string[];
40
+ sedimented: string[];
41
+ }
@@ -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,27 @@
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_STATE_INVALIDATIONS: readonly Invalidation[];
7
+ /** Whether a config patch rebuilds Physics' retained simulation resource. */
8
+ export type PhysicsRetainedDataEffect = "preserve" | "rebuild";
9
+ export interface PhysicsConfigPatchDependency {
10
+ readonly retainedData: PhysicsRetainedDataEffect;
11
+ readonly invalidations: readonly Invalidation[];
12
+ }
13
+ /**
14
+ * Physics config changes either rebuild the retained engine, affect the next
15
+ * simulated geometry, alter capacity presentation, or only change future
16
+ * stepping/observation behavior. This keeps direct store consumers from
17
+ * treating every physics option as a full scene-layout update.
18
+ */
19
+ export declare const PHYSICS_CONFIG_PATCH_DEPENDENCIES: Readonly<Record<string, PhysicsConfigPatchDependency>>;
20
+ export interface PhysicsConfigPatchClassification {
21
+ readonly retainedData: PhysicsRetainedDataEffect;
22
+ readonly invalidations: ReadonlySet<Invalidation>;
23
+ }
24
+ /** Union the declared effects for a patch after its effective keys are known. */
25
+ export declare function classifyPhysicsConfigPatch(keys: readonly string[]): PhysicsConfigPatchClassification;
26
+ export declare function physicsKernelOptionsEqual(a: PhysicsKernelOptions | undefined, b: PhysicsKernelOptions | undefined): boolean;
27
+ 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,18 @@
1
+ import { type MutableRefObject, type RefObject } from "react";
2
+ import type { FrameRuntime } from "../FrameRuntime";
3
+ import type { PhysicsPipelineStore } from "./PhysicsPipelineStore";
4
+ import type { PhysicsWorkerCommand } from "./PhysicsWorkerProtocol";
5
+ export declare function isPhysicsDocumentVisible(): boolean;
6
+ interface PhysicsFrameLifecyclePolicyInput {
7
+ cancelRender: () => void;
8
+ frameRuntime: FrameRuntime;
9
+ lastFrameTimeRef: MutableRefObject<number | null>;
10
+ paused: boolean;
11
+ postWorkerCommand: (command: PhysicsWorkerCommand, notifyTick?: boolean) => void;
12
+ requestRender: () => void;
13
+ storeRef: RefObject<PhysicsPipelineStore | null>;
14
+ suspendWhenHidden: boolean;
15
+ }
16
+ /** Keep pause and page-visibility scheduling policy consistent for physics frames. */
17
+ export declare function usePhysicsFrameLifecyclePolicy({ cancelRender, frameRuntime, lastFrameTimeRef, paused, postWorkerCommand, requestRender, storeRef, suspendWhenHidden }: PhysicsFrameLifecyclePolicyInput): void;
18
+ 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,179 @@
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
+ /** Optional monotonic clock owned by a frame runtime or embedding host. */
15
+ clock?: () => number;
16
+ windowSize: number;
17
+ windowMode: WindowMode;
18
+ arrowOfTime: ArrowOfTime;
19
+ extentPadding: number;
20
+ /** Pixel inset on scale ranges to prevent glyph clipping at chart edges. Default 0. */
21
+ scalePadding?: number;
22
+ /** When `"exact"`, the x and y axis domains pin to the literal data
23
+ * min/max — `extentPadding` is skipped so the first and last ticks
24
+ * read as the actual data bounds. Default `"nice"` keeps the existing
25
+ * padded domain so glyphs at the extremes don't clip the plot edge. */
26
+ axisExtent?: import("../charts/shared/axisExtent").AxisExtentMode;
27
+ /**
28
+ * Hard cap for `windowMode: "growing"`. Defaults to
29
+ * {@link DEFAULT_GROWING_MAX_CAPACITY} (100_000). Canvas scene graphs
30
+ * degrade well before the previous 1e6 ceiling; pass a higher value
31
+ * only when you know the host can afford it.
32
+ */
33
+ maxCapacity?: number;
34
+ xAccessor?: string | ((d: Datum) => CoercibleNumber);
35
+ yAccessor?: string | ((d: Datum) => CoercibleNumber);
36
+ timeAccessor?: string | ((d: Datum) => CoercibleNumber);
37
+ valueAccessor?: string | ((d: Datum) => CoercibleNumber);
38
+ colorAccessor?: string | ((d: Datum) => string);
39
+ sizeAccessor?: string | ((d: Datum) => CoercibleNumber);
40
+ /** Categorical accessor → glyph shape (scatter/bubble). Emits SymbolSceneNodes. */
41
+ symbolAccessor?: string | ((d: Datum) => string);
42
+ /** Explicit `{category → shape}` map; unmapped categories auto-assign. */
43
+ symbolMap?: Record<string, SymbolName>;
44
+ groupAccessor?: string | ((d: Datum) => string);
45
+ categoryAccessor?: string | ((d: Datum) => string);
46
+ lineDataAccessor?: string;
47
+ /**
48
+ * Escape hatch for the unusual case where a *stable* function accessor's
49
+ * captured semantics change without its identity changing (e.g. a
50
+ * `useCallback([])`-memoized closure that reads external mutable state).
51
+ * Accessor equality is identity-based, so such a change is invisible to the
52
+ * store. Bump this number to force the store to re-derive domains and rebuild
53
+ * the scene against the current accessor. Prefer changing the accessor
54
+ * identity (add the captured value to the `useCallback` dependency array);
55
+ * reach for `accessorRevision` only when you cannot. */
56
+ accessorRevision?: number;
57
+ xScaleType?: "linear" | "log" | "time";
58
+ yScaleType?: "linear" | "log" | "symlog";
59
+ xExtent?: [number | undefined, number | undefined] | [number];
60
+ yExtent?: [number | undefined, number | undefined] | [number];
61
+ sizeRange?: [number, number];
62
+ binSize?: number;
63
+ normalize?: boolean;
64
+ /** Stacked area baseline mode. Only consulted by stackedarea chart type. */
65
+ baseline?: "zero" | "wiggle" | "silhouette" | "diverging";
66
+ /** Stack order — see StreamXYFrameProps.stackOrder. */
67
+ stackOrder?: "key" | "input" | "insideOut" | "asc" | "desc";
68
+ openAccessor?: string | ((d: Datum) => CoercibleNumber);
69
+ highAccessor?: string | ((d: Datum) => CoercibleNumber);
70
+ lowAccessor?: string | ((d: Datum) => CoercibleNumber);
71
+ closeAccessor?: string | ((d: Datum) => CoercibleNumber);
72
+ candlestickStyle?: CandlestickStyle;
73
+ /** Internal: set by PipelineStore when open/close accessors are both missing */
74
+ candlestickRangeMode?: boolean;
75
+ boundsAccessor?: string | ((d: Datum) => CoercibleNumber);
76
+ boundsStyle?: Style | ((d: Datum, group?: string) => Style);
77
+ y0Accessor?: string | ((d: Datum) => CoercibleNumber);
78
+ band?: BandConfig | BandConfig[];
79
+ gradientFill?: {
80
+ topOpacity: number;
81
+ bottomOpacity: number;
82
+ } | {
83
+ colorStops: Array<{
84
+ offset: number;
85
+ color: string;
86
+ }>;
87
+ };
88
+ areaGroups?: Set<string>;
89
+ lineGradient?: {
90
+ colorStops: Array<{
91
+ offset: number;
92
+ color: string;
93
+ }>;
94
+ };
95
+ lineStyle?: Style | ((d: Datum, group?: string) => Style);
96
+ pointStyle?: (d: Datum) => Style & {
97
+ r?: number;
98
+ };
99
+ areaStyle?: (d: Datum) => Style;
100
+ swarmStyle?: {
101
+ radius?: number;
102
+ fill?: string;
103
+ opacity?: number;
104
+ stroke?: string;
105
+ strokeWidth?: number;
106
+ };
107
+ waterfallStyle?: {
108
+ positiveColor?: string;
109
+ negativeColor?: string;
110
+ connectorStroke?: string;
111
+ connectorWidth?: number;
112
+ gap?: number;
113
+ stroke?: string;
114
+ strokeWidth?: number;
115
+ };
116
+ colorScheme?: string | string[] | Record<string, string>;
117
+ /** Theme categorical palette — used as fallback when colorScheme is not an explicit array */
118
+ themeCategorical?: string[];
119
+ /**
120
+ * Theme-resolved semantic role colors. Scene builders use these as the
121
+ * default before falling back to hardcoded hex. Populated by the Stream
122
+ * Frame from the in-memory `SemioticTheme.colors` object at render time
123
+ * — the values are concrete hex (or whatever the preset declares), not
124
+ * `var(...)` strings, and so this channel does NOT participate in the
125
+ * DOM CSS cascade. Changing the ambient theme (`<ThemeProvider>`) or
126
+ * swapping to a nested provider is how you override these values.
127
+ *
128
+ * Per-scope overrides via CSS custom properties
129
+ * (e.g. `<div style={{ "--semiotic-danger": "#c00" }}>`) work only for
130
+ * values a user explicitly passes through as `var(--...)` strings in
131
+ * chart props — those are resolved via `getComputedStyle` in the
132
+ * canvas renderer at paint time (see `resolveCSSColor.ts`). The theme
133
+ * defaults in this field don't read CSS.
134
+ */
135
+ themeSemantic?: ThemeSemanticColors;
136
+ /** Theme sequential scheme name (e.g. "blues") — fallback when `colorScheme` is not explicitly set for magnitude encodings (heatmap, choropleth, size). */
137
+ themeSequential?: string;
138
+ /** Theme diverging scheme name (e.g. "RdBu") — fallback when `colorScheme` is not explicitly set for midpoint encodings (likert, bivariate, ± deviation). */
139
+ themeDiverging?: string;
140
+ barColors?: Record<string, string>;
141
+ /** Histogram bar style — fill/stroke/strokeWidth/gap. Accepted by RealtimeHistogram and routed through to the bar scene builder. */
142
+ barStyle?: BarStyle;
143
+ annotations?: Datum[];
144
+ decay?: DecayConfig;
145
+ pulse?: PulseConfig;
146
+ transition?: TransitionConfig;
147
+ /** Whether to animate elements on first render (points scale up, lines/areas clip from left, rects grow from baseline) */
148
+ introAnimation?: boolean;
149
+ staleness?: StalenessConfig;
150
+ heatmapAggregation?: "count" | "sum" | "mean";
151
+ heatmapXBins?: number;
152
+ heatmapYBins?: number;
153
+ showValues?: boolean;
154
+ heatmapValueFormat?: (v: number) => string;
155
+ pointIdAccessor?: string | ((d: Datum) => string);
156
+ curve?: CurveType;
157
+ /** When provided, replaces chart-type dispatch in scene building.
158
+ * Receives a LayoutContext (scales, dimensions, theme, resolveColor)
159
+ * and returns scene nodes plus optional overlays. */
160
+ customLayout?: CustomLayout;
161
+ /** Called when `customLayout` throws. The previous successful custom scene
162
+ * remains visible when one exists; inspect the diagnostic's `recovery` to
163
+ * distinguish that case from an initial empty-scene failure. */
164
+ onLayoutError?: (diagnostic: import("./customLayoutFailure").CustomLayoutFailureDiagnostic) => void;
165
+ /** User-supplied config blob threaded through to LayoutContext.config. */
166
+ layoutConfig?: object;
167
+ /** Resolved margin — passed through so LayoutContext.dimensions.margin reflects what the frame actually used. */
168
+ layoutMargin?: MarginType;
169
+ /** Resolved shared selection projected into LayoutContext.selection. Owned by
170
+ * a dedicated frame effect (kept off the rebuild-triggering path). */
171
+ layoutSelection?: CustomLayoutSelection | null;
172
+ }
173
+ /** Default hard cap for `windowMode: "growing"`. */
174
+ export declare const DEFAULT_GROWING_MAX_CAPACITY = 100000;
175
+ /**
176
+ * Dev-only warning threshold: when a growing buffer first crosses this
177
+ * size we log once so unbounded push loops surface before the hard cap.
178
+ */
179
+ export declare const GROWING_CAPACITY_WARN_THRESHOLD = 50000;
@@ -1,9 +1,14 @@
1
- import type { Datum } from "../charts/shared/datumTypes";
1
+ import type { Datum, DatumValue } from "../charts/shared/datumTypes";
2
2
  /**
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<DatumValue, 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
+ };
@@ -1,4 +1,4 @@
1
- import type { Datum } from "../charts/shared/datumTypes";
1
+ import type { Datum, DatumValue } from "../charts/shared/datumTypes";
2
2
  /**
3
3
  * Pulse encoding for XY pipeline scene nodes.
4
4
  *
@@ -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<DatumValue, 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 applyPulse(pulse: PulseConfig, nodes: SceneNode[], data: Datum[], timestampBuffer: RingBuffer<number>): void;
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,33 @@
1
+ import { type ChangeSet, type Invalidation, type UpdateResult } from "./pipelineUpdateContract";
2
+ /** Whether a config patch re-derives retained XY data resources. */
3
+ export type XYRetainedDataEffect = "preserve" | "rebuild";
4
+ export interface XYConfigPatchDependency {
5
+ readonly retainedData: XYRetainedDataEffect;
6
+ readonly invalidations: readonly Invalidation[];
7
+ }
8
+ /**
9
+ * XY's explicit config-patch dependency table. Accessor and chart-mode
10
+ * changes re-derive retained data; scale/layout keys preserve data while
11
+ * rebuilding derived scene state; styling and overlays repaint their own
12
+ * layers. Mount-only and future-work keys intentionally have no immediate
13
+ * revision effect.
14
+ */
15
+ export declare const XY_CONFIG_PATCH_DEPENDENCIES: Readonly<Record<string, XYConfigPatchDependency>>;
16
+ export interface XYConfigPatchClassification {
17
+ readonly retainedData: XYRetainedDataEffect;
18
+ readonly invalidations: ReadonlySet<Invalidation>;
19
+ }
20
+ /** Union the declared effects for a patch after its effective keys are known. */
21
+ export declare function classifyXYConfigPatch(keys: readonly string[]): XYConfigPatchClassification;
22
+ type DataChangeKind = Extract<ChangeSet["kind"], "ingest" | "replace" | "remove" | "update" | "clear">;
23
+ /** Result bookkeeping and invalidation policy for the XY PipelineStore pilot. */
24
+ export declare class PipelineStoreUpdateResults {
25
+ private tracker;
26
+ get last(): UpdateResult;
27
+ subscribe(listener: () => void): () => void;
28
+ recordData(kind: DataChangeKind, count?: number): UpdateResult;
29
+ recordNoop(kind: DataChangeKind | "restyle"): UpdateResult;
30
+ recordRestyle(hasCustomRestyle: boolean): UpdateResult;
31
+ recordConfig(keys: readonly string[]): UpdateResult;
32
+ }
33
+ export {};