semiotic 3.7.4 → 3.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (517) hide show
  1. package/CLAUDE.md +60 -15
  2. package/README.md +135 -24
  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 +2934 -517
  9. package/ai/surface-manifest.json +200 -0
  10. package/ai/system-prompt.md +19 -3
  11. package/dist/components/Annotation.d.ts +4 -0
  12. package/dist/components/CategoryColors.d.ts +1 -1
  13. package/dist/components/ChartContainer.d.ts +91 -0
  14. package/dist/components/ChartGrid.d.ts +11 -1
  15. package/dist/components/CircularBrush.d.ts +61 -0
  16. package/dist/components/ContextLayout.d.ts +5 -1
  17. package/dist/components/DataSummaryContext.d.ts +1 -0
  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 +42 -1
  29. package/dist/components/ai/chartClinic.d.ts +91 -0
  30. package/dist/components/ai/chartRecipeRegistry.d.ts +14 -0
  31. package/dist/components/ai/chartRecipes.d.ts +278 -0
  32. package/dist/components/ai/dataPitfallsBridge.d.ts +203 -0
  33. package/dist/components/ai/dataQualityBridge.d.ts +201 -0
  34. package/dist/components/ai/describeChart.d.ts +9 -0
  35. package/dist/components/ai/describeRecipeChart.d.ts +16 -0
  36. package/dist/components/ai/generativeChart.d.ts +170 -0
  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/charts/custom/GeoCustomChart.d.ts +48 -0
  47. package/dist/components/charts/custom/NetworkCustomChart.d.ts +22 -3
  48. package/dist/components/charts/custom/OrdinalCustomChart.d.ts +8 -2
  49. package/dist/components/charts/custom/XYCustomChart.d.ts +11 -2
  50. package/dist/components/charts/geo/DistanceCartogram.d.ts +1 -1
  51. package/dist/components/charts/geo/FlowMap.d.ts +1 -1
  52. package/dist/components/charts/geo/ProportionalSymbolMap.d.ts +1 -1
  53. package/dist/components/charts/geo/index.d.ts +2 -0
  54. package/dist/components/charts/index.d.ts +29 -1
  55. package/dist/components/charts/network/ChordDiagram.d.ts +1 -1
  56. package/dist/components/charts/network/CirclePack.d.ts +1 -1
  57. package/dist/components/charts/network/ForceDirectedGraph.d.ts +15 -5
  58. package/dist/components/charts/network/OrbitDiagram.d.ts +1 -1
  59. package/dist/components/charts/network/ProcessSankey.d.ts +1 -1
  60. package/dist/components/charts/network/SankeyDiagram.d.ts +1 -1
  61. package/dist/components/charts/network/TreeDiagram.d.ts +1 -1
  62. package/dist/components/charts/network/Treemap.d.ts +1 -1
  63. package/dist/components/charts/network/useForceLayout.d.ts +17 -0
  64. package/dist/components/charts/ordinal/BarChart.d.ts +1 -1
  65. package/dist/components/charts/ordinal/BoxPlot.d.ts +1 -1
  66. package/dist/components/charts/ordinal/DonutChart.d.ts +1 -1
  67. package/dist/components/charts/ordinal/DotPlot.d.ts +1 -1
  68. package/dist/components/charts/ordinal/FunnelChart.d.ts +1 -1
  69. package/dist/components/charts/ordinal/GroupedBarChart.d.ts +1 -1
  70. package/dist/components/charts/ordinal/Histogram.d.ts +1 -1
  71. package/dist/components/charts/ordinal/PieChart.d.ts +1 -1
  72. package/dist/components/charts/ordinal/RidgelinePlot.d.ts +1 -1
  73. package/dist/components/charts/ordinal/StackedBarChart.d.ts +1 -1
  74. package/dist/components/charts/ordinal/SwarmPlot.d.ts +8 -1
  75. package/dist/components/charts/ordinal/SwimlaneChart.d.ts +1 -1
  76. package/dist/components/charts/ordinal/ViolinPlot.d.ts +1 -1
  77. package/dist/components/charts/physics/ChainReactionChart.d.ts +9 -0
  78. package/dist/components/charts/physics/CollisionSwarmChart.capability.d.ts +2 -0
  79. package/dist/components/charts/physics/CollisionSwarmChart.d.ts +47 -0
  80. package/dist/components/charts/physics/EventDropChart.capability.d.ts +2 -0
  81. package/dist/components/charts/physics/EventDropChart.d.ts +53 -0
  82. package/dist/components/charts/physics/GaltonBoardChart.capability.d.ts +2 -0
  83. package/dist/components/charts/physics/GaltonBoardChart.d.ts +66 -0
  84. package/dist/components/charts/physics/GauntletChart.capability.d.ts +2 -0
  85. package/dist/components/charts/physics/GauntletChart.d.ts +73 -0
  86. package/dist/components/charts/physics/PhysicalFlowChart.capability.d.ts +2 -0
  87. package/dist/components/charts/physics/PhysicalFlowChart.d.ts +63 -0
  88. package/dist/components/charts/physics/PhysicsCustomChart.d.ts +120 -0
  89. package/dist/components/charts/physics/PhysicsPileChart.capability.d.ts +2 -0
  90. package/dist/components/charts/physics/PhysicsPileChart.d.ts +53 -0
  91. package/dist/components/charts/physics/ProcessFlowChart.capability.d.ts +2 -0
  92. package/dist/components/charts/physics/ProcessFlowChart.d.ts +96 -0
  93. package/dist/components/charts/physics/chainReactionOverlay.d.ts +22 -0
  94. package/dist/components/charts/physics/chainReactionRuntime.d.ts +37 -0
  95. package/dist/components/charts/physics/chainReactionTypes.d.ts +97 -0
  96. package/dist/components/charts/physics/collisionSwarmPhysics.d.ts +27 -0
  97. package/dist/components/charts/physics/dependencyMachine.d.ts +188 -0
  98. package/dist/components/charts/physics/eventDropPhysics.d.ts +64 -0
  99. package/dist/components/charts/physics/galtonBoardPhysics.d.ts +28 -0
  100. package/dist/components/charts/physics/gauntletChartProps.d.ts +67 -0
  101. package/dist/components/charts/physics/gauntletChrome.d.ts +33 -0
  102. package/dist/components/charts/physics/gauntletController.d.ts +73 -0
  103. package/dist/components/charts/physics/gauntletEffects.d.ts +36 -0
  104. package/dist/components/charts/physics/gauntletPhysics.d.ts +71 -0
  105. package/dist/components/charts/physics/gauntletRuntime.d.ts +42 -0
  106. package/dist/components/charts/physics/gauntletTypes.d.ts +213 -0
  107. package/dist/components/charts/physics/physicalFlowPhysics.d.ts +57 -0
  108. package/dist/components/charts/physics/physicsChartShared.d.ts +41 -0
  109. package/dist/components/charts/physics/physicsChartUtils.d.ts +18 -0
  110. package/dist/components/charts/physics/physicsEncoding.d.ts +142 -0
  111. package/dist/components/charts/physics/physicsHocHandle.d.ts +53 -0
  112. package/dist/components/charts/physics/physicsHocUtils.d.ts +128 -0
  113. package/dist/components/charts/physics/physicsPilePhysics.d.ts +41 -0
  114. package/dist/components/charts/physics/physicsProcessPrimitives.d.ts +38 -0
  115. package/dist/components/charts/physics/processFlowPhysics.d.ts +97 -0
  116. package/dist/components/charts/realtime/RealtimeHeatmap.d.ts +9 -1
  117. package/dist/components/charts/realtime/RealtimeHistogram.d.ts +9 -1
  118. package/dist/components/charts/realtime/RealtimeLineChart.d.ts +30 -1
  119. package/dist/components/charts/realtime/RealtimeSwarmChart.d.ts +16 -2
  120. package/dist/components/charts/realtime/RealtimeWaterfallChart.d.ts +9 -1
  121. package/dist/components/charts/realtime/aggregate.d.ts +51 -0
  122. package/dist/components/charts/realtime/eventTime.d.ts +26 -0
  123. package/dist/components/charts/shared/auditMobileVisualization.d.ts +91 -0
  124. package/dist/components/charts/shared/chartDefinitionPilot.d.ts +145 -0
  125. package/dist/components/charts/shared/chartFamilySets.d.ts +20 -0
  126. package/dist/components/charts/shared/chartSpecCore.d.ts +165 -0
  127. package/dist/components/charts/shared/chartSpecs.d.ts +8 -127
  128. package/dist/components/charts/shared/chartSpecsGeo.d.ts +2 -0
  129. package/dist/components/charts/shared/chartSpecsNetwork.d.ts +2 -0
  130. package/dist/components/charts/shared/chartSpecsOrdinal.d.ts +2 -0
  131. package/dist/components/charts/shared/chartSpecsPhysics.d.ts +2 -0
  132. package/dist/components/charts/shared/chartSpecsRealtime.d.ts +2 -0
  133. package/dist/components/charts/shared/chartSpecsValue.d.ts +2 -0
  134. package/dist/components/charts/shared/chartSpecsXY.d.ts +2 -0
  135. package/dist/components/charts/shared/colorContrast.d.ts +3 -0
  136. package/dist/components/charts/shared/colorPalettes.d.ts +2 -0
  137. package/dist/components/charts/shared/colorUtils.d.ts +17 -13
  138. package/dist/components/charts/shared/diagnoseAnnotationChecks.d.ts +4 -0
  139. package/dist/components/charts/shared/diagnoseConfig.d.ts +9 -14
  140. package/dist/components/charts/shared/diagnoseMisleadingChecks.d.ts +9 -0
  141. package/dist/components/charts/shared/diagnosePhysicsChecks.d.ts +3 -0
  142. package/dist/components/charts/shared/diagnoseTypes.d.ts +10 -0
  143. package/dist/components/charts/shared/hooks.d.ts +28 -5
  144. package/dist/components/charts/shared/minMax.d.ts +3 -0
  145. package/dist/components/charts/shared/motionEncoding.d.ts +145 -0
  146. package/dist/components/charts/shared/radialGeometry.d.ts +0 -18
  147. package/dist/components/charts/shared/responsiveRules.d.ts +56 -0
  148. package/dist/components/charts/shared/smartTooltip.d.ts +27 -0
  149. package/dist/components/charts/shared/statisticalOverlays.d.ts +35 -0
  150. package/dist/components/charts/shared/streamPropsHelpers.d.ts +12 -2
  151. package/dist/components/charts/shared/temporalStrings.d.ts +7 -0
  152. package/dist/components/charts/shared/tooltipUtils.d.ts +2 -0
  153. package/dist/components/charts/shared/types.d.ts +49 -1
  154. package/dist/components/charts/shared/useChartSetup.d.ts +10 -3
  155. package/dist/components/charts/shared/useCustomChartSetup.d.ts +15 -6
  156. package/dist/components/charts/shared/useNetworkChartSetup.d.ts +6 -2
  157. package/dist/components/charts/shared/useOrdinalPieceStyle.d.ts +1 -1
  158. package/dist/components/charts/shared/useStreamingLegend.d.ts +1 -1
  159. package/dist/components/charts/shared/useSyncedPushData.d.ts +49 -0
  160. package/dist/components/charts/shared/validateChartData.d.ts +1 -1
  161. package/dist/components/charts/shared/validationMap.d.ts +0 -11
  162. package/dist/components/charts/xy/AreaChart.d.ts +1 -1
  163. package/dist/components/charts/xy/BubbleChart.d.ts +1 -1
  164. package/dist/components/charts/xy/LineChart.d.ts +1 -1
  165. package/dist/components/charts/xy/MinimapChart.d.ts +1 -1
  166. package/dist/components/charts/xy/MultiAxisLineChart.d.ts +2 -2
  167. package/dist/components/charts/xy/QuadrantChart.d.ts +1 -1
  168. package/dist/components/charts/xy/Scatterplot.d.ts +10 -1
  169. package/dist/components/charts/xy/ScatterplotMatrix.d.ts +11 -1
  170. package/dist/components/charts/xy/StackedAreaChart.d.ts +9 -4
  171. package/dist/components/controls/controlAudit.d.ts +24 -0
  172. package/dist/components/controls/controlContract.d.ts +57 -0
  173. package/dist/components/data/fromArrow.d.ts +54 -0
  174. package/dist/components/data/fromFlintChart.d.ts +74 -0
  175. package/dist/components/data/fromMermaid.d.ts +47 -0
  176. package/dist/components/data/fromObservablePlot.d.ts +69 -0
  177. package/dist/components/data/fromVegaLite.d.ts +27 -0
  178. package/dist/components/data/portability/index.d.ts +17 -0
  179. package/dist/components/data/portability/result.d.ts +52 -0
  180. package/dist/components/data/portability/spec.d.ts +160 -0
  181. package/dist/components/data/portability/vegaLite.d.ts +80 -0
  182. package/dist/components/export/chartConfig.d.ts +11 -0
  183. package/dist/components/realtime/ReorderBuffer.d.ts +54 -0
  184. package/dist/components/realtime/RunningStats.d.ts +66 -0
  185. package/dist/components/realtime/WindowAccumulator.d.ts +105 -0
  186. package/dist/components/realtime/parseWindowDuration.d.ts +12 -0
  187. package/dist/components/realtime/types.d.ts +11 -0
  188. package/dist/components/recipes/annotationLayout.d.ts +29 -0
  189. package/dist/components/recipes/axisFixedForce.d.ts +119 -0
  190. package/dist/components/recipes/boba.d.ts +23 -0
  191. package/dist/components/recipes/customTooltip.d.ts +31 -0
  192. package/dist/components/recipes/cyclical.d.ts +39 -0
  193. package/dist/components/recipes/edgeRouter.d.ts +103 -0
  194. package/dist/components/recipes/forceLayout.d.ts +48 -0
  195. package/dist/components/recipes/forceLayoutAsync.d.ts +17 -0
  196. package/dist/components/recipes/gofishBobaHandwritten.d.ts +3 -0
  197. package/dist/components/recipes/gofishDisplayListFixtures.generated.d.ts +37 -0
  198. package/dist/components/recipes/gofishIR.d.ts +215 -0
  199. package/dist/components/recipes/gofishIRExamples.d.ts +38 -0
  200. package/dist/components/recipes/intervalLanes.d.ts +87 -0
  201. package/dist/components/recipes/intervals.d.ts +80 -0
  202. package/dist/components/recipes/isometricLandmarks.d.ts +88 -0
  203. package/dist/components/recipes/isotypeGlyphs.d.ts +17 -0
  204. package/dist/components/recipes/mermaidDag.d.ts +44 -0
  205. package/dist/components/recipes/mobileAnnotationStrategy.d.ts +48 -0
  206. package/dist/components/recipes/mobileChartFamilyRecipes.d.ts +59 -0
  207. package/dist/components/recipes/networkAnalysis.d.ts +102 -0
  208. package/dist/components/recipes/networkLayouts.d.ts +83 -0
  209. package/dist/components/recipes/packedClusterMatrix.d.ts +166 -0
  210. package/dist/components/recipes/physics.d.ts +122 -0
  211. package/dist/components/recipes/physicsReference.d.ts +102 -0
  212. package/dist/components/recipes/processAggregates.d.ts +32 -0
  213. package/dist/components/recipes/processChrome.d.ts +67 -0
  214. package/dist/components/recipes/processJourney.d.ts +54 -0
  215. package/dist/components/recipes/processPhysics.d.ts +300 -0
  216. package/dist/components/recipes/processVolumeGeometry.d.ts +28 -0
  217. package/dist/components/recipes/radialCoords.d.ts +69 -0
  218. package/dist/components/recipes/random.d.ts +2 -0
  219. package/dist/components/recipes/recipeChrome.d.ts +191 -0
  220. package/dist/components/recipes/recipeGlyph.d.ts +42 -0
  221. package/dist/components/recipes/recipeLegend.d.ts +109 -0
  222. package/dist/components/recipes/recipeUtils.d.ts +157 -0
  223. package/dist/components/recipes/runs.d.ts +59 -0
  224. package/dist/components/recipes/tokenEncoding.d.ts +157 -0
  225. package/dist/components/recipes/tokenLayer.d.ts +79 -0
  226. package/dist/components/recipes/unitize.d.ts +108 -0
  227. package/dist/components/recipes/vector.d.ts +28 -0
  228. package/dist/components/recipes/waffle.d.ts +43 -0
  229. package/dist/components/semiotic-ai-core.d.ts +47 -0
  230. package/dist/components/semiotic-ai.d.ts +52 -4
  231. package/dist/components/semiotic-controls.d.ts +18 -0
  232. package/dist/components/semiotic-data.d.ts +2 -0
  233. package/dist/components/semiotic-experimental.d.ts +49 -0
  234. package/dist/components/semiotic-geo.d.ts +11 -0
  235. package/dist/components/semiotic-network.d.ts +14 -1
  236. package/dist/components/semiotic-ordinal.d.ts +10 -0
  237. package/dist/components/semiotic-physics-matter.d.ts +10 -0
  238. package/dist/components/semiotic-physics-rapier.d.ts +9 -0
  239. package/dist/components/semiotic-physics.d.ts +56 -0
  240. package/dist/components/semiotic-realtime-core.d.ts +34 -0
  241. package/dist/components/semiotic-realtime-react.d.ts +10 -0
  242. package/dist/components/semiotic-realtime.d.ts +4 -22
  243. package/dist/components/semiotic-recipes-core.d.ts +92 -0
  244. package/dist/components/semiotic-recipes-react.d.ts +7 -0
  245. package/dist/components/semiotic-recipes.d.ts +4 -26
  246. package/dist/components/semiotic-server-edge.d.ts +8 -0
  247. package/dist/components/semiotic-server-node.d.ts +5 -0
  248. package/dist/components/semiotic-server.d.ts +2 -2
  249. package/dist/components/semiotic-themes-core.d.ts +53 -0
  250. package/dist/components/semiotic-themes-react.d.ts +4 -0
  251. package/dist/components/semiotic-themes.d.ts +6 -74
  252. package/dist/components/semiotic-utils-core.d.ts +46 -0
  253. package/dist/components/semiotic-utils-react.d.ts +5 -0
  254. package/dist/components/semiotic-utils.d.ts +3 -39
  255. package/dist/components/semiotic-xy.d.ts +10 -0
  256. package/dist/components/semiotic.d.ts +39 -7
  257. package/dist/components/server/animatedGif.d.ts +36 -0
  258. package/dist/components/server/renderEvidence.d.ts +1 -1
  259. package/dist/components/server/renderToStaticSVG.d.ts +3 -35
  260. package/dist/components/server/serverChartConfigShared.d.ts +17 -0
  261. package/dist/components/server/serverChartConfigs.d.ts +19 -9
  262. package/dist/components/server/serverChartConfigsCustom.d.ts +5 -0
  263. package/dist/components/server/serverChartConfigsGeo.d.ts +9 -0
  264. package/dist/components/server/serverChartConfigsNetwork.d.ts +8 -0
  265. package/dist/components/server/serverChartConfigsOrdinal.d.ts +16 -0
  266. package/dist/components/server/serverChartConfigsPhysics.d.ts +9 -0
  267. package/dist/components/server/serverChartConfigsXY.d.ts +11 -0
  268. package/dist/components/server/staticGeo.d.ts +4 -0
  269. package/dist/components/server/staticLegend.d.ts +1 -1
  270. package/dist/components/server/staticNetwork.d.ts +8 -0
  271. package/dist/components/server/staticOrdinal.d.ts +11 -0
  272. package/dist/components/server/staticPhysics.d.ts +3 -0
  273. package/dist/components/server/staticSVGChrome.d.ts +110 -0
  274. package/dist/components/server/staticXY.d.ts +4 -0
  275. package/dist/components/store/ObservationStore.d.ts +23 -3
  276. package/dist/components/store/SelectionStore.d.ts +1 -1
  277. package/dist/components/store/ThemeStore.d.ts +1 -1
  278. package/dist/components/store/TooltipStore.d.ts +1 -1
  279. package/dist/components/store/createStore.d.ts +1 -1
  280. package/dist/components/store/designTokens.d.ts +15 -0
  281. package/dist/components/store/themeSerialization.d.ts +32 -0
  282. package/dist/components/store/useChartInterrogation.d.ts +9 -0
  283. package/dist/components/stream/AccessibleDataTable.d.ts +3 -13
  284. package/dist/components/stream/FocusRing.d.ts +4 -2
  285. package/dist/components/stream/GeoCanvasHitTester.d.ts +1 -1
  286. package/dist/components/stream/GeoPipelineStore.d.ts +28 -0
  287. package/dist/components/stream/NetworkHtmlMarksLayer.d.ts +44 -0
  288. package/dist/components/stream/NetworkPipelineStore.d.ts +62 -25
  289. package/dist/components/stream/NetworkSVGOverlay.d.ts +15 -0
  290. package/dist/components/stream/OrdinalPipelineStore.d.ts +64 -2
  291. package/dist/components/stream/PipelineStore.d.ts +100 -162
  292. package/dist/components/stream/SceneGraph.d.ts +14 -2
  293. package/dist/components/stream/StreamGeoFrame.d.ts +1 -1
  294. package/dist/components/stream/StreamNetworkFrame.d.ts +1 -1
  295. package/dist/components/stream/StreamOrdinalFrame.d.ts +1 -1
  296. package/dist/components/stream/StreamXYFrame.d.ts +2 -18
  297. package/dist/components/stream/accessibleDataRows.d.ts +33 -0
  298. package/dist/components/stream/accessorUtils.d.ts +23 -10
  299. package/dist/components/stream/brushAccessibility.d.ts +25 -0
  300. package/dist/components/stream/canvasBackground.d.ts +24 -0
  301. package/dist/components/stream/canvasSetup.d.ts +4 -1
  302. package/dist/components/stream/customLayout.d.ts +20 -0
  303. package/dist/components/stream/customLayoutDiagnostics.d.ts +11 -0
  304. package/dist/components/stream/customLayoutFailure.d.ts +33 -0
  305. package/dist/components/stream/customLayoutPalette.d.ts +19 -9
  306. package/dist/components/stream/customLayoutSelection.d.ts +52 -0
  307. package/dist/components/stream/frameThemeColors.d.ts +24 -0
  308. package/dist/components/stream/geoAnnotationAnchors.d.ts +14 -0
  309. package/dist/components/stream/geoCartogram.d.ts +17 -0
  310. package/dist/components/stream/geoCustomLayout.d.ts +59 -0
  311. package/dist/components/stream/geoDefaultTooltip.d.ts +11 -0
  312. package/dist/components/stream/geoFrameHelpers.d.ts +34 -0
  313. package/dist/components/stream/geoPipelineHelpers.d.ts +46 -0
  314. package/dist/components/stream/geoTypes.d.ts +56 -7
  315. package/dist/components/stream/glyphDef.d.ts +98 -0
  316. package/dist/components/stream/hitTarget.d.ts +170 -0
  317. package/dist/components/stream/hoverUtils.d.ts +3 -0
  318. package/dist/components/stream/keyboardNav.d.ts +4 -1
  319. package/dist/components/stream/layouts/forceLayoutPlugin.d.ts +9 -1
  320. package/dist/components/stream/layouts/forceLayoutWorkerClient.d.ts +57 -0
  321. package/dist/components/stream/networkBezier.d.ts +10 -0
  322. package/dist/components/stream/networkColorAccessors.d.ts +49 -0
  323. package/dist/components/stream/networkCustomLayout.d.ts +66 -1
  324. package/dist/components/stream/networkDefaultTooltip.d.ts +10 -0
  325. package/dist/components/stream/networkFrameInteraction.d.ts +37 -0
  326. package/dist/components/stream/networkFramePaint.d.ts +43 -0
  327. package/dist/components/stream/networkPipelineConfig.d.ts +22 -0
  328. package/dist/components/stream/networkPipelineHelpers.d.ts +12 -0
  329. package/dist/components/stream/networkRealtimeEncoding.d.ts +41 -0
  330. package/dist/components/stream/networkTypes.d.ts +104 -5
  331. package/dist/components/stream/ordinalCanvasRenderers.d.ts +7 -0
  332. package/dist/components/stream/ordinalCustomLayout.d.ts +17 -1
  333. package/dist/components/stream/ordinalDataIndex.d.ts +5 -0
  334. package/dist/components/stream/ordinalDefaultTooltip.d.ts +10 -0
  335. package/dist/components/stream/ordinalDomain.d.ts +38 -0
  336. package/dist/components/stream/ordinalPipelineUpdateResults.d.ts +12 -0
  337. package/dist/components/stream/ordinalPulse.d.ts +10 -0
  338. package/dist/components/stream/ordinalPulseResources.d.ts +3 -0
  339. package/dist/components/stream/ordinalSceneBuilders/sceneBuilderMap.d.ts +5 -0
  340. package/dist/components/stream/ordinalSceneBuilders/types.d.ts +2 -0
  341. package/dist/components/stream/ordinalSpatialIndex.d.ts +9 -0
  342. package/dist/components/stream/ordinalTypes.d.ts +56 -8
  343. package/dist/components/stream/paintNeeds.d.ts +31 -0
  344. package/dist/components/stream/physics/CapacityQueueController.d.ts +5 -0
  345. package/dist/components/stream/physics/CapacityQueueTypes.d.ts +134 -0
  346. package/dist/components/stream/physics/MatterPhysicsEngineAdapter.d.ts +42 -0
  347. package/dist/components/stream/physics/PhysicsAccessibility.d.ts +48 -0
  348. package/dist/components/stream/physics/PhysicsAnnotations.d.ts +58 -0
  349. package/dist/components/stream/physics/PhysicsBodyBudget.d.ts +26 -0
  350. package/dist/components/stream/physics/PhysicsBodySpatialIndex.d.ts +10 -0
  351. package/dist/components/stream/physics/PhysicsCanvasTheme.d.ts +26 -0
  352. package/dist/components/stream/physics/PhysicsControllers.d.ts +75 -0
  353. package/dist/components/stream/physics/PhysicsEngineAdapter.d.ts +59 -0
  354. package/dist/components/stream/physics/PhysicsEngineConformance.d.ts +23 -0
  355. package/dist/components/stream/physics/PhysicsEvidence.d.ts +25 -0
  356. package/dist/components/stream/physics/PhysicsKernel.d.ts +207 -0
  357. package/dist/components/stream/physics/PhysicsOptionalEngineAdapters.d.ts +12 -0
  358. package/dist/components/stream/physics/PhysicsPipelineStore.d.ts +84 -0
  359. package/dist/components/stream/physics/PhysicsPipelineTypes.d.ts +181 -0
  360. package/dist/components/stream/physics/PhysicsSVGOverlay.d.ts +72 -0
  361. package/dist/components/stream/physics/PhysicsSediment.d.ts +69 -0
  362. package/dist/components/stream/physics/PhysicsSettledSVG.d.ts +18 -0
  363. package/dist/components/stream/physics/PhysicsSettledScene.d.ts +21 -0
  364. package/dist/components/stream/physics/PhysicsWorkerClient.d.ts +24 -0
  365. package/dist/components/stream/physics/PhysicsWorkerProtocol.d.ts +101 -0
  366. package/dist/components/stream/physics/PhysicsWorkerRuntime.d.ts +5 -0
  367. package/dist/components/stream/physics/RapierPhysicsEngineAdapter.d.ts +18 -0
  368. package/dist/components/stream/physics/ServiceOperationsControllers.d.ts +27 -0
  369. package/dist/components/stream/physics/ServiceOperationsTypes.d.ts +89 -0
  370. package/dist/components/stream/physics/StreamPhysicsFrame.d.ts +6 -0
  371. package/dist/components/stream/physics/StreamPhysicsTypes.d.ts +302 -0
  372. package/dist/components/stream/physics/physicsBodyCanvas.d.ts +27 -0
  373. package/dist/components/stream/physics/physicsPipelineControls.d.ts +4 -0
  374. package/dist/components/stream/physics/physicsPipelineHelpers.d.ts +41 -0
  375. package/dist/components/stream/physics/physicsPipelineObservations.d.ts +14 -0
  376. package/dist/components/stream/physics/physicsPipelineUpdateResults.d.ts +9 -0
  377. package/dist/components/stream/physics/physicsRegionRuntime.d.ts +54 -0
  378. package/dist/components/stream/physics/physicsSemanticUI.d.ts +20 -0
  379. package/dist/components/stream/physics/usePhysicsFrameLifecyclePolicy.d.ts +16 -0
  380. package/dist/components/stream/pipelineBufferUtils.d.ts +26 -0
  381. package/dist/components/stream/pipelineConfig.d.ts +177 -0
  382. package/dist/components/stream/pipelineDecay.d.ts +20 -2
  383. package/dist/components/stream/pipelineDomainResolution.d.ts +62 -0
  384. package/dist/components/stream/pipelineIdentityOps.d.ts +26 -0
  385. package/dist/components/stream/pipelinePulse.d.ts +16 -2
  386. package/dist/components/stream/pipelineRibbons.d.ts +41 -0
  387. package/dist/components/stream/pipelineSpatialIndex.d.ts +12 -0
  388. package/dist/components/stream/pipelineStoreUpdateResults.d.ts +12 -0
  389. package/dist/components/stream/pipelineStyleResolvers.d.ts +46 -0
  390. package/dist/components/stream/pipelineTransitions.d.ts +2 -0
  391. package/dist/components/stream/pipelineUpdateContract.d.ts +62 -0
  392. package/dist/components/stream/pulseFrameRefresh.d.ts +22 -0
  393. package/dist/components/stream/renderers/glyphCanvasRenderer.d.ts +6 -0
  394. package/dist/components/stream/renderers/networkSymbolRenderer.d.ts +2 -0
  395. package/dist/components/stream/renderers/resolveCSSColor.d.ts +6 -0
  396. package/dist/components/stream/renderers/symbolCanvasRenderer.d.ts +2 -0
  397. package/dist/components/stream/sceneRevisionDiagnostics.d.ts +18 -0
  398. package/dist/components/stream/stalenessBands.d.ts +28 -0
  399. package/dist/components/stream/streamStoreSync.d.ts +37 -0
  400. package/dist/components/stream/symbolPath.d.ts +24 -0
  401. package/dist/components/stream/types.d.ts +206 -9
  402. package/dist/components/stream/useFrame.d.ts +21 -2
  403. package/dist/components/stream/useHydration.d.ts +6 -0
  404. package/dist/components/stream/useLegendCategoryEmission.d.ts +5 -0
  405. package/dist/components/stream/useStalenessCheck.d.ts +6 -1
  406. package/dist/components/stream/workerModuleUrl.d.ts +10 -0
  407. package/dist/components/stream/xyAnnotationAnchors.d.ts +13 -0
  408. package/dist/components/stream/xyCanvasRenderers.d.ts +7 -0
  409. package/dist/components/stream/xyCrosshair.d.ts +11 -0
  410. package/dist/components/stream/xyDateTicks.d.ts +9 -0
  411. package/dist/components/stream/xyDefaultTooltip.d.ts +10 -0
  412. package/dist/components/stream/xySceneBuilders/pointScene.d.ts +2 -2
  413. package/dist/components/stream/xySceneBuilders/types.d.ts +9 -4
  414. package/dist/controls.min.js +2 -0
  415. package/dist/controls.module.min.js +2 -0
  416. package/dist/forceLayoutWorker.js +1 -0
  417. package/dist/geo.min.js +1 -1
  418. package/dist/geo.module.min.js +1 -1
  419. package/dist/network.min.js +1 -1
  420. package/dist/network.module.min.js +1 -1
  421. package/dist/ordinal.min.js +1 -1
  422. package/dist/ordinal.module.min.js +1 -1
  423. package/dist/physics-matter.min.js +1 -0
  424. package/dist/physics-matter.module.min.js +1 -0
  425. package/dist/physics-rapier.min.js +1 -0
  426. package/dist/physics-rapier.module.min.js +1 -0
  427. package/dist/physics.min.js +2 -0
  428. package/dist/physics.module.min.js +2 -0
  429. package/dist/physicsWorker.js +1 -0
  430. package/dist/realtime.min.js +1 -1
  431. package/dist/realtime.module.min.js +1 -1
  432. package/dist/semiotic-ai-chunk-OG7BQUUW.module.min.js +2 -0
  433. package/dist/semiotic-ai-core.d.ts +47 -0
  434. package/dist/semiotic-ai-core.min.js +1 -0
  435. package/dist/semiotic-ai-core.module.min.js +1 -0
  436. package/dist/semiotic-ai-statisticalOverlays-CY4WKR4A.module.min.js +2 -0
  437. package/dist/semiotic-ai.d.ts +52 -4
  438. package/dist/semiotic-ai.min.js +1 -1
  439. package/dist/semiotic-ai.module.min.js +1 -1
  440. package/dist/semiotic-chunk-3FSVZ46U.module.min.js +2 -0
  441. package/dist/semiotic-controls.d.ts +18 -0
  442. package/dist/semiotic-data.d.ts +2 -0
  443. package/dist/semiotic-data.min.js +1 -1
  444. package/dist/semiotic-data.module.min.js +1 -1
  445. package/dist/semiotic-experimental.d.ts +49 -0
  446. package/dist/semiotic-experimental.min.js +1 -0
  447. package/dist/semiotic-experimental.module.min.js +1 -0
  448. package/dist/semiotic-geo.d.ts +11 -0
  449. package/dist/semiotic-network.d.ts +14 -1
  450. package/dist/semiotic-ordinal.d.ts +10 -0
  451. package/dist/semiotic-physics-matter.d.ts +10 -0
  452. package/dist/semiotic-physics-rapier.d.ts +9 -0
  453. package/dist/semiotic-physics.d.ts +56 -0
  454. package/dist/semiotic-realtime-core.d.ts +34 -0
  455. package/dist/semiotic-realtime-core.min.js +1 -0
  456. package/dist/semiotic-realtime-core.module.min.js +1 -0
  457. package/dist/semiotic-realtime-react.d.ts +10 -0
  458. package/dist/semiotic-realtime-react.min.js +2 -0
  459. package/dist/semiotic-realtime-react.module.min.js +2 -0
  460. package/dist/semiotic-realtime.d.ts +4 -22
  461. package/dist/semiotic-recipes-core.d.ts +92 -0
  462. package/dist/semiotic-recipes-core.min.js +1 -0
  463. package/dist/semiotic-recipes-core.module.min.js +1 -0
  464. package/dist/semiotic-recipes-react.d.ts +7 -0
  465. package/dist/semiotic-recipes-react.min.js +2 -0
  466. package/dist/semiotic-recipes-react.module.min.js +2 -0
  467. package/dist/semiotic-recipes.d.ts +4 -26
  468. package/dist/semiotic-recipes.min.js +1 -1
  469. package/dist/semiotic-recipes.module.min.js +1 -1
  470. package/dist/semiotic-server-edge.d.ts +8 -0
  471. package/dist/semiotic-server-edge.min.js +1 -0
  472. package/dist/semiotic-server-edge.module.min.js +1 -0
  473. package/dist/semiotic-server-node.d.ts +5 -0
  474. package/dist/semiotic-server-node.min.js +1 -0
  475. package/dist/semiotic-server-node.module.min.js +1 -0
  476. package/dist/semiotic-server.d.ts +2 -2
  477. package/dist/semiotic-statisticalOverlays-UOMSFKVJ.module.min.js +2 -0
  478. package/dist/semiotic-themes-core.d.ts +53 -0
  479. package/dist/semiotic-themes-core.min.js +1 -0
  480. package/dist/semiotic-themes-core.module.min.js +1 -0
  481. package/dist/semiotic-themes-react.d.ts +4 -0
  482. package/dist/semiotic-themes-react.min.js +2 -0
  483. package/dist/semiotic-themes-react.module.min.js +2 -0
  484. package/dist/semiotic-themes.d.ts +6 -74
  485. package/dist/semiotic-themes.min.js +1 -2
  486. package/dist/semiotic-themes.module.min.js +1 -2
  487. package/dist/semiotic-utils-core.d.ts +46 -0
  488. package/dist/semiotic-utils-core.min.js +1 -0
  489. package/dist/semiotic-utils-core.module.min.js +1 -0
  490. package/dist/semiotic-utils-react.d.ts +5 -0
  491. package/dist/semiotic-utils-react.min.js +2 -0
  492. package/dist/semiotic-utils-react.module.min.js +2 -0
  493. package/dist/semiotic-utils.d.ts +3 -39
  494. package/dist/semiotic-utils.min.js +1 -2
  495. package/dist/semiotic-utils.module.min.js +1 -2
  496. package/dist/semiotic-value.min.js +1 -1
  497. package/dist/semiotic-value.module.min.js +1 -1
  498. package/dist/semiotic-xy.d.ts +10 -0
  499. package/dist/semiotic.d.ts +39 -7
  500. package/dist/semiotic.min.js +1 -1
  501. package/dist/semiotic.module.min.js +1 -1
  502. package/dist/server.min.js +1 -1
  503. package/dist/server.module.min.js +1 -1
  504. package/dist/xy-chunk-IWD6IB6V.module.min.js +2 -0
  505. package/dist/xy-statisticalOverlays-7RWG6LJT.module.min.js +2 -0
  506. package/dist/xy.min.js +1 -1
  507. package/dist/xy.module.min.js +1 -1
  508. package/package.json +246 -86
  509. package/spec/README.md +152 -0
  510. package/spec/bindings/README.md +35 -0
  511. package/spec/bindings/vega-lite.mjs +112 -0
  512. package/spec/v0.1/annotation-provenance.schema.json +127 -0
  513. package/spec/v0.1/audience-profile.schema.json +67 -0
  514. package/spec/v0.1/chart-capability.schema.json +186 -0
  515. package/dist/semiotic-ai-statisticalOverlays-C2PPlmXv.js +0 -1
  516. package/dist/semiotic-statisticalOverlays-C3DsOgr_.js +0 -1
  517. package/dist/xy-statisticalOverlays-C2PPlmXv.js +0 -1
@@ -0,0 +1,32 @@
1
+ import type { Datum } from "../charts/shared/datumTypes";
2
+ import type { SemioticTheme } from "./ThemeStore";
3
+ /**
4
+ * Convert a SemioticTheme to a CSS custom properties string.
5
+ * Useful for SSR or generating stylesheet content.
6
+ *
7
+ * @param theme - A SemioticTheme object
8
+ * @param selector - CSS selector to scope the variables (default: `:root`)
9
+ * @returns CSS string with custom properties
10
+ *
11
+ * @example
12
+ * ```ts
13
+ * const css = themeToCSS(TUFTE_LIGHT, ".my-charts")
14
+ * // .my-charts {
15
+ * // --semiotic-bg: #fffff8;
16
+ * // --semiotic-text: #111111;
17
+ * // ...
18
+ * // }
19
+ * ```
20
+ */
21
+ export declare function themeToCSS(theme: SemioticTheme, selector?: string): string;
22
+ /**
23
+ * Convert a SemioticTheme to a design tokens JSON object.
24
+ * Compatible with Style Dictionary / Design Token Community Group format.
25
+ *
26
+ * @example
27
+ * ```ts
28
+ * const tokens = themeToTokens(TUFTE_LIGHT)
29
+ * // { semiotic: { bg: { $value: "#fffff8", $type: "color" }, ... } }
30
+ * ```
31
+ */
32
+ export declare function themeToTokens(theme: SemioticTheme): Datum;
@@ -2,6 +2,7 @@ import type { Datum } from "../charts/shared/datumTypes";
2
2
  import { type DataSummary } from "../data/DataSummarizer";
3
3
  import type { ChartDataProfile, Suggestion } from "../ai/chartCapabilityTypes";
4
4
  import type { IntentId } from "../ai/intents";
5
+ import { type ChartReaderGrounding, type ChartReaderGroundingOptions } from "../ai/readerGrounding";
5
6
  /**
6
7
  * Identifies a single point of interest on the chart — typically the datum
7
8
  * the user is currently hovering, clicked, or otherwise focused on. When
@@ -31,6 +32,8 @@ export interface InterrogationContext {
31
32
  componentName?: string;
32
33
  /** Optional caller-supplied chart props (accessor names, scales, etc.). */
33
34
  props?: Record<string, unknown>;
35
+ /** Optional reader-grounding payload for faithful chart interpretation. */
36
+ grounding?: ChartReaderGrounding;
34
37
  /**
35
38
  * The current focused datum — what the user is interactively pointing at.
36
39
  * Lets the LLM tailor responses to a specific point ("why is *this* one
@@ -82,6 +85,12 @@ export interface UseChartInterrogationOptions {
82
85
  * `onObservation` callback or the convenience `useChartFocus` hook.
83
86
  */
84
87
  focus?: InterrogationFocus | null;
88
+ /**
89
+ * Include `buildReaderGrounding()` in the interrogation context. Pass true
90
+ * for default grounding, or an options object for capability/audience,
91
+ * structure, and physics runtime grounding controls.
92
+ */
93
+ includeGrounding?: boolean | ChartReaderGroundingOptions;
85
94
  }
86
95
  export interface UseChartInterrogationResult {
87
96
  /** Ask a question. Updates history, annotations, loading, and error. */
@@ -1,9 +1,7 @@
1
1
  import * as React from "react";
2
- /** Scene node type used by the accessible data table — accepts any frame's scene nodes */
3
- type AnySceneNode = {
4
- type?: string;
5
- [key: string]: any;
6
- };
2
+ import { type AccessibleSceneNode as AnySceneNode } from "./accessibleDataRows";
3
+ export { extractAllRows } from "./accessibleDataRows";
4
+ export type { DataRow } from "./accessibleDataRows";
7
5
  declare const SR_ONLY_STYLE: React.CSSProperties;
8
6
  /**
9
7
  * Compute an aria-label describing the chart type and data shape from the scene graph.
@@ -13,14 +11,6 @@ export declare function computeCanvasAriaLabel(scene: AnySceneNode[] | null | un
13
11
  * Compute an aria-label for network charts from scene nodes and edges.
14
12
  */
15
13
  export declare function computeNetworkAriaLabel(nodeCount: number, edgeCount: number, chartType: string): string;
16
- interface DataRow {
17
- label: string;
18
- values: Record<string, string | number>;
19
- }
20
- /** Extract a flat list of typed rows from scene nodes, surfacing the raw datum
21
- * fields (not pixel coordinates). Defensively handles missing/malformed data —
22
- * never throws. Exported for direct testing. */
23
- export declare function extractAllRows(scene: AnySceneNode[]): DataRow[];
24
14
  interface AccessibleDataTableProps {
25
15
  scene: AnySceneNode[];
26
16
  chartType: string;
@@ -24,10 +24,12 @@ export interface FocusRingProps {
24
24
  /** Total chart size */
25
25
  size: [number, number];
26
26
  /** Shape hint from the focused nav point */
27
- shape?: "circle" | "rect" | "wedge";
27
+ shape?: "circle" | "rect" | "wedge" | "geoarea" | "path";
28
28
  /** Width of rect-shaped focus target */
29
29
  width?: number;
30
30
  /** Height of rect-shaped focus target */
31
31
  height?: number;
32
+ /** SVG path (plot-relative) outlined for a geoarea focus. */
33
+ pathData?: string;
32
34
  }
33
- export declare function FocusRing({ active, hoverPoint, margin, size, shape, width, height }: FocusRingProps): React.JSX.Element | null;
35
+ export declare function FocusRing({ active, hoverPoint, margin, size, shape, width, height, pathData }: FocusRingProps): React.JSX.Element | null;
@@ -16,4 +16,4 @@ export interface GeoHitResult {
16
16
  * The `hitCtx` parameter is a shared offscreen canvas context used for
17
17
  * isPointInPath checks without polluting the visible canvas.
18
18
  */
19
- export declare function findNearestGeoNode(nodes: GeoSceneNode[], mouseX: number, mouseY: number, maxDistance: number, hitCtx: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D, pointQuadtree?: Quadtree<PointSceneNode> | null, maxPointRadius?: number): GeoHitResult | null;
19
+ export declare function findNearestGeoNode(nodes: GeoSceneNode[], mouseX: number, mouseY: number, maxDistance: number, hitCtx: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D, pointQuadtree?: Quadtree<PointSceneNode> | null, maxPointRadius?: number, lineMaxDistance?: number): GeoHitResult | null;
@@ -4,11 +4,29 @@ import type { GeoPipelineConfig, GeoScales, GeoSceneNode } from "./geoTypes";
4
4
  import type { PointSceneNode, StreamLayout } from "./types";
5
5
  import type { ActiveTransition } from "./pipelineTransitionUtils";
6
6
  import type { Datum } from "../charts/shared/datumTypes";
7
+ import type { GeoLayoutResult } from "./geoCustomLayout";
8
+ import type { CustomLayoutSelection } from "./customLayoutSelection";
9
+ import { type CustomLayoutFailureDiagnostic } from "./customLayoutFailure";
7
10
  export declare class GeoPipelineStore {
8
11
  config: GeoPipelineConfig;
9
12
  scene: GeoSceneNode[];
10
13
  scales: GeoScales | null;
11
14
  version: number;
15
+ /** SVG overlays returned from the active custom layout. */
16
+ customLayoutOverlays: import("react").ReactNode;
17
+ /** Most recent custom layout result for host readback (`getCustomLayout()`).
18
+ * Null before the first layout or without a custom layout. A failed
19
+ * re-layout retains the prior good result alongside its diagnostic. */
20
+ lastCustomLayoutResult: GeoLayoutResult | null;
21
+ /** Most recent exception from a custom layout invocation, for host readback. */
22
+ lastCustomLayoutFailure: CustomLayoutFailureDiagnostic | null;
23
+ private _customLayoutDiagnosticsWarned;
24
+ private _customRestyle;
25
+ hasCustomRestyle: boolean;
26
+ private _baseStyles;
27
+ /** Set only while a custom-layout invocation throws. The rebuild callers use
28
+ * it to retain the previous scene and projection state without mutating it. */
29
+ private _customLayoutFailedThisBuild;
12
30
  private static readonly QUADTREE_THRESHOLD;
13
31
  private _quadtree;
14
32
  /** Largest visual point radius in the current scene; used to widen quadtree
@@ -74,6 +92,16 @@ export declare class GeoPipelineStore {
74
92
  */
75
93
  removePoint(id: string | string[]): Datum[];
76
94
  clear(): void;
95
+ setLayoutSelection(selection: CustomLayoutSelection | null): void;
96
+ /**
97
+ * "Styles changed, repaint the data canvas without rebuilding the scene."
98
+ * Set by {@link restyleScene}; consumed once per frame by the paint loop, so a
99
+ * style-only selection change repaints without a projection/scene recompute.
100
+ */
101
+ private _stylePaintPending;
102
+ /** Consume the style-only repaint signal (see {@link _stylePaintPending}). */
103
+ consumeStylePaintPending(): boolean;
104
+ restyleScene(selection: CustomLayoutSelection | null): void;
77
105
  computeScene(layout: StreamLayout): void;
78
106
  private fitProjection;
79
107
  /**
@@ -0,0 +1,44 @@
1
+ import * as React from "react";
2
+ import type { NetworkHtmlMark } from "./networkCustomLayout";
3
+ import type { CustomLayoutSelection } from "./customLayoutSelection";
4
+ export interface NetworkHtmlMarksLayerProps {
5
+ /** Marks emitted by the custom layout (`NetworkLayoutResult.htmlMarks`). */
6
+ marks: NetworkHtmlMark[] | undefined;
7
+ /** The frame's margin — the layer is offset by it so marks align with the
8
+ * canvas and SVG `overlays`, which translate their content by the same. */
9
+ margin: {
10
+ top: number;
11
+ left: number;
12
+ };
13
+ /** Shared-selection projection, provided so mark content can subscribe via
14
+ * `useCustomLayoutSelection()` and restyle on selection change without a
15
+ * relayout (parity with the SVG `overlays` subtree). `null` when unwired. */
16
+ selection?: CustomLayoutSelection | null;
17
+ /**
18
+ * Pixels beyond each visible edge of the scrolling viewport for which marks are
19
+ * still mounted (so a scroll reveals already-present DOM, not blank space).
20
+ * Marks farther than this off-screen are not rendered at all. Defaults to 400.
21
+ */
22
+ overscan?: number;
23
+ }
24
+ /**
25
+ * Renders a custom network layout's {@link NetworkHtmlMark}s into one
26
+ * absolutely-positioned DOM layer above the canvas and SVG `overlays`.
27
+ *
28
+ * Each mark is its own positioned element, keyed by `id`, so the browser can
29
+ * composite `opacity`/`transform`/`visibility` changes on the mark's content
30
+ * without re-rasterizing it (the win over SVG `<foreignObject>`), and a
31
+ * position-only layout re-run repositions without remounting. The wrapper sets
32
+ * only placement + sizing + `pointer-events`; everything visual comes from
33
+ * `content`.
34
+ *
35
+ * Marks are viewport-culled against the nearest scrollable ancestor (plus
36
+ * `overscan`): a mark more than `overscan` px outside the visible window is not
37
+ * in the DOM at all, so a large topology mounts only roughly a viewport's worth
38
+ * regardless of total size, and the per-hover/paint cost stays bounded. When
39
+ * there's no scrollable ancestor (the content fits) every mark renders.
40
+ *
41
+ * Returns `null` when there are no marks, so layouts that don't use the feature
42
+ * render no extra DOM.
43
+ */
44
+ export declare function NetworkHtmlMarksLayer({ marks, margin, selection, overscan, }: NetworkHtmlMarksLayerProps): React.ReactElement | null;
@@ -1,4 +1,7 @@
1
1
  import { ParticlePool } from "./ParticlePool";
2
+ import type { NetworkLayoutResult, NetworkHtmlMark } from "./networkCustomLayout";
3
+ import type { CustomLayoutSelection } from "./customLayoutSelection";
4
+ import { type CustomLayoutFailureDiagnostic } from "./customLayoutFailure";
2
5
  import type { ActiveTransition } from "./pipelineTransitionUtils";
3
6
  import { type Quadtree } from "d3-quadtree";
4
7
  import type { NetworkPipelineConfig, NetworkSceneNode, NetworkSceneEdge, NetworkCircleNode, NetworkLabel, RealtimeNode, RealtimeEdge, EdgePush } from "./networkTypes";
@@ -29,6 +32,27 @@ export declare class NetworkPipelineStore {
29
32
  labels: NetworkLabel[];
30
33
  /** Overlays returned from customNetworkLayout (consumed by StreamNetworkFrame). */
31
34
  customLayoutOverlays: import("react").ReactNode;
35
+ /** Most recent custom layout result for host readback (`getCustomLayout()`).
36
+ * Null before the first layout or without a custom layout. A failed rerun
37
+ * retains this last successful result when its rendered scene is reusable. */
38
+ lastCustomLayoutResult: NetworkLayoutResult | null;
39
+ /** Latest custom-layout failure for frame-handle readback. */
40
+ lastCustomLayoutFailure: CustomLayoutFailureDiagnostic | null;
41
+ /** HTML marks returned from customNetworkLayout — positioned DOM nodes the
42
+ * frame renders in a layer above the canvas/overlays (consumed by
43
+ * StreamNetworkFrame). Empty for built-in chart types. */
44
+ customLayoutHtmlMarks: NetworkHtmlMark[];
45
+ private _customLayoutDiagnosticsWarned;
46
+ /** Per-frame restyle callbacks from the custom layout result. When set, the
47
+ * frame routes selection changes through `restyleScene()` (style-only repaint)
48
+ * instead of a full `buildScene()`. */
49
+ private _customRestyle;
50
+ private _customRestyleEdge;
51
+ /** True when the active custom layout supplied a `restyle`/`restyleEdge`. */
52
+ hasCustomRestyle: boolean;
53
+ /** Base (as-emitted) style per mark, so a restyle pass starts from the layout's
54
+ * own style rather than compounding patches across selection changes. */
55
+ private _baseStyles;
32
56
  private _nodeQuadtree;
33
57
  private _maxNodeRadius;
34
58
  /** Bumped whenever sceneNodes is rebuilt; keys the quadtree cache. */
@@ -66,6 +90,7 @@ export declare class NetworkPipelineStore {
66
90
  lastTopologyChangeTime: number;
67
91
  private previousNodeIds;
68
92
  private previousEdgeKeys;
93
+ private _networkDecayCache;
69
94
  /** Snapshot of node positions from the last layout — used for force warm-start */
70
95
  _lastPositionSnapshot: Map<string, {
71
96
  x: number;
@@ -82,7 +107,19 @@ export declare class NetworkPipelineStore {
82
107
  * Ingest bounded node/edge arrays (from props).
83
108
  * Clears existing topology and rebuilds from scratch.
84
109
  */
85
- ingestBounded(rawNodes: any[], rawEdges: any[], size: [number, number]): void;
110
+ ingestBounded(rawNodes: any[], rawEdges: any[], size: [number, number], options?: {
111
+ deferLayout?: boolean;
112
+ }): void;
113
+ /**
114
+ * Apply worker-computed force positions through the normal layout finalizer.
115
+ * The force plugin still resolves edge endpoints, clamps bounds, records
116
+ * topology diffs, snapshots positions, and prepares transitions; it only
117
+ * skips the expensive simulation itself.
118
+ */
119
+ applyForceLayoutPositions(positions: Record<string, {
120
+ x: number;
121
+ y: number;
122
+ }>, size: [number, number]): void;
86
123
  /**
87
124
  * Unique key for an edge (same as TopologyStore).
88
125
  */
@@ -108,6 +145,30 @@ export declare class NetworkPipelineStore {
108
145
  /**
109
146
  * Build the scene graph from current layout positions.
110
147
  */
148
+ /** Update the selection the layout reads at the next `buildScene`, without
149
+ * triggering a rebuild. The frame calls this on selection change; whether it
150
+ * then repaints (restyle) or rebuilds is the frame's decision. */
151
+ setLayoutSelection(selection: CustomLayoutSelection | null): void;
152
+ /** Snapshot each mark's as-emitted style so {@link restyleScene} can re-apply
153
+ * patches from the original rather than compounding. */
154
+ private snapshotBaseStyles;
155
+ /**
156
+ * Re-apply the custom layout's `restyle`/`restyleEdge` to the existing scene
157
+ * for `selection`, mutating styles **in place** off each mark's base style.
158
+ * Does NOT bump the scene revision — positions are unchanged, so the quadtree
159
+ * stays valid and no relayout/repack happens. The frame repaints the canvas
160
+ * after calling this. No-op when the layout supplied no restyle callbacks.
161
+ */
162
+ /**
163
+ * "Styles changed, repaint the data canvas without rebuilding the scene."
164
+ * Set by {@link restyleScene}; consumed once per frame by the paint loop.
165
+ * Deliberately separate from `_sceneNodesRevision` (the quadtree-invalidation
166
+ * counter) so a style-only selection change repaints without a relayout.
167
+ */
168
+ private _stylePaintPending;
169
+ /** Consume the style-only repaint signal (see {@link _stylePaintPending}). */
170
+ consumeStylePaintPending(): boolean;
171
+ restyleScene(selection: CustomLayoutSelection | null): void;
111
172
  buildScene(size: [number, number]): void;
112
173
  /**
113
174
  * Lazily (re)build the circle-node spatial index. Only built when the scene
@@ -166,37 +227,13 @@ export declare class NetworkPipelineStore {
166
227
  private restorePreviousPositions;
167
228
  private snapToTargets;
168
229
  private updateEdgeBezier;
169
- private buildStandardBezier;
170
- private buildCircularBezier;
171
230
  rebuildAllBeziers(): void;
172
- /**
173
- * Apply pulse glow to scene nodes/edges based on their creation timestamps.
174
- */
175
231
  applyPulse(now: number): void;
176
- /**
177
- * Apply decay opacity to scene nodes based on topology age order.
178
- * Older nodes (created earlier) are more faded.
179
- */
180
232
  applyDecay(): void;
181
- /**
182
- * Apply topology diff highlight — newly added nodes glow briefly.
183
- * Duration: 2 seconds from lastTopologyChangeTime.
184
- */
185
233
  applyTopologyDiff(now: number): void;
186
- /** Whether there is an active topology diff animation */
187
234
  get hasActiveTopologyDiff(): boolean;
188
- /**
189
- * Apply threshold alerting to scene nodes.
190
- * Overrides fill color and adds pulse for nodes exceeding thresholds.
191
- */
192
235
  applyThresholds(now: number): void;
193
- /**
194
- * Whether there are active threshold alerts on any node.
195
- */
196
236
  get hasActiveThresholds(): boolean;
197
- /**
198
- * Whether there are active pulse animations (recent ingests within pulse duration).
199
- */
200
237
  get hasActivePulses(): boolean;
201
238
  getLayoutData(): {
202
239
  nodes: RealtimeNode[];
@@ -5,6 +5,7 @@ import type { NetworkLabel } from "./networkTypes";
5
5
  import type { LegendGroup, GradientLegendConfig, LegendLayout } from "../types/legendTypes";
6
6
  import { type AutoPlaceAnnotations } from "../recipes/annotationLayout";
7
7
  import type { AnnotationContext } from "../realtime/types";
8
+ import { type GlyphDef } from "./glyphDef";
8
9
  type AnnotationAnchorNode = {
9
10
  type: string;
10
11
  datum: Datum | null;
@@ -19,10 +20,24 @@ type AnnotationAnchorNode = {
19
20
  r?: number;
20
21
  /** Arc nodes (chord, radial) carry an outer radius. */
21
22
  outerR?: number;
23
+ /** Symbol nodes carry a d3-symbol area; glyph nodes reuse `size` as rendered height. */
24
+ size?: number;
25
+ /** Glyph nodes (the composite-pictogram channel) carry a definition. */
26
+ glyph?: GlyphDef;
22
27
  };
23
28
  type NetworkAnnotationContext = AnnotationContext & {
24
29
  sceneNodes?: AnnotationAnchorNode[];
25
30
  };
31
+ /** Anchor id for a scene node — used to resolve `pointId`-anchored annotations
32
+ * to a mark a layout emitted (incl. custom-layout marks). Exported for tests. */
33
+ export declare function nodeAnchorId(node: AnnotationAnchorNode): string | undefined;
34
+ /** Center + effective radius of a scene node for annotation anchoring. Exported
35
+ * for tests. */
36
+ export declare function nodeCenter(node: AnnotationAnchorNode): {
37
+ x: number;
38
+ y: number;
39
+ r: number;
40
+ } | null;
26
41
  export interface NetworkSVGOverlayProps {
27
42
  width: number;
28
43
  height: number;
@@ -16,16 +16,22 @@ 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";
24
+ import type { CustomLayoutSelection } from "./customLayoutSelection";
25
+ import { type CustomLayoutFailureDiagnostic } from "./customLayoutFailure";
26
+ import type { UpdateResult } from "./pipelineUpdateContract";
23
27
  export declare class OrdinalPipelineStore {
24
28
  private buffer;
25
29
  private rExtent;
26
30
  /** Per-accessor extents for multiAxis mode */
27
31
  private rExtents;
28
32
  private config;
33
+ private windowSizeWarned;
34
+ private updateResults;
29
35
  private getO;
30
36
  private getR;
31
37
  /** All resolved rAccessors (length > 1 when multiAxis) */
@@ -33,6 +39,7 @@ export declare class OrdinalPipelineStore {
33
39
  private getStack;
34
40
  private getGroup;
35
41
  private getColor;
42
+ private getSymbol;
36
43
  private getConnector;
37
44
  private getDataId;
38
45
  /** Discovered categories in insertion order */
@@ -55,10 +62,27 @@ export declare class OrdinalPipelineStore {
55
62
  columns: Record<string, OrdinalColumn>;
56
63
  /** Overlays returned from customLayout (consumed by StreamOrdinalFrame). */
57
64
  customLayoutOverlays: import("react").ReactNode;
65
+ /** Most recent custom layout result for host readback (`getCustomLayout()`).
66
+ * Null before the first layout or without a custom layout. A failed rerun
67
+ * keeps the last successful result while its scene remains recoverable. */
68
+ lastCustomLayoutResult: OrdinalLayoutResult | null;
69
+ /** Latest custom-layout failure for frame-handle readback. */
70
+ lastCustomLayoutFailure: CustomLayoutFailureDiagnostic | null;
71
+ /** Lets `computeScene` retain a prior scene without mutating it after an
72
+ * exception from `buildSceneNodes`. */
73
+ private _customLayoutFailedThisBuild;
74
+ private _customLayoutDiagnosticsWarned;
75
+ /** Per-frame restyle callback from the custom layout result (see OrdinalLayoutResult.restyle). */
76
+ private _customRestyle;
77
+ /** True when the active custom layout supplied a `restyle`. */
78
+ hasCustomRestyle: boolean;
79
+ /** Base (as-emitted) style per node, so restyle passes don't compound. */
80
+ private _baseStyles;
58
81
  version: number;
59
82
  /** Bumped whenever the buffer is mutated. Used to invalidate per-frame caches. */
60
83
  private _dataVersion;
61
- private static readonly QUADTREE_THRESHOLD;
84
+ /** Materialized source data, cached for pulse/decay animation frames. */
85
+ private _bufferArrayCache;
62
86
  private _pointQuadtree;
63
87
  /** Largest visual point radius in the current scene. */
64
88
  private _maxPointRadius;
@@ -68,7 +92,14 @@ export declare class OrdinalPipelineStore {
68
92
  private _categoryIndexCache;
69
93
  private _hasRenderedOnce;
70
94
  constructor(config: OrdinalPipelineConfig);
95
+ /**
96
+ * Keep the optional pulse timestamp ring in lockstep with the datum ring.
97
+ * Enabling pulse after mount must seed timestamps for retained rows; an
98
+ * empty ring would associate later timestamps with the wrong datum index.
99
+ */
100
+ private syncPulseTimestampBuffer;
71
101
  ingest(changeset: Changeset): boolean;
102
+ ingestWithResult(changeset: Changeset): UpdateResult;
72
103
  private pushValueExtent;
73
104
  private evictValueExtent;
74
105
  /** For timeline type: resolve rAccessor as a [start, end] pair */
@@ -110,6 +141,12 @@ export declare class OrdinalPipelineStore {
110
141
  get maxPointRadius(): number;
111
142
  private applyDecay;
112
143
  private applyPulse;
144
+ /**
145
+ * Refresh only pulse-derived fields on the existing scene. This deliberately
146
+ * avoids a scene/layout rebuild on every rAF pulse tick.
147
+ */
148
+ refreshPulse(now: number): boolean;
149
+ hasActivePulsesAt(now: number): boolean;
113
150
  get hasActivePulses(): boolean;
114
151
  /** Synthesize a zero-state prevPositionMap for animated intro (first render). */
115
152
  private synthesizeIntroPositions;
@@ -127,7 +164,15 @@ export declare class OrdinalPipelineStore {
127
164
  * after the server already painted the chart.
128
165
  */
129
166
  cancelIntroAnimation(): void;
167
+ /**
168
+ * Materialize the ring buffer at most once per data version. Pulse decay
169
+ * ticks reuse this array and the datum/category index caches rather than
170
+ * allocating a fresh copy at animation-frame frequency.
171
+ */
172
+ private getBufferArray;
130
173
  getData(): Datum[];
174
+ /** Most recent additive update result for revision-aware hosts and tests. */
175
+ getLastUpdateResult(): UpdateResult;
131
176
  /**
132
177
  * Remove data items by ID. Requires dataIdAccessor to be configured.
133
178
  * Returns the removed items. Marks the store dirty for scene rebuild.
@@ -142,5 +187,22 @@ export declare class OrdinalPipelineStore {
142
187
  get size(): number;
143
188
  getOAccessor(): (d: Datum) => string;
144
189
  getRAccessor(): (d: Datum) => number;
190
+ /** Update the selection the layout reads at the next rebuild, without one. */
191
+ setLayoutSelection(selection: CustomLayoutSelection | null): void;
192
+ private applyCustomRestyle;
193
+ /**
194
+ * Re-apply the custom layout's `restyle` to the existing scene for
195
+ * `selection`, off each node's base style — no relayout, no quadtree rebuild.
196
+ * No-op when the layout supplied no `restyle`.
197
+ */
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;
145
206
  updateConfig(config: Partial<OrdinalPipelineConfig>): void;
207
+ updateConfigWithResult(config: Partial<OrdinalPipelineConfig>): UpdateResult;
146
208
  }