semiotic 2.0.3 → 3.0.0-beta.2

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 (508) hide show
  1. package/CLAUDE.md +828 -0
  2. package/README.md +215 -37
  3. package/ai/cli.js +48 -0
  4. package/ai/dist/ai/componentRegistry.js +45 -0
  5. package/ai/dist/ai/mcp-server.js +99 -0
  6. package/ai/dist/ai/renderHOCToSVG.js +77 -0
  7. package/ai/dist/src/components/Annotation.js +358 -0
  8. package/ai/dist/src/components/AnnotationLayer/AnnotationLayer.js +369 -0
  9. package/ai/dist/src/components/Axis/Axis.js +374 -0
  10. package/ai/dist/src/components/Axis/axisTitle.js +14 -0
  11. package/ai/dist/src/components/Axis/index.js +7 -0
  12. package/ai/dist/src/components/Axis/summaryGraphic.js +37 -0
  13. package/ai/dist/src/components/Brush.js +84 -0
  14. package/ai/dist/src/components/ChartErrorBoundary.js +91 -0
  15. package/ai/dist/src/components/DividedLine.js +65 -0
  16. package/ai/dist/src/components/Legend.js +140 -0
  17. package/ai/dist/src/components/LinkedCharts.js +95 -0
  18. package/ai/dist/src/components/ThemeProvider.js +79 -0
  19. package/ai/dist/src/components/Tooltip/Tooltip.js +309 -0
  20. package/ai/dist/src/components/TooltipPositioner/index.js +132 -0
  21. package/ai/dist/src/components/annotationLayerBehavior/annotationHandling.js +73 -0
  22. package/ai/dist/src/components/annotationLayerBehavior/d3labeler.js +254 -0
  23. package/ai/dist/src/components/annotationRules/baseRules.js +150 -0
  24. package/ai/dist/src/components/annotationRules/networkframeRules.js +196 -0
  25. package/ai/dist/src/components/annotationRules/xyframeRules.js +297 -0
  26. package/ai/dist/src/components/batchWork.js +35 -0
  27. package/ai/dist/src/components/charts/index.js +109 -0
  28. package/ai/dist/src/components/charts/network/ChordDiagram.js +142 -0
  29. package/ai/dist/src/components/charts/network/CirclePack.js +108 -0
  30. package/ai/dist/src/components/charts/network/ForceDirectedGraph.js +121 -0
  31. package/ai/dist/src/components/charts/network/SankeyDiagram.js +155 -0
  32. package/ai/dist/src/components/charts/network/TreeDiagram.js +110 -0
  33. package/ai/dist/src/components/charts/network/Treemap.js +106 -0
  34. package/ai/dist/src/components/charts/ordinal/BarChart.js +156 -0
  35. package/ai/dist/src/components/charts/ordinal/BoxPlot.js +139 -0
  36. package/ai/dist/src/components/charts/ordinal/DonutChart.js +130 -0
  37. package/ai/dist/src/components/charts/ordinal/DotPlot.js +126 -0
  38. package/ai/dist/src/components/charts/ordinal/GroupedBarChart.js +129 -0
  39. package/ai/dist/src/components/charts/ordinal/Histogram.js +132 -0
  40. package/ai/dist/src/components/charts/ordinal/PieChart.js +128 -0
  41. package/ai/dist/src/components/charts/ordinal/RidgelinePlot.js +130 -0
  42. package/ai/dist/src/components/charts/ordinal/StackedBarChart.js +130 -0
  43. package/ai/dist/src/components/charts/ordinal/SwarmPlot.js +147 -0
  44. package/ai/dist/src/components/charts/ordinal/ViolinPlot.js +138 -0
  45. package/ai/dist/src/components/charts/realtime/RealtimeHeatmap.js +79 -0
  46. package/ai/dist/src/components/charts/realtime/RealtimeHistogram.js +114 -0
  47. package/ai/dist/src/components/charts/realtime/RealtimeLineChart.js +93 -0
  48. package/ai/dist/src/components/charts/realtime/RealtimeSwarmChart.js +105 -0
  49. package/ai/dist/src/components/charts/realtime/RealtimeWaterfallChart.js +106 -0
  50. package/ai/dist/src/components/charts/shared/ChartError.js +72 -0
  51. package/ai/dist/src/components/charts/shared/colorUtils.js +138 -0
  52. package/ai/dist/src/components/charts/shared/formatUtils.js +213 -0
  53. package/ai/dist/src/components/charts/shared/hooks.js +49 -0
  54. package/ai/dist/src/components/charts/shared/legendUtils.js +57 -0
  55. package/ai/dist/src/components/charts/shared/selectionUtils.js +67 -0
  56. package/ai/dist/src/components/charts/shared/tooltipUtils.js +79 -0
  57. package/ai/dist/src/components/charts/shared/types.js +2 -0
  58. package/ai/dist/src/components/charts/shared/validateChartData.js +82 -0
  59. package/ai/dist/src/components/charts/shared/validateProps.js +736 -0
  60. package/ai/dist/src/components/charts/xy/AreaChart.js +230 -0
  61. package/ai/dist/src/components/charts/xy/BubbleChart.js +251 -0
  62. package/ai/dist/src/components/charts/xy/Heatmap.js +235 -0
  63. package/ai/dist/src/components/charts/xy/LineChart.js +307 -0
  64. package/ai/dist/src/components/charts/xy/MinimapChart.js +298 -0
  65. package/ai/dist/src/components/charts/xy/Scatterplot.js +172 -0
  66. package/ai/dist/src/components/charts/xy/ScatterplotMatrix.js +426 -0
  67. package/ai/dist/src/components/charts/xy/StackedAreaChart.js +231 -0
  68. package/ai/dist/src/components/constants/coordinateNames.js +11 -0
  69. package/ai/dist/src/components/constants/frame_props.js +251 -0
  70. package/ai/dist/src/components/data/dataFunctions.js +487 -0
  71. package/ai/dist/src/components/data/multiAccessorUtils.js +14 -0
  72. package/ai/dist/src/components/data/transforms.js +143 -0
  73. package/ai/dist/src/components/data/unflowedFunctions.js +5 -0
  74. package/ai/dist/src/components/export/exportChart.js +121 -0
  75. package/ai/dist/src/components/generic_utilities/functions.js +5 -0
  76. package/ai/dist/src/components/geometry/areaDrawing.js +312 -0
  77. package/ai/dist/src/components/geometry/contourLayout.js +73 -0
  78. package/ai/dist/src/components/geometry/hexbinLayout.js +163 -0
  79. package/ai/dist/src/components/geometry/lineDrawing.js +356 -0
  80. package/ai/dist/src/components/geometry/sankeyLinks.js +331 -0
  81. package/ai/dist/src/components/geometry/summaryLayouts.js +136 -0
  82. package/ai/dist/src/components/index.js +18 -0
  83. package/ai/dist/src/components/processing/InteractionItems.js +223 -0
  84. package/ai/dist/src/components/processing/hierarchyUtils.js +104 -0
  85. package/ai/dist/src/components/processing/layouts/chordLayout.js +58 -0
  86. package/ai/dist/src/components/processing/layouts/forceLayout.js +142 -0
  87. package/ai/dist/src/components/processing/layouts/hierarchyLayout.js +31 -0
  88. package/ai/dist/src/components/processing/layouts/index.js +32 -0
  89. package/ai/dist/src/components/processing/layouts/sankeyLayout.js +96 -0
  90. package/ai/dist/src/components/processing/layouts/simpleLayouts.js +34 -0
  91. package/ai/dist/src/components/processing/layouts/types.js +2 -0
  92. package/ai/dist/src/components/processing/networkDefaults.js +39 -0
  93. package/ai/dist/src/components/realtime/BinAccumulator.js +36 -0
  94. package/ai/dist/src/components/realtime/IncrementalExtent.js +55 -0
  95. package/ai/dist/src/components/realtime/RingBuffer.js +104 -0
  96. package/ai/dist/src/components/realtime/renderers/barRenderer.js +133 -0
  97. package/ai/dist/src/components/realtime/renderers/candlestickRenderer.js +7 -0
  98. package/ai/dist/src/components/realtime/renderers/lineRenderer.js +164 -0
  99. package/ai/dist/src/components/realtime/renderers/swarmRenderer.js +91 -0
  100. package/ai/dist/src/components/realtime/renderers/types.js +2 -0
  101. package/ai/dist/src/components/realtime/renderers/waterfallRenderer.js +163 -0
  102. package/ai/dist/src/components/realtime/types.js +2 -0
  103. package/ai/dist/src/components/semiotic-ai.js +89 -0
  104. package/ai/dist/src/components/semiotic-data.js +12 -0
  105. package/ai/dist/src/components/semiotic-network.js +38 -0
  106. package/ai/dist/src/components/semiotic-ordinal.js +28 -0
  107. package/ai/dist/src/components/semiotic-realtime.js +30 -0
  108. package/ai/dist/src/components/semiotic-server.js +8 -0
  109. package/ai/dist/src/components/semiotic-xy.js +35 -0
  110. package/ai/dist/src/components/semiotic.js +109 -0
  111. package/ai/dist/src/components/server/renderToStaticSVG.js +594 -0
  112. package/ai/dist/src/components/store/SelectionStore.js +91 -0
  113. package/ai/dist/src/components/store/ThemeStore.js +78 -0
  114. package/ai/dist/src/components/store/TooltipStore.js +13 -0
  115. package/ai/dist/src/components/store/createStore.js +81 -0
  116. package/ai/dist/src/components/store/useSelection.js +133 -0
  117. package/ai/dist/src/components/stream/CanvasHitTester.js +164 -0
  118. package/ai/dist/src/components/stream/DataSourceAdapter.js +99 -0
  119. package/ai/dist/src/components/stream/MarginalGraphics.js +266 -0
  120. package/ai/dist/src/components/stream/NetworkCanvasHitTester.js +228 -0
  121. package/ai/dist/src/components/stream/NetworkPipelineStore.js +498 -0
  122. package/ai/dist/src/components/stream/NetworkSVGOverlay.js +70 -0
  123. package/ai/dist/src/components/stream/NetworkSceneGraph.js +38 -0
  124. package/ai/dist/src/components/stream/OrdinalCanvasHitTester.js +146 -0
  125. package/ai/dist/src/components/stream/OrdinalPipelineStore.js +786 -0
  126. package/ai/dist/src/components/stream/OrdinalSVGOverlay.js +130 -0
  127. package/ai/dist/src/components/stream/ParticlePool.js +174 -0
  128. package/ai/dist/src/components/stream/PipelineStore.js +1243 -0
  129. package/ai/dist/src/components/stream/SVGOverlay.js +129 -0
  130. package/ai/dist/src/components/stream/SceneGraph.js +132 -0
  131. package/ai/dist/src/components/stream/StreamNetworkFrame.js +561 -0
  132. package/ai/dist/src/components/stream/StreamOrdinalFrame.js +492 -0
  133. package/ai/dist/src/components/stream/StreamXYFrame.js +590 -0
  134. package/ai/dist/src/components/stream/accessorUtils.js +20 -0
  135. package/ai/dist/src/components/stream/index.js +32 -0
  136. package/ai/dist/src/components/stream/layouts/chordLayoutPlugin.js +352 -0
  137. package/ai/dist/src/components/stream/layouts/forceLayoutPlugin.js +230 -0
  138. package/ai/dist/src/components/stream/layouts/hierarchyLayoutPlugin.js +568 -0
  139. package/ai/dist/src/components/stream/layouts/index.js +28 -0
  140. package/ai/dist/src/components/stream/layouts/sankeyLayoutPlugin.js +245 -0
  141. package/ai/dist/src/components/stream/networkTypes.js +17 -0
  142. package/ai/dist/src/components/stream/ordinalSceneBuilders/barScene.js +126 -0
  143. package/ai/dist/src/components/stream/ordinalSceneBuilders/connectorScene.js +62 -0
  144. package/ai/dist/src/components/stream/ordinalSceneBuilders/pieScene.js +33 -0
  145. package/ai/dist/src/components/stream/ordinalSceneBuilders/pointScene.js +63 -0
  146. package/ai/dist/src/components/stream/ordinalSceneBuilders/statisticalScene.js +278 -0
  147. package/ai/dist/src/components/stream/ordinalSceneBuilders/timelineScene.js +30 -0
  148. package/ai/dist/src/components/stream/ordinalSceneBuilders/types.js +2 -0
  149. package/ai/dist/src/components/stream/ordinalTypes.js +2 -0
  150. package/ai/dist/src/components/stream/renderers/areaCanvasRenderer.js +48 -0
  151. package/ai/dist/src/components/stream/renderers/barCanvasRenderer.js +70 -0
  152. package/ai/dist/src/components/stream/renderers/boxplotCanvasRenderer.js +75 -0
  153. package/ai/dist/src/components/stream/renderers/candlestickCanvasRenderer.js +28 -0
  154. package/ai/dist/src/components/stream/renderers/connectorCanvasRenderer.js +47 -0
  155. package/ai/dist/src/components/stream/renderers/heatmapCanvasRenderer.js +31 -0
  156. package/ai/dist/src/components/stream/renderers/lineCanvasRenderer.js +140 -0
  157. package/ai/dist/src/components/stream/renderers/networkArcRenderer.js +38 -0
  158. package/ai/dist/src/components/stream/renderers/networkCircleRenderer.js +37 -0
  159. package/ai/dist/src/components/stream/renderers/networkEdgeRenderer.js +102 -0
  160. package/ai/dist/src/components/stream/renderers/networkParticleRenderer.js +63 -0
  161. package/ai/dist/src/components/stream/renderers/networkRectRenderer.js +35 -0
  162. package/ai/dist/src/components/stream/renderers/pointCanvasRenderer.js +38 -0
  163. package/ai/dist/src/components/stream/renderers/swarmCanvasRenderer.js +10 -0
  164. package/ai/dist/src/components/stream/renderers/types.js +2 -0
  165. package/ai/dist/src/components/stream/renderers/violinCanvasRenderer.js +47 -0
  166. package/ai/dist/src/components/stream/renderers/waterfallCanvasRenderer.js +38 -0
  167. package/ai/dist/src/components/stream/renderers/wedgeCanvasRenderer.js +33 -0
  168. package/ai/dist/src/components/stream/types.js +2 -0
  169. package/ai/dist/src/components/types/annotationTypes.js +2 -0
  170. package/ai/dist/src/components/types/canvasTypes.js +2 -0
  171. package/ai/dist/src/components/types/generalTypes.js +2 -0
  172. package/ai/dist/src/components/types/interactionTypes.js +2 -0
  173. package/ai/dist/src/components/types/legendTypes.js +2 -0
  174. package/ai/dist/src/components/types/networkTypes.js +2 -0
  175. package/ai/dist/src/components/types/ordinalTypes.js +2 -0
  176. package/ai/dist/src/components/types/xyTypes.js +2 -0
  177. package/ai/dist/src/components/useBoundingRect.js +24 -0
  178. package/ai/dist/src/components/visualizationLayerBehavior/axis.js +301 -0
  179. package/ai/dist/src/components/visualizationLayerBehavior/general.js +435 -0
  180. package/ai/dist/src/setupTests.js +4 -0
  181. package/ai/examples.md +489 -0
  182. package/ai/schema.json +1338 -0
  183. package/ai/system-prompt.md +41 -0
  184. package/dist/AnnotationLayer/AnnotationLayer.d.ts +0 -1
  185. package/dist/Axis/axisTitle.d.ts +3 -3
  186. package/dist/Axis/summaryGraphic.d.ts +1 -1
  187. package/dist/ChartErrorBoundary.d.ts +39 -0
  188. package/dist/LinkedCharts.d.ts +42 -0
  189. package/dist/ThemeProvider.d.ts +12 -0
  190. package/dist/Tooltip/Tooltip.d.ts +141 -0
  191. package/dist/TooltipPositioner/index.d.ts +1 -1
  192. package/dist/annotationLayerBehavior/annotationHandling.d.ts +2 -2
  193. package/dist/annotationRules/networkframeRules.d.ts +2 -2
  194. package/dist/annotationRules/xyframeRules.d.ts +2 -2
  195. package/dist/batchWork.d.ts +1 -1
  196. package/dist/charts/index.d.ts +74 -0
  197. package/dist/charts/network/ChordDiagram.d.ts +36 -0
  198. package/dist/charts/network/CirclePack.d.ts +32 -0
  199. package/dist/charts/network/ForceDirectedGraph.d.ts +38 -0
  200. package/dist/charts/network/SankeyDiagram.d.ts +38 -0
  201. package/dist/charts/network/TreeDiagram.d.ts +34 -0
  202. package/dist/charts/network/Treemap.d.ts +33 -0
  203. package/dist/charts/ordinal/BarChart.d.ts +32 -0
  204. package/dist/charts/ordinal/BoxPlot.d.ts +27 -0
  205. package/dist/charts/ordinal/DonutChart.d.ts +23 -0
  206. package/dist/charts/ordinal/DotPlot.d.ts +27 -0
  207. package/dist/charts/ordinal/GroupedBarChart.d.ts +26 -0
  208. package/dist/charts/ordinal/Histogram.d.ts +26 -0
  209. package/dist/charts/ordinal/PieChart.d.ts +21 -0
  210. package/dist/charts/ordinal/RidgelinePlot.d.ts +34 -0
  211. package/dist/charts/ordinal/StackedBarChart.d.ts +27 -0
  212. package/dist/charts/ordinal/SwarmPlot.d.ts +29 -0
  213. package/dist/charts/ordinal/ViolinPlot.d.ts +28 -0
  214. package/dist/charts/realtime/RealtimeHeatmap.d.ts +95 -0
  215. package/dist/charts/realtime/RealtimeHistogram.d.ts +119 -0
  216. package/dist/charts/realtime/RealtimeLineChart.d.ts +98 -0
  217. package/dist/charts/realtime/RealtimeSwarmChart.d.ts +100 -0
  218. package/dist/charts/realtime/RealtimeWaterfallChart.d.ts +97 -0
  219. package/dist/charts/shared/ChartError.d.ts +19 -0
  220. package/dist/charts/shared/colorUtils.d.ts +62 -0
  221. package/dist/charts/shared/formatUtils.d.ts +94 -0
  222. package/dist/charts/shared/hooks.d.ts +20 -0
  223. package/dist/charts/shared/legendUtils.d.ts +32 -0
  224. package/dist/charts/shared/selectionUtils.d.ts +51 -0
  225. package/dist/charts/shared/tooltipUtils.d.ts +18 -0
  226. package/dist/charts/shared/types.d.ts +97 -0
  227. package/dist/charts/shared/validateChartData.d.ts +41 -0
  228. package/dist/charts/shared/validateProps.d.ts +18 -0
  229. package/dist/charts/xy/AreaChart.d.ts +130 -0
  230. package/dist/charts/xy/BubbleChart.d.ts +164 -0
  231. package/dist/charts/xy/Heatmap.d.ts +156 -0
  232. package/dist/charts/xy/LineChart.d.ts +196 -0
  233. package/dist/charts/xy/MinimapChart.d.ts +73 -0
  234. package/dist/charts/xy/Scatterplot.d.ts +55 -0
  235. package/dist/charts/xy/ScatterplotMatrix.d.ts +71 -0
  236. package/dist/charts/xy/StackedAreaChart.d.ts +134 -0
  237. package/dist/constants/frame_props.d.ts +9 -0
  238. package/dist/data/dataFunctions.d.ts +10 -11
  239. package/dist/data/transforms.d.ts +45 -0
  240. package/dist/export/exportChart.d.ts +16 -0
  241. package/dist/{svg → geometry}/areaDrawing.d.ts +3 -13
  242. package/dist/geometry/contourLayout.d.ts +6 -0
  243. package/dist/geometry/hexbinLayout.d.ts +7 -0
  244. package/dist/{svg → geometry}/lineDrawing.d.ts +7 -35
  245. package/dist/geometry/sankeyLinks.d.ts +2 -0
  246. package/dist/geometry/summaryLayouts.d.ts +45 -0
  247. package/dist/index.d.ts +1 -125
  248. package/dist/network.js +7495 -0
  249. package/dist/network.js.map +1 -0
  250. package/dist/network.min.js +1 -0
  251. package/dist/network.module.js +7458 -0
  252. package/dist/network.module.js.map +1 -0
  253. package/dist/network.module.min.js +1 -0
  254. package/dist/ordinal.js +6497 -0
  255. package/dist/ordinal.js.map +1 -0
  256. package/dist/ordinal.min.js +1 -0
  257. package/dist/ordinal.module.js +6465 -0
  258. package/dist/ordinal.module.js.map +1 -0
  259. package/dist/ordinal.module.min.js +1 -0
  260. package/dist/processing/InteractionItems.d.ts +5 -4
  261. package/dist/processing/hierarchyUtils.d.ts +16 -0
  262. package/dist/processing/layouts/chordLayout.d.ts +2 -0
  263. package/dist/processing/layouts/forceLayout.d.ts +3 -0
  264. package/dist/processing/layouts/hierarchyLayout.d.ts +10 -0
  265. package/dist/processing/layouts/index.d.ts +8 -0
  266. package/dist/processing/layouts/sankeyLayout.d.ts +8 -0
  267. package/dist/processing/layouts/simpleLayouts.d.ts +7 -0
  268. package/dist/processing/layouts/types.d.ts +17 -0
  269. package/dist/processing/networkDefaults.d.ts +36 -0
  270. package/dist/realtime/BinAccumulator.d.ts +8 -0
  271. package/dist/realtime/IncrementalExtent.d.ts +13 -0
  272. package/dist/realtime/RingBuffer.d.ts +19 -0
  273. package/dist/realtime/renderers/barRenderer.d.ts +2 -0
  274. package/dist/realtime/renderers/candlestickRenderer.d.ts +2 -0
  275. package/dist/realtime/renderers/lineRenderer.d.ts +2 -0
  276. package/dist/realtime/renderers/swarmRenderer.d.ts +2 -0
  277. package/dist/realtime/renderers/types.d.ts +9 -0
  278. package/dist/realtime/renderers/waterfallRenderer.d.ts +3 -0
  279. package/dist/realtime/types.d.ts +113 -0
  280. package/dist/realtime.js +7072 -0
  281. package/dist/realtime.js.map +1 -0
  282. package/dist/realtime.min.js +1 -0
  283. package/dist/realtime.module.js +7043 -0
  284. package/dist/realtime.module.js.map +1 -0
  285. package/dist/realtime.module.min.js +1 -0
  286. package/dist/semiotic-ai.d.ts +36 -0
  287. package/dist/semiotic-ai.js +13323 -0
  288. package/dist/semiotic-ai.js.map +1 -0
  289. package/dist/semiotic-ai.min.js +1 -0
  290. package/dist/semiotic-ai.module.js +13264 -0
  291. package/dist/semiotic-ai.module.js.map +1 -0
  292. package/dist/semiotic-ai.module.min.js +1 -0
  293. package/dist/semiotic-data.d.ts +5 -0
  294. package/dist/semiotic-data.js +141 -0
  295. package/dist/semiotic-data.js.map +1 -0
  296. package/dist/semiotic-data.min.js +1 -0
  297. package/dist/semiotic-data.module.js +136 -0
  298. package/dist/semiotic-data.module.js.map +1 -0
  299. package/dist/semiotic-data.module.min.js +1 -0
  300. package/dist/semiotic-network.d.ts +23 -0
  301. package/dist/semiotic-ordinal.d.ts +19 -0
  302. package/dist/semiotic-realtime.d.ts +22 -0
  303. package/dist/semiotic-server.d.ts +1 -0
  304. package/dist/semiotic-xy.d.ts +21 -0
  305. package/dist/semiotic.d.ts +41 -28
  306. package/dist/semiotic.js +16257 -13130
  307. package/dist/semiotic.js.map +1 -0
  308. package/dist/semiotic.min.js +1 -0
  309. package/dist/semiotic.module.js +16198 -13100
  310. package/dist/semiotic.module.js.map +1 -0
  311. package/dist/semiotic.module.min.js +1 -0
  312. package/dist/server/renderToStaticSVG.d.ts +9 -0
  313. package/dist/server.js +5191 -0
  314. package/dist/server.js.map +1 -0
  315. package/dist/server.min.js +1 -0
  316. package/dist/server.module.js +5166 -0
  317. package/dist/server.module.js.map +1 -0
  318. package/dist/server.module.min.js +1 -0
  319. package/dist/store/SelectionStore.d.ts +29 -0
  320. package/dist/store/ThemeStore.d.ts +26 -0
  321. package/dist/store/useSelection.d.ts +66 -0
  322. package/dist/stream/CanvasHitTester.d.ts +18 -0
  323. package/dist/stream/DataSourceAdapter.d.ts +32 -0
  324. package/dist/stream/MarginalGraphics.d.ts +19 -0
  325. package/dist/stream/NetworkCanvasHitTester.d.ts +14 -0
  326. package/dist/stream/NetworkPipelineStore.d.ts +74 -0
  327. package/dist/stream/NetworkSVGOverlay.d.ts +40 -0
  328. package/dist/stream/NetworkSceneGraph.d.ts +14 -0
  329. package/dist/stream/OrdinalCanvasHitTester.d.ts +9 -0
  330. package/dist/stream/OrdinalPipelineStore.d.ts +65 -0
  331. package/dist/stream/OrdinalSVGOverlay.d.ts +34 -0
  332. package/dist/stream/ParticlePool.d.ts +28 -0
  333. package/dist/stream/PipelineStore.d.ts +161 -0
  334. package/dist/stream/SVGOverlay.d.ts +37 -0
  335. package/dist/stream/SceneGraph.d.ts +16 -0
  336. package/dist/stream/StreamNetworkFrame.d.ts +4 -0
  337. package/dist/stream/StreamOrdinalFrame.d.ts +4 -0
  338. package/dist/stream/StreamXYFrame.d.ts +4 -0
  339. package/dist/stream/accessorUtils.d.ts +2 -0
  340. package/dist/stream/index.d.ts +16 -0
  341. package/dist/stream/layouts/chordLayoutPlugin.d.ts +8 -0
  342. package/dist/stream/layouts/forceLayoutPlugin.d.ts +9 -0
  343. package/dist/stream/layouts/hierarchyLayoutPlugin.d.ts +17 -0
  344. package/dist/stream/layouts/index.d.ts +11 -0
  345. package/dist/stream/layouts/sankeyLayoutPlugin.d.ts +8 -0
  346. package/dist/stream/networkTypes.d.ts +346 -0
  347. package/dist/stream/ordinalSceneBuilders/barScene.d.ts +4 -0
  348. package/dist/stream/ordinalSceneBuilders/connectorScene.d.ts +3 -0
  349. package/dist/stream/ordinalSceneBuilders/pieScene.d.ts +3 -0
  350. package/dist/stream/ordinalSceneBuilders/pointScene.d.ts +4 -0
  351. package/dist/stream/ordinalSceneBuilders/statisticalScene.d.ts +6 -0
  352. package/dist/stream/ordinalSceneBuilders/timelineScene.d.ts +3 -0
  353. package/dist/stream/ordinalSceneBuilders/types.d.ts +21 -0
  354. package/dist/stream/ordinalTypes.d.ts +225 -0
  355. package/dist/stream/renderers/areaCanvasRenderer.d.ts +7 -0
  356. package/dist/stream/renderers/barCanvasRenderer.d.ts +7 -0
  357. package/dist/stream/renderers/boxplotCanvasRenderer.d.ts +2 -0
  358. package/dist/stream/renderers/candlestickCanvasRenderer.d.ts +2 -0
  359. package/dist/stream/renderers/connectorCanvasRenderer.d.ts +2 -0
  360. package/dist/stream/renderers/heatmapCanvasRenderer.d.ts +6 -0
  361. package/dist/stream/renderers/lineCanvasRenderer.d.ts +8 -0
  362. package/dist/stream/renderers/networkArcRenderer.d.ts +5 -0
  363. package/dist/stream/renderers/networkCircleRenderer.d.ts +5 -0
  364. package/dist/stream/renderers/networkEdgeRenderer.d.ts +10 -0
  365. package/dist/stream/renderers/networkParticleRenderer.d.ts +11 -0
  366. package/dist/stream/renderers/networkRectRenderer.d.ts +5 -0
  367. package/dist/stream/renderers/pointCanvasRenderer.d.ts +7 -0
  368. package/dist/stream/renderers/swarmCanvasRenderer.d.ts +7 -0
  369. package/dist/stream/renderers/types.d.ts +7 -0
  370. package/dist/stream/renderers/violinCanvasRenderer.d.ts +2 -0
  371. package/dist/stream/renderers/waterfallCanvasRenderer.d.ts +8 -0
  372. package/dist/stream/renderers/wedgeCanvasRenderer.d.ts +2 -0
  373. package/dist/stream/types.d.ts +307 -0
  374. package/dist/types/annotationTypes.d.ts +13 -18
  375. package/dist/types/canvasTypes.d.ts +1 -1
  376. package/dist/types/generalTypes.d.ts +41 -36
  377. package/dist/types/interactionTypes.d.ts +7 -9
  378. package/dist/types/legendTypes.d.ts +2 -2
  379. package/dist/types/networkTypes.d.ts +40 -30
  380. package/dist/types/ordinalTypes.d.ts +27 -18
  381. package/dist/types/xyTypes.d.ts +1 -95
  382. package/dist/visualizationLayerBehavior/axis.d.ts +3 -5
  383. package/dist/visualizationLayerBehavior/general.d.ts +8 -12
  384. package/dist/xy.js +6993 -0
  385. package/dist/xy.js.map +1 -0
  386. package/dist/xy.min.js +1 -0
  387. package/dist/xy.module.js +6957 -0
  388. package/dist/xy.module.js.map +1 -0
  389. package/dist/xy.module.min.js +1 -0
  390. package/package.json +123 -67
  391. package/dist/AnnotationLayer/helpers.d.ts +0 -6
  392. package/dist/AnnotationLayer/index.d.ts +0 -2
  393. package/dist/FacetController.d.ts +0 -12
  394. package/dist/Frame.d.ts +0 -2
  395. package/dist/InteractionLayer.d.ts +0 -3
  396. package/dist/Mark/Mark.d.ts +0 -3
  397. package/dist/Mark/Mark.types.d.ts +0 -10
  398. package/dist/Mark/constants/markTransition.d.ts +0 -10
  399. package/dist/Mark/markBehavior/drawing.d.ts +0 -13
  400. package/dist/MiniMap.d.ts +0 -14
  401. package/dist/MinimapXYFrame.d.ts +0 -10
  402. package/dist/NetworkFrame.d.ts +0 -4
  403. package/dist/OrdinalFrame.d.ts +0 -4
  404. package/dist/ResponsiveFrame.d.ts +0 -22
  405. package/dist/ResponsiveMinimapXYFrame.d.ts +0 -6
  406. package/dist/ResponsiveNetworkFrame.d.ts +0 -6
  407. package/dist/ResponsiveOrdinalFrame.d.ts +0 -6
  408. package/dist/ResponsiveXYFrame.d.ts +0 -6
  409. package/dist/SpanOrDiv.d.ts +0 -10
  410. package/dist/SparkFrame.d.ts +0 -14
  411. package/dist/SparkNetworkFrame.d.ts +0 -5
  412. package/dist/SparkOrdinalFrame.d.ts +0 -5
  413. package/dist/SparkXYFrame.d.ts +0 -5
  414. package/dist/VisualizationLayer.d.ts +0 -33
  415. package/dist/XYFrame.d.ts +0 -4
  416. package/dist/annotationRules/orframeRules.d.ts +0 -105
  417. package/dist/components/Annotation.d.ts +0 -3
  418. package/dist/components/AnnotationLayer/AnnotationLayer.d.ts +0 -26
  419. package/dist/components/Axis/Axis.d.ts +0 -7
  420. package/dist/components/Axis/axisTitle.d.ts +0 -10
  421. package/dist/components/Axis/index.d.ts +0 -2
  422. package/dist/components/Axis/summaryGraphic.d.ts +0 -17
  423. package/dist/components/Brush.d.ts +0 -12
  424. package/dist/components/DividedLine.d.ts +0 -16
  425. package/dist/components/FacetController.d.ts +0 -12
  426. package/dist/components/Frame.d.ts +0 -2
  427. package/dist/components/InteractionLayer.d.ts +0 -3
  428. package/dist/components/Legend.d.ts +0 -3
  429. package/dist/components/Mark/Mark.d.ts +0 -3
  430. package/dist/components/Mark/Mark.types.d.ts +0 -10
  431. package/dist/components/Mark/markBehavior/drawing.d.ts +0 -13
  432. package/dist/components/MiniMap.d.ts +0 -14
  433. package/dist/components/MinimapXYFrame.d.ts +0 -10
  434. package/dist/components/NetworkFrame.d.ts +0 -4
  435. package/dist/components/OrdinalFrame.d.ts +0 -4
  436. package/dist/components/ResponsiveFrame.d.ts +0 -22
  437. package/dist/components/ResponsiveMinimapXYFrame.d.ts +0 -6
  438. package/dist/components/ResponsiveNetworkFrame.d.ts +0 -6
  439. package/dist/components/ResponsiveOrdinalFrame.d.ts +0 -6
  440. package/dist/components/ResponsiveXYFrame.d.ts +0 -6
  441. package/dist/components/SpanOrDiv.d.ts +0 -10
  442. package/dist/components/SparkFrame.d.ts +0 -14
  443. package/dist/components/SparkNetworkFrame.d.ts +0 -5
  444. package/dist/components/SparkOrdinalFrame.d.ts +0 -5
  445. package/dist/components/SparkXYFrame.d.ts +0 -5
  446. package/dist/components/TooltipPositioner/index.d.ts +0 -7
  447. package/dist/components/VisualizationLayer.d.ts +0 -33
  448. package/dist/components/XYFrame.d.ts +0 -4
  449. package/dist/components/annotationLayerBehavior/annotationHandling.d.ts +0 -19
  450. package/dist/components/annotationLayerBehavior/d3labeler.d.ts +0 -9
  451. package/dist/components/annotationRules/baseRules.d.ts +0 -25
  452. package/dist/components/annotationRules/networkframeRules.d.ts +0 -48
  453. package/dist/components/annotationRules/orframeRules.d.ts +0 -105
  454. package/dist/components/annotationRules/xyframeRules.d.ts +0 -117
  455. package/dist/components/batchWork.d.ts +0 -6
  456. package/dist/components/constants/coordinateNames.d.ts +0 -8
  457. package/dist/components/constants/frame_props.d.ts +0 -4
  458. package/dist/components/constants/jsx.d.ts +0 -19
  459. package/dist/components/data/dataFunctions.d.ts +0 -46
  460. package/dist/components/data/multiAccessorUtils.d.ts +0 -1
  461. package/dist/components/data/unflowedFunctions.d.ts +0 -1
  462. package/dist/components/generic_utilities/functions.d.ts +0 -1
  463. package/dist/components/index.d.ts +0 -125
  464. package/dist/components/interactionLayerBehavior/InteractionCanvas.d.ts +0 -20
  465. package/dist/components/processing/InteractionItems.d.ts +0 -12
  466. package/dist/components/processing/network.d.ts +0 -114
  467. package/dist/components/processing/ordinal.d.ts +0 -102
  468. package/dist/components/processing/xyDrawing.d.ts +0 -135
  469. package/dist/components/semiotic.d.ts +0 -35
  470. package/dist/components/store/TooltipStore.d.ts +0 -2
  471. package/dist/components/store/createStore.d.ts +0 -1
  472. package/dist/components/svg/SvgHelper.d.ts +0 -37
  473. package/dist/components/svg/areaDrawing.d.ts +0 -31
  474. package/dist/components/svg/ckmeans.d.ts +0 -69
  475. package/dist/components/svg/frameFunctions.d.ts +0 -119
  476. package/dist/components/svg/lineDrawing.d.ts +0 -99
  477. package/dist/components/svg/networkDrawing.d.ts +0 -134
  478. package/dist/components/svg/pieceDrawing.d.ts +0 -13
  479. package/dist/components/svg/pieceLayouts.d.ts +0 -71
  480. package/dist/components/svg/summaryLayouts.d.ts +0 -74
  481. package/dist/components/types/annotationTypes.d.ts +0 -140
  482. package/dist/components/types/canvasTypes.d.ts +0 -9
  483. package/dist/components/types/generalTypes.d.ts +0 -236
  484. package/dist/components/types/interactionTypes.d.ts +0 -74
  485. package/dist/components/types/legendTypes.d.ts +0 -20
  486. package/dist/components/types/networkTypes.d.ts +0 -165
  487. package/dist/components/types/ordinalTypes.d.ts +0 -103
  488. package/dist/components/types/xyTypes.d.ts +0 -118
  489. package/dist/components/useBoundingRect.d.ts +0 -2
  490. package/dist/components/useDerivedStateFromProps.d.ts +0 -1
  491. package/dist/components/useLegacyUnmountCallback.d.ts +0 -1
  492. package/dist/components/visualizationLayerBehavior/axis.d.ts +0 -38
  493. package/dist/components/visualizationLayerBehavior/general.d.ts +0 -84
  494. package/dist/constants/jsx.d.ts +0 -19
  495. package/dist/interactionLayerBehavior/InteractionCanvas.d.ts +0 -20
  496. package/dist/processing/network.d.ts +0 -114
  497. package/dist/processing/ordinal.d.ts +0 -102
  498. package/dist/processing/xyDrawing.d.ts +0 -135
  499. package/dist/setupTests.d.ts +0 -1
  500. package/dist/svg/SvgHelper.d.ts +0 -37
  501. package/dist/svg/ckmeans.d.ts +0 -69
  502. package/dist/svg/frameFunctions.d.ts +0 -119
  503. package/dist/svg/networkDrawing.d.ts +0 -134
  504. package/dist/svg/pieceDrawing.d.ts +0 -13
  505. package/dist/svg/pieceLayouts.d.ts +0 -71
  506. package/dist/svg/summaryLayouts.d.ts +0 -74
  507. package/dist/useDerivedStateFromProps.d.ts +0 -1
  508. package/dist/useLegacyUnmountCallback.d.ts +0 -1
@@ -0,0 +1,235 @@
1
+ "use client";
2
+ "use strict";
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
36
+ var __importDefault = (this && this.__importDefault) || function (mod) {
37
+ return (mod && mod.__esModule) ? mod : { "default": mod };
38
+ };
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.Heatmap = Heatmap;
41
+ const React = __importStar(require("react"));
42
+ const react_1 = require("react");
43
+ const d3_scale_1 = require("d3-scale");
44
+ const d3_scale_chromatic_1 = require("d3-scale-chromatic");
45
+ const StreamXYFrame_1 = __importDefault(require("../../stream/StreamXYFrame"));
46
+ const hooks_1 = require("../shared/hooks");
47
+ const Tooltip_1 = require("../../Tooltip/Tooltip");
48
+ const tooltipUtils_1 = require("../shared/tooltipUtils");
49
+ const ChartError_1 = __importDefault(require("../shared/ChartError"));
50
+ const validateChartData_1 = require("../shared/validateChartData");
51
+ const selectionUtils_1 = require("../shared/selectionUtils");
52
+ const useSelection_1 = require("../../store/useSelection");
53
+ const useSelection_2 = require("../../store/useSelection");
54
+ /**
55
+ * Heatmap - Visualize matrix data with color-encoded cells
56
+ *
57
+ * A simplified wrapper around StreamXYFrame for creating heatmaps. Perfect for
58
+ * showing patterns, correlations, and distributions in 2D data.
59
+ *
60
+ * @example
61
+ * ```tsx
62
+ * // Simple heatmap
63
+ * <Heatmap
64
+ * data={[
65
+ * {x: 1, y: 1, value: 10},
66
+ * {x: 1, y: 2, value: 20},
67
+ * {x: 2, y: 1, value: 15},
68
+ * {x: 2, y: 2, value: 25}
69
+ * ]}
70
+ * xLabel="Time"
71
+ * yLabel="Category"
72
+ * />
73
+ * ```
74
+ *
75
+ * @example
76
+ * ```tsx
77
+ * // With custom color scheme and value labels
78
+ * <Heatmap
79
+ * data={data}
80
+ * colorScheme="viridis"
81
+ * showValues={true}
82
+ * valueFormat={d => d.toFixed(1)}
83
+ * />
84
+ * ```
85
+ *
86
+ * @example
87
+ * ```tsx
88
+ * // Advanced: Custom color scale
89
+ * <Heatmap
90
+ * data={data}
91
+ * colorScheme="custom"
92
+ * customColorScale={
93
+ * scaleSequential(interpolatePlasma).domain([0, 100])
94
+ * }
95
+ * />
96
+ * ```
97
+ *
98
+ * @remarks
99
+ * This component wraps {@link StreamXYFrame} with sensible defaults for heatmaps.
100
+ * For more advanced features like hexbins, contours, or custom summaries,
101
+ * use StreamXYFrame directly.
102
+ *
103
+ * **Breadcrumb to advanced usage:**
104
+ * - Use the `frameProps` prop to pass any StreamXYFrame prop
105
+ * - See StreamXYFrame documentation: https://semiotic.nteract.io/guides/xy-frame
106
+ * - All StreamXYFrame props are available via `frameProps`
107
+ *
108
+ * @param props - Heatmap configuration
109
+ * @returns Rendered heatmap
110
+ */
111
+ function Heatmap(props) {
112
+ const { data, width = 600, height = 400, margin = { top: 50, bottom: 60, left: 70, right: 80 }, className, title, xAccessor = "x", yAccessor = "y", valueAccessor = "value", xLabel, yLabel, xFormat, yFormat, colorScheme = "blues", customColorScale, showValues = false, valueFormat, cellBorderColor = "#fff", cellBorderWidth = 1, enableHover = true, tooltip, frameProps = {}, selection, linkedHover } = props;
113
+ const safeData = data || [];
114
+ // ── Selection hooks (always called, conditional logic inside) ──────────
115
+ const hoverConfig = (0, selectionUtils_1.normalizeLinkedHover)(linkedHover, []);
116
+ const selectionHook = (0, useSelection_1.useSelection)({
117
+ name: selection?.name || "__unused__",
118
+ fields: []
119
+ });
120
+ const linkedHoverHook = (0, useSelection_2.useLinkedHover)({
121
+ name: hoverConfig?.name || "hover",
122
+ fields: hoverConfig?.fields || []
123
+ });
124
+ // Only use the hooks when the corresponding props are provided
125
+ const activeSelectionHook = selection ? { isActive: selectionHook.isActive, predicate: selectionHook.predicate } : null;
126
+ // ── Core chart logic ───────────────────────────────────────────────────
127
+ // Get value accessor function
128
+ const getValueFn = (0, react_1.useMemo)(() => {
129
+ return typeof valueAccessor === "function"
130
+ ? (d) => valueAccessor(d)
131
+ : (d) => d[valueAccessor];
132
+ }, [valueAccessor]);
133
+ // Calculate value domain
134
+ const valueDomain = (0, react_1.useMemo)(() => {
135
+ const values = safeData.map(getValueFn);
136
+ return [Math.min(...values), Math.max(...values)];
137
+ }, [safeData, getValueFn]);
138
+ // Create color scale
139
+ const colorScale = (0, react_1.useMemo)(() => {
140
+ if (colorScheme === "custom" && customColorScale) {
141
+ return customColorScale;
142
+ }
143
+ const interpolators = {
144
+ blues: d3_scale_chromatic_1.interpolateBlues,
145
+ reds: d3_scale_chromatic_1.interpolateReds,
146
+ greens: d3_scale_chromatic_1.interpolateGreens,
147
+ viridis: d3_scale_chromatic_1.interpolateViridis
148
+ };
149
+ const interpolator = interpolators[colorScheme] || d3_scale_chromatic_1.interpolateBlues;
150
+ return (0, d3_scale_1.scaleSequential)(interpolator).domain(valueDomain);
151
+ }, [colorScheme, customColorScale, valueDomain]);
152
+ // Get unique x and y values for bin sizing
153
+ const { xBinCount, yBinCount } = (0, react_1.useMemo)(() => {
154
+ const getX = (0, hooks_1.resolveAccessor)(xAccessor);
155
+ const getY = (0, hooks_1.resolveAccessor)(yAccessor);
156
+ return {
157
+ xBinCount: new Set(safeData.map(getX)).size,
158
+ yBinCount: new Set(safeData.map(getY)).size
159
+ };
160
+ }, [safeData, xAccessor, yAccessor]);
161
+ // Transform data to summary format for StreamXYFrame
162
+ const summaryData = (0, react_1.useMemo)(() => {
163
+ return { coordinates: safeData };
164
+ }, [safeData]);
165
+ // Summary style function
166
+ const baseSummaryStyle = (0, react_1.useMemo)(() => {
167
+ return (d) => {
168
+ const value = getValueFn(d);
169
+ return {
170
+ fill: colorScale(value),
171
+ stroke: cellBorderColor,
172
+ strokeWidth: cellBorderWidth
173
+ };
174
+ };
175
+ }, [getValueFn, colorScale, cellBorderColor, cellBorderWidth]);
176
+ const summaryStyle = (0, react_1.useMemo)(() => (0, selectionUtils_1.wrapStyleWithSelection)(baseSummaryStyle, activeSelectionHook, selection), [baseSummaryStyle, activeSelectionHook, selection]);
177
+ // Summary render function (for value labels)
178
+ const summaryRenderMode = (0, react_1.useMemo)(() => {
179
+ if (!showValues)
180
+ return undefined;
181
+ const midpoint = (valueDomain[0] + valueDomain[1]) / 2;
182
+ return (d, i) => {
183
+ const value = getValueFn(d);
184
+ const displayValue = valueFormat ? valueFormat(value) : String(value);
185
+ return (React.createElement("text", { textAnchor: "middle", dominantBaseline: "middle", fill: getValueFn(d) > midpoint ? "#fff" : "#000", fontSize: "12px" }, displayValue));
186
+ };
187
+ }, [showValues, getValueFn, valueFormat, valueDomain]);
188
+ // ── Hover behavior ─────────────────────────────────────────────────────
189
+ const customHoverBehavior = (0, react_1.useCallback)((d) => {
190
+ if (linkedHover) {
191
+ linkedHoverHook.onHover(d);
192
+ }
193
+ }, [linkedHover, linkedHoverHook]);
194
+ // Default tooltip showing x, y, and value
195
+ const defaultTooltipContent = (0, react_1.useMemo)(() => (0, tooltipUtils_1.buildDefaultTooltip)([
196
+ { label: xLabel || (0, tooltipUtils_1.accessorName)(xAccessor), accessor: xAccessor, role: "x" },
197
+ { label: yLabel || (0, tooltipUtils_1.accessorName)(yAccessor), accessor: yAccessor, role: "y" },
198
+ { label: (0, tooltipUtils_1.accessorName)(valueAccessor), accessor: valueAccessor, role: "value" },
199
+ ]), [xAccessor, yAccessor, xLabel, yLabel, valueAccessor]);
200
+ // Validate data (after all hooks)
201
+ const error = (0, validateChartData_1.validateArrayData)({
202
+ componentName: "Heatmap",
203
+ data: safeData,
204
+ accessors: {
205
+ xAccessor,
206
+ yAccessor,
207
+ valueAccessor,
208
+ },
209
+ });
210
+ if (error)
211
+ return React.createElement(ChartError_1.default, { componentName: "Heatmap", message: error, width: width, height: height });
212
+ // Build StreamXYFrame props
213
+ const streamProps = {
214
+ chartType: "heatmap",
215
+ data: safeData,
216
+ xAccessor,
217
+ yAccessor,
218
+ valueAccessor,
219
+ size: [width, height],
220
+ margin,
221
+ showAxes: true,
222
+ xLabel,
223
+ yLabel,
224
+ xFormat,
225
+ yFormat,
226
+ enableHover,
227
+ ...(title && { title }),
228
+ ...(className && { className }),
229
+ tooltipContent: (tooltip ? (0, Tooltip_1.normalizeTooltip)(tooltip) : defaultTooltipContent),
230
+ ...(linkedHover && { customHoverBehavior }),
231
+ ...frameProps
232
+ };
233
+ return React.createElement(StreamXYFrame_1.default, { ...streamProps });
234
+ }
235
+ Heatmap.displayName = "Heatmap";
@@ -0,0 +1,307 @@
1
+ "use client";
2
+ "use strict";
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
36
+ var __importDefault = (this && this.__importDefault) || function (mod) {
37
+ return (mod && mod.__esModule) ? mod : { "default": mod };
38
+ };
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.LineChart = LineChart;
41
+ const React = __importStar(require("react"));
42
+ const react_1 = require("react");
43
+ const StreamXYFrame_1 = __importDefault(require("../../stream/StreamXYFrame"));
44
+ const colorUtils_1 = require("../shared/colorUtils");
45
+ const hooks_1 = require("../shared/hooks");
46
+ const legendUtils_1 = require("../shared/legendUtils");
47
+ const Tooltip_1 = require("../../Tooltip/Tooltip");
48
+ const tooltipUtils_1 = require("../shared/tooltipUtils");
49
+ const ChartError_1 = __importDefault(require("../shared/ChartError"));
50
+ const validateChartData_1 = require("../shared/validateChartData");
51
+ const selectionUtils_1 = require("../shared/selectionUtils");
52
+ const useSelection_1 = require("../../store/useSelection");
53
+ const useSelection_2 = require("../../store/useSelection");
54
+ /**
55
+ * LineChart - Visualize trends and time series data with lines
56
+ *
57
+ * A simplified wrapper around StreamXYFrame for creating line charts. Perfect for
58
+ * showing trends, comparisons, and temporal patterns in your data.
59
+ *
60
+ * @example
61
+ * ```tsx
62
+ * // Simple line chart
63
+ * <LineChart
64
+ * data={[
65
+ * {x: 1, y: 10},
66
+ * {x: 2, y: 20},
67
+ * {x: 3, y: 15}
68
+ * ]}
69
+ * xLabel="Time"
70
+ * yLabel="Value"
71
+ * />
72
+ * ```
73
+ *
74
+ * @example
75
+ * ```tsx
76
+ * // Multiple lines with grouping
77
+ * <LineChart
78
+ * data={[
79
+ * {x: 1, y: 10, series: 'A'},
80
+ * {x: 2, y: 20, series: 'A'},
81
+ * {x: 1, y: 15, series: 'B'},
82
+ * {x: 2, y: 25, series: 'B'}
83
+ * ]}
84
+ * lineBy="series"
85
+ * colorBy="series"
86
+ * xLabel="Time"
87
+ * yLabel="Value"
88
+ * />
89
+ * ```
90
+ *
91
+ * @example
92
+ * ```tsx
93
+ * // Area chart with custom curve
94
+ * <LineChart
95
+ * data={data}
96
+ * curve="monotoneX"
97
+ * fillArea={true}
98
+ * areaOpacity={0.3}
99
+ * showPoints={true}
100
+ * />
101
+ * ```
102
+ *
103
+ * @example
104
+ * ```tsx
105
+ * // Advanced: Override StreamXYFrame props
106
+ * <LineChart
107
+ * data={data}
108
+ * frameProps={{
109
+ * lineType: { type: "line", interpolator: d3.curveCardinal },
110
+ * customLineMark: ({ d }) => <path stroke="red" />
111
+ * }}
112
+ * />
113
+ * ```
114
+ *
115
+ * @remarks
116
+ * This component wraps {@link StreamXYFrame} with sensible defaults for line charts.
117
+ * For more advanced features like custom marks, annotations, or complex interactions,
118
+ * use StreamXYFrame directly.
119
+ *
120
+ * **Breadcrumb to advanced usage:**
121
+ * - Use the `frameProps` prop to pass any StreamXYFrame prop
122
+ * - See StreamXYFrame documentation: https://semiotic.nteract.io/guides/xy-frame
123
+ * - All StreamXYFrame props are available via `frameProps`
124
+ *
125
+ * @param props - LineChart configuration
126
+ * @returns Rendered line chart
127
+ */
128
+ function LineChart(props) {
129
+ const { data, width = 600, height = 400, margin: userMargin, className, title, xLabel, yLabel, xFormat, yFormat, xAccessor = "x", yAccessor = "y", lineBy, lineDataAccessor = "coordinates", colorBy, colorScheme = "category10", curve = "linear", showPoints = false, pointRadius = 3, fillArea = false, areaOpacity = 0.3, lineWidth = 2, enableHover = true, showGrid = false, showLegend, tooltip, frameProps = {}, selection, linkedHover } = props;
130
+ const safeData = data || [];
131
+ // ── Selection hooks (always called, conditional logic inside) ──────────
132
+ const hoverConfig = (0, selectionUtils_1.normalizeLinkedHover)(linkedHover, colorBy ? [typeof colorBy === "string" ? colorBy : ""] : []);
133
+ const selectionHook = (0, useSelection_1.useSelection)({
134
+ name: selection?.name || "__unused__",
135
+ fields: []
136
+ });
137
+ const linkedHoverHook = (0, useSelection_2.useLinkedHover)({
138
+ name: hoverConfig?.name || "hover",
139
+ fields: hoverConfig?.fields || []
140
+ });
141
+ // Only use the hooks when the corresponding props are provided
142
+ const activeSelectionHook = selection ? { isActive: selectionHook.isActive, predicate: selectionHook.predicate } : null;
143
+ // ── Core chart logic ───────────────────────────────────────────────────
144
+ // Check if data is in line objects format (has lineDataAccessor field)
145
+ const isLineObjectFormat = safeData[0]?.[lineDataAccessor] !== undefined;
146
+ // Transform data to line format if needed
147
+ const lineData = (0, react_1.useMemo)(() => {
148
+ if (isLineObjectFormat) {
149
+ // Data is already in line objects format
150
+ return safeData;
151
+ }
152
+ if (lineBy) {
153
+ // Group data by lineBy field
154
+ const grouped = safeData.reduce((acc, d) => {
155
+ const key = typeof lineBy === "function" ? lineBy(d) : d[lineBy];
156
+ if (!acc[key]) {
157
+ const lineObj = { [lineDataAccessor]: [] };
158
+ // Add the grouping field
159
+ if (typeof lineBy === "string") {
160
+ lineObj[lineBy] = key;
161
+ }
162
+ acc[key] = lineObj;
163
+ }
164
+ acc[key][lineDataAccessor].push(d);
165
+ return acc;
166
+ }, {});
167
+ return Object.values(grouped);
168
+ }
169
+ // Single line - wrap in line object
170
+ return [{ [lineDataAccessor]: safeData }];
171
+ }, [safeData, lineBy, lineDataAccessor, isLineObjectFormat]);
172
+ // Create color scale if colorBy is specified
173
+ const colorScale = (0, hooks_1.useColorScale)(safeData, colorBy, colorScheme);
174
+ // Line style function
175
+ const baseLineStyle = (0, react_1.useMemo)(() => {
176
+ return (d) => {
177
+ const baseStyle = {
178
+ strokeWidth: lineWidth
179
+ };
180
+ // Apply color
181
+ if (colorBy) {
182
+ baseStyle.stroke = (0, colorUtils_1.getColor)(d, colorBy, colorScale);
183
+ }
184
+ else {
185
+ baseStyle.stroke = hooks_1.DEFAULT_COLOR;
186
+ }
187
+ // Apply fill for area chart
188
+ if (fillArea) {
189
+ baseStyle.fill = baseStyle.stroke;
190
+ baseStyle.fillOpacity = areaOpacity;
191
+ }
192
+ return baseStyle;
193
+ };
194
+ }, [colorBy, colorScale, lineWidth, fillArea, areaOpacity]);
195
+ const lineStyle = (0, react_1.useMemo)(() => (0, selectionUtils_1.wrapStyleWithSelection)(baseLineStyle, activeSelectionHook, selection), [baseLineStyle, activeSelectionHook, selection]);
196
+ // Point style function (if showPoints is true)
197
+ const pointStyle = (0, react_1.useMemo)(() => {
198
+ if (!showPoints)
199
+ return undefined;
200
+ return (d) => {
201
+ const baseStyle = {
202
+ r: pointRadius,
203
+ fillOpacity: 1
204
+ };
205
+ // Match line color
206
+ if (colorBy) {
207
+ baseStyle.fill = (0, colorUtils_1.getColor)(d.parentLine || d, colorBy, colorScale);
208
+ }
209
+ else {
210
+ baseStyle.fill = hooks_1.DEFAULT_COLOR;
211
+ }
212
+ return baseStyle;
213
+ };
214
+ }, [showPoints, pointRadius, colorBy, colorScale]);
215
+ // Determine chart type for StreamXYFrame
216
+ const chartType = fillArea ? "area" : "line";
217
+ // Determine if we should show legend
218
+ const shouldShowLegend = showLegend !== undefined ? showLegend : lineData.length > 1;
219
+ // Build legend if needed
220
+ const legend = (0, react_1.useMemo)(() => {
221
+ if (!shouldShowLegend || !colorBy)
222
+ return undefined;
223
+ return (0, legendUtils_1.createLegend)({
224
+ data: lineData,
225
+ colorBy,
226
+ colorScale,
227
+ getColor: colorUtils_1.getColor
228
+ });
229
+ }, [shouldShowLegend, colorBy, lineData, colorScale]);
230
+ // Adjust margin for legend if present
231
+ const margin = (0, react_1.useMemo)(() => {
232
+ const defaultMargin = { top: 50, bottom: 60, left: 70, right: 40 };
233
+ const finalMargin = { ...defaultMargin, ...userMargin };
234
+ // If legend is present and right margin is too small, increase it
235
+ if (legend && finalMargin.right < 120) {
236
+ finalMargin.right = 120;
237
+ }
238
+ return finalMargin;
239
+ }, [userMargin, legend]);
240
+ // ── Hover behavior ─────────────────────────────────────────────────────
241
+ const customHoverBehavior = (0, react_1.useCallback)((d) => {
242
+ if (linkedHover) {
243
+ linkedHoverHook.onHover(d);
244
+ }
245
+ }, [linkedHover, linkedHoverHook]);
246
+ // Default tooltip showing all configured fields
247
+ const groupField = lineBy || colorBy;
248
+ const defaultTooltipContent = (0, react_1.useMemo)(() => (0, tooltipUtils_1.buildDefaultTooltip)([
249
+ { label: xLabel || (0, tooltipUtils_1.accessorName)(xAccessor), accessor: xAccessor, role: "x" },
250
+ { label: yLabel || (0, tooltipUtils_1.accessorName)(yAccessor), accessor: yAccessor, role: "y" },
251
+ ...(groupField ? [{ label: (0, tooltipUtils_1.accessorName)(groupField), accessor: groupField, role: "group" }] : []),
252
+ ]), [xAccessor, yAccessor, xLabel, yLabel, groupField]);
253
+ // Validate data (after all hooks)
254
+ const error = (0, validateChartData_1.validateArrayData)({
255
+ componentName: "LineChart",
256
+ data: safeData,
257
+ accessors: {
258
+ xAccessor,
259
+ yAccessor,
260
+ },
261
+ });
262
+ if (error)
263
+ return React.createElement(ChartError_1.default, { componentName: "LineChart", message: error, width: width, height: height });
264
+ // Flatten line data into a single array for StreamXYFrame
265
+ const flattenedData = (0, react_1.useMemo)(() => {
266
+ if (isLineObjectFormat || lineBy) {
267
+ // Already grouped into line objects — flatten coordinates out
268
+ return lineData.flatMap((line) => {
269
+ const coords = line[lineDataAccessor] || [];
270
+ // Carry grouping field onto each datum
271
+ if (lineBy && typeof lineBy === "string") {
272
+ return coords.map((c) => ({ ...c, [lineBy]: line[lineBy] }));
273
+ }
274
+ return coords;
275
+ });
276
+ }
277
+ return safeData;
278
+ }, [lineData, lineDataAccessor, isLineObjectFormat, lineBy, safeData]);
279
+ // Build StreamXYFrame props
280
+ const streamProps = {
281
+ chartType,
282
+ data: flattenedData,
283
+ xAccessor,
284
+ yAccessor,
285
+ groupAccessor: lineBy || undefined,
286
+ curve,
287
+ lineStyle,
288
+ ...(showPoints && { pointStyle }),
289
+ size: [width, height],
290
+ margin,
291
+ showAxes: true,
292
+ xLabel,
293
+ yLabel,
294
+ xFormat,
295
+ yFormat,
296
+ enableHover,
297
+ showGrid,
298
+ ...(legend && { legend }),
299
+ ...(title && { title }),
300
+ ...(className && { className }),
301
+ tooltipContent: (tooltip ? (0, Tooltip_1.normalizeTooltip)(tooltip) : defaultTooltipContent),
302
+ ...(linkedHover && { customHoverBehavior }),
303
+ ...frameProps
304
+ };
305
+ return React.createElement(StreamXYFrame_1.default, { ...streamProps });
306
+ }
307
+ LineChart.displayName = "LineChart";