semiotic 2.0.2 → 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 (359) 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/Annotation.d.ts +3 -0
  165. package/dist/AnnotationLayer/AnnotationLayer.d.ts +25 -0
  166. package/dist/Axis/Axis.d.ts +7 -0
  167. package/dist/Axis/axisTitle.d.ts +10 -0
  168. package/dist/Axis/index.d.ts +2 -0
  169. package/dist/Axis/summaryGraphic.d.ts +17 -0
  170. package/dist/Brush.d.ts +12 -0
  171. package/dist/DividedLine.d.ts +16 -0
  172. package/dist/FacetController.d.ts +12 -0
  173. package/dist/Frame.d.ts +2 -0
  174. package/dist/InteractionLayer.d.ts +3 -0
  175. package/dist/Legend.d.ts +3 -0
  176. package/dist/MiniMap.d.ts +14 -0
  177. package/dist/MinimapXYFrame.d.ts +10 -0
  178. package/dist/NetworkFrame.d.ts +8 -0
  179. package/dist/OrdinalFrame.d.ts +8 -0
  180. package/dist/ResponsiveFrame.d.ts +22 -0
  181. package/dist/ResponsiveMinimapXYFrame.d.ts +3 -0
  182. package/dist/ResponsiveNetworkFrame.d.ts +3 -0
  183. package/dist/ResponsiveOrdinalFrame.d.ts +3 -0
  184. package/dist/ResponsiveXYFrame.d.ts +3 -0
  185. package/dist/SparkFrame.d.ts +14 -0
  186. package/dist/SparkNetworkFrame.d.ts +5 -0
  187. package/dist/SparkOrdinalFrame.d.ts +5 -0
  188. package/dist/SparkXYFrame.d.ts +5 -0
  189. package/dist/Tooltip/Tooltip.d.ts +141 -0
  190. package/dist/TooltipPositioner/index.d.ts +7 -0
  191. package/dist/VisualizationLayer.d.ts +33 -0
  192. package/dist/XYFrame.d.ts +8 -0
  193. package/dist/annotationLayerBehavior/annotationHandling.d.ts +19 -0
  194. package/dist/annotationLayerBehavior/d3labeler.d.ts +9 -0
  195. package/dist/annotationRules/baseRules.d.ts +25 -0
  196. package/dist/annotationRules/networkframeRules.d.ts +48 -0
  197. package/dist/annotationRules/orframeRules.d.ts +103 -0
  198. package/dist/annotationRules/xyframeRules.d.ts +117 -0
  199. package/dist/batchWork.d.ts +6 -0
  200. package/dist/charts/index.d.ts +62 -0
  201. package/dist/charts/network/ChordDiagram.d.ts +181 -0
  202. package/dist/charts/network/CirclePack.d.ts +103 -0
  203. package/dist/charts/network/ForceDirectedGraph.d.ts +192 -0
  204. package/dist/charts/network/SankeyDiagram.d.ts +195 -0
  205. package/dist/charts/network/TreeDiagram.d.ts +200 -0
  206. package/dist/charts/network/Treemap.d.ts +98 -0
  207. package/dist/charts/ordinal/BarChart.d.ts +119 -0
  208. package/dist/charts/ordinal/BoxPlot.d.ts +125 -0
  209. package/dist/charts/ordinal/DonutChart.d.ts +95 -0
  210. package/dist/charts/ordinal/DotPlot.d.ts +128 -0
  211. package/dist/charts/ordinal/GroupedBarChart.d.ts +113 -0
  212. package/dist/charts/ordinal/PieChart.d.ts +83 -0
  213. package/dist/charts/ordinal/StackedBarChart.d.ts +119 -0
  214. package/dist/charts/ordinal/SwarmPlot.d.ts +137 -0
  215. package/dist/charts/realtime/RealtimeBarChart.d.ts +102 -0
  216. package/dist/charts/realtime/RealtimeLineChart.d.ts +78 -0
  217. package/dist/charts/realtime/RealtimeSwarmChart.d.ts +88 -0
  218. package/dist/charts/realtime/RealtimeWaterfallChart.d.ts +85 -0
  219. package/dist/charts/shared/ChartError.d.ts +19 -0
  220. package/dist/charts/shared/colorUtils.d.ts +62 -0
  221. package/dist/charts/shared/formatUtils.d.ts +82 -0
  222. package/dist/charts/shared/hooks.d.ts +20 -0
  223. package/dist/charts/shared/legendUtils.d.ts +32 -0
  224. package/dist/charts/shared/types.d.ts +58 -0
  225. package/dist/charts/shared/validateChartData.d.ts +41 -0
  226. package/dist/charts/shared/validateProps.d.ts +18 -0
  227. package/dist/charts/xy/AreaChart.d.ts +127 -0
  228. package/dist/charts/xy/BubbleChart.d.ts +157 -0
  229. package/dist/charts/xy/Heatmap.d.ts +153 -0
  230. package/dist/charts/xy/LineChart.d.ts +193 -0
  231. package/dist/charts/xy/Scatterplot.d.ts +50 -0
  232. package/dist/charts/xy/StackedAreaChart.d.ts +131 -0
  233. package/dist/constants/coordinateNames.d.ts +8 -0
  234. package/dist/constants/frame_props.d.ts +13 -0
  235. package/dist/constants/jsx.d.ts +19 -0
  236. package/dist/data/dataFunctions.d.ts +45 -0
  237. package/dist/data/multiAccessorUtils.d.ts +1 -0
  238. package/dist/data/networkPipelineCache.d.ts +27 -0
  239. package/dist/data/ordinalPipelineCache.d.ts +33 -0
  240. package/dist/data/unflowedFunctions.d.ts +1 -0
  241. package/dist/data/xyPipelineCache.d.ts +35 -0
  242. package/dist/generic_utilities/functions.d.ts +1 -0
  243. package/dist/index.d.ts +133 -0
  244. package/dist/interactionLayerBehavior/InteractionCanvas.d.ts +20 -0
  245. package/dist/network.js +8520 -0
  246. package/dist/network.js.map +1 -0
  247. package/dist/network.min.js +1 -0
  248. package/dist/network.module.js +8484 -0
  249. package/dist/network.module.js.map +1 -0
  250. package/dist/network.module.min.js +1 -0
  251. package/dist/ordinal.js +9276 -0
  252. package/dist/ordinal.js.map +1 -0
  253. package/dist/ordinal.min.js +1 -0
  254. package/dist/ordinal.module.js +9242 -0
  255. package/dist/ordinal.module.js.map +1 -0
  256. package/dist/ordinal.module.min.js +1 -0
  257. package/dist/processing/InteractionItems.d.ts +13 -0
  258. package/dist/processing/hierarchyUtils.d.ts +16 -0
  259. package/dist/processing/layouts/chordLayout.d.ts +2 -0
  260. package/dist/processing/layouts/forceLayout.d.ts +3 -0
  261. package/dist/processing/layouts/hierarchyLayout.d.ts +10 -0
  262. package/dist/processing/layouts/index.d.ts +8 -0
  263. package/dist/processing/layouts/sankeyLayout.d.ts +8 -0
  264. package/dist/processing/layouts/simpleLayouts.d.ts +7 -0
  265. package/dist/processing/layouts/types.d.ts +17 -0
  266. package/dist/processing/network.d.ts +111 -0
  267. package/dist/processing/networkDefaults.d.ts +36 -0
  268. package/dist/processing/networkLayoutHelpers.d.ts +54 -0
  269. package/dist/processing/ordinal.d.ts +102 -0
  270. package/dist/processing/ordinalConstants.d.ts +33 -0
  271. package/dist/processing/ordinalOverlays.d.ts +33 -0
  272. package/dist/processing/ordinalRenderPipeline.d.ts +148 -0
  273. package/dist/processing/xyDrawing.d.ts +140 -0
  274. package/dist/realtime/BinAccumulator.d.ts +8 -0
  275. package/dist/realtime/IncrementalExtent.d.ts +13 -0
  276. package/dist/realtime/RealtimeFrame.d.ts +4 -0
  277. package/dist/realtime/RingBuffer.d.ts +19 -0
  278. package/dist/realtime/renderers/barRenderer.d.ts +2 -0
  279. package/dist/realtime/renderers/candlestickRenderer.d.ts +2 -0
  280. package/dist/realtime/renderers/lineRenderer.d.ts +2 -0
  281. package/dist/realtime/renderers/swarmRenderer.d.ts +2 -0
  282. package/dist/realtime/renderers/types.d.ts +9 -0
  283. package/dist/realtime/renderers/waterfallRenderer.d.ts +3 -0
  284. package/dist/realtime/types.d.ts +113 -0
  285. package/dist/realtime.js +1598 -0
  286. package/dist/realtime.js.map +1 -0
  287. package/dist/realtime.min.js +1 -0
  288. package/dist/realtime.module.js +1566 -0
  289. package/dist/realtime.module.js.map +1 -0
  290. package/dist/realtime.module.min.js +1 -0
  291. package/dist/semiotic-ai.d.ts +28 -0
  292. package/dist/semiotic-ai.js +18722 -0
  293. package/dist/semiotic-ai.js.map +1 -0
  294. package/dist/semiotic-ai.min.js +1 -0
  295. package/dist/semiotic-ai.module.js +18668 -0
  296. package/dist/semiotic-ai.module.js.map +1 -0
  297. package/dist/semiotic-ai.module.min.js +1 -0
  298. package/dist/semiotic-network.d.ts +19 -0
  299. package/dist/semiotic-ordinal.d.ts +18 -0
  300. package/dist/semiotic-realtime.d.ts +23 -0
  301. package/dist/semiotic-server.d.ts +1 -0
  302. package/dist/semiotic-xy.d.ts +24 -0
  303. package/dist/semiotic.d.ts +51 -0
  304. package/dist/semiotic.js +18723 -12996
  305. package/dist/semiotic.js.map +1 -0
  306. package/dist/semiotic.min.js +1 -0
  307. package/dist/semiotic.module.js +18666 -12965
  308. package/dist/semiotic.module.js.map +1 -0
  309. package/dist/semiotic.module.min.js +1 -0
  310. package/dist/server/renderToStaticSVG.d.ts +9 -0
  311. package/dist/server.js +8360 -0
  312. package/dist/server.js.map +1 -0
  313. package/dist/server.min.js +1 -0
  314. package/dist/server.module.js +8331 -0
  315. package/dist/server.module.js.map +1 -0
  316. package/dist/server.module.min.js +1 -0
  317. package/dist/store/TooltipStore.d.ts +2 -0
  318. package/dist/store/createStore.d.ts +1 -0
  319. package/dist/svg/SvgHelper.d.ts +33 -0
  320. package/dist/svg/areaDrawing.d.ts +21 -0
  321. package/dist/svg/boxplotRenderer.d.ts +15 -0
  322. package/dist/svg/bucketizedRenderer.d.ts +16 -0
  323. package/dist/svg/ckbinsRenderer.d.ts +20 -0
  324. package/dist/svg/ckmeans.d.ts +69 -0
  325. package/dist/svg/contourLayout.d.ts +6 -0
  326. package/dist/svg/contourRenderer.d.ts +12 -0
  327. package/dist/svg/edgeGenerators.d.ts +51 -0
  328. package/dist/svg/frameFunctions.d.ts +108 -0
  329. package/dist/svg/graphAlgorithms.d.ts +14 -0
  330. package/dist/svg/hexbinLayout.d.ts +7 -0
  331. package/dist/svg/lineDrawing.d.ts +99 -0
  332. package/dist/svg/networkDrawing.d.ts +16 -0
  333. package/dist/svg/nodeGenerators.d.ts +58 -0
  334. package/dist/svg/pieceDrawing.d.ts +12 -0
  335. package/dist/svg/pieceLayouts.d.ts +53 -0
  336. package/dist/svg/sankeyLinks.d.ts +3 -0
  337. package/dist/svg/summaryAxis.d.ts +6 -0
  338. package/dist/svg/summaryLayouts.d.ts +53 -0
  339. package/dist/svg/swarmLayout.d.ts +13 -0
  340. package/dist/types/annotationTypes.d.ts +135 -0
  341. package/dist/types/canvasTypes.d.ts +9 -0
  342. package/dist/types/generalTypes.d.ts +238 -0
  343. package/dist/types/interactionTypes.d.ts +72 -0
  344. package/dist/types/legendTypes.d.ts +20 -0
  345. package/dist/types/networkTypes.d.ts +175 -0
  346. package/dist/types/ordinalTypes.d.ts +112 -0
  347. package/dist/types/xyTypes.d.ts +115 -0
  348. package/dist/useBoundingRect.d.ts +2 -0
  349. package/dist/useDerivedStateFromProps.d.ts +1 -0
  350. package/dist/useLegacyUnmountCallback.d.ts +2 -0
  351. package/dist/visualizationLayerBehavior/axis.d.ts +36 -0
  352. package/dist/visualizationLayerBehavior/general.d.ts +80 -0
  353. package/dist/xy.js +7944 -0
  354. package/dist/xy.js.map +1 -0
  355. package/dist/xy.min.js +1 -0
  356. package/dist/xy.module.js +7903 -0
  357. package/dist/xy.module.js.map +1 -0
  358. package/dist/xy.module.min.js +1 -0
  359. package/package.json +116 -65
@@ -0,0 +1,104 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RingBuffer = void 0;
4
+ class RingBuffer {
5
+ constructor(_capacity) {
6
+ this._capacity = _capacity;
7
+ this.head = 0;
8
+ this._size = 0;
9
+ if (_capacity < 1) {
10
+ throw new Error("RingBuffer capacity must be at least 1");
11
+ }
12
+ this.buffer = new Array(_capacity);
13
+ }
14
+ push(value) {
15
+ let evicted;
16
+ if (this._size === this._capacity) {
17
+ // Buffer is full — the slot at head is the oldest item
18
+ evicted = this.buffer[this.head];
19
+ }
20
+ else {
21
+ this._size++;
22
+ }
23
+ this.buffer[this.head] = value;
24
+ this.head = (this.head + 1) % this._capacity;
25
+ return evicted;
26
+ }
27
+ pushMany(values) {
28
+ const evicted = [];
29
+ for (const v of values) {
30
+ const e = this.push(v);
31
+ if (e !== undefined) {
32
+ evicted.push(e);
33
+ }
34
+ }
35
+ return evicted;
36
+ }
37
+ get(index) {
38
+ if (index < 0 || index >= this._size)
39
+ return undefined;
40
+ const realIndex = (this.head - this._size + index + this._capacity) % this._capacity;
41
+ return this.buffer[realIndex];
42
+ }
43
+ peek() {
44
+ if (this._size === 0)
45
+ return undefined;
46
+ return this.buffer[(this.head - 1 + this._capacity) % this._capacity];
47
+ }
48
+ peekOldest() {
49
+ if (this._size === 0)
50
+ return undefined;
51
+ return this.buffer[(this.head - this._size + this._capacity) % this._capacity];
52
+ }
53
+ [Symbol.iterator]() {
54
+ let i = 0;
55
+ const self = this;
56
+ return {
57
+ next() {
58
+ if (i >= self._size)
59
+ return { done: true, value: undefined };
60
+ return { done: false, value: self.get(i++) };
61
+ }
62
+ };
63
+ }
64
+ toArray() {
65
+ const result = [];
66
+ for (const item of this) {
67
+ result.push(item);
68
+ }
69
+ return result;
70
+ }
71
+ resize(newCapacity) {
72
+ if (newCapacity < 1) {
73
+ throw new Error("RingBuffer capacity must be at least 1");
74
+ }
75
+ const items = this.toArray();
76
+ const evicted = [];
77
+ while (items.length > newCapacity) {
78
+ evicted.push(items.shift());
79
+ }
80
+ this._capacity = newCapacity;
81
+ this.buffer = new Array(newCapacity);
82
+ this.head = 0;
83
+ this._size = 0;
84
+ for (const item of items) {
85
+ this.push(item);
86
+ }
87
+ return evicted;
88
+ }
89
+ clear() {
90
+ this.buffer = new Array(this._capacity);
91
+ this.head = 0;
92
+ this._size = 0;
93
+ }
94
+ get size() {
95
+ return this._size;
96
+ }
97
+ get capacity() {
98
+ return this._capacity;
99
+ }
100
+ get full() {
101
+ return this._size === this._capacity;
102
+ }
103
+ }
104
+ exports.RingBuffer = RingBuffer;
@@ -0,0 +1,133 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.barRenderer = void 0;
4
+ const BinAccumulator_1 = require("../BinAccumulator");
5
+ const DEFAULT_PALETTE = [
6
+ "#4e79a7", "#f28e2b", "#e15759", "#76b7b2",
7
+ "#59a14f", "#edc948", "#b07aa1", "#ff9da7",
8
+ "#9c755f", "#bab0ac"
9
+ ];
10
+ const barRenderer = (ctx, data, scales, layout, style, accessors, annotations, options) => {
11
+ const binSize = options?.binSize;
12
+ if (!binSize)
13
+ return;
14
+ const { time: timeScale, value: valueScale } = scales;
15
+ const { timeAxis } = layout;
16
+ const { time: getTime, value: getValue, category: getCategory } = accessors;
17
+ const barColors = options?.barColors;
18
+ const barStyle = options?.barStyle;
19
+ const bins = (0, BinAccumulator_1.computeBins)(data, getTime, getValue, binSize, getCategory);
20
+ if (bins.size === 0)
21
+ return;
22
+ const [domainMin, domainMax] = timeScale.domain();
23
+ const gap = barStyle?.gap ?? 1;
24
+ const hasCategories = getCategory != null;
25
+ // Determine category order: barColors keys first, then alphabetical for unlisted
26
+ let categoryOrder = null;
27
+ if (hasCategories) {
28
+ const allCategories = new Set();
29
+ for (const bin of bins.values()) {
30
+ for (const cat of bin.categories.keys()) {
31
+ allCategories.add(cat);
32
+ }
33
+ }
34
+ const colorKeys = barColors ? Object.keys(barColors) : [];
35
+ const listed = new Set(colorKeys);
36
+ const unlisted = Array.from(allCategories).filter(c => !listed.has(c)).sort();
37
+ categoryOrder = [...colorKeys.filter(k => allCategories.has(k)), ...unlisted];
38
+ }
39
+ // Bar stroke settings
40
+ const hasBarStroke = barStyle?.stroke != null;
41
+ if (hasBarStroke) {
42
+ ctx.strokeStyle = barStyle.stroke;
43
+ ctx.lineWidth = barStyle?.strokeWidth ?? 1;
44
+ }
45
+ for (const bin of bins.values()) {
46
+ if (timeAxis === "x") {
47
+ const clampedStart = Math.max(bin.start, domainMin);
48
+ const clampedEnd = Math.min(bin.end, domainMax);
49
+ if (clampedStart >= clampedEnd)
50
+ continue;
51
+ const rawX0 = timeScale(clampedStart);
52
+ const rawX1 = timeScale(clampedEnd);
53
+ const x0 = Math.min(rawX0, rawX1) + gap / 2;
54
+ const x1 = Math.max(rawX0, rawX1) - gap / 2;
55
+ const barWidth = x1 - x0;
56
+ if (barWidth <= 0)
57
+ continue;
58
+ if (hasCategories && categoryOrder) {
59
+ let cumulativeBase = 0;
60
+ let paletteIdx = 0;
61
+ for (const cat of categoryOrder) {
62
+ const catVal = bin.categories.get(cat) || 0;
63
+ if (catVal === 0)
64
+ continue;
65
+ const yBottom = valueScale(cumulativeBase);
66
+ const yTop = valueScale(cumulativeBase + catVal);
67
+ const rectY = Math.min(yBottom, yTop);
68
+ const rectH = Math.abs(yBottom - yTop);
69
+ ctx.fillStyle = (barColors && barColors[cat]) || DEFAULT_PALETTE[paletteIdx % DEFAULT_PALETTE.length];
70
+ ctx.fillRect(x0, rectY, barWidth, rectH);
71
+ if (hasBarStroke)
72
+ ctx.strokeRect(x0, rectY, barWidth, rectH);
73
+ cumulativeBase += catVal;
74
+ paletteIdx++;
75
+ }
76
+ }
77
+ else {
78
+ const yZero = valueScale(0);
79
+ const yTop = valueScale(bin.total);
80
+ const rectY = Math.min(yZero, yTop);
81
+ const rectH = Math.abs(yZero - yTop);
82
+ ctx.fillStyle = barStyle?.fill || style.stroke || "#007bff";
83
+ ctx.fillRect(x0, rectY, barWidth, rectH);
84
+ if (hasBarStroke)
85
+ ctx.strokeRect(x0, rectY, barWidth, rectH);
86
+ }
87
+ }
88
+ else {
89
+ // timeAxis === "y": horizontal bars
90
+ const clampedStart = Math.max(bin.start, domainMin);
91
+ const clampedEnd = Math.min(bin.end, domainMax);
92
+ if (clampedStart >= clampedEnd)
93
+ continue;
94
+ const rawY0 = timeScale(clampedStart);
95
+ const rawY1 = timeScale(clampedEnd);
96
+ const y0 = Math.min(rawY0, rawY1) + gap / 2;
97
+ const y1 = Math.max(rawY0, rawY1) - gap / 2;
98
+ const barHeight = y1 - y0;
99
+ if (barHeight <= 0)
100
+ continue;
101
+ if (hasCategories && categoryOrder) {
102
+ let cumulativeBase = 0;
103
+ let paletteIdx = 0;
104
+ for (const cat of categoryOrder) {
105
+ const catVal = bin.categories.get(cat) || 0;
106
+ if (catVal === 0)
107
+ continue;
108
+ const xLeft = valueScale(cumulativeBase);
109
+ const xRight = valueScale(cumulativeBase + catVal);
110
+ const rectX = Math.min(xLeft, xRight);
111
+ const rectW = Math.abs(xRight - xLeft);
112
+ ctx.fillStyle = (barColors && barColors[cat]) || DEFAULT_PALETTE[paletteIdx % DEFAULT_PALETTE.length];
113
+ ctx.fillRect(rectX, y0, rectW, barHeight);
114
+ if (hasBarStroke)
115
+ ctx.strokeRect(rectX, y0, rectW, barHeight);
116
+ cumulativeBase += catVal;
117
+ paletteIdx++;
118
+ }
119
+ }
120
+ else {
121
+ const xZero = valueScale(0);
122
+ const xEnd = valueScale(bin.total);
123
+ const rectX = Math.min(xZero, xEnd);
124
+ const rectW = Math.abs(xEnd - xZero);
125
+ ctx.fillStyle = barStyle?.fill || style.stroke || "#007bff";
126
+ ctx.fillRect(rectX, y0, rectW, barHeight);
127
+ if (hasBarStroke)
128
+ ctx.strokeRect(rectX, y0, rectW, barHeight);
129
+ }
130
+ }
131
+ }
132
+ };
133
+ exports.barRenderer = barRenderer;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.candlestickRenderer = void 0;
4
+ const candlestickRenderer = () => {
5
+ throw new Error("candlestickRenderer: Not yet implemented");
6
+ };
7
+ exports.candlestickRenderer = candlestickRenderer;
@@ -0,0 +1,164 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.lineRenderer = void 0;
4
+ function resolveColor(value, thresholds, baseColor) {
5
+ let color = baseColor;
6
+ for (const t of thresholds) {
7
+ if (t.thresholdType === "lesser") {
8
+ if (value < t.value)
9
+ color = t.color;
10
+ }
11
+ else {
12
+ if (value > t.value)
13
+ color = t.color;
14
+ }
15
+ }
16
+ return color;
17
+ }
18
+ const lineRenderer = (ctx, data, scales, layout, style, accessors, annotations) => {
19
+ const { time: timeScale, value: valueScale } = scales;
20
+ const { timeAxis } = layout;
21
+ const { time: getTime, value: getValue } = accessors;
22
+ const baseColor = style.stroke || "#007bff";
23
+ // Extract color thresholds from annotations
24
+ const colorThresholds = annotations
25
+ ? annotations
26
+ .filter((a) => a.type === "threshold" && a.color)
27
+ .map((a) => ({
28
+ value: a.value,
29
+ color: a.color,
30
+ thresholdType: (a.thresholdType || "greater")
31
+ }))
32
+ : null;
33
+ const hasColorThresholds = colorThresholds && colorThresholds.length > 0;
34
+ // Fast path: no color thresholds — single-path draw, zero overhead
35
+ if (!hasColorThresholds) {
36
+ ctx.beginPath();
37
+ ctx.strokeStyle = baseColor;
38
+ ctx.lineWidth = style.strokeWidth || 2;
39
+ if (style.strokeDasharray) {
40
+ ctx.setLineDash(style.strokeDasharray.split(/[\s,]+/).map(Number));
41
+ }
42
+ else {
43
+ ctx.setLineDash([]);
44
+ }
45
+ let started = false;
46
+ for (const d of data) {
47
+ const t = getTime(d);
48
+ const v = getValue(d);
49
+ if (t == null || v == null || Number.isNaN(t) || Number.isNaN(v)) {
50
+ started = false;
51
+ continue;
52
+ }
53
+ const tPixel = timeScale(t);
54
+ const vPixel = valueScale(v);
55
+ const x = timeAxis === "x" ? tPixel : vPixel;
56
+ const y = timeAxis === "x" ? vPixel : tPixel;
57
+ if (!started) {
58
+ ctx.moveTo(x, y);
59
+ started = true;
60
+ }
61
+ else {
62
+ ctx.lineTo(x, y);
63
+ }
64
+ }
65
+ ctx.stroke();
66
+ return;
67
+ }
68
+ // Threshold mode: segment-based drawing
69
+ ctx.lineWidth = style.strokeWidth || 2;
70
+ if (style.strokeDasharray) {
71
+ ctx.setLineDash(style.strokeDasharray.split(/[\s,]+/).map(Number));
72
+ }
73
+ else {
74
+ ctx.setLineDash([]);
75
+ }
76
+ let prevX = null;
77
+ let prevY = null;
78
+ let prevValue = null;
79
+ let prevColor = null;
80
+ let pathStarted = false;
81
+ function toPixel(t, v) {
82
+ const tPixel = timeScale(t);
83
+ const vPixel = valueScale(v);
84
+ return timeAxis === "x" ? [tPixel, vPixel] : [vPixel, tPixel];
85
+ }
86
+ function startSegment(color, x, y) {
87
+ ctx.beginPath();
88
+ ctx.strokeStyle = color;
89
+ ctx.moveTo(x, y);
90
+ pathStarted = true;
91
+ }
92
+ function endSegment() {
93
+ if (pathStarted) {
94
+ ctx.stroke();
95
+ pathStarted = false;
96
+ }
97
+ }
98
+ for (const d of data) {
99
+ const t = getTime(d);
100
+ const v = getValue(d);
101
+ if (t == null || v == null || Number.isNaN(t) || Number.isNaN(v)) {
102
+ endSegment();
103
+ prevX = null;
104
+ prevY = null;
105
+ prevValue = null;
106
+ prevColor = null;
107
+ continue;
108
+ }
109
+ const [x, y] = toPixel(t, v);
110
+ const currColor = resolveColor(v, colorThresholds, baseColor);
111
+ if (prevX === null || prevColor === null || prevValue === null) {
112
+ // First valid point
113
+ startSegment(currColor, x, y);
114
+ prevX = x;
115
+ prevY = y;
116
+ prevValue = v;
117
+ prevColor = currColor;
118
+ continue;
119
+ }
120
+ if (currColor === prevColor) {
121
+ ctx.lineTo(x, y);
122
+ }
123
+ else {
124
+ // Find all thresholds crossed between prevValue and v, sorted by interpolation t
125
+ const crossings = [];
126
+ for (const threshold of colorThresholds) {
127
+ const tv = threshold.value;
128
+ // Check if the threshold value lies between prevValue and v
129
+ if ((prevValue <= tv && v >= tv) || (prevValue >= tv && v <= tv)) {
130
+ // Don't add crossing at exact endpoints
131
+ if (prevValue !== tv && v !== tv) {
132
+ const interpT = (tv - prevValue) / (v - prevValue);
133
+ crossings.push({ t: interpT, color: "" }); // color resolved after sorting
134
+ }
135
+ }
136
+ }
137
+ // Sort crossings by interpolation parameter
138
+ crossings.sort((a, b) => a.t - b.t);
139
+ // Walk through crossings
140
+ let lastT = 0;
141
+ let runningColor = prevColor;
142
+ for (const crossing of crossings) {
143
+ const midX = prevX + (x - prevX) * crossing.t;
144
+ const midY = prevY + (y - prevY) * crossing.t;
145
+ // Determine value at crossing point to resolve next color
146
+ const midValue = prevValue + (v - prevValue) * crossing.t;
147
+ // Nudge slightly past the crossing to determine the color on the other side
148
+ const nudgedValue = prevValue + (v - prevValue) * Math.min(crossing.t + 0.0001, 1);
149
+ const nextColor = resolveColor(nudgedValue, colorThresholds, baseColor);
150
+ ctx.lineTo(midX, midY);
151
+ endSegment();
152
+ startSegment(nextColor, midX, midY);
153
+ runningColor = nextColor;
154
+ }
155
+ ctx.lineTo(x, y);
156
+ }
157
+ prevX = x;
158
+ prevY = y;
159
+ prevValue = v;
160
+ prevColor = currColor;
161
+ }
162
+ endSegment();
163
+ };
164
+ exports.lineRenderer = lineRenderer;
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.swarmRenderer = void 0;
4
+ const DEFAULT_PALETTE = [
5
+ "#007bff", "#28a745", "#dc3545", "#fd7e14", "#6f42c1",
6
+ "#20c997", "#e83e8c", "#17a2b8", "#6610f2", "#ffc107"
7
+ ];
8
+ function resolveColor(value, thresholds, baseColor) {
9
+ let color = baseColor;
10
+ for (const t of thresholds) {
11
+ if (t.thresholdType === "lesser") {
12
+ if (value < t.value)
13
+ color = t.color;
14
+ }
15
+ else {
16
+ if (value > t.value)
17
+ color = t.color;
18
+ }
19
+ }
20
+ return color;
21
+ }
22
+ const swarmRenderer = (ctx, data, scales, layout, style, accessors, annotations, options) => {
23
+ const { time: timeScale, value: valueScale } = scales;
24
+ const { timeAxis } = layout;
25
+ const { time: getTime, value: getValue, category: getCategory } = accessors;
26
+ const ss = options?.swarmStyle;
27
+ const barColors = options?.barColors;
28
+ const radius = ss?.radius ?? 3;
29
+ const defaultFill = ss?.fill ?? style.stroke ?? "#007bff";
30
+ const opacity = ss?.opacity ?? 0.7;
31
+ const hasStroke = ss?.stroke != null;
32
+ // Extract color thresholds from annotations
33
+ const colorThresholds = annotations
34
+ ? annotations
35
+ .filter((a) => a.type === "threshold" && a.color)
36
+ .map((a) => ({
37
+ value: a.value,
38
+ color: a.color,
39
+ thresholdType: (a.thresholdType || "greater")
40
+ }))
41
+ : null;
42
+ const hasColorThresholds = colorThresholds && colorThresholds.length > 0;
43
+ ctx.globalAlpha = opacity;
44
+ let paletteIndex = 0;
45
+ const categoryColorCache = {};
46
+ for (const d of data) {
47
+ const t = getTime(d);
48
+ const v = getValue(d);
49
+ if (v == null || Number.isNaN(v))
50
+ continue;
51
+ let x, y;
52
+ if (timeAxis === "x") {
53
+ x = timeScale(t);
54
+ y = valueScale(v);
55
+ }
56
+ else {
57
+ x = valueScale(v);
58
+ y = timeScale(t);
59
+ }
60
+ // Determine fill color
61
+ let fill = defaultFill;
62
+ if (getCategory) {
63
+ const cat = getCategory(d);
64
+ if (barColors && barColors[cat]) {
65
+ fill = barColors[cat];
66
+ }
67
+ else {
68
+ if (!(cat in categoryColorCache)) {
69
+ categoryColorCache[cat] = DEFAULT_PALETTE[paletteIndex % DEFAULT_PALETTE.length];
70
+ paletteIndex++;
71
+ }
72
+ fill = categoryColorCache[cat];
73
+ }
74
+ }
75
+ // Threshold coloring overrides category/default fill
76
+ if (hasColorThresholds) {
77
+ fill = resolveColor(v, colorThresholds, fill);
78
+ }
79
+ ctx.fillStyle = fill;
80
+ ctx.beginPath();
81
+ ctx.arc(x, y, radius, 0, Math.PI * 2);
82
+ ctx.fill();
83
+ if (hasStroke) {
84
+ ctx.strokeStyle = ss.stroke;
85
+ ctx.lineWidth = ss?.strokeWidth ?? 1;
86
+ ctx.stroke();
87
+ }
88
+ }
89
+ ctx.globalAlpha = 1;
90
+ };
91
+ exports.swarmRenderer = swarmRenderer;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,163 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.waterfallRenderer = void 0;
4
+ exports.computeWaterfallExtent = computeWaterfallExtent;
5
+ const DEFAULT_POSITIVE_COLOR = "#28a745";
6
+ const DEFAULT_NEGATIVE_COLOR = "#dc3545";
7
+ function computeWaterfallExtent(data, getValue) {
8
+ let min = 0;
9
+ let max = 0;
10
+ let cumulative = 0;
11
+ for (const d of data) {
12
+ const v = getValue(d);
13
+ if (v == null || Number.isNaN(v))
14
+ continue;
15
+ cumulative += v;
16
+ if (cumulative < min)
17
+ min = cumulative;
18
+ if (cumulative > max)
19
+ max = cumulative;
20
+ }
21
+ return [min, max];
22
+ }
23
+ const waterfallRenderer = (ctx, data, scales, layout, style, accessors, annotations, options) => {
24
+ const { time: timeScale, value: valueScale } = scales;
25
+ const { timeAxis, width, height } = layout;
26
+ const { time: getTime, value: getValue } = accessors;
27
+ const ws = options?.waterfallStyle;
28
+ const positiveColor = ws?.positiveColor ?? DEFAULT_POSITIVE_COLOR;
29
+ const negativeColor = ws?.negativeColor ?? DEFAULT_NEGATIVE_COLOR;
30
+ const gap = ws?.gap ?? 1;
31
+ const connectorStroke = ws?.connectorStroke;
32
+ const connectorWidth = ws?.connectorWidth ?? 1;
33
+ const hasStroke = ws?.stroke != null;
34
+ if (hasStroke) {
35
+ ctx.strokeStyle = ws.stroke;
36
+ ctx.lineWidth = ws?.strokeWidth ?? 1;
37
+ }
38
+ // Collect into array for random access (skip NaN/null values)
39
+ const arr = [];
40
+ for (const d of data) {
41
+ const v = getValue(d);
42
+ if (v == null || Number.isNaN(v))
43
+ continue;
44
+ arr.push(d);
45
+ }
46
+ if (arr.length === 0)
47
+ return;
48
+ let baseline = 0;
49
+ // Track the end edge of the previous bar and its cumulative value for connectors
50
+ let prevEdge = null;
51
+ let prevCumulative = null;
52
+ for (let i = 0; i < arr.length; i++) {
53
+ const d = arr[i];
54
+ const t = getTime(d);
55
+ const delta = getValue(d);
56
+ const cumEnd = baseline + delta;
57
+ // Compute bar width from time gap to next point
58
+ let barWidthTime;
59
+ if (i < arr.length - 1) {
60
+ barWidthTime = getTime(arr[i + 1]) - t;
61
+ }
62
+ else if (i > 0) {
63
+ barWidthTime = t - getTime(arr[i - 1]);
64
+ }
65
+ else {
66
+ // Single point fallback: use 0 to trigger pixel fallback
67
+ barWidthTime = 0;
68
+ }
69
+ ctx.fillStyle = delta >= 0 ? positiveColor : negativeColor;
70
+ if (timeAxis === "x") {
71
+ let rawX0, rawX1;
72
+ if (barWidthTime !== 0) {
73
+ rawX0 = timeScale(t);
74
+ rawX1 = timeScale(t + barWidthTime);
75
+ }
76
+ else {
77
+ rawX0 = timeScale(t);
78
+ rawX1 = rawX0 + width / 10;
79
+ }
80
+ const x0 = Math.min(rawX0, rawX1) + gap / 2;
81
+ const x1 = Math.max(rawX0, rawX1) - gap / 2;
82
+ const barWidth = x1 - x0;
83
+ if (barWidth <= 0) {
84
+ baseline = cumEnd;
85
+ prevEdge = x1;
86
+ prevCumulative = cumEnd;
87
+ continue;
88
+ }
89
+ const yBaseline = valueScale(baseline);
90
+ const yTop = valueScale(cumEnd);
91
+ const rectY = Math.min(yBaseline, yTop);
92
+ const rectH = Math.abs(yBaseline - yTop);
93
+ // Connector line at the baseline level from previous bar's right edge to this bar's left edge
94
+ if (connectorStroke && prevEdge != null && prevCumulative != null) {
95
+ ctx.save();
96
+ ctx.strokeStyle = connectorStroke;
97
+ ctx.lineWidth = connectorWidth;
98
+ const connY = valueScale(prevCumulative);
99
+ ctx.beginPath();
100
+ ctx.moveTo(prevEdge, connY);
101
+ ctx.lineTo(x0, connY);
102
+ ctx.stroke();
103
+ ctx.restore();
104
+ if (hasStroke) {
105
+ ctx.strokeStyle = ws.stroke;
106
+ ctx.lineWidth = ws?.strokeWidth ?? 1;
107
+ }
108
+ }
109
+ ctx.fillRect(x0, rectY, barWidth, rectH);
110
+ if (hasStroke)
111
+ ctx.strokeRect(x0, rectY, barWidth, rectH);
112
+ prevEdge = x1;
113
+ }
114
+ else {
115
+ // timeAxis === "y": horizontal bars
116
+ let rawY0, rawY1;
117
+ if (barWidthTime !== 0) {
118
+ rawY0 = timeScale(t);
119
+ rawY1 = timeScale(t + barWidthTime);
120
+ }
121
+ else {
122
+ rawY0 = timeScale(t);
123
+ rawY1 = rawY0 + height / 10;
124
+ }
125
+ const y0 = Math.min(rawY0, rawY1) + gap / 2;
126
+ const y1 = Math.max(rawY0, rawY1) - gap / 2;
127
+ const barHeight = y1 - y0;
128
+ if (barHeight <= 0) {
129
+ baseline = cumEnd;
130
+ prevEdge = y1;
131
+ prevCumulative = cumEnd;
132
+ continue;
133
+ }
134
+ const xBaseline = valueScale(baseline);
135
+ const xEnd = valueScale(cumEnd);
136
+ const rectX = Math.min(xBaseline, xEnd);
137
+ const rectW = Math.abs(xEnd - xBaseline);
138
+ // Connector line at the baseline level from previous bar's bottom edge to this bar's top edge
139
+ if (connectorStroke && prevEdge != null && prevCumulative != null) {
140
+ ctx.save();
141
+ ctx.strokeStyle = connectorStroke;
142
+ ctx.lineWidth = connectorWidth;
143
+ const connX = valueScale(prevCumulative);
144
+ ctx.beginPath();
145
+ ctx.moveTo(connX, prevEdge);
146
+ ctx.lineTo(connX, y0);
147
+ ctx.stroke();
148
+ ctx.restore();
149
+ if (hasStroke) {
150
+ ctx.strokeStyle = ws.stroke;
151
+ ctx.lineWidth = ws?.strokeWidth ?? 1;
152
+ }
153
+ }
154
+ ctx.fillRect(rectX, y0, rectW, barHeight);
155
+ if (hasStroke)
156
+ ctx.strokeRect(rectX, y0, rectW, barHeight);
157
+ prevEdge = y1;
158
+ }
159
+ baseline = cumEnd;
160
+ prevCumulative = cumEnd;
161
+ }
162
+ };
163
+ exports.waterfallRenderer = waterfallRenderer;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });