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
@@ -1,157 +1,49 @@
1
1
  import type { Datum } from "../charts/shared/datumTypes";
2
- import { type Quadtree } from "d3-quadtree";
2
+ /**
3
+ * PipelineStore — stateful pipeline for XY/streaming chart data.
4
+ *
5
+ * Owns: data ingestion (RingBuffer), extent tracking, scale computation,
6
+ * scene layout delegation (via xySceneBuilders/), transition animation,
7
+ * decay/pulse/staleness encoding, and quadtree spatial indexing.
8
+ *
9
+ * Scene building was extracted to xySceneBuilders/ — this store constructs
10
+ * an XYSceneContext and dispatches to the appropriate builder function.
11
+ *
12
+ * Key dependencies:
13
+ * xySceneBuilders/ — per-chartType scene layout (line, area, point, etc.)
14
+ * SceneGraph — node constructors (buildLineNode, buildPointNode, etc.)
15
+ * RingBuffer — sliding window data storage
16
+ * IncrementalExtent — O(1) min/max tracking
17
+ *
18
+ * Consumed by: StreamXYFrame (sole consumer).
19
+ */
3
20
  import { RingBuffer } from "../realtime/RingBuffer";
4
- import type { Changeset, StreamChartType, StreamScales, StreamLayout, SceneNode, PointSceneNode, CandlestickStyle, Style, ArrowOfTime, WindowMode, DecayConfig, PulseConfig, TransitionConfig, StalenessConfig, CurveType, BarStyle, ThemeSemanticColors, BandConfig } from "./types";
5
- import { type CoercibleNumber } from "./accessorUtils";
6
- import type { ActiveTransition } from "./pipelineTransitionUtils";
21
+ import type { Changeset, StreamScales, StreamLayout, SceneNode } from "./types";
22
+ import { type ActiveTransition } from "./pipelineTransitionUtils";
7
23
  import type { ResolvedRibbon } from "./xySceneBuilders/ribbonScene";
8
- import type { CustomLayout } from "./customLayout";
9
- import type { MarginType } from "../types/marginType";
10
- export interface PipelineConfig {
11
- chartType: StreamChartType;
12
- runtimeMode?: "streaming" | "bounded";
13
- windowSize: number;
14
- windowMode: WindowMode;
15
- arrowOfTime: ArrowOfTime;
16
- extentPadding: number;
17
- /** Pixel inset on scale ranges to prevent glyph clipping at chart edges. Default 0. */
18
- scalePadding?: number;
19
- /** When `"exact"`, the x and y axis domains pin to the literal data
20
- * min/max — `extentPadding` is skipped so the first and last ticks
21
- * read as the actual data bounds. Default `"nice"` keeps the existing
22
- * padded domain so glyphs at the extremes don't clip the plot edge. */
23
- axisExtent?: import("../charts/shared/axisExtent").AxisExtentMode;
24
- maxCapacity?: number;
25
- xAccessor?: string | ((d: Datum) => CoercibleNumber);
26
- yAccessor?: string | ((d: Datum) => CoercibleNumber);
27
- timeAccessor?: string | ((d: Datum) => CoercibleNumber);
28
- valueAccessor?: string | ((d: Datum) => CoercibleNumber);
29
- colorAccessor?: string | ((d: Datum) => string);
30
- sizeAccessor?: string | ((d: Datum) => CoercibleNumber);
31
- groupAccessor?: string | ((d: Datum) => string);
32
- categoryAccessor?: string | ((d: Datum) => string);
33
- lineDataAccessor?: string;
34
- xScaleType?: "linear" | "log" | "time";
35
- yScaleType?: "linear" | "log";
36
- xExtent?: [number | undefined, number | undefined] | [number];
37
- yExtent?: [number | undefined, number | undefined] | [number];
38
- sizeRange?: [number, number];
39
- binSize?: number;
40
- normalize?: boolean;
41
- /** Stacked area baseline mode. Only consulted by stackedarea chart type. */
42
- baseline?: "zero" | "wiggle" | "silhouette";
43
- /** Stack order — see StreamXYFrameProps.stackOrder. */
44
- stackOrder?: "key" | "insideOut" | "asc" | "desc";
45
- openAccessor?: string | ((d: Datum) => CoercibleNumber);
46
- highAccessor?: string | ((d: Datum) => CoercibleNumber);
47
- lowAccessor?: string | ((d: Datum) => CoercibleNumber);
48
- closeAccessor?: string | ((d: Datum) => CoercibleNumber);
49
- candlestickStyle?: CandlestickStyle;
50
- /** Internal: set by PipelineStore when open/close accessors are both missing */
51
- candlestickRangeMode?: boolean;
52
- boundsAccessor?: string | ((d: Datum) => CoercibleNumber);
53
- boundsStyle?: any;
54
- y0Accessor?: string | ((d: Datum) => CoercibleNumber);
55
- band?: BandConfig | BandConfig[];
56
- gradientFill?: {
57
- topOpacity: number;
58
- bottomOpacity: number;
59
- } | {
60
- colorStops: Array<{
61
- offset: number;
62
- color: string;
63
- }>;
64
- };
65
- areaGroups?: Set<string>;
66
- lineGradient?: {
67
- colorStops: Array<{
68
- offset: number;
69
- color: string;
70
- }>;
71
- };
72
- lineStyle?: any;
73
- pointStyle?: (d: Datum) => Style & {
74
- r?: number;
75
- };
76
- areaStyle?: (d: Datum) => Style;
77
- swarmStyle?: {
78
- radius?: number;
79
- fill?: string;
80
- opacity?: number;
81
- stroke?: string;
82
- strokeWidth?: number;
83
- };
84
- waterfallStyle?: {
85
- positiveColor?: string;
86
- negativeColor?: string;
87
- connectorStroke?: string;
88
- connectorWidth?: number;
89
- gap?: number;
90
- stroke?: string;
91
- strokeWidth?: number;
92
- };
93
- colorScheme?: string | string[];
94
- /** Theme categorical palette — used as fallback when colorScheme is not an explicit array */
95
- themeCategorical?: string[];
96
- /**
97
- * Theme-resolved semantic role colors. Scene builders use these as the
98
- * default before falling back to hardcoded hex. Populated by the Stream
99
- * Frame from the in-memory `SemioticTheme.colors` object at render time
100
- * — the values are concrete hex (or whatever the preset declares), not
101
- * `var(...)` strings, and so this channel does NOT participate in the
102
- * DOM CSS cascade. Changing the ambient theme (`<ThemeProvider>`) or
103
- * swapping to a nested provider is how you override these values.
104
- *
105
- * Per-scope overrides via CSS custom properties
106
- * (e.g. `<div style={{ "--semiotic-danger": "#c00" }}>`) work only for
107
- * values a user explicitly passes through as `var(--...)` strings in
108
- * chart props — those are resolved via `getComputedStyle` in the
109
- * canvas renderer at paint time (see `resolveCSSColor.ts`). The theme
110
- * defaults in this field don't read CSS.
111
- */
112
- themeSemantic?: ThemeSemanticColors;
113
- /** Theme sequential scheme name (e.g. "blues") — fallback when `colorScheme` is not explicitly set for magnitude encodings (heatmap, choropleth, size). */
114
- themeSequential?: string;
115
- /** Theme diverging scheme name (e.g. "RdBu") — fallback when `colorScheme` is not explicitly set for midpoint encodings (likert, bivariate, ± deviation). */
116
- themeDiverging?: string;
117
- barColors?: Record<string, string>;
118
- /** Histogram bar style — fill/stroke/strokeWidth/gap. Accepted by RealtimeHistogram and routed through to the bar scene builder. */
119
- barStyle?: BarStyle;
120
- annotations?: Datum[];
121
- decay?: DecayConfig;
122
- pulse?: PulseConfig;
123
- transition?: TransitionConfig;
124
- /** Whether to animate elements on first render (points scale up, lines/areas clip from left, rects grow from baseline) */
125
- introAnimation?: boolean;
126
- staleness?: StalenessConfig;
127
- heatmapAggregation?: "count" | "sum" | "mean";
128
- heatmapXBins?: number;
129
- heatmapYBins?: number;
130
- showValues?: boolean;
131
- heatmapValueFormat?: (v: number) => string;
132
- pointIdAccessor?: string | ((d: Datum) => string);
133
- curve?: CurveType;
134
- /** When provided, replaces chart-type dispatch in scene building.
135
- * Receives a LayoutContext (scales, dimensions, theme, resolveColor)
136
- * and returns scene nodes plus optional overlays. */
137
- customLayout?: CustomLayout;
138
- /** User-supplied config blob threaded through to LayoutContext.config. */
139
- layoutConfig?: object;
140
- /** Resolved margin — passed through so LayoutContext.dimensions.margin reflects what the frame actually used. */
141
- layoutMargin?: MarginType;
142
- }
24
+ import type { LayoutResult } from "./customLayout";
25
+ import type { CustomLayoutSelection } from "./customLayoutSelection";
26
+ import { type CustomLayoutFailureDiagnostic } from "./customLayoutFailure";
27
+ import { type PipelineConfig } from "./pipelineConfig";
28
+ import type { UpdateResult } from "./pipelineUpdateContract";
29
+ export type { PipelineConfig } from "./pipelineConfig";
30
+ export type { ChangeSet, Invalidation, RevisionSet, UpdateResult, } from "./pipelineUpdateContract";
31
+ export { DEFAULT_GROWING_MAX_CAPACITY, GROWING_CAPACITY_WARN_THRESHOLD } from "./pipelineConfig";
143
32
  export declare class PipelineStore {
144
33
  private buffer;
145
34
  private xExtent;
146
35
  private yExtent;
147
36
  private config;
148
37
  private growingCap;
38
+ private growingCapacityWarned;
39
+ private windowSizeWarned;
149
40
  private getX;
150
41
  private getY;
151
42
  private getGroup;
152
43
  private getCategory;
153
44
  private getSize;
154
45
  private getColor;
46
+ private getSymbol;
155
47
  private getY0;
156
48
  /** Unified ribbon list — `boundsAccessor` + `band` both compose into
157
49
  * this single array (see `resolveRibbons`). Read by the scene
@@ -196,27 +88,58 @@ export declare class PipelineStore {
196
88
  private _stackExtentCache;
197
89
  /** Monotonic counter incremented on each ingest — used as part of cache keys */
198
90
  private _ingestVersion;
91
+ /** Datum→index map for decay/pulse, cached by `_ingestVersion`. */
92
+ private _datumIndexCache;
199
93
  /** Cached materialized array from buffer.toArray() — only rebuilt when buffer changes */
200
94
  private _bufferArrayCache;
201
95
  /** True when the buffer has been mutated since last toArray() call */
202
96
  private _bufferDirty;
203
97
  private needsFullRebuild;
204
98
  private lastLayout;
99
+ private updateResults;
205
100
  scales: StreamScales | null;
206
101
  scene: SceneNode[];
207
102
  version: number;
208
103
  /** Overlays returned from customLayout (consumed by StreamXYFrame for SVGOverlay). */
209
104
  customLayoutOverlays: import("react").ReactNode;
105
+ /** The most recent custom layout result, exposed for host readback via the
106
+ * frame handle's `getCustomLayout()` — so a page that needs the computed
107
+ * placement (stats, inspectors) doesn't re-run the layout. Null before the
108
+ * first layout or when no custom layout is set. A rerun failure preserves
109
+ * this last successful result when it is safe to do so. */
110
+ lastCustomLayoutResult: LayoutResult | null;
111
+ /** Latest custom-layout failure for frame-handle readback. */
112
+ lastCustomLayoutFailure: CustomLayoutFailureDiagnostic | null;
113
+ /** Set only while `buildSceneNodes` is recovering from a layout exception.
114
+ * `computeScene` uses it to retain the previous scene/scales without applying
115
+ * a new transition, pulse, or decay pass to that retained output. */
116
+ private _customLayoutFailedThisBuild;
117
+ private _customLayoutDiagnosticsWarned;
118
+ /** Per-frame restyle callback from the custom layout result (see LayoutResult.restyle). */
119
+ private _customRestyle;
120
+ /** True when the active custom layout supplied a `restyle`. */
121
+ hasCustomRestyle: boolean;
122
+ /** Base (as-emitted) style per node, so restyle passes don't compound. */
123
+ private _baseStyles;
210
124
  /** True when the x accessor returns Date objects (auto-detected on first data ingestion) */
211
125
  xIsDate: boolean;
212
- private _quadtree;
213
- /** Largest visual point radius in the current scene. The hit tester uses
214
- * this to widen its quadtree query so points with big radii (bubble) don't
215
- * fall outside the search region. */
216
- private _maxPointRadius;
217
- private static readonly QUADTREE_THRESHOLD;
126
+ private spatialIndex;
218
127
  constructor(config: PipelineConfig);
128
+ /**
129
+ * Keep pulse timestamps structurally coupled to the datum ring when pulse
130
+ * is changed after construction. A fresh timestamp ring must be seeded for
131
+ * already-retained data; otherwise the next push would be timestamp index 0
132
+ * while its datum is at the end of the data ring.
133
+ */
134
+ private syncPulseTimestampBuffer;
219
135
  private pushDatumYExtent;
136
+ /**
137
+ * Remove every y-domain contribution made by {@link pushDatumYExtent}.
138
+ * Keeping these paths paired is important: a ribbon/band can extend the
139
+ * visible domain beyond the point itself, so removing or replacing that
140
+ * datum must evict its envelope extrema too.
141
+ */
142
+ private evictDatumYExtent;
220
143
  private rebuildYExtent;
221
144
  private rebuildExtents;
222
145
  private _lastBoundedInsertsRef;
@@ -233,20 +156,14 @@ export declare class PipelineStore {
233
156
  * meaningful — streaming consumers don't pass the same array twice.
234
157
  */
235
158
  ingest(changeset: Changeset): boolean;
159
+ /** Additive explicit-result form of {@link ingest}; `ingest()` remains unchanged. */
160
+ ingestWithResult(changeset: Changeset): UpdateResult;
236
161
  /**
237
162
  * Recompute scales and scene graph for the current buffer contents.
238
163
  */
239
164
  computeScene(layout: StreamLayout): void;
240
- /**
241
- * Build or clear the quadtree spatial index for point scene nodes.
242
- * Only built for scatter/bubble charts with >QUADTREE_THRESHOLD points.
243
- */
244
- private rebuildQuadtree;
245
- /**
246
- * Get the quadtree spatial index, if available.
247
- * Returns null when chart type is not scatter/bubble or point count is below threshold.
248
- */
249
- get quadtree(): Quadtree<PointSceneNode> | null;
165
+ /** Get the retained point-scene spatial index, if available. */
166
+ get quadtree(): import("d3-quadtree").Quadtree<import("./types").PointSceneNode> | null;
250
167
  /** Largest visual point radius in the current scene. */
251
168
  get maxPointRadius(): number;
252
169
  /**
@@ -257,8 +174,12 @@ export declare class PipelineStore {
257
174
  private buildSceneNodes;
258
175
  private resolveBoundsStyle;
259
176
  computeDecayOpacity(bufferIndex: number, bufferSize: number): number;
177
+ private getDatumIndexMap;
260
178
  private applyDecay;
261
179
  private applyPulse;
180
+ /** Refresh pulse fields without rebuilding layout; retained custom scenes stay immutable. */
181
+ refreshPulse(now: number): boolean;
182
+ hasActivePulsesAt(now: number): boolean;
262
183
  get hasActivePulses(): boolean;
263
184
  private get transitionContext();
264
185
  private snapshotPositions;
@@ -300,13 +221,6 @@ export declare class PipelineStore {
300
221
  private resolveColorMap;
301
222
  private resolveLineStyle;
302
223
  private resolveAreaStyle;
303
- /** Resolve a group name to a color from the cached color map or a dedicated group palette.
304
- * First checks _colorMapCache (populated by resolveColorMap when colorAccessor is set).
305
- * Falls back to _groupColorMap (insertion-order, never mutates _colorMapCache).
306
- *
307
- * FIFO-evicts the oldest entry when the map exceeds `GROUP_COLOR_MAP_CAP`. The palette index
308
- * uses `_groupColorCounter` (monotonic, decoupled from map size) so eviction doesn't cause
309
- * new groups to collide with existing entries on a shrunk map. */
310
224
  private resolveGroupColor;
311
225
  /**
312
226
  * Return a cached materialized array of the buffer contents.
@@ -316,6 +230,8 @@ export declare class PipelineStore {
316
230
  */
317
231
  private getBufferArray;
318
232
  getData(): Datum[];
233
+ /** Most recent additive update result for revision-aware hosts and tests. */
234
+ getLastUpdateResult(): UpdateResult;
319
235
  /**
320
236
  * Remove data points by ID. Requires pointIdAccessor to be configured.
321
237
  * Returns the removed items. Marks the store dirty for scene rebuild.
@@ -339,5 +255,27 @@ export declare class PipelineStore {
339
255
  getXAccessor(): (d: Datum) => number;
340
256
  getYAccessor(): (d: Datum) => number;
341
257
  getCategoryAccessor(): ((d: Datum) => string) | undefined;
258
+ /** Update the selection the layout reads at the next rebuild, without
259
+ * triggering one. The frame then either repaints (restyle) or rebuilds. */
260
+ setLayoutSelection(selection: CustomLayoutSelection | null): void;
261
+ private applyCustomRestyle;
262
+ /**
263
+ * "Styles changed, repaint the data canvas without rebuilding the scene."
264
+ * Set by {@link restyleScene}; consumed once per frame by the render loop.
265
+ * Kept separate from the dirty flag so a style-only selection change repaints
266
+ * without forcing a layout/scene rebuild (the point of the restyle fast path).
267
+ */
268
+ private _stylePaintPending;
269
+ /** Consume the style-only repaint signal (see {@link _stylePaintPending}). */
270
+ consumeStylePaintPending(): boolean;
271
+ /**
272
+ * Re-apply the custom layout's `restyle` to the existing scene for
273
+ * `selection`, off each node's base style — no relayout, no quadtree rebuild
274
+ * (positions are unchanged). No-op when the layout supplied no `restyle`.
275
+ * Flags a style-only repaint so the render loop redraws the mutated styles.
276
+ */
277
+ restyleScene(selection: CustomLayoutSelection | null): void;
342
278
  updateConfig(config: Partial<PipelineConfig>): void;
279
+ /** Additive explicit-result form of {@link updateConfig}. */
280
+ updateConfigWithResult(config: Partial<PipelineConfig>): UpdateResult;
343
281
  }
@@ -1,10 +1,11 @@
1
- import type { SceneNode, LineSceneNode, AreaSceneNode, PointSceneNode, RectSceneNode, HeatcellSceneNode, Style, StreamScales, CurveType } from "./types";
1
+ import type { SceneNode, LineSceneNode, AreaSceneNode, PointSceneNode, SymbolSceneNode, RectSceneNode, HeatcellSceneNode, Style, StreamScales, CurveType } from "./types";
2
+ import type { SymbolName } from "./symbolPath";
2
3
  import type { Datum } from "../charts/shared/datumTypes";
3
4
  export declare function buildLineNode(data: Datum[], scales: StreamScales, xGet: (d: Datum) => number, yGet: (d: Datum) => number, style: Style, group?: string): LineSceneNode;
4
5
  export declare function buildAreaNode(data: Datum[], scales: StreamScales, xGet: (d: Datum) => number, yGet: (d: Datum) => number, baselineY: number, style: Style, group?: string, y0Get?: (d: Datum) => number): AreaSceneNode;
5
6
  /** Per-group-per-x stacked top values, keyed by group then x */
6
7
  export type StackedTops = Map<string, Map<number, number>>;
7
- export type StackBaseline = "zero" | "wiggle" | "silhouette";
8
+ export type StackBaseline = "zero" | "wiggle" | "silhouette" | "diverging";
8
9
  /**
9
10
  * Compute per-x stack baseline offsets. Shared between scene rendering
10
11
  * (`buildStackedAreaNodes`) and extent computation (`PipelineStore`) so
@@ -16,8 +17,16 @@ export type StackBaseline = "zero" | "wiggle" | "silhouette";
16
17
  * xValues — sorted unique x values
17
18
  * groupKeys — group keys in stacking order (same order both callers use)
18
19
  * valueAt — (groupKey, x) → group's value at x (0 if absent)
20
+ *
21
+ * `"diverging"` returns zero offsets — positives and negatives stack from
22
+ * y=0 independently inside {@link buildStackedAreaNodes}.
19
23
  */
20
24
  export declare function computeStackOffsets(xValues: number[], groupKeys: string[], valueAt: (groupKey: string, x: number) => number, baseline: StackBaseline): Map<number, number>;
25
+ /**
26
+ * Diverging stack extent: positives accumulate above 0, negatives below.
27
+ * Shared by PipelineStore auto-extent and any host that needs matching bounds.
28
+ */
29
+ export declare function computeDivergingStackExtent(xValues: number[], groupKeys: string[], valueAt: (groupKey: string, x: number) => number): [number, number];
21
30
  export declare function buildStackedAreaNodes(groups: {
22
31
  key: string;
23
32
  data: Datum[];
@@ -26,6 +35,9 @@ export declare function buildStackedAreaNodes(groups: {
26
35
  stackedTops: StackedTops;
27
36
  };
28
37
  export declare function buildPointNode(datum: Datum, scales: StreamScales, xGet: (d: Datum) => number, yGet: (d: Datum) => number, r: number, style: Style, pointId?: string): PointSceneNode | null;
38
+ /** Build a {@link SymbolSceneNode} — the glyph sibling of {@link buildPointNode}.
39
+ * `size` is the d3-symbol area (px²); convert from a target radius with πr². */
40
+ export declare function buildSymbolNode(datum: Datum, scales: StreamScales, xGet: (d: Datum) => number, yGet: (d: Datum) => number, size: number, symbolType: SymbolName, style: Style, pointId?: string): SymbolSceneNode | null;
29
41
  export declare function buildRectNode(x: number, y: number, w: number, h: number, style: Style, datum: any, group?: string): RectSceneNode;
30
42
  export declare function buildHeatcellNode(x: number, y: number, w: number, h: number, fill: string, datum: any, options?: {
31
43
  value?: number;
@@ -1,5 +1,5 @@
1
1
  import type { Datum } from "../charts/shared/datumTypes";
2
2
  import * as React from "react";
3
3
  import type { StreamGeoFrameProps, StreamGeoFrameHandle } from "./geoTypes";
4
- declare const StreamGeoFrame: React.ForwardRefExoticComponent<StreamGeoFrameProps<Datum> & React.RefAttributes<StreamGeoFrameHandle>>;
4
+ declare const StreamGeoFrame: React.NamedExoticComponent<StreamGeoFrameProps<Datum> & React.RefAttributes<StreamGeoFrameHandle>>;
5
5
  export default StreamGeoFrame;
@@ -1,5 +1,5 @@
1
1
  import type { Datum } from "../charts/shared/datumTypes";
2
2
  import * as React from "react";
3
3
  import type { StreamNetworkFrameProps, StreamNetworkFrameHandle } from "./networkTypes";
4
- declare const StreamNetworkFrame: React.ForwardRefExoticComponent<StreamNetworkFrameProps<Datum> & React.RefAttributes<StreamNetworkFrameHandle>>;
4
+ declare const StreamNetworkFrame: React.NamedExoticComponent<StreamNetworkFrameProps<Datum> & React.RefAttributes<StreamNetworkFrameHandle>>;
5
5
  export default StreamNetworkFrame;
@@ -1,5 +1,5 @@
1
1
  import type { Datum } from "../charts/shared/datumTypes";
2
2
  import * as React from "react";
3
3
  import type { StreamOrdinalFrameProps, StreamOrdinalFrameHandle } from "./ordinalTypes";
4
- declare const StreamOrdinalFrame: React.ForwardRefExoticComponent<StreamOrdinalFrameProps<Datum> & React.RefAttributes<StreamOrdinalFrameHandle<Datum>>>;
4
+ declare const StreamOrdinalFrame: React.NamedExoticComponent<StreamOrdinalFrameProps<Datum> & React.RefAttributes<StreamOrdinalFrameHandle<Datum>>>;
5
5
  export default StreamOrdinalFrame;
@@ -1,22 +1,6 @@
1
1
  import type { Datum } from "../charts/shared/datumTypes";
2
2
  import * as React from "react";
3
3
  import type { StreamXYFrameProps, StreamXYFrameHandle } from "./types";
4
- /**
5
- * Append a 2-char hex alpha to an existing CSS color, returning a valid
6
- * CSS color string. The naive `${color}${alpha}` concatenation only works
7
- * when `color` is a 6-char `#rrggbb`; shorthand `#rgb` produces the
8
- * invalid 5-char `#rgbXX`, which `ctx.strokeStyle`/`fillStyle` silently
9
- * rejects (falling back to `#000000` — black, invisible on dark themes).
10
- * The /cookbook/marginal-graphics crosshair invisibility was caused
11
- * precisely by `--semiotic-text-secondary: "#aaa"` hitting this path.
12
- *
13
- * Handles:
14
- * • 3-char hex (`#abc`) → expanded to 6-char then concatenated
15
- * • 6-char hex (`#aabbcc`) → concatenated directly
16
- * • `rgb(...)` → repacked as `rgba(..., a)` with numeric alpha
17
- * Any other form (named colors, hsl(), oklch(), etc.) falls back to the
18
- * raw color without alpha — degrades gracefully.
19
- */
20
- export declare function withAlpha(color: string, alphaHex: string): string;
21
- declare const StreamXYFrame: React.ForwardRefExoticComponent<StreamXYFrameProps<Datum> & React.RefAttributes<StreamXYFrameHandle<Datum>>>;
4
+ export { withAlpha } from "./frameThemeColors";
5
+ declare const StreamXYFrame: React.NamedExoticComponent<StreamXYFrameProps<Datum> & React.RefAttributes<StreamXYFrameHandle<Datum>>>;
22
6
  export default StreamXYFrame;
@@ -0,0 +1,33 @@
1
+ /** Structural scene node accepted from any frame family. */
2
+ export type AccessibleSceneNode = {
3
+ type?: unknown;
4
+ datum?: unknown;
5
+ accessibleDatum?: unknown;
6
+ accessibility?: unknown;
7
+ group?: unknown;
8
+ value?: unknown;
9
+ category?: unknown;
10
+ label?: unknown;
11
+ name?: unknown;
12
+ properties?: unknown;
13
+ tableFields?: unknown;
14
+ x?: unknown;
15
+ y?: unknown;
16
+ w?: unknown;
17
+ h?: unknown;
18
+ path?: unknown;
19
+ topPath?: unknown;
20
+ openY?: unknown;
21
+ closeY?: unknown;
22
+ highY?: unknown;
23
+ lowY?: unknown;
24
+ };
25
+ export interface DataRow {
26
+ label: string;
27
+ values: Record<string, string | number>;
28
+ }
29
+ /**
30
+ * Extract user-facing table rows from scene nodes. Geometry is ignored; rich
31
+ * accessibleDatum/tableFields metadata takes precedence over the render datum.
32
+ */
33
+ export declare function extractAllRows(scene: AccessibleSceneNode[]): DataRow[];
@@ -1,15 +1,28 @@
1
1
  /**
2
- * Compare two accessor specs for equivalence.
3
- * - Same reference: always equivalent (`===`)
4
- * - String accessors: exact string match
5
- * - Function accessors: `.toString()` comparison (catches inline arrow functions
6
- * like `d => d.value` that are recreated on every render but have identical source)
7
- * - Mismatched types or undefined vs defined: not equivalent
2
+ * Compare two accessor specs for equivalence, using **identity** semantics.
3
+ * - String accessors: compared by value (`"value" === "value"`).
4
+ * - Function accessors: compared by reference. Two distinct function objects are
5
+ * NOT equivalent, even when their source text matches.
6
+ * - Mismatched types or `undefined` vs defined: not equivalent.
8
7
  *
9
- * **Known limitation**: `.toString()` compares source text, not closure bindings.
10
- * Two functions with identical source but different captured variables will appear
11
- * equivalent. For closures that depend on changing values, use `useCallback` with
12
- * the variable in the dependency array so the reference changes when behavior changes.
8
+ * **Why identity, not source text.** A previous implementation compared
9
+ * `a.toString() === b.toString()` to treat re-created inline arrows
10
+ * (`d => d.value`) as equivalent across renders. That was a correctness bug:
11
+ * `.toString()` compares source text, not captured variables, so two closures
12
+ * with identical source but different bindings — `makeAccessor(1)` vs
13
+ * `makeAccessor(10)` — compared equal, and the store retained a stale
14
+ * domain/scene against a genuinely different accessor. Identity comparison also
15
+ * matches how the frames already decide a config changed
16
+ * (`useStableShallow` compares function props by identity), so the store no
17
+ * longer second-guesses a change the frame already detected.
18
+ *
19
+ * **Consumer contract.** Passing a *new* function accessor (a fresh inline
20
+ * arrow every render) now triggers a rebuild, because the library can no longer
21
+ * prove the new closure is semantically identical. Use a string accessor
22
+ * (always referentially stable) or memoize the function with `useCallback`. For
23
+ * the rare case where a stable function's captured semantics change *without*
24
+ * its identity changing, bump the pipeline config's `accessorRevision` to force
25
+ * re-derivation.
13
26
  */
14
27
  export declare function accessorsEquivalent(a: string | ((...args: any[]) => any) | undefined, b: string | ((...args: any[]) => any) | undefined): boolean;
15
28
  export type CoercibleNumber = number | Date | string;
@@ -0,0 +1,25 @@
1
+ import * as React from "react";
2
+ export type BrushKeyboardAction = {
3
+ type: "nudge";
4
+ direction: "left" | "right" | "up" | "down";
5
+ resize: boolean;
6
+ } | {
7
+ type: "clear";
8
+ };
9
+ export interface BrushAccessibilityOptions {
10
+ label?: string;
11
+ description?: string;
12
+ onAction?: (action: BrushKeyboardAction) => void;
13
+ }
14
+ /** Shared ARIA and keyboard vocabulary for frame-owned D3 brushes. */
15
+ export declare function useBrushAccessibility({ label, description, onAction, }?: BrushAccessibilityOptions): {
16
+ description: string;
17
+ descriptionId: string;
18
+ svgProps: {
19
+ role: string;
20
+ tabIndex: number;
21
+ "aria-label": string;
22
+ "aria-describedby": string;
23
+ onKeyDown: (event: React.KeyboardEvent<SVGSVGElement>) => void;
24
+ };
25
+ };
@@ -0,0 +1,24 @@
1
+ export interface PaintCanvasBackgroundOptions {
2
+ /** Explicit chart background color (or CSS var). */
3
+ background?: string;
4
+ /**
5
+ * When true, skip the fill so an SVG backgroundGraphics layer shows through.
6
+ * Equivalent to frames' `backgroundGraphics` prop being set.
7
+ */
8
+ hasBackgroundGraphics?: boolean;
9
+ /**
10
+ * Theme fallback when `background` is unset (e.g. `--semiotic-bg`).
11
+ * Empty / transparent values are ignored.
12
+ */
13
+ themeBackground?: string;
14
+ /** Fill origin (plot-local or canvas-local depending on frame transform). */
15
+ x?: number;
16
+ y?: number;
17
+ width: number;
18
+ height: number;
19
+ }
20
+ /**
21
+ * Paint an opaque chart background when appropriate.
22
+ * Returns true if a fill was applied.
23
+ */
24
+ export declare function paintCanvasBackground(ctx: CanvasRenderingContext2D, options: PaintCanvasBackgroundOptions): boolean;
@@ -21,6 +21,9 @@ export interface CanvasMargin {
21
21
  */
22
22
  export declare function prepareCanvas(canvas: HTMLCanvasElement, size: [number, number], margin: CanvasMargin, dpr: number): CanvasRenderingContext2D | null;
23
23
  /**
24
- * Get the current devicePixelRatio, defaulting to 1 in non-browser environments.
24
+ * Get the effective canvas devicePixelRatio, defaulting to 1 in non-browser
25
+ * environments. Mobile/coarse-pointer screens are capped at 2x to avoid
26
+ * allocating very large backing stores on high-density phones; desktop stays
27
+ * crisper but still caps pathological DPR values at 3x.
25
28
  */
26
29
  export declare function getDevicePixelRatio(): number;
@@ -2,6 +2,7 @@ import type { ReactNode } from "react";
2
2
  import type { Datum } from "../charts/shared/datumTypes";
3
3
  import type { MarginType } from "../types/marginType";
4
4
  import type { SceneNode, StreamScales, Style, ThemeSemanticColors } from "./types";
5
+ import type { CustomLayoutSelection } from "./customLayoutSelection";
5
6
  /**
6
7
  * customLayout — escape hatch for bespoke chart geometry.
7
8
  *
@@ -57,12 +58,31 @@ export interface LayoutContext<C extends object = Record<string, unknown>> {
57
58
  resolveColor: (group: string, datum?: Datum) => string;
58
59
  /** User-supplied config blob threaded through `layoutConfig`. */
59
60
  config: C;
61
+ /**
62
+ * Shared-selection projection (from `selection` / `linkedHover`). `null` when
63
+ * the chart isn't wired to a selection store. Dim/highlight by
64
+ * `selection.predicate(datum)`. For selection-driven styling that shouldn't
65
+ * pay a relayout, express it via {@link LayoutResult.restyle} (canvas) /
66
+ * `useCustomLayoutSelection` (overlays) instead of recomputing geometry here.
67
+ */
68
+ selection?: CustomLayoutSelection | null;
60
69
  }
61
70
  export interface LayoutResult {
62
71
  /** Scene nodes to render. Get hit testing, transitions, decay, SSR for free. */
63
72
  nodes?: SceneNode[];
64
73
  /** SVG overlays composited above the canvas (labels, annotations). */
65
74
  overlays?: ReactNode;
75
+ /**
76
+ * **Per-frame restyle of canvas marks, without re-positioning.** When present,
77
+ * a selection/hover change re-applies styles to the existing scene nodes and
78
+ * repaints — it does NOT re-run the layout or rebuild the point quadtree.
79
+ * Return a style patch merged onto the node's *base* style; return nothing to
80
+ * leave it unchanged. Providing it opts the chart into the cheap selection
81
+ * path (hover stays O(nodes) paint, not O(nodes) relayout); omit it and
82
+ * selection changes re-run the layout. Pairs with `useCustomLayoutSelection`
83
+ * for the `overlays`.
84
+ */
85
+ restyle?: (node: SceneNode, selection: CustomLayoutSelection | null) => Partial<Style> | void;
66
86
  }
67
87
  /**
68
88
  * Note on extents: customLayout v1 does not return extents. Layouts that
@@ -0,0 +1,11 @@
1
+ import type { ReactNode } from "react";
2
+ export interface CustomLayoutDiagnosticNode {
3
+ datum?: unknown;
4
+ }
5
+ export interface CustomLayoutDiagnosticsOptions {
6
+ label: string;
7
+ nodes: readonly CustomLayoutDiagnosticNode[];
8
+ overlays?: ReactNode;
9
+ warned: Set<string>;
10
+ }
11
+ export declare function warnCustomLayoutDiagnostics(options: CustomLayoutDiagnosticsOptions): void;