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
@@ -16,17 +16,29 @@ import type { Datum } from "../charts/shared/datumTypes";
16
16
  * Consumed by: StreamOrdinalFrame (sole consumer).
17
17
  */
18
18
  import { type ScaleLinear } from "d3-scale";
19
- import { type Quadtree } from "d3-quadtree";
19
+ import type { Quadtree } from "d3-quadtree";
20
20
  import type { OrdinalPipelineConfig, OrdinalScales, OrdinalSceneNode, OrdinalColumn, OrdinalLayout } from "./ordinalTypes";
21
21
  import type { Changeset, PointSceneNode } from "./types";
22
22
  import type { ActiveTransition } from "./pipelineTransitionUtils";
23
+ import type { OrdinalLayoutResult } from "./ordinalCustomLayout";
23
24
  import type { CustomLayoutSelection } from "./customLayoutSelection";
24
- export declare class OrdinalPipelineStore {
25
+ import { type CustomLayoutFailureDiagnostic } from "./customLayoutFailure";
26
+ import { type UpdateResult, type UpdateResultStore } from "./pipelineUpdateStore";
27
+ import { OrdinalPipelineUpdateResults } from "./ordinalPipelineUpdateResults";
28
+ export declare class OrdinalPipelineStore implements UpdateResultStore {
29
+ getLastUpdateResult: () => UpdateResult;
30
+ getUpdateSnapshot: () => UpdateResult;
31
+ subscribeUpdateResult: (listener: () => void) => () => void;
32
+ setLayoutSelection: (selection: CustomLayoutSelection | null) => void;
33
+ markStylePaintPending: () => void;
34
+ consumeStylePaintPending: () => boolean;
25
35
  private buffer;
26
36
  private rExtent;
27
37
  /** Per-accessor extents for multiAxis mode */
28
38
  private rExtents;
29
39
  private config;
40
+ private windowSizeWarned;
41
+ protected updateResults: OrdinalPipelineUpdateResults;
30
42
  private getO;
31
43
  private getR;
32
44
  /** All resolved rAccessors (length > 1 when multiAxis) */
@@ -41,9 +53,7 @@ export declare class OrdinalPipelineStore {
41
53
  private categories;
42
54
  /** True once a non-bounded (push) changeset has been ingested */
43
55
  private _hasStreamingData;
44
- /** Lazy color map built from colorScheme for resolvePieceStyle */
45
- private _colorSchemeMap;
46
- private _colorSchemeIndex;
56
+ private styleResolver;
47
57
  private timestampBuffer;
48
58
  activeTransition: ActiveTransition | null;
49
59
  private prevPositionMap;
@@ -57,6 +67,15 @@ export declare class OrdinalPipelineStore {
57
67
  columns: Record<string, OrdinalColumn>;
58
68
  /** Overlays returned from customLayout (consumed by StreamOrdinalFrame). */
59
69
  customLayoutOverlays: import("react").ReactNode;
70
+ /** Most recent custom layout result for host readback (`getCustomLayout()`).
71
+ * Null before the first layout or without a custom layout. A failed rerun
72
+ * keeps the last successful result while its scene remains recoverable. */
73
+ lastCustomLayoutResult: OrdinalLayoutResult | null;
74
+ /** Latest custom-layout failure for frame-handle readback. */
75
+ lastCustomLayoutFailure: CustomLayoutFailureDiagnostic | null;
76
+ /** Lets `computeScene` retain a prior scene without mutating it after an
77
+ * exception from `buildSceneNodes`. */
78
+ private _customLayoutFailedThisBuild;
60
79
  private _customLayoutDiagnosticsWarned;
61
80
  /** Per-frame restyle callback from the custom layout result (see OrdinalLayoutResult.restyle). */
62
81
  private _customRestyle;
@@ -67,7 +86,8 @@ export declare class OrdinalPipelineStore {
67
86
  version: number;
68
87
  /** Bumped whenever the buffer is mutated. Used to invalidate per-frame caches. */
69
88
  private _dataVersion;
70
- private static readonly QUADTREE_THRESHOLD;
89
+ /** Materialized source data, cached for pulse/decay animation frames. */
90
+ private _bufferArrayCache;
71
91
  private _pointQuadtree;
72
92
  /** Largest visual point radius in the current scene. */
73
93
  private _maxPointRadius;
@@ -77,7 +97,16 @@ export declare class OrdinalPipelineStore {
77
97
  private _categoryIndexCache;
78
98
  private _hasRenderedOnce;
79
99
  constructor(config: OrdinalPipelineConfig);
100
+ /**
101
+ * Keep the optional pulse timestamp ring in lockstep with the datum ring.
102
+ * Enabling pulse after mount must seed timestamps for retained rows; an
103
+ * empty ring would associate later timestamps with the wrong datum index.
104
+ */
105
+ private syncPulseTimestampBuffer;
106
+ /** Keep ingest, pulse, staleness, and transition timestamps on one clock. */
107
+ private currentTime;
80
108
  ingest(changeset: Changeset): boolean;
109
+ ingestWithResult(changeset: Changeset): UpdateResult;
81
110
  private pushValueExtent;
82
111
  private evictValueExtent;
83
112
  /** For timeline type: resolve rAccessor as a [start, end] pair */
@@ -90,9 +119,6 @@ export declare class OrdinalPipelineStore {
90
119
  private getSceneContext;
91
120
  private buildSceneNodes;
92
121
  private buildLayoutContext;
93
- private resolvePieceStyle;
94
- private getColorFromScheme;
95
- private resolveSummaryStyle;
96
122
  computeDecayOpacity(bufferIndex: number, bufferSize: number): number;
97
123
  /**
98
124
  * Build (or return cached) datum→buffer-index map. Cached against
@@ -119,6 +145,12 @@ export declare class OrdinalPipelineStore {
119
145
  get maxPointRadius(): number;
120
146
  private applyDecay;
121
147
  private applyPulse;
148
+ /**
149
+ * Refresh only pulse-derived fields on the existing scene. This deliberately
150
+ * avoids a scene/layout rebuild on every rAF pulse tick.
151
+ */
152
+ refreshPulse(now: number): boolean;
153
+ hasActivePulsesAt(now: number): boolean;
122
154
  get hasActivePulses(): boolean;
123
155
  /** Synthesize a zero-state prevPositionMap for animated intro (first render). */
124
156
  private synthesizeIntroPositions;
@@ -136,6 +168,12 @@ export declare class OrdinalPipelineStore {
136
168
  * after the server already painted the chart.
137
169
  */
138
170
  cancelIntroAnimation(): void;
171
+ /**
172
+ * Materialize the ring buffer at most once per data version. Pulse decay
173
+ * ticks reuse this array and the datum/category index caches rather than
174
+ * allocating a fresh copy at animation-frame frequency.
175
+ */
176
+ private getBufferArray;
139
177
  getData(): Datum[];
140
178
  /**
141
179
  * Remove data items by ID. Requires dataIdAccessor to be configured.
@@ -151,8 +189,6 @@ export declare class OrdinalPipelineStore {
151
189
  get size(): number;
152
190
  getOAccessor(): (d: Datum) => string;
153
191
  getRAccessor(): (d: Datum) => number;
154
- /** Update the selection the layout reads at the next rebuild, without one. */
155
- setLayoutSelection(selection: CustomLayoutSelection | null): void;
156
192
  private applyCustomRestyle;
157
193
  /**
158
194
  * Re-apply the custom layout's `restyle` to the existing scene for
@@ -160,5 +196,13 @@ export declare class OrdinalPipelineStore {
160
196
  * No-op when the layout supplied no `restyle`.
161
197
  */
162
198
  restyleScene(selection: CustomLayoutSelection | null): void;
199
+ /**
200
+ * Re-derive every retained fact that depends on the category/value
201
+ * accessors. `updateConfig` can change an accessor without a subsequent
202
+ * ingest (the normal React path), so clearing only a cache would leave the
203
+ * next scene with an empty/stale domain against the existing buffer.
204
+ */
205
+ private rebuildAccessorDerivedState;
163
206
  updateConfig(config: Partial<OrdinalPipelineConfig>): void;
207
+ updateConfigWithResult(config: Partial<OrdinalPipelineConfig>): UpdateResult;
164
208
  }
@@ -4,6 +4,8 @@ import type { OrdinalScales } from "./ordinalTypes";
4
4
  import type { AnnotationContext } from "../realtime/types";
5
5
  import type { ReactNode } from "react";
6
6
  import type { LegendGroup, GradientLegendConfig, LegendLayout } from "../types/legendTypes";
7
+ import type { OnObservationCallback } from "../store/ObservationStore";
8
+ import { type OnAnnotationActivateCallback } from "../charts/shared/annotationActivation";
7
9
  import { type AutoPlaceAnnotations } from "../recipes/annotationLayout";
8
10
  import { type AxisExtentMode } from "../charts/shared/axisExtent";
9
11
  interface OrdinalSVGOverlayProps {
@@ -53,14 +55,20 @@ interface OrdinalSVGOverlayProps {
53
55
  legendLayout?: LegendLayout;
54
56
  foregroundGraphics?: ReactNode;
55
57
  annotations?: Datum[];
58
+ onAnnotationActivate?: OnAnnotationActivateCallback;
59
+ onObservation?: OnObservationCallback;
60
+ chartId?: string;
61
+ chartType?: string;
56
62
  autoPlaceAnnotations?: AutoPlaceAnnotations;
57
63
  svgAnnotationRules?: (annotation: Datum, index: number, context: AnnotationContext) => ReactNode;
58
64
  annotationFrame?: number;
59
65
  xAccessor?: string;
60
66
  yAccessor?: string;
61
67
  annotationData?: Datum[];
62
- /** When true, grid lines and axis baselines are skipped (rendered by OrdinalSVGUnderlay instead) */
68
+ /** When true, grid lines and axis baselines are also rendered by OrdinalSVGUnderlay. */
63
69
  underlayRendered?: boolean;
70
+ /** Whether an opaque canvas hides the SVG underlay and needs an overlay copy. */
71
+ canvasObscuresUnderlay?: boolean;
64
72
  children?: ReactNode;
65
73
  }
66
74
  interface OrdinalSVGUnderlayProps {
@@ -0,0 +1,12 @@
1
+ import type { Datum } from "../charts/shared/datumTypes";
2
+ import type { OrdinalPipelineConfig } from "./ordinalTypes";
3
+ import type { Style } from "./types";
4
+ /** Resolves ordinal mark styles while retaining stable category colors. */
5
+ export declare class OrdinalStyleResolver {
6
+ private colorSchemeMap;
7
+ private colorSchemeIndex;
8
+ resetColors(): void;
9
+ resolvePieceStyle(config: OrdinalPipelineConfig, datum: Datum | null, category?: string): Style;
10
+ resolveSummaryStyle(config: OrdinalPipelineConfig, datum: Datum | null, category?: string): Style;
11
+ private getColorFromScheme;
12
+ }
@@ -17,7 +17,7 @@ export declare class ParticlePool {
17
17
  * Spawn a new particle on the given edge.
18
18
  * Returns the particle if a free slot was found, null otherwise.
19
19
  */
20
- spawn(edgeIndex: number): Particle | null;
20
+ spawn(edgeIndex: number, random?: () => number): Particle | null;
21
21
  /**
22
22
  * Advance all active particles by deltaTime.
23
23
  * Recycles particles that have completed their journey (t >= 1).
@@ -1,160 +1,50 @@
1
1
  import type { Datum } from "../charts/shared/datumTypes";
2
- import { type Quadtree } from "d3-quadtree";
2
+ /**
3
+ * PipelineStore — stateful pipeline for XY/streaming chart data.
4
+ *
5
+ * Owns: data ingestion (RingBuffer), extent tracking, scale computation,
6
+ * scene layout delegation (via xySceneBuilders/), transition animation,
7
+ * decay/pulse/staleness encoding, and quadtree spatial indexing.
8
+ *
9
+ * Scene building was extracted to xySceneBuilders/ — this store constructs
10
+ * an XYSceneContext and dispatches to the appropriate builder function.
11
+ *
12
+ * Key dependencies:
13
+ * xySceneBuilders/ — per-chartType scene layout (line, area, point, etc.)
14
+ * SceneGraph — node constructors (buildLineNode, buildPointNode, etc.)
15
+ * RingBuffer — sliding window data storage
16
+ * IncrementalExtent — O(1) min/max tracking
17
+ *
18
+ * Consumed by: StreamXYFrame (sole consumer).
19
+ */
3
20
  import { RingBuffer } from "../realtime/RingBuffer";
4
- import type { Changeset, StreamChartType, StreamScales, StreamLayout, SceneNode, PointSceneNode, CandlestickStyle, Style, ArrowOfTime, WindowMode, DecayConfig, PulseConfig, TransitionConfig, StalenessConfig, CurveType, BarStyle, ThemeSemanticColors, BandConfig } from "./types";
5
- import type { SymbolName } from "./symbolPath";
6
- import { type CoercibleNumber } from "./accessorUtils";
7
- import type { ActiveTransition } from "./pipelineTransitionUtils";
21
+ import type { Changeset, StreamScales, StreamLayout, SceneNode } from "./types";
22
+ import { type ActiveTransition } from "./pipelineTransitionUtils";
8
23
  import type { ResolvedRibbon } from "./xySceneBuilders/ribbonScene";
9
- import type { CustomLayout } from "./customLayout";
24
+ import type { LayoutResult } from "./customLayout";
10
25
  import type { CustomLayoutSelection } from "./customLayoutSelection";
11
- import type { MarginType } from "../types/marginType";
12
- export interface PipelineConfig {
13
- chartType: StreamChartType;
14
- runtimeMode?: "streaming" | "bounded";
15
- windowSize: number;
16
- windowMode: WindowMode;
17
- arrowOfTime: ArrowOfTime;
18
- extentPadding: number;
19
- /** Pixel inset on scale ranges to prevent glyph clipping at chart edges. Default 0. */
20
- scalePadding?: number;
21
- /** When `"exact"`, the x and y axis domains pin to the literal data
22
- * min/max `extentPadding` is skipped so the first and last ticks
23
- * read as the actual data bounds. Default `"nice"` keeps the existing
24
- * padded domain so glyphs at the extremes don't clip the plot edge. */
25
- axisExtent?: import("../charts/shared/axisExtent").AxisExtentMode;
26
- maxCapacity?: number;
27
- xAccessor?: string | ((d: Datum) => CoercibleNumber);
28
- yAccessor?: string | ((d: Datum) => CoercibleNumber);
29
- timeAccessor?: string | ((d: Datum) => CoercibleNumber);
30
- valueAccessor?: string | ((d: Datum) => CoercibleNumber);
31
- colorAccessor?: string | ((d: Datum) => string);
32
- sizeAccessor?: string | ((d: Datum) => CoercibleNumber);
33
- /** Categorical accessor → glyph shape (scatter/bubble). Emits SymbolSceneNodes. */
34
- symbolAccessor?: string | ((d: Datum) => string);
35
- /** Explicit `{category → shape}` map; unmapped categories auto-assign. */
36
- symbolMap?: Record<string, SymbolName>;
37
- groupAccessor?: string | ((d: Datum) => string);
38
- categoryAccessor?: string | ((d: Datum) => string);
39
- lineDataAccessor?: string;
40
- xScaleType?: "linear" | "log" | "time";
41
- yScaleType?: "linear" | "log";
42
- xExtent?: [number | undefined, number | undefined] | [number];
43
- yExtent?: [number | undefined, number | undefined] | [number];
44
- sizeRange?: [number, number];
45
- binSize?: number;
46
- normalize?: boolean;
47
- /** Stacked area baseline mode. Only consulted by stackedarea chart type. */
48
- baseline?: "zero" | "wiggle" | "silhouette";
49
- /** Stack order — see StreamXYFrameProps.stackOrder. */
50
- stackOrder?: "key" | "insideOut" | "asc" | "desc";
51
- openAccessor?: string | ((d: Datum) => CoercibleNumber);
52
- highAccessor?: string | ((d: Datum) => CoercibleNumber);
53
- lowAccessor?: string | ((d: Datum) => CoercibleNumber);
54
- closeAccessor?: string | ((d: Datum) => CoercibleNumber);
55
- candlestickStyle?: CandlestickStyle;
56
- /** Internal: set by PipelineStore when open/close accessors are both missing */
57
- candlestickRangeMode?: boolean;
58
- boundsAccessor?: string | ((d: Datum) => CoercibleNumber);
59
- boundsStyle?: any;
60
- y0Accessor?: string | ((d: Datum) => CoercibleNumber);
61
- band?: BandConfig | BandConfig[];
62
- gradientFill?: {
63
- topOpacity: number;
64
- bottomOpacity: number;
65
- } | {
66
- colorStops: Array<{
67
- offset: number;
68
- color: string;
69
- }>;
70
- };
71
- areaGroups?: Set<string>;
72
- lineGradient?: {
73
- colorStops: Array<{
74
- offset: number;
75
- color: string;
76
- }>;
77
- };
78
- lineStyle?: any;
79
- pointStyle?: (d: Datum) => Style & {
80
- r?: number;
81
- };
82
- areaStyle?: (d: Datum) => Style;
83
- swarmStyle?: {
84
- radius?: number;
85
- fill?: string;
86
- opacity?: number;
87
- stroke?: string;
88
- strokeWidth?: number;
89
- };
90
- waterfallStyle?: {
91
- positiveColor?: string;
92
- negativeColor?: string;
93
- connectorStroke?: string;
94
- connectorWidth?: number;
95
- gap?: number;
96
- stroke?: string;
97
- strokeWidth?: number;
98
- };
99
- colorScheme?: string | string[];
100
- /** Theme categorical palette — used as fallback when colorScheme is not an explicit array */
101
- themeCategorical?: string[];
102
- /**
103
- * Theme-resolved semantic role colors. Scene builders use these as the
104
- * default before falling back to hardcoded hex. Populated by the Stream
105
- * Frame from the in-memory `SemioticTheme.colors` object at render time
106
- * — the values are concrete hex (or whatever the preset declares), not
107
- * `var(...)` strings, and so this channel does NOT participate in the
108
- * DOM CSS cascade. Changing the ambient theme (`<ThemeProvider>`) or
109
- * swapping to a nested provider is how you override these values.
110
- *
111
- * Per-scope overrides via CSS custom properties
112
- * (e.g. `<div style={{ "--semiotic-danger": "#c00" }}>`) work only for
113
- * values a user explicitly passes through as `var(--...)` strings in
114
- * chart props — those are resolved via `getComputedStyle` in the
115
- * canvas renderer at paint time (see `resolveCSSColor.ts`). The theme
116
- * defaults in this field don't read CSS.
117
- */
118
- themeSemantic?: ThemeSemanticColors;
119
- /** Theme sequential scheme name (e.g. "blues") — fallback when `colorScheme` is not explicitly set for magnitude encodings (heatmap, choropleth, size). */
120
- themeSequential?: string;
121
- /** Theme diverging scheme name (e.g. "RdBu") — fallback when `colorScheme` is not explicitly set for midpoint encodings (likert, bivariate, ± deviation). */
122
- themeDiverging?: string;
123
- barColors?: Record<string, string>;
124
- /** Histogram bar style — fill/stroke/strokeWidth/gap. Accepted by RealtimeHistogram and routed through to the bar scene builder. */
125
- barStyle?: BarStyle;
126
- annotations?: Datum[];
127
- decay?: DecayConfig;
128
- pulse?: PulseConfig;
129
- transition?: TransitionConfig;
130
- /** Whether to animate elements on first render (points scale up, lines/areas clip from left, rects grow from baseline) */
131
- introAnimation?: boolean;
132
- staleness?: StalenessConfig;
133
- heatmapAggregation?: "count" | "sum" | "mean";
134
- heatmapXBins?: number;
135
- heatmapYBins?: number;
136
- showValues?: boolean;
137
- heatmapValueFormat?: (v: number) => string;
138
- pointIdAccessor?: string | ((d: Datum) => string);
139
- curve?: CurveType;
140
- /** When provided, replaces chart-type dispatch in scene building.
141
- * Receives a LayoutContext (scales, dimensions, theme, resolveColor)
142
- * and returns scene nodes plus optional overlays. */
143
- customLayout?: CustomLayout;
144
- /** User-supplied config blob threaded through to LayoutContext.config. */
145
- layoutConfig?: object;
146
- /** Resolved margin — passed through so LayoutContext.dimensions.margin reflects what the frame actually used. */
147
- layoutMargin?: MarginType;
148
- /** Resolved shared selection projected into LayoutContext.selection. Owned by
149
- * a dedicated frame effect (kept off the rebuild-triggering path). */
150
- layoutSelection?: CustomLayoutSelection | null;
151
- }
152
- export declare class PipelineStore {
26
+ import { type CustomLayoutFailureDiagnostic } from "./customLayoutFailure";
27
+ import { type PipelineConfig } from "./pipelineConfig";
28
+ import type { UpdateResult } from "./pipelineUpdateContract";
29
+ import { type UpdateResultStore } from "./pipelineUpdateStore";
30
+ import { PipelineStoreUpdateResults } from "./pipelineStoreUpdateResults";
31
+ export type { PipelineConfig } from "./pipelineConfig";
32
+ export type { ChangeSet, Invalidation, RevisionSet, UpdateResult, } from "./pipelineUpdateContract";
33
+ export { DEFAULT_GROWING_MAX_CAPACITY, GROWING_CAPACITY_WARN_THRESHOLD } from "./pipelineConfig";
34
+ export declare class PipelineStore implements UpdateResultStore {
35
+ getLastUpdateResult: () => UpdateResult;
36
+ getUpdateSnapshot: () => UpdateResult;
37
+ subscribeUpdateResult: (listener: () => void) => () => void;
38
+ setLayoutSelection: (selection: CustomLayoutSelection | null) => void;
39
+ markStylePaintPending: () => void;
40
+ consumeStylePaintPending: () => boolean;
153
41
  private buffer;
154
42
  private xExtent;
155
43
  private yExtent;
156
44
  private config;
157
45
  private growingCap;
46
+ private growingCapacityWarned;
47
+ private windowSizeWarned;
158
48
  private getX;
159
49
  private getY;
160
50
  private getGroup;
@@ -182,6 +72,8 @@ export declare class PipelineStore {
182
72
  /** Exit nodes awaiting fade-out removal */
183
73
  exitNodes: SceneNode[];
184
74
  lastIngestTime: number;
75
+ /** Keep ingest, pulse, staleness, and transition timestamps on one clock. */
76
+ private currentTime;
185
77
  /** Unified color map cache keyed by sorted category set — shared across point, swarm, etc. */
186
78
  private _colorMapCache;
187
79
  /** groupData() result cache. The line/area/stacked-area builders all re-bucket
@@ -206,17 +98,32 @@ export declare class PipelineStore {
206
98
  private _stackExtentCache;
207
99
  /** Monotonic counter incremented on each ingest — used as part of cache keys */
208
100
  private _ingestVersion;
101
+ /** Datum→index map for decay/pulse, cached by `_ingestVersion`. */
102
+ private _datumIndexCache;
209
103
  /** Cached materialized array from buffer.toArray() — only rebuilt when buffer changes */
210
104
  private _bufferArrayCache;
211
105
  /** True when the buffer has been mutated since last toArray() call */
212
106
  private _bufferDirty;
213
107
  private needsFullRebuild;
214
108
  private lastLayout;
109
+ protected updateResults: PipelineStoreUpdateResults;
215
110
  scales: StreamScales | null;
216
111
  scene: SceneNode[];
217
112
  version: number;
218
113
  /** Overlays returned from customLayout (consumed by StreamXYFrame for SVGOverlay). */
219
114
  customLayoutOverlays: import("react").ReactNode;
115
+ /** The most recent custom layout result, exposed for host readback via the
116
+ * frame handle's `getCustomLayout()` — so a page that needs the computed
117
+ * placement (stats, inspectors) doesn't re-run the layout. Null before the
118
+ * first layout or when no custom layout is set. A rerun failure preserves
119
+ * this last successful result when it is safe to do so. */
120
+ lastCustomLayoutResult: LayoutResult | null;
121
+ /** Latest custom-layout failure for frame-handle readback. */
122
+ lastCustomLayoutFailure: CustomLayoutFailureDiagnostic | null;
123
+ /** Set only while `buildSceneNodes` is recovering from a layout exception.
124
+ * `computeScene` uses it to retain the previous scene/scales without applying
125
+ * a new transition, pulse, or decay pass to that retained output. */
126
+ private _customLayoutFailedThisBuild;
220
127
  private _customLayoutDiagnosticsWarned;
221
128
  /** Per-frame restyle callback from the custom layout result (see LayoutResult.restyle). */
222
129
  private _customRestyle;
@@ -226,14 +133,23 @@ export declare class PipelineStore {
226
133
  private _baseStyles;
227
134
  /** True when the x accessor returns Date objects (auto-detected on first data ingestion) */
228
135
  xIsDate: boolean;
229
- private _quadtree;
230
- /** Largest visual point radius in the current scene. The hit tester uses
231
- * this to widen its quadtree query so points with big radii (bubble) don't
232
- * fall outside the search region. */
233
- private _maxPointRadius;
234
- private static readonly QUADTREE_THRESHOLD;
136
+ private spatialIndex;
235
137
  constructor(config: PipelineConfig);
138
+ /**
139
+ * Keep pulse timestamps structurally coupled to the datum ring when pulse
140
+ * is changed after construction. A fresh timestamp ring must be seeded for
141
+ * already-retained data; otherwise the next push would be timestamp index 0
142
+ * while its datum is at the end of the data ring.
143
+ */
144
+ private syncPulseTimestampBuffer;
236
145
  private pushDatumYExtent;
146
+ /**
147
+ * Remove every y-domain contribution made by {@link pushDatumYExtent}.
148
+ * Keeping these paths paired is important: a ribbon/band can extend the
149
+ * visible domain beyond the point itself, so removing or replacing that
150
+ * datum must evict its envelope extrema too.
151
+ */
152
+ private evictDatumYExtent;
237
153
  private rebuildYExtent;
238
154
  private rebuildExtents;
239
155
  private _lastBoundedInsertsRef;
@@ -250,20 +166,14 @@ export declare class PipelineStore {
250
166
  * meaningful — streaming consumers don't pass the same array twice.
251
167
  */
252
168
  ingest(changeset: Changeset): boolean;
169
+ /** Additive explicit-result form of {@link ingest}; `ingest()` remains unchanged. */
170
+ ingestWithResult(changeset: Changeset): UpdateResult;
253
171
  /**
254
172
  * Recompute scales and scene graph for the current buffer contents.
255
173
  */
256
174
  computeScene(layout: StreamLayout): void;
257
- /**
258
- * Build or clear the quadtree spatial index for point scene nodes.
259
- * Only built for scatter/bubble charts with >QUADTREE_THRESHOLD points.
260
- */
261
- private rebuildQuadtree;
262
- /**
263
- * Get the quadtree spatial index, if available.
264
- * Returns null when chart type is not scatter/bubble or point count is below threshold.
265
- */
266
- get quadtree(): Quadtree<PointSceneNode> | null;
175
+ /** Get the retained point-scene spatial index, if available. */
176
+ get quadtree(): import("d3-quadtree").Quadtree<import("./types").PointSceneNode> | null;
267
177
  /** Largest visual point radius in the current scene. */
268
178
  get maxPointRadius(): number;
269
179
  /**
@@ -274,8 +184,12 @@ export declare class PipelineStore {
274
184
  private buildSceneNodes;
275
185
  private resolveBoundsStyle;
276
186
  computeDecayOpacity(bufferIndex: number, bufferSize: number): number;
187
+ private getDatumIndexMap;
277
188
  private applyDecay;
278
189
  private applyPulse;
190
+ /** Refresh pulse fields without rebuilding layout; retained custom scenes stay immutable. */
191
+ refreshPulse(now: number): boolean;
192
+ hasActivePulsesAt(now: number): boolean;
279
193
  get hasActivePulses(): boolean;
280
194
  private get transitionContext();
281
195
  private snapshotPositions;
@@ -317,13 +231,6 @@ export declare class PipelineStore {
317
231
  private resolveColorMap;
318
232
  private resolveLineStyle;
319
233
  private resolveAreaStyle;
320
- /** Resolve a group name to a color from the cached color map or a dedicated group palette.
321
- * First checks _colorMapCache (populated by resolveColorMap when colorAccessor is set).
322
- * Falls back to _groupColorMap (insertion-order, never mutates _colorMapCache).
323
- *
324
- * FIFO-evicts the oldest entry when the map exceeds `GROUP_COLOR_MAP_CAP`. The palette index
325
- * uses `_groupColorCounter` (monotonic, decoupled from map size) so eviction doesn't cause
326
- * new groups to collide with existing entries on a shrunk map. */
327
234
  private resolveGroupColor;
328
235
  /**
329
236
  * Return a cached materialized array of the buffer contents.
@@ -356,15 +263,15 @@ export declare class PipelineStore {
356
263
  getXAccessor(): (d: Datum) => number;
357
264
  getYAccessor(): (d: Datum) => number;
358
265
  getCategoryAccessor(): ((d: Datum) => string) | undefined;
359
- /** Update the selection the layout reads at the next rebuild, without
360
- * triggering one. The frame then either repaints (restyle) or rebuilds. */
361
- setLayoutSelection(selection: CustomLayoutSelection | null): void;
362
266
  private applyCustomRestyle;
363
267
  /**
364
268
  * Re-apply the custom layout's `restyle` to the existing scene for
365
269
  * `selection`, off each node's base style — no relayout, no quadtree rebuild
366
270
  * (positions are unchanged). No-op when the layout supplied no `restyle`.
271
+ * Flags a style-only repaint so the render loop redraws the mutated styles.
367
272
  */
368
273
  restyleScene(selection: CustomLayoutSelection | null): void;
369
274
  updateConfig(config: Partial<PipelineConfig>): void;
275
+ /** Additive explicit-result form of {@link updateConfig}. */
276
+ updateConfigWithResult(config: Partial<PipelineConfig>): UpdateResult;
370
277
  }
@@ -5,6 +5,8 @@ import type { AnnotationContext } from "../realtime/types";
5
5
  import type { ReactNode } from "react";
6
6
  import type { LegendGroup, GradientLegendConfig, LegendLayout } from "../types/legendTypes";
7
7
  import { type AutoPlaceAnnotations } from "../recipes/annotationLayout";
8
+ import type { OnObservationCallback } from "../store/ObservationStore";
9
+ import { type OnAnnotationActivateCallback } from "../charts/shared/annotationActivation";
8
10
  export type AxisConfig = XYFrameAxisConfig;
9
11
  interface SVGOverlayProps {
10
12
  width: number;
@@ -59,6 +61,10 @@ interface SVGOverlayProps {
59
61
  xValues?: number[];
60
62
  yValues?: number[];
61
63
  annotations?: Datum[];
64
+ onAnnotationActivate?: OnAnnotationActivateCallback;
65
+ onObservation?: OnObservationCallback;
66
+ chartId?: string;
67
+ chartType?: string;
62
68
  autoPlaceAnnotations?: AutoPlaceAnnotations;
63
69
  svgAnnotationRules?: (annotation: Datum, index: number, context: AnnotationContext) => ReactNode;
64
70
  annotationFrame?: number;
@@ -1,11 +1,11 @@
1
- import type { SceneNode, LineSceneNode, AreaSceneNode, PointSceneNode, SymbolSceneNode, RectSceneNode, HeatcellSceneNode, Style, StreamScales, CurveType } from "./types";
1
+ import type { SceneNode, SceneDatum, LineSceneNode, AreaSceneNode, PointSceneNode, SymbolSceneNode, RectSceneNode, HeatcellSceneNode, Style, StreamScales, CurveType } from "./types";
2
2
  import type { SymbolName } from "./symbolPath";
3
3
  import type { Datum } from "../charts/shared/datumTypes";
4
4
  export declare function buildLineNode(data: Datum[], scales: StreamScales, xGet: (d: Datum) => number, yGet: (d: Datum) => number, style: Style, group?: string): LineSceneNode;
5
5
  export declare function buildAreaNode(data: Datum[], scales: StreamScales, xGet: (d: Datum) => number, yGet: (d: Datum) => number, baselineY: number, style: Style, group?: string, y0Get?: (d: Datum) => number): AreaSceneNode;
6
6
  /** Per-group-per-x stacked top values, keyed by group then x */
7
7
  export type StackedTops = Map<string, Map<number, number>>;
8
- export type StackBaseline = "zero" | "wiggle" | "silhouette";
8
+ export type StackBaseline = "zero" | "wiggle" | "silhouette" | "diverging";
9
9
  /**
10
10
  * Compute per-x stack baseline offsets. Shared between scene rendering
11
11
  * (`buildStackedAreaNodes`) and extent computation (`PipelineStore`) so
@@ -17,8 +17,16 @@ export type StackBaseline = "zero" | "wiggle" | "silhouette";
17
17
  * xValues — sorted unique x values
18
18
  * groupKeys — group keys in stacking order (same order both callers use)
19
19
  * valueAt — (groupKey, x) → group's value at x (0 if absent)
20
+ *
21
+ * `"diverging"` returns zero offsets — positives and negatives stack from
22
+ * y=0 independently inside {@link buildStackedAreaNodes}.
20
23
  */
21
24
  export declare function computeStackOffsets(xValues: number[], groupKeys: string[], valueAt: (groupKey: string, x: number) => number, baseline: StackBaseline): Map<number, number>;
25
+ /**
26
+ * Diverging stack extent: positives accumulate above 0, negatives below.
27
+ * Shared by PipelineStore auto-extent and any host that needs matching bounds.
28
+ */
29
+ export declare function computeDivergingStackExtent(xValues: number[], groupKeys: string[], valueAt: (groupKey: string, x: number) => number): [number, number];
22
30
  export declare function buildStackedAreaNodes(groups: {
23
31
  key: string;
24
32
  data: Datum[];
@@ -30,8 +38,8 @@ export declare function buildPointNode(datum: Datum, scales: StreamScales, xGet:
30
38
  /** Build a {@link SymbolSceneNode} — the glyph sibling of {@link buildPointNode}.
31
39
  * `size` is the d3-symbol area (px²); convert from a target radius with πr². */
32
40
  export declare function buildSymbolNode(datum: Datum, scales: StreamScales, xGet: (d: Datum) => number, yGet: (d: Datum) => number, size: number, symbolType: SymbolName, style: Style, pointId?: string): SymbolSceneNode | null;
33
- export declare function buildRectNode(x: number, y: number, w: number, h: number, style: Style, datum: any, group?: string): RectSceneNode;
34
- export declare function buildHeatcellNode(x: number, y: number, w: number, h: number, fill: string, datum: any, options?: {
41
+ export declare function buildRectNode(x: number, y: number, w: number, h: number, style: Style, datum: SceneDatum, group?: string): RectSceneNode;
42
+ export declare function buildHeatcellNode(x: number, y: number, w: number, h: number, fill: string, datum: Datum, options?: {
35
43
  value?: number;
36
44
  showValues?: boolean;
37
45
  valueFormat?: (v: number) => string;
@@ -1,5 +1,5 @@
1
1
  import type { Datum } from "../charts/shared/datumTypes";
2
2
  import * as React from "react";
3
3
  import type { StreamGeoFrameProps, StreamGeoFrameHandle } from "./geoTypes";
4
- declare const StreamGeoFrame: React.ForwardRefExoticComponent<StreamGeoFrameProps<Datum> & React.RefAttributes<StreamGeoFrameHandle>>;
4
+ declare const StreamGeoFrame: React.NamedExoticComponent<StreamGeoFrameProps<Datum> & React.RefAttributes<StreamGeoFrameHandle>>;
5
5
  export default StreamGeoFrame;
@@ -1,5 +1,5 @@
1
1
  import type { Datum } from "../charts/shared/datumTypes";
2
2
  import * as React from "react";
3
3
  import type { StreamNetworkFrameProps, StreamNetworkFrameHandle } from "./networkTypes";
4
- declare const StreamNetworkFrame: React.ForwardRefExoticComponent<StreamNetworkFrameProps<Datum> & React.RefAttributes<StreamNetworkFrameHandle>>;
4
+ declare const StreamNetworkFrame: React.NamedExoticComponent<StreamNetworkFrameProps<Datum> & React.RefAttributes<StreamNetworkFrameHandle>>;
5
5
  export default StreamNetworkFrame;
@@ -1,5 +1,5 @@
1
1
  import type { Datum } from "../charts/shared/datumTypes";
2
2
  import * as React from "react";
3
3
  import type { StreamOrdinalFrameProps, StreamOrdinalFrameHandle } from "./ordinalTypes";
4
- declare const StreamOrdinalFrame: React.ForwardRefExoticComponent<StreamOrdinalFrameProps<Datum> & React.RefAttributes<StreamOrdinalFrameHandle<Datum>>>;
4
+ declare const StreamOrdinalFrame: React.NamedExoticComponent<StreamOrdinalFrameProps<Datum> & React.RefAttributes<StreamOrdinalFrameHandle<Datum>>>;
5
5
  export default StreamOrdinalFrame;
@@ -1,22 +1,6 @@
1
1
  import type { Datum } from "../charts/shared/datumTypes";
2
2
  import * as React from "react";
3
3
  import type { StreamXYFrameProps, StreamXYFrameHandle } from "./types";
4
- /**
5
- * Append a 2-char hex alpha to an existing CSS color, returning a valid
6
- * CSS color string. The naive `${color}${alpha}` concatenation only works
7
- * when `color` is a 6-char `#rrggbb`; shorthand `#rgb` produces the
8
- * invalid 5-char `#rgbXX`, which `ctx.strokeStyle`/`fillStyle` silently
9
- * rejects (falling back to `#000000` — black, invisible on dark themes).
10
- * The /cookbook/marginal-graphics crosshair invisibility was caused
11
- * precisely by `--semiotic-text-secondary: "#aaa"` hitting this path.
12
- *
13
- * Handles:
14
- * • 3-char hex (`#abc`) → expanded to 6-char then concatenated
15
- * • 6-char hex (`#aabbcc`) → concatenated directly
16
- * • `rgb(...)` → repacked as `rgba(..., a)` with numeric alpha
17
- * Any other form (named colors, hsl(), oklch(), etc.) falls back to the
18
- * raw color without alpha — degrades gracefully.
19
- */
20
- export declare function withAlpha(color: string, alphaHex: string): string;
21
- declare const StreamXYFrame: React.ForwardRefExoticComponent<StreamXYFrameProps<Datum> & React.RefAttributes<StreamXYFrameHandle<Datum>>>;
4
+ export { withAlpha } from "./frameThemeColors";
5
+ declare const StreamXYFrame: React.NamedExoticComponent<StreamXYFrameProps<Datum> & React.RefAttributes<StreamXYFrameHandle<Datum>>>;
22
6
  export default StreamXYFrame;