semiotic 3.7.5 → 3.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (575) hide show
  1. package/CLAUDE.md +63 -18
  2. package/README.md +121 -27
  3. package/agent-skill/semiotic-charts/SKILL.md +146 -0
  4. package/ai/cli.js +133 -45
  5. package/ai/componentMetadata.cjs +6 -1
  6. package/ai/dist/mcp-server.js +1741 -163
  7. package/ai/examples.md +174 -0
  8. package/ai/schema.json +2733 -536
  9. package/ai/surface-manifest.json +201 -0
  10. package/ai/system-prompt.md +20 -4
  11. package/dist/__tests__/scenarios/mcpProtocolTypes.d.ts +20 -0
  12. package/dist/components/AccessibleNavTree.d.ts +7 -1
  13. package/dist/components/CategoryColors.d.ts +1 -1
  14. package/dist/components/ChartContainer.d.ts +91 -0
  15. package/dist/components/ChartGrid.d.ts +11 -1
  16. package/dist/components/CircularBrush.d.ts +61 -0
  17. package/dist/components/ContextLayout.d.ts +5 -1
  18. package/dist/components/DirectManipulationControl.d.ts +63 -0
  19. package/dist/components/LinkedCharts.d.ts +3 -1
  20. package/dist/components/MobileAnnotationCalloutList.d.ts +13 -0
  21. package/dist/components/MobileChartContainer.d.ts +51 -0
  22. package/dist/components/MobileStandardControls.d.ts +68 -0
  23. package/dist/components/SmallMultipleChart.d.ts +84 -0
  24. package/dist/components/Tooltip/FlippingTooltip.d.ts +21 -0
  25. package/dist/components/ai/ChartRecipe.d.ts +16 -0
  26. package/dist/components/ai/IntentMark.d.ts +15 -0
  27. package/dist/components/ai/chartCapabilities.d.ts +8 -1
  28. package/dist/components/ai/chartCapabilityTypes.d.ts +26 -1
  29. package/dist/components/ai/chartClinic.d.ts +91 -0
  30. package/dist/components/ai/chartClinicMetadata.generated.d.ts +15 -0
  31. package/dist/components/ai/chartRecipeRegistry.d.ts +14 -0
  32. package/dist/components/ai/chartRecipes.d.ts +278 -0
  33. package/dist/components/ai/dataPitfallsBridge.d.ts +102 -0
  34. package/dist/components/ai/describeChart.d.ts +7 -0
  35. package/dist/components/ai/describeRecipeChart.d.ts +16 -0
  36. package/dist/components/ai/generativeChart.d.ts +28 -3
  37. package/dist/components/ai/intentManifest.d.ts +62 -0
  38. package/dist/components/ai/navigationTree.d.ts +3 -0
  39. package/dist/components/ai/observedSceneAudit.d.ts +72 -0
  40. package/dist/components/ai/readerGrounding.d.ts +83 -0
  41. package/dist/components/ai/recipeCapability.d.ts +8 -0
  42. package/dist/components/ai/recipeNavigation.d.ts +13 -0
  43. package/dist/components/ai/recipeSemantics.d.ts +11 -0
  44. package/dist/components/ai/repairChartConfig.d.ts +9 -0
  45. package/dist/components/ai/suggestCharts.d.ts +11 -1
  46. package/dist/components/ai/useNavigationSync.d.ts +17 -2
  47. package/dist/components/chartContainerMobile.d.ts +9 -0
  48. package/dist/components/charts/custom/GeoCustomChart.d.ts +48 -0
  49. package/dist/components/charts/custom/NetworkCustomChart.d.ts +8 -2
  50. package/dist/components/charts/custom/OrdinalCustomChart.d.ts +8 -2
  51. package/dist/components/charts/custom/XYCustomChart.d.ts +11 -2
  52. package/dist/components/charts/geo/ChoroplethMap.d.ts +19 -2
  53. package/dist/components/charts/geo/DistanceCartogram.d.ts +15 -3
  54. package/dist/components/charts/geo/FlowMap.d.ts +11 -7
  55. package/dist/components/charts/geo/ProportionalSymbolMap.d.ts +15 -3
  56. package/dist/components/charts/geo/index.d.ts +2 -0
  57. package/dist/components/charts/index.d.ts +35 -1
  58. package/dist/components/charts/network/ChordDiagram.d.ts +10 -2
  59. package/dist/components/charts/network/CirclePack.d.ts +1 -1
  60. package/dist/components/charts/network/ForceDirectedGraph.d.ts +26 -5
  61. package/dist/components/charts/network/OrbitDiagram.d.ts +1 -1
  62. package/dist/components/charts/network/ProcessSankey.d.ts +1 -1
  63. package/dist/components/charts/network/SankeyDiagram.d.ts +10 -2
  64. package/dist/components/charts/network/TreeDiagram.d.ts +1 -1
  65. package/dist/components/charts/network/Treemap.d.ts +1 -1
  66. package/dist/components/charts/network/useForceLayout.d.ts +17 -0
  67. package/dist/components/charts/ordinal/BarChart.d.ts +22 -1
  68. package/dist/components/charts/ordinal/BoxPlot.d.ts +1 -1
  69. package/dist/components/charts/ordinal/DonutChart.d.ts +1 -1
  70. package/dist/components/charts/ordinal/DotPlot.d.ts +1 -1
  71. package/dist/components/charts/ordinal/FunnelChart.d.ts +1 -1
  72. package/dist/components/charts/ordinal/GroupedBarChart.d.ts +12 -1
  73. package/dist/components/charts/ordinal/Histogram.d.ts +1 -1
  74. package/dist/components/charts/ordinal/PieChart.d.ts +1 -1
  75. package/dist/components/charts/ordinal/RidgelinePlot.d.ts +1 -1
  76. package/dist/components/charts/ordinal/StackedBarChart.d.ts +12 -1
  77. package/dist/components/charts/ordinal/SwarmPlot.d.ts +1 -1
  78. package/dist/components/charts/ordinal/SwimlaneChart.d.ts +1 -1
  79. package/dist/components/charts/ordinal/ViolinPlot.d.ts +1 -1
  80. package/dist/components/charts/physics/ChainReactionChart.d.ts +9 -0
  81. package/dist/components/charts/physics/CollisionSwarmChart.capability.d.ts +2 -0
  82. package/dist/components/charts/physics/CollisionSwarmChart.d.ts +54 -0
  83. package/dist/components/charts/physics/EventDropChart.capability.d.ts +2 -0
  84. package/dist/components/charts/physics/EventDropChart.d.ts +60 -0
  85. package/dist/components/charts/physics/GaltonBoardChart.capability.d.ts +2 -0
  86. package/dist/components/charts/physics/GaltonBoardChart.d.ts +74 -0
  87. package/dist/components/charts/physics/GauntletChart.capability.d.ts +2 -0
  88. package/dist/components/charts/physics/GauntletChart.d.ts +73 -0
  89. package/dist/components/charts/physics/PhysicalFlowChart.capability.d.ts +2 -0
  90. package/dist/components/charts/physics/PhysicalFlowChart.d.ts +63 -0
  91. package/dist/components/charts/physics/PhysicsCustomChart.d.ts +99 -0
  92. package/dist/components/charts/physics/PhysicsPileChart.capability.d.ts +2 -0
  93. package/dist/components/charts/physics/PhysicsPileChart.d.ts +60 -0
  94. package/dist/components/charts/physics/ProcessFlowChart.capability.d.ts +2 -0
  95. package/dist/components/charts/physics/ProcessFlowChart.d.ts +96 -0
  96. package/dist/components/charts/physics/chainReactionOverlay.d.ts +22 -0
  97. package/dist/components/charts/physics/chainReactionRuntime.d.ts +37 -0
  98. package/dist/components/charts/physics/chainReactionTypes.d.ts +97 -0
  99. package/dist/components/charts/physics/collisionSwarmPhysics.d.ts +27 -0
  100. package/dist/components/charts/physics/dependencyMachine.d.ts +188 -0
  101. package/dist/components/charts/physics/eventDropPhysics.d.ts +64 -0
  102. package/dist/components/charts/physics/galtonBoardPhysics.d.ts +28 -0
  103. package/dist/components/charts/physics/gauntletChartProps.d.ts +67 -0
  104. package/dist/components/charts/physics/gauntletChrome.d.ts +33 -0
  105. package/dist/components/charts/physics/gauntletController.d.ts +73 -0
  106. package/dist/components/charts/physics/gauntletEffects.d.ts +36 -0
  107. package/dist/components/charts/physics/gauntletPhysics.d.ts +71 -0
  108. package/dist/components/charts/physics/gauntletRuntime.d.ts +42 -0
  109. package/dist/components/charts/physics/gauntletTypes.d.ts +213 -0
  110. package/dist/components/charts/physics/physicalFlowPhysics.d.ts +57 -0
  111. package/dist/components/charts/physics/physicsChartShared.d.ts +57 -0
  112. package/dist/components/charts/physics/physicsChartUtils.d.ts +18 -0
  113. package/dist/components/charts/physics/physicsCustomLayout.d.ts +32 -0
  114. package/dist/components/charts/physics/physicsEncoding.d.ts +142 -0
  115. package/dist/components/charts/physics/physicsHocHandle.d.ts +53 -0
  116. package/dist/components/charts/physics/physicsHocUtils.d.ts +128 -0
  117. package/dist/components/charts/physics/physicsPilePhysics.d.ts +41 -0
  118. package/dist/components/charts/physics/physicsProcessPrimitives.d.ts +38 -0
  119. package/dist/components/charts/physics/processFlowPhysics.d.ts +97 -0
  120. package/dist/components/charts/realtime/RealtimeHeatmap.d.ts +9 -1
  121. package/dist/components/charts/realtime/RealtimeHistogram.d.ts +9 -1
  122. package/dist/components/charts/realtime/RealtimeLineChart.d.ts +9 -1
  123. package/dist/components/charts/realtime/RealtimeSwarmChart.d.ts +16 -2
  124. package/dist/components/charts/realtime/RealtimeWaterfallChart.d.ts +9 -1
  125. package/dist/components/charts/shared/AnnotationLabel.d.ts +88 -0
  126. package/dist/components/charts/shared/annotationActivation.d.ts +35 -0
  127. package/dist/components/charts/shared/annotationLabelLayout.d.ts +5 -0
  128. package/dist/components/charts/shared/annotationRules.d.ts +2 -1
  129. package/dist/components/charts/shared/auditMobileVisualization.d.ts +91 -0
  130. package/dist/components/charts/shared/chartDefinitionPilot.d.ts +145 -0
  131. package/dist/components/charts/shared/chartFamilySets.d.ts +20 -0
  132. package/dist/components/charts/shared/chartSelectionUtils.d.ts +4 -0
  133. package/dist/components/charts/shared/chartSpecCore.d.ts +165 -0
  134. package/dist/components/charts/shared/chartSpecs.d.ts +8 -127
  135. package/dist/components/charts/shared/chartSpecsGeo.d.ts +2 -0
  136. package/dist/components/charts/shared/chartSpecsNetwork.d.ts +2 -0
  137. package/dist/components/charts/shared/chartSpecsOrdinal.d.ts +2 -0
  138. package/dist/components/charts/shared/chartSpecsPhysics.d.ts +2 -0
  139. package/dist/components/charts/shared/chartSpecsRealtime.d.ts +2 -0
  140. package/dist/components/charts/shared/chartSpecsValue.d.ts +2 -0
  141. package/dist/components/charts/shared/chartSpecsXY.d.ts +2 -0
  142. package/dist/components/charts/shared/colorContrast.d.ts +3 -0
  143. package/dist/components/charts/shared/colorUtils.d.ts +16 -1
  144. package/dist/components/charts/shared/datumTypes.d.ts +2 -0
  145. package/dist/components/charts/shared/diagnoseAnnotationChecks.d.ts +6 -0
  146. package/dist/components/charts/shared/diagnoseConfig.d.ts +9 -14
  147. package/dist/components/charts/shared/diagnoseMisleadingChecks.d.ts +9 -0
  148. package/dist/components/charts/shared/diagnosePhysicsChecks.d.ts +3 -0
  149. package/dist/components/charts/shared/diagnoseTypes.d.ts +10 -0
  150. package/dist/components/charts/shared/formatUtils.d.ts +3 -3
  151. package/dist/components/charts/shared/hatchFill.d.ts +87 -0
  152. package/dist/components/charts/shared/hooks.d.ts +34 -10
  153. package/dist/components/charts/shared/knownChartComponents.d.ts +9 -0
  154. package/dist/components/charts/shared/leastSquaresRegression.d.ts +16 -0
  155. package/dist/components/charts/shared/mergeShapeStyle.d.ts +3 -2
  156. package/dist/components/charts/shared/motionEncoding.d.ts +145 -0
  157. package/dist/components/charts/shared/responsiveRules.d.ts +56 -0
  158. package/dist/components/charts/shared/semanticInteractions.d.ts +42 -0
  159. package/dist/components/charts/shared/sparseArray.d.ts +1 -1
  160. package/dist/components/charts/shared/streamPropsHelpers.d.ts +17 -5
  161. package/dist/components/charts/shared/styleRules.d.ts +205 -0
  162. package/dist/components/charts/shared/temporalStrings.d.ts +7 -0
  163. package/dist/components/charts/shared/tooltipUtils.d.ts +22 -9
  164. package/dist/components/charts/shared/types.d.ts +58 -7
  165. package/dist/components/charts/shared/useAreaSeriesSetup.d.ts +16 -2
  166. package/dist/components/charts/shared/useChartSetup.d.ts +11 -4
  167. package/dist/components/charts/shared/useCustomChartSetup.d.ts +17 -5
  168. package/dist/components/charts/shared/useFrameImperativeHandle.d.ts +1 -2
  169. package/dist/components/charts/shared/useLikertAggregation.d.ts +4 -4
  170. package/dist/components/charts/shared/useNetworkChartSetup.d.ts +6 -2
  171. package/dist/components/charts/shared/useOrdinalBrush.d.ts +2 -1
  172. package/dist/components/charts/shared/useOrdinalPieceStyle.d.ts +25 -2
  173. package/dist/components/charts/shared/useStreamingLegend.d.ts +2 -2
  174. package/dist/components/charts/shared/useSyncedPushData.d.ts +49 -0
  175. package/dist/components/charts/shared/useXYLineStyle.d.ts +10 -0
  176. package/dist/components/charts/shared/useXYPointStyle.d.ts +19 -1
  177. package/dist/components/charts/shared/validateChartData.d.ts +7 -5
  178. package/dist/components/charts/shared/validationMap.d.ts +7 -9
  179. package/dist/components/charts/shared/validationMap.generated.d.ts +6 -0
  180. package/dist/components/charts/shared/withChartWrapper.d.ts +4 -3
  181. package/dist/components/charts/value/targetPresentation.d.ts +22 -0
  182. package/dist/components/charts/value/types.d.ts +5 -6
  183. package/dist/components/charts/xy/AreaChart.d.ts +9 -1
  184. package/dist/components/charts/xy/BubbleChart.d.ts +10 -1
  185. package/dist/components/charts/xy/ConnectedScatterplot.d.ts +7 -0
  186. package/dist/components/charts/xy/DifferenceChart.d.ts +1 -52
  187. package/dist/components/charts/xy/Heatmap.d.ts +2 -2
  188. package/dist/components/charts/xy/LineChart.d.ts +12 -1
  189. package/dist/components/charts/xy/MinimapChart.d.ts +1 -1
  190. package/dist/components/charts/xy/MultiAxisLineChart.d.ts +2 -2
  191. package/dist/components/charts/xy/QuadrantChart.d.ts +8 -1
  192. package/dist/components/charts/xy/Scatterplot.d.ts +11 -1
  193. package/dist/components/charts/xy/ScatterplotMatrix.d.ts +11 -1
  194. package/dist/components/charts/xy/StackedAreaChart.d.ts +16 -4
  195. package/dist/components/charts/xy/differenceSegments.d.ts +49 -0
  196. package/dist/components/charts/xy/scatterplotMatrixInteractionTypes.d.ts +12 -0
  197. package/dist/components/controls/SentenceFilter.d.ts +97 -0
  198. package/dist/components/controls/controlAudit.d.ts +24 -0
  199. package/dist/components/controls/controlContract.d.ts +57 -0
  200. package/dist/components/data/fromFlintChart.d.ts +74 -0
  201. package/dist/components/data/fromVegaLite.d.ts +46 -9
  202. package/dist/components/data/portability/index.d.ts +6 -3
  203. package/dist/components/data/portability/result.d.ts +52 -0
  204. package/dist/components/data/portability/spec.d.ts +31 -0
  205. package/dist/components/data/portability/vegaLite.d.ts +24 -6
  206. package/dist/components/export/chartConfig.d.ts +11 -0
  207. package/dist/components/realtime/types.d.ts +11 -0
  208. package/dist/components/recipes/annotationLayout.d.ts +29 -0
  209. package/dist/components/recipes/axisFixedForce.d.ts +119 -0
  210. package/dist/components/recipes/{gofishBoba.d.ts → boba.d.ts} +2 -2
  211. package/dist/components/recipes/cyclical.d.ts +39 -0
  212. package/dist/components/recipes/edgeRouter.d.ts +103 -0
  213. package/dist/components/recipes/forceLayout.d.ts +48 -0
  214. package/dist/components/recipes/forceLayoutAsync.d.ts +17 -0
  215. package/dist/components/recipes/gofishBobaHandwritten.d.ts +3 -0
  216. package/dist/components/recipes/gofishDisplayListFixtures.generated.d.ts +37 -0
  217. package/dist/components/recipes/gofishIR.d.ts +178 -132
  218. package/dist/components/recipes/gofishIRExamples.d.ts +30 -81
  219. package/dist/components/recipes/intervalLanes.d.ts +87 -0
  220. package/dist/components/recipes/intervals.d.ts +80 -0
  221. package/dist/components/recipes/isometricLandmarks.d.ts +88 -0
  222. package/dist/components/recipes/isotypeGlyphs.d.ts +17 -0
  223. package/dist/components/recipes/mobileAnnotationStrategy.d.ts +48 -0
  224. package/dist/components/recipes/mobileChartFamilyRecipes.d.ts +59 -0
  225. package/dist/components/recipes/networkAnalysis.d.ts +102 -0
  226. package/dist/components/recipes/networkLayouts.d.ts +83 -0
  227. package/dist/components/recipes/physics.d.ts +122 -0
  228. package/dist/components/recipes/physicsReference.d.ts +102 -0
  229. package/dist/components/recipes/processAggregates.d.ts +32 -0
  230. package/dist/components/recipes/processChrome.d.ts +67 -0
  231. package/dist/components/recipes/processJourney.d.ts +54 -0
  232. package/dist/components/recipes/processPhysics.d.ts +300 -0
  233. package/dist/components/recipes/processVolumeGeometry.d.ts +28 -0
  234. package/dist/components/recipes/radialCoords.d.ts +69 -0
  235. package/dist/components/recipes/random.d.ts +2 -0
  236. package/dist/components/recipes/recipeChrome.d.ts +91 -0
  237. package/dist/components/recipes/recipeGlyph.d.ts +42 -0
  238. package/dist/components/recipes/recipeLegend.d.ts +53 -1
  239. package/dist/components/recipes/recipeUtils.d.ts +52 -0
  240. package/dist/components/recipes/runs.d.ts +59 -0
  241. package/dist/components/recipes/tokenEncoding.d.ts +157 -0
  242. package/dist/components/recipes/tokenLayer.d.ts +79 -0
  243. package/dist/components/recipes/unitize.d.ts +108 -0
  244. package/dist/components/recipes/vector.d.ts +28 -0
  245. package/dist/components/recipes/waffle.d.ts +43 -0
  246. package/dist/components/rough/createRoughRenderMode.d.ts +46 -0
  247. package/dist/components/semiotic-ai-core.d.ts +47 -0
  248. package/dist/components/semiotic-ai.d.ts +53 -9
  249. package/dist/components/semiotic-controls.d.ts +20 -0
  250. package/dist/components/semiotic-experimental.d.ts +38 -9
  251. package/dist/components/semiotic-geo.d.ts +15 -0
  252. package/dist/components/semiotic-network.d.ts +15 -0
  253. package/dist/components/semiotic-ordinal.d.ts +14 -0
  254. package/dist/components/semiotic-physics-matter.d.ts +10 -0
  255. package/dist/components/semiotic-physics-rapier.d.ts +9 -0
  256. package/dist/components/semiotic-physics.d.ts +60 -0
  257. package/dist/components/semiotic-realtime-core.d.ts +34 -0
  258. package/dist/components/semiotic-realtime-react.d.ts +10 -0
  259. package/dist/components/semiotic-realtime.d.ts +4 -30
  260. package/dist/components/semiotic-recipes-core.d.ts +92 -0
  261. package/dist/components/semiotic-recipes-react.d.ts +7 -0
  262. package/dist/components/semiotic-recipes.d.ts +4 -43
  263. package/dist/components/semiotic-rough.d.ts +4 -0
  264. package/dist/components/semiotic-server-edge.d.ts +8 -0
  265. package/dist/components/semiotic-server-node.d.ts +5 -0
  266. package/dist/components/semiotic-server.d.ts +2 -2
  267. package/dist/components/semiotic-themes-core.d.ts +53 -0
  268. package/dist/components/semiotic-themes-react.d.ts +4 -0
  269. package/dist/components/semiotic-themes.d.ts +6 -76
  270. package/dist/components/semiotic-utils-core.d.ts +50 -0
  271. package/dist/components/semiotic-utils-react.d.ts +5 -0
  272. package/dist/components/semiotic-utils.d.ts +3 -39
  273. package/dist/components/semiotic-xy.d.ts +12 -0
  274. package/dist/components/semiotic.d.ts +44 -8
  275. package/dist/components/server/animatedGif.d.ts +36 -0
  276. package/dist/components/server/optionalImageTypes.d.ts +37 -0
  277. package/dist/components/server/renderEvidence.d.ts +1 -1
  278. package/dist/components/server/renderToStaticSVG.d.ts +3 -35
  279. package/dist/components/server/serverChartConfigShared.d.ts +21 -0
  280. package/dist/components/server/serverChartConfigs.d.ts +22 -12
  281. package/dist/components/server/serverChartConfigsCustom.d.ts +5 -0
  282. package/dist/components/server/serverChartConfigsGeo.d.ts +9 -0
  283. package/dist/components/server/serverChartConfigsNetwork.d.ts +8 -0
  284. package/dist/components/server/serverChartConfigsOrdinal.d.ts +16 -0
  285. package/dist/components/server/serverChartConfigsPhysics.d.ts +9 -0
  286. package/dist/components/server/serverChartConfigsXY.d.ts +11 -0
  287. package/dist/components/server/staticAnnotations.d.ts +6 -3
  288. package/dist/components/server/staticGeo.d.ts +4 -0
  289. package/dist/components/server/staticLegend.d.ts +2 -2
  290. package/dist/components/server/staticNetwork.d.ts +8 -0
  291. package/dist/components/server/staticOrdinal.d.ts +11 -0
  292. package/dist/components/server/staticPhysics.d.ts +3 -0
  293. package/dist/components/server/staticSVGChrome.d.ts +110 -0
  294. package/dist/components/server/staticXY.d.ts +4 -0
  295. package/dist/components/store/ObservationStore.d.ts +23 -2
  296. package/dist/components/store/themeSerialization.d.ts +32 -0
  297. package/dist/components/store/useChartInterrogation.d.ts +9 -0
  298. package/dist/components/stream/AccessibleDataTable.d.ts +7 -23
  299. package/dist/components/stream/AriaLiveTooltip.d.ts +9 -0
  300. package/dist/components/stream/CanvasHitTester.d.ts +4 -4
  301. package/dist/components/stream/DataSourceAdapter.d.ts +1 -1
  302. package/dist/components/stream/FocusRing.d.ts +4 -2
  303. package/dist/components/stream/FrameRuntime.d.ts +57 -0
  304. package/dist/components/stream/GeoCanvasHitTester.d.ts +1 -1
  305. package/dist/components/stream/GeoParticlePool.d.ts +1 -1
  306. package/dist/components/stream/GeoPipelineStore.d.ts +62 -3
  307. package/dist/components/stream/GeoSVGOverlay.d.ts +64 -0
  308. package/dist/components/stream/NetworkCanvasHitTester.d.ts +2 -1
  309. package/dist/components/stream/NetworkPipelineStore.d.ts +44 -36
  310. package/dist/components/stream/NetworkSSRFrame.d.ts +17 -0
  311. package/dist/components/stream/NetworkSVGOverlay.d.ts +10 -1
  312. package/dist/components/stream/OrdinalCanvasHitTester.d.ts +2 -2
  313. package/dist/components/stream/OrdinalPipelineStore.d.ts +55 -11
  314. package/dist/components/stream/OrdinalSVGOverlay.d.ts +9 -1
  315. package/dist/components/stream/OrdinalStyleResolver.d.ts +12 -0
  316. package/dist/components/stream/ParticlePool.d.ts +1 -1
  317. package/dist/components/stream/PipelineStore.d.ts +81 -174
  318. package/dist/components/stream/SVGOverlay.d.ts +6 -0
  319. package/dist/components/stream/SceneGraph.d.ts +12 -4
  320. package/dist/components/stream/StreamGeoFrame.d.ts +1 -1
  321. package/dist/components/stream/StreamNetworkFrame.d.ts +1 -1
  322. package/dist/components/stream/StreamOrdinalFrame.d.ts +1 -1
  323. package/dist/components/stream/StreamXYFrame.d.ts +2 -18
  324. package/dist/components/stream/accessibleDataRows.d.ts +33 -0
  325. package/dist/components/stream/accessorUtils.d.ts +25 -12
  326. package/dist/components/stream/annotationAccessorResolver.d.ts +2 -2
  327. package/dist/components/stream/brushAccessibility.d.ts +25 -0
  328. package/dist/components/stream/canvasBackground.d.ts +24 -0
  329. package/dist/components/stream/canvasSetup.d.ts +4 -1
  330. package/dist/components/stream/customLayoutFailure.d.ts +33 -0
  331. package/dist/components/stream/customLayoutPalette.d.ts +19 -9
  332. package/dist/components/stream/frameGraphics.d.ts +4 -0
  333. package/dist/components/stream/frameKeyboardNavigation.d.ts +45 -0
  334. package/dist/components/stream/frameThemeColors.d.ts +24 -0
  335. package/dist/components/stream/geoAnnotationAnchors.d.ts +14 -0
  336. package/dist/components/stream/geoCartogram.d.ts +17 -0
  337. package/dist/components/stream/geoCustomLayout.d.ts +59 -0
  338. package/dist/components/stream/geoDefaultTooltip.d.ts +11 -0
  339. package/dist/components/stream/geoFrameHelpers.d.ts +34 -0
  340. package/dist/components/stream/geoPipelineHelpers.d.ts +46 -0
  341. package/dist/components/stream/geoPipelineUpdateResults.d.ts +34 -0
  342. package/dist/components/stream/geoSceneBuilder.d.ts +16 -0
  343. package/dist/components/stream/geoTypes.d.ts +97 -15
  344. package/dist/components/stream/glyphDef.d.ts +98 -0
  345. package/dist/components/stream/hitTarget.d.ts +170 -0
  346. package/dist/components/stream/hitTestUtils.d.ts +2 -2
  347. package/dist/components/stream/hoverUtils.d.ts +7 -2
  348. package/dist/components/stream/keyboardNav.d.ts +4 -1
  349. package/dist/components/stream/layouts/forceLayoutPlugin.d.ts +9 -1
  350. package/dist/components/stream/layouts/forceLayoutWorkerClient.d.ts +58 -0
  351. package/dist/components/stream/layouts/hierarchyUtils.d.ts +2 -2
  352. package/dist/components/stream/networkBezier.d.ts +10 -0
  353. package/dist/components/stream/networkColorAccessors.d.ts +49 -0
  354. package/dist/components/stream/networkCustomLayoutRunner.d.ts +23 -0
  355. package/dist/components/stream/networkCustomRestyle.d.ts +15 -0
  356. package/dist/components/stream/networkDefaultTooltip.d.ts +10 -0
  357. package/dist/components/stream/networkFrameAnimation.d.ts +7 -0
  358. package/dist/components/stream/networkFrameHandleTypes.d.ts +39 -0
  359. package/dist/components/stream/networkFrameInteraction.d.ts +37 -0
  360. package/dist/components/stream/networkFrameObservations.d.ts +15 -0
  361. package/dist/components/stream/networkFramePaint.d.ts +52 -0
  362. package/dist/components/stream/networkInteractionTypes.d.ts +26 -0
  363. package/dist/components/stream/networkPipelineConfig.d.ts +22 -0
  364. package/dist/components/stream/networkPipelineHelpers.d.ts +12 -0
  365. package/dist/components/stream/networkPipelineUpdateResults.d.ts +38 -0
  366. package/dist/components/stream/networkRealtimeEncoding.d.ts +41 -0
  367. package/dist/components/stream/networkTypes.d.ts +103 -51
  368. package/dist/components/stream/ordinalCanvasRenderers.d.ts +7 -0
  369. package/dist/components/stream/ordinalDataIndex.d.ts +5 -0
  370. package/dist/components/stream/ordinalDefaultTooltip.d.ts +10 -0
  371. package/dist/components/stream/ordinalDomain.d.ts +38 -0
  372. package/dist/components/stream/ordinalPipelineUpdateResults.d.ts +31 -0
  373. package/dist/components/stream/ordinalPulse.d.ts +10 -0
  374. package/dist/components/stream/ordinalPulseResources.d.ts +3 -0
  375. package/dist/components/stream/ordinalSceneBuilders/sceneBuilderMap.d.ts +5 -0
  376. package/dist/components/stream/ordinalSceneBuilders/types.d.ts +2 -2
  377. package/dist/components/stream/ordinalSpatialIndex.d.ts +9 -0
  378. package/dist/components/stream/ordinalTypes.d.ts +68 -9
  379. package/dist/components/stream/paintNeeds.d.ts +31 -0
  380. package/dist/components/stream/physics/CapacityQueueController.d.ts +5 -0
  381. package/dist/components/stream/physics/CapacityQueueTypes.d.ts +134 -0
  382. package/dist/components/stream/physics/MatterPhysicsEngineAdapter.d.ts +42 -0
  383. package/dist/components/stream/physics/PhysicsAccessibility.d.ts +48 -0
  384. package/dist/components/stream/physics/PhysicsAnnotations.d.ts +58 -0
  385. package/dist/components/stream/physics/PhysicsBodyBudget.d.ts +26 -0
  386. package/dist/components/stream/physics/PhysicsBodySpatialIndex.d.ts +10 -0
  387. package/dist/components/stream/physics/PhysicsCanvasTheme.d.ts +26 -0
  388. package/dist/components/stream/physics/PhysicsControllers.d.ts +75 -0
  389. package/dist/components/stream/physics/PhysicsEngineAdapter.d.ts +59 -0
  390. package/dist/components/stream/physics/PhysicsEngineConformance.d.ts +23 -0
  391. package/dist/components/stream/physics/PhysicsEvidence.d.ts +25 -0
  392. package/dist/components/stream/physics/PhysicsKernel.d.ts +207 -0
  393. package/dist/components/stream/physics/PhysicsOptionalEngineAdapters.d.ts +12 -0
  394. package/dist/components/stream/physics/PhysicsPipelineStore.d.ts +86 -0
  395. package/dist/components/stream/physics/PhysicsPipelineTypes.d.ts +181 -0
  396. package/dist/components/stream/physics/PhysicsSVGOverlay.d.ts +78 -0
  397. package/dist/components/stream/physics/PhysicsSediment.d.ts +69 -0
  398. package/dist/components/stream/physics/PhysicsSettledSVG.d.ts +18 -0
  399. package/dist/components/stream/physics/PhysicsSettledScene.d.ts +21 -0
  400. package/dist/components/stream/physics/PhysicsWorkerClient.d.ts +24 -0
  401. package/dist/components/stream/physics/PhysicsWorkerProtocol.d.ts +101 -0
  402. package/dist/components/stream/physics/PhysicsWorkerRuntime.d.ts +5 -0
  403. package/dist/components/stream/physics/RapierPhysicsEngineAdapter.d.ts +18 -0
  404. package/dist/components/stream/physics/ServiceOperationsControllers.d.ts +27 -0
  405. package/dist/components/stream/physics/ServiceOperationsTypes.d.ts +89 -0
  406. package/dist/components/stream/physics/StreamPhysicsFrame.d.ts +6 -0
  407. package/dist/components/stream/physics/StreamPhysicsTypes.d.ts +317 -0
  408. package/dist/components/stream/physics/physicsBodyCanvas.d.ts +27 -0
  409. package/dist/components/stream/physics/physicsFrameObservations.d.ts +19 -0
  410. package/dist/components/stream/physics/physicsFrameSetup.d.ts +4 -0
  411. package/dist/components/stream/physics/physicsPipelineControls.d.ts +4 -0
  412. package/dist/components/stream/physics/physicsPipelineHelpers.d.ts +41 -0
  413. package/dist/components/stream/physics/physicsPipelineObservations.d.ts +14 -0
  414. package/dist/components/stream/physics/physicsPipelineUpdateResults.d.ts +27 -0
  415. package/dist/components/stream/physics/physicsRegionRuntime.d.ts +54 -0
  416. package/dist/components/stream/physics/physicsSemanticUI.d.ts +20 -0
  417. package/dist/components/stream/physics/usePhysicsFrameLifecyclePolicy.d.ts +18 -0
  418. package/dist/components/stream/pipelineBufferUtils.d.ts +26 -0
  419. package/dist/components/stream/pipelineConfig.d.ts +179 -0
  420. package/dist/components/stream/pipelineDecay.d.ts +21 -3
  421. package/dist/components/stream/pipelineDomainResolution.d.ts +62 -0
  422. package/dist/components/stream/pipelineIdentityOps.d.ts +26 -0
  423. package/dist/components/stream/pipelinePulse.d.ts +17 -3
  424. package/dist/components/stream/pipelineRibbons.d.ts +41 -0
  425. package/dist/components/stream/pipelineSpatialIndex.d.ts +12 -0
  426. package/dist/components/stream/pipelineStoreUpdateResults.d.ts +33 -0
  427. package/dist/components/stream/pipelineStyleResolvers.d.ts +46 -0
  428. package/dist/components/stream/pipelineTransitions.d.ts +3 -1
  429. package/dist/components/stream/pipelineUpdateContract.d.ts +69 -0
  430. package/dist/components/stream/pipelineUpdateStore.d.ts +21 -0
  431. package/dist/components/stream/pulseFrameRefresh.d.ts +22 -0
  432. package/dist/components/stream/renderBackend.d.ts +27 -0
  433. package/dist/components/stream/renderers/canvasRenderHelpers.d.ts +15 -1
  434. package/dist/components/stream/renderers/geoCanvasRenderer.d.ts +3 -2
  435. package/dist/components/stream/renderers/glyphCanvasRenderer.d.ts +6 -0
  436. package/dist/components/stream/renderers/networkParticleRenderer.d.ts +1 -1
  437. package/dist/components/stream/renderers/resolveCSSColor.d.ts +6 -0
  438. package/dist/components/stream/sceneRenderBackendTypes.d.ts +28 -0
  439. package/dist/components/stream/sceneRevisionDiagnostics.d.ts +45 -0
  440. package/dist/components/stream/streamSemanticTypes.d.ts +16 -0
  441. package/dist/components/stream/streamStoreSync.d.ts +37 -0
  442. package/dist/components/stream/streamThemeTypes.d.ts +14 -0
  443. package/dist/components/stream/svgOverlayUtils.d.ts +10 -0
  444. package/dist/components/stream/test-utils/frameScheduler.d.ts +12 -0
  445. package/dist/components/stream/test-utils/revisionConsumption.d.ts +13 -0
  446. package/dist/components/stream/titleLayout.d.ts +31 -0
  447. package/dist/components/stream/types.d.ts +165 -72
  448. package/dist/components/stream/useCanvasFrameHost.d.ts +71 -0
  449. package/dist/components/stream/useFrame.d.ts +44 -2
  450. package/dist/components/stream/useHydration.d.ts +6 -0
  451. package/dist/components/stream/useLegendCategoryEmission.d.ts +5 -0
  452. package/dist/components/stream/useSemanticFrameInteractions.d.ts +22 -0
  453. package/dist/components/stream/useUpdateResultSnapshot.d.ts +7 -0
  454. package/dist/components/stream/workerModuleUrl.d.ts +10 -0
  455. package/dist/components/stream/xyAnnotationAnchors.d.ts +13 -0
  456. package/dist/components/stream/xyCanvasRenderers.d.ts +7 -0
  457. package/dist/components/stream/xyCrosshair.d.ts +11 -0
  458. package/dist/components/stream/xyDateTicks.d.ts +9 -0
  459. package/dist/components/stream/xyDefaultTooltip.d.ts +10 -0
  460. package/dist/components/stream/xyFrameAxisTypes.d.ts +50 -0
  461. package/dist/components/stream/xySceneBuilders/types.d.ts +10 -9
  462. package/dist/controls.min.js +2 -0
  463. package/dist/controls.module.min.js +2 -0
  464. package/dist/forceLayoutWorker.js +1 -0
  465. package/dist/geo.min.js +1 -1
  466. package/dist/geo.module.min.js +1 -1
  467. package/dist/network.min.js +1 -1
  468. package/dist/network.module.min.js +1 -1
  469. package/dist/ordinal.min.js +1 -1
  470. package/dist/ordinal.module.min.js +1 -1
  471. package/dist/physics-matter.min.js +1 -0
  472. package/dist/physics-matter.module.min.js +1 -0
  473. package/dist/physics-rapier.min.js +1 -0
  474. package/dist/physics-rapier.module.min.js +1 -0
  475. package/dist/physics.min.js +2 -0
  476. package/dist/physics.module.min.js +2 -0
  477. package/dist/physicsWorker.js +1 -0
  478. package/dist/realtime.min.js +1 -1
  479. package/dist/realtime.module.min.js +1 -1
  480. package/dist/rough.min.js +1 -0
  481. package/dist/rough.module.min.js +1 -0
  482. package/dist/semiotic-ai-chunk-OG7BQUUW.module.min.js +2 -0
  483. package/dist/semiotic-ai-core.d.ts +47 -0
  484. package/dist/semiotic-ai-core.min.js +1 -0
  485. package/dist/semiotic-ai-core.module.min.js +1 -0
  486. package/dist/semiotic-ai-statisticalOverlays-CY4WKR4A.module.min.js +2 -0
  487. package/dist/semiotic-ai.d.ts +53 -9
  488. package/dist/semiotic-ai.min.js +1 -1
  489. package/dist/semiotic-ai.module.min.js +1 -1
  490. package/dist/semiotic-chunk-3FSVZ46U.module.min.js +2 -0
  491. package/dist/semiotic-controls.d.ts +20 -0
  492. package/dist/semiotic-data.min.js +1 -1
  493. package/dist/semiotic-data.module.min.js +1 -1
  494. package/dist/semiotic-experimental.d.ts +38 -9
  495. package/dist/semiotic-experimental.min.js +1 -1
  496. package/dist/semiotic-experimental.module.min.js +1 -1
  497. package/dist/semiotic-geo.d.ts +15 -0
  498. package/dist/semiotic-network.d.ts +15 -0
  499. package/dist/semiotic-ordinal.d.ts +14 -0
  500. package/dist/semiotic-physics-matter.d.ts +10 -0
  501. package/dist/semiotic-physics-rapier.d.ts +9 -0
  502. package/dist/semiotic-physics.d.ts +60 -0
  503. package/dist/semiotic-realtime-core.d.ts +34 -0
  504. package/dist/semiotic-realtime-core.min.js +1 -0
  505. package/dist/semiotic-realtime-core.module.min.js +1 -0
  506. package/dist/semiotic-realtime-react.d.ts +10 -0
  507. package/dist/semiotic-realtime-react.min.js +2 -0
  508. package/dist/semiotic-realtime-react.module.min.js +2 -0
  509. package/dist/semiotic-realtime.d.ts +4 -30
  510. package/dist/semiotic-recipes-core.d.ts +92 -0
  511. package/dist/semiotic-recipes-core.min.js +1 -0
  512. package/dist/semiotic-recipes-core.module.min.js +1 -0
  513. package/dist/semiotic-recipes-react.d.ts +7 -0
  514. package/dist/semiotic-recipes-react.min.js +2 -0
  515. package/dist/semiotic-recipes-react.module.min.js +2 -0
  516. package/dist/semiotic-recipes.d.ts +4 -43
  517. package/dist/semiotic-recipes.min.js +1 -1
  518. package/dist/semiotic-recipes.module.min.js +1 -1
  519. package/dist/semiotic-rough.d.ts +4 -0
  520. package/dist/semiotic-server-edge.d.ts +8 -0
  521. package/dist/semiotic-server-edge.min.js +1 -0
  522. package/dist/semiotic-server-edge.module.min.js +1 -0
  523. package/dist/semiotic-server-node.d.ts +5 -0
  524. package/dist/semiotic-server-node.min.js +1 -0
  525. package/dist/semiotic-server-node.module.min.js +1 -0
  526. package/dist/semiotic-server.d.ts +2 -2
  527. package/dist/semiotic-statisticalOverlays-UOMSFKVJ.module.min.js +2 -0
  528. package/dist/semiotic-themes-core.d.ts +53 -0
  529. package/dist/semiotic-themes-core.min.js +1 -0
  530. package/dist/semiotic-themes-core.module.min.js +1 -0
  531. package/dist/semiotic-themes-react.d.ts +4 -0
  532. package/dist/semiotic-themes-react.min.js +2 -0
  533. package/dist/semiotic-themes-react.module.min.js +2 -0
  534. package/dist/semiotic-themes.d.ts +6 -76
  535. package/dist/semiotic-themes.min.js +1 -2
  536. package/dist/semiotic-themes.module.min.js +1 -2
  537. package/dist/semiotic-utils-core.d.ts +50 -0
  538. package/dist/semiotic-utils-core.min.js +1 -0
  539. package/dist/semiotic-utils-core.module.min.js +1 -0
  540. package/dist/semiotic-utils-react.d.ts +5 -0
  541. package/dist/semiotic-utils-react.min.js +2 -0
  542. package/dist/semiotic-utils-react.module.min.js +2 -0
  543. package/dist/semiotic-utils.d.ts +3 -39
  544. package/dist/semiotic-utils.min.js +1 -2
  545. package/dist/semiotic-utils.module.min.js +1 -2
  546. package/dist/semiotic-value.min.js +1 -1
  547. package/dist/semiotic-value.module.min.js +1 -1
  548. package/dist/semiotic-xy.d.ts +12 -0
  549. package/dist/semiotic.d.ts +44 -8
  550. package/dist/semiotic.min.js +1 -1
  551. package/dist/semiotic.module.min.js +1 -1
  552. package/dist/server.min.js +1 -1
  553. package/dist/server.module.min.js +1 -1
  554. package/dist/test-utils/capturedFrameProps.d.ts +67 -0
  555. package/dist/test-utils/frameMock.d.ts +12 -9
  556. package/dist/xy-chunk-IWD6IB6V.module.min.js +2 -0
  557. package/dist/xy-statisticalOverlays-7RWG6LJT.module.min.js +2 -0
  558. package/dist/xy.min.js +1 -1
  559. package/dist/xy.module.min.js +1 -1
  560. package/package.json +259 -88
  561. package/spec/README.md +152 -0
  562. package/spec/bindings/README.md +35 -0
  563. package/spec/bindings/vega-lite.mjs +112 -0
  564. package/spec/v0.1/annotation-provenance.schema.json +127 -0
  565. package/spec/v0.1/audience-profile.schema.json +67 -0
  566. package/spec/v0.1/chart-capability.schema.json +186 -0
  567. package/dist/components/recipes/gofish.d.ts +0 -207
  568. package/dist/components/recipes/gofishInterpreter.d.ts +0 -52
  569. package/dist/components/recipes/gofishLambdas.d.ts +0 -145
  570. package/dist/semiotic-ai-semiotic-ai-u954ylUn.js +0 -2
  571. package/dist/semiotic-ai-statisticalOverlays-CU7jW05Q.js +0 -1
  572. package/dist/semiotic-semiotic-BmrYbi99.js +0 -2
  573. package/dist/semiotic-statisticalOverlays-IjZw8Lsu.js +0 -1
  574. package/dist/xy-semiotic-xy-Dufu3D0-.js +0 -2
  575. package/dist/xy-statisticalOverlays-3Ni9bRph.js +0 -1
@@ -0,0 +1,205 @@
1
+ /**
2
+ * Declarative, threshold-aware style rules for data marks.
3
+ *
4
+ * A `StyleRule[]` is an ordered list of `{ when, style }` pairs. Every rule
5
+ * whose `when` condition matches a datum contributes its `style`; styles are
6
+ * merged in list order so — for any single property — the **last applicable
7
+ * rule wins**. This is the CSS-cascade mental model: send as many rules as
8
+ * you like, and the last one that applies to a given property is the one you
9
+ * see. A datum that matches no rule keeps the chart's resolved base style.
10
+ *
11
+ * `when` is intentionally permissive: it can be a predicate function (full
12
+ * control), a declarative numeric/categorical threshold (no code), or simply
13
+ * omitted / `true` (an unconditional base layer). Threshold conditions read a
14
+ * numeric value from `field` (falling back to the chart-provided value, e.g.
15
+ * a bar's `valueAccessor`), so `{ when: { gt: 10 }, style: {...} }` "styles
16
+ * every bar taller than 10" with no accessor boilerplate.
17
+ *
18
+ * The engine is chart-agnostic — it operates on a raw datum plus a small
19
+ * context (`value`, `category`, `index`). Bar-family HOCs feed it through
20
+ * `useOrdinalPieceStyle`, but any renderer with a datum and a numeric value
21
+ * can reuse it.
22
+ */
23
+ import type { Datum } from "./datumTypes";
24
+ import type { HatchFill } from "./hatchFill";
25
+ /** The style a rule applies. `fill` may be a solid color or a {@link HatchFill}. */
26
+ export interface StyleRuleStyle {
27
+ /** Solid color string, a CSS var, or a declarative hatch descriptor. */
28
+ fill?: string | HatchFill;
29
+ fillOpacity?: number;
30
+ stroke?: string;
31
+ strokeWidth?: number;
32
+ strokeDasharray?: string;
33
+ opacity?: number;
34
+ }
35
+ /**
36
+ * A declarative numeric / categorical condition. All present operators must
37
+ * hold (logical AND). The compared value is chosen in this order:
38
+ * 1. `axis` — a resolved context channel (`"x"` / `"y"` / `"value"`), so a
39
+ * rule can target either axis of an XY chart regardless of the accessor
40
+ * field name (e.g. `{ axis: "y", gt: 10 }`).
41
+ * 2. `field` — a raw datum property (`datum[field]`).
42
+ * 3. otherwise the host-resolved context value (`ctx.value` — the bar value,
43
+ * the y value for XY, the node/feature/body value, etc.).
44
+ */
45
+ export interface StyleRuleThreshold {
46
+ /**
47
+ * Compare against a resolved context channel rather than a raw field. Use to
48
+ * target an XY chart's `"x"` or `"y"` axis without knowing the accessor's
49
+ * field name. `"value"` is the same channel the field-less default uses.
50
+ */
51
+ axis?: "x" | "y" | "value";
52
+ /** Datum field to compare. Defaults to the host-resolved context value. */
53
+ field?: string;
54
+ /** value > n */
55
+ gt?: number;
56
+ /** value >= n */
57
+ gte?: number;
58
+ /** value < n */
59
+ lt?: number;
60
+ /** value <= n */
61
+ lte?: number;
62
+ /** value === n (numeric or string equality) */
63
+ eq?: number | string;
64
+ /** value !== n */
65
+ ne?: number | string;
66
+ /** min <= value <= max (inclusive) */
67
+ within?: [number, number];
68
+ /** value < min OR value > max */
69
+ outside?: [number, number];
70
+ /** value is one of the listed values */
71
+ in?: Array<number | string>;
72
+ }
73
+ /**
74
+ * Context passed to predicate / style functions and threshold resolution.
75
+ * Which channels are populated depends on the chart family:
76
+ * - ordinal bars: `value` (bar value), `category` (stack/group key)
77
+ * - XY: `value` (= `y`), `x`, `y`
78
+ * - network nodes: `value` (node size/value), `category` (group / colorBy)
79
+ * - geo features: `value` (feature value), `category`
80
+ * - physics particles: `value` (body value), `category` (colorBy group)
81
+ */
82
+ export interface StyleRuleContext {
83
+ /** Primary numeric value the host resolved (bar value; XY y; node/feature/body value). */
84
+ value: number | undefined;
85
+ /** Resolved x value (XY family). */
86
+ x?: number;
87
+ /** Resolved y value (XY family; usually equals `value`). */
88
+ y?: number;
89
+ /** Resolved size value (bubble / symbol `sizeBy`, node size), when known. */
90
+ size?: number;
91
+ /** Category / series / stack / group key, when the host knows one. */
92
+ category?: string;
93
+ /** Positional index, when the host provides one. */
94
+ index?: number;
95
+ }
96
+ /** A `when` predicate: full programmatic control over matching. */
97
+ export type StyleRulePredicate = (datum: Datum, ctx: StyleRuleContext) => boolean;
98
+ /**
99
+ * One declarative style rule. `when` may be:
100
+ * - a **predicate** `(datum, ctx) => boolean`
101
+ * - a **threshold** object (`{ gt, lte, within, in, … }`)
102
+ * - `true` / omitted — always matches (an unconditional base layer)
103
+ * - `false` — never matches (temporarily disable a rule)
104
+ */
105
+ export interface StyleRule {
106
+ /** Optional stable id — handy for legends, debugging, and docs. */
107
+ id?: string;
108
+ /** Match condition. Omitted / `true` ⇒ always applies. */
109
+ when?: StyleRulePredicate | StyleRuleThreshold | boolean;
110
+ /** Style to apply when matched. Object, or a per-datum function. */
111
+ style: StyleRuleStyle | ((datum: Datum, ctx: StyleRuleContext) => StyleRuleStyle);
112
+ /** Optional human label (legend / documentation only). */
113
+ label?: string;
114
+ }
115
+ /**
116
+ * Build a stable-ish resolver that reads a numeric value from a datum via a
117
+ * string field or accessor function — the value threshold rules compare
118
+ * against when their `field` is omitted. Memoize the result in the host
119
+ * component keyed on the accessor (string accessors are already stable).
120
+ */
121
+ export declare function makeRuleValueResolver(accessor: string | ((d: Datum) => unknown) | undefined): (d: Datum) => number | undefined;
122
+ /**
123
+ * Build the XY `StyleRuleContext` resolver from x/y accessors: populates
124
+ * `value` (= y), `x`, and `y` so thresholds can target either axis via
125
+ * `{ axis: "x" }` / `{ axis: "y" }` regardless of the accessor field names.
126
+ * Shared by the XY client hooks and the XY server render configs. Memoize in
127
+ * the host keyed on the accessors.
128
+ */
129
+ export declare function makeXYRuleContext(xAccessor: string | ((d: Datum) => unknown) | undefined, yAccessor: string | ((d: Datum) => unknown) | undefined): (d: Datum, category?: string) => StyleRuleContext;
130
+ /**
131
+ * Build the network-node `StyleRuleContext` resolver: `value` from a numeric
132
+ * field (defaults to the node's `value`) and `category` from the `colorBy`
133
+ * group. Rules resolve against the raw node object (unwrap `RealtimeNode.data`
134
+ * first). Shared by network client HOCs and the network server configs.
135
+ */
136
+ export declare function makeNodeRuleContext(colorBy: string | ((d: Datum) => unknown) | undefined, valueAccessor?: string | ((d: Datum) => unknown)): (raw: Datum) => StyleRuleContext;
137
+ /**
138
+ * Evaluate a declarative threshold against a datum + context. Returns `false`
139
+ * when the compared value can't be resolved to a finite number (except for the
140
+ * purely categorical `eq`/`ne`/`in` operators, which also accept strings).
141
+ */
142
+ export declare function matchesThreshold(threshold: StyleRuleThreshold, datum: Datum, ctx: StyleRuleContext): boolean;
143
+ /** Does a single rule's `when` condition match this datum? */
144
+ export declare function ruleMatches(rule: StyleRule, datum: Datum, ctx: StyleRuleContext): boolean;
145
+ /**
146
+ * Resolve an ordered rule list to a single merged style. Every matching
147
+ * rule's style is spread in list order, so for any given property the last
148
+ * applicable rule wins. Returns an empty object when nothing matches (the
149
+ * host chart's base style is then used unchanged).
150
+ */
151
+ export declare function resolveStyleRules(datum: Datum, rules: ReadonlyArray<StyleRule> | undefined, ctx: StyleRuleContext): StyleRuleStyle;
152
+ /** A per-mark style function the pipelines accept (`fill` may be a HatchFill). */
153
+ type MarkStyleFn = (d: Datum, arg?: string) => StyleRuleStyle;
154
+ /**
155
+ * Client-side composition: wrap a base per-mark style function so declarative
156
+ * rules layer OVER its output (rules win per property), matching the ordinal
157
+ * `useOrdinalPieceStyle` behavior for every other family. The base style runs
158
+ * first (resolving the mark's base color); the merged rule style is spread on
159
+ * top. Returns the base function unchanged when there are no rules, so it's a
160
+ * zero-cost pass-through in the common case.
161
+ *
162
+ * `buildContext` populates the `StyleRuleContext` channels the family's rules
163
+ * read (`value`, `x`, `y`, `category`…). `unwrap` handles frames whose style
164
+ * callbacks receive a wrapper rather than the raw datum (e.g. network's
165
+ * `RealtimeNode`, whose user object lives on `.data`) — rules and
166
+ * `buildContext` see the unwrapped raw datum, while the base function still
167
+ * receives the original argument.
168
+ */
169
+ export declare function composeStyleRules<A = string>(baseStyleFn: ((d: Datum, arg?: A) => Datum) | undefined, rules: ReadonlyArray<StyleRule> | undefined, buildContext: (raw: Datum, arg?: A) => StyleRuleContext, unwrap?: (d: Datum) => Datum): (d: Datum, arg?: A) => Datum;
170
+ /**
171
+ * Compose style rules into a per-mark style function. It resolves the merged
172
+ * rule style from a per-datum `StyleRuleContext` (built by `buildContext`),
173
+ * then overlays a user-supplied style function (which wins). Marks left
174
+ * unmatched return an empty style so the frame's own base-color resolver fills
175
+ * them.
176
+ *
177
+ * This is the family-agnostic primitive behind the server render path (which
178
+ * builds frame props directly instead of going through a HOC hook). Each
179
+ * family supplies the `buildContext` that populates the channels its threshold
180
+ * rules read — `value` for bars, `{ value, x, y }` for XY, node value/group
181
+ * for network, etc. — so all families share one rule-resolution core.
182
+ *
183
+ * @param arg the second style-fn argument (ordinal category / stack key). It is
184
+ * passed through to `buildContext` and the user style fn unchanged.
185
+ */
186
+ export declare function makeStyleRuleStyleFn(rules: ReadonlyArray<StyleRule> | undefined, buildContext: (d: Datum, arg?: string) => StyleRuleContext, userStyleFn?: MarkStyleFn): MarkStyleFn | undefined;
187
+ /**
188
+ * Network-flavored server helper: resolves rules against the raw node (the
189
+ * server frame passes a `RealtimeNode` wrapper whose user object is on
190
+ * `.data`), with `{ value, category }` context from `makeNodeRuleContext`. A
191
+ * user `nodeStyle` overlays and wins. `undefined` when there are no rules.
192
+ */
193
+ export declare function styleRulesToNodeStyle(rules: ReadonlyArray<StyleRule> | undefined, colorBy: string | ((d: Datum) => unknown) | undefined, valueAccessor: string | ((d: Datum) => unknown) | undefined, userNodeStyle?: (d: Datum, arg?: number) => Datum): ((d: Datum, arg?: number) => Datum) | undefined;
194
+ /**
195
+ * XY-flavored server helper: `{ value: y, x, y }` context from `makeXYRuleContext`.
196
+ * Feeds `pointStyle` / `lineStyle`. A user style overlays and wins.
197
+ */
198
+ export declare function styleRulesToXYStyle(rules: ReadonlyArray<StyleRule> | undefined, xAccessor: string | ((d: Datum) => unknown) | undefined, yAccessor: string | ((d: Datum) => unknown) | undefined, userStyle?: MarkStyleFn): MarkStyleFn | undefined;
199
+ /**
200
+ * Ordinal-flavored {@link makeStyleRuleStyleFn}: the context is
201
+ * `{ value: valueAccessor(d), category }` — the bar/piece value plus the
202
+ * stack/group key. Kept as sugar for the ordinal server config.
203
+ */
204
+ export declare function styleRulesToPieceStyle(rules: ReadonlyArray<StyleRule> | undefined, valueAccessor: string | ((d: Datum) => unknown) | undefined, userPieceStyle?: MarkStyleFn): MarkStyleFn | undefined;
205
+ export {};
@@ -0,0 +1,7 @@
1
+ import type { Datum } from "./datumTypes";
2
+ export declare function parseDateLikeString(value: string): number;
3
+ export declare function coerceDateLikeValue(value: unknown): number;
4
+ export declare function coerceTemporalStringRows(data: Datum[] | undefined, fieldName: string | undefined): {
5
+ data: Datum[] | undefined;
6
+ failed: boolean;
7
+ };
@@ -1,9 +1,16 @@
1
1
  import * as React from "react";
2
2
  import type { HoverData } from "../../realtime/types";
3
3
  import type { Datum } from "./datumTypes";
4
+ export type TooltipValue = string | number | boolean | Date | Datum | Datum[] | null | undefined;
5
+ type TooltipAccessor = string | {
6
+ bivarianceHack(datum: Datum): TooltipValue;
7
+ }["bivarianceHack"];
8
+ type TooltipFormatter = {
9
+ bivarianceHack(value: TooltipValue, index?: number, allTicks?: number[]): React.ReactNode;
10
+ }["bivarianceHack"];
4
11
  export interface TooltipFieldConfig {
5
12
  label: string;
6
- accessor: string | ((d: any) => any);
13
+ accessor: TooltipAccessor;
7
14
  role?: "title" | "x" | "y" | "color" | "size" | "group" | "value";
8
15
  /** Per-field formatter. HOCs pass `xFormat`/`yFormat`/`valueFormat` here so
9
16
  * the default tooltip renders values consistently with the axis. Typed
@@ -12,15 +19,15 @@ export interface TooltipFieldConfig {
12
19
  * (`(d, index?, allTicks?) => ReactNode`). A ReactNode return renders
13
20
  * as-is in the tooltip span. If the formatter throws, the tooltip
14
21
  * falls back to the built-in `formatVal`. */
15
- format?: (v: any, ...rest: any[]) => React.ReactNode;
22
+ format?: TooltipFormatter;
16
23
  }
17
24
  /**
18
25
  * Extract a display name from an accessor.
19
26
  * Strings return themselves; functions return "value".
20
27
  */
21
- export declare function accessorName(acc: string | ((...args: any[]) => any)): string;
28
+ export declare function accessorName(acc: TooltipAccessor): string;
22
29
  export declare function formatVal(v: unknown): string;
23
- export declare function resolveValue(d: Datum, acc: string | ((d: Datum) => any)): unknown;
30
+ export declare function resolveValue(d: Datum, acc: TooltipAccessor): TooltipValue;
24
31
  export { smartTooltipEntries } from "./smartTooltip";
25
32
  export type { SmartTooltipEntry, SmartTooltipResult } from "./smartTooltip";
26
33
  /**
@@ -33,7 +40,13 @@ export type { SmartTooltipEntry, SmartTooltipResult } from "./smartTooltip";
33
40
  * Returns an empty array when band is not configured, so the spread at
34
41
  * the call site is a no-op for the common case.
35
42
  */
36
- export declare function bandTooltipFields(band: unknown, valueFormat?: (v: any, ...rest: any[]) => React.ReactNode): TooltipFieldConfig[];
43
+ export declare function bandTooltipFields(band: {
44
+ y0Accessor?: TooltipAccessor;
45
+ y1Accessor?: TooltipAccessor;
46
+ } | Array<{
47
+ y0Accessor?: TooltipAccessor;
48
+ y1Accessor?: TooltipAccessor;
49
+ }> | null | undefined, valueFormat?: TooltipFormatter): TooltipFieldConfig[];
37
50
  /**
38
51
  * Build a default tooltipContent function for StreamXYFrame HOCs.
39
52
  * Receives HoverData ({ data, time, value, x, y }) and renders
@@ -48,13 +61,13 @@ export declare function buildDefaultTooltip(fields: TooltipFieldConfig[]): (hove
48
61
  * (PieChart/DonutChart wrap data in arrays). Default: `d.data || d`.
49
62
  */
50
63
  export declare function buildOrdinalTooltip({ categoryAccessor, valueAccessor, groupAccessor, groupLabel, pieData, valueFormat, }: {
51
- categoryAccessor: string | ((d: Datum) => any);
52
- valueAccessor: string | ((d: Datum) => any);
53
- groupAccessor?: string | ((d: Datum) => any);
64
+ categoryAccessor: TooltipAccessor;
65
+ valueAccessor: TooltipAccessor;
66
+ groupAccessor?: TooltipAccessor;
54
67
  groupLabel?: string;
55
68
  pieData?: boolean;
56
69
  /** Same formatter the HOC passes to the value axis. Threaded here so the
57
70
  * default tooltip shows values consistently with the axis ("$450k", not
58
71
  * "450000"). Override by passing a custom `tooltip` prop. */
59
- valueFormat?: (v: any, ...rest: any[]) => React.ReactNode;
72
+ valueFormat?: TooltipFormatter;
60
73
  }): (d: Datum) => React.ReactNode;
@@ -2,8 +2,10 @@ import type React from "react";
2
2
  import type { PartialMargin } from "../../types/marginType";
3
3
  import type { OnObservationCallback } from "../../store/ObservationStore";
4
4
  import type { AnimateProp } from "../../stream/pipelineTransitionUtils";
5
- import type { Datum } from "./datumTypes";
5
+ import type { Datum, DatumValue } from "./datumTypes";
6
6
  import type { AutoPlaceAnnotations } from "../../recipes/annotationLayout";
7
+ import type { ResponsiveRule } from "./responsiveRules";
8
+ import type { MobileVisualizationContract } from "./auditMobileVisualization";
7
9
  /**
8
10
  * Selection consumption config — makes this chart react to a named selection
9
11
  */
@@ -44,7 +46,7 @@ export type LinkedBrushProp = string | {
44
46
  * Chart display mode — controls default chrome, size, and interaction.
45
47
  * User-provided props always override mode defaults.
46
48
  */
47
- export type ChartMode = "primary" | "context" | "sparkline";
49
+ export type ChartMode = "primary" | "context" | "sparkline" | "mobile";
48
50
  /**
49
51
  * Hover highlighting mode.
50
52
  * `true` and `"series"` both dim non-hovered series/categories; the string
@@ -52,6 +54,46 @@ export type ChartMode = "primary" | "context" | "sparkline";
52
54
  * more explicit per-series mode.
53
55
  */
54
56
  export type HoverHighlightMode = boolean | "series";
57
+ export type MobileClearSelectionBehavior = "backgroundTap" | "none";
58
+ export type MobileSnapBehavior = "nearestDatum" | "none";
59
+ export type MobileStandardControlKind = "brush" | "zoom" | "legend";
60
+ export type MobileStandardControlsMode = boolean | "all" | MobileStandardControlKind | MobileStandardControlKind[];
61
+ /**
62
+ * Touch-first interaction policy for phone-sized chart slots.
63
+ *
64
+ * This is intentionally shared by built-in charts, custom charts, audits, and
65
+ * generated/interoperable chart manifests so mobile behavior is not a
66
+ * second-class per-component escape hatch.
67
+ */
68
+ export interface MobileInteractionConfig {
69
+ /** Explicitly enable or disable mobile interaction for an object config. */
70
+ enabled?: boolean;
71
+ /** Convert tap/click on a datum into a persistent selection when possible. */
72
+ tapToSelect?: boolean;
73
+ /** Convert hover-linked detail into a tap-lockable state on touch devices. */
74
+ tapToLockTooltip?: boolean;
75
+ /** Clear the mobile interaction state when the frame reports a background tap. */
76
+ clearSelection?: MobileClearSelectionBehavior;
77
+ /** Comfortable touch target in CSS pixels. Defaults to 44 when mobile is active. */
78
+ targetSize?: number;
79
+ /** Hit-testing strategy for imprecise touch input. */
80
+ snap?: MobileSnapBehavior;
81
+ /** Preferred brush handle size in CSS pixels for mobile brush affordances. */
82
+ brushHandleSize?: number;
83
+ /** Signals that a brush/zoom/legend gesture has a standard-control alternative. */
84
+ standardControls?: MobileStandardControlsMode;
85
+ }
86
+ export type MobileInteractionProp = boolean | MobileInteractionConfig;
87
+ export interface ResolvedMobileInteractionConfig {
88
+ enabled: boolean;
89
+ tapToSelect: boolean;
90
+ tapToLockTooltip: boolean;
91
+ clearSelection: MobileClearSelectionBehavior;
92
+ targetSize: number;
93
+ snap: MobileSnapBehavior;
94
+ brushHandleSize: number;
95
+ standardControls: MobileStandardControlsMode;
96
+ }
55
97
  /**
56
98
  * Base props shared across all chart components
57
99
  */
@@ -72,6 +114,12 @@ export interface BaseChartProps {
72
114
  responsiveWidth?: boolean;
73
115
  /** Auto-match height to parent container (requires parent with explicit height). Default: false */
74
116
  responsiveHeight?: boolean;
117
+ /** Semantic responsive transformations keyed by measured chart slot, not CSS alone. */
118
+ responsiveRules?: ResponsiveRule[];
119
+ /** Phone/mobile contract consumed by audits, recipes, adapters, and agents. */
120
+ mobileSemantics?: MobileVisualizationContract;
121
+ /** Touch-first interaction policy for phone-sized chart slots. */
122
+ mobileInteraction?: MobileInteractionProp;
75
123
  /** CSS class name for the chart container */
76
124
  className?: string;
77
125
  /** Chart title displayed at the top */
@@ -116,10 +164,7 @@ export interface BaseChartProps {
116
164
  accessibleTable?: boolean;
117
165
  /** Callback when a data element is clicked. Receives the original datum and pixel coordinates.
118
166
  * For lines, receives the line data; for bars, the bar datum; for pie slices, the slice datum. */
119
- onClick?: (datum: any, event: {
120
- x: number;
121
- y: number;
122
- }) => void;
167
+ onClick?: DatumClickHandler;
123
168
  /** Dim non-hovered series when hovering a data mark. Requires `colorBy`. */
124
169
  hoverHighlight?: HoverHighlightMode;
125
170
  /** Max pixel distance for hover/click hit testing. Default 30. Increase for sparse charts, decrease for dense ones. */
@@ -150,6 +195,12 @@ export interface BaseChartProps {
150
195
  * - Network / geo / hierarchy charts: no-op (no continuous axis). */
151
196
  axisExtent?: import("./axisExtent").AxisExtentMode;
152
197
  }
198
+ export type DatumClickHandler = {
199
+ bivarianceHack(datum: Datum, event: {
200
+ x: number;
201
+ y: number;
202
+ }): void;
203
+ }["bivarianceHack"];
153
204
  /**
154
205
  * Axis configuration props
155
206
  */
@@ -172,7 +223,7 @@ export type CategoryFormatFn = (label: string, index?: number) => string | React
172
223
  * Accessor type - can be a property name or a function
173
224
  * @deprecated Use DataAccessor from generalTypes for generic type safety
174
225
  */
175
- export type Accessor<T = any> = string | ((d: any, i?: number) => T);
226
+ export type Accessor<T = DatumValue> = string | ((d: Datum, i?: number) => T);
176
227
  /**
177
228
  * Generic accessor type that provides autocomplete when TDatum is specified.
178
229
  * Uses Datum in the function param so HOC charts can pass
@@ -3,6 +3,11 @@ import type { Datum } from "./datumTypes";
3
3
  import type { Accessor, ChartAccessor } from "./types";
4
4
  import type { SelectionHookResult } from "./selectionUtils";
5
5
  import type { HoverData } from "../../stream/types";
6
+ import type { BandConfig } from "../../stream/types";
7
+ import { type StyleRule, type StyleRuleContext } from "./styleRules";
8
+ import type { HatchFill } from "./hatchFill";
9
+ /** Values a resolved area/line style may carry (`fill` can be a HatchFill). */
10
+ type AreaStyleValue = string | number | HatchFill | CanvasPattern | undefined;
6
11
  export interface AreaSeriesSetupOptions<TDatum extends Datum = Datum> {
7
12
  /** Sparse-filtered data array (the HOC's `safeData`). */
8
13
  safeData: TDatum[];
@@ -54,14 +59,22 @@ export interface AreaSeriesSetupOptions<TDatum extends Datum = Datum> {
54
59
  groupField?: Accessor<string> | ChartAccessor<TDatum, string>;
55
60
  /** Optional band prop — when set, the default tooltip surfaces a
56
61
  * pair of rows per band (low + high). Threaded through verbatim. */
57
- band?: unknown;
62
+ band?: BandConfig<TDatum> | Array<BandConfig<TDatum>>;
63
+ /**
64
+ * Declarative style rules, merged on top of the resolved area fill/stroke
65
+ * (last-applicable rule wins). Per-series: resolves against the series'
66
+ * sample datum. A rule `fill` may be a color or a HatchFill.
67
+ */
68
+ styleRules?: ReadonlyArray<StyleRule>;
69
+ /** Build the `StyleRuleContext` for a series sample datum. */
70
+ ruleContext?: (d: Datum) => StyleRuleContext;
58
71
  }
59
72
  export interface AreaSeriesSetupResult<TDatum extends Datum = Datum> {
60
73
  /** Flat data array ready for `<StreamXYFrame data={…} />`. Empty
61
74
  * when the HOC is in push mode (no `data` prop). */
62
75
  flattenedData: TDatum[];
63
76
  /** Selection-aware line/area style fn. */
64
- lineStyle: (d: Datum) => Record<string, string | number>;
77
+ lineStyle: (d: Datum) => Record<string, AreaStyleValue>;
65
78
  /** Selection-aware point style fn — `undefined` when `showPoints`
66
79
  * is false so the HOC can spread it conditionally. */
67
80
  pointStyle: ((d: Datum) => Record<string, string | number>) | undefined;
@@ -76,3 +89,4 @@ export interface AreaSeriesSetupResult<TDatum extends Datum = Datum> {
76
89
  * verbatim before extraction.
77
90
  */
78
91
  export declare function useAreaSeriesSetup<TDatum extends Datum = Datum>(options: AreaSeriesSetupOptions<TDatum>): AreaSeriesSetupResult<TDatum>;
92
+ export {};
@@ -1,7 +1,8 @@
1
1
  import type { Datum } from "./datumTypes";
2
2
  import { useChartLegendAndMargin, useLegendInteraction, DEFAULT_COLOR } from "./hooks";
3
3
  import type { LegendInteractionMode, LegendPosition } from "./hooks";
4
- import type { Accessor, SelectionConfig, LinkedHoverProp, HoverHighlightMode } from "./types";
4
+ import type { Accessor, SelectionConfig, LinkedHoverProp, HoverHighlightMode, MobileInteractionProp, ResolvedMobileInteractionConfig } from "./types";
5
+ import type { MobileVisualizationContract } from "./auditMobileVisualization";
5
6
  import type { OnObservationCallback } from "../../store/ObservationStore";
6
7
  import type { PartialMargin } from "../../types/marginType";
7
8
  import type { SelectionHookResult } from "./selectionUtils";
@@ -17,11 +18,11 @@ export interface ChartSetupInput {
17
18
  /** The data array used for color scale and category extraction */
18
19
  data: Array<Datum>;
19
20
  /** The original data prop (may be undefined) — used for empty-state check */
20
- rawData: unknown[] | undefined;
21
+ rawData: Array<Datum | null | undefined> | undefined;
21
22
  /** The color-by accessor (may be an "actual" colorBy derived from stackBy/groupBy/categoryAccessor) */
22
23
  colorBy: Accessor<string> | undefined;
23
24
  /** Color scheme name or custom array — undefined lets useColorScale consult the theme */
24
- colorScheme: string | string[] | undefined;
25
+ colorScheme: string | string[] | Record<string, string> | undefined;
25
26
  /** Legend interaction mode */
26
27
  legendInteraction: LegendInteractionMode | undefined;
27
28
  /** Legend position override */
@@ -52,12 +53,16 @@ export interface ChartSetupInput {
52
53
  right: number;
53
54
  };
54
55
  /** onClick callback */
55
- onClick?: (datum: any, event: {
56
+ onClick?: (datum: Datum, event: {
56
57
  x: number;
57
58
  y: number;
58
59
  }) => void;
59
60
  /** Dim non-hovered series on data mark hover */
60
61
  hoverHighlight?: HoverHighlightMode;
62
+ /** Touch-first interaction policy for phone-sized chart slots */
63
+ mobileInteraction?: MobileInteractionProp;
64
+ /** Mobile semantic contract for generated/audited/mobile-aware chart behavior */
65
+ mobileSemantics?: MobileVisualizationContract;
61
66
  /** Loading state */
62
67
  loading: boolean | undefined;
63
68
  /** Custom content rendered in place of the default skeleton while `loading` is true. */
@@ -95,6 +100,8 @@ export interface ChartSetupResult {
95
100
  customHoverBehavior: (d: Datum | null) => void;
96
101
  /** Custom click behavior callback for the frame */
97
102
  customClickBehavior: (d: Datum | null) => void;
103
+ /** Resolved touch-first policy for chart wrappers and stream-prop helpers */
104
+ mobileInteraction: ResolvedMobileInteractionConfig;
98
105
  /** Legend config (or undefined if no legend) */
99
106
  legend: ReturnType<typeof useChartLegendAndMargin>["legend"];
100
107
  /** Computed margin with legend-aware adjustments */
@@ -1,7 +1,9 @@
1
1
  import type { Ref, RefObject, ReactElement, ReactNode } from "react";
2
2
  import { useChartMode } from "./hooks";
3
3
  import { type ChartSetupResult } from "./useChartSetup";
4
- import type { ChartMode, SelectionConfig, LinkedHoverProp } from "./types";
4
+ import type { Accessor, ChartMode, SelectionConfig, LinkedHoverProp, MobileInteractionProp } from "./types";
5
+ import type { MobileVisualizationContract } from "./auditMobileVisualization";
6
+ import type { ResponsiveRule } from "./responsiveRules";
5
7
  import type { OnObservationCallback } from "../../store/ObservationStore";
6
8
  import { type PartialMargin, type MarginType } from "../../types/marginType";
7
9
  import type { Datum } from "./datumTypes";
@@ -17,7 +19,7 @@ interface ScaffoldOptions {
17
19
  /** Ref forwarded by the HOC. The hook binds the imperative handle internally. */
18
20
  imperativeRef: Ref<RealtimeFrameHandle> | undefined;
19
21
  /** Which `useFrameImperativeHandle` variant to bind. XY/ordinal frames share "xy". */
20
- imperativeVariant: "xy" | "network";
22
+ imperativeVariant: "xy" | "network" | "geo-points";
21
23
  /** Margin shorthand or sided form from the HOC's `margin` prop. */
22
24
  margin: PartialMargin | undefined;
23
25
  width?: number;
@@ -26,6 +28,12 @@ interface ScaffoldOptions {
26
28
  enableHover?: boolean;
27
29
  showLegend?: boolean;
28
30
  title?: string;
31
+ description?: string;
32
+ summary?: string;
33
+ accessibleTable?: boolean;
34
+ mobileInteraction?: MobileInteractionProp;
35
+ mobileSemantics?: MobileVisualizationContract;
36
+ responsiveRules?: ResponsiveRule[];
29
37
  mode?: ChartMode;
30
38
  xLabel?: string;
31
39
  yLabel?: string;
@@ -39,7 +47,7 @@ interface ScaffoldResult<TFrameHandle> {
39
47
  normalizedMargin: Partial<MarginType> | undefined;
40
48
  }
41
49
  /**
42
- * Scaffold shared by all three custom-layout HOCs: imperative-handle
50
+ * Scaffold shared by all four custom-layout HOCs: imperative-handle
43
51
  * binding, chart-mode resolution, margin normalization. Network HOCs
44
52
  * stop here; data-shaped HOCs layer `useChartSetup` on top via
45
53
  * `useCustomChartSetup`.
@@ -53,15 +61,19 @@ interface DataSetupOptions extends ScaffoldOptions {
53
61
  /** Whether the hover callback should unwrap the datum (ordinal/network = true, XY = false). */
54
62
  unwrapData: boolean;
55
63
  /** Color scheme threaded into useChartSetup's color resolution. */
56
- colorScheme?: string | string[];
64
+ colorScheme?: string | string[] | Record<string, string>;
65
+ /** Semantic color accessor for legend, linked-hover series mode, and frame color config. */
66
+ colorBy?: Accessor<string>;
57
67
  /** Pass-through chart-setup inputs. */
58
68
  selection?: SelectionConfig;
59
69
  linkedHover?: LinkedHoverProp;
60
70
  onObservation?: OnObservationCallback;
61
- onClick?: (datum: any, ev: {
71
+ onClick?: (datum: Datum, ev: {
62
72
  x: number;
63
73
  y: number;
64
74
  }) => void;
75
+ mobileInteraction?: MobileInteractionProp;
76
+ mobileSemantics?: MobileVisualizationContract;
65
77
  chartId?: string;
66
78
  loading?: boolean;
67
79
  loadingContent?: ReactNode | false;
@@ -1,4 +1,4 @@
1
- import type { Ref, RefObject, DependencyList } from "react";
1
+ import type { Ref, RefObject } from "react";
2
2
  import type { RealtimeFrameHandle } from "../../realtime/types";
3
3
  type FrameVariant = "xy" | "network" | "geo-points" | "geo-lines";
4
4
  interface Options {
@@ -15,7 +15,6 @@ interface Options {
15
15
  variant: FrameVariant;
16
16
  frameRef: RefObject<unknown>;
17
17
  overrides?: Partial<RealtimeFrameHandle>;
18
- deps?: DependencyList;
19
18
  }
20
19
  /**
21
20
  * Wire up the HOC's exposed `ref` to the inner frame ref using the
@@ -30,11 +30,11 @@ export declare function resolveAccessorFn<T>(accessor: string | ((d: Datum) => T
30
30
  * Interpolates from red → gray → blue for odd, red → blue for even.
31
31
  */
32
32
  export declare function defaultDivergingScheme(n: number, themeDivergingSchemeName?: string): string[];
33
- export declare function aggregateData(data: any[], levels: string[], getCat: (d: Datum) => string, getScore: ((d: Datum) => number) | null, getLevel: ((d: Datum) => string) | null, getCount: ((d: Datum) => number) | null): AggregatedRow[];
33
+ export declare function aggregateData(data: Datum[], levels: string[], getCat: (d: Datum) => string, getScore: ((d: Datum) => number) | null, getLevel: ((d: Datum) => string) | null, getCount: ((d: Datum) => number) | null): AggregatedRow[];
34
34
  export declare function toDivergingValues(rows: AggregatedRow[], levels: string[]): AggregatedRow[];
35
35
  export declare function orderForDiverging(rows: AggregatedRow[], levels: string[]): AggregatedRow[];
36
36
  interface UseLikertAggregationConfig {
37
- data: any[] | undefined;
37
+ data: Datum[] | undefined;
38
38
  levels: string[];
39
39
  categoryAccessor?: string | ((d: Datum) => string);
40
40
  valueAccessor?: string | ((d: Datum) => number);
@@ -47,9 +47,9 @@ interface UseLikertAggregationResult {
47
47
  /** Pre-processed data for static mode */
48
48
  processedData: AggregatedRow[];
49
49
  /** Re-aggregate all accumulated data (call from push handlers) */
50
- reAggregate: (rawData: any[]) => void;
50
+ reAggregate: (rawData: Datum[]) => void;
51
51
  /** Ref holding accumulated raw data for push mode */
52
- accumulatorRef: MutableRefObject<any[]>;
52
+ accumulatorRef: MutableRefObject<Datum[]>;
53
53
  }
54
54
  /**
55
55
  * Encapsulates Likert-specific data aggregation:
@@ -1,6 +1,7 @@
1
1
  import type { ReactNode, ReactElement } from "react";
2
2
  import type { Datum } from "./datumTypes";
3
- import type { Accessor, ChartAccessor, SelectionConfig, LinkedHoverProp } from "./types";
3
+ import type { Accessor, ChartAccessor, SelectionConfig, LinkedHoverProp, MobileInteractionProp, ResolvedMobileInteractionConfig } from "./types";
4
+ import type { MobileVisualizationContract } from "./auditMobileVisualization";
4
5
  import type { OnObservationCallback } from "../../store/ObservationStore";
5
6
  import type { PartialMargin, MarginType } from "../../types/marginType";
6
7
  import { useChartSelection, useChartLegendAndMargin } from "./hooks";
@@ -23,7 +24,7 @@ export interface NetworkChartSetupInput<TNode extends Datum = Datum, TEdge exten
23
24
  /** Edge target accessor (used by `inferNodesFromEdges`). */
24
25
  targetAccessor?: ChartAccessor<TEdge, string>;
25
26
  colorBy?: Accessor<string>;
26
- colorScheme?: string | string[];
27
+ colorScheme?: string | string[] | Record<string, string>;
27
28
  /** `undefined` defaults to "auto" (on when colorBy is set). */
28
29
  showLegend?: boolean;
29
30
  legendPosition?: LegendPosition;
@@ -35,6 +36,8 @@ export interface NetworkChartSetupInput<TNode extends Datum = Datum, TEdge exten
35
36
  x: number;
36
37
  y: number;
37
38
  }) => void;
39
+ mobileInteraction?: MobileInteractionProp;
40
+ mobileSemantics?: MobileVisualizationContract;
38
41
  /** Used by useChartSelection for chart-type-stamped observation events. */
39
42
  chartType: string;
40
43
  chartId?: string;
@@ -94,6 +97,7 @@ export interface NetworkChartSetupResult {
94
97
  legend: ReturnType<typeof useChartLegendAndMargin>["legend"];
95
98
  margin: MarginType;
96
99
  legendPosition: LegendPosition;
100
+ mobileInteraction: ResolvedMobileInteractionConfig;
97
101
  customHoverBehavior: ReturnType<typeof useChartSelection>["customHoverBehavior"];
98
102
  customClickBehavior: ReturnType<typeof useChartSelection>["customClickBehavior"];
99
103
  /**
@@ -1,4 +1,5 @@
1
1
  import type { ChartAccessor } from "./types";
2
+ import type { Datum } from "./datumTypes";
2
3
  export interface OrdinalBrushInput {
3
4
  brushProp: boolean | undefined;
4
5
  onBrushProp: ((extent: {
@@ -8,7 +9,7 @@ export interface OrdinalBrushInput {
8
9
  name: string;
9
10
  rField?: string;
10
11
  } | undefined;
11
- valueAccessor: ChartAccessor<any, number>;
12
+ valueAccessor: ChartAccessor<Datum, number>;
12
13
  }
13
14
  export interface OrdinalBrushResult {
14
15
  hasBrush: boolean;