semiotic 2.0.3 → 3.0.0-beta.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 (424) hide show
  1. package/CLAUDE.md +530 -0
  2. package/README.md +190 -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 +373 -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/DividedLine.js +65 -0
  15. package/ai/dist/src/components/FacetController.js +259 -0
  16. package/ai/dist/src/components/Frame.js +139 -0
  17. package/ai/dist/src/components/InteractionLayer.js +328 -0
  18. package/ai/dist/src/components/Legend.js +140 -0
  19. package/ai/dist/src/components/MiniMap.js +75 -0
  20. package/ai/dist/src/components/MinimapXYFrame.js +99 -0
  21. package/ai/dist/src/components/NetworkFrame.js +335 -0
  22. package/ai/dist/src/components/OrdinalFrame.js +437 -0
  23. package/ai/dist/src/components/ResponsiveFrame.js +68 -0
  24. package/ai/dist/src/components/ResponsiveMinimapXYFrame.js +11 -0
  25. package/ai/dist/src/components/ResponsiveNetworkFrame.js +11 -0
  26. package/ai/dist/src/components/ResponsiveOrdinalFrame.js +11 -0
  27. package/ai/dist/src/components/ResponsiveXYFrame.js +10 -0
  28. package/ai/dist/src/components/SparkFrame.js +113 -0
  29. package/ai/dist/src/components/SparkNetworkFrame.js +11 -0
  30. package/ai/dist/src/components/SparkOrdinalFrame.js +11 -0
  31. package/ai/dist/src/components/SparkXYFrame.js +11 -0
  32. package/ai/dist/src/components/Tooltip/Tooltip.js +304 -0
  33. package/ai/dist/src/components/TooltipPositioner/index.js +132 -0
  34. package/ai/dist/src/components/VisualizationLayer.js +395 -0
  35. package/ai/dist/src/components/XYFrame.js +524 -0
  36. package/ai/dist/src/components/annotationLayerBehavior/annotationHandling.js +73 -0
  37. package/ai/dist/src/components/annotationLayerBehavior/d3labeler.js +254 -0
  38. package/ai/dist/src/components/annotationRules/baseRules.js +150 -0
  39. package/ai/dist/src/components/annotationRules/networkframeRules.js +198 -0
  40. package/ai/dist/src/components/annotationRules/orframeRules.js +695 -0
  41. package/ai/dist/src/components/annotationRules/xyframeRules.js +299 -0
  42. package/ai/dist/src/components/batchWork.js +35 -0
  43. package/ai/dist/src/components/charts/index.js +96 -0
  44. package/ai/dist/src/components/charts/network/ChordDiagram.js +245 -0
  45. package/ai/dist/src/components/charts/network/CirclePack.js +177 -0
  46. package/ai/dist/src/components/charts/network/ForceDirectedGraph.js +248 -0
  47. package/ai/dist/src/components/charts/network/SankeyDiagram.js +305 -0
  48. package/ai/dist/src/components/charts/network/TreeDiagram.js +268 -0
  49. package/ai/dist/src/components/charts/network/Treemap.js +177 -0
  50. package/ai/dist/src/components/charts/ordinal/BarChart.js +191 -0
  51. package/ai/dist/src/components/charts/ordinal/BoxPlot.js +235 -0
  52. package/ai/dist/src/components/charts/ordinal/DonutChart.js +178 -0
  53. package/ai/dist/src/components/charts/ordinal/DotPlot.js +194 -0
  54. package/ai/dist/src/components/charts/ordinal/GroupedBarChart.js +194 -0
  55. package/ai/dist/src/components/charts/ordinal/PieChart.js +155 -0
  56. package/ai/dist/src/components/charts/ordinal/StackedBarChart.js +213 -0
  57. package/ai/dist/src/components/charts/ordinal/SwarmPlot.js +219 -0
  58. package/ai/dist/src/components/charts/realtime/RealtimeBarChart.js +91 -0
  59. package/ai/dist/src/components/charts/realtime/RealtimeLineChart.js +73 -0
  60. package/ai/dist/src/components/charts/realtime/RealtimeSwarmChart.js +85 -0
  61. package/ai/dist/src/components/charts/realtime/RealtimeWaterfallChart.js +86 -0
  62. package/ai/dist/src/components/charts/shared/ChartError.js +72 -0
  63. package/ai/dist/src/components/charts/shared/colorUtils.js +138 -0
  64. package/ai/dist/src/components/charts/shared/formatUtils.js +176 -0
  65. package/ai/dist/src/components/charts/shared/hooks.js +49 -0
  66. package/ai/dist/src/components/charts/shared/legendUtils.js +57 -0
  67. package/ai/dist/src/components/charts/shared/types.js +2 -0
  68. package/ai/dist/src/components/charts/shared/validateChartData.js +82 -0
  69. package/ai/dist/src/components/charts/shared/validateProps.js +640 -0
  70. package/ai/dist/src/components/charts/xy/AreaChart.js +220 -0
  71. package/ai/dist/src/components/charts/xy/BubbleChart.js +222 -0
  72. package/ai/dist/src/components/charts/xy/Heatmap.js +230 -0
  73. package/ai/dist/src/components/charts/xy/LineChart.js +302 -0
  74. package/ai/dist/src/components/charts/xy/Scatterplot.js +136 -0
  75. package/ai/dist/src/components/charts/xy/StackedAreaChart.js +220 -0
  76. package/ai/dist/src/components/constants/coordinateNames.js +11 -0
  77. package/ai/dist/src/components/constants/frame_props.js +251 -0
  78. package/ai/dist/src/components/constants/jsx.js +71 -0
  79. package/ai/dist/src/components/data/dataFunctions.js +473 -0
  80. package/ai/dist/src/components/data/multiAccessorUtils.js +14 -0
  81. package/ai/dist/src/components/data/networkPipelineCache.js +43 -0
  82. package/ai/dist/src/components/data/ordinalPipelineCache.js +53 -0
  83. package/ai/dist/src/components/data/unflowedFunctions.js +5 -0
  84. package/ai/dist/src/components/data/xyPipelineCache.js +49 -0
  85. package/ai/dist/src/components/generic_utilities/functions.js +5 -0
  86. package/ai/dist/src/components/index.js +145 -0
  87. package/ai/dist/src/components/interactionLayerBehavior/InteractionCanvas.js +128 -0
  88. package/ai/dist/src/components/processing/InteractionItems.js +223 -0
  89. package/ai/dist/src/components/processing/hierarchyUtils.js +104 -0
  90. package/ai/dist/src/components/processing/layouts/chordLayout.js +58 -0
  91. package/ai/dist/src/components/processing/layouts/forceLayout.js +142 -0
  92. package/ai/dist/src/components/processing/layouts/hierarchyLayout.js +31 -0
  93. package/ai/dist/src/components/processing/layouts/index.js +32 -0
  94. package/ai/dist/src/components/processing/layouts/sankeyLayout.js +96 -0
  95. package/ai/dist/src/components/processing/layouts/simpleLayouts.js +34 -0
  96. package/ai/dist/src/components/processing/layouts/types.js +2 -0
  97. package/ai/dist/src/components/processing/network.js +771 -0
  98. package/ai/dist/src/components/processing/networkDefaults.js +39 -0
  99. package/ai/dist/src/components/processing/networkLayoutHelpers.js +98 -0
  100. package/ai/dist/src/components/processing/ordinal.js +889 -0
  101. package/ai/dist/src/components/processing/ordinalConstants.js +23 -0
  102. package/ai/dist/src/components/processing/ordinalOverlays.js +88 -0
  103. package/ai/dist/src/components/processing/ordinalRenderPipeline.js +196 -0
  104. package/ai/dist/src/components/processing/xyDrawing.js +484 -0
  105. package/ai/dist/src/components/realtime/BinAccumulator.js +36 -0
  106. package/ai/dist/src/components/realtime/IncrementalExtent.js +55 -0
  107. package/ai/dist/src/components/realtime/RealtimeFrame.js +710 -0
  108. package/ai/dist/src/components/realtime/RingBuffer.js +104 -0
  109. package/ai/dist/src/components/realtime/renderers/barRenderer.js +133 -0
  110. package/ai/dist/src/components/realtime/renderers/candlestickRenderer.js +7 -0
  111. package/ai/dist/src/components/realtime/renderers/lineRenderer.js +164 -0
  112. package/ai/dist/src/components/realtime/renderers/swarmRenderer.js +91 -0
  113. package/ai/dist/src/components/realtime/renderers/types.js +2 -0
  114. package/ai/dist/src/components/realtime/renderers/waterfallRenderer.js +163 -0
  115. package/ai/dist/src/components/realtime/types.js +2 -0
  116. package/ai/dist/src/components/semiotic-ai.js +66 -0
  117. package/ai/dist/src/components/semiotic-network.js +30 -0
  118. package/ai/dist/src/components/semiotic-ordinal.js +28 -0
  119. package/ai/dist/src/components/semiotic-realtime.js +37 -0
  120. package/ai/dist/src/components/semiotic-server.js +8 -0
  121. package/ai/dist/src/components/semiotic-xy.js +41 -0
  122. package/ai/dist/src/components/semiotic.js +101 -0
  123. package/ai/dist/src/components/server/renderToStaticSVG.js +392 -0
  124. package/ai/dist/src/components/store/TooltipStore.js +13 -0
  125. package/ai/dist/src/components/store/createStore.js +77 -0
  126. package/ai/dist/src/components/svg/SvgHelper.js +308 -0
  127. package/ai/dist/src/components/svg/areaDrawing.js +312 -0
  128. package/ai/dist/src/components/svg/boxplotRenderer.js +441 -0
  129. package/ai/dist/src/components/svg/bucketizedRenderer.js +677 -0
  130. package/ai/dist/src/components/svg/ckbinsRenderer.js +92 -0
  131. package/ai/dist/src/components/svg/ckmeans.js +238 -0
  132. package/ai/dist/src/components/svg/contourLayout.js +73 -0
  133. package/ai/dist/src/components/svg/contourRenderer.js +53 -0
  134. package/ai/dist/src/components/svg/edgeGenerators.js +181 -0
  135. package/ai/dist/src/components/svg/frameFunctions.js +579 -0
  136. package/ai/dist/src/components/svg/graphAlgorithms.js +138 -0
  137. package/ai/dist/src/components/svg/hexbinLayout.js +163 -0
  138. package/ai/dist/src/components/svg/lineDrawing.js +427 -0
  139. package/ai/dist/src/components/svg/networkDrawing.js +207 -0
  140. package/ai/dist/src/components/svg/nodeGenerators.js +131 -0
  141. package/ai/dist/src/components/svg/pieceDrawing.js +110 -0
  142. package/ai/dist/src/components/svg/pieceLayouts.js +588 -0
  143. package/ai/dist/src/components/svg/sankeyLinks.js +143 -0
  144. package/ai/dist/src/components/svg/summaryAxis.js +48 -0
  145. package/ai/dist/src/components/svg/summaryLayouts.js +202 -0
  146. package/ai/dist/src/components/svg/swarmLayout.js +128 -0
  147. package/ai/dist/src/components/types/annotationTypes.js +2 -0
  148. package/ai/dist/src/components/types/canvasTypes.js +2 -0
  149. package/ai/dist/src/components/types/generalTypes.js +2 -0
  150. package/ai/dist/src/components/types/interactionTypes.js +2 -0
  151. package/ai/dist/src/components/types/legendTypes.js +2 -0
  152. package/ai/dist/src/components/types/networkTypes.js +2 -0
  153. package/ai/dist/src/components/types/ordinalTypes.js +2 -0
  154. package/ai/dist/src/components/types/xyTypes.js +2 -0
  155. package/ai/dist/src/components/useBoundingRect.js +24 -0
  156. package/ai/dist/src/components/useDerivedStateFromProps.js +25 -0
  157. package/ai/dist/src/components/useLegacyUnmountCallback.js +21 -0
  158. package/ai/dist/src/components/visualizationLayerBehavior/axis.js +249 -0
  159. package/ai/dist/src/components/visualizationLayerBehavior/general.js +435 -0
  160. package/ai/dist/src/setupTests.js +4 -0
  161. package/ai/examples.md +394 -0
  162. package/ai/schema.json +1178 -0
  163. package/ai/system-prompt.md +38 -0
  164. package/dist/AnnotationLayer/AnnotationLayer.d.ts +0 -1
  165. package/dist/Axis/axisTitle.d.ts +3 -3
  166. package/dist/Axis/summaryGraphic.d.ts +1 -1
  167. package/dist/FacetController.d.ts +1 -1
  168. package/dist/MinimapXYFrame.d.ts +2 -2
  169. package/dist/NetworkFrame.d.ts +5 -1
  170. package/dist/OrdinalFrame.d.ts +5 -1
  171. package/dist/ResponsiveFrame.d.ts +2 -2
  172. package/dist/ResponsiveMinimapXYFrame.d.ts +3 -6
  173. package/dist/ResponsiveNetworkFrame.d.ts +3 -6
  174. package/dist/ResponsiveOrdinalFrame.d.ts +3 -6
  175. package/dist/ResponsiveXYFrame.d.ts +3 -6
  176. package/dist/SparkFrame.d.ts +1 -1
  177. package/dist/SparkNetworkFrame.d.ts +3 -3
  178. package/dist/SparkOrdinalFrame.d.ts +3 -3
  179. package/dist/SparkXYFrame.d.ts +3 -3
  180. package/dist/Tooltip/Tooltip.d.ts +141 -0
  181. package/dist/TooltipPositioner/index.d.ts +1 -1
  182. package/dist/VisualizationLayer.d.ts +3 -3
  183. package/dist/XYFrame.d.ts +5 -1
  184. package/dist/annotationLayerBehavior/annotationHandling.d.ts +2 -2
  185. package/dist/annotationRules/networkframeRules.d.ts +2 -2
  186. package/dist/annotationRules/orframeRules.d.ts +2 -4
  187. package/dist/annotationRules/xyframeRules.d.ts +2 -2
  188. package/dist/batchWork.d.ts +1 -1
  189. package/dist/charts/index.d.ts +62 -0
  190. package/dist/charts/network/ChordDiagram.d.ts +181 -0
  191. package/dist/charts/network/CirclePack.d.ts +103 -0
  192. package/dist/charts/network/ForceDirectedGraph.d.ts +192 -0
  193. package/dist/charts/network/SankeyDiagram.d.ts +195 -0
  194. package/dist/charts/network/TreeDiagram.d.ts +200 -0
  195. package/dist/charts/network/Treemap.d.ts +98 -0
  196. package/dist/charts/ordinal/BarChart.d.ts +119 -0
  197. package/dist/charts/ordinal/BoxPlot.d.ts +125 -0
  198. package/dist/charts/ordinal/DonutChart.d.ts +95 -0
  199. package/dist/charts/ordinal/DotPlot.d.ts +128 -0
  200. package/dist/charts/ordinal/GroupedBarChart.d.ts +113 -0
  201. package/dist/charts/ordinal/PieChart.d.ts +83 -0
  202. package/dist/charts/ordinal/StackedBarChart.d.ts +119 -0
  203. package/dist/charts/ordinal/SwarmPlot.d.ts +137 -0
  204. package/dist/charts/realtime/RealtimeBarChart.d.ts +102 -0
  205. package/dist/charts/realtime/RealtimeLineChart.d.ts +78 -0
  206. package/dist/charts/realtime/RealtimeSwarmChart.d.ts +88 -0
  207. package/dist/charts/realtime/RealtimeWaterfallChart.d.ts +85 -0
  208. package/dist/charts/shared/ChartError.d.ts +19 -0
  209. package/dist/charts/shared/colorUtils.d.ts +62 -0
  210. package/dist/charts/shared/formatUtils.d.ts +82 -0
  211. package/dist/charts/shared/hooks.d.ts +20 -0
  212. package/dist/charts/shared/legendUtils.d.ts +32 -0
  213. package/dist/charts/shared/types.d.ts +58 -0
  214. package/dist/charts/shared/validateChartData.d.ts +41 -0
  215. package/dist/charts/shared/validateProps.d.ts +18 -0
  216. package/dist/charts/xy/AreaChart.d.ts +127 -0
  217. package/dist/charts/xy/BubbleChart.d.ts +157 -0
  218. package/dist/charts/xy/Heatmap.d.ts +153 -0
  219. package/dist/charts/xy/LineChart.d.ts +193 -0
  220. package/dist/charts/xy/Scatterplot.d.ts +50 -0
  221. package/dist/charts/xy/StackedAreaChart.d.ts +131 -0
  222. package/dist/constants/frame_props.d.ts +9 -0
  223. package/dist/constants/jsx.d.ts +2 -2
  224. package/dist/data/dataFunctions.d.ts +11 -12
  225. package/dist/data/networkPipelineCache.d.ts +27 -0
  226. package/dist/data/ordinalPipelineCache.d.ts +33 -0
  227. package/dist/data/xyPipelineCache.d.ts +35 -0
  228. package/dist/index.d.ts +70 -62
  229. package/dist/interactionLayerBehavior/InteractionCanvas.d.ts +1 -1
  230. package/dist/network.js +8520 -0
  231. package/dist/network.js.map +1 -0
  232. package/dist/network.min.js +1 -0
  233. package/dist/network.module.js +8484 -0
  234. package/dist/network.module.js.map +1 -0
  235. package/dist/network.module.min.js +1 -0
  236. package/dist/ordinal.js +9276 -0
  237. package/dist/ordinal.js.map +1 -0
  238. package/dist/ordinal.min.js +1 -0
  239. package/dist/ordinal.module.js +9242 -0
  240. package/dist/ordinal.module.js.map +1 -0
  241. package/dist/ordinal.module.min.js +1 -0
  242. package/dist/processing/InteractionItems.d.ts +5 -4
  243. package/dist/processing/hierarchyUtils.d.ts +16 -0
  244. package/dist/processing/layouts/chordLayout.d.ts +2 -0
  245. package/dist/processing/layouts/forceLayout.d.ts +3 -0
  246. package/dist/processing/layouts/hierarchyLayout.d.ts +10 -0
  247. package/dist/processing/layouts/index.d.ts +8 -0
  248. package/dist/processing/layouts/sankeyLayout.d.ts +8 -0
  249. package/dist/processing/layouts/simpleLayouts.d.ts +7 -0
  250. package/dist/processing/layouts/types.d.ts +17 -0
  251. package/dist/processing/network.d.ts +25 -28
  252. package/dist/processing/networkDefaults.d.ts +36 -0
  253. package/dist/processing/networkLayoutHelpers.d.ts +54 -0
  254. package/dist/processing/ordinal.d.ts +43 -43
  255. package/dist/processing/ordinalConstants.d.ts +33 -0
  256. package/dist/processing/ordinalOverlays.d.ts +33 -0
  257. package/dist/processing/ordinalRenderPipeline.d.ts +148 -0
  258. package/dist/processing/xyDrawing.d.ts +46 -41
  259. package/dist/realtime/BinAccumulator.d.ts +8 -0
  260. package/dist/realtime/IncrementalExtent.d.ts +13 -0
  261. package/dist/realtime/RealtimeFrame.d.ts +4 -0
  262. package/dist/realtime/RingBuffer.d.ts +19 -0
  263. package/dist/realtime/renderers/barRenderer.d.ts +2 -0
  264. package/dist/realtime/renderers/candlestickRenderer.d.ts +2 -0
  265. package/dist/realtime/renderers/lineRenderer.d.ts +2 -0
  266. package/dist/realtime/renderers/swarmRenderer.d.ts +2 -0
  267. package/dist/realtime/renderers/types.d.ts +9 -0
  268. package/dist/realtime/renderers/waterfallRenderer.d.ts +3 -0
  269. package/dist/realtime/types.d.ts +113 -0
  270. package/dist/realtime.js +1598 -0
  271. package/dist/realtime.js.map +1 -0
  272. package/dist/realtime.min.js +1 -0
  273. package/dist/realtime.module.js +1566 -0
  274. package/dist/realtime.module.js.map +1 -0
  275. package/dist/realtime.module.min.js +1 -0
  276. package/dist/semiotic-ai.d.ts +28 -0
  277. package/dist/semiotic-ai.js +18722 -0
  278. package/dist/semiotic-ai.js.map +1 -0
  279. package/dist/semiotic-ai.min.js +1 -0
  280. package/dist/semiotic-ai.module.js +18668 -0
  281. package/dist/semiotic-ai.module.js.map +1 -0
  282. package/dist/semiotic-ai.module.min.js +1 -0
  283. package/dist/semiotic-network.d.ts +19 -0
  284. package/dist/semiotic-ordinal.d.ts +18 -0
  285. package/dist/semiotic-realtime.d.ts +23 -0
  286. package/dist/semiotic-server.d.ts +1 -0
  287. package/dist/semiotic-xy.d.ts +24 -0
  288. package/dist/semiotic.d.ts +19 -3
  289. package/dist/semiotic.js +18707 -12983
  290. package/dist/semiotic.js.map +1 -0
  291. package/dist/semiotic.min.js +1 -0
  292. package/dist/semiotic.module.js +18651 -12953
  293. package/dist/semiotic.module.js.map +1 -0
  294. package/dist/semiotic.module.min.js +1 -0
  295. package/dist/server/renderToStaticSVG.d.ts +9 -0
  296. package/dist/server.js +8360 -0
  297. package/dist/server.js.map +1 -0
  298. package/dist/server.min.js +1 -0
  299. package/dist/server.module.js +8331 -0
  300. package/dist/server.module.js.map +1 -0
  301. package/dist/server.module.min.js +1 -0
  302. package/dist/svg/SvgHelper.d.ts +1 -5
  303. package/dist/svg/areaDrawing.d.ts +3 -13
  304. package/dist/svg/boxplotRenderer.d.ts +15 -0
  305. package/dist/svg/bucketizedRenderer.d.ts +16 -0
  306. package/dist/svg/ckbinsRenderer.d.ts +20 -0
  307. package/dist/svg/contourLayout.d.ts +6 -0
  308. package/dist/svg/contourRenderer.d.ts +12 -0
  309. package/dist/svg/edgeGenerators.d.ts +51 -0
  310. package/dist/svg/frameFunctions.d.ts +17 -28
  311. package/dist/svg/graphAlgorithms.d.ts +14 -0
  312. package/dist/svg/hexbinLayout.d.ts +7 -0
  313. package/dist/svg/lineDrawing.d.ts +8 -8
  314. package/dist/svg/networkDrawing.d.ts +5 -123
  315. package/dist/svg/nodeGenerators.d.ts +58 -0
  316. package/dist/svg/pieceDrawing.d.ts +1 -2
  317. package/dist/svg/pieceLayouts.d.ts +5 -23
  318. package/dist/svg/sankeyLinks.d.ts +3 -0
  319. package/dist/svg/summaryAxis.d.ts +6 -0
  320. package/dist/svg/summaryLayouts.d.ts +36 -57
  321. package/dist/svg/swarmLayout.d.ts +13 -0
  322. package/dist/types/annotationTypes.d.ts +13 -18
  323. package/dist/types/canvasTypes.d.ts +1 -1
  324. package/dist/types/generalTypes.d.ts +37 -35
  325. package/dist/types/interactionTypes.d.ts +7 -9
  326. package/dist/types/legendTypes.d.ts +2 -2
  327. package/dist/types/networkTypes.d.ts +40 -30
  328. package/dist/types/ordinalTypes.d.ts +27 -18
  329. package/dist/types/xyTypes.d.ts +13 -16
  330. package/dist/useLegacyUnmountCallback.d.ts +2 -1
  331. package/dist/visualizationLayerBehavior/axis.d.ts +3 -5
  332. package/dist/visualizationLayerBehavior/general.d.ts +8 -12
  333. package/dist/xy.js +7944 -0
  334. package/dist/xy.js.map +1 -0
  335. package/dist/xy.min.js +1 -0
  336. package/dist/xy.module.js +7903 -0
  337. package/dist/xy.module.js.map +1 -0
  338. package/dist/xy.module.min.js +1 -0
  339. package/package.json +116 -66
  340. package/dist/AnnotationLayer/helpers.d.ts +0 -6
  341. package/dist/AnnotationLayer/index.d.ts +0 -2
  342. package/dist/Mark/Mark.d.ts +0 -3
  343. package/dist/Mark/Mark.types.d.ts +0 -10
  344. package/dist/Mark/constants/markTransition.d.ts +0 -10
  345. package/dist/Mark/markBehavior/drawing.d.ts +0 -13
  346. package/dist/SpanOrDiv.d.ts +0 -10
  347. package/dist/components/Annotation.d.ts +0 -3
  348. package/dist/components/AnnotationLayer/AnnotationLayer.d.ts +0 -26
  349. package/dist/components/Axis/Axis.d.ts +0 -7
  350. package/dist/components/Axis/axisTitle.d.ts +0 -10
  351. package/dist/components/Axis/index.d.ts +0 -2
  352. package/dist/components/Axis/summaryGraphic.d.ts +0 -17
  353. package/dist/components/Brush.d.ts +0 -12
  354. package/dist/components/DividedLine.d.ts +0 -16
  355. package/dist/components/FacetController.d.ts +0 -12
  356. package/dist/components/Frame.d.ts +0 -2
  357. package/dist/components/InteractionLayer.d.ts +0 -3
  358. package/dist/components/Legend.d.ts +0 -3
  359. package/dist/components/Mark/Mark.d.ts +0 -3
  360. package/dist/components/Mark/Mark.types.d.ts +0 -10
  361. package/dist/components/Mark/markBehavior/drawing.d.ts +0 -13
  362. package/dist/components/MiniMap.d.ts +0 -14
  363. package/dist/components/MinimapXYFrame.d.ts +0 -10
  364. package/dist/components/NetworkFrame.d.ts +0 -4
  365. package/dist/components/OrdinalFrame.d.ts +0 -4
  366. package/dist/components/ResponsiveFrame.d.ts +0 -22
  367. package/dist/components/ResponsiveMinimapXYFrame.d.ts +0 -6
  368. package/dist/components/ResponsiveNetworkFrame.d.ts +0 -6
  369. package/dist/components/ResponsiveOrdinalFrame.d.ts +0 -6
  370. package/dist/components/ResponsiveXYFrame.d.ts +0 -6
  371. package/dist/components/SpanOrDiv.d.ts +0 -10
  372. package/dist/components/SparkFrame.d.ts +0 -14
  373. package/dist/components/SparkNetworkFrame.d.ts +0 -5
  374. package/dist/components/SparkOrdinalFrame.d.ts +0 -5
  375. package/dist/components/SparkXYFrame.d.ts +0 -5
  376. package/dist/components/TooltipPositioner/index.d.ts +0 -7
  377. package/dist/components/VisualizationLayer.d.ts +0 -33
  378. package/dist/components/XYFrame.d.ts +0 -4
  379. package/dist/components/annotationLayerBehavior/annotationHandling.d.ts +0 -19
  380. package/dist/components/annotationLayerBehavior/d3labeler.d.ts +0 -9
  381. package/dist/components/annotationRules/baseRules.d.ts +0 -25
  382. package/dist/components/annotationRules/networkframeRules.d.ts +0 -48
  383. package/dist/components/annotationRules/orframeRules.d.ts +0 -105
  384. package/dist/components/annotationRules/xyframeRules.d.ts +0 -117
  385. package/dist/components/batchWork.d.ts +0 -6
  386. package/dist/components/constants/coordinateNames.d.ts +0 -8
  387. package/dist/components/constants/frame_props.d.ts +0 -4
  388. package/dist/components/constants/jsx.d.ts +0 -19
  389. package/dist/components/data/dataFunctions.d.ts +0 -46
  390. package/dist/components/data/multiAccessorUtils.d.ts +0 -1
  391. package/dist/components/data/unflowedFunctions.d.ts +0 -1
  392. package/dist/components/generic_utilities/functions.d.ts +0 -1
  393. package/dist/components/index.d.ts +0 -125
  394. package/dist/components/interactionLayerBehavior/InteractionCanvas.d.ts +0 -20
  395. package/dist/components/processing/InteractionItems.d.ts +0 -12
  396. package/dist/components/processing/network.d.ts +0 -114
  397. package/dist/components/processing/ordinal.d.ts +0 -102
  398. package/dist/components/processing/xyDrawing.d.ts +0 -135
  399. package/dist/components/semiotic.d.ts +0 -35
  400. package/dist/components/store/TooltipStore.d.ts +0 -2
  401. package/dist/components/store/createStore.d.ts +0 -1
  402. package/dist/components/svg/SvgHelper.d.ts +0 -37
  403. package/dist/components/svg/areaDrawing.d.ts +0 -31
  404. package/dist/components/svg/ckmeans.d.ts +0 -69
  405. package/dist/components/svg/frameFunctions.d.ts +0 -119
  406. package/dist/components/svg/lineDrawing.d.ts +0 -99
  407. package/dist/components/svg/networkDrawing.d.ts +0 -134
  408. package/dist/components/svg/pieceDrawing.d.ts +0 -13
  409. package/dist/components/svg/pieceLayouts.d.ts +0 -71
  410. package/dist/components/svg/summaryLayouts.d.ts +0 -74
  411. package/dist/components/types/annotationTypes.d.ts +0 -140
  412. package/dist/components/types/canvasTypes.d.ts +0 -9
  413. package/dist/components/types/generalTypes.d.ts +0 -236
  414. package/dist/components/types/interactionTypes.d.ts +0 -74
  415. package/dist/components/types/legendTypes.d.ts +0 -20
  416. package/dist/components/types/networkTypes.d.ts +0 -165
  417. package/dist/components/types/ordinalTypes.d.ts +0 -103
  418. package/dist/components/types/xyTypes.d.ts +0 -118
  419. package/dist/components/useBoundingRect.d.ts +0 -2
  420. package/dist/components/useDerivedStateFromProps.d.ts +0 -1
  421. package/dist/components/useLegacyUnmountCallback.d.ts +0 -1
  422. package/dist/components/visualizationLayerBehavior/axis.d.ts +0 -38
  423. package/dist/components/visualizationLayerBehavior/general.d.ts +0 -84
  424. package/dist/setupTests.d.ts +0 -1
@@ -0,0 +1,220 @@
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.AreaChart = AreaChart;
41
+ const React = __importStar(require("react"));
42
+ const react_1 = require("react");
43
+ const d3_shape_1 = require("d3-shape");
44
+ const XYFrame_1 = __importDefault(require("../../XYFrame"));
45
+ const colorUtils_1 = require("../shared/colorUtils");
46
+ const hooks_1 = require("../shared/hooks");
47
+ const legendUtils_1 = require("../shared/legendUtils");
48
+ const Tooltip_1 = require("../../Tooltip/Tooltip");
49
+ const ChartError_1 = __importDefault(require("../shared/ChartError"));
50
+ const validateChartData_1 = require("../shared/validateChartData");
51
+ /** Map of curve name strings to d3-shape curve functions */
52
+ const CURVE_MAP = {
53
+ linear: d3_shape_1.curveLinear,
54
+ monotoneX: d3_shape_1.curveMonotoneX,
55
+ monotoneY: d3_shape_1.curveMonotoneY,
56
+ step: d3_shape_1.curveStep,
57
+ stepAfter: d3_shape_1.curveStepAfter,
58
+ stepBefore: d3_shape_1.curveStepBefore,
59
+ basis: d3_shape_1.curveBasis,
60
+ cardinal: d3_shape_1.curveCardinal,
61
+ catmullRom: d3_shape_1.curveCatmullRom
62
+ };
63
+ /**
64
+ * AreaChart - Visualize quantities over continuous intervals with overlapping filled areas
65
+ *
66
+ * Each series fills from its line down to the baseline. Multiple series overlap
67
+ * with transparency so all shapes remain visible.
68
+ *
69
+ * For stacked areas use {@link StackedAreaChart}.
70
+ *
71
+ * @example
72
+ * ```tsx
73
+ * <AreaChart
74
+ * data={[
75
+ * {x: 1, y: 10, category: 'A'},
76
+ * {x: 2, y: 20, category: 'A'},
77
+ * {x: 1, y: 15, category: 'B'},
78
+ * {x: 2, y: 25, category: 'B'}
79
+ * ]}
80
+ * areaBy="category"
81
+ * colorBy="category"
82
+ * xLabel="Time"
83
+ * yLabel="Value"
84
+ * />
85
+ * ```
86
+ */
87
+ function AreaChart(props) {
88
+ const { data, width = 600, height = 400, margin: userMargin, className, title, xLabel, yLabel, xFormat, yFormat, xAccessor = "x", yAccessor = "y", areaBy, lineDataAccessor = "coordinates", colorBy, colorScheme = "category10", curve = "monotoneX", areaOpacity = 0.7, showLine = true, lineWidth = 2, enableHover = true, showGrid = false, showLegend, tooltip, frameProps = {} } = props;
89
+ const safeData = data || [];
90
+ // Check if data is in area objects format (has lineDataAccessor field)
91
+ const isAreaObjectFormat = safeData[0]?.[lineDataAccessor] !== undefined;
92
+ // Transform data to line/area format if needed
93
+ const areaData = (0, react_1.useMemo)(() => {
94
+ if (isAreaObjectFormat) {
95
+ // Data is already in area objects format
96
+ return safeData;
97
+ }
98
+ if (areaBy) {
99
+ // Group data by areaBy field
100
+ const grouped = safeData.reduce((acc, d) => {
101
+ const key = typeof areaBy === "function" ? areaBy(d) : d[areaBy];
102
+ if (!acc[key]) {
103
+ const areaObj = { [lineDataAccessor]: [] };
104
+ // Add the grouping field
105
+ if (typeof areaBy === "string") {
106
+ areaObj[areaBy] = key;
107
+ }
108
+ acc[key] = areaObj;
109
+ }
110
+ acc[key][lineDataAccessor].push(d);
111
+ return acc;
112
+ }, {});
113
+ return Object.values(grouped);
114
+ }
115
+ // Single area - wrap in area object
116
+ return [{ [lineDataAccessor]: safeData }];
117
+ }, [safeData, areaBy, lineDataAccessor, isAreaObjectFormat]);
118
+ // Create color scale if colorBy is specified
119
+ const colorScale = (0, hooks_1.useColorScale)(safeData, colorBy, colorScheme);
120
+ // Curve function from module-level map
121
+ const curveFunction = CURVE_MAP[curve] || d3_shape_1.curveMonotoneX;
122
+ // Area/line style function
123
+ const lineStyle = (0, react_1.useMemo)(() => {
124
+ return (d) => {
125
+ const baseStyle = {};
126
+ // Apply color
127
+ const color = colorBy ? (0, colorUtils_1.getColor)(d, colorBy, colorScale) : hooks_1.DEFAULT_COLOR;
128
+ baseStyle.fill = color;
129
+ baseStyle.fillOpacity = areaOpacity;
130
+ if (showLine) {
131
+ baseStyle.stroke = color;
132
+ baseStyle.strokeWidth = lineWidth;
133
+ }
134
+ else {
135
+ baseStyle.stroke = "none";
136
+ }
137
+ return baseStyle;
138
+ };
139
+ }, [colorBy, colorScale, areaOpacity, showLine, lineWidth]);
140
+ // Build axes configuration
141
+ const axes = (0, react_1.useMemo)(() => {
142
+ const axesConfig = [];
143
+ // Y axis (left)
144
+ axesConfig.push({
145
+ orient: "left",
146
+ label: yLabel,
147
+ tickFormat: yFormat,
148
+ ...(showGrid && { tickLineGenerator: () => null })
149
+ });
150
+ // X axis (bottom)
151
+ axesConfig.push({
152
+ orient: "bottom",
153
+ label: xLabel,
154
+ tickFormat: xFormat,
155
+ ...(showGrid && { tickLineGenerator: () => null })
156
+ });
157
+ return axesConfig;
158
+ }, [xLabel, yLabel, xFormat, yFormat, showGrid]);
159
+ // Determine line type — always overlapping areas
160
+ const lineType = (0, react_1.useMemo)(() => ({
161
+ type: "area",
162
+ interpolator: curveFunction
163
+ }), [curveFunction]);
164
+ // Determine if we should show legend
165
+ const shouldShowLegend = showLegend !== undefined ? showLegend : areaData.length > 1;
166
+ // Build legend if needed
167
+ const legend = (0, react_1.useMemo)(() => {
168
+ if (!shouldShowLegend || !colorBy)
169
+ return undefined;
170
+ return (0, legendUtils_1.createLegend)({
171
+ data: areaData,
172
+ colorBy,
173
+ colorScale,
174
+ getColor: colorUtils_1.getColor
175
+ });
176
+ }, [shouldShowLegend, colorBy, areaData, colorScale]);
177
+ // Adjust margin for legend if present
178
+ const margin = (0, react_1.useMemo)(() => {
179
+ const defaultMargin = { top: 50, bottom: 60, left: 70, right: 40 };
180
+ const finalMargin = { ...defaultMargin, ...userMargin };
181
+ // If legend is present and right margin is too small, increase it
182
+ if (legend && finalMargin.right < 120) {
183
+ finalMargin.right = 120;
184
+ }
185
+ return finalMargin;
186
+ }, [userMargin, legend]);
187
+ // Validate data (after all hooks)
188
+ const error = (0, validateChartData_1.validateArrayData)({
189
+ componentName: "AreaChart",
190
+ data: safeData,
191
+ accessors: {
192
+ xAccessor,
193
+ yAccessor,
194
+ },
195
+ });
196
+ if (error)
197
+ return React.createElement(ChartError_1.default, { componentName: "AreaChart", message: error, width: width, height: height });
198
+ // Build XYFrame props
199
+ const xyFrameProps = {
200
+ size: [width, height],
201
+ lines: areaData,
202
+ xAccessor,
203
+ yAccessor,
204
+ lineDataAccessor,
205
+ lineType,
206
+ lineStyle,
207
+ axes: axes,
208
+ hoverAnnotation: enableHover,
209
+ margin,
210
+ ...(legend && { legend }),
211
+ ...(className && { className }),
212
+ ...(title && { title }),
213
+ // Add tooltip support
214
+ ...(tooltip && { tooltipContent: (0, Tooltip_1.normalizeTooltip)(tooltip) }),
215
+ // Allow frameProps to override defaults
216
+ transition: true,
217
+ ...frameProps
218
+ };
219
+ return React.createElement(XYFrame_1.default, { ...xyFrameProps });
220
+ }
@@ -0,0 +1,222 @@
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.BubbleChart = BubbleChart;
41
+ const React = __importStar(require("react"));
42
+ const react_1 = require("react");
43
+ const XYFrame_1 = __importDefault(require("../../XYFrame"));
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 ChartError_1 = __importDefault(require("../shared/ChartError"));
49
+ const validateChartData_1 = require("../shared/validateChartData");
50
+ /**
51
+ * BubbleChart - Visualize three dimensions of data using x, y, and size
52
+ *
53
+ * A simplified wrapper around XYFrame for creating bubble charts. Perfect for
54
+ * showing relationships between three continuous variables or comparing
55
+ * magnitudes across categories.
56
+ *
57
+ * @example
58
+ * ```tsx
59
+ * // Simple bubble chart
60
+ * <BubbleChart
61
+ * data={[
62
+ * {x: 1, y: 10, size: 50, name: 'A'},
63
+ * {x: 2, y: 20, size: 30, name: 'B'},
64
+ * {x: 3, y: 15, size: 70, name: 'C'}
65
+ * ]}
66
+ * sizeBy="size"
67
+ * xLabel="Time"
68
+ * yLabel="Value"
69
+ * />
70
+ * ```
71
+ *
72
+ * @example
73
+ * ```tsx
74
+ * // With color encoding
75
+ * <BubbleChart
76
+ * data={data}
77
+ * sizeBy="population"
78
+ * colorBy="continent"
79
+ * sizeRange={[5, 50]}
80
+ * bubbleOpacity={0.7}
81
+ * xLabel="GDP per Capita"
82
+ * yLabel="Life Expectancy"
83
+ * />
84
+ * ```
85
+ *
86
+ * @example
87
+ * ```tsx
88
+ * // Advanced: Override XYFrame props
89
+ * <BubbleChart
90
+ * data={data}
91
+ * sizeBy="value"
92
+ * frameProps={{
93
+ * customPointMark: ({ d }) => <circle r={d.r} fill="gold" />
94
+ * }}
95
+ * />
96
+ * ```
97
+ *
98
+ * @remarks
99
+ * This component wraps {@link XYFrame} with sensible defaults for bubble charts.
100
+ * For more advanced features like custom marks, annotations, or complex interactions,
101
+ * use XYFrame directly.
102
+ *
103
+ * **Breadcrumb to advanced usage:**
104
+ * - Use the `frameProps` prop to pass any XYFrame prop
105
+ * - See XYFrame documentation: https://semiotic.nteract.io/guides/xy-frame
106
+ * - All XYFrame props are available via `frameProps`
107
+ *
108
+ * @param props - BubbleChart configuration
109
+ * @returns Rendered bubble chart
110
+ */
111
+ function BubbleChart(props) {
112
+ const { data, width = 600, height = 400, margin: userMargin, className, title, xLabel, yLabel, xFormat, yFormat, xAccessor = "x", yAccessor = "y", sizeBy, sizeRange = [5, 40], colorBy, colorScheme = "category10", bubbleOpacity = 0.6, bubbleStrokeWidth = 1, bubbleStrokeColor = "white", enableHover = true, showGrid = false, showLegend, tooltip, frameProps = {} } = props;
113
+ const safeData = data || [];
114
+ // Create color scale if colorBy is specified
115
+ const colorScale = (0, hooks_1.useColorScale)(safeData, colorBy, colorScheme);
116
+ // Calculate size domain
117
+ const sizeDomain = (0, react_1.useMemo)(() => {
118
+ const sizes = safeData.map((d) => {
119
+ if (typeof sizeBy === "function") {
120
+ return sizeBy(d);
121
+ }
122
+ return d[sizeBy];
123
+ });
124
+ return [Math.min(...sizes), Math.max(...sizes)];
125
+ }, [safeData, sizeBy]);
126
+ // Point style function
127
+ const pointStyle = (0, react_1.useMemo)(() => {
128
+ return (d) => {
129
+ const baseStyle = {
130
+ fillOpacity: bubbleOpacity,
131
+ strokeWidth: bubbleStrokeWidth,
132
+ stroke: bubbleStrokeColor
133
+ };
134
+ // Apply color
135
+ if (colorBy) {
136
+ baseStyle.fill = (0, colorUtils_1.getColor)(d, colorBy, colorScale);
137
+ }
138
+ else {
139
+ baseStyle.fill = hooks_1.DEFAULT_COLOR;
140
+ }
141
+ // Apply size
142
+ baseStyle.r = (0, colorUtils_1.getSize)(d, sizeBy, sizeRange, sizeDomain);
143
+ return baseStyle;
144
+ };
145
+ }, [colorBy, colorScale, sizeBy, sizeRange, sizeDomain, bubbleOpacity, bubbleStrokeWidth, bubbleStrokeColor]);
146
+ // Build axes configuration
147
+ const axes = (0, react_1.useMemo)(() => {
148
+ const axesConfig = [];
149
+ // Y axis (left)
150
+ axesConfig.push({
151
+ orient: "left",
152
+ label: yLabel,
153
+ tickFormat: yFormat,
154
+ ...(showGrid && { tickLineGenerator: () => null })
155
+ });
156
+ // X axis (bottom)
157
+ axesConfig.push({
158
+ orient: "bottom",
159
+ label: xLabel,
160
+ tickFormat: xFormat,
161
+ ...(showGrid && { tickLineGenerator: () => null })
162
+ });
163
+ return axesConfig;
164
+ }, [xLabel, yLabel, xFormat, yFormat, showGrid]);
165
+ // Determine if we should show legend
166
+ const shouldShowLegend = showLegend !== undefined ? showLegend : !!colorBy;
167
+ // Build legend if needed
168
+ const legend = (0, react_1.useMemo)(() => {
169
+ if (!shouldShowLegend || !colorBy)
170
+ return undefined;
171
+ return (0, legendUtils_1.createLegend)({
172
+ data: safeData,
173
+ colorBy,
174
+ colorScale,
175
+ getColor: colorUtils_1.getColor,
176
+ strokeColor: bubbleStrokeColor,
177
+ strokeWidth: bubbleStrokeWidth
178
+ });
179
+ }, [shouldShowLegend, colorBy, safeData, colorScale, bubbleStrokeColor, bubbleStrokeWidth]);
180
+ // Adjust margin for legend if present
181
+ const margin = (0, react_1.useMemo)(() => {
182
+ const defaultMargin = { top: 50, bottom: 60, left: 70, right: 40 };
183
+ const finalMargin = { ...defaultMargin, ...userMargin };
184
+ // If legend is present and right margin is too small, increase it
185
+ if (legend && finalMargin.right < 120) {
186
+ finalMargin.right = 120;
187
+ }
188
+ return finalMargin;
189
+ }, [userMargin, legend]);
190
+ // Validate data (after all hooks)
191
+ const error = (0, validateChartData_1.validateArrayData)({
192
+ componentName: "BubbleChart",
193
+ data: safeData,
194
+ accessors: {
195
+ xAccessor,
196
+ yAccessor,
197
+ },
198
+ requiredProps: { sizeBy },
199
+ });
200
+ if (error)
201
+ return React.createElement(ChartError_1.default, { componentName: "BubbleChart", message: error, width: width, height: height });
202
+ // Build XYFrame props
203
+ const xyFrameProps = {
204
+ size: [width, height],
205
+ points: safeData,
206
+ xAccessor,
207
+ yAccessor,
208
+ pointStyle,
209
+ axes: axes,
210
+ hoverAnnotation: enableHover,
211
+ margin,
212
+ ...(legend && { legend }),
213
+ ...(className && { className }),
214
+ ...(title && { title }),
215
+ // Add tooltip support
216
+ ...(tooltip && { tooltipContent: (0, Tooltip_1.normalizeTooltip)(tooltip) }),
217
+ // Allow frameProps to override defaults
218
+ transition: true,
219
+ ...frameProps
220
+ };
221
+ return React.createElement(XYFrame_1.default, { ...xyFrameProps });
222
+ }
@@ -0,0 +1,230 @@
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 XYFrame_1 = __importDefault(require("../../XYFrame"));
46
+ const hooks_1 = require("../shared/hooks");
47
+ const Tooltip_1 = require("../../Tooltip/Tooltip");
48
+ const ChartError_1 = __importDefault(require("../shared/ChartError"));
49
+ const validateChartData_1 = require("../shared/validateChartData");
50
+ /**
51
+ * Heatmap - Visualize matrix data with color-encoded cells
52
+ *
53
+ * A simplified wrapper around XYFrame for creating heatmaps. Perfect for
54
+ * showing patterns, correlations, and distributions in 2D data.
55
+ *
56
+ * @example
57
+ * ```tsx
58
+ * // Simple heatmap
59
+ * <Heatmap
60
+ * data={[
61
+ * {x: 1, y: 1, value: 10},
62
+ * {x: 1, y: 2, value: 20},
63
+ * {x: 2, y: 1, value: 15},
64
+ * {x: 2, y: 2, value: 25}
65
+ * ]}
66
+ * xLabel="Time"
67
+ * yLabel="Category"
68
+ * />
69
+ * ```
70
+ *
71
+ * @example
72
+ * ```tsx
73
+ * // With custom color scheme and value labels
74
+ * <Heatmap
75
+ * data={data}
76
+ * colorScheme="viridis"
77
+ * showValues={true}
78
+ * valueFormat={d => d.toFixed(1)}
79
+ * />
80
+ * ```
81
+ *
82
+ * @example
83
+ * ```tsx
84
+ * // Advanced: Custom color scale
85
+ * <Heatmap
86
+ * data={data}
87
+ * colorScheme="custom"
88
+ * customColorScale={
89
+ * scaleSequential(interpolatePlasma).domain([0, 100])
90
+ * }
91
+ * />
92
+ * ```
93
+ *
94
+ * @remarks
95
+ * This component wraps {@link XYFrame} with sensible defaults for heatmaps.
96
+ * For more advanced features like hexbins, contours, or custom summaries,
97
+ * use XYFrame directly.
98
+ *
99
+ * **Breadcrumb to advanced usage:**
100
+ * - Use the `frameProps` prop to pass any XYFrame prop
101
+ * - See XYFrame documentation: https://semiotic.nteract.io/guides/xy-frame
102
+ * - All XYFrame props are available via `frameProps`
103
+ *
104
+ * @param props - Heatmap configuration
105
+ * @returns Rendered heatmap
106
+ */
107
+ function Heatmap(props) {
108
+ 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 = {} } = props;
109
+ const safeData = data || [];
110
+ // Get value accessor function
111
+ const getValueFn = (0, react_1.useMemo)(() => {
112
+ return typeof valueAccessor === "function"
113
+ ? (d) => valueAccessor(d)
114
+ : (d) => d[valueAccessor];
115
+ }, [valueAccessor]);
116
+ // Calculate value domain
117
+ const valueDomain = (0, react_1.useMemo)(() => {
118
+ const values = safeData.map(getValueFn);
119
+ return [Math.min(...values), Math.max(...values)];
120
+ }, [safeData, getValueFn]);
121
+ // Create color scale
122
+ const colorScale = (0, react_1.useMemo)(() => {
123
+ if (colorScheme === "custom" && customColorScale) {
124
+ return customColorScale;
125
+ }
126
+ const interpolators = {
127
+ blues: d3_scale_chromatic_1.interpolateBlues,
128
+ reds: d3_scale_chromatic_1.interpolateReds,
129
+ greens: d3_scale_chromatic_1.interpolateGreens,
130
+ viridis: d3_scale_chromatic_1.interpolateViridis
131
+ };
132
+ const interpolator = interpolators[colorScheme] || d3_scale_chromatic_1.interpolateBlues;
133
+ return (0, d3_scale_1.scaleSequential)(interpolator).domain(valueDomain);
134
+ }, [colorScheme, customColorScale, valueDomain]);
135
+ // Get unique x and y values for bin sizing
136
+ const { xBinCount, yBinCount } = (0, react_1.useMemo)(() => {
137
+ const getX = (0, hooks_1.resolveAccessor)(xAccessor);
138
+ const getY = (0, hooks_1.resolveAccessor)(yAccessor);
139
+ return {
140
+ xBinCount: new Set(safeData.map(getX)).size,
141
+ yBinCount: new Set(safeData.map(getY)).size
142
+ };
143
+ }, [safeData, xAccessor, yAccessor]);
144
+ // Transform data to summary format for XYFrame
145
+ const summaryData = (0, react_1.useMemo)(() => {
146
+ return { coordinates: safeData };
147
+ }, [safeData]);
148
+ // Summary style function
149
+ const summaryStyle = (0, react_1.useMemo)(() => {
150
+ return (d) => {
151
+ const value = getValueFn(d);
152
+ return {
153
+ fill: colorScale(value),
154
+ stroke: cellBorderColor,
155
+ strokeWidth: cellBorderWidth
156
+ };
157
+ };
158
+ }, [getValueFn, colorScale, cellBorderColor, cellBorderWidth]);
159
+ // Summary render function (for value labels)
160
+ const summaryRenderMode = (0, react_1.useMemo)(() => {
161
+ if (!showValues)
162
+ return undefined;
163
+ const midpoint = (valueDomain[0] + valueDomain[1]) / 2;
164
+ return (d, i) => {
165
+ const value = getValueFn(d);
166
+ const displayValue = valueFormat ? valueFormat(value) : String(value);
167
+ return (React.createElement("text", { textAnchor: "middle", dominantBaseline: "middle", fill: getValueFn(d) > midpoint ? "#fff" : "#000", fontSize: "12px" }, displayValue));
168
+ };
169
+ }, [showValues, getValueFn, valueFormat, valueDomain]);
170
+ // Build axes configuration
171
+ const axes = (0, react_1.useMemo)(() => {
172
+ const axesConfig = [];
173
+ // Y axis (left)
174
+ axesConfig.push({
175
+ orient: "left",
176
+ label: yLabel,
177
+ tickFormat: yFormat
178
+ });
179
+ // X axis (bottom)
180
+ axesConfig.push({
181
+ orient: "bottom",
182
+ label: xLabel,
183
+ tickFormat: xFormat
184
+ });
185
+ return axesConfig;
186
+ }, [xLabel, yLabel, xFormat, yFormat]);
187
+ // Validate data (after all hooks)
188
+ const error = (0, validateChartData_1.validateArrayData)({
189
+ componentName: "Heatmap",
190
+ data: safeData,
191
+ accessors: {
192
+ xAccessor,
193
+ yAccessor,
194
+ valueAccessor,
195
+ },
196
+ });
197
+ if (error)
198
+ return React.createElement(ChartError_1.default, { componentName: "Heatmap", message: error, width: width, height: height });
199
+ // Build XYFrame props
200
+ const xyFrameProps = {
201
+ size: [width, height],
202
+ summaries: summaryData,
203
+ xAccessor,
204
+ yAccessor,
205
+ summaryType: {
206
+ type: "heatmap",
207
+ xBins: xBinCount,
208
+ yBins: yBinCount,
209
+ binValue: (items) => {
210
+ if (items.length === 0)
211
+ return 0;
212
+ const sum = items.reduce((acc, item) => acc + getValueFn(item), 0);
213
+ return sum / items.length;
214
+ }
215
+ },
216
+ summaryStyle,
217
+ axes: axes,
218
+ hoverAnnotation: enableHover,
219
+ margin,
220
+ ...(summaryRenderMode && { summaryRenderMode }),
221
+ ...(className && { className }),
222
+ ...(title && { title }),
223
+ // Add tooltip support
224
+ ...(tooltip && { tooltipContent: (0, Tooltip_1.normalizeTooltip)(tooltip) }),
225
+ // Allow frameProps to override defaults
226
+ transition: true,
227
+ ...frameProps
228
+ };
229
+ return React.createElement(XYFrame_1.default, { ...xyFrameProps });
230
+ }