semiotic 3.7.5 → 3.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (481) hide show
  1. package/CLAUDE.md +54 -12
  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 +1651 -154
  7. package/ai/examples.md +174 -0
  8. package/ai/schema.json +2733 -536
  9. package/ai/surface-manifest.json +200 -0
  10. package/ai/system-prompt.md +18 -3
  11. package/dist/components/CategoryColors.d.ts +1 -1
  12. package/dist/components/ChartContainer.d.ts +91 -0
  13. package/dist/components/ChartGrid.d.ts +11 -1
  14. package/dist/components/CircularBrush.d.ts +61 -0
  15. package/dist/components/ContextLayout.d.ts +5 -1
  16. package/dist/components/DirectManipulationControl.d.ts +63 -0
  17. package/dist/components/LinkedCharts.d.ts +3 -1
  18. package/dist/components/MobileAnnotationCalloutList.d.ts +13 -0
  19. package/dist/components/MobileChartContainer.d.ts +51 -0
  20. package/dist/components/MobileStandardControls.d.ts +68 -0
  21. package/dist/components/SmallMultipleChart.d.ts +84 -0
  22. package/dist/components/Tooltip/FlippingTooltip.d.ts +21 -0
  23. package/dist/components/ai/ChartRecipe.d.ts +16 -0
  24. package/dist/components/ai/IntentMark.d.ts +15 -0
  25. package/dist/components/ai/chartCapabilities.d.ts +8 -1
  26. package/dist/components/ai/chartCapabilityTypes.d.ts +26 -1
  27. package/dist/components/ai/chartClinic.d.ts +91 -0
  28. package/dist/components/ai/chartRecipeRegistry.d.ts +14 -0
  29. package/dist/components/ai/chartRecipes.d.ts +278 -0
  30. package/dist/components/ai/dataPitfallsBridge.d.ts +102 -0
  31. package/dist/components/ai/describeChart.d.ts +7 -0
  32. package/dist/components/ai/describeRecipeChart.d.ts +16 -0
  33. package/dist/components/ai/generativeChart.d.ts +28 -3
  34. package/dist/components/ai/intentManifest.d.ts +62 -0
  35. package/dist/components/ai/navigationTree.d.ts +3 -0
  36. package/dist/components/ai/observedSceneAudit.d.ts +72 -0
  37. package/dist/components/ai/readerGrounding.d.ts +83 -0
  38. package/dist/components/ai/recipeCapability.d.ts +8 -0
  39. package/dist/components/ai/recipeNavigation.d.ts +13 -0
  40. package/dist/components/ai/recipeSemantics.d.ts +11 -0
  41. package/dist/components/ai/repairChartConfig.d.ts +9 -0
  42. package/dist/components/ai/suggestCharts.d.ts +11 -1
  43. package/dist/components/charts/custom/GeoCustomChart.d.ts +48 -0
  44. package/dist/components/charts/custom/NetworkCustomChart.d.ts +8 -2
  45. package/dist/components/charts/custom/OrdinalCustomChart.d.ts +8 -2
  46. package/dist/components/charts/custom/XYCustomChart.d.ts +11 -2
  47. package/dist/components/charts/geo/DistanceCartogram.d.ts +1 -1
  48. package/dist/components/charts/geo/FlowMap.d.ts +1 -1
  49. package/dist/components/charts/geo/ProportionalSymbolMap.d.ts +1 -1
  50. package/dist/components/charts/geo/index.d.ts +2 -0
  51. package/dist/components/charts/index.d.ts +29 -1
  52. package/dist/components/charts/network/ChordDiagram.d.ts +1 -1
  53. package/dist/components/charts/network/CirclePack.d.ts +1 -1
  54. package/dist/components/charts/network/ForceDirectedGraph.d.ts +15 -5
  55. package/dist/components/charts/network/OrbitDiagram.d.ts +1 -1
  56. package/dist/components/charts/network/ProcessSankey.d.ts +1 -1
  57. package/dist/components/charts/network/SankeyDiagram.d.ts +1 -1
  58. package/dist/components/charts/network/TreeDiagram.d.ts +1 -1
  59. package/dist/components/charts/network/Treemap.d.ts +1 -1
  60. package/dist/components/charts/network/useForceLayout.d.ts +17 -0
  61. package/dist/components/charts/ordinal/BarChart.d.ts +1 -1
  62. package/dist/components/charts/ordinal/BoxPlot.d.ts +1 -1
  63. package/dist/components/charts/ordinal/DonutChart.d.ts +1 -1
  64. package/dist/components/charts/ordinal/DotPlot.d.ts +1 -1
  65. package/dist/components/charts/ordinal/FunnelChart.d.ts +1 -1
  66. package/dist/components/charts/ordinal/GroupedBarChart.d.ts +1 -1
  67. package/dist/components/charts/ordinal/Histogram.d.ts +1 -1
  68. package/dist/components/charts/ordinal/PieChart.d.ts +1 -1
  69. package/dist/components/charts/ordinal/RidgelinePlot.d.ts +1 -1
  70. package/dist/components/charts/ordinal/StackedBarChart.d.ts +1 -1
  71. package/dist/components/charts/ordinal/SwarmPlot.d.ts +1 -1
  72. package/dist/components/charts/ordinal/SwimlaneChart.d.ts +1 -1
  73. package/dist/components/charts/ordinal/ViolinPlot.d.ts +1 -1
  74. package/dist/components/charts/physics/ChainReactionChart.d.ts +9 -0
  75. package/dist/components/charts/physics/CollisionSwarmChart.capability.d.ts +2 -0
  76. package/dist/components/charts/physics/CollisionSwarmChart.d.ts +47 -0
  77. package/dist/components/charts/physics/EventDropChart.capability.d.ts +2 -0
  78. package/dist/components/charts/physics/EventDropChart.d.ts +53 -0
  79. package/dist/components/charts/physics/GaltonBoardChart.capability.d.ts +2 -0
  80. package/dist/components/charts/physics/GaltonBoardChart.d.ts +66 -0
  81. package/dist/components/charts/physics/GauntletChart.capability.d.ts +2 -0
  82. package/dist/components/charts/physics/GauntletChart.d.ts +73 -0
  83. package/dist/components/charts/physics/PhysicalFlowChart.capability.d.ts +2 -0
  84. package/dist/components/charts/physics/PhysicalFlowChart.d.ts +63 -0
  85. package/dist/components/charts/physics/PhysicsCustomChart.d.ts +120 -0
  86. package/dist/components/charts/physics/PhysicsPileChart.capability.d.ts +2 -0
  87. package/dist/components/charts/physics/PhysicsPileChart.d.ts +53 -0
  88. package/dist/components/charts/physics/ProcessFlowChart.capability.d.ts +2 -0
  89. package/dist/components/charts/physics/ProcessFlowChart.d.ts +96 -0
  90. package/dist/components/charts/physics/chainReactionOverlay.d.ts +22 -0
  91. package/dist/components/charts/physics/chainReactionRuntime.d.ts +37 -0
  92. package/dist/components/charts/physics/chainReactionTypes.d.ts +97 -0
  93. package/dist/components/charts/physics/collisionSwarmPhysics.d.ts +27 -0
  94. package/dist/components/charts/physics/dependencyMachine.d.ts +188 -0
  95. package/dist/components/charts/physics/eventDropPhysics.d.ts +64 -0
  96. package/dist/components/charts/physics/galtonBoardPhysics.d.ts +28 -0
  97. package/dist/components/charts/physics/gauntletChartProps.d.ts +67 -0
  98. package/dist/components/charts/physics/gauntletChrome.d.ts +33 -0
  99. package/dist/components/charts/physics/gauntletController.d.ts +73 -0
  100. package/dist/components/charts/physics/gauntletEffects.d.ts +36 -0
  101. package/dist/components/charts/physics/gauntletPhysics.d.ts +71 -0
  102. package/dist/components/charts/physics/gauntletRuntime.d.ts +42 -0
  103. package/dist/components/charts/physics/gauntletTypes.d.ts +213 -0
  104. package/dist/components/charts/physics/physicalFlowPhysics.d.ts +57 -0
  105. package/dist/components/charts/physics/physicsChartShared.d.ts +41 -0
  106. package/dist/components/charts/physics/physicsChartUtils.d.ts +18 -0
  107. package/dist/components/charts/physics/physicsEncoding.d.ts +142 -0
  108. package/dist/components/charts/physics/physicsHocHandle.d.ts +53 -0
  109. package/dist/components/charts/physics/physicsHocUtils.d.ts +128 -0
  110. package/dist/components/charts/physics/physicsPilePhysics.d.ts +41 -0
  111. package/dist/components/charts/physics/physicsProcessPrimitives.d.ts +38 -0
  112. package/dist/components/charts/physics/processFlowPhysics.d.ts +97 -0
  113. package/dist/components/charts/realtime/RealtimeHeatmap.d.ts +9 -1
  114. package/dist/components/charts/realtime/RealtimeHistogram.d.ts +9 -1
  115. package/dist/components/charts/realtime/RealtimeLineChart.d.ts +9 -1
  116. package/dist/components/charts/realtime/RealtimeSwarmChart.d.ts +16 -2
  117. package/dist/components/charts/realtime/RealtimeWaterfallChart.d.ts +9 -1
  118. package/dist/components/charts/shared/auditMobileVisualization.d.ts +91 -0
  119. package/dist/components/charts/shared/chartDefinitionPilot.d.ts +145 -0
  120. package/dist/components/charts/shared/chartFamilySets.d.ts +20 -0
  121. package/dist/components/charts/shared/chartSpecCore.d.ts +165 -0
  122. package/dist/components/charts/shared/chartSpecs.d.ts +8 -127
  123. package/dist/components/charts/shared/chartSpecsGeo.d.ts +2 -0
  124. package/dist/components/charts/shared/chartSpecsNetwork.d.ts +2 -0
  125. package/dist/components/charts/shared/chartSpecsOrdinal.d.ts +2 -0
  126. package/dist/components/charts/shared/chartSpecsPhysics.d.ts +2 -0
  127. package/dist/components/charts/shared/chartSpecsRealtime.d.ts +2 -0
  128. package/dist/components/charts/shared/chartSpecsValue.d.ts +2 -0
  129. package/dist/components/charts/shared/chartSpecsXY.d.ts +2 -0
  130. package/dist/components/charts/shared/colorContrast.d.ts +3 -0
  131. package/dist/components/charts/shared/colorUtils.d.ts +16 -1
  132. package/dist/components/charts/shared/diagnoseAnnotationChecks.d.ts +4 -0
  133. package/dist/components/charts/shared/diagnoseConfig.d.ts +9 -14
  134. package/dist/components/charts/shared/diagnoseMisleadingChecks.d.ts +9 -0
  135. package/dist/components/charts/shared/diagnosePhysicsChecks.d.ts +3 -0
  136. package/dist/components/charts/shared/diagnoseTypes.d.ts +10 -0
  137. package/dist/components/charts/shared/hooks.d.ts +28 -5
  138. package/dist/components/charts/shared/motionEncoding.d.ts +145 -0
  139. package/dist/components/charts/shared/responsiveRules.d.ts +56 -0
  140. package/dist/components/charts/shared/streamPropsHelpers.d.ts +12 -2
  141. package/dist/components/charts/shared/temporalStrings.d.ts +7 -0
  142. package/dist/components/charts/shared/types.d.ts +49 -1
  143. package/dist/components/charts/shared/useChartSetup.d.ts +9 -2
  144. package/dist/components/charts/shared/useCustomChartSetup.d.ts +14 -5
  145. package/dist/components/charts/shared/useNetworkChartSetup.d.ts +6 -2
  146. package/dist/components/charts/shared/useOrdinalPieceStyle.d.ts +1 -1
  147. package/dist/components/charts/shared/useStreamingLegend.d.ts +1 -1
  148. package/dist/components/charts/shared/useSyncedPushData.d.ts +49 -0
  149. package/dist/components/charts/shared/validationMap.d.ts +0 -11
  150. package/dist/components/charts/xy/AreaChart.d.ts +1 -1
  151. package/dist/components/charts/xy/BubbleChart.d.ts +1 -1
  152. package/dist/components/charts/xy/LineChart.d.ts +1 -1
  153. package/dist/components/charts/xy/MinimapChart.d.ts +1 -1
  154. package/dist/components/charts/xy/MultiAxisLineChart.d.ts +2 -2
  155. package/dist/components/charts/xy/QuadrantChart.d.ts +1 -1
  156. package/dist/components/charts/xy/Scatterplot.d.ts +1 -1
  157. package/dist/components/charts/xy/ScatterplotMatrix.d.ts +11 -1
  158. package/dist/components/charts/xy/StackedAreaChart.d.ts +9 -4
  159. package/dist/components/controls/controlAudit.d.ts +24 -0
  160. package/dist/components/controls/controlContract.d.ts +57 -0
  161. package/dist/components/data/fromFlintChart.d.ts +74 -0
  162. package/dist/components/data/fromVegaLite.d.ts +27 -0
  163. package/dist/components/data/portability/index.d.ts +6 -3
  164. package/dist/components/data/portability/result.d.ts +52 -0
  165. package/dist/components/data/portability/spec.d.ts +31 -0
  166. package/dist/components/data/portability/vegaLite.d.ts +24 -6
  167. package/dist/components/export/chartConfig.d.ts +11 -0
  168. package/dist/components/realtime/types.d.ts +11 -0
  169. package/dist/components/recipes/annotationLayout.d.ts +29 -0
  170. package/dist/components/recipes/axisFixedForce.d.ts +119 -0
  171. package/dist/components/recipes/{gofishBoba.d.ts → boba.d.ts} +2 -2
  172. package/dist/components/recipes/cyclical.d.ts +39 -0
  173. package/dist/components/recipes/edgeRouter.d.ts +103 -0
  174. package/dist/components/recipes/forceLayout.d.ts +48 -0
  175. package/dist/components/recipes/forceLayoutAsync.d.ts +17 -0
  176. package/dist/components/recipes/gofishBobaHandwritten.d.ts +3 -0
  177. package/dist/components/recipes/gofishDisplayListFixtures.generated.d.ts +37 -0
  178. package/dist/components/recipes/gofishIR.d.ts +178 -132
  179. package/dist/components/recipes/gofishIRExamples.d.ts +30 -81
  180. package/dist/components/recipes/intervalLanes.d.ts +87 -0
  181. package/dist/components/recipes/intervals.d.ts +80 -0
  182. package/dist/components/recipes/isometricLandmarks.d.ts +88 -0
  183. package/dist/components/recipes/isotypeGlyphs.d.ts +17 -0
  184. package/dist/components/recipes/mobileAnnotationStrategy.d.ts +48 -0
  185. package/dist/components/recipes/mobileChartFamilyRecipes.d.ts +59 -0
  186. package/dist/components/recipes/networkAnalysis.d.ts +102 -0
  187. package/dist/components/recipes/networkLayouts.d.ts +83 -0
  188. package/dist/components/recipes/physics.d.ts +122 -0
  189. package/dist/components/recipes/physicsReference.d.ts +102 -0
  190. package/dist/components/recipes/processAggregates.d.ts +32 -0
  191. package/dist/components/recipes/processChrome.d.ts +67 -0
  192. package/dist/components/recipes/processJourney.d.ts +54 -0
  193. package/dist/components/recipes/processPhysics.d.ts +300 -0
  194. package/dist/components/recipes/processVolumeGeometry.d.ts +28 -0
  195. package/dist/components/recipes/radialCoords.d.ts +69 -0
  196. package/dist/components/recipes/random.d.ts +2 -0
  197. package/dist/components/recipes/recipeChrome.d.ts +91 -0
  198. package/dist/components/recipes/recipeGlyph.d.ts +42 -0
  199. package/dist/components/recipes/recipeLegend.d.ts +53 -1
  200. package/dist/components/recipes/recipeUtils.d.ts +52 -0
  201. package/dist/components/recipes/runs.d.ts +59 -0
  202. package/dist/components/recipes/tokenEncoding.d.ts +157 -0
  203. package/dist/components/recipes/tokenLayer.d.ts +79 -0
  204. package/dist/components/recipes/unitize.d.ts +108 -0
  205. package/dist/components/recipes/vector.d.ts +28 -0
  206. package/dist/components/recipes/waffle.d.ts +43 -0
  207. package/dist/components/semiotic-ai-core.d.ts +47 -0
  208. package/dist/components/semiotic-ai.d.ts +50 -8
  209. package/dist/components/semiotic-controls.d.ts +18 -0
  210. package/dist/components/semiotic-experimental.d.ts +38 -9
  211. package/dist/components/semiotic-geo.d.ts +11 -0
  212. package/dist/components/semiotic-network.d.ts +11 -0
  213. package/dist/components/semiotic-ordinal.d.ts +8 -0
  214. package/dist/components/semiotic-physics-matter.d.ts +10 -0
  215. package/dist/components/semiotic-physics-rapier.d.ts +9 -0
  216. package/dist/components/semiotic-physics.d.ts +56 -0
  217. package/dist/components/semiotic-realtime-core.d.ts +34 -0
  218. package/dist/components/semiotic-realtime-react.d.ts +10 -0
  219. package/dist/components/semiotic-realtime.d.ts +4 -30
  220. package/dist/components/semiotic-recipes-core.d.ts +92 -0
  221. package/dist/components/semiotic-recipes-react.d.ts +7 -0
  222. package/dist/components/semiotic-recipes.d.ts +4 -43
  223. package/dist/components/semiotic-server-edge.d.ts +8 -0
  224. package/dist/components/semiotic-server-node.d.ts +5 -0
  225. package/dist/components/semiotic-server.d.ts +2 -2
  226. package/dist/components/semiotic-themes-core.d.ts +53 -0
  227. package/dist/components/semiotic-themes-react.d.ts +4 -0
  228. package/dist/components/semiotic-themes.d.ts +6 -76
  229. package/dist/components/semiotic-utils-core.d.ts +46 -0
  230. package/dist/components/semiotic-utils-react.d.ts +5 -0
  231. package/dist/components/semiotic-utils.d.ts +3 -39
  232. package/dist/components/semiotic-xy.d.ts +8 -0
  233. package/dist/components/semiotic.d.ts +35 -7
  234. package/dist/components/server/animatedGif.d.ts +36 -0
  235. package/dist/components/server/renderEvidence.d.ts +1 -1
  236. package/dist/components/server/renderToStaticSVG.d.ts +3 -35
  237. package/dist/components/server/serverChartConfigShared.d.ts +17 -0
  238. package/dist/components/server/serverChartConfigs.d.ts +19 -9
  239. package/dist/components/server/serverChartConfigsCustom.d.ts +5 -0
  240. package/dist/components/server/serverChartConfigsGeo.d.ts +9 -0
  241. package/dist/components/server/serverChartConfigsNetwork.d.ts +8 -0
  242. package/dist/components/server/serverChartConfigsOrdinal.d.ts +16 -0
  243. package/dist/components/server/serverChartConfigsPhysics.d.ts +9 -0
  244. package/dist/components/server/serverChartConfigsXY.d.ts +11 -0
  245. package/dist/components/server/staticGeo.d.ts +4 -0
  246. package/dist/components/server/staticLegend.d.ts +1 -1
  247. package/dist/components/server/staticNetwork.d.ts +8 -0
  248. package/dist/components/server/staticOrdinal.d.ts +11 -0
  249. package/dist/components/server/staticPhysics.d.ts +3 -0
  250. package/dist/components/server/staticSVGChrome.d.ts +110 -0
  251. package/dist/components/server/staticXY.d.ts +4 -0
  252. package/dist/components/store/ObservationStore.d.ts +3 -2
  253. package/dist/components/store/themeSerialization.d.ts +32 -0
  254. package/dist/components/store/useChartInterrogation.d.ts +9 -0
  255. package/dist/components/stream/AccessibleDataTable.d.ts +3 -13
  256. package/dist/components/stream/FocusRing.d.ts +4 -2
  257. package/dist/components/stream/GeoCanvasHitTester.d.ts +1 -1
  258. package/dist/components/stream/GeoPipelineStore.d.ts +28 -0
  259. package/dist/components/stream/NetworkPipelineStore.d.ts +31 -26
  260. package/dist/components/stream/NetworkSVGOverlay.d.ts +4 -1
  261. package/dist/components/stream/OrdinalPipelineStore.d.ts +46 -2
  262. package/dist/components/stream/PipelineStore.d.ts +81 -170
  263. package/dist/components/stream/SceneGraph.d.ts +9 -1
  264. package/dist/components/stream/StreamGeoFrame.d.ts +1 -1
  265. package/dist/components/stream/StreamNetworkFrame.d.ts +1 -1
  266. package/dist/components/stream/StreamOrdinalFrame.d.ts +1 -1
  267. package/dist/components/stream/StreamXYFrame.d.ts +2 -18
  268. package/dist/components/stream/accessibleDataRows.d.ts +33 -0
  269. package/dist/components/stream/accessorUtils.d.ts +23 -10
  270. package/dist/components/stream/brushAccessibility.d.ts +25 -0
  271. package/dist/components/stream/canvasBackground.d.ts +24 -0
  272. package/dist/components/stream/canvasSetup.d.ts +4 -1
  273. package/dist/components/stream/customLayoutFailure.d.ts +33 -0
  274. package/dist/components/stream/customLayoutPalette.d.ts +19 -9
  275. package/dist/components/stream/frameThemeColors.d.ts +24 -0
  276. package/dist/components/stream/geoAnnotationAnchors.d.ts +14 -0
  277. package/dist/components/stream/geoCartogram.d.ts +17 -0
  278. package/dist/components/stream/geoCustomLayout.d.ts +59 -0
  279. package/dist/components/stream/geoDefaultTooltip.d.ts +11 -0
  280. package/dist/components/stream/geoFrameHelpers.d.ts +34 -0
  281. package/dist/components/stream/geoPipelineHelpers.d.ts +46 -0
  282. package/dist/components/stream/geoTypes.d.ts +56 -7
  283. package/dist/components/stream/glyphDef.d.ts +98 -0
  284. package/dist/components/stream/hitTarget.d.ts +170 -0
  285. package/dist/components/stream/hoverUtils.d.ts +3 -0
  286. package/dist/components/stream/keyboardNav.d.ts +4 -1
  287. package/dist/components/stream/layouts/forceLayoutPlugin.d.ts +9 -1
  288. package/dist/components/stream/layouts/forceLayoutWorkerClient.d.ts +57 -0
  289. package/dist/components/stream/networkBezier.d.ts +10 -0
  290. package/dist/components/stream/networkColorAccessors.d.ts +49 -0
  291. package/dist/components/stream/networkDefaultTooltip.d.ts +10 -0
  292. package/dist/components/stream/networkFrameInteraction.d.ts +37 -0
  293. package/dist/components/stream/networkFramePaint.d.ts +43 -0
  294. package/dist/components/stream/networkPipelineConfig.d.ts +22 -0
  295. package/dist/components/stream/networkPipelineHelpers.d.ts +12 -0
  296. package/dist/components/stream/networkRealtimeEncoding.d.ts +41 -0
  297. package/dist/components/stream/networkTypes.d.ts +76 -5
  298. package/dist/components/stream/ordinalCanvasRenderers.d.ts +7 -0
  299. package/dist/components/stream/ordinalDataIndex.d.ts +5 -0
  300. package/dist/components/stream/ordinalDefaultTooltip.d.ts +10 -0
  301. package/dist/components/stream/ordinalDomain.d.ts +38 -0
  302. package/dist/components/stream/ordinalPipelineUpdateResults.d.ts +12 -0
  303. package/dist/components/stream/ordinalPulse.d.ts +10 -0
  304. package/dist/components/stream/ordinalPulseResources.d.ts +3 -0
  305. package/dist/components/stream/ordinalSceneBuilders/sceneBuilderMap.d.ts +5 -0
  306. package/dist/components/stream/ordinalSpatialIndex.d.ts +9 -0
  307. package/dist/components/stream/ordinalTypes.d.ts +40 -8
  308. package/dist/components/stream/paintNeeds.d.ts +31 -0
  309. package/dist/components/stream/physics/CapacityQueueController.d.ts +5 -0
  310. package/dist/components/stream/physics/CapacityQueueTypes.d.ts +134 -0
  311. package/dist/components/stream/physics/MatterPhysicsEngineAdapter.d.ts +42 -0
  312. package/dist/components/stream/physics/PhysicsAccessibility.d.ts +48 -0
  313. package/dist/components/stream/physics/PhysicsAnnotations.d.ts +58 -0
  314. package/dist/components/stream/physics/PhysicsBodyBudget.d.ts +26 -0
  315. package/dist/components/stream/physics/PhysicsBodySpatialIndex.d.ts +10 -0
  316. package/dist/components/stream/physics/PhysicsCanvasTheme.d.ts +26 -0
  317. package/dist/components/stream/physics/PhysicsControllers.d.ts +75 -0
  318. package/dist/components/stream/physics/PhysicsEngineAdapter.d.ts +59 -0
  319. package/dist/components/stream/physics/PhysicsEngineConformance.d.ts +23 -0
  320. package/dist/components/stream/physics/PhysicsEvidence.d.ts +25 -0
  321. package/dist/components/stream/physics/PhysicsKernel.d.ts +207 -0
  322. package/dist/components/stream/physics/PhysicsOptionalEngineAdapters.d.ts +12 -0
  323. package/dist/components/stream/physics/PhysicsPipelineStore.d.ts +84 -0
  324. package/dist/components/stream/physics/PhysicsPipelineTypes.d.ts +181 -0
  325. package/dist/components/stream/physics/PhysicsSVGOverlay.d.ts +72 -0
  326. package/dist/components/stream/physics/PhysicsSediment.d.ts +69 -0
  327. package/dist/components/stream/physics/PhysicsSettledSVG.d.ts +18 -0
  328. package/dist/components/stream/physics/PhysicsSettledScene.d.ts +21 -0
  329. package/dist/components/stream/physics/PhysicsWorkerClient.d.ts +24 -0
  330. package/dist/components/stream/physics/PhysicsWorkerProtocol.d.ts +101 -0
  331. package/dist/components/stream/physics/PhysicsWorkerRuntime.d.ts +5 -0
  332. package/dist/components/stream/physics/RapierPhysicsEngineAdapter.d.ts +18 -0
  333. package/dist/components/stream/physics/ServiceOperationsControllers.d.ts +27 -0
  334. package/dist/components/stream/physics/ServiceOperationsTypes.d.ts +89 -0
  335. package/dist/components/stream/physics/StreamPhysicsFrame.d.ts +6 -0
  336. package/dist/components/stream/physics/StreamPhysicsTypes.d.ts +302 -0
  337. package/dist/components/stream/physics/physicsBodyCanvas.d.ts +27 -0
  338. package/dist/components/stream/physics/physicsPipelineControls.d.ts +4 -0
  339. package/dist/components/stream/physics/physicsPipelineHelpers.d.ts +41 -0
  340. package/dist/components/stream/physics/physicsPipelineObservations.d.ts +14 -0
  341. package/dist/components/stream/physics/physicsPipelineUpdateResults.d.ts +9 -0
  342. package/dist/components/stream/physics/physicsRegionRuntime.d.ts +54 -0
  343. package/dist/components/stream/physics/physicsSemanticUI.d.ts +20 -0
  344. package/dist/components/stream/physics/usePhysicsFrameLifecyclePolicy.d.ts +16 -0
  345. package/dist/components/stream/pipelineBufferUtils.d.ts +26 -0
  346. package/dist/components/stream/pipelineConfig.d.ts +177 -0
  347. package/dist/components/stream/pipelineDecay.d.ts +20 -2
  348. package/dist/components/stream/pipelineDomainResolution.d.ts +62 -0
  349. package/dist/components/stream/pipelineIdentityOps.d.ts +26 -0
  350. package/dist/components/stream/pipelinePulse.d.ts +16 -2
  351. package/dist/components/stream/pipelineRibbons.d.ts +41 -0
  352. package/dist/components/stream/pipelineSpatialIndex.d.ts +12 -0
  353. package/dist/components/stream/pipelineStoreUpdateResults.d.ts +12 -0
  354. package/dist/components/stream/pipelineStyleResolvers.d.ts +46 -0
  355. package/dist/components/stream/pipelineTransitions.d.ts +2 -0
  356. package/dist/components/stream/pipelineUpdateContract.d.ts +62 -0
  357. package/dist/components/stream/pulseFrameRefresh.d.ts +22 -0
  358. package/dist/components/stream/renderers/glyphCanvasRenderer.d.ts +6 -0
  359. package/dist/components/stream/renderers/resolveCSSColor.d.ts +6 -0
  360. package/dist/components/stream/sceneRevisionDiagnostics.d.ts +18 -0
  361. package/dist/components/stream/streamStoreSync.d.ts +37 -0
  362. package/dist/components/stream/types.d.ts +135 -7
  363. package/dist/components/stream/useFrame.d.ts +21 -2
  364. package/dist/components/stream/useHydration.d.ts +6 -0
  365. package/dist/components/stream/useLegendCategoryEmission.d.ts +5 -0
  366. package/dist/components/stream/workerModuleUrl.d.ts +10 -0
  367. package/dist/components/stream/xyAnnotationAnchors.d.ts +13 -0
  368. package/dist/components/stream/xyCanvasRenderers.d.ts +7 -0
  369. package/dist/components/stream/xyCrosshair.d.ts +11 -0
  370. package/dist/components/stream/xyDateTicks.d.ts +9 -0
  371. package/dist/components/stream/xyDefaultTooltip.d.ts +10 -0
  372. package/dist/components/stream/xySceneBuilders/types.d.ts +4 -4
  373. package/dist/controls.min.js +2 -0
  374. package/dist/controls.module.min.js +2 -0
  375. package/dist/forceLayoutWorker.js +1 -0
  376. package/dist/geo.min.js +1 -1
  377. package/dist/geo.module.min.js +1 -1
  378. package/dist/network.min.js +1 -1
  379. package/dist/network.module.min.js +1 -1
  380. package/dist/ordinal.min.js +1 -1
  381. package/dist/ordinal.module.min.js +1 -1
  382. package/dist/physics-matter.min.js +1 -0
  383. package/dist/physics-matter.module.min.js +1 -0
  384. package/dist/physics-rapier.min.js +1 -0
  385. package/dist/physics-rapier.module.min.js +1 -0
  386. package/dist/physics.min.js +2 -0
  387. package/dist/physics.module.min.js +2 -0
  388. package/dist/physicsWorker.js +1 -0
  389. package/dist/realtime.min.js +1 -1
  390. package/dist/realtime.module.min.js +1 -1
  391. package/dist/semiotic-ai-chunk-OG7BQUUW.module.min.js +2 -0
  392. package/dist/semiotic-ai-core.d.ts +47 -0
  393. package/dist/semiotic-ai-core.min.js +1 -0
  394. package/dist/semiotic-ai-core.module.min.js +1 -0
  395. package/dist/semiotic-ai-statisticalOverlays-CY4WKR4A.module.min.js +2 -0
  396. package/dist/semiotic-ai.d.ts +50 -8
  397. package/dist/semiotic-ai.min.js +1 -1
  398. package/dist/semiotic-ai.module.min.js +1 -1
  399. package/dist/semiotic-chunk-3FSVZ46U.module.min.js +2 -0
  400. package/dist/semiotic-controls.d.ts +18 -0
  401. package/dist/semiotic-data.min.js +1 -1
  402. package/dist/semiotic-data.module.min.js +1 -1
  403. package/dist/semiotic-experimental.d.ts +38 -9
  404. package/dist/semiotic-experimental.min.js +1 -1
  405. package/dist/semiotic-experimental.module.min.js +1 -1
  406. package/dist/semiotic-geo.d.ts +11 -0
  407. package/dist/semiotic-network.d.ts +11 -0
  408. package/dist/semiotic-ordinal.d.ts +8 -0
  409. package/dist/semiotic-physics-matter.d.ts +10 -0
  410. package/dist/semiotic-physics-rapier.d.ts +9 -0
  411. package/dist/semiotic-physics.d.ts +56 -0
  412. package/dist/semiotic-realtime-core.d.ts +34 -0
  413. package/dist/semiotic-realtime-core.min.js +1 -0
  414. package/dist/semiotic-realtime-core.module.min.js +1 -0
  415. package/dist/semiotic-realtime-react.d.ts +10 -0
  416. package/dist/semiotic-realtime-react.min.js +2 -0
  417. package/dist/semiotic-realtime-react.module.min.js +2 -0
  418. package/dist/semiotic-realtime.d.ts +4 -30
  419. package/dist/semiotic-recipes-core.d.ts +92 -0
  420. package/dist/semiotic-recipes-core.min.js +1 -0
  421. package/dist/semiotic-recipes-core.module.min.js +1 -0
  422. package/dist/semiotic-recipes-react.d.ts +7 -0
  423. package/dist/semiotic-recipes-react.min.js +2 -0
  424. package/dist/semiotic-recipes-react.module.min.js +2 -0
  425. package/dist/semiotic-recipes.d.ts +4 -43
  426. package/dist/semiotic-recipes.min.js +1 -1
  427. package/dist/semiotic-recipes.module.min.js +1 -1
  428. package/dist/semiotic-server-edge.d.ts +8 -0
  429. package/dist/semiotic-server-edge.min.js +1 -0
  430. package/dist/semiotic-server-edge.module.min.js +1 -0
  431. package/dist/semiotic-server-node.d.ts +5 -0
  432. package/dist/semiotic-server-node.min.js +1 -0
  433. package/dist/semiotic-server-node.module.min.js +1 -0
  434. package/dist/semiotic-server.d.ts +2 -2
  435. package/dist/semiotic-statisticalOverlays-UOMSFKVJ.module.min.js +2 -0
  436. package/dist/semiotic-themes-core.d.ts +53 -0
  437. package/dist/semiotic-themes-core.min.js +1 -0
  438. package/dist/semiotic-themes-core.module.min.js +1 -0
  439. package/dist/semiotic-themes-react.d.ts +4 -0
  440. package/dist/semiotic-themes-react.min.js +2 -0
  441. package/dist/semiotic-themes-react.module.min.js +2 -0
  442. package/dist/semiotic-themes.d.ts +6 -76
  443. package/dist/semiotic-themes.min.js +1 -2
  444. package/dist/semiotic-themes.module.min.js +1 -2
  445. package/dist/semiotic-utils-core.d.ts +46 -0
  446. package/dist/semiotic-utils-core.min.js +1 -0
  447. package/dist/semiotic-utils-core.module.min.js +1 -0
  448. package/dist/semiotic-utils-react.d.ts +5 -0
  449. package/dist/semiotic-utils-react.min.js +2 -0
  450. package/dist/semiotic-utils-react.module.min.js +2 -0
  451. package/dist/semiotic-utils.d.ts +3 -39
  452. package/dist/semiotic-utils.min.js +1 -2
  453. package/dist/semiotic-utils.module.min.js +1 -2
  454. package/dist/semiotic-value.min.js +1 -1
  455. package/dist/semiotic-value.module.min.js +1 -1
  456. package/dist/semiotic-xy.d.ts +8 -0
  457. package/dist/semiotic.d.ts +35 -7
  458. package/dist/semiotic.min.js +1 -1
  459. package/dist/semiotic.module.min.js +1 -1
  460. package/dist/server.min.js +1 -1
  461. package/dist/server.module.min.js +1 -1
  462. package/dist/xy-chunk-IWD6IB6V.module.min.js +2 -0
  463. package/dist/xy-statisticalOverlays-7RWG6LJT.module.min.js +2 -0
  464. package/dist/xy.min.js +1 -1
  465. package/dist/xy.module.min.js +1 -1
  466. package/package.json +239 -87
  467. package/spec/README.md +152 -0
  468. package/spec/bindings/README.md +35 -0
  469. package/spec/bindings/vega-lite.mjs +112 -0
  470. package/spec/v0.1/annotation-provenance.schema.json +127 -0
  471. package/spec/v0.1/audience-profile.schema.json +67 -0
  472. package/spec/v0.1/chart-capability.schema.json +186 -0
  473. package/dist/components/recipes/gofish.d.ts +0 -207
  474. package/dist/components/recipes/gofishInterpreter.d.ts +0 -52
  475. package/dist/components/recipes/gofishLambdas.d.ts +0 -145
  476. package/dist/semiotic-ai-semiotic-ai-u954ylUn.js +0 -2
  477. package/dist/semiotic-ai-statisticalOverlays-CU7jW05Q.js +0 -1
  478. package/dist/semiotic-semiotic-BmrYbi99.js +0 -2
  479. package/dist/semiotic-statisticalOverlays-IjZw8Lsu.js +0 -1
  480. package/dist/xy-semiotic-xy-Dufu3D0-.js +0 -2
  481. package/dist/xy-statisticalOverlays-3Ni9bRph.js +0 -1
@@ -0,0 +1,177 @@
1
+ /**
2
+ * PipelineStore configuration types + growing-window capacity constants.
3
+ */
4
+ import type { Datum } from "../charts/shared/datumTypes";
5
+ import type { StreamChartType, ArrowOfTime, WindowMode, DecayConfig, PulseConfig, TransitionConfig, StalenessConfig, CurveType, BarStyle, ThemeSemanticColors, BandConfig, CandlestickStyle, Style } from "./types";
6
+ import type { SymbolName } from "./symbolPath";
7
+ import type { CoercibleNumber } from "./accessorUtils";
8
+ import type { CustomLayout } from "./customLayout";
9
+ import type { CustomLayoutSelection } from "./customLayoutSelection";
10
+ import type { MarginType } from "../types/marginType";
11
+ export interface PipelineConfig {
12
+ chartType: StreamChartType;
13
+ runtimeMode?: "streaming" | "bounded";
14
+ windowSize: number;
15
+ windowMode: WindowMode;
16
+ arrowOfTime: ArrowOfTime;
17
+ extentPadding: number;
18
+ /** Pixel inset on scale ranges to prevent glyph clipping at chart edges. Default 0. */
19
+ scalePadding?: number;
20
+ /** When `"exact"`, the x and y axis domains pin to the literal data
21
+ * min/max — `extentPadding` is skipped so the first and last ticks
22
+ * read as the actual data bounds. Default `"nice"` keeps the existing
23
+ * padded domain so glyphs at the extremes don't clip the plot edge. */
24
+ axisExtent?: import("../charts/shared/axisExtent").AxisExtentMode;
25
+ /**
26
+ * Hard cap for `windowMode: "growing"`. Defaults to
27
+ * {@link DEFAULT_GROWING_MAX_CAPACITY} (100_000). Canvas scene graphs
28
+ * degrade well before the previous 1e6 ceiling; pass a higher value
29
+ * only when you know the host can afford it.
30
+ */
31
+ maxCapacity?: number;
32
+ xAccessor?: string | ((d: Datum) => CoercibleNumber);
33
+ yAccessor?: string | ((d: Datum) => CoercibleNumber);
34
+ timeAccessor?: string | ((d: Datum) => CoercibleNumber);
35
+ valueAccessor?: string | ((d: Datum) => CoercibleNumber);
36
+ colorAccessor?: string | ((d: Datum) => string);
37
+ sizeAccessor?: string | ((d: Datum) => CoercibleNumber);
38
+ /** Categorical accessor → glyph shape (scatter/bubble). Emits SymbolSceneNodes. */
39
+ symbolAccessor?: string | ((d: Datum) => string);
40
+ /** Explicit `{category → shape}` map; unmapped categories auto-assign. */
41
+ symbolMap?: Record<string, SymbolName>;
42
+ groupAccessor?: string | ((d: Datum) => string);
43
+ categoryAccessor?: string | ((d: Datum) => string);
44
+ lineDataAccessor?: string;
45
+ /**
46
+ * Escape hatch for the unusual case where a *stable* function accessor's
47
+ * captured semantics change without its identity changing (e.g. a
48
+ * `useCallback([])`-memoized closure that reads external mutable state).
49
+ * Accessor equality is identity-based, so such a change is invisible to the
50
+ * store. Bump this number to force the store to re-derive domains and rebuild
51
+ * the scene against the current accessor. Prefer changing the accessor
52
+ * identity (add the captured value to the `useCallback` dependency array);
53
+ * reach for `accessorRevision` only when you cannot. */
54
+ accessorRevision?: number;
55
+ xScaleType?: "linear" | "log" | "time";
56
+ yScaleType?: "linear" | "log" | "symlog";
57
+ xExtent?: [number | undefined, number | undefined] | [number];
58
+ yExtent?: [number | undefined, number | undefined] | [number];
59
+ sizeRange?: [number, number];
60
+ binSize?: number;
61
+ normalize?: boolean;
62
+ /** Stacked area baseline mode. Only consulted by stackedarea chart type. */
63
+ baseline?: "zero" | "wiggle" | "silhouette" | "diverging";
64
+ /** Stack order — see StreamXYFrameProps.stackOrder. */
65
+ stackOrder?: "key" | "input" | "insideOut" | "asc" | "desc";
66
+ openAccessor?: string | ((d: Datum) => CoercibleNumber);
67
+ highAccessor?: string | ((d: Datum) => CoercibleNumber);
68
+ lowAccessor?: string | ((d: Datum) => CoercibleNumber);
69
+ closeAccessor?: string | ((d: Datum) => CoercibleNumber);
70
+ candlestickStyle?: CandlestickStyle;
71
+ /** Internal: set by PipelineStore when open/close accessors are both missing */
72
+ candlestickRangeMode?: boolean;
73
+ boundsAccessor?: string | ((d: Datum) => CoercibleNumber);
74
+ boundsStyle?: any;
75
+ y0Accessor?: string | ((d: Datum) => CoercibleNumber);
76
+ band?: BandConfig | BandConfig[];
77
+ gradientFill?: {
78
+ topOpacity: number;
79
+ bottomOpacity: number;
80
+ } | {
81
+ colorStops: Array<{
82
+ offset: number;
83
+ color: string;
84
+ }>;
85
+ };
86
+ areaGroups?: Set<string>;
87
+ lineGradient?: {
88
+ colorStops: Array<{
89
+ offset: number;
90
+ color: string;
91
+ }>;
92
+ };
93
+ lineStyle?: any;
94
+ pointStyle?: (d: Datum) => Style & {
95
+ r?: number;
96
+ };
97
+ areaStyle?: (d: Datum) => Style;
98
+ swarmStyle?: {
99
+ radius?: number;
100
+ fill?: string;
101
+ opacity?: number;
102
+ stroke?: string;
103
+ strokeWidth?: number;
104
+ };
105
+ waterfallStyle?: {
106
+ positiveColor?: string;
107
+ negativeColor?: string;
108
+ connectorStroke?: string;
109
+ connectorWidth?: number;
110
+ gap?: number;
111
+ stroke?: string;
112
+ strokeWidth?: number;
113
+ };
114
+ colorScheme?: string | string[] | Record<string, string>;
115
+ /** Theme categorical palette — used as fallback when colorScheme is not an explicit array */
116
+ themeCategorical?: string[];
117
+ /**
118
+ * Theme-resolved semantic role colors. Scene builders use these as the
119
+ * default before falling back to hardcoded hex. Populated by the Stream
120
+ * Frame from the in-memory `SemioticTheme.colors` object at render time
121
+ * — the values are concrete hex (or whatever the preset declares), not
122
+ * `var(...)` strings, and so this channel does NOT participate in the
123
+ * DOM CSS cascade. Changing the ambient theme (`<ThemeProvider>`) or
124
+ * swapping to a nested provider is how you override these values.
125
+ *
126
+ * Per-scope overrides via CSS custom properties
127
+ * (e.g. `<div style={{ "--semiotic-danger": "#c00" }}>`) work only for
128
+ * values a user explicitly passes through as `var(--...)` strings in
129
+ * chart props — those are resolved via `getComputedStyle` in the
130
+ * canvas renderer at paint time (see `resolveCSSColor.ts`). The theme
131
+ * defaults in this field don't read CSS.
132
+ */
133
+ themeSemantic?: ThemeSemanticColors;
134
+ /** Theme sequential scheme name (e.g. "blues") — fallback when `colorScheme` is not explicitly set for magnitude encodings (heatmap, choropleth, size). */
135
+ themeSequential?: string;
136
+ /** Theme diverging scheme name (e.g. "RdBu") — fallback when `colorScheme` is not explicitly set for midpoint encodings (likert, bivariate, ± deviation). */
137
+ themeDiverging?: string;
138
+ barColors?: Record<string, string>;
139
+ /** Histogram bar style — fill/stroke/strokeWidth/gap. Accepted by RealtimeHistogram and routed through to the bar scene builder. */
140
+ barStyle?: BarStyle;
141
+ annotations?: Datum[];
142
+ decay?: DecayConfig;
143
+ pulse?: PulseConfig;
144
+ transition?: TransitionConfig;
145
+ /** Whether to animate elements on first render (points scale up, lines/areas clip from left, rects grow from baseline) */
146
+ introAnimation?: boolean;
147
+ staleness?: StalenessConfig;
148
+ heatmapAggregation?: "count" | "sum" | "mean";
149
+ heatmapXBins?: number;
150
+ heatmapYBins?: number;
151
+ showValues?: boolean;
152
+ heatmapValueFormat?: (v: number) => string;
153
+ pointIdAccessor?: string | ((d: Datum) => string);
154
+ curve?: CurveType;
155
+ /** When provided, replaces chart-type dispatch in scene building.
156
+ * Receives a LayoutContext (scales, dimensions, theme, resolveColor)
157
+ * and returns scene nodes plus optional overlays. */
158
+ customLayout?: CustomLayout;
159
+ /** Called when `customLayout` throws. The previous successful custom scene
160
+ * remains visible when one exists; inspect the diagnostic's `recovery` to
161
+ * distinguish that case from an initial empty-scene failure. */
162
+ onLayoutError?: (diagnostic: import("./customLayoutFailure").CustomLayoutFailureDiagnostic) => void;
163
+ /** User-supplied config blob threaded through to LayoutContext.config. */
164
+ layoutConfig?: object;
165
+ /** Resolved margin — passed through so LayoutContext.dimensions.margin reflects what the frame actually used. */
166
+ layoutMargin?: MarginType;
167
+ /** Resolved shared selection projected into LayoutContext.selection. Owned by
168
+ * a dedicated frame effect (kept off the rebuild-triggering path). */
169
+ layoutSelection?: CustomLayoutSelection | null;
170
+ }
171
+ /** Default hard cap for `windowMode: "growing"`. */
172
+ export declare const DEFAULT_GROWING_MAX_CAPACITY = 100000;
173
+ /**
174
+ * Dev-only warning threshold: when a growing buffer first crosses this
175
+ * size we log once so unbounded push loops surface before the hard cap.
176
+ */
177
+ export declare const GROWING_CAPACITY_WARN_THRESHOLD = 50000;
@@ -3,7 +3,12 @@ import type { Datum } from "../charts/shared/datumTypes";
3
3
  * Shared decay encoding utilities for all pipeline stores.
4
4
  *
5
5
  * `computeDecayOpacity()` — core algorithm used by all four pipeline stores
6
- * (XY, Ordinal, Network, Geo) to compute age-based opacity.
6
+ * (XY, Ordinal, Network, Geo) to compute age-based opacity. It is the
7
+ * buffer-index projection of the runtime-neutral `opacityFromAge` age→opacity
8
+ * ramp: streaming decay is just "age measured in buffer positions", where the
9
+ * oldest surviving datum sits `bufferSize - 1` positions behind the newest.
10
+ * Keeping one ramp implementation means the streaming runtime, physics
11
+ * bodies, and any future age-based encoding share the exact same curves.
7
12
  *
8
13
  * `applyDecay()` — XY-specific application that handles per-vertex decay
9
14
  * for line/area nodes. Other stores call `computeDecayOpacity()` directly
@@ -13,10 +18,23 @@ import type { SceneNode, DecayConfig } from "./types";
13
18
  /**
14
19
  * Compute decay opacity for a datum at `bufferIndex` out of `bufferSize` items.
15
20
  * Index 0 = oldest, bufferSize-1 = newest. Returns 0–1.
21
+ *
22
+ * Delegates to the shared {@link opacityFromAge} ramp with age expressed in
23
+ * buffer positions (`age = 0` at the newest datum, `extent = bufferSize - 1`
24
+ * at the oldest). The buffer-based half-life / step defaults are passed
25
+ * explicitly so the streaming ramp is unchanged from its standalone form.
16
26
  */
17
27
  export declare function computeDecayOpacity(decay: DecayConfig, bufferIndex: number, bufferSize: number): number;
28
+ /**
29
+ * Build a datum→buffer-index map. Callers that apply decay + pulse in the
30
+ * same scene pass should share one map (and cache it by ingest version)
31
+ * so continuous animation does not re-walk the buffer twice per frame.
32
+ */
33
+ export declare function buildDatumIndexMap(data: readonly Datum[]): Map<Datum, number>;
18
34
  /**
19
35
  * Apply decay opacity to a list of scene nodes.
20
36
  * Uses the datum's index in the buffer data array.
37
+ *
38
+ * @param indexMap Optional prebuilt datum→index map (see {@link buildDatumIndexMap}).
21
39
  */
22
- export declare function applyDecay(decay: DecayConfig, nodes: SceneNode[], data: Datum[]): void;
40
+ export declare function applyDecay(decay: DecayConfig, nodes: SceneNode[], data: Datum[], indexMap?: Map<any, number>): void;
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Pure domain / scale resolution for PipelineStore.computeScene.
3
+ * Chart-type-specific y-extent rules + d3 scale construction.
4
+ */
5
+ import { type ScaleLinear } from "d3-scale";
6
+ import type { Datum } from "../charts/shared/datumTypes";
7
+ import type { PipelineConfig } from "./pipelineConfig";
8
+ import type { ArrowOfTime, StreamScales } from "./types";
9
+ import type { ResolvedRibbon } from "./xySceneBuilders/ribbonScene";
10
+ import type { RingBuffer } from "../realtime/RingBuffer";
11
+ export type StackExtentCache = {
12
+ key: string;
13
+ yDomain: [number, number];
14
+ };
15
+ export declare function getTimeAxis(arrowOfTime: ArrowOfTime): "x" | "y";
16
+ export declare function mergePartialDomain(dataDomain: [number, number], userExtent: [number | undefined, number | undefined] | [number] | undefined): [number, number];
17
+ export declare function isFullySpecifiedExtent(extent: [number | undefined, number | undefined] | [number] | undefined): boolean;
18
+ /**
19
+ * Stacked-area y-domain covering cumulative stack sums (or [0,1] when
20
+ * normalized). Mirrors buildStackedAreaNodes order for wiggle offsets.
21
+ */
22
+ export declare function resolveStackedAreaYDomain(options: {
23
+ config: Pick<PipelineConfig, "normalize" | "baseline" | "stackOrder" | "extentPadding" | "axisExtent">;
24
+ groups: {
25
+ key: string;
26
+ data: Datum[];
27
+ }[];
28
+ getX: (d: Datum) => number;
29
+ getY: (d: Datum) => number;
30
+ bufferSize: number;
31
+ ingestVersion: number;
32
+ stackExtentCache: StackExtentCache | null;
33
+ }): {
34
+ yDomain: [number, number];
35
+ stackExtentCache: StackExtentCache;
36
+ };
37
+ export declare function resolveBarBinYDomain(buffer: RingBuffer<Datum>, getX: (d: Datum) => number, getY: (d: Datum) => number, binSize: number, getCategory: ((d: Datum) => string) | undefined, extentPadding: number, exactMode: boolean): [number, number];
38
+ export declare function resolveWaterfallYDomain(buffer: RingBuffer<Datum>, getY: (d: Datum) => number, extentPadding: number, exactMode: boolean): [number, number];
39
+ export declare function expandYDomainWithRibbons(yDomain: [number, number], bufferArray: Datum[], ribbons: ResolvedRibbon[]): [number, number];
40
+ export declare function padYDomain(yDomain: [number, number], options: {
41
+ exactMode: boolean;
42
+ extentPadding: number;
43
+ userMin?: number;
44
+ userMax?: number;
45
+ yScaleType?: PipelineConfig["yScaleType"];
46
+ dataYDomain: [number, number];
47
+ }): [number, number];
48
+ export declare function reapplyPartialYExtent(yDomain: [number, number], yExtent: PipelineConfig["yExtent"], yFullySpecified: boolean): [number, number];
49
+ export declare function rescueDegenerateDomains(xDomain: [number, number], yDomain: [number, number], xScaleType?: PipelineConfig["xScaleType"]): {
50
+ xDomain: [number, number];
51
+ yDomain: [number, number];
52
+ };
53
+ export declare function makePipelineScale(type: "linear" | "log" | "symlog" | "time" | undefined, domain: [number, number], range: [number, number]): ScaleLinear<number, number>;
54
+ export declare function buildPipelineScales(options: {
55
+ config: PipelineConfig;
56
+ layout: {
57
+ width: number;
58
+ height: number;
59
+ };
60
+ xDomain: [number, number];
61
+ yDomain: [number, number];
62
+ }): StreamScales;
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Shared identity-keyed mutation helpers for family pipeline stores.
3
+ *
4
+ * XY/Ordinal/Network stores each own their buffers, but remove/update by
5
+ * stable id follow the same shape: resolve ids → scan buffer → rebuild.
6
+ * Centralizing the pure scan logic keeps behavior aligned without forcing
7
+ * a single mega-class.
8
+ */
9
+ import type { Datum } from "../charts/shared/datumTypes";
10
+ export declare function toIdSet(id: string | string[]): Set<string>;
11
+ /**
12
+ * Remove rows whose id is in `ids`. Returns `{ kept, removed }` where
13
+ * `kept` preserves original order.
14
+ */
15
+ export declare function partitionById(data: readonly Datum[], ids: Set<string>, getId: (d: Datum) => string): {
16
+ kept: Datum[];
17
+ removed: Datum[];
18
+ };
19
+ /**
20
+ * Apply an updater to rows matching `ids`. Returns updated rows (the new
21
+ * objects) and the full next array (order preserved).
22
+ */
23
+ export declare function updateById(data: readonly Datum[], ids: Set<string>, getId: (d: Datum) => string, updater: (d: Datum) => Datum): {
24
+ next: Datum[];
25
+ updated: Datum[];
26
+ };
@@ -17,9 +17,23 @@ import type { RingBuffer } from "../realtime/RingBuffer";
17
17
  export declare function computePulseIntensity(pulse: PulseConfig, insertTime: number, now: number): number;
18
18
  /**
19
19
  * Apply pulse glow to scene nodes using insertion timestamps.
20
+ *
21
+ * @param indexMap Optional prebuilt datum→index map so a scene pass that
22
+ * also runs decay can share one O(n) walk of the buffer.
23
+ */
24
+ export declare function applyPulse(pulse: PulseConfig, nodes: SceneNode[], data: Datum[], timestampBuffer: RingBuffer<number>, indexMap?: Map<any, number>, now?: number): boolean;
25
+ /**
26
+ * Update the pulse-owned fields for a node that the pipeline has matched to
27
+ * source data. Keeping this narrow is important for custom layouts: nodes
28
+ * which do not map back to a datum are left entirely alone, including any
29
+ * user-owned underscore fields they may carry.
20
30
  */
21
- export declare function 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,12 @@
1
+ import { type ChangeSet, type UpdateResult } from "./pipelineUpdateContract";
2
+ type DataChangeKind = Extract<ChangeSet["kind"], "ingest" | "replace" | "remove" | "update" | "clear">;
3
+ /** Result bookkeeping and invalidation policy for the XY PipelineStore pilot. */
4
+ export declare class PipelineStoreUpdateResults {
5
+ private tracker;
6
+ get last(): UpdateResult;
7
+ recordData(kind: DataChangeKind, count?: number): UpdateResult;
8
+ recordNoop(kind: DataChangeKind | "restyle"): UpdateResult;
9
+ recordRestyle(hasCustomRestyle: boolean): UpdateResult;
10
+ recordConfig(keys: readonly string[], requiresRebuild: boolean, extentAccessorChanged: boolean): UpdateResult;
11
+ }
12
+ export {};
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Pure style / color-map resolution helpers for PipelineStore.
3
+ * Accept a small context object so the store methods stay thin wrappers.
4
+ */
5
+ import type { Datum } from "../charts/shared/datumTypes";
6
+ import type { PipelineConfig } from "./pipelineConfig";
7
+ import type { Style } from "./types";
8
+ export interface PipelineColorMapCache {
9
+ key: string;
10
+ map: Map<string, string>;
11
+ version: number;
12
+ }
13
+ export interface PipelineGroupDataCache {
14
+ version: number;
15
+ group: ((d: Datum) => string) | undefined;
16
+ data: Datum[];
17
+ result: {
18
+ key: string;
19
+ data: Datum[];
20
+ }[];
21
+ }
22
+ export declare function groupPipelineData(data: Datum[], getGroup: ((d: Datum) => string) | undefined, ingestVersion: number, cache: PipelineGroupDataCache | null): {
23
+ result: {
24
+ key: string;
25
+ data: Datum[];
26
+ }[];
27
+ cache: PipelineGroupDataCache;
28
+ };
29
+ export declare function resolvePipelineColorMap(data: Datum[], getColor: ((d: Datum) => string) | undefined, config: Pick<PipelineConfig, "colorScheme" | "themeCategorical">, ingestVersion: number, cache: PipelineColorMapCache | null): {
30
+ map: Map<string, string>;
31
+ cache: PipelineColorMapCache;
32
+ };
33
+ export declare function resolvePipelineGroupColor(options: {
34
+ group: string;
35
+ colorMapCache: PipelineColorMapCache | null;
36
+ groupColorMap: Map<string, string>;
37
+ groupColorCounter: number;
38
+ groupColorMapCap: number;
39
+ config: Pick<PipelineConfig, "colorScheme" | "themeCategorical">;
40
+ }): {
41
+ color: string | null;
42
+ groupColorCounter: number;
43
+ };
44
+ export declare function resolvePipelineLineStyle(config: PipelineConfig, group: string, sampleDatum: Datum | undefined, resolveGroupColor: (group: string) => string | null): Style;
45
+ export declare function resolvePipelineAreaStyle(config: PipelineConfig, group: string, sampleDatum: Datum | undefined, resolveGroupColor: (group: string) => string | null): Style;
46
+ export declare function resolvePipelineBoundsStyle(config: PipelineConfig, group: string, sampleDatum: Datum | undefined, resolveLineStyle: (group: string, sampleDatum?: Datum) => Style): Style;
@@ -11,6 +11,7 @@
11
11
  * Consumed by: PipelineStore.computeScene (after decay/pulse)
12
12
  */
13
13
  import type { SceneNode, TransitionConfig } from "./types";
14
+ import type { GlyphDef } from "./glyphDef";
14
15
  import type { ActiveTransition } from "./pipelineTransitionUtils";
15
16
  import type { Datum } from "../charts/shared/datumTypes";
16
17
  export type PrevPosition = {
@@ -24,6 +25,7 @@ export type PrevPosition = {
24
25
  closeY?: number;
25
26
  highY?: number;
26
27
  lowY?: number;
28
+ glyph?: GlyphDef;
27
29
  };
28
30
  export type PrevPath = {
29
31
  topPath?: [number, number][];
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Pure update contract for the stream-pipeline migration pilot.
3
+ *
4
+ * Stores still expose their established boolean/void mutation APIs. This
5
+ * module gives a host an additive, inspectable result path without coupling it
6
+ * to React, canvas, timers, or a particular chart family.
7
+ */
8
+ /** Reasons a host may need to recompute or repaint part of a chart. */
9
+ export declare const INVALIDATION_KINDS: readonly ["data", "domain", "layout", "scene-geometry", "scene-style", "data-paint", "interaction-paint", "overlay", "accessibility", "evidence"];
10
+ export type Invalidation = (typeof INVALIDATION_KINDS)[number];
11
+ /**
12
+ * Describes the operation that produced an update without retaining raw data
13
+ * or user callbacks in a diagnostic/result object.
14
+ */
15
+ export interface ChangeSet {
16
+ readonly kind: "initialize" | "ingest" | "replace" | "remove" | "update" | "clear" | "config" | "restyle" | "enqueue" | "tick" | "settle" | "restore" | "constraint" | "impulse" | "pause" | "visibility";
17
+ readonly keys?: readonly string[];
18
+ readonly count?: number;
19
+ }
20
+ /**
21
+ * Monotonic revision counters. A host can consume only the counters relevant
22
+ * to its work (for example a canvas data layer observes `dataPaint`, while an
23
+ * accessibility tree observes `accessibility`).
24
+ */
25
+ export interface RevisionSet {
26
+ readonly data: number;
27
+ readonly domain: number;
28
+ readonly layout: number;
29
+ readonly sceneGeometry: number;
30
+ readonly sceneStyle: number;
31
+ readonly dataPaint: number;
32
+ readonly interactionPaint: number;
33
+ readonly overlay: number;
34
+ readonly accessibility: number;
35
+ readonly evidence: number;
36
+ }
37
+ /** The additive result exposed by the XY PipelineStore reference path. */
38
+ export interface UpdateResult {
39
+ readonly changeSet: ChangeSet;
40
+ readonly changed: ReadonlySet<Invalidation>;
41
+ readonly revisions: RevisionSet;
42
+ }
43
+ export declare function createRevisionSet(): RevisionSet;
44
+ /** Return a fresh revision snapshot with exactly the invalidated counters bumped. */
45
+ export declare function advanceRevisions(previous: RevisionSet, invalidations: Iterable<Invalidation>): RevisionSet;
46
+ /**
47
+ * Build an immutable-by-convention update record from a change description.
48
+ * The Set is copied so later mutation of the caller's iterable cannot alter
49
+ * the revision decision that was recorded.
50
+ */
51
+ export declare function createUpdateResult(changeSet: ChangeSet, invalidations: Iterable<Invalidation>, previousRevisions: RevisionSet): UpdateResult;
52
+ /**
53
+ * Small retained-state helper for stores adopting the result contract. It
54
+ * keeps revision bookkeeping out of family-specific data/layout code while
55
+ * preserving each store's existing mutation API.
56
+ */
57
+ export declare class UpdateResultTracker {
58
+ private revisions;
59
+ private latest;
60
+ get last(): UpdateResult;
61
+ record(changeSet: ChangeSet, invalidations: Iterable<Invalidation>): UpdateResult;
62
+ }
@@ -0,0 +1,22 @@
1
+ /** Minimal surface shared by stream frames for idle pulse repainting. */
2
+ export interface PulseRefreshStore {
3
+ lastCustomLayoutFailure?: {
4
+ preservedLastGoodScene?: boolean;
5
+ } | null;
6
+ hasActivePulsesAt(now: number): boolean;
7
+ refreshPulse(now: number): boolean;
8
+ }
9
+ export interface IdlePulseRefresh {
10
+ /** Whether the data canvas needs a style-only repaint this frame. */
11
+ changed: boolean;
12
+ /** Keep one subsequent frame so an expired glow can be cleared. */
13
+ pending: boolean;
14
+ }
15
+ /**
16
+ * Advance pulse styling without triggering a layout rebuild. A failed custom
17
+ * layout deliberately retains its last good scene, which must remain
18
+ * immutable until the layout owner recovers.
19
+ */
20
+ export declare function refreshIdlePulse(store: PulseRefreshStore, now: number, sceneRecomputed: boolean, pendingRef: {
21
+ current: boolean;
22
+ }): IdlePulseRefresh;
@@ -0,0 +1,6 @@
1
+ import type { NetworkSceneNode } from "../networkTypes";
2
+ import type { StreamRendererFn } from "./types";
3
+ /** XY / ordinal / geo painter (x/y-positioned glyph nodes). */
4
+ export declare const glyphCanvasRenderer: StreamRendererFn;
5
+ /** Network painter (cx/cy-positioned glyph nodes). */
6
+ export declare function networkGlyphRenderer(ctx: CanvasRenderingContext2D, nodes: NetworkSceneNode[]): void;
@@ -21,6 +21,12 @@ export declare function resolveCSSColor(ctx: CanvasRenderingContext2D, value: st
21
21
  * invalidation is global because theme changes are global.
22
22
  */
23
23
  export declare function clearCSSColorCache(_canvas?: HTMLCanvasElement): void;
24
+ /**
25
+ * Monotonic version bumped by theme changes and `clearCSSColorCache`.
26
+ * Frames can cache derived theme color objects keyed by this value so
27
+ * paint loops avoid `getComputedStyle` on every rAF.
28
+ */
29
+ export declare function getCSSColorCacheVersion(): number;
24
30
  /**
25
31
  * Test-only: reset all cache state, including disconnecting any installed
26
32
  * observer/matchMedia listeners. Required for test isolation — without it,
@@ -0,0 +1,18 @@
1
+ import type { RevisionSet, UpdateResult } from "./pipelineUpdateContract";
2
+ type SceneRevisionSet = Pick<RevisionSet, "sceneGeometry" | "layout" | "domain">;
3
+ interface SceneRevisionCheck {
4
+ revisions: SceneRevisionSet;
5
+ signature: string;
6
+ sawSignals: boolean;
7
+ wasUnconsumed: boolean;
8
+ warnUnconsumed: boolean;
9
+ }
10
+ /** Development-only consumption and duplicate-compute diagnostics for an XY scene host. */
11
+ export declare class SceneRevisionDiagnostics {
12
+ private lastConsumed;
13
+ private lastDuplicateWarning;
14
+ private lastUnconsumedWarning;
15
+ beforeCompute(updateResult: UpdateResult, isTransitioning: boolean): SceneRevisionCheck;
16
+ afterCompute(check: SceneRevisionCheck, computedScene: boolean, dimsChanged: boolean): void;
17
+ }
18
+ export {};
@@ -0,0 +1,37 @@
1
+ import { type MutableRefObject } from "react";
2
+ /**
3
+ * Push the memoized pipeline config into the scene store and repaint.
4
+ *
5
+ * `config` is memoized upstream (the frames' `stablePipelineConfig`), so this
6
+ * fires only on a real config change, never per render. Marks the scene dirty
7
+ * and repaints because style callbacks (pointStyle, areaStyle, …) carried in
8
+ * the config may have changed even when geometry did not.
9
+ */
10
+ export declare function useConfigSync<C>(storeRef: MutableRefObject<{
11
+ updateConfig(config: C): void;
12
+ } | null>, config: C, dirtyRef: MutableRefObject<boolean>, scheduleRender: () => void): void;
13
+ /**
14
+ * Bridge a custom layout's resolved selection (`layoutSelection`) into the
15
+ * scene store and repaint.
16
+ *
17
+ * `layoutSelection` has no single home in a store: the custom-chart HOCs
18
+ * assemble it in React by merging local component state (hover-highlight,
19
+ * legend interaction) with the cross-chart selection store
20
+ * (`effectiveSelectionHook = hover ?? legend ?? activeSelection`). React owns
21
+ * that blended value.
22
+ *
23
+ * Kept OFF the rebuild path: when the layout returned a `restyle` callback a
24
+ * selection change re-applies styles to the existing scene and repaints (no
25
+ * relayout, no quadtree rebuild); otherwise it marks the scene dirty so a
26
+ * rebuild lets `ctx.selection` reach the layout. Either way the overlay subtree
27
+ * re-renders against the new selection via `CustomLayoutSelectionProvider`.
28
+ *
29
+ * The `lastSelectionRef` guard makes the write fire only on a real selection
30
+ * change (the HOCs already memoize `layoutSelection` on its `isActive`/
31
+ * `predicate` identity), never per render.
32
+ */
33
+ export declare function useLayoutSelectionSync<S>(storeRef: MutableRefObject<{
34
+ setLayoutSelection(selection: S | null): void;
35
+ hasCustomRestyle: boolean;
36
+ restyleScene(selection: S | null): void;
37
+ } | null>, layoutSelection: S | null | undefined, dirtyRef: MutableRefObject<boolean>, scheduleRender: () => void): void;