semiotic 3.0.0-beta.2 → 3.0.0-beta.4

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 (342) hide show
  1. package/CLAUDE.md +93 -753
  2. package/README.md +92 -7
  3. package/ai/dist/componentRegistry.js +26 -0
  4. package/ai/dist/{ai/mcp-server.js → mcp-server.js} +1 -1
  5. package/ai/dist/{ai/renderHOCToSVG.js → renderHOCToSVG.js} +2 -2
  6. package/dist/ChartContainer.d.ts +60 -0
  7. package/dist/DetailsPanel.d.ts +37 -0
  8. package/dist/LinkedCharts.d.ts +2 -0
  9. package/dist/Tooltip/Tooltip.d.ts +2 -2
  10. package/dist/charts/index.d.ts +1 -1
  11. package/dist/charts/ordinal/BarChart.d.ts +1 -0
  12. package/dist/charts/ordinal/BoxPlot.d.ts +1 -0
  13. package/dist/charts/ordinal/DonutChart.d.ts +1 -0
  14. package/dist/charts/ordinal/DotPlot.d.ts +1 -0
  15. package/dist/charts/ordinal/GroupedBarChart.d.ts +1 -0
  16. package/dist/charts/ordinal/Histogram.d.ts +1 -0
  17. package/dist/charts/ordinal/PieChart.d.ts +1 -0
  18. package/dist/charts/ordinal/RidgelinePlot.d.ts +1 -0
  19. package/dist/charts/ordinal/StackedBarChart.d.ts +1 -0
  20. package/dist/charts/ordinal/SwarmPlot.d.ts +1 -0
  21. package/dist/charts/ordinal/ViolinPlot.d.ts +1 -0
  22. package/dist/charts/realtime/RealtimeHeatmap.d.ts +11 -0
  23. package/dist/charts/realtime/RealtimeHistogram.d.ts +15 -1
  24. package/dist/charts/realtime/RealtimeLineChart.d.ts +6 -0
  25. package/dist/charts/realtime/RealtimeSwarmChart.d.ts +6 -0
  26. package/dist/charts/realtime/RealtimeWaterfallChart.d.ts +6 -0
  27. package/dist/charts/shared/annotationRules.d.ts +3 -0
  28. package/dist/charts/shared/colorUtils.d.ts +17 -11
  29. package/dist/charts/shared/hooks.d.ts +96 -1
  30. package/dist/charts/shared/loess.d.ts +13 -0
  31. package/dist/charts/shared/networkUtils.d.ts +31 -0
  32. package/dist/charts/shared/tooltipUtils.d.ts +16 -0
  33. package/dist/charts/shared/types.d.ts +17 -2
  34. package/dist/charts/shared/validateChartData.d.ts +2 -3
  35. package/dist/charts/shared/validateProps.d.ts +18 -0
  36. package/dist/charts/xy/AreaChart.d.ts +4 -0
  37. package/dist/charts/xy/BubbleChart.d.ts +6 -0
  38. package/dist/charts/xy/Heatmap.d.ts +4 -0
  39. package/dist/charts/xy/LineChart.d.ts +6 -0
  40. package/dist/charts/xy/Scatterplot.d.ts +4 -0
  41. package/dist/charts/xy/StackedAreaChart.d.ts +4 -0
  42. package/dist/data/fromVegaLite.d.ts +48 -0
  43. package/dist/export/chartConfig.d.ts +29 -0
  44. package/dist/export/selectionSerializer.d.ts +20 -0
  45. package/dist/geometry/sankeyLinks.d.ts +1 -1
  46. package/dist/network.min.js +1 -1
  47. package/dist/network.module.min.js +1 -1
  48. package/dist/ordinal.min.js +1 -1
  49. package/dist/ordinal.module.min.js +1 -1
  50. package/dist/realtime/types.d.ts +20 -6
  51. package/dist/realtime.min.js +1 -1
  52. package/dist/realtime.module.min.js +1 -1
  53. package/dist/semiotic-ai.d.ts +14 -0
  54. package/dist/semiotic-ai.min.js +1 -1
  55. package/dist/semiotic-ai.module.min.js +1 -1
  56. package/dist/semiotic-data.d.ts +2 -0
  57. package/dist/semiotic-data.min.js +1 -1
  58. package/dist/semiotic-data.module.min.js +1 -1
  59. package/dist/semiotic-network.d.ts +9 -19
  60. package/dist/semiotic-ordinal.d.ts +12 -14
  61. package/dist/semiotic-xy.d.ts +12 -18
  62. package/dist/semiotic.d.ts +16 -13
  63. package/dist/semiotic.min.js +1 -1
  64. package/dist/semiotic.module.min.js +1 -1
  65. package/dist/server.min.js +1 -1
  66. package/dist/server.module.min.js +1 -1
  67. package/dist/store/ObservationStore.d.ts +61 -0
  68. package/dist/store/SelectionStore.d.ts +9 -1
  69. package/dist/store/ThemeStore.d.ts +6 -1
  70. package/dist/store/TooltipStore.d.ts +3 -1
  71. package/dist/store/createStore.d.ts +4 -1
  72. package/dist/store/useObservation.d.ts +18 -0
  73. package/dist/stream/MarginalGraphics.d.ts +1 -1
  74. package/dist/stream/NetworkPipelineStore.d.ts +44 -0
  75. package/dist/stream/OrdinalCanvasHitTester.d.ts +1 -0
  76. package/dist/stream/OrdinalSVGOverlay.d.ts +6 -2
  77. package/dist/stream/ParticlePool.d.ts +2 -1
  78. package/dist/stream/PipelineStore.d.ts +11 -0
  79. package/dist/stream/SVGOverlay.d.ts +21 -2
  80. package/dist/stream/SceneGraph.d.ts +1 -1
  81. package/dist/stream/networkTypes.d.ts +58 -1
  82. package/dist/stream/ordinalTypes.d.ts +13 -0
  83. package/dist/stream/types.d.ts +14 -0
  84. package/dist/types/annotationTypes.d.ts +10 -0
  85. package/dist/types/networkTypes.d.ts +1 -2
  86. package/dist/xy.min.js +1 -1
  87. package/dist/xy.module.min.js +1 -1
  88. package/package.json +30 -42
  89. package/ai/dist/ai/componentRegistry.js +0 -45
  90. package/ai/dist/src/components/Annotation.js +0 -358
  91. package/ai/dist/src/components/AnnotationLayer/AnnotationLayer.js +0 -369
  92. package/ai/dist/src/components/Axis/Axis.js +0 -374
  93. package/ai/dist/src/components/Axis/axisTitle.js +0 -14
  94. package/ai/dist/src/components/Axis/index.js +0 -7
  95. package/ai/dist/src/components/Axis/summaryGraphic.js +0 -37
  96. package/ai/dist/src/components/Brush.js +0 -84
  97. package/ai/dist/src/components/ChartErrorBoundary.js +0 -91
  98. package/ai/dist/src/components/DividedLine.js +0 -65
  99. package/ai/dist/src/components/Legend.js +0 -140
  100. package/ai/dist/src/components/LinkedCharts.js +0 -95
  101. package/ai/dist/src/components/ThemeProvider.js +0 -79
  102. package/ai/dist/src/components/Tooltip/Tooltip.js +0 -309
  103. package/ai/dist/src/components/TooltipPositioner/index.js +0 -132
  104. package/ai/dist/src/components/annotationLayerBehavior/annotationHandling.js +0 -73
  105. package/ai/dist/src/components/annotationLayerBehavior/d3labeler.js +0 -254
  106. package/ai/dist/src/components/annotationRules/baseRules.js +0 -150
  107. package/ai/dist/src/components/annotationRules/networkframeRules.js +0 -196
  108. package/ai/dist/src/components/annotationRules/xyframeRules.js +0 -297
  109. package/ai/dist/src/components/batchWork.js +0 -35
  110. package/ai/dist/src/components/charts/index.js +0 -109
  111. package/ai/dist/src/components/charts/network/ChordDiagram.js +0 -142
  112. package/ai/dist/src/components/charts/network/CirclePack.js +0 -108
  113. package/ai/dist/src/components/charts/network/ForceDirectedGraph.js +0 -121
  114. package/ai/dist/src/components/charts/network/SankeyDiagram.js +0 -155
  115. package/ai/dist/src/components/charts/network/TreeDiagram.js +0 -110
  116. package/ai/dist/src/components/charts/network/Treemap.js +0 -106
  117. package/ai/dist/src/components/charts/ordinal/BarChart.js +0 -156
  118. package/ai/dist/src/components/charts/ordinal/BoxPlot.js +0 -139
  119. package/ai/dist/src/components/charts/ordinal/DonutChart.js +0 -130
  120. package/ai/dist/src/components/charts/ordinal/DotPlot.js +0 -126
  121. package/ai/dist/src/components/charts/ordinal/GroupedBarChart.js +0 -129
  122. package/ai/dist/src/components/charts/ordinal/Histogram.js +0 -132
  123. package/ai/dist/src/components/charts/ordinal/PieChart.js +0 -128
  124. package/ai/dist/src/components/charts/ordinal/RidgelinePlot.js +0 -130
  125. package/ai/dist/src/components/charts/ordinal/StackedBarChart.js +0 -130
  126. package/ai/dist/src/components/charts/ordinal/SwarmPlot.js +0 -147
  127. package/ai/dist/src/components/charts/ordinal/ViolinPlot.js +0 -138
  128. package/ai/dist/src/components/charts/realtime/RealtimeHeatmap.js +0 -79
  129. package/ai/dist/src/components/charts/realtime/RealtimeHistogram.js +0 -114
  130. package/ai/dist/src/components/charts/realtime/RealtimeLineChart.js +0 -93
  131. package/ai/dist/src/components/charts/realtime/RealtimeSwarmChart.js +0 -105
  132. package/ai/dist/src/components/charts/realtime/RealtimeWaterfallChart.js +0 -106
  133. package/ai/dist/src/components/charts/shared/ChartError.js +0 -72
  134. package/ai/dist/src/components/charts/shared/colorUtils.js +0 -138
  135. package/ai/dist/src/components/charts/shared/formatUtils.js +0 -213
  136. package/ai/dist/src/components/charts/shared/hooks.js +0 -49
  137. package/ai/dist/src/components/charts/shared/legendUtils.js +0 -57
  138. package/ai/dist/src/components/charts/shared/selectionUtils.js +0 -67
  139. package/ai/dist/src/components/charts/shared/tooltipUtils.js +0 -79
  140. package/ai/dist/src/components/charts/shared/types.js +0 -2
  141. package/ai/dist/src/components/charts/shared/validateChartData.js +0 -82
  142. package/ai/dist/src/components/charts/shared/validateProps.js +0 -736
  143. package/ai/dist/src/components/charts/xy/AreaChart.js +0 -230
  144. package/ai/dist/src/components/charts/xy/BubbleChart.js +0 -251
  145. package/ai/dist/src/components/charts/xy/Heatmap.js +0 -235
  146. package/ai/dist/src/components/charts/xy/LineChart.js +0 -307
  147. package/ai/dist/src/components/charts/xy/MinimapChart.js +0 -298
  148. package/ai/dist/src/components/charts/xy/Scatterplot.js +0 -172
  149. package/ai/dist/src/components/charts/xy/ScatterplotMatrix.js +0 -426
  150. package/ai/dist/src/components/charts/xy/StackedAreaChart.js +0 -231
  151. package/ai/dist/src/components/constants/coordinateNames.js +0 -11
  152. package/ai/dist/src/components/constants/frame_props.js +0 -251
  153. package/ai/dist/src/components/data/dataFunctions.js +0 -487
  154. package/ai/dist/src/components/data/multiAccessorUtils.js +0 -14
  155. package/ai/dist/src/components/data/transforms.js +0 -143
  156. package/ai/dist/src/components/data/unflowedFunctions.js +0 -5
  157. package/ai/dist/src/components/export/exportChart.js +0 -121
  158. package/ai/dist/src/components/generic_utilities/functions.js +0 -5
  159. package/ai/dist/src/components/geometry/areaDrawing.js +0 -312
  160. package/ai/dist/src/components/geometry/contourLayout.js +0 -73
  161. package/ai/dist/src/components/geometry/hexbinLayout.js +0 -163
  162. package/ai/dist/src/components/geometry/lineDrawing.js +0 -356
  163. package/ai/dist/src/components/geometry/sankeyLinks.js +0 -331
  164. package/ai/dist/src/components/geometry/summaryLayouts.js +0 -136
  165. package/ai/dist/src/components/index.js +0 -18
  166. package/ai/dist/src/components/processing/InteractionItems.js +0 -223
  167. package/ai/dist/src/components/processing/hierarchyUtils.js +0 -104
  168. package/ai/dist/src/components/processing/layouts/chordLayout.js +0 -58
  169. package/ai/dist/src/components/processing/layouts/forceLayout.js +0 -142
  170. package/ai/dist/src/components/processing/layouts/hierarchyLayout.js +0 -31
  171. package/ai/dist/src/components/processing/layouts/index.js +0 -32
  172. package/ai/dist/src/components/processing/layouts/sankeyLayout.js +0 -96
  173. package/ai/dist/src/components/processing/layouts/simpleLayouts.js +0 -34
  174. package/ai/dist/src/components/processing/layouts/types.js +0 -2
  175. package/ai/dist/src/components/processing/networkDefaults.js +0 -39
  176. package/ai/dist/src/components/realtime/BinAccumulator.js +0 -36
  177. package/ai/dist/src/components/realtime/IncrementalExtent.js +0 -55
  178. package/ai/dist/src/components/realtime/RingBuffer.js +0 -104
  179. package/ai/dist/src/components/realtime/renderers/barRenderer.js +0 -133
  180. package/ai/dist/src/components/realtime/renderers/candlestickRenderer.js +0 -7
  181. package/ai/dist/src/components/realtime/renderers/lineRenderer.js +0 -164
  182. package/ai/dist/src/components/realtime/renderers/swarmRenderer.js +0 -91
  183. package/ai/dist/src/components/realtime/renderers/types.js +0 -2
  184. package/ai/dist/src/components/realtime/renderers/waterfallRenderer.js +0 -163
  185. package/ai/dist/src/components/realtime/types.js +0 -2
  186. package/ai/dist/src/components/semiotic-ai.js +0 -89
  187. package/ai/dist/src/components/semiotic-data.js +0 -12
  188. package/ai/dist/src/components/semiotic-network.js +0 -38
  189. package/ai/dist/src/components/semiotic-ordinal.js +0 -28
  190. package/ai/dist/src/components/semiotic-realtime.js +0 -30
  191. package/ai/dist/src/components/semiotic-server.js +0 -8
  192. package/ai/dist/src/components/semiotic-xy.js +0 -35
  193. package/ai/dist/src/components/semiotic.js +0 -109
  194. package/ai/dist/src/components/server/renderToStaticSVG.js +0 -594
  195. package/ai/dist/src/components/store/SelectionStore.js +0 -91
  196. package/ai/dist/src/components/store/ThemeStore.js +0 -78
  197. package/ai/dist/src/components/store/TooltipStore.js +0 -13
  198. package/ai/dist/src/components/store/createStore.js +0 -81
  199. package/ai/dist/src/components/store/useSelection.js +0 -133
  200. package/ai/dist/src/components/stream/CanvasHitTester.js +0 -164
  201. package/ai/dist/src/components/stream/DataSourceAdapter.js +0 -99
  202. package/ai/dist/src/components/stream/MarginalGraphics.js +0 -266
  203. package/ai/dist/src/components/stream/NetworkCanvasHitTester.js +0 -228
  204. package/ai/dist/src/components/stream/NetworkPipelineStore.js +0 -498
  205. package/ai/dist/src/components/stream/NetworkSVGOverlay.js +0 -70
  206. package/ai/dist/src/components/stream/NetworkSceneGraph.js +0 -38
  207. package/ai/dist/src/components/stream/OrdinalCanvasHitTester.js +0 -146
  208. package/ai/dist/src/components/stream/OrdinalPipelineStore.js +0 -786
  209. package/ai/dist/src/components/stream/OrdinalSVGOverlay.js +0 -130
  210. package/ai/dist/src/components/stream/ParticlePool.js +0 -174
  211. package/ai/dist/src/components/stream/PipelineStore.js +0 -1243
  212. package/ai/dist/src/components/stream/SVGOverlay.js +0 -129
  213. package/ai/dist/src/components/stream/SceneGraph.js +0 -132
  214. package/ai/dist/src/components/stream/StreamNetworkFrame.js +0 -561
  215. package/ai/dist/src/components/stream/StreamOrdinalFrame.js +0 -492
  216. package/ai/dist/src/components/stream/StreamXYFrame.js +0 -590
  217. package/ai/dist/src/components/stream/accessorUtils.js +0 -20
  218. package/ai/dist/src/components/stream/index.js +0 -32
  219. package/ai/dist/src/components/stream/layouts/chordLayoutPlugin.js +0 -352
  220. package/ai/dist/src/components/stream/layouts/forceLayoutPlugin.js +0 -230
  221. package/ai/dist/src/components/stream/layouts/hierarchyLayoutPlugin.js +0 -568
  222. package/ai/dist/src/components/stream/layouts/index.js +0 -28
  223. package/ai/dist/src/components/stream/layouts/sankeyLayoutPlugin.js +0 -245
  224. package/ai/dist/src/components/stream/networkTypes.js +0 -17
  225. package/ai/dist/src/components/stream/ordinalSceneBuilders/barScene.js +0 -126
  226. package/ai/dist/src/components/stream/ordinalSceneBuilders/connectorScene.js +0 -62
  227. package/ai/dist/src/components/stream/ordinalSceneBuilders/pieScene.js +0 -33
  228. package/ai/dist/src/components/stream/ordinalSceneBuilders/pointScene.js +0 -63
  229. package/ai/dist/src/components/stream/ordinalSceneBuilders/statisticalScene.js +0 -278
  230. package/ai/dist/src/components/stream/ordinalSceneBuilders/timelineScene.js +0 -30
  231. package/ai/dist/src/components/stream/ordinalSceneBuilders/types.js +0 -2
  232. package/ai/dist/src/components/stream/ordinalTypes.js +0 -2
  233. package/ai/dist/src/components/stream/renderers/areaCanvasRenderer.js +0 -48
  234. package/ai/dist/src/components/stream/renderers/barCanvasRenderer.js +0 -70
  235. package/ai/dist/src/components/stream/renderers/boxplotCanvasRenderer.js +0 -75
  236. package/ai/dist/src/components/stream/renderers/candlestickCanvasRenderer.js +0 -28
  237. package/ai/dist/src/components/stream/renderers/connectorCanvasRenderer.js +0 -47
  238. package/ai/dist/src/components/stream/renderers/heatmapCanvasRenderer.js +0 -31
  239. package/ai/dist/src/components/stream/renderers/lineCanvasRenderer.js +0 -140
  240. package/ai/dist/src/components/stream/renderers/networkArcRenderer.js +0 -38
  241. package/ai/dist/src/components/stream/renderers/networkCircleRenderer.js +0 -37
  242. package/ai/dist/src/components/stream/renderers/networkEdgeRenderer.js +0 -102
  243. package/ai/dist/src/components/stream/renderers/networkParticleRenderer.js +0 -63
  244. package/ai/dist/src/components/stream/renderers/networkRectRenderer.js +0 -35
  245. package/ai/dist/src/components/stream/renderers/pointCanvasRenderer.js +0 -38
  246. package/ai/dist/src/components/stream/renderers/swarmCanvasRenderer.js +0 -10
  247. package/ai/dist/src/components/stream/renderers/types.js +0 -2
  248. package/ai/dist/src/components/stream/renderers/violinCanvasRenderer.js +0 -47
  249. package/ai/dist/src/components/stream/renderers/waterfallCanvasRenderer.js +0 -38
  250. package/ai/dist/src/components/stream/renderers/wedgeCanvasRenderer.js +0 -33
  251. package/ai/dist/src/components/stream/types.js +0 -2
  252. package/ai/dist/src/components/types/annotationTypes.js +0 -2
  253. package/ai/dist/src/components/types/canvasTypes.js +0 -2
  254. package/ai/dist/src/components/types/generalTypes.js +0 -2
  255. package/ai/dist/src/components/types/interactionTypes.js +0 -2
  256. package/ai/dist/src/components/types/legendTypes.js +0 -2
  257. package/ai/dist/src/components/types/networkTypes.js +0 -2
  258. package/ai/dist/src/components/types/ordinalTypes.js +0 -2
  259. package/ai/dist/src/components/types/xyTypes.js +0 -2
  260. package/ai/dist/src/components/useBoundingRect.js +0 -24
  261. package/ai/dist/src/components/visualizationLayerBehavior/axis.js +0 -301
  262. package/ai/dist/src/components/visualizationLayerBehavior/general.js +0 -435
  263. package/ai/dist/src/setupTests.js +0 -4
  264. package/dist/AnnotationLayer/AnnotationLayer.d.ts +0 -25
  265. package/dist/Axis/Axis.d.ts +0 -7
  266. package/dist/Axis/axisTitle.d.ts +0 -10
  267. package/dist/Axis/index.d.ts +0 -2
  268. package/dist/Axis/summaryGraphic.d.ts +0 -17
  269. package/dist/Brush.d.ts +0 -12
  270. package/dist/DividedLine.d.ts +0 -16
  271. package/dist/TooltipPositioner/index.d.ts +0 -7
  272. package/dist/annotationLayerBehavior/annotationHandling.d.ts +0 -19
  273. package/dist/annotationLayerBehavior/d3labeler.d.ts +0 -9
  274. package/dist/annotationRules/baseRules.d.ts +0 -25
  275. package/dist/annotationRules/networkframeRules.d.ts +0 -48
  276. package/dist/annotationRules/xyframeRules.d.ts +0 -117
  277. package/dist/batchWork.d.ts +0 -6
  278. package/dist/constants/coordinateNames.d.ts +0 -8
  279. package/dist/constants/frame_props.d.ts +0 -13
  280. package/dist/data/dataFunctions.d.ts +0 -45
  281. package/dist/data/multiAccessorUtils.d.ts +0 -1
  282. package/dist/data/unflowedFunctions.d.ts +0 -1
  283. package/dist/generic_utilities/functions.d.ts +0 -1
  284. package/dist/geometry/areaDrawing.d.ts +0 -21
  285. package/dist/geometry/contourLayout.d.ts +0 -6
  286. package/dist/geometry/hexbinLayout.d.ts +0 -7
  287. package/dist/geometry/lineDrawing.d.ts +0 -71
  288. package/dist/geometry/summaryLayouts.d.ts +0 -45
  289. package/dist/index.d.ts +0 -1
  290. package/dist/network.js +0 -7495
  291. package/dist/network.js.map +0 -1
  292. package/dist/network.module.js +0 -7458
  293. package/dist/network.module.js.map +0 -1
  294. package/dist/ordinal.js +0 -6497
  295. package/dist/ordinal.js.map +0 -1
  296. package/dist/ordinal.module.js +0 -6465
  297. package/dist/ordinal.module.js.map +0 -1
  298. package/dist/processing/InteractionItems.d.ts +0 -13
  299. package/dist/processing/hierarchyUtils.d.ts +0 -16
  300. package/dist/processing/layouts/chordLayout.d.ts +0 -2
  301. package/dist/processing/layouts/forceLayout.d.ts +0 -3
  302. package/dist/processing/layouts/hierarchyLayout.d.ts +0 -10
  303. package/dist/processing/layouts/index.d.ts +0 -8
  304. package/dist/processing/layouts/sankeyLayout.d.ts +0 -8
  305. package/dist/processing/layouts/simpleLayouts.d.ts +0 -7
  306. package/dist/processing/layouts/types.d.ts +0 -17
  307. package/dist/processing/networkDefaults.d.ts +0 -36
  308. package/dist/realtime/renderers/barRenderer.d.ts +0 -2
  309. package/dist/realtime/renderers/candlestickRenderer.d.ts +0 -2
  310. package/dist/realtime/renderers/lineRenderer.d.ts +0 -2
  311. package/dist/realtime/renderers/swarmRenderer.d.ts +0 -2
  312. package/dist/realtime.js +0 -7072
  313. package/dist/realtime.js.map +0 -1
  314. package/dist/realtime.module.js +0 -7043
  315. package/dist/realtime.module.js.map +0 -1
  316. package/dist/semiotic-ai.js +0 -13323
  317. package/dist/semiotic-ai.js.map +0 -1
  318. package/dist/semiotic-ai.module.js +0 -13264
  319. package/dist/semiotic-ai.module.js.map +0 -1
  320. package/dist/semiotic-data.js +0 -141
  321. package/dist/semiotic-data.js.map +0 -1
  322. package/dist/semiotic-data.module.js +0 -136
  323. package/dist/semiotic-data.module.js.map +0 -1
  324. package/dist/semiotic.js +0 -16351
  325. package/dist/semiotic.js.map +0 -1
  326. package/dist/semiotic.module.js +0 -16265
  327. package/dist/semiotic.module.js.map +0 -1
  328. package/dist/server.js +0 -5191
  329. package/dist/server.js.map +0 -1
  330. package/dist/server.module.js +0 -5166
  331. package/dist/server.module.js.map +0 -1
  332. package/dist/stream/NetworkSceneGraph.d.ts +0 -14
  333. package/dist/stream/index.d.ts +0 -16
  334. package/dist/types/canvasTypes.d.ts +0 -9
  335. package/dist/types/xyTypes.d.ts +0 -24
  336. package/dist/useBoundingRect.d.ts +0 -2
  337. package/dist/visualizationLayerBehavior/axis.d.ts +0 -36
  338. package/dist/visualizationLayerBehavior/general.d.ts +0 -80
  339. package/dist/xy.js +0 -6993
  340. package/dist/xy.js.map +0 -1
  341. package/dist/xy.module.js +0 -6957
  342. package/dist/xy.module.js.map +0 -1
@@ -1,105 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.RealtimeSwarmChart = void 0;
40
- const React = __importStar(require("react"));
41
- const react_1 = require("react");
42
- const StreamXYFrame_1 = __importDefault(require("../../stream/StreamXYFrame"));
43
- const selectionUtils_1 = require("../shared/selectionUtils");
44
- const useSelection_1 = require("../../store/useSelection");
45
- /**
46
- * RealtimeSwarmChart - Simplified wrapper for streaming dot/swarm charts.
47
- *
48
- * Wraps StreamXYFrame with `chartType="swarm"` and `runtimeMode="streaming"`,
49
- * exposing dot styling as top-level props. Each data point renders as an individual
50
- * dot at its (time, value) coordinates.
51
- *
52
- * Supports threshold coloring via annotations to recolor dots that cross
53
- * value boundaries.
54
- *
55
- * @example
56
- * ```tsx
57
- * <RealtimeSwarmChart
58
- * ref={ref}
59
- * radius={4}
60
- * opacity={0.8}
61
- * categoryAccessor="sensor"
62
- * colors={{ sensor1: "#007bff", sensor2: "#28a745" }}
63
- * />
64
- * ```
65
- */
66
- exports.RealtimeSwarmChart = (0, react_1.forwardRef)(function RealtimeSwarmChart(props, ref) {
67
- const { size, width, height, margin, className, arrowOfTime = "right", windowMode = "sliding", windowSize = 200, data, timeAccessor, valueAccessor, timeExtent, valueExtent, extentPadding, categoryAccessor, colors, radius, fill, opacity, stroke, strokeWidth, showAxes = true, background, enableHover, tooltipContent, tooltip, onHover, annotations, svgAnnotationRules, tickFormatTime, tickFormatValue, linkedHover } = props;
68
- const resolvedSize = width != null && height != null
69
- ? [width, height]
70
- : size || [500, 300];
71
- const resolvedTooltip = tooltipContent ?? tooltip;
72
- const frameRef = (0, react_1.useRef)(null);
73
- // ── Linked hover hooks (always called, conditional logic inside) ──
74
- const hoverConfig = (0, selectionUtils_1.normalizeLinkedHover)(linkedHover);
75
- const linkedHoverHook = (0, useSelection_1.useLinkedHover)({
76
- name: hoverConfig?.name || "hover",
77
- fields: hoverConfig?.fields || []
78
- });
79
- const combinedHoverBehavior = (0, react_1.useCallback)((d) => {
80
- if (onHover)
81
- onHover(d);
82
- if (linkedHover) {
83
- linkedHoverHook.onHover(d ? (d.data || d) : null);
84
- }
85
- }, [onHover, linkedHover, linkedHoverHook]);
86
- (0, react_1.useImperativeHandle)(ref, () => ({
87
- push: (point) => frameRef.current?.push(point),
88
- pushMany: (points) => frameRef.current?.pushMany(points),
89
- clear: () => frameRef.current?.clear(),
90
- getData: () => frameRef.current?.getData() ?? []
91
- }));
92
- const swarmStyle = {};
93
- if (radius != null)
94
- swarmStyle.radius = radius;
95
- if (fill != null)
96
- swarmStyle.fill = fill;
97
- if (opacity != null)
98
- swarmStyle.opacity = opacity;
99
- if (stroke != null)
100
- swarmStyle.stroke = stroke;
101
- if (strokeWidth != null)
102
- swarmStyle.strokeWidth = strokeWidth;
103
- return (React.createElement(StreamXYFrame_1.default, { ref: frameRef, chartType: "swarm", runtimeMode: "streaming", size: resolvedSize, margin: margin, className: className, arrowOfTime: arrowOfTime, windowMode: windowMode, windowSize: windowSize, data: data, timeAccessor: timeAccessor, valueAccessor: valueAccessor, xExtent: timeExtent, yExtent: valueExtent, extentPadding: extentPadding, categoryAccessor: categoryAccessor, barColors: colors, swarmStyle: swarmStyle, showAxes: showAxes, background: background, hoverAnnotation: enableHover, tooltipContent: resolvedTooltip, customHoverBehavior: combinedHoverBehavior, annotations: annotations, svgAnnotationRules: svgAnnotationRules, tickFormatTime: tickFormatTime, tickFormatValue: tickFormatValue }));
104
- });
105
- exports.RealtimeSwarmChart.displayName = "RealtimeSwarmChart";
@@ -1,106 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.RealtimeWaterfallChart = void 0;
40
- const React = __importStar(require("react"));
41
- const react_1 = require("react");
42
- const StreamXYFrame_1 = __importDefault(require("../../stream/StreamXYFrame"));
43
- const selectionUtils_1 = require("../shared/selectionUtils");
44
- const useSelection_1 = require("../../store/useSelection");
45
- /**
46
- * RealtimeWaterfallChart - Simplified wrapper for streaming waterfall charts.
47
- *
48
- * Wraps StreamXYFrame with `chartType="waterfall"` and `runtimeMode="streaming"`,
49
- * exposing waterfall styling as top-level props. Visualizes cumulative deltas as
50
- * connected bars rising and falling from a running baseline.
51
- *
52
- * @example
53
- * ```tsx
54
- * <RealtimeWaterfallChart
55
- * ref={ref}
56
- * positiveColor="#28a745"
57
- * negativeColor="#dc3545"
58
- * connectorStroke="#999"
59
- * windowSize={300}
60
- * />
61
- * ```
62
- */
63
- exports.RealtimeWaterfallChart = (0, react_1.forwardRef)(function RealtimeWaterfallChart(props, ref) {
64
- const { size, width, height, margin, className, arrowOfTime = "right", windowMode = "sliding", windowSize = 200, data, timeAccessor, valueAccessor, timeExtent, valueExtent, extentPadding, positiveColor, negativeColor, connectorStroke, connectorWidth, gap, stroke, strokeWidth, showAxes = true, background, enableHover, tooltipContent, tooltip, onHover, annotations, svgAnnotationRules, tickFormatTime, tickFormatValue, linkedHover } = props;
65
- const resolvedSize = width != null && height != null
66
- ? [width, height]
67
- : size || [500, 300];
68
- const resolvedTooltip = tooltipContent ?? tooltip;
69
- const frameRef = (0, react_1.useRef)(null);
70
- // ── Linked hover hooks (always called, conditional logic inside) ──
71
- const hoverConfig = (0, selectionUtils_1.normalizeLinkedHover)(linkedHover);
72
- const linkedHoverHook = (0, useSelection_1.useLinkedHover)({
73
- name: hoverConfig?.name || "hover",
74
- fields: hoverConfig?.fields || []
75
- });
76
- const combinedHoverBehavior = (0, react_1.useCallback)((d) => {
77
- if (onHover)
78
- onHover(d);
79
- if (linkedHover) {
80
- linkedHoverHook.onHover(d ? (d.data || d) : null);
81
- }
82
- }, [onHover, linkedHover, linkedHoverHook]);
83
- (0, react_1.useImperativeHandle)(ref, () => ({
84
- push: (point) => frameRef.current?.push(point),
85
- pushMany: (points) => frameRef.current?.pushMany(points),
86
- clear: () => frameRef.current?.clear(),
87
- getData: () => frameRef.current?.getData() ?? []
88
- }));
89
- const waterfallStyle = {};
90
- if (positiveColor != null)
91
- waterfallStyle.positiveColor = positiveColor;
92
- if (negativeColor != null)
93
- waterfallStyle.negativeColor = negativeColor;
94
- if (connectorStroke != null)
95
- waterfallStyle.connectorStroke = connectorStroke;
96
- if (connectorWidth != null)
97
- waterfallStyle.connectorWidth = connectorWidth;
98
- if (gap != null)
99
- waterfallStyle.gap = gap;
100
- if (stroke != null)
101
- waterfallStyle.stroke = stroke;
102
- if (strokeWidth != null)
103
- waterfallStyle.strokeWidth = strokeWidth;
104
- return (React.createElement(StreamXYFrame_1.default, { ref: frameRef, chartType: "waterfall", runtimeMode: "streaming", size: resolvedSize, margin: margin, className: className, arrowOfTime: arrowOfTime, windowMode: windowMode, windowSize: windowSize, data: data, timeAccessor: timeAccessor, valueAccessor: valueAccessor, xExtent: timeExtent, yExtent: valueExtent, extentPadding: extentPadding, waterfallStyle: waterfallStyle, showAxes: showAxes, background: background, hoverAnnotation: enableHover, tooltipContent: resolvedTooltip, customHoverBehavior: combinedHoverBehavior, annotations: annotations, svgAnnotationRules: svgAnnotationRules, tickFormatTime: tickFormatTime, tickFormatValue: tickFormatValue }));
105
- });
106
- exports.RealtimeWaterfallChart.displayName = "RealtimeWaterfallChart";
@@ -1,72 +0,0 @@
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
- Object.defineProperty(exports, "__esModule", { value: true });
37
- exports.default = ChartError;
38
- const React = __importStar(require("react"));
39
- /**
40
- * Renders a visible, styled error state inside the chart's dimensions.
41
- * Shows the component name, error message, and a hint for developers.
42
- *
43
- * Designed to be obvious in development but not alarming in production —
44
- * uses muted colors that adapt to light/dark backgrounds.
45
- */
46
- function ChartError({ componentName, message, width, height, }) {
47
- return (React.createElement("div", { role: "alert", style: {
48
- width,
49
- height: Math.max(height, 120),
50
- display: "flex",
51
- alignItems: "center",
52
- justifyContent: "center",
53
- border: "1px dashed rgba(128, 128, 128, 0.4)",
54
- borderRadius: 8,
55
- background: "rgba(128, 128, 128, 0.04)",
56
- padding: 24,
57
- boxSizing: "border-box",
58
- } },
59
- React.createElement("div", { style: { textAlign: "center", maxWidth: 400 } },
60
- React.createElement("div", { style: {
61
- fontSize: 13,
62
- fontWeight: 600,
63
- color: "rgba(128, 128, 128, 0.7)",
64
- marginBottom: 6,
65
- fontFamily: "monospace",
66
- } }, componentName),
67
- React.createElement("div", { style: {
68
- fontSize: 14,
69
- color: "rgba(128, 128, 128, 0.9)",
70
- lineHeight: 1.5,
71
- } }, message))));
72
- }
@@ -1,138 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DEFAULT_COLORS = exports.COLOR_SCHEMES = void 0;
4
- exports.getColor = getColor;
5
- exports.createColorScale = createColorScale;
6
- exports.getSize = getSize;
7
- const d3_scale_1 = require("d3-scale");
8
- const d3_scale_chromatic_1 = require("d3-scale-chromatic");
9
- /**
10
- * Predefined color schemes
11
- */
12
- exports.COLOR_SCHEMES = {
13
- // Categorical schemes
14
- category10: d3_scale_chromatic_1.schemeCategory10,
15
- tableau10: d3_scale_chromatic_1.schemeTableau10,
16
- set3: d3_scale_chromatic_1.schemeSet3,
17
- // Sequential schemes (for continuous data)
18
- blues: d3_scale_chromatic_1.interpolateBlues,
19
- reds: d3_scale_chromatic_1.interpolateReds,
20
- greens: d3_scale_chromatic_1.interpolateGreens,
21
- oranges: d3_scale_chromatic_1.interpolateOranges,
22
- purples: d3_scale_chromatic_1.interpolatePurples,
23
- viridis: d3_scale_chromatic_1.interpolateViridis,
24
- plasma: d3_scale_chromatic_1.interpolatePlasma
25
- };
26
- /**
27
- * Default colors for charts
28
- */
29
- exports.DEFAULT_COLORS = d3_scale_chromatic_1.schemeCategory10;
30
- /**
31
- * Gets a color for a data point based on the colorBy configuration
32
- *
33
- * @param dataPoint - The data point
34
- * @param colorBy - Field name or function to determine color
35
- * @param colorScale - Optional custom color scale
36
- * @returns Color string
37
- *
38
- * @example
39
- * ```ts
40
- * // Using a field name
41
- * getColor({category: 'A', value: 10}, 'category', colorScale)
42
- *
43
- * // Using a function
44
- * getColor({value: 10}, d => d.value > 5 ? 'red' : 'blue')
45
- * ```
46
- */
47
- function getColor(dataPoint, colorBy, colorScale) {
48
- if (typeof colorBy === "function") {
49
- return colorBy(dataPoint);
50
- }
51
- const colorValue = dataPoint[colorBy];
52
- if (colorScale) {
53
- return colorScale(colorValue);
54
- }
55
- // Default: return a hash-based color
56
- return exports.DEFAULT_COLORS[Math.abs(hashString(String(colorValue))) % exports.DEFAULT_COLORS.length];
57
- }
58
- /**
59
- * Creates a color scale function from data
60
- *
61
- * @param data - Array of data points
62
- * @param colorBy - Field name to use for coloring
63
- * @param scheme - Color scheme name or custom palette
64
- * @returns Color scale function
65
- *
66
- * @example
67
- * ```ts
68
- * const colorScale = createColorScale(data, 'category')
69
- * const color = colorScale('A') // Returns color for category 'A'
70
- * ```
71
- */
72
- function createColorScale(data, colorBy, scheme = "category10") {
73
- // Get unique values
74
- const uniqueValues = Array.from(new Set(data.map(d => d[colorBy])));
75
- // Check if values are numeric for sequential scale
76
- const isNumeric = uniqueValues.every(v => typeof v === "number" || !isNaN(Number(v)));
77
- // Handle custom color array
78
- if (Array.isArray(scheme)) {
79
- return (0, d3_scale_1.scaleOrdinal)()
80
- .domain(uniqueValues)
81
- .range(scheme)
82
- .unknown("#999");
83
- }
84
- const colorScheme = exports.COLOR_SCHEMES[scheme] || exports.COLOR_SCHEMES.category10;
85
- if (isNumeric && typeof colorScheme === "function") {
86
- // Use sequential scale for numeric data
87
- return (v) => colorScheme(Number(v) / Math.max(...uniqueValues.map(Number)));
88
- }
89
- else {
90
- // Use ordinal scale for categorical data
91
- const colors = Array.isArray(colorScheme) ? colorScheme : exports.DEFAULT_COLORS;
92
- return (0, d3_scale_1.scaleOrdinal)()
93
- .domain(uniqueValues)
94
- .range(colors)
95
- .unknown("#999");
96
- }
97
- }
98
- /**
99
- * Simple string hash function for deterministic color assignment
100
- */
101
- function hashString(str) {
102
- let hash = 0;
103
- for (let i = 0; i < str.length; i++) {
104
- const char = str.charCodeAt(i);
105
- hash = (hash << 5) - hash + char;
106
- hash = hash & hash; // Convert to 32bit integer
107
- }
108
- return Math.abs(hash);
109
- }
110
- /**
111
- * Generates a size function based on sizeBy configuration
112
- *
113
- * @param dataPoint - The data point
114
- * @param sizeBy - Field name or function to determine size
115
- * @param sizeRange - Min and max size range [min, max]
116
- * @param domain - Optional domain for scaling [minValue, maxValue]
117
- * @returns Size value
118
- */
119
- function getSize(dataPoint, sizeBy, sizeRange = [3, 20], domain) {
120
- let value;
121
- if (typeof sizeBy === "function") {
122
- value = sizeBy(dataPoint);
123
- }
124
- else {
125
- value = dataPoint[sizeBy];
126
- }
127
- if (!domain) {
128
- return value;
129
- }
130
- // Scale value to size range
131
- const [minDomain, maxDomain] = domain;
132
- const [minSize, maxSize] = sizeRange;
133
- if (maxDomain === minDomain) {
134
- return (minSize + maxSize) / 2;
135
- }
136
- const normalized = (value - minDomain) / (maxDomain - minDomain);
137
- return minSize + normalized * (maxSize - minSize);
138
- }
@@ -1,213 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.formatNumber = formatNumber;
37
- exports.formatDate = formatDate;
38
- exports.formatAxis = formatAxis;
39
- exports.createTooltip = createTooltip;
40
- exports.formatLargeNumber = formatLargeNumber;
41
- exports.smartTickFormat = smartTickFormat;
42
- exports.truncateText = truncateText;
43
- const React = __importStar(require("react"));
44
- const d3_time_format_1 = require("d3-time-format");
45
- const d3_format_1 = require("d3-format");
46
- /**
47
- * Format number with specified format string
48
- *
49
- * @param value - Number to format
50
- * @param formatString - D3 format string (e.g., ".2f", ",.0f", ".1%")
51
- * @returns Formatted string
52
- *
53
- * @see https://github.com/d3/d3-format#format for format string options
54
- */
55
- function formatNumber(value, formatString = ",.0f") {
56
- try {
57
- return (0, d3_format_1.format)(formatString)(value);
58
- }
59
- catch {
60
- return String(value);
61
- }
62
- }
63
- /**
64
- * Format date with specified format string
65
- *
66
- * @param value - Date to format
67
- * @param formatString - D3 time format string (e.g., "%Y-%m-%d", "%b %d")
68
- * @returns Formatted string
69
- *
70
- * @see https://github.com/d3/d3-time-format#timeFormat for format string options
71
- */
72
- function formatDate(value, formatString = "%b %d, %Y") {
73
- try {
74
- const date = value instanceof Date ? value : new Date(value);
75
- return (0, d3_time_format_1.timeFormat)(formatString)(date);
76
- }
77
- catch {
78
- return String(value);
79
- }
80
- }
81
- /**
82
- * Creates a formatting function based on the type
83
- *
84
- * @param type - Type of formatting: 'number', 'date', 'percent', or 'currency'
85
- * @param options - Optional configuration for the formatter
86
- * @returns Formatting function
87
- *
88
- * @example
89
- * ```ts
90
- * const fmt = formatAxis('number', { decimals: 2 })
91
- * fmt(1234.567) // "1,234.57"
92
- *
93
- * const dateFmt = formatAxis('date', { format: '%b %Y' })
94
- * dateFmt(new Date()) // "Jan 2024"
95
- * ```
96
- */
97
- function formatAxis(type = "number", options) {
98
- const { decimals = 0, format: customFormat, currency = "$" } = options || {};
99
- switch (type) {
100
- case "date":
101
- return (d) => formatDate(d, customFormat || "%b %d");
102
- case "percent":
103
- return (d) => formatNumber(d, customFormat || `.${decimals}%`);
104
- case "currency":
105
- return (d) => `${currency}${formatNumber(d, customFormat || `,.${decimals}f`)}`;
106
- case "number":
107
- default:
108
- return (d) => formatNumber(d, customFormat || `,.${decimals}f`);
109
- }
110
- }
111
- /**
112
- * Creates a tooltip content generator
113
- *
114
- * @param fields - Array of field names to display
115
- * @param formatters - Optional map of field names to formatting functions
116
- * @param labels - Optional map of field names to display labels
117
- * @returns React element generator function
118
- *
119
- * @example
120
- * ```ts
121
- * const tooltip = createTooltip(
122
- * ['category', 'value'],
123
- * { value: d => formatNumber(d, ',.2f') },
124
- * { category: 'Category', value: 'Value' }
125
- * )
126
- * ```
127
- */
128
- function createTooltip(fields, formatters, labels) {
129
- return (d) => {
130
- return React.createElement("div", { className: "tooltip-content", style: { padding: "8px" } }, fields.map((field) => {
131
- const label = labels?.[field] || field;
132
- const value = d[field];
133
- const formatter = formatters?.[field];
134
- const displayValue = formatter ? formatter(value) : String(value);
135
- return React.createElement("div", { key: field, style: { marginBottom: "4px" } }, React.createElement("strong", null, `${label}: `), displayValue);
136
- }));
137
- };
138
- }
139
- /**
140
- * Formats large numbers with K/M/B suffixes
141
- *
142
- * @param value - Number to format
143
- * @param decimals - Number of decimal places
144
- * @returns Formatted string with suffix
145
- *
146
- * @example
147
- * ```ts
148
- * formatLargeNumber(1234) // "1.2K"
149
- * formatLargeNumber(1234567) // "1.2M"
150
- * formatLargeNumber(1234567890) // "1.2B"
151
- * ```
152
- */
153
- function formatLargeNumber(value, decimals = 1) {
154
- if (value >= 1e9) {
155
- return (value / 1e9).toFixed(decimals) + "B";
156
- }
157
- if (value >= 1e6) {
158
- return (value / 1e6).toFixed(decimals) + "M";
159
- }
160
- if (value >= 1e3) {
161
- return (value / 1e3).toFixed(decimals) + "K";
162
- }
163
- return value.toFixed(decimals);
164
- }
165
- /**
166
- * Smart default tick format for axis labels.
167
- *
168
- * Handles the common problems with raw number-to-string conversion:
169
- * - Floating-point noise (0.30000000000000004 → "0.3")
170
- * - Excessive precision (62.123456789 → "62.1235")
171
- * - Large numbers (1500000 → "1.5M")
172
- * - Strings/non-numbers pass through unchanged
173
- *
174
- * Used as the default axis tickFormat when no explicit format is provided.
175
- */
176
- function smartTickFormat(value) {
177
- if (value == null)
178
- return "";
179
- if (typeof value !== "number")
180
- return String(value);
181
- if (!isFinite(value))
182
- return String(value);
183
- if (value === 0)
184
- return "0";
185
- // Clean floating-point noise (e.g., 0.30000000000000004 → 0.3)
186
- const cleaned = parseFloat(value.toPrecision(12));
187
- const abs = Math.abs(cleaned);
188
- // Large numbers: compact suffixes
189
- if (abs >= 1e9)
190
- return `${parseFloat((cleaned / 1e9).toPrecision(3))}B`;
191
- if (abs >= 1e6)
192
- return `${parseFloat((cleaned / 1e6).toPrecision(3))}M`;
193
- if (abs >= 1e4)
194
- return `${parseFloat((cleaned / 1e3).toPrecision(3))}K`;
195
- // Integers: no decimals needed
196
- if (Number.isInteger(cleaned))
197
- return String(cleaned);
198
- // Floats: up to 6 significant digits, trailing zeros stripped
199
- return String(parseFloat(cleaned.toPrecision(6)));
200
- }
201
- /**
202
- * Truncates text to specified length with ellipsis
203
- *
204
- * @param text - Text to truncate
205
- * @param maxLength - Maximum length before truncation
206
- * @returns Truncated text
207
- */
208
- function truncateText(text, maxLength = 20) {
209
- if (text.length <= maxLength) {
210
- return text;
211
- }
212
- return text.slice(0, maxLength - 3) + "...";
213
- }
@@ -1,49 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DEFAULT_COLOR = void 0;
4
- exports.resolveAccessor = resolveAccessor;
5
- exports.useColorScale = useColorScale;
6
- exports.useSortedData = useSortedData;
7
- const react_1 = require("react");
8
- const colorUtils_1 = require("./colorUtils");
9
- /**
10
- * Default fill color used when no colorBy is specified
11
- */
12
- exports.DEFAULT_COLOR = "#007bff";
13
- /**
14
- * Resolve an accessor (string key or function) into a function.
15
- * Used across chart components to normalize `valueAccessor`, `categoryAccessor`, etc.
16
- */
17
- function resolveAccessor(accessor) {
18
- return typeof accessor === "function"
19
- ? accessor
20
- : (d) => d[accessor];
21
- }
22
- /**
23
- * Hook to create a color scale from data and colorBy configuration.
24
- * Returns undefined when colorBy is absent or is a function accessor.
25
- */
26
- function useColorScale(data, colorBy, colorScheme = "category10") {
27
- return (0, react_1.useMemo)(() => {
28
- if (!colorBy || typeof colorBy === "function")
29
- return undefined;
30
- return (0, colorUtils_1.createColorScale)(data, colorBy, colorScheme);
31
- }, [data, colorBy, colorScheme]);
32
- }
33
- /**
34
- * Hook to sort data by a value accessor.
35
- * Used by BarChart and DotPlot.
36
- */
37
- function useSortedData(data, sort, valueAccessor) {
38
- return (0, react_1.useMemo)(() => {
39
- if (!sort)
40
- return data;
41
- const copy = [...data];
42
- if (typeof sort === "function")
43
- return copy.sort(sort);
44
- const getValue = resolveAccessor(valueAccessor);
45
- return sort === "asc"
46
- ? copy.sort((a, b) => getValue(a) - getValue(b))
47
- : copy.sort((a, b) => getValue(b) - getValue(a));
48
- }, [data, sort, valueAccessor]);
49
- }