semiotic 2.0.3 → 3.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (424) hide show
  1. package/CLAUDE.md +530 -0
  2. package/README.md +190 -37
  3. package/ai/cli.js +48 -0
  4. package/ai/dist/ai/componentRegistry.js +45 -0
  5. package/ai/dist/ai/mcp-server.js +99 -0
  6. package/ai/dist/ai/renderHOCToSVG.js +77 -0
  7. package/ai/dist/src/components/Annotation.js +358 -0
  8. package/ai/dist/src/components/AnnotationLayer/AnnotationLayer.js +369 -0
  9. package/ai/dist/src/components/Axis/Axis.js +373 -0
  10. package/ai/dist/src/components/Axis/axisTitle.js +14 -0
  11. package/ai/dist/src/components/Axis/index.js +7 -0
  12. package/ai/dist/src/components/Axis/summaryGraphic.js +37 -0
  13. package/ai/dist/src/components/Brush.js +84 -0
  14. package/ai/dist/src/components/DividedLine.js +65 -0
  15. package/ai/dist/src/components/FacetController.js +259 -0
  16. package/ai/dist/src/components/Frame.js +139 -0
  17. package/ai/dist/src/components/InteractionLayer.js +328 -0
  18. package/ai/dist/src/components/Legend.js +140 -0
  19. package/ai/dist/src/components/MiniMap.js +75 -0
  20. package/ai/dist/src/components/MinimapXYFrame.js +99 -0
  21. package/ai/dist/src/components/NetworkFrame.js +335 -0
  22. package/ai/dist/src/components/OrdinalFrame.js +437 -0
  23. package/ai/dist/src/components/ResponsiveFrame.js +68 -0
  24. package/ai/dist/src/components/ResponsiveMinimapXYFrame.js +11 -0
  25. package/ai/dist/src/components/ResponsiveNetworkFrame.js +11 -0
  26. package/ai/dist/src/components/ResponsiveOrdinalFrame.js +11 -0
  27. package/ai/dist/src/components/ResponsiveXYFrame.js +10 -0
  28. package/ai/dist/src/components/SparkFrame.js +113 -0
  29. package/ai/dist/src/components/SparkNetworkFrame.js +11 -0
  30. package/ai/dist/src/components/SparkOrdinalFrame.js +11 -0
  31. package/ai/dist/src/components/SparkXYFrame.js +11 -0
  32. package/ai/dist/src/components/Tooltip/Tooltip.js +304 -0
  33. package/ai/dist/src/components/TooltipPositioner/index.js +132 -0
  34. package/ai/dist/src/components/VisualizationLayer.js +395 -0
  35. package/ai/dist/src/components/XYFrame.js +524 -0
  36. package/ai/dist/src/components/annotationLayerBehavior/annotationHandling.js +73 -0
  37. package/ai/dist/src/components/annotationLayerBehavior/d3labeler.js +254 -0
  38. package/ai/dist/src/components/annotationRules/baseRules.js +150 -0
  39. package/ai/dist/src/components/annotationRules/networkframeRules.js +198 -0
  40. package/ai/dist/src/components/annotationRules/orframeRules.js +695 -0
  41. package/ai/dist/src/components/annotationRules/xyframeRules.js +299 -0
  42. package/ai/dist/src/components/batchWork.js +35 -0
  43. package/ai/dist/src/components/charts/index.js +96 -0
  44. package/ai/dist/src/components/charts/network/ChordDiagram.js +245 -0
  45. package/ai/dist/src/components/charts/network/CirclePack.js +177 -0
  46. package/ai/dist/src/components/charts/network/ForceDirectedGraph.js +248 -0
  47. package/ai/dist/src/components/charts/network/SankeyDiagram.js +305 -0
  48. package/ai/dist/src/components/charts/network/TreeDiagram.js +268 -0
  49. package/ai/dist/src/components/charts/network/Treemap.js +177 -0
  50. package/ai/dist/src/components/charts/ordinal/BarChart.js +191 -0
  51. package/ai/dist/src/components/charts/ordinal/BoxPlot.js +235 -0
  52. package/ai/dist/src/components/charts/ordinal/DonutChart.js +178 -0
  53. package/ai/dist/src/components/charts/ordinal/DotPlot.js +194 -0
  54. package/ai/dist/src/components/charts/ordinal/GroupedBarChart.js +194 -0
  55. package/ai/dist/src/components/charts/ordinal/PieChart.js +155 -0
  56. package/ai/dist/src/components/charts/ordinal/StackedBarChart.js +213 -0
  57. package/ai/dist/src/components/charts/ordinal/SwarmPlot.js +219 -0
  58. package/ai/dist/src/components/charts/realtime/RealtimeBarChart.js +91 -0
  59. package/ai/dist/src/components/charts/realtime/RealtimeLineChart.js +73 -0
  60. package/ai/dist/src/components/charts/realtime/RealtimeSwarmChart.js +85 -0
  61. package/ai/dist/src/components/charts/realtime/RealtimeWaterfallChart.js +86 -0
  62. package/ai/dist/src/components/charts/shared/ChartError.js +72 -0
  63. package/ai/dist/src/components/charts/shared/colorUtils.js +138 -0
  64. package/ai/dist/src/components/charts/shared/formatUtils.js +176 -0
  65. package/ai/dist/src/components/charts/shared/hooks.js +49 -0
  66. package/ai/dist/src/components/charts/shared/legendUtils.js +57 -0
  67. package/ai/dist/src/components/charts/shared/types.js +2 -0
  68. package/ai/dist/src/components/charts/shared/validateChartData.js +82 -0
  69. package/ai/dist/src/components/charts/shared/validateProps.js +640 -0
  70. package/ai/dist/src/components/charts/xy/AreaChart.js +220 -0
  71. package/ai/dist/src/components/charts/xy/BubbleChart.js +222 -0
  72. package/ai/dist/src/components/charts/xy/Heatmap.js +230 -0
  73. package/ai/dist/src/components/charts/xy/LineChart.js +302 -0
  74. package/ai/dist/src/components/charts/xy/Scatterplot.js +136 -0
  75. package/ai/dist/src/components/charts/xy/StackedAreaChart.js +220 -0
  76. package/ai/dist/src/components/constants/coordinateNames.js +11 -0
  77. package/ai/dist/src/components/constants/frame_props.js +251 -0
  78. package/ai/dist/src/components/constants/jsx.js +71 -0
  79. package/ai/dist/src/components/data/dataFunctions.js +473 -0
  80. package/ai/dist/src/components/data/multiAccessorUtils.js +14 -0
  81. package/ai/dist/src/components/data/networkPipelineCache.js +43 -0
  82. package/ai/dist/src/components/data/ordinalPipelineCache.js +53 -0
  83. package/ai/dist/src/components/data/unflowedFunctions.js +5 -0
  84. package/ai/dist/src/components/data/xyPipelineCache.js +49 -0
  85. package/ai/dist/src/components/generic_utilities/functions.js +5 -0
  86. package/ai/dist/src/components/index.js +145 -0
  87. package/ai/dist/src/components/interactionLayerBehavior/InteractionCanvas.js +128 -0
  88. package/ai/dist/src/components/processing/InteractionItems.js +223 -0
  89. package/ai/dist/src/components/processing/hierarchyUtils.js +104 -0
  90. package/ai/dist/src/components/processing/layouts/chordLayout.js +58 -0
  91. package/ai/dist/src/components/processing/layouts/forceLayout.js +142 -0
  92. package/ai/dist/src/components/processing/layouts/hierarchyLayout.js +31 -0
  93. package/ai/dist/src/components/processing/layouts/index.js +32 -0
  94. package/ai/dist/src/components/processing/layouts/sankeyLayout.js +96 -0
  95. package/ai/dist/src/components/processing/layouts/simpleLayouts.js +34 -0
  96. package/ai/dist/src/components/processing/layouts/types.js +2 -0
  97. package/ai/dist/src/components/processing/network.js +771 -0
  98. package/ai/dist/src/components/processing/networkDefaults.js +39 -0
  99. package/ai/dist/src/components/processing/networkLayoutHelpers.js +98 -0
  100. package/ai/dist/src/components/processing/ordinal.js +889 -0
  101. package/ai/dist/src/components/processing/ordinalConstants.js +23 -0
  102. package/ai/dist/src/components/processing/ordinalOverlays.js +88 -0
  103. package/ai/dist/src/components/processing/ordinalRenderPipeline.js +196 -0
  104. package/ai/dist/src/components/processing/xyDrawing.js +484 -0
  105. package/ai/dist/src/components/realtime/BinAccumulator.js +36 -0
  106. package/ai/dist/src/components/realtime/IncrementalExtent.js +55 -0
  107. package/ai/dist/src/components/realtime/RealtimeFrame.js +710 -0
  108. package/ai/dist/src/components/realtime/RingBuffer.js +104 -0
  109. package/ai/dist/src/components/realtime/renderers/barRenderer.js +133 -0
  110. package/ai/dist/src/components/realtime/renderers/candlestickRenderer.js +7 -0
  111. package/ai/dist/src/components/realtime/renderers/lineRenderer.js +164 -0
  112. package/ai/dist/src/components/realtime/renderers/swarmRenderer.js +91 -0
  113. package/ai/dist/src/components/realtime/renderers/types.js +2 -0
  114. package/ai/dist/src/components/realtime/renderers/waterfallRenderer.js +163 -0
  115. package/ai/dist/src/components/realtime/types.js +2 -0
  116. package/ai/dist/src/components/semiotic-ai.js +66 -0
  117. package/ai/dist/src/components/semiotic-network.js +30 -0
  118. package/ai/dist/src/components/semiotic-ordinal.js +28 -0
  119. package/ai/dist/src/components/semiotic-realtime.js +37 -0
  120. package/ai/dist/src/components/semiotic-server.js +8 -0
  121. package/ai/dist/src/components/semiotic-xy.js +41 -0
  122. package/ai/dist/src/components/semiotic.js +101 -0
  123. package/ai/dist/src/components/server/renderToStaticSVG.js +392 -0
  124. package/ai/dist/src/components/store/TooltipStore.js +13 -0
  125. package/ai/dist/src/components/store/createStore.js +77 -0
  126. package/ai/dist/src/components/svg/SvgHelper.js +308 -0
  127. package/ai/dist/src/components/svg/areaDrawing.js +312 -0
  128. package/ai/dist/src/components/svg/boxplotRenderer.js +441 -0
  129. package/ai/dist/src/components/svg/bucketizedRenderer.js +677 -0
  130. package/ai/dist/src/components/svg/ckbinsRenderer.js +92 -0
  131. package/ai/dist/src/components/svg/ckmeans.js +238 -0
  132. package/ai/dist/src/components/svg/contourLayout.js +73 -0
  133. package/ai/dist/src/components/svg/contourRenderer.js +53 -0
  134. package/ai/dist/src/components/svg/edgeGenerators.js +181 -0
  135. package/ai/dist/src/components/svg/frameFunctions.js +579 -0
  136. package/ai/dist/src/components/svg/graphAlgorithms.js +138 -0
  137. package/ai/dist/src/components/svg/hexbinLayout.js +163 -0
  138. package/ai/dist/src/components/svg/lineDrawing.js +427 -0
  139. package/ai/dist/src/components/svg/networkDrawing.js +207 -0
  140. package/ai/dist/src/components/svg/nodeGenerators.js +131 -0
  141. package/ai/dist/src/components/svg/pieceDrawing.js +110 -0
  142. package/ai/dist/src/components/svg/pieceLayouts.js +588 -0
  143. package/ai/dist/src/components/svg/sankeyLinks.js +143 -0
  144. package/ai/dist/src/components/svg/summaryAxis.js +48 -0
  145. package/ai/dist/src/components/svg/summaryLayouts.js +202 -0
  146. package/ai/dist/src/components/svg/swarmLayout.js +128 -0
  147. package/ai/dist/src/components/types/annotationTypes.js +2 -0
  148. package/ai/dist/src/components/types/canvasTypes.js +2 -0
  149. package/ai/dist/src/components/types/generalTypes.js +2 -0
  150. package/ai/dist/src/components/types/interactionTypes.js +2 -0
  151. package/ai/dist/src/components/types/legendTypes.js +2 -0
  152. package/ai/dist/src/components/types/networkTypes.js +2 -0
  153. package/ai/dist/src/components/types/ordinalTypes.js +2 -0
  154. package/ai/dist/src/components/types/xyTypes.js +2 -0
  155. package/ai/dist/src/components/useBoundingRect.js +24 -0
  156. package/ai/dist/src/components/useDerivedStateFromProps.js +25 -0
  157. package/ai/dist/src/components/useLegacyUnmountCallback.js +21 -0
  158. package/ai/dist/src/components/visualizationLayerBehavior/axis.js +249 -0
  159. package/ai/dist/src/components/visualizationLayerBehavior/general.js +435 -0
  160. package/ai/dist/src/setupTests.js +4 -0
  161. package/ai/examples.md +394 -0
  162. package/ai/schema.json +1178 -0
  163. package/ai/system-prompt.md +38 -0
  164. package/dist/AnnotationLayer/AnnotationLayer.d.ts +0 -1
  165. package/dist/Axis/axisTitle.d.ts +3 -3
  166. package/dist/Axis/summaryGraphic.d.ts +1 -1
  167. package/dist/FacetController.d.ts +1 -1
  168. package/dist/MinimapXYFrame.d.ts +2 -2
  169. package/dist/NetworkFrame.d.ts +5 -1
  170. package/dist/OrdinalFrame.d.ts +5 -1
  171. package/dist/ResponsiveFrame.d.ts +2 -2
  172. package/dist/ResponsiveMinimapXYFrame.d.ts +3 -6
  173. package/dist/ResponsiveNetworkFrame.d.ts +3 -6
  174. package/dist/ResponsiveOrdinalFrame.d.ts +3 -6
  175. package/dist/ResponsiveXYFrame.d.ts +3 -6
  176. package/dist/SparkFrame.d.ts +1 -1
  177. package/dist/SparkNetworkFrame.d.ts +3 -3
  178. package/dist/SparkOrdinalFrame.d.ts +3 -3
  179. package/dist/SparkXYFrame.d.ts +3 -3
  180. package/dist/Tooltip/Tooltip.d.ts +141 -0
  181. package/dist/TooltipPositioner/index.d.ts +1 -1
  182. package/dist/VisualizationLayer.d.ts +3 -3
  183. package/dist/XYFrame.d.ts +5 -1
  184. package/dist/annotationLayerBehavior/annotationHandling.d.ts +2 -2
  185. package/dist/annotationRules/networkframeRules.d.ts +2 -2
  186. package/dist/annotationRules/orframeRules.d.ts +2 -4
  187. package/dist/annotationRules/xyframeRules.d.ts +2 -2
  188. package/dist/batchWork.d.ts +1 -1
  189. package/dist/charts/index.d.ts +62 -0
  190. package/dist/charts/network/ChordDiagram.d.ts +181 -0
  191. package/dist/charts/network/CirclePack.d.ts +103 -0
  192. package/dist/charts/network/ForceDirectedGraph.d.ts +192 -0
  193. package/dist/charts/network/SankeyDiagram.d.ts +195 -0
  194. package/dist/charts/network/TreeDiagram.d.ts +200 -0
  195. package/dist/charts/network/Treemap.d.ts +98 -0
  196. package/dist/charts/ordinal/BarChart.d.ts +119 -0
  197. package/dist/charts/ordinal/BoxPlot.d.ts +125 -0
  198. package/dist/charts/ordinal/DonutChart.d.ts +95 -0
  199. package/dist/charts/ordinal/DotPlot.d.ts +128 -0
  200. package/dist/charts/ordinal/GroupedBarChart.d.ts +113 -0
  201. package/dist/charts/ordinal/PieChart.d.ts +83 -0
  202. package/dist/charts/ordinal/StackedBarChart.d.ts +119 -0
  203. package/dist/charts/ordinal/SwarmPlot.d.ts +137 -0
  204. package/dist/charts/realtime/RealtimeBarChart.d.ts +102 -0
  205. package/dist/charts/realtime/RealtimeLineChart.d.ts +78 -0
  206. package/dist/charts/realtime/RealtimeSwarmChart.d.ts +88 -0
  207. package/dist/charts/realtime/RealtimeWaterfallChart.d.ts +85 -0
  208. package/dist/charts/shared/ChartError.d.ts +19 -0
  209. package/dist/charts/shared/colorUtils.d.ts +62 -0
  210. package/dist/charts/shared/formatUtils.d.ts +82 -0
  211. package/dist/charts/shared/hooks.d.ts +20 -0
  212. package/dist/charts/shared/legendUtils.d.ts +32 -0
  213. package/dist/charts/shared/types.d.ts +58 -0
  214. package/dist/charts/shared/validateChartData.d.ts +41 -0
  215. package/dist/charts/shared/validateProps.d.ts +18 -0
  216. package/dist/charts/xy/AreaChart.d.ts +127 -0
  217. package/dist/charts/xy/BubbleChart.d.ts +157 -0
  218. package/dist/charts/xy/Heatmap.d.ts +153 -0
  219. package/dist/charts/xy/LineChart.d.ts +193 -0
  220. package/dist/charts/xy/Scatterplot.d.ts +50 -0
  221. package/dist/charts/xy/StackedAreaChart.d.ts +131 -0
  222. package/dist/constants/frame_props.d.ts +9 -0
  223. package/dist/constants/jsx.d.ts +2 -2
  224. package/dist/data/dataFunctions.d.ts +11 -12
  225. package/dist/data/networkPipelineCache.d.ts +27 -0
  226. package/dist/data/ordinalPipelineCache.d.ts +33 -0
  227. package/dist/data/xyPipelineCache.d.ts +35 -0
  228. package/dist/index.d.ts +70 -62
  229. package/dist/interactionLayerBehavior/InteractionCanvas.d.ts +1 -1
  230. package/dist/network.js +8520 -0
  231. package/dist/network.js.map +1 -0
  232. package/dist/network.min.js +1 -0
  233. package/dist/network.module.js +8484 -0
  234. package/dist/network.module.js.map +1 -0
  235. package/dist/network.module.min.js +1 -0
  236. package/dist/ordinal.js +9276 -0
  237. package/dist/ordinal.js.map +1 -0
  238. package/dist/ordinal.min.js +1 -0
  239. package/dist/ordinal.module.js +9242 -0
  240. package/dist/ordinal.module.js.map +1 -0
  241. package/dist/ordinal.module.min.js +1 -0
  242. package/dist/processing/InteractionItems.d.ts +5 -4
  243. package/dist/processing/hierarchyUtils.d.ts +16 -0
  244. package/dist/processing/layouts/chordLayout.d.ts +2 -0
  245. package/dist/processing/layouts/forceLayout.d.ts +3 -0
  246. package/dist/processing/layouts/hierarchyLayout.d.ts +10 -0
  247. package/dist/processing/layouts/index.d.ts +8 -0
  248. package/dist/processing/layouts/sankeyLayout.d.ts +8 -0
  249. package/dist/processing/layouts/simpleLayouts.d.ts +7 -0
  250. package/dist/processing/layouts/types.d.ts +17 -0
  251. package/dist/processing/network.d.ts +25 -28
  252. package/dist/processing/networkDefaults.d.ts +36 -0
  253. package/dist/processing/networkLayoutHelpers.d.ts +54 -0
  254. package/dist/processing/ordinal.d.ts +43 -43
  255. package/dist/processing/ordinalConstants.d.ts +33 -0
  256. package/dist/processing/ordinalOverlays.d.ts +33 -0
  257. package/dist/processing/ordinalRenderPipeline.d.ts +148 -0
  258. package/dist/processing/xyDrawing.d.ts +46 -41
  259. package/dist/realtime/BinAccumulator.d.ts +8 -0
  260. package/dist/realtime/IncrementalExtent.d.ts +13 -0
  261. package/dist/realtime/RealtimeFrame.d.ts +4 -0
  262. package/dist/realtime/RingBuffer.d.ts +19 -0
  263. package/dist/realtime/renderers/barRenderer.d.ts +2 -0
  264. package/dist/realtime/renderers/candlestickRenderer.d.ts +2 -0
  265. package/dist/realtime/renderers/lineRenderer.d.ts +2 -0
  266. package/dist/realtime/renderers/swarmRenderer.d.ts +2 -0
  267. package/dist/realtime/renderers/types.d.ts +9 -0
  268. package/dist/realtime/renderers/waterfallRenderer.d.ts +3 -0
  269. package/dist/realtime/types.d.ts +113 -0
  270. package/dist/realtime.js +1598 -0
  271. package/dist/realtime.js.map +1 -0
  272. package/dist/realtime.min.js +1 -0
  273. package/dist/realtime.module.js +1566 -0
  274. package/dist/realtime.module.js.map +1 -0
  275. package/dist/realtime.module.min.js +1 -0
  276. package/dist/semiotic-ai.d.ts +28 -0
  277. package/dist/semiotic-ai.js +18722 -0
  278. package/dist/semiotic-ai.js.map +1 -0
  279. package/dist/semiotic-ai.min.js +1 -0
  280. package/dist/semiotic-ai.module.js +18668 -0
  281. package/dist/semiotic-ai.module.js.map +1 -0
  282. package/dist/semiotic-ai.module.min.js +1 -0
  283. package/dist/semiotic-network.d.ts +19 -0
  284. package/dist/semiotic-ordinal.d.ts +18 -0
  285. package/dist/semiotic-realtime.d.ts +23 -0
  286. package/dist/semiotic-server.d.ts +1 -0
  287. package/dist/semiotic-xy.d.ts +24 -0
  288. package/dist/semiotic.d.ts +19 -3
  289. package/dist/semiotic.js +18707 -12983
  290. package/dist/semiotic.js.map +1 -0
  291. package/dist/semiotic.min.js +1 -0
  292. package/dist/semiotic.module.js +18651 -12953
  293. package/dist/semiotic.module.js.map +1 -0
  294. package/dist/semiotic.module.min.js +1 -0
  295. package/dist/server/renderToStaticSVG.d.ts +9 -0
  296. package/dist/server.js +8360 -0
  297. package/dist/server.js.map +1 -0
  298. package/dist/server.min.js +1 -0
  299. package/dist/server.module.js +8331 -0
  300. package/dist/server.module.js.map +1 -0
  301. package/dist/server.module.min.js +1 -0
  302. package/dist/svg/SvgHelper.d.ts +1 -5
  303. package/dist/svg/areaDrawing.d.ts +3 -13
  304. package/dist/svg/boxplotRenderer.d.ts +15 -0
  305. package/dist/svg/bucketizedRenderer.d.ts +16 -0
  306. package/dist/svg/ckbinsRenderer.d.ts +20 -0
  307. package/dist/svg/contourLayout.d.ts +6 -0
  308. package/dist/svg/contourRenderer.d.ts +12 -0
  309. package/dist/svg/edgeGenerators.d.ts +51 -0
  310. package/dist/svg/frameFunctions.d.ts +17 -28
  311. package/dist/svg/graphAlgorithms.d.ts +14 -0
  312. package/dist/svg/hexbinLayout.d.ts +7 -0
  313. package/dist/svg/lineDrawing.d.ts +8 -8
  314. package/dist/svg/networkDrawing.d.ts +5 -123
  315. package/dist/svg/nodeGenerators.d.ts +58 -0
  316. package/dist/svg/pieceDrawing.d.ts +1 -2
  317. package/dist/svg/pieceLayouts.d.ts +5 -23
  318. package/dist/svg/sankeyLinks.d.ts +3 -0
  319. package/dist/svg/summaryAxis.d.ts +6 -0
  320. package/dist/svg/summaryLayouts.d.ts +36 -57
  321. package/dist/svg/swarmLayout.d.ts +13 -0
  322. package/dist/types/annotationTypes.d.ts +13 -18
  323. package/dist/types/canvasTypes.d.ts +1 -1
  324. package/dist/types/generalTypes.d.ts +37 -35
  325. package/dist/types/interactionTypes.d.ts +7 -9
  326. package/dist/types/legendTypes.d.ts +2 -2
  327. package/dist/types/networkTypes.d.ts +40 -30
  328. package/dist/types/ordinalTypes.d.ts +27 -18
  329. package/dist/types/xyTypes.d.ts +13 -16
  330. package/dist/useLegacyUnmountCallback.d.ts +2 -1
  331. package/dist/visualizationLayerBehavior/axis.d.ts +3 -5
  332. package/dist/visualizationLayerBehavior/general.d.ts +8 -12
  333. package/dist/xy.js +7944 -0
  334. package/dist/xy.js.map +1 -0
  335. package/dist/xy.min.js +1 -0
  336. package/dist/xy.module.js +7903 -0
  337. package/dist/xy.module.js.map +1 -0
  338. package/dist/xy.module.min.js +1 -0
  339. package/package.json +116 -66
  340. package/dist/AnnotationLayer/helpers.d.ts +0 -6
  341. package/dist/AnnotationLayer/index.d.ts +0 -2
  342. package/dist/Mark/Mark.d.ts +0 -3
  343. package/dist/Mark/Mark.types.d.ts +0 -10
  344. package/dist/Mark/constants/markTransition.d.ts +0 -10
  345. package/dist/Mark/markBehavior/drawing.d.ts +0 -13
  346. package/dist/SpanOrDiv.d.ts +0 -10
  347. package/dist/components/Annotation.d.ts +0 -3
  348. package/dist/components/AnnotationLayer/AnnotationLayer.d.ts +0 -26
  349. package/dist/components/Axis/Axis.d.ts +0 -7
  350. package/dist/components/Axis/axisTitle.d.ts +0 -10
  351. package/dist/components/Axis/index.d.ts +0 -2
  352. package/dist/components/Axis/summaryGraphic.d.ts +0 -17
  353. package/dist/components/Brush.d.ts +0 -12
  354. package/dist/components/DividedLine.d.ts +0 -16
  355. package/dist/components/FacetController.d.ts +0 -12
  356. package/dist/components/Frame.d.ts +0 -2
  357. package/dist/components/InteractionLayer.d.ts +0 -3
  358. package/dist/components/Legend.d.ts +0 -3
  359. package/dist/components/Mark/Mark.d.ts +0 -3
  360. package/dist/components/Mark/Mark.types.d.ts +0 -10
  361. package/dist/components/Mark/markBehavior/drawing.d.ts +0 -13
  362. package/dist/components/MiniMap.d.ts +0 -14
  363. package/dist/components/MinimapXYFrame.d.ts +0 -10
  364. package/dist/components/NetworkFrame.d.ts +0 -4
  365. package/dist/components/OrdinalFrame.d.ts +0 -4
  366. package/dist/components/ResponsiveFrame.d.ts +0 -22
  367. package/dist/components/ResponsiveMinimapXYFrame.d.ts +0 -6
  368. package/dist/components/ResponsiveNetworkFrame.d.ts +0 -6
  369. package/dist/components/ResponsiveOrdinalFrame.d.ts +0 -6
  370. package/dist/components/ResponsiveXYFrame.d.ts +0 -6
  371. package/dist/components/SpanOrDiv.d.ts +0 -10
  372. package/dist/components/SparkFrame.d.ts +0 -14
  373. package/dist/components/SparkNetworkFrame.d.ts +0 -5
  374. package/dist/components/SparkOrdinalFrame.d.ts +0 -5
  375. package/dist/components/SparkXYFrame.d.ts +0 -5
  376. package/dist/components/TooltipPositioner/index.d.ts +0 -7
  377. package/dist/components/VisualizationLayer.d.ts +0 -33
  378. package/dist/components/XYFrame.d.ts +0 -4
  379. package/dist/components/annotationLayerBehavior/annotationHandling.d.ts +0 -19
  380. package/dist/components/annotationLayerBehavior/d3labeler.d.ts +0 -9
  381. package/dist/components/annotationRules/baseRules.d.ts +0 -25
  382. package/dist/components/annotationRules/networkframeRules.d.ts +0 -48
  383. package/dist/components/annotationRules/orframeRules.d.ts +0 -105
  384. package/dist/components/annotationRules/xyframeRules.d.ts +0 -117
  385. package/dist/components/batchWork.d.ts +0 -6
  386. package/dist/components/constants/coordinateNames.d.ts +0 -8
  387. package/dist/components/constants/frame_props.d.ts +0 -4
  388. package/dist/components/constants/jsx.d.ts +0 -19
  389. package/dist/components/data/dataFunctions.d.ts +0 -46
  390. package/dist/components/data/multiAccessorUtils.d.ts +0 -1
  391. package/dist/components/data/unflowedFunctions.d.ts +0 -1
  392. package/dist/components/generic_utilities/functions.d.ts +0 -1
  393. package/dist/components/index.d.ts +0 -125
  394. package/dist/components/interactionLayerBehavior/InteractionCanvas.d.ts +0 -20
  395. package/dist/components/processing/InteractionItems.d.ts +0 -12
  396. package/dist/components/processing/network.d.ts +0 -114
  397. package/dist/components/processing/ordinal.d.ts +0 -102
  398. package/dist/components/processing/xyDrawing.d.ts +0 -135
  399. package/dist/components/semiotic.d.ts +0 -35
  400. package/dist/components/store/TooltipStore.d.ts +0 -2
  401. package/dist/components/store/createStore.d.ts +0 -1
  402. package/dist/components/svg/SvgHelper.d.ts +0 -37
  403. package/dist/components/svg/areaDrawing.d.ts +0 -31
  404. package/dist/components/svg/ckmeans.d.ts +0 -69
  405. package/dist/components/svg/frameFunctions.d.ts +0 -119
  406. package/dist/components/svg/lineDrawing.d.ts +0 -99
  407. package/dist/components/svg/networkDrawing.d.ts +0 -134
  408. package/dist/components/svg/pieceDrawing.d.ts +0 -13
  409. package/dist/components/svg/pieceLayouts.d.ts +0 -71
  410. package/dist/components/svg/summaryLayouts.d.ts +0 -74
  411. package/dist/components/types/annotationTypes.d.ts +0 -140
  412. package/dist/components/types/canvasTypes.d.ts +0 -9
  413. package/dist/components/types/generalTypes.d.ts +0 -236
  414. package/dist/components/types/interactionTypes.d.ts +0 -74
  415. package/dist/components/types/legendTypes.d.ts +0 -20
  416. package/dist/components/types/networkTypes.d.ts +0 -165
  417. package/dist/components/types/ordinalTypes.d.ts +0 -103
  418. package/dist/components/types/xyTypes.d.ts +0 -118
  419. package/dist/components/useBoundingRect.d.ts +0 -2
  420. package/dist/components/useDerivedStateFromProps.d.ts +0 -1
  421. package/dist/components/useLegacyUnmountCallback.d.ts +0 -1
  422. package/dist/components/visualizationLayerBehavior/axis.d.ts +0 -38
  423. package/dist/components/visualizationLayerBehavior/general.d.ts +0 -84
  424. package/dist/setupTests.d.ts +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semiotic.module.js","sources":["../src/components/annotationLayerBehavior/d3labeler.ts","../src/components/annotationLayerBehavior/annotationHandling.ts","../src/components/Legend.tsx","../src/components/Annotation.tsx","../src/components/store/createStore.tsx","../src/components/store/TooltipStore.ts","../src/components/AnnotationLayer/helpers.js","../src/components/AnnotationLayer/AnnotationLayer.tsx","../src/components/data/multiAccessorUtils.ts","../src/components/svg/lineDrawing.ts","../src/components/DividedLine.tsx","../src/components/Brush.tsx","../src/components/constants/coordinateNames.ts","../src/components/processing/InteractionItems.tsx","../src/components/svg/SvgHelper.tsx","../src/components/visualizationLayerBehavior/axis.tsx","../src/components/Axis/summaryGraphic.tsx","../src/components/Axis/axisTitle.tsx","../src/components/svg/pieceDrawing.tsx","../src/components/svg/boxplotRenderer.tsx","../src/components/svg/ckmeans.ts","../src/components/svg/ckbinsRenderer.tsx","../src/components/svg/contourLayout.ts","../src/components/svg/hexbinLayout.tsx","../src/components/svg/areaDrawing.tsx","../src/components/svg/contourRenderer.tsx","../src/components/visualizationLayerBehavior/general.tsx","../src/components/svg/bucketizedRenderer.tsx","../src/components/svg/summaryLayouts.tsx","../src/components/Axis/Axis.tsx","../src/components/svg/frameFunctions.tsx","../src/components/interactionLayerBehavior/InteractionCanvas.tsx","../src/components/InteractionLayer.tsx","../src/components/batchWork.ts","../src/components/VisualizationLayer.tsx","../src/components/constants/jsx.tsx","../src/components/Frame.tsx","../src/components/TooltipPositioner/index.tsx","../src/components/annotationRules/baseRules.tsx","../src/components/annotationRules/xyframeRules.tsx","../src/components/data/unflowedFunctions.ts","../src/components/data/dataFunctions.ts","../src/components/processing/xyDrawing.tsx","../src/components/data/xyPipelineCache.ts","../src/components/constants/frame_props.ts","../src/components/useDerivedStateFromProps.ts","../src/components/useLegacyUnmountCallback.ts","../src/components/XYFrame.tsx","../src/components/annotationRules/orframeRules.tsx","../src/components/svg/summaryAxis.tsx","../src/components/svg/swarmLayout.tsx","../src/components/svg/pieceLayouts.tsx","../src/components/generic_utilities/functions.ts","../src/components/processing/ordinalConstants.ts","../src/components/processing/ordinalOverlays.tsx","../src/components/processing/ordinalRenderPipeline.tsx","../src/components/processing/ordinal.tsx","../src/components/data/ordinalPipelineCache.ts","../src/components/OrdinalFrame.tsx","../src/components/MiniMap.tsx","../src/components/MinimapXYFrame.tsx","../src/components/annotationRules/networkframeRules.tsx","../src/components/svg/nodeGenerators.tsx","../src/components/svg/edgeGenerators.tsx","../src/components/svg/sankeyLinks.ts","../src/components/svg/graphAlgorithms.ts","../src/components/svg/networkDrawing.tsx","../src/components/processing/networkDefaults.ts","../src/components/processing/layouts/hierarchyLayout.ts","../src/components/processing/layouts/sankeyLayout.ts","../src/components/processing/networkLayoutHelpers.ts","../src/components/processing/hierarchyUtils.ts","../src/components/processing/network.ts","../src/components/data/networkPipelineCache.ts","../src/components/processing/layouts/chordLayout.ts","../src/components/processing/layouts/forceLayout.ts","../src/components/processing/layouts/simpleLayouts.ts","../src/components/processing/layouts/index.ts","../src/components/NetworkFrame.tsx","../src/components/FacetController.tsx","../src/components/useBoundingRect.ts","../src/components/ResponsiveFrame.tsx","../src/components/ResponsiveNetworkFrame.tsx","../src/components/ResponsiveMinimapXYFrame.tsx","../src/components/ResponsiveXYFrame.tsx","../src/components/ResponsiveOrdinalFrame.tsx","../src/components/SparkFrame.tsx","../src/components/SparkXYFrame.ts","../src/components/SparkOrdinalFrame.ts","../src/components/SparkNetworkFrame.ts","../src/components/charts/shared/colorUtils.ts","../src/components/charts/shared/legendUtils.ts","../src/components/Tooltip/Tooltip.tsx","../src/components/charts/shared/hooks.ts","../src/components/charts/shared/ChartError.tsx","../src/components/charts/shared/validateChartData.ts","../src/components/charts/xy/Scatterplot.tsx","../src/components/charts/xy/LineChart.tsx","../src/components/charts/xy/AreaChart.tsx","../src/components/charts/xy/StackedAreaChart.tsx","../src/components/charts/xy/Heatmap.tsx","../src/components/charts/xy/BubbleChart.tsx","../src/components/charts/ordinal/BarChart.tsx","../src/components/charts/ordinal/StackedBarChart.tsx","../src/components/charts/ordinal/SwarmPlot.tsx","../src/components/charts/ordinal/BoxPlot.tsx","../src/components/charts/ordinal/DotPlot.tsx","../src/components/charts/ordinal/PieChart.tsx","../src/components/charts/ordinal/DonutChart.tsx","../src/components/charts/ordinal/GroupedBarChart.tsx","../src/components/charts/network/ForceDirectedGraph.tsx","../src/components/charts/network/ChordDiagram.tsx","../src/components/charts/network/SankeyDiagram.tsx","../src/components/charts/network/TreeDiagram.tsx","../src/components/charts/network/Treemap.tsx","../src/components/charts/network/CirclePack.tsx","../src/components/realtime/RingBuffer.ts","../src/components/realtime/IncrementalExtent.ts","../src/components/realtime/renderers/lineRenderer.ts","../src/components/realtime/renderers/swarmRenderer.ts","../src/components/realtime/renderers/candlestickRenderer.ts","../src/components/realtime/renderers/waterfallRenderer.ts","../src/components/realtime/BinAccumulator.ts","../src/components/realtime/renderers/barRenderer.ts","../src/components/realtime/RealtimeFrame.tsx","../src/components/charts/realtime/RealtimeLineChart.tsx","../src/components/charts/realtime/RealtimeBarChart.tsx","../src/components/charts/realtime/RealtimeSwarmChart.tsx","../src/components/charts/realtime/RealtimeWaterfallChart.tsx"],"sourcesContent":["// from Evan Wang's https://github.com/tinker10/D3-Labeler\nexport default function() {\n let lab = [],\n anc = [],\n w = 1, // box width\n h = 1, // box width\n labeler = {\n start: x => {},\n width: x => {},\n height: x => {},\n label: x => {},\n anchor: x => {},\n alt_energy: x => {},\n alt_schedule: x => {}\n }\n\n let max_move = 5.0,\n max_angle = 0.5\n\n // weights\n let w_len = 0.2, // leader line length\n w_inter = 1.0, // leader line intersection\n w_lab2 = 30.0, // label-label overlap\n w_lab_anc = 30.0, // label-anchor overlap\n w_orient = 3.0 // orientation bias\n\n // booleans for user defined functions\n let user_energy = false,\n user_schedule = false\n\n let user_defined_energy, user_defined_schedule\n\n const energy = function(index) {\n // energy function, tailored for label placement\n\n let m = lab.length,\n ener = 0,\n dx = lab[index].x - anc[index].x,\n dy = anc[index].y - lab[index].y,\n dist = Math.sqrt(dx * dx + dy * dy),\n overlap = true,\n amount = 0,\n theta = 0\n\n // penalty for length of leader line\n if (dist > 0) ener += dist * w_len\n\n // label orientation bias\n dx /= dist\n dy /= dist\n if (dx > 0 && dy > 0) {\n ener += 0 * w_orient\n } else if (dx < 0 && dy > 0) {\n ener += 1 * w_orient\n } else if (dx < 0 && dy < 0) {\n ener += 2 * w_orient\n } else {\n ener += 3 * w_orient\n }\n\n let x21 = lab[index].x,\n y21 = lab[index].y - lab[index].height + 2.0,\n x22 = lab[index].x + lab[index].width,\n y22 = lab[index].y + 2.0\n let x11, x12, y11, y12, x_overlap, y_overlap, overlap_area\n\n for (let i = 0; i < m; i++) {\n if (i !== index) {\n // penalty for intersection of leader lines\n const overlap = intersect(\n anc[index].x,\n lab[index].x,\n anc[i].x,\n lab[i].x,\n anc[index].y,\n lab[index].y,\n anc[i].y,\n lab[i].y\n )\n if (overlap) ener += w_inter\n\n // penalty for label-label overlap\n x11 = lab[i].x\n y11 = lab[i].y - lab[i].height + 2.0\n x12 = lab[i].x + lab[i].width\n y12 = lab[i].y + 2.0\n x_overlap = Math.max(0, Math.min(x12, x22) - Math.max(x11, x21))\n y_overlap = Math.max(0, Math.min(y12, y22) - Math.max(y11, y21))\n overlap_area = x_overlap * y_overlap\n ener += overlap_area * w_lab2\n }\n\n // penalty for label-anchor overlap\n x11 = anc[i].x - anc[i].r\n y11 = anc[i].y - anc[i].r\n x12 = anc[i].x + anc[i].r\n y12 = anc[i].y + anc[i].r\n x_overlap = Math.max(0, Math.min(x12, x22) - Math.max(x11, x21))\n y_overlap = Math.max(0, Math.min(y12, y22) - Math.max(y11, y21))\n overlap_area = x_overlap * y_overlap\n ener += overlap_area * w_lab_anc\n }\n return ener\n }\n\n const mcmove = function(currT) {\n // Monte Carlo translation move\n\n // select a random label\n let i = Math.floor(Math.random() * lab.length)\n\n // save old coordinates\n let x_old = lab[i].x\n let y_old = lab[i].y\n\n // old energy\n let old_energy\n if (user_energy) {\n old_energy = user_defined_energy(i, lab, anc)\n } else {\n old_energy = energy(i)\n }\n\n // random translation\n lab[i].x += (Math.random() - 0.5) * max_move\n lab[i].y += (Math.random() - 0.5) * max_move\n\n // hard wall boundaries\n if (lab[i].x > w) lab[i].x = x_old\n if (lab[i].x < 0) lab[i].x = x_old\n if (lab[i].y > h) lab[i].y = y_old\n if (lab[i].y < 0) lab[i].y = y_old\n\n // new energy\n let new_energy\n if (user_energy) {\n new_energy = user_defined_energy(i, lab, anc)\n } else {\n new_energy = energy(i)\n }\n\n // delta E\n let delta_energy = new_energy - old_energy\n\n if (!(Math.random() < Math.exp(-delta_energy / currT))) {\n // move back to old coordinates\n lab[i].x = x_old\n lab[i].y = y_old\n }\n }\n\n const mcrotate = function(currT) {\n // Monte Carlo rotation move\n\n // select a random label\n let i = Math.floor(Math.random() * lab.length)\n\n // save old coordinates\n let x_old = lab[i].x\n let y_old = lab[i].y\n\n // old energy\n let old_energy\n if (user_energy) {\n old_energy = user_defined_energy(i, lab, anc)\n } else {\n old_energy = energy(i)\n }\n\n // random angle\n let angle = (Math.random() - 0.5) * max_angle\n\n let s = Math.sin(angle)\n let c = Math.cos(angle)\n\n // translate label (relative to anchor at origin):\n lab[i].x -= anc[i].x\n lab[i].y -= anc[i].y\n\n // rotate label\n let x_new = lab[i].x * c - lab[i].y * s,\n y_new = lab[i].x * s + lab[i].y * c\n\n // translate label back\n lab[i].x = x_new + anc[i].x\n lab[i].y = y_new + anc[i].y\n\n // hard wall boundaries\n if (lab[i].x > w) lab[i].x = x_old\n if (lab[i].x < 0) lab[i].x = x_old\n if (lab[i].y > h) lab[i].y = y_old\n if (lab[i].y < 0) lab[i].y = y_old\n\n // new energy\n let new_energy\n if (user_energy) {\n new_energy = user_defined_energy(i, lab, anc)\n } else {\n new_energy = energy(i)\n }\n\n // delta E\n let delta_energy = new_energy - old_energy\n\n if (!(Math.random() < Math.exp(-delta_energy / currT))) {\n // move back to old coordinates\n lab[i].x = x_old\n lab[i].y = y_old\n }\n }\n\n const intersect = function(x1, x2, x3, x4, y1, y2, y3, y4) {\n // returns true if two lines intersect, else false\n // from http://paulbourke.net/geometry/lineline2d/\n\n let mua, mub\n let denom, numera, numerb\n\n denom = (y4 - y3) * (x2 - x1) - (x4 - x3) * (y2 - y1)\n numera = (x4 - x3) * (y1 - y3) - (y4 - y3) * (x1 - x3)\n numerb = (x2 - x1) * (y1 - y3) - (y2 - y1) * (x1 - x3)\n\n /* Is the intersection along the the segments */\n mua = numera / denom\n mub = numerb / denom\n if (!(mua < 0 || mua > 1 || mub < 0 || mub > 1)) {\n return true\n }\n return false\n }\n\n const cooling_schedule = function(currT, initialT, nsweeps) {\n // linear cooling\n return currT - initialT / nsweeps\n }\n\n labeler.start = function(nsweeps) {\n // main simulated annealing function\n let m = lab.length,\n currT = 1.0,\n initialT = 1.0\n\n for (let i = 0; i < nsweeps; i++) {\n for (let j = 0; j < m; j++) {\n if (Math.random() < 0.5) {\n mcmove(currT)\n } else {\n mcrotate(currT)\n }\n }\n currT = cooling_schedule(currT, initialT, nsweeps)\n }\n }\n\n labeler.width = function(x) {\n // users insert graph width\n if (!arguments.length) return w\n w = x\n return labeler\n }\n\n labeler.height = function(x) {\n // users insert graph height\n if (!arguments.length) return h\n h = x\n return labeler\n }\n\n labeler.label = function(x) {\n // users insert label positions\n if (!arguments.length) return lab\n lab = x\n return labeler\n }\n\n labeler.anchor = function(x) {\n // users insert anchor positions\n if (!arguments.length) return anc\n anc = x\n return labeler\n }\n\n labeler.alt_energy = function(x) {\n // user defined energy\n if (!arguments.length) return energy\n user_defined_energy = x\n user_energy = true\n return labeler\n }\n\n labeler.alt_schedule = function(x) {\n // user defined cooling_schedule\n if (!arguments.length) return cooling_schedule\n user_defined_schedule = x\n user_schedule = true\n return labeler\n }\n\n return labeler\n}\n/*eslint-enable */\n","import labeler from \"./d3labeler\"\nimport { AnnotationProps } from \"../types/annotationTypes\"\n\ntype NoteType = {\n props: AnnotationProps\n}\n\ntype AnnotationTypes = \"marginalia\" | \"bump\" | false\n\ninterface Layout {\n type: AnnotationTypes\n orient?: \"nearest\" | \"left\" | \"right\" | \"top\" | \"bottom\" | string[]\n characterWidth?: number\n lineWidth?: number\n lineHeight?: number\n padding?: number\n iterations?: number\n pointSizeFunction?: Function\n labelSizeFunction?: Function\n marginOffset?: number\n}\n\nconst basicLabelSizeFunction = (\n noteData,\n characterWidth,\n lineHeight,\n padding\n) => {\n const text = noteData.note.label || noteData.note.title\n\n const textLength = text.length\n const wrap = noteData.note.wrap || 120\n const width = Math.min(wrap, textLength * characterWidth) + padding * 2\n const height =\n Math.ceil((textLength * characterWidth) / 120) * lineHeight + padding * 2\n return [width, height]\n}\n\nexport function bumpAnnotations(\n adjustableNotes: NoteType[],\n processor: Layout,\n size: number[],\n propsPointSizeFunction?: Function,\n propsLabelSizeFunction?: Function\n) {\n const {\n padding = 1,\n characterWidth = 8,\n lineHeight = 20,\n iterations = 500,\n pointSizeFunction = propsPointSizeFunction,\n labelSizeFunction = propsLabelSizeFunction || basicLabelSizeFunction\n } = processor\n\n const labels = adjustableNotes.map((d, i) => {\n const anchorX =\n (d.props.noteData.x[0] || d.props.noteData.x) +\n (d.props.noteData.dx !== undefined\n ? d.props.noteData.dx\n : ((i % 3) - 1) * -10)\n const anchorY =\n (d.props.noteData.y[0] || d.props.noteData.y) +\n (d.props.noteData.dy !== undefined\n ? d.props.noteData.dy\n : ((i % 3) - 1) * 10)\n\n const [labelWidth, labelHeight] = labelSizeFunction(\n d.props.noteData,\n characterWidth,\n lineHeight,\n padding\n )\n return {\n x: anchorX,\n y: anchorY,\n above: anchorY < d.props.noteData.y,\n left: anchorX < d.props.noteData.x,\n width: labelWidth,\n height: labelHeight,\n type: \"label\",\n name: \"\",\n originalNote: d\n }\n })\n\n const points = adjustableNotes.map(d => ({\n x: d.props.noteData.x,\n y: d.props.noteData.y,\n fx: d.props.noteData.x,\n fy: d.props.noteData.y,\n r: (pointSizeFunction && pointSizeFunction(d.props.noteData)) || 5,\n type: \"point\",\n originalNote: d\n }))\n\n const instantiatedLabeler = labeler()\n\n instantiatedLabeler.label(labels)\n instantiatedLabeler.anchor(points)\n instantiatedLabeler.width(size[0])\n instantiatedLabeler.height(size[1])\n instantiatedLabeler.start(iterations)\n\n labels.forEach(d => {\n if (d.type === \"label\") {\n const adjusted = adjustedXY(d.originalNote.props.noteData, d, padding)\n d.originalNote.props.noteData.nx = adjusted[0]\n d.originalNote.props.noteData.ny = adjusted[1]\n }\n })\n\n return adjustableNotes\n}\n\nfunction adjustedXY(note, calculated, padding) {\n if (note.y > calculated.y) {\n //below\n return [\n calculated.x + calculated.width / 2 + padding / 2,\n calculated.y - calculated.height + padding / 2\n ]\n }\n return [calculated.x + calculated.width / 2, calculated.y]\n}\n","import * as React from \"react\"\n\nimport { LegendGroup, ItemType, LegendProps } from \"./types/legendTypes\"\n\nconst typeHash = {\n fill: (style: Object) => <rect style={style} width={20} height={20} />,\n line: (style: Object) => <line style={style} x1={0} y1={0} x2={20} y2={20} />\n}\n\nfunction renderType(\n item: Object,\n i: number,\n type: ItemType,\n styleFn: Function\n) {\n let renderedType\n if (typeof type === \"function\") {\n renderedType = type(item)\n } else {\n const Type = typeHash[type]\n const style = styleFn(item, i)\n renderedType = Type(style)\n }\n return renderedType\n}\n\nconst renderLegendGroupVertical = (\n legendGroup: LegendGroup,\n customClickBehavior?: Function\n) => {\n const { type = \"fill\", styleFn, items } = legendGroup\n const renderedItems = []\n let itemOffset = 0\n items.forEach((item, i) => {\n const renderedType = renderType(item, i, type, styleFn)\n renderedItems.push(\n <g\n key={`legend-item-${i}`}\n transform={`translate(0,${itemOffset})`}\n onClick={\n customClickBehavior ? () => customClickBehavior(item) : undefined\n }\n style={{\n cursor: customClickBehavior ? \"pointer\" : \"default\"\n }}\n >\n {renderedType}\n <text y={15} x={30}>\n {item.label}\n </text>\n </g>\n )\n itemOffset += 25\n })\n return renderedItems\n}\n\nconst renderLegendGroupHorizontal = (\n legendGroup: LegendGroup,\n customClickBehavior?: Function\n) => {\n const { type = \"fill\", styleFn, items } = legendGroup\n const renderedItems = []\n let itemOffset = 0\n items.forEach((item, i) => {\n const renderedType = renderType(item, i, type, styleFn)\n renderedItems.push(\n <g\n key={`legend-item-${i}`}\n transform={`translate(${itemOffset},0)`}\n onClick={\n customClickBehavior ? () => customClickBehavior(item) : undefined\n }\n style={{\n cursor: customClickBehavior ? \"pointer\" : \"default\"\n }}\n >\n {renderedType}\n <text y={15} x={25}>\n {item.label}\n </text>\n </g>\n )\n itemOffset += 35\n itemOffset += item.label.length * 8\n })\n return { items: renderedItems, offset: itemOffset }\n}\n\nconst renderVerticalGroup = ({\n legendGroups,\n width,\n customClickBehavior\n}: {\n legendGroups: LegendGroup[]\n width: number\n customClickBehavior?: Function\n}) => {\n let offset = 30\n\n const renderedGroups = []\n\n legendGroups.forEach((l, i) => {\n offset += 5\n renderedGroups.push(\n <line\n key={`legend-top-line legend-symbol-${i}`}\n stroke=\"gray\"\n x1={0}\n y1={offset}\n x2={width}\n y2={offset}\n />\n )\n offset += 10\n if (l.label) {\n offset += 20\n renderedGroups.push(\n <text\n key={`legend-text-${i}`}\n y={offset}\n className=\"legend-group-label\"\n >\n {l.label}\n </text>\n )\n offset += 10\n }\n\n renderedGroups.push(\n <g\n key={`legend-group-${i}`}\n className=\"legend-item\"\n transform={`translate(0,${offset})`}\n >\n {renderLegendGroupVertical(l, customClickBehavior)}\n </g>\n )\n offset += l.items.length * 25 + 10\n })\n\n return renderedGroups\n}\n\nconst renderHorizontalGroup = ({\n legendGroups,\n title,\n height,\n customClickBehavior\n}: {\n legendGroups: LegendGroup[]\n title: string | boolean\n height: number\n customClickBehavior?: Function\n}) => {\n let offset = 0\n\n const renderedGroups = []\n\n const verticalOffset = title === false ? 10 : 40\n\n legendGroups.forEach((l, i) => {\n if (l.label) {\n renderedGroups.push(\n <text\n key={`legend-text-${i}`}\n transform={`translate(${offset},${verticalOffset}) rotate(90)`}\n textAnchor=\"start\"\n className=\"legend-group-label\"\n >\n {l.label}\n </text>\n )\n offset += 20\n }\n\n const renderedItems = renderLegendGroupHorizontal(l, customClickBehavior)\n\n renderedGroups.push(\n <g\n key={`legend-group-${i}`}\n className=\"legend-item\"\n transform={`translate(${offset},${verticalOffset})`}\n >\n {renderedItems.items}\n </g>\n )\n offset += renderedItems.offset + 5\n\n if (legendGroups[i + 1]) {\n renderedGroups.push(\n <line\n key={`legend-top-line legend-symbol-${i}`}\n stroke=\"gray\"\n x1={offset}\n y1={verticalOffset - 10}\n x2={offset}\n y2={height + verticalOffset + 10}\n />\n )\n }\n offset += 15\n })\n\n return (\n <g>\n {title !== false && (\n <line\n x1={0}\n x2={offset + 10}\n y1={verticalOffset - 10}\n y2={verticalOffset - 10}\n stroke=\"gray\"\n className=\"title-neatline\"\n />\n )}\n {renderedGroups}\n </g>\n )\n}\n\nexport default function Legend(props: LegendProps) {\n const {\n legendGroups,\n customClickBehavior,\n title = \"Legend\",\n width = 100,\n height = 20,\n orientation = \"vertical\"\n } = props\n const renderedGroups =\n orientation === \"vertical\"\n ? renderVerticalGroup({\n legendGroups,\n width,\n customClickBehavior\n })\n : renderHorizontalGroup({\n legendGroups,\n title,\n height,\n customClickBehavior\n })\n\n return (\n <g>\n {title !== undefined && (\n <text\n className=\"legend-title\"\n y={20}\n x={orientation === \"horizontal\" ? 0 : width / 2}\n textAnchor={orientation === \"horizontal\" ? \"start\" : \"middle\"}\n >\n {title}\n </text>\n )}\n {renderedGroups}\n </g>\n )\n}\n","import * as React from \"react\"\n\nimport { AnnotationProps } from \"./types/annotationTypes\"\n\nfunction wrapText(\n text: string,\n wrap: number = 120,\n charWidth: number = 8\n): string[] {\n if (!text) return []\n const maxChars = Math.max(1, Math.floor(wrap / charWidth))\n const words = text.split(/\\s+/)\n const lines: string[] = []\n let currentLine = \"\"\n\n for (const word of words) {\n if (currentLine && currentLine.length + 1 + word.length > maxChars) {\n lines.push(currentLine)\n currentLine = word\n } else {\n currentLine = currentLine ? `${currentLine} ${word}` : word\n }\n }\n if (currentLine) lines.push(currentLine)\n return lines\n}\n\nfunction bracketPath(\n type: string,\n span: number,\n depth: number,\n isVertical: boolean\n): string {\n if (type === \"curly\") {\n if (isVertical) {\n return `M0,0 C${depth * 0.6},0 ${depth * 0.4},${span / 2} ${depth},${span / 2} C${depth * 0.4},${span / 2} ${depth * 0.6},${span} 0,${span}`\n }\n return `M0,0 C0,${depth * 0.6} ${span / 2},${depth * 0.4} ${span / 2},${depth} C${span / 2},${depth * 0.4} ${span},${depth * 0.6} ${span},0`\n }\n // square bracket\n if (isVertical) {\n return `M0,0 L${depth},0 L${depth},${span} L0,${span}`\n }\n return `M0,0 L0,${depth} L${span},${depth} L${span},0`\n}\n\nfunction renderNote(\n note: {\n label?: string\n title?: string\n orientation?: string\n align?: string\n wrap?: number\n noWrap?: boolean\n },\n dx: number,\n dy: number,\n color?: string\n) {\n if (!note) return <g className=\"annotation-note\" />\n const {\n label,\n title,\n orientation: explicitOrientation,\n align: explicitAlign,\n wrap = 120,\n noWrap\n } = note\n\n if (!label && !title) return <g className=\"annotation-note\" />\n\n let orientation = explicitOrientation\n if (!orientation) {\n orientation = Math.abs(dx) > Math.abs(dy) ? \"leftRight\" : \"topBottom\"\n }\n\n let align = explicitAlign\n if (!align || align === \"dynamic\") {\n if (orientation === \"topBottom\") {\n align = dx >= 0 ? \"left\" : \"right\"\n } else {\n align = dy >= 0 ? \"top\" : \"bottom\"\n }\n }\n\n let textAnchor: \"start\" | \"middle\" | \"end\" = \"start\"\n if (orientation === \"topBottom\") {\n if (align === \"right\") textAnchor = \"end\"\n else if (align === \"middle\") textAnchor = \"middle\"\n } else {\n textAnchor = dx >= 0 ? \"start\" : \"end\"\n }\n\n const lineHeight = 16\n const padding = 4\n const titleLines =\n title ? (noWrap ? [title] : wrapText(title, wrap)) : []\n const labelLines =\n label ? (noWrap ? [label] : wrapText(label, wrap)) : []\n\n // For leftRight orientation, offset text horizontally away from the note-line\n const textX = orientation === \"leftRight\"\n ? (textAnchor === \"end\" ? -padding : padding)\n : 0\n\n let yOffset = 0\n const textElements: React.ReactElement[] = []\n\n if (titleLines.length > 0) {\n textElements.push(\n <text\n key=\"annotation-note-title\"\n className=\"annotation-note-title\"\n fill={color || undefined}\n textAnchor={textAnchor}\n fontWeight=\"bold\"\n >\n {titleLines.map((line, i) => (\n <tspan key={i} x={textX} dy={i === 0 ? 0 : lineHeight}>\n {line}\n </tspan>\n ))}\n </text>\n )\n yOffset = titleLines.length * lineHeight\n }\n\n if (labelLines.length > 0) {\n textElements.push(\n <text\n key=\"annotation-note-label\"\n className=\"annotation-note-label\"\n fill={color || undefined}\n textAnchor={textAnchor}\n y={yOffset}\n >\n {labelLines.map((line, i) => (\n <tspan key={i} x={textX} dy={i === 0 ? lineHeight : lineHeight}>\n {line}\n </tspan>\n ))}\n </text>\n )\n }\n\n let noteLine = null\n if ((title || label) && (dx !== 0 || dy !== 0)) {\n if (orientation === \"topBottom\") {\n const lineWidth = Math.min(wrap, 120)\n let x1 = 0\n let x2 = lineWidth\n if (textAnchor === \"end\") {\n x1 = -lineWidth\n x2 = 0\n } else if (textAnchor === \"middle\") {\n x1 = -lineWidth / 2\n x2 = lineWidth / 2\n }\n noteLine = (\n <line\n className=\"note-line\"\n x1={x1}\n x2={x2}\n y1={0}\n y2={0}\n stroke={color || \"currentColor\"}\n />\n )\n } else {\n const totalHeight =\n (titleLines.length + labelLines.length) * lineHeight +\n (labelLines.length > 0 ? lineHeight : 0)\n let y1 = 0\n let y2 = totalHeight\n if (align === \"bottom\") {\n y1 = -totalHeight\n y2 = 0\n } else if (align === \"middle\") {\n y1 = -totalHeight / 2\n y2 = totalHeight / 2\n }\n noteLine = (\n <line\n className=\"note-line\"\n x1={0}\n x2={0}\n y1={y1}\n y2={y2}\n stroke={color || \"currentColor\"}\n />\n )\n }\n }\n\n // Compute vertical offset for note content based on orientation and alignment.\n // The label's first tspan adds an extra lineHeight gap below the title,\n // so total visual height is larger when a label is present.\n const totalLines = titleLines.length + labelLines.length\n const totalTextHeight = totalLines * lineHeight\n const labelGap = labelLines.length > 0 ? lineHeight : 0\n const visualHeight = totalTextHeight + labelGap\n let contentYOffset = 0\n\n if (orientation === \"topBottom\") {\n if (dy < 0) {\n contentYOffset = -visualHeight\n }\n } else if (orientation === \"leftRight\") {\n if (align === \"middle\") {\n contentYOffset = -(visualHeight / 2)\n } else if (align === \"bottom\" || dy < 0) {\n contentYOffset = -visualHeight\n }\n }\n\n const contentTransform = contentYOffset !== 0\n ? `translate(0,${contentYOffset})`\n : undefined\n\n return (\n <g className=\"annotation-note\" transform={`translate(${dx},${dy})`}>\n <g className=\"annotation-note-content\" transform={contentTransform}>{textElements}</g>\n {noteLine}\n </g>\n )\n}\n\nfunction renderSubject(\n type: string,\n subject: any,\n color?: string,\n annotX?: number,\n annotY?: number\n) {\n const elements: React.ReactElement[] = []\n\n switch (type) {\n case \"callout-circle\": {\n const totalRadius =\n (subject?.radius || 0) + (subject?.radiusPadding || 0)\n if (totalRadius > 0) {\n elements.push(\n <circle\n key=\"subject-circle\"\n r={totalRadius}\n fill=\"none\"\n stroke={color || \"currentColor\"}\n />\n )\n }\n break\n }\n case \"callout-rect\": {\n const width = subject?.width || 0\n const height = subject?.height || 0\n if (width > 0 || height > 0) {\n elements.push(\n <rect\n key=\"subject-rect\"\n width={width}\n height={height}\n fill=\"none\"\n stroke={color || \"currentColor\"}\n />\n )\n }\n break\n }\n case \"callout-custom\": {\n if (subject?.custom) {\n const customElements = Array.isArray(subject.custom)\n ? subject.custom\n : [subject.custom]\n elements.push(...customElements)\n }\n break\n }\n case \"xy-threshold\": {\n const x = annotX || 0\n const y = annotY || 0\n\n if (subject?.x !== undefined) {\n const y1 = (subject.y1 || 0) - y\n const y2 = (subject.y2 || 0) - y\n const sx = (subject.x || 0) - x\n elements.push(\n <line\n key=\"threshold-line\"\n x1={sx}\n y1={y1}\n x2={sx}\n y2={y2}\n stroke={color || \"currentColor\"}\n strokeDasharray=\"5,5\"\n />\n )\n } else if (subject?.y !== undefined) {\n const x1 = (subject.x1 || 0) - x\n const x2 = (subject.x2 || 0) - x\n const sy = (subject.y || 0) - y\n elements.push(\n <line\n key=\"threshold-line\"\n x1={x1}\n y1={sy}\n x2={x2}\n y2={sy}\n stroke={color || \"currentColor\"}\n strokeDasharray=\"5,5\"\n />\n )\n } else if (subject?.x1 !== undefined || subject?.x2 !== undefined) {\n // Horizontal threshold line when only x1/x2 provided (no subject.x or subject.y)\n const x1 = (subject.x1 || 0) - x\n const x2 = (subject.x2 || 0) - x\n elements.push(\n <line\n key=\"threshold-line\"\n x1={x1}\n y1={0}\n x2={x2}\n y2={0}\n stroke={color || \"currentColor\"}\n strokeDasharray=\"5,5\"\n />\n )\n } else if (subject?.y1 !== undefined || subject?.y2 !== undefined) {\n // Vertical threshold line when only y1/y2 provided (no subject.x or subject.y)\n const y1 = (subject.y1 || 0) - y\n const y2 = (subject.y2 || 0) - y\n elements.push(\n <line\n key=\"threshold-line\"\n x1={0}\n y1={y1}\n x2={0}\n y2={y2}\n stroke={color || \"currentColor\"}\n strokeDasharray=\"5,5\"\n />\n )\n }\n break\n }\n case \"bracket\": {\n const bracketType = subject?.type || \"curly\"\n const span = subject?.width ?? subject?.height\n const depth = subject?.depth || 30\n const isVertical = subject?.width === undefined\n\n if (span !== undefined) {\n elements.push(\n <path\n key=\"bracket-path\"\n d={bracketPath(bracketType, span, depth, isVertical)}\n fill=\"none\"\n stroke={color || \"currentColor\"}\n />\n )\n }\n break\n }\n }\n\n return <g className=\"annotation-subject\">{elements}</g>\n}\n\nfunction renderConnector(\n dx: number,\n dy: number,\n connector: any,\n color?: string,\n type?: string,\n subject?: any\n) {\n const elements: React.ReactElement[] = []\n\n let startX = 0\n let startY = 0\n\n if (\n (type === \"callout-circle\" || type === \"label\") &&\n subject?.radius\n ) {\n const totalRadius =\n (subject.radius || 0) + (subject.radiusPadding || 0)\n if (totalRadius > 0 && (dx !== 0 || dy !== 0)) {\n const angle = Math.atan2(dy, dx)\n startX = Math.cos(angle) * totalRadius\n startY = Math.sin(angle) * totalRadius\n }\n } else if (type === \"callout-rect\" && subject) {\n const w = subject.width || 0\n const h = subject.height || 0\n if (w > 0 || h > 0) {\n const cx = w / 2\n const cy = h / 2\n const tdx = dx - cx\n const tdy = dy - cy\n if (tdx !== 0 || tdy !== 0) {\n const absTdx = Math.abs(tdx)\n const absTdy = Math.abs(tdy)\n const hw = w / 2\n const hh = h / 2\n const t =\n absTdx * hh > absTdy * hw ? hw / absTdx : hh / absTdy\n startX = cx + tdx * t\n startY = cy + tdy * t\n }\n }\n } else if (type === \"bracket\" && subject) {\n const width = subject.width\n const height = subject.height\n const depth = subject.depth || 30\n if (width !== undefined) {\n startX = width / 2\n startY = depth\n } else if (height !== undefined) {\n startX = depth\n startY = height / 2\n }\n }\n\n const connectorLength = Math.sqrt(\n (dx - startX) ** 2 + (dy - startY) ** 2\n )\n\n if (connectorLength > 0.5) {\n elements.push(\n <line\n key=\"connector-line\"\n x1={startX}\n y1={startY}\n x2={dx}\n y2={dy}\n stroke={color || \"currentColor\"}\n />\n )\n\n if (connector?.end === \"arrow\") {\n const arrowSize = 10\n const angleOffset = 16 / 180 * Math.PI\n const angle = Math.atan2(dy - startY, dx - startX)\n const a1x = startX + arrowSize * Math.cos(angle + angleOffset)\n const a1y = startY + arrowSize * Math.sin(angle + angleOffset)\n const a2x = startX + arrowSize * Math.cos(angle - angleOffset)\n const a2y = startY + arrowSize * Math.sin(angle - angleOffset)\n\n elements.push(\n <path\n key=\"connector-arrow\"\n d={`M${startX},${startY}L${a1x},${a1y}L${a2x},${a2y}Z`}\n fill={color || \"currentColor\"}\n stroke=\"none\"\n />\n )\n }\n }\n\n return <g className=\"annotation-connector\">{elements}</g>\n}\n\nfunction AnnotationRenderer(props: any) {\n const {\n x = 0,\n y = 0,\n dx: baseDx,\n dy: baseDy,\n nx,\n ny,\n note,\n connector,\n subject,\n type,\n color,\n className,\n disable,\n events = {},\n \"data-testid\": dataTestId\n } = props\n\n const disableSet = new Set(Array.isArray(disable) ? disable : [])\n\n let dx = baseDx || 0\n let dy = baseDy || 0\n\n if (nx !== undefined && nx !== null) dx = nx - x\n if (ny !== undefined && ny !== null) dy = ny - y\n\n const resolvedType = typeof type === \"string\" ? type : \"label\"\n\n // For bracket type, auto-position note at bracket midpoint tip\n if (resolvedType === \"bracket\" && subject && dx === 0 && dy === 0) {\n if (subject.width !== undefined) {\n dx = subject.width / 2\n const depthVal = subject.depth || 30\n dy = depthVal + (depthVal >= 0 ? 5 : -5)\n } else if (subject.height !== undefined) {\n const depthVal = subject.depth || 30\n dx = depthVal + (depthVal >= 0 ? 5 : -5)\n dy = subject.height / 2\n }\n }\n\n return (\n <g\n className={`annotation ${className || \"\"}`.trim()}\n transform={`translate(${x},${y})`}\n data-testid={dataTestId}\n {...events}\n >\n {!disableSet.has(\"connector\") && renderConnector(dx, dy, connector, color, resolvedType, subject)}\n {!disableSet.has(\"subject\") && renderSubject(resolvedType, subject, color, x, y)}\n {!disableSet.has(\"note\") && renderNote(note, dx, dy, color)}\n </g>\n )\n}\n\nexport default function SemioticAnnotation(props: AnnotationProps) {\n const { noteData } = props\n const { screenCoordinates } = noteData\n\n const annotationType =\n typeof noteData.type === \"string\" ? noteData.type : \"label\"\n\n const eventListeners = noteData.eventListeners || noteData.events || {}\n\n if (noteData.coordinates && screenCoordinates) {\n const setNX = noteData.nx || screenCoordinates[0][0] + noteData.dx\n const setNY = noteData.ny || screenCoordinates[0][1] + noteData.dy\n const notes = screenCoordinates.map((d, i) => {\n const subjectNote = Object.assign({}, noteData, {\n note: i === 0 ? noteData.note : { label: \"\" },\n x: d[0],\n y: d[1],\n nx: setNX,\n ny: setNY\n })\n return (\n <AnnotationRenderer\n data-testid=\"semiotic-annotation\"\n key={`multi-annotation-${i}`}\n {...subjectNote}\n type={annotationType}\n />\n )\n })\n\n return <g>{notes}</g>\n }\n\n const keyData = noteData.note || { title: \"none\", label: noteData.label }\n const annotationKey = `${keyData.label}-${keyData.title}-${noteData.i}`\n\n return (\n <AnnotationRenderer\n data-testid=\"semiotic-annotation\"\n key={annotationKey}\n events={eventListeners}\n {...noteData}\n type={annotationType}\n />\n )\n}\n","\"use client\"\nimport * as React from \"react\"\nimport {\n createContext,\n useContext,\n useMemo,\n useState,\n useLayoutEffect\n} from \"react\"\n\nfunction useSyncExternalStoreShim<T>(\n subscribe: (cb: Function) => () => void,\n getSnapshot: () => T\n): T {\n const [value, setValue] = useState<T>(getSnapshot)\n useLayoutEffect(() => {\n return subscribe(() => setValue(getSnapshot))\n }, [subscribe])\n return value\n}\n\nexport function createStore(fn) {\n let Ctx = createContext(null)\n\n function Provider({ children }) {\n let source = useMemo(() => createSource(fn), [])\n\n return <Ctx.Provider value={source} children={children} />\n }\n\n let useSelector = (selector) => {\n let source = useContext(Ctx)\n let getSnapshot = () => selector(source.getState())\n return useSyncExternalStoreShim(source?.subscribe, getSnapshot)\n }\n\n return [Provider, useSelector]\n}\n\nfunction createSource(fn) {\n let events = new EventTarget()\n let state = fn(set)\n\n function set(fn) {\n state = Object.assign(state, fn(set))\n events.dispatchEvent(new CustomEvent(\"update\"))\n }\n\n function subscribe(cb) {\n events.addEventListener(\"update\", cb)\n return () => events.removeEventListener(\"update\", cb)\n }\n\n return {\n getState() {\n return state\n },\n subscribe\n }\n}\n","\"use client\"\nimport { createStore } from \"./createStore\"\n\nlet [TooltipProvider, useTooltip] = createStore((set) => ({\n tooltip: null,\n changeTooltip(tooltip) {\n set(() => ({ tooltip }))\n }\n}))\n\nexport { TooltipProvider, useTooltip }\n","import React from 'react'\n\nfunction marginOffsetFn(orient, axisSettings, marginOffset) {\n if (typeof marginOffset === \"number\") {\n return marginOffset\n }\n if (axisSettings && axisSettings.find((d) => d.props.orient === orient)) {\n return 50\n }\n return 10\n}\n\nconst keyFromSVGAnnotations = (\n adjustableAnnotations,\n annotationProcessor,\n size\n) => {\n return `${adjustableAnnotations\n .map(adjustedAnnotationKeyMapper)\n .join(\",\")}${JSON.stringify(annotationProcessor)}${size.join(\",\")}`\n}\n\nfunction adjustedAnnotationKeyMapper(d) {\n if (!d || !d.props || !d.props.noteData) {\n return \"\"\n }\n const { note = {} } = d.props.noteData\n const { label, title } = note\n const id =\n d.props.noteData.id || `${d.props.noteData.x}-${d.props.noteData.y}`\n return `${id}-${label}=${title}`\n}\n\nfunction safeStringify(value) {\n const seen = new Set()\n return JSON.stringify(value, (k, v) => {\n if (seen.has(v)) {\n return \"...\"\n }\n if (typeof v === \"object\") {\n seen.add(v)\n if (k === \"note\") {\n return `${v.label}-${v.title}`\n }\n if (k === \"connector\") {\n return `${v.end}-${v.type}`\n }\n if (k === \"subject\") {\n return `${v.radius}`\n }\n if (typeof v.column === \"object\") {\n return `${v.column.x}-${v.column.y}-${v.column.name}`\n }\n\n if (\n v.voronoiX ||\n v.voronoiY ||\n v.x ||\n v.y ||\n v.dx ||\n v.dy ||\n v.label ||\n v.type ||\n v.key ||\n v.hierarchicalID ||\n v.id ||\n v.name\n ) {\n return `${v.voronoiX}-${v.voronoiY}-${v.dx}-${v.dy}-${v.x}-${v.y}-${v.label}-${v.type}-${v.key}-${v.hierarchicalID}-${v.id}-${v.name}`\n }\n\n return \"...\"\n }\n return v\n })\n}\n\nfunction noteDataWidth(noteData, charWidth = 8, layoutNoteWidth) {\n const { noteWidth = layoutNoteWidth } = noteData\n\n let noteWidthFn = noteWidth\n\n if (typeof noteWidth === \"number\") {\n noteWidthFn = () => noteWidth\n }\n\n const wrap = (noteData.note && noteData.note.wrap) || 120\n const noteText = noteData.note.label || noteData.note.label || \"\"\n const width =\n (noteWidth && noteWidthFn(noteData)) ||\n (React.isValidElement(noteData.note)\n ? 100\n : Math.min(wrap, noteText.length * charWidth))\n return width\n}\n\nfunction noteDataHeight(\n noteData,\n charWidth = 8,\n lineHeight = 20,\n layoutNoteHeight\n) {\n const { noteHeight = layoutNoteHeight } = noteData\n\n let noteHeightFn = noteHeight\n\n if (typeof noteHeight === \"number\") {\n noteHeightFn = () => noteHeight\n }\n const wrap = (noteData.note && noteData.note.wrap) || 120\n const text = noteData.note.label || noteData.note.title || \"\"\n \n const height =\n (noteHeight && noteHeightFn(noteData)) ||\n (React.isValidElement(noteData.note)\n ? 30\n : Math.ceil((text.length * charWidth) / wrap) * lineHeight +\n (noteData.note.label && noteData.note.title ? lineHeight : 0))\n\n return height\n}\n\nexport {\n marginOffsetFn,\n adjustedAnnotationKeyMapper,\n safeStringify,\n noteDataWidth,\n noteDataHeight,\n keyFromSVGAnnotations\n}\n","\"use client\"\n// modules\nimport * as React from \"react\"\nimport { useState, useEffect } from \"react\"\nimport { bumpAnnotations } from \"./../annotationLayerBehavior/annotationHandling\"\n\nimport Legend from \"./../Legend\"\nimport Annotation from \"./../Annotation\"\nimport labella from \"labella\"\nimport {\n AnnotationHandling,\n AnnotationTypes,\n AnnotationProps,\n AnnotationType\n} from \"./../types/annotationTypes\"\n\nimport { LegendProps } from \"./../types/legendTypes\"\n\nimport { useTooltip } from \"./../store/TooltipStore\"\nimport { marginOffsetFn, adjustedAnnotationKeyMapper, safeStringify, noteDataWidth, noteDataHeight, keyFromSVGAnnotations } from './helpers';\n\ninterface NoteType {\n key: string\n props: AnnotationProps\n}\n\nexport interface AnnotationLayerProps {\n legendSettings?: LegendProps\n margin: { top?: number; left?: number; right?: number; bottom?: number }\n size: number[]\n axes?: React.ReactNode[]\n annotationHandling?: AnnotationHandling | AnnotationTypes\n annotations: AnnotationType[]\n pointSizeFunction?: Function\n labelSizeFunction?: Function\n svgAnnotationRule: Function\n htmlAnnotationRule: Function\n position?: number[]\n}\n\nexport interface UpdatedAnnotationLayerProps extends AnnotationLayerProps {\n voronoiHover: Function\n}\n\ninterface AnnotationLayerState {\n adjustedAnnotationsKey?: string\n adjustedAnnotationsDataVersion?: string\n adjustedAnnotations: Object[]\n fixedAnnotations: NoteType[]\n adjustableAnnotations: NoteType[]\n}\n\nconst processAnnotations = (\n adjustableAnnotations: NoteType[],\n annotationProcessor: AnnotationHandling,\n props: AnnotationLayerProps\n) => {\n \n const {\n layout = { type: false, noteHeight: undefined, noteWidth: undefined }\n } = annotationProcessor\n\n if (layout.type === false) {\n return adjustableAnnotations\n }\n\n const { noteWidth: layoutNoteHeight, noteHeight: layoutNoteWidth } = layout\n\n let { margin = { top: 0, bottom: 0, left: 0, right: 0 } } = props\n\n const { size, axes = [] } = props\n\n margin =\n typeof margin === \"number\"\n ? { top: margin, left: margin, right: margin, bottom: margin }\n : margin\n\n if (layout.type === \"bump\") {\n const adjustedAnnotations = bumpAnnotations(\n adjustableAnnotations,\n layout,\n size,\n props.pointSizeFunction,\n props.labelSizeFunction\n )\n return adjustedAnnotations\n } else if (layout.type === \"marginalia\") {\n const {\n marginOffset,\n orient = \"nearest\",\n characterWidth = 8,\n lineHeight = 20,\n padding = 2,\n axisMarginOverride = {}\n } = layout\n const finalOrientation =\n orient === \"nearest\"\n ? [\"left\", \"right\", \"top\", \"bottom\"]\n : Array.isArray(orient)\n ? orient\n : [orient]\n\n const leftOn = finalOrientation.find((d) => d === \"left\")\n const rightOn = finalOrientation.find((d) => d === \"right\")\n const topOn = finalOrientation.find((d) => d === \"top\")\n const bottomOn = finalOrientation.find((d) => d === \"bottom\")\n\n const leftNodes = []\n const rightNodes = []\n const topNodes = []\n const bottomNodes = []\n\n for (const aNote of adjustableAnnotations) {\n const noteData = aNote.props.noteData\n\n const noteX = noteData.x[0] || noteData.x\n const noteY = noteData.y[0] || noteData.y\n\n const leftDist = leftOn ? noteX : Infinity\n const rightDist = rightOn ? size[0] - noteX : Infinity\n const topDist = topOn ? noteY : Infinity\n const bottomDist = bottomOn ? size[1] - noteY : Infinity\n\n const minDist = Math.min(leftDist, rightDist, topDist, bottomDist)\n\n if (leftDist === minDist) {\n leftNodes.push(aNote)\n } else if (rightDist === minDist) {\n rightNodes.push(aNote)\n } else if (topDist === minDist) {\n topNodes.push(aNote)\n } else {\n bottomNodes.push(aNote)\n }\n }\n\n //Adjust the margins based on which regions are active\n\n const leftForce = new labella.Force({\n minPos:\n axisMarginOverride.top !== undefined\n ? 0 + axisMarginOverride.top\n : 0 - margin.top,\n maxPos:\n axisMarginOverride.bottom !== undefined\n ? size[1] - axisMarginOverride.bottom\n : bottomOn\n ? size[1]\n : size[1] + margin.bottom\n })\n .nodes(\n leftNodes.map((d) => {\n const noteY = d.props.noteData.y[0] || d.props.noteData.y\n return new labella.Node(\n noteY,\n noteDataHeight(\n d.props.noteData,\n characterWidth,\n lineHeight,\n layoutNoteHeight\n ) + padding\n )\n })\n )\n .compute()\n\n const rightForce = new labella.Force({\n minPos:\n axisMarginOverride.top !== undefined\n ? 0 + axisMarginOverride.top\n : topOn\n ? 0\n : 0 - margin.top,\n maxPos:\n axisMarginOverride.bottom !== undefined\n ? size[1] - axisMarginOverride.bottom\n : size[1] + margin.bottom\n })\n .nodes(\n rightNodes.map((d) => {\n const noteY = d.props.noteData.y[0] || d.props.noteData.y\n return new labella.Node(\n noteY,\n noteDataHeight(\n d.props.noteData,\n characterWidth,\n lineHeight,\n layoutNoteHeight\n ) + padding\n )\n })\n )\n .compute()\n\n const topForce = new labella.Force({\n minPos:\n axisMarginOverride.left !== undefined\n ? 0 + axisMarginOverride.left\n : leftOn\n ? 0\n : 0 - margin.left,\n maxPos:\n axisMarginOverride.right !== undefined\n ? size[0] - axisMarginOverride.right\n : size[0] + margin.right\n })\n .nodes(\n topNodes.map((d) => {\n const noteX = d.props.noteData.x[0] || d.props.noteData.x\n return new labella.Node(\n noteX,\n noteDataWidth(d.props.noteData, characterWidth, layoutNoteWidth) +\n padding\n )\n })\n )\n .compute()\n\n const bottomForce = new labella.Force({\n minPos:\n axisMarginOverride.left !== undefined\n ? 0 + axisMarginOverride.left\n : 0 - margin.left,\n maxPos:\n axisMarginOverride.right !== undefined\n ? size[0] - axisMarginOverride.right\n : rightOn\n ? size[0]\n : size[0] + margin.right\n })\n .nodes(\n bottomNodes.map((d) => {\n const noteX = d.props.noteData.x[0] || d.props.noteData.x\n return new labella.Node(\n noteX,\n noteDataWidth(d.props.noteData, characterWidth, layoutNoteWidth) +\n padding\n )\n })\n )\n .compute()\n\n const bottomOffset = Math.max(\n ...bottomNodes.map(\n (d) =>\n noteDataHeight(\n d.props.noteData,\n characterWidth,\n lineHeight,\n layoutNoteHeight\n ) + padding\n )\n )\n const topOffset = Math.max(\n ...topNodes.map(\n (d) =>\n noteDataHeight(\n d.props.noteData,\n characterWidth,\n lineHeight,\n layoutNoteHeight\n ) + padding\n )\n )\n const leftOffset = Math.max(\n ...leftNodes.map(\n (d) =>\n noteDataWidth(d.props.noteData, characterWidth, layoutNoteWidth) +\n padding\n )\n )\n const rightOffset = Math.max(\n ...rightNodes.map(\n (d) =>\n noteDataWidth(d.props.noteData, characterWidth, layoutNoteWidth) +\n padding\n )\n )\n\n // const nodeOffsetHeight = Math.max()\n\n const leftSortedNodes = leftForce.nodes()\n const rightSortedNodes = rightForce.nodes()\n const topSortedNodes = topForce.nodes()\n const bottomSortedNodes = bottomForce.nodes()\n\n leftNodes.forEach((note, i) => {\n const x =\n 0 -\n leftSortedNodes[i].layerIndex * leftOffset -\n marginOffsetFn(\"left\", axes, marginOffset)\n\n const y = leftSortedNodes[i].currentPos\n note.props.noteData.nx = x\n note.props.noteData.ny = y\n\n if (note.props.noteData.note && !React.isValidElement(note)) {\n note.props.noteData.note.orientation =\n note.props.noteData.note.orientation || \"leftRight\"\n note.props.noteData.note.align =\n note.props.noteData.note.align || \"right\"\n }\n })\n\n rightNodes.forEach((note, i) => {\n const x =\n size[0] +\n rightSortedNodes[i].layerIndex * rightOffset +\n marginOffsetFn(\"right\", axes, marginOffset)\n const y = rightSortedNodes[i].currentPos\n\n note.props.noteData.nx = x\n note.props.noteData.ny = y\n\n if (note.props.noteData.note && !React.isValidElement(note)) {\n note.props.noteData.note.orientation =\n note.props.noteData.note.orientation || \"leftRight\"\n note.props.noteData.note.align =\n note.props.noteData.note.align || \"left\"\n }\n })\n\n topNodes.forEach((note, i) => {\n const x = topSortedNodes[i].currentPos\n const y =\n 0 -\n topSortedNodes[i].layerIndex * topOffset -\n marginOffsetFn(\"top\", axes, marginOffset)\n\n note.props.noteData.nx = x\n note.props.noteData.ny = y\n })\n\n bottomNodes.forEach((note, i) => {\n const x = bottomSortedNodes[i].currentPos\n const y =\n size[1] +\n bottomSortedNodes[i].layerIndex * bottomOffset +\n marginOffsetFn(\"bottom\", axes, marginOffset)\n\n note.props.noteData.nx = x\n note.props.noteData.ny = y\n })\n\n return adjustableAnnotations\n }\n return adjustableAnnotations\n}\n\nconst generateSVGAnnotations = (\n props: AnnotationLayerProps,\n annotations: Object[]\n): NoteType[] => {\n const renderedAnnotations = annotations\n .map((d, i) => props.svgAnnotationRule(d, i, props))\n .filter((d) => d !== null && d !== undefined)\n\n return renderedAnnotations\n}\n\nconst generateHTMLAnnotations = (\n props: AnnotationLayerProps,\n annotations: Object[]\n): Object[] => {\n const renderedAnnotations = annotations\n .map((d, i) => props.htmlAnnotationRule(d, i, props))\n .filter((d) => d !== null && d !== undefined)\n\n return renderedAnnotations\n}\n\nconst createAnnotations = (\n props: AnnotationLayerProps,\n state: AnnotationLayerState\n) => {\n let adjustedAnnotations = state.adjustedAnnotations,\n adjustableAnnotationsKey = state.adjustedAnnotationsKey,\n adjustableAnnotations = state.adjustableAnnotations,\n fixedAnnotations = state.fixedAnnotations\n\n let renderedSVGAnnotations = []\n let renderedHTMLAnnotations = []\n\n const adjustedAnnotationsKey = state.adjustedAnnotationsKey,\n adjustedAnnotationsDataVersion = state.adjustedAnnotationsDataVersion\n\n const {\n annotations,\n annotationHandling = false,\n size,\n svgAnnotationRule,\n htmlAnnotationRule\n } = props\n\n const annotationProcessor: AnnotationHandling =\n typeof annotationHandling === \"object\"\n ? annotationHandling\n : { layout: { type: annotationHandling }, dataVersion: \"\" }\n\n const { dataVersion = \"\" } = annotationProcessor\n\n if (svgAnnotationRule) {\n const initialSVGAnnotations: NoteType[] = generateSVGAnnotations(\n props,\n annotations\n )\n\n adjustableAnnotationsKey = keyFromSVGAnnotations(\n initialSVGAnnotations,\n annotationProcessor,\n size\n )\n\n if (annotationHandling === false) {\n adjustedAnnotations = adjustableAnnotations\n }\n\n if (\n adjustedAnnotations.length !== adjustableAnnotations.length ||\n adjustedAnnotationsKey !== adjustableAnnotationsKey ||\n adjustedAnnotationsDataVersion !== dataVersion\n ) {\n adjustedAnnotations = processAnnotations(\n adjustableAnnotations,\n annotationProcessor,\n props\n )\n } else {\n //Handle when style or other attributes change\n adjustedAnnotations = adjustableAnnotations.map((d: NoteType, i) => {\n const oldAnnotation = adjustedAnnotations[i] as NoteType\n const newNoteData = {\n ...oldAnnotation.props.noteData,\n ...d.props.noteData\n }\n\n return <Annotation key={d.key} noteData={newNoteData} />\n })\n }\n\n renderedSVGAnnotations = [...adjustedAnnotations, ...fixedAnnotations]\n }\n\n if (htmlAnnotationRule) {\n renderedHTMLAnnotations = generateHTMLAnnotations(props, annotations)\n }\n\n return {\n svgAnnotations: renderedSVGAnnotations,\n htmlAnnotations: renderedHTMLAnnotations,\n adjustedAnnotations: adjustedAnnotations,\n adjustedAnnotationsKey: adjustableAnnotationsKey,\n adjustedAnnotationsDataVersion: dataVersion\n }\n}\n\nexport default function AnnotationLayer(props: AnnotationLayerProps) {\n const {\n legendSettings,\n margin,\n size,\n annotations: baseAnnotations,\n annotationHandling\n } = props\n\n const tooltip = useTooltip((store) => {\n return store.tooltip\n })\n\n let annotations =\n tooltip != null ? baseAnnotations.concat(tooltip) : baseAnnotations\n\n let changeTooltip = useTooltip((state) => state.changeTooltip)\n\n const voronoiHover = (d) => {\n changeTooltip(d)\n }\n\n const updatedAnnotationProps: UpdatedAnnotationLayerProps = {\n ...props,\n annotations,\n voronoiHover\n }\n\n const annotationProcessor: AnnotationHandling =\n typeof annotationHandling === \"object\"\n ? annotationHandling\n : { layout: { type: annotationHandling }, dataVersion: \"\" }\n\n const { dataVersion = \"\" } = annotationProcessor\n\n const [adjustedAnnotations, changeAdjustedAnnotations] = useState([])\n const [svgAnnotations, changeSVGAnnotations] = useState([])\n const [htmlAnnotations, changeHTMLAnnotations] = useState([])\n const [adjustedAnnotationsKey, changeAdjustedAnnotationsKey] = useState(\"\")\n const [adjustedAnnotationsDataVersion, changeAdjustedAnnotationsDataVersion] =\n useState(dataVersion)\n\n const initialSVGAnnotations: NoteType[] = generateSVGAnnotations(\n updatedAnnotationProps,\n annotations\n )\n\n const adjustableAnnotations = initialSVGAnnotations.filter(\n (d) => d.props && d.props.noteData && !d.props.noteData.fixedPosition\n )\n\n const updatedAnnotationsKey = keyFromSVGAnnotations(\n adjustableAnnotations,\n annotationProcessor,\n size\n )\n\n useEffect(() => {\n const fixedAnnotations = initialSVGAnnotations.filter(\n (d) => !d.props || !d.props.noteData || d.props.noteData.fixedPosition\n )\n\n const updatedState = createAnnotations(updatedAnnotationProps, {\n adjustedAnnotations,\n adjustedAnnotationsKey,\n adjustedAnnotationsDataVersion,\n adjustableAnnotations,\n fixedAnnotations\n })\n\n changeAdjustedAnnotations(updatedState.adjustedAnnotations)\n changeAdjustedAnnotationsKey(updatedState.adjustedAnnotationsKey)\n changeAdjustedAnnotationsDataVersion(\n updatedState.adjustedAnnotationsDataVersion\n )\n changeSVGAnnotations(updatedState.svgAnnotations)\n changeHTMLAnnotations(updatedState.htmlAnnotations) \n }, [\n updatedAnnotationsKey,\n dataVersion,\n annotations.length,\n annotations.map((a) => safeStringify(a)).join(\"-\")\n ])\n\n let renderedLegend\n if (legendSettings) {\n const positionHash = {\n left: [15, 15],\n right: [size[0] + 15, 15]\n }\n const { position = \"right\", title = \"Legend\" } = legendSettings\n const legendPosition = positionHash[position]\n renderedLegend = (\n <g transform={`translate(${legendPosition.join(\",\")})`}>\n <Legend {...legendSettings} title={title} position={position} />\n </g>\n )\n }\n\n // If there are no annotations but we have a legend, render just the legend\n if (annotations.length === 0 && !legendSettings) {\n return null\n }\n\n return (\n <div\n className=\"annotation-layer\"\n style={{\n position: \"absolute\",\n pointerEvents: \"none\",\n background: \"none\"\n }}\n >\n <svg\n className=\"annotation-layer-svg\"\n height={size[1]}\n width={size[0]}\n style={{\n background: \"none\",\n pointerEvents: \"none\",\n position: \"absolute\",\n left: `${margin.left}px`,\n top: `${margin.top}px`,\n overflow: \"visible\"\n }}\n >\n <g>\n {renderedLegend}\n {svgAnnotations}\n </g>\n </svg>\n <div\n className=\"annotation-layer-html\"\n style={{\n background: \"none\",\n pointerEvents: \"none\",\n position: \"absolute\",\n height: `${size[1]}px`,\n width: `${size[0]}px`,\n left: `${margin.left}px`,\n top: `${margin.top}px`\n }}\n >\n {htmlAnnotations}\n </div>\n </div>\n )\n}\n","export const findFirstAccessorValue = (accessorArray, data) => {\n for (let i = 0; i < accessorArray.length; i++) {\n const valueCheck = accessorArray[i](data)\n if (\n valueCheck !== undefined &&\n !Number.isNaN(valueCheck) &&\n valueCheck !== null\n )\n return valueCheck\n }\n\n return undefined\n}\n","import { sum } from \"d3-array\"\n\nimport { findFirstAccessorValue } from \"../data/multiAccessorUtils\"\n\nimport {\n ProjectedLine,\n ProjectedPoint,\n RawLine,\n RawSummary\n} from \"../types/generalTypes\"\nimport { AnnotationType } from \"../types/annotationTypes\"\n\nconst datesForUnique = (d) => (d instanceof Date ? d.getTime() : d)\n\ntype SummaryProjectionTypes = {\n data: Array<RawSummary>\n summaryDataAccessor: Array<Function>\n xAccessor: Array<Function>\n yAccessor: Array<Function>\n}\n\ntype LineProjectionTypes = {\n data: Array<RawLine>\n lineDataAccessor: Array<Function>\n xProp: string\n xPropTop?: string\n xPropBottom?: string\n yProp: string\n yPropTop?: string\n yPropBottom?: string\n xAccessor: Array<Function>\n yAccessor: Array<Function>\n}\n\ntype DifferenceLineProps = {\n data: Array<ProjectedLine>\n yProp: string\n yPropTop: string\n yPropBottom: string\n}\n\ntype StackedAreaTypes = {\n type: string\n data: Array<ProjectedLine>\n xProp: string\n yProp: string\n yPropMiddle: string\n sort?: (a: ProjectedLine, b: ProjectedLine) => number\n yPropTop: string\n yPropBottom: string\n}\n\ntype CumulativeLineTypes = {\n type: string\n data: Array<ProjectedLine>\n yPropMiddle: string\n yPropTop: string\n yPropBottom: string\n y1?: Function\n}\n\ntype LineChartTypes = {\n data: Array<ProjectedLine>\n y1?: Function\n x1?: Function\n yPropTop: string\n yPropMiddle: string\n yPropBottom: string\n xPropTop: string\n xPropMiddle: string\n xPropBottom: string\n}\n\ntype RelativeYTypes = {\n point?: ProjectedPoint | AnnotationType\n projectedYMiddle: string\n projectedY: string\n yAccessor: Array<Function>\n yScale: Function\n showLinePoints?: boolean | string\n}\n\ntype RelativeXTypes = {\n point?: ProjectedPoint | AnnotationType\n projectedXMiddle: string\n projectedX: string\n xAccessor: Array<Function>\n xScale: Function\n}\n\nexport const projectSummaryData = ({\n data,\n summaryDataAccessor,\n xAccessor,\n yAccessor\n}: SummaryProjectionTypes) => {\n const projectedData = []\n summaryDataAccessor.forEach((actualSummaryAccessor) => {\n xAccessor.forEach((actualXAccessor) => {\n yAccessor.forEach((actualYAccessor) => {\n const projection = (d: Object) =>\n actualSummaryAccessor(d).map((p, q) => [\n actualXAccessor(p, q),\n actualYAccessor(p, q)\n ])\n\n data.forEach((d) => {\n projectedData.push({\n ...d,\n _baseData: actualSummaryAccessor(d),\n _xyfCoordinates: projection(d)\n })\n })\n })\n })\n })\n\n return projectedData\n}\n\nexport const projectLineData = ({\n data,\n lineDataAccessor,\n xProp,\n xPropTop,\n xPropBottom,\n yProp,\n yPropTop,\n yPropBottom,\n xAccessor,\n yAccessor\n}: LineProjectionTypes) => {\n if (!Array.isArray(data)) {\n data = [data]\n }\n const projectedLine: Array<ProjectedLine> = []\n\n lineDataAccessor.forEach((actualLineAccessor, lineIndex) => {\n xAccessor.forEach((actualXAccessor, xIndex) => {\n yAccessor.forEach((actualYAccessor, yIndex) => {\n data.forEach((d: ProjectedLine) => {\n const originalLineData = { ...d, xIndex, yIndex, lineIndex }\n\n originalLineData.data = actualLineAccessor(d).map((p, q) => {\n const originalCoords = { data: p }\n\n originalCoords[xProp] = actualXAccessor(p, q)\n originalCoords[xPropTop] = originalCoords[xProp]\n originalCoords[xPropBottom] = originalCoords[xProp]\n originalCoords[yProp] = actualYAccessor(p, q)\n originalCoords[yPropTop] = originalCoords[yProp]\n originalCoords[yPropBottom] = originalCoords[yProp]\n\n return originalCoords\n })\n originalLineData.key = originalLineData.key || projectedLine.length\n projectedLine.push(originalLineData)\n })\n })\n })\n })\n\n return projectedLine\n}\n\nexport const differenceLine = ({\n data,\n yProp,\n yPropTop,\n yPropBottom\n}: DifferenceLineProps) => {\n data.forEach((l, i) => {\n l.data.forEach((point, q) => {\n const otherLine = i === 0 ? 1 : 0\n if (point[yProp] > data[otherLine].data[q][yProp]) {\n point[yPropBottom] = data[otherLine].data[q][yProp]\n point[yPropTop] = point[yProp]\n } else {\n point[yPropTop] = point[yProp]\n point[yPropBottom] = point[yProp]\n }\n })\n })\n\n return data\n}\n\nexport const stackedArea = ({\n type = \"stackedarea\",\n data,\n xProp,\n yProp,\n yPropMiddle,\n sort,\n yPropTop,\n yPropBottom\n}: StackedAreaTypes) => {\n const valueMap = new Map()\n const lineSums = data.map(() => 0)\n\n let lineIndex = 0\n for (const line of data) {\n /*\n After we calculate this, we then sort the lines (and the value used for the sorting is in this for loop)\n So, we need to know their original index order in order to use the naively populated coordinate array in valueMap\n Otherwise the coordinates in the map will be in different order than the sorted order of the lines\n */\n line.__lineIndex = lineIndex\n for (const coord of line.data) {\n const coordX = datesForUnique(coord[xProp])\n lineSums[lineIndex] += coord[yProp]\n if (!valueMap.has(coordX)) {\n valueMap.set(coordX, [])\n }\n valueMap.get(coordX)[lineIndex] = coord\n }\n lineIndex++\n }\n\n let stackSort = (a, b) => lineSums[b.key] - lineSums[a.key]\n if (type === \"stackedpercent-invert\" || type === \"stackedarea-invert\") {\n stackSort = (a, b) => lineSums[a.key] - lineSums[b.key]\n }\n sort = sort === undefined ? stackSort : sort\n\n if (sort !== null) {\n data = data.sort(sort)\n }\n\n const lineIndexSortLookup = data.map((line) => line.__lineIndex)\n\n for (const [, coordsAtX] of valueMap) {\n let negativeOffset = 0\n let positiveOffset = 0\n\n const positiveStepTotal = sum(coordsAtX, (d) =>\n d?.[yProp] > 0 ? d[yProp] : 0\n )\n const negativeStepTotal = sum(coordsAtX, (d) =>\n d?.[yProp] < 0 ? d[yProp] : 0\n )\n\n for (const newIndex of lineIndexSortLookup) {\n const l = coordsAtX[newIndex]\n if (l) {\n if (l[yProp] < 0) {\n if (\n type === \"linepercent\" ||\n type === \"stackedpercent\" ||\n type === \"stackedpercent-invert\"\n ) {\n const percent = l[yProp] / negativeStepTotal\n l.percent = percent\n if (type === \"linepercent\") {\n l[yPropBottom] =\n l[yPropBottom] =\n l[yPropTop] =\n l[yPropMiddle] =\n percent\n } else {\n const adjustment = negativeStepTotal >= 0 ? 0 : percent\n l[yPropBottom] =\n negativeStepTotal === 0\n ? 0\n : -(negativeOffset / negativeStepTotal)\n l[yPropTop] = l[yPropBottom] - adjustment\n l[yPropMiddle] = l[yPropBottom] - adjustment / 2\n }\n } else {\n l[yPropBottom] = negativeOffset\n l[yPropTop] = negativeOffset + l[yProp]\n l[yPropMiddle] = negativeOffset + l[yProp] / 2\n }\n negativeOffset += l[yProp]\n } else {\n if (\n type === \"linepercent\" ||\n type === \"stackedpercent\" ||\n type === \"stackedpercent-invert\"\n ) {\n const percent = l[yProp] / positiveStepTotal\n l.percent = percent\n\n if (type === \"linepercent\") {\n l[yPropBottom] = l[yPropTop] = l[yPropMiddle] = percent\n } else {\n const adjustment = positiveStepTotal <= 0 ? 0 : percent\n l[yPropBottom] =\n positiveStepTotal === 0 ? 0 : positiveOffset / positiveStepTotal\n l[yPropTop] = l[yPropBottom] + adjustment\n l[yPropMiddle] = l[yPropBottom] + adjustment / 2\n }\n } else {\n l[yPropBottom] = positiveOffset\n l[yPropTop] = positiveOffset + l[yProp]\n l[yPropMiddle] = positiveOffset + l[yProp] / 2\n }\n positiveOffset += l[yProp]\n }\n }\n }\n }\n\n return data\n}\n\nexport const lineChart = ({\n data,\n y1,\n x1,\n yPropTop,\n yPropMiddle,\n yPropBottom,\n xPropTop,\n xPropMiddle,\n xPropBottom\n}: LineChartTypes) => {\n if (y1) {\n for (const line of data) {\n for (const point of line.data) {\n point[yPropBottom] = y1(point)\n // Use top position for hover so overlapping-area hover points\n // align with the visible line rather than compressing toward the baseline.\n point[yPropMiddle] = point[yPropTop]\n }\n }\n }\n\n if (x1) {\n for (const line of data) {\n for (const point of line.data) {\n point[xPropBottom] = x1(point)\n point[xPropMiddle] = (point[xPropBottom] + point[xPropTop]) / 2\n }\n }\n }\n\n return data\n}\n\nexport const cumulativeLine = ({\n data,\n y1,\n yPropTop,\n yPropMiddle,\n yPropBottom,\n type = \"cumulative\"\n}: CumulativeLineTypes) => {\n for (const line of data) {\n let cumulativeValue = 0\n const dataArray =\n type === \"cumulative-reverse\" ? line.data.reverse() : line.data\n\n for (const point of dataArray) {\n cumulativeValue += point[yPropTop]\n point[yPropBottom] =\n point[yPropTop] =\n point[yPropMiddle] =\n cumulativeValue\n if (y1) {\n point[yPropBottom] = y1(point)\n point[yPropMiddle] = point[yPropBottom] + point[yPropTop] / 2\n }\n }\n }\n\n return data\n}\n\nexport const bumpChart = ({\n type = \"bumpline\",\n data,\n xProp,\n yProp,\n yPropMiddle,\n yPropTop,\n yPropBottom\n}: StackedAreaTypes) => {\n const uniqXValues = new Map()\n for (const line of data) {\n for (const point of line.data) {\n const xValue = datesForUnique(point[xProp])\n if (!uniqXValues.has(xValue)) {\n uniqXValues.set(xValue, [])\n }\n uniqXValues.get(xValue).push(point)\n }\n }\n\n let bumpSort = (a, b) => {\n if (a[yProp] > b[yProp]) {\n return 1\n }\n if (a[yProp] < b[yProp]) {\n return -1\n }\n return -1\n }\n if (type === \"bumparea-invert\" || type === \"bumpline-invert\") {\n bumpSort = (a, b) => {\n if (a[yProp] < b[yProp]) {\n return 1\n }\n if (a[yProp] > b[yProp]) {\n return -1\n }\n return -1\n }\n }\n\n for (const [, pointsAtXArray] of uniqXValues) {\n let negativeOffset = 0\n let positiveOffset = 0\n\n pointsAtXArray.sort(bumpSort)\n\n let rank = 1\n for (const point of pointsAtXArray) {\n point._XYFrameRank\n if (type === \"bumparea\" || type === \"bumparea-invert\") {\n if (point[yProp] < 0) {\n point[yPropTop] = negativeOffset + point[yProp]\n point[yPropMiddle] = negativeOffset + point[yProp] / 2\n point[yPropBottom] = negativeOffset\n negativeOffset += point[yProp]\n } else {\n point[yPropTop] = positiveOffset + point[yProp]\n point[yPropMiddle] = positiveOffset + point[yProp] / 2\n point[yPropBottom] = positiveOffset\n positiveOffset += point[yProp]\n }\n } else {\n point[yProp] = rank\n point[yPropTop] = rank\n point[yPropBottom] = rank\n }\n rank++\n }\n }\n\n return data\n}\n\nexport const dividedLine = (\n parameters: Function,\n points: Array<Object>,\n searchIterations: number = 10\n) => {\n let currentParameters = parameters(points[0], 0)\n let currentPointsArray = []\n const dividedLinesData = [\n { key: currentParameters, points: currentPointsArray }\n ]\n points.forEach((point, pointI) => {\n const newParameters = parameters(point, pointI)\n\n let matchingParams = newParameters === currentParameters\n const stringNewParams = JSON.stringify(newParameters)\n const stringCurrentParams = JSON.stringify(currentParameters)\n\n if (typeof currentParameters === \"object\") {\n matchingParams = stringNewParams === stringCurrentParams\n }\n\n if (matchingParams) {\n currentPointsArray.push(point)\n } else {\n const lastPoint = currentPointsArray[currentPointsArray.length - 1]\n let pointA = lastPoint\n let pointB = point\n let stringBParams = stringNewParams\n\n let x = 0\n while (x < searchIterations && stringNewParams === stringBParams) {\n const keys = Object.keys(pointA)\n const findPoints = simpleSearchFunction({\n pointA,\n pointB,\n currentParameters,\n parameters,\n keys\n })\n pointA = findPoints[0]\n pointB = findPoints[1]\n stringBParams = JSON.stringify(parameters(pointB))\n x++\n }\n currentPointsArray.push(pointB)\n currentPointsArray = [pointB, point]\n dividedLinesData.push({ key: newParameters, points: currentPointsArray })\n currentParameters = newParameters\n }\n })\n return dividedLinesData\n}\n\nfunction simpleSearchFunction({\n pointA,\n pointB,\n currentParameters,\n parameters,\n keys\n}: {\n pointA: Object\n pointB: Object\n currentParameters: Object\n parameters: Function\n keys: Array<string>\n}) {\n const betweenPoint = {}\n keys.forEach((key) => {\n betweenPoint[key] =\n typeof pointA[key] === \"number\"\n ? (pointA[key] + pointB[key]) / 2\n : undefined\n })\n const stringBetween = JSON.stringify(parameters(betweenPoint))\n const stringCurrent = JSON.stringify(currentParameters)\n\n if (stringBetween === stringCurrent) {\n return [betweenPoint, pointB]\n }\n return [pointA, betweenPoint]\n}\n\nexport function funnelize({\n data,\n steps,\n key\n}: {\n data: Array<Object>\n steps: Array<string>\n key: string\n}) {\n const funnelData = []\n if (!Array.isArray(data)) {\n data = [data]\n }\n if (!steps) {\n steps = data.map((d) => Object.keys(d)).reduce((a, b) => a.concat(b), [])\n }\n\n data.forEach((datum, i) => {\n const datumKey = key ? datum[key] : i\n steps.forEach((step) => {\n const funnelDatum = { funnelKey: datumKey, stepName: \"\", stepValue: 0 }\n funnelDatum.stepName = step\n funnelDatum.stepValue = datum[step] ? datum[step] : 0\n funnelData.push(funnelDatum)\n })\n })\n\n return funnelData\n}\n\nconst whichPoint = {\n bottom: \"yBottom\",\n top: \"yTop\"\n}\n\nexport function relativeY({\n point,\n projectedY,\n yAccessor,\n yScale,\n showLinePoints\n}: RelativeYTypes) {\n const baseData =\n point &&\n (showLinePoints &&\n showLinePoints !== true &&\n point[whichPoint[showLinePoints]] !== undefined\n ? point[whichPoint[showLinePoints]]\n : point.yMiddle !== undefined\n ? point.yMiddle\n : point[projectedY] !== undefined\n ? point[projectedY]\n : findFirstAccessorValue(yAccessor, point))\n\n if (Array.isArray(baseData)) {\n return baseData.map((d) => yScale(d))\n }\n return baseData !== undefined ? yScale(baseData) : 0\n}\n\nexport function relativeX({\n point,\n projectedXMiddle,\n projectedX,\n xAccessor,\n xScale\n}: RelativeXTypes) {\n const baseData =\n point &&\n (point[projectedXMiddle] !== undefined\n ? point[projectedXMiddle]\n : point[projectedX] !== undefined\n ? point[projectedX]\n : findFirstAccessorValue(xAccessor, point))\n\n if (Array.isArray(baseData)) {\n return baseData.map((d) => xScale(d))\n }\n return baseData !== undefined ? xScale(baseData) : 0\n}\n\nexport function findPointByID({\n point,\n idAccessor,\n lines,\n xScale,\n projectedX,\n xAccessor\n}: {\n point: ProjectedPoint\n idAccessor: Function\n lines: { data: ProjectedLine[] }\n xScale: Function\n projectedX: string\n xAccessor: Array<Function>\n}) {\n const pointID = idAccessor(point.parentLine || point)\n\n if (pointID) {\n const thisLine = lines.data.find((l) => idAccessor(l) === pointID)\n\n if (!thisLine) {\n return null\n }\n const pointX = xScale(findFirstAccessorValue(xAccessor, point))\n const thisPoint = thisLine.data.find(\n (p) => xScale(p[projectedX]) === pointX\n )\n\n if (!thisPoint) {\n return null\n }\n\n const newPoint = {\n ...point,\n ...thisPoint,\n ...thisPoint.data,\n parentLine: thisLine\n }\n const reactAnnotationProps = [\n \"type\",\n \"label\",\n \"note\",\n \"connector\",\n \"disabled\",\n \"color\",\n \"subject\"\n ]\n\n reactAnnotationProps.forEach((prop) => {\n if (point[prop]) newPoint[prop] = point[prop]\n })\n return newPoint\n }\n return point\n}\n","import * as React from \"react\"\n\nimport { line, curveLinear } from \"d3-shape\"\n\nimport { dividedLine, projectLineData } from \"./svg/lineDrawing\"\n\n// components\n\nimport { ProjectedLine } from \"./types/generalTypes\"\n\ninterface DividedLineProps {\n parameters: Function\n className: string\n customAccessors: { x: Function; y: Function }\n lineDataAccessor: Function\n data: ProjectedLine[]\n interpolate?: Function\n searchIterations?: number\n}\n\nconst createLineSegments = (props) => {\n const {\n parameters,\n className,\n interpolate = curveLinear,\n customAccessors,\n lineDataAccessor,\n data,\n searchIterations,\n ...rest\n } = props\n\n const { x, y } = customAccessors\n\n const lineData = projectLineData({\n data: data,\n lineDataAccessor: [lineDataAccessor],\n xProp: \"x\",\n yProp: \"y\",\n xAccessor: [x],\n yAccessor: [y]\n })\n\n //Compatibility before Semiotic 2\n for (const projectedD of lineData) {\n projectedD.data = projectedD.data.map((d) => ({ ...d.data, ...d }))\n }\n\n const lines = dividedLine(parameters, lineData[0].data, searchIterations)\n\n const lineRender = line()\n .curve(interpolate)\n .x((d) => d.x)\n .y((d) => d.y)\n\n return lines.map((d, i) => (\n <path {...rest}\n className={className}\n \n key={`DividedLine-${i}`}\n style={d.key}\n d={lineRender(d.points)}\n />\n ))\n}\n\nexport default function DividedLine(props: DividedLineProps) {\n const lines = createLineSegments(props)\n\n return <g>{lines}</g>\n}\n","\"use client\"\nimport * as React from \"react\"\nimport { useEffect, useRef } from \"react\"\nimport { select } from \"d3-selection\"\n\nconst flatten = (list) =>\n list.reduce(\n (a, b) =>\n a.concat(Array.isArray(b) ? flatten(b.slice().sort((a, b) => a - b)) : b),\n []\n )\n\nfunction flatShortArray(baseArray = []) {\n if (!Array.isArray(baseArray)) return \"not-array\"\n let array = baseArray.slice()\n if (!Array.isArray(array[0])) {\n array = array.slice().sort((a, b) => a - b)\n }\n const flat = flatten(array)\n\n const stringifiedFlattened = flat\n .map(\n (d) =>\n (d instanceof Date && d.toString()) ||\n (d !== undefined && d.toFixed && d.toFixed(2)) ||\n \"empty\"\n )\n .toString()\n return stringifiedFlattened\n}\n\nconst createBrush = (node, props) => {\n const { svgBrush: brush, selectedExtent: baseSelectedExtent } = props\n select(node).call(brush)\n if (baseSelectedExtent) {\n let selectedExtent = baseSelectedExtent\n if (Array.isArray(baseSelectedExtent[0])) {\n const sortedY = [selectedExtent[0][1], selectedExtent[1][1]].sort(\n (a, b) => a - b\n )\n selectedExtent = [\n [selectedExtent[0][0], sortedY[0]],\n [selectedExtent[1][0], sortedY[1]]\n ]\n }\n\n select(node).call(brush.move, selectedExtent)\n }\n}\n\ninterface BrushProps {\n extent?: number[] | number[][]\n selectedExtent?: number[] | number[][]\n svgBrush: { (): () => void; move: Function }\n position?: number[]\n}\n\nexport default function Brush(props: BrushProps) {\n const { extent, selectedExtent } = props\n\n const node = useRef(null)\n const flatExtent = flatShortArray(extent)\n const flatSelectedExtent = flatShortArray(selectedExtent)\n\n useEffect(() => {\n if (node?.current) {\n createBrush(node.current, props)\n }\n }, [flatExtent, flatSelectedExtent, node])\n\n const { position = [0, 0] } = props\n return (\n <g transform={`translate(${position})`} ref={node} className=\"xybrush\" />\n )\n}\n","export const projectedX = \"x\"\nexport const projectedY = \"y\"\nexport const projectedYMiddle = \"yMiddle\"\nexport const projectedYTop = \"yTop\"\nexport const projectedYBottom = \"yBottom\"\nexport const projectedXMiddle = \"xMiddle\"\nexport const projectedXTop = \"xTop\"\nexport const projectedXBottom = \"xBottom\"\n","import * as React from \"react\"\n\nimport {\n projectedY,\n projectedYTop,\n projectedYMiddle,\n projectedYBottom\n} from \"../constants/coordinateNames\"\n\nimport { extent as d3Extent } from \"d3-array\"\nimport { Delaunay, Voronoi } from \"d3-delaunay\"\n\nimport { CustomHoverType } from \"../types/annotationTypes\"\n\nimport {\n InteractionLayerProps,\n VoronoiEntryType\n} from \"../types/interactionTypes\"\n\n\nconst constructDataObject = (\n d?: { data?: Record<string, any> | object[]; type?: string },\n points?: Object[]\n) => {\n if (d === undefined) return d\n return d && d.data ? { points, ...d.data, ...d } : { points, ...d }\n}\n\nexport const changeVoronoi = (\n voronoiHover: Function,\n d: { type?: string; data?: Record<string, any> | object[] },\n customHoverTypes: CustomHoverType,\n customHoverBehavior: Function,\n points: Object[],\n e: React.MouseEvent\n) => {\n //Until semiotic 2\n const dataObject = constructDataObject(d, points)\n if (customHoverBehavior) customHoverBehavior(dataObject)\n\n if (!d) voronoiHover(null)\n else if (customHoverTypes === true) {\n const vorD = Object.assign({}, dataObject)\n vorD.type = vorD.type === \"column-hover\" ? \"column-hover\" : \"frame-hover\"\n voronoiHover(vorD, e)\n } else if (customHoverTypes) {\n const arrayWrappedHoverTypes = Array.isArray(customHoverTypes)\n ? customHoverTypes\n : [customHoverTypes]\n const mappedHoverTypes = arrayWrappedHoverTypes\n .map((c) => {\n const finalC = typeof c === \"function\" ? c(dataObject) : c\n if (!finalC) return undefined\n return Object.assign({}, dataObject, finalC)\n })\n .filter((d) => d)\n\n voronoiHover(mappedHoverTypes, e)\n }\n}\n\nexport const clickVoronoi = (\n d: Object,\n customClickBehavior: Function,\n points: Object[],\n e: React.MouseEvent\n) => {\n //Until semiotic 2\n const dataObject = constructDataObject(d, points)\n\n if (customClickBehavior) customClickBehavior(dataObject, e)\n}\nexport const doubleclickVoronoi = (\n d: Object,\n customDoubleClickBehavior: Function,\n points: Object[],\n e: React.MouseEvent\n) => {\n //Until semiotic 2\n const dataObject = constructDataObject(d, points)\n\n if (customDoubleClickBehavior) customDoubleClickBehavior(dataObject, e)\n}\n\nexport const brushStart = (\n e?: number[] | number[][],\n columnName?: string,\n data?: object,\n columnData?: object,\n interaction?\n) => {\n if (interaction && interaction.start)\n interaction.start(e, columnName, data, columnData)\n}\n\nexport const brushing = (\n e?: number[] | number[][],\n columnName?: string,\n data?: object,\n columnData?: object,\n interaction?\n) => {\n if (interaction && interaction.during)\n interaction.during(e, columnName, data, columnData)\n}\n\nexport const brushEnd = (\n e?: number[] | number[][],\n columnName?: string,\n data?: object,\n columnData?: object,\n interaction?\n) => {\n if (interaction && interaction.end)\n interaction.end(e, columnName, data, columnData)\n}\n\nexport const calculateOverlay = (\n props: InteractionLayerProps,\n voronoiHover: Function\n) => {\n let voronoiPaths = []\n const {\n xScale,\n yScale,\n points,\n projectedX,\n showLinePoints,\n size,\n overlay,\n interactionOverflow = { top: 0, bottom: 0, left: 0, right: 0 },\n customClickBehavior,\n customDoubleClickBehavior,\n customHoverBehavior,\n hoverAnnotation,\n margin,\n advancedSettings = {}\n } = props\n const whichPoints = {\n top: projectedYTop,\n bottom: projectedYBottom\n }\n\n const pointerStyle =\n customClickBehavior || customDoubleClickBehavior\n ? { cursor: \"pointer\" }\n : {}\n\n if (points && hoverAnnotation && !overlay) {\n const { voronoiFilter = () => true } = advancedSettings\n const voronoiDataset: VoronoiEntryType[] = []\n const voronoiUniqueMap = new Map()\n\n for (const d of points) {\n if (voronoiFilter({ ...d, ...d.data })) {\n const xValue = Math.floor(xScale(d[projectedX]))\n const yValue = Math.floor(\n yScale(\n showLinePoints && d[whichPoints[showLinePoints]] !== undefined\n ? d[whichPoints[showLinePoints]]\n : d[projectedYMiddle] !== undefined\n ? d[projectedYMiddle]\n : d[projectedY]\n )\n )\n if (\n xValue >= 0 - margin.left &&\n xValue <= size[0] + margin.right &&\n yValue >= 0 - margin.top &&\n yValue <= size[1] + margin.bottom &&\n xValue !== undefined &&\n yValue !== undefined &&\n isNaN(xValue) === false &&\n isNaN(yValue) === false\n ) {\n const pointKey = `${xValue},${yValue}`\n if (!voronoiUniqueMap.has(pointKey)) {\n const voronoiPoint = {\n ...d,\n coincidentPoints: [d],\n voronoiX: xValue,\n voronoiY: yValue\n }\n voronoiDataset.push(voronoiPoint)\n voronoiUniqueMap.set(pointKey, voronoiPoint)\n } else voronoiUniqueMap.get(pointKey).coincidentPoints.push(d)\n }\n }\n }\n\n let voronoiXExtent = d3Extent(voronoiDataset.map((d) => d.voronoiX))\n let voronoiYExtent = d3Extent(voronoiDataset.map((d) => d.voronoiY))\n\n if (voronoiXExtent[0] == null || voronoiYExtent == null) {\n voronoiXExtent = [0, 0]\n voronoiYExtent = [0, 0]\n }\n\n const voronoiExtent = [\n Math.min(voronoiXExtent[0] - 5, -interactionOverflow.left),\n Math.min(voronoiYExtent[0] - 5, -interactionOverflow.top),\n Math.max(voronoiXExtent[1] + 5, size[0] + interactionOverflow.right),\n Math.max(voronoiYExtent[1] + 5, size[1] + interactionOverflow.bottom)\n ]\n\n const delaunay = Delaunay.from(\n voronoiDataset,\n (d) => d.voronoiX,\n (d) => d.voronoiY\n )\n\n const voronoi = delaunay.voronoi(voronoiExtent)\n\n voronoiPaths = voronoiDataset.map((d, i: number) => {\n let clipPath = null\n if (advancedSettings.voronoiClipping) {\n const circleSize =\n advancedSettings.voronoiClipping === true\n ? 50\n : advancedSettings.voronoiClipping\n clipPath = (\n <clipPath id={`voronoi-${i}`}>\n <circle r={circleSize} cx={d.voronoiX} cy={d.voronoiY} />\n </clipPath>\n )\n }\n return (\n <g key={`voronoi-${i}`}>\n <path\n onClick={(e) => {\n clickVoronoi(voronoiDataset[i], customClickBehavior, points, e)\n }}\n onDoubleClick={(e) => {\n doubleclickVoronoi(\n voronoiDataset[i],\n customDoubleClickBehavior,\n points,\n e\n )\n }}\n onMouseEnter={(e) => {\n changeVoronoi(\n voronoiHover,\n voronoiDataset[i],\n hoverAnnotation,\n customHoverBehavior,\n points,\n e\n )\n }}\n onMouseLeave={(e) => {\n changeVoronoi(\n voronoiHover,\n undefined,\n undefined,\n customHoverBehavior,\n undefined,\n e\n )\n }}\n key={`interactionVoronoi${i}`}\n d={voronoi.renderCell(i)}\n style={{\n fillOpacity: 0,\n ...pointerStyle\n }}\n clipPath={`url(#voronoi-${i})`}\n />\n {clipPath}\n </g>\n )\n }, this)\n\n return voronoiPaths\n } else if (overlay) {\n const renderedOverlay: Array<React.ReactNode> = overlay.map(\n (\n overlayRegion: {\n overlayData: object\n renderElement: React.ReactNode\n },\n i: number\n ) => {\n const { overlayData, ...rest } = overlayRegion\n const overlayProps = {\n key: `overlay-${i}`,\n onMouseEnter: (e) => {\n changeVoronoi(\n voronoiHover,\n overlayData,\n props.hoverAnnotation,\n customHoverBehavior,\n points,\n e\n )\n },\n onMouseLeave: (e) => {\n changeVoronoi(\n voronoiHover,\n undefined,\n undefined,\n customHoverBehavior,\n undefined,\n e\n )\n },\n onClick: (e) => {\n clickVoronoi(overlayData, customClickBehavior, points, e)\n },\n onDoubleClick: (e) => {\n doubleclickVoronoi(\n overlayData,\n customDoubleClickBehavior,\n points,\n e\n )\n },\n style: { opacity: 0, ...pointerStyle }\n }\n\n if (React.isValidElement(overlayRegion.renderElement)) {\n return React.cloneElement(overlayRegion.renderElement, overlayProps)\n } else {\n const { markType, ...restProps } = rest as { markType?: string; [key: string]: unknown }\n return React.createElement(markType || 'path', {\n ...restProps,\n key: `overlay-${i}`,\n ...overlayProps\n })\n }\n }\n )\n\n return renderedOverlay\n }\n}\n","import { arc, line, curveLinearClosed } from \"d3-shape\"\nimport { interpolateNumber } from \"d3-interpolate\"\n\nconst emptyObjectReturnFn = () => ({})\n\nconst twoPI = Math.PI * 2\n\nconst dedupeRibbonPoints =\n (weight = 1) =>\n (p, c) => {\n const l = p[p.length - 1]\n if (\n !l ||\n Math.round(l.x / weight) !== Math.round(c.x / weight) ||\n Math.round(l.y / weight) !== Math.round(c.y / weight)\n ) {\n p.push(c)\n }\n return p\n }\n\nexport const arcTweener = (oldProps, newProps) => {\n const innerRadiusInterpolator = interpolateNumber(\n oldProps.innerRadius,\n newProps.innerRadius\n )\n const outerRadiusInterpolator = interpolateNumber(\n oldProps.outerRadius,\n newProps.outerRadius\n )\n const startAngleInterpolator = interpolateNumber(\n oldProps.startAngle,\n newProps.startAngle\n )\n const endAngleInterpolator = interpolateNumber(\n oldProps.endAngle,\n newProps.endAngle\n )\n\n return (t) => {\n const sliceGenerator = arc()\n .innerRadius(innerRadiusInterpolator(t))\n .outerRadius(outerRadiusInterpolator(t))\n return sliceGenerator({\n startAngle: startAngleInterpolator(t),\n endAngle: endAngleInterpolator(t)\n })\n }\n}\n\nexport const drawAreaConnector = ({\n x1,\n x2,\n y1,\n y2,\n sizeX1,\n sizeY1,\n sizeX2,\n sizeY2\n}) => {\n return `M${x1},${y1}L${x2},${y2}L${x2 + sizeX2},${y2 + sizeY2}L${\n x1 + sizeX1\n },${y1 + sizeY1}Z`\n}\n\nexport const groupBarMark = ({\n bins,\n binMax,\n relativeBuckets,\n columnWidth,\n projection,\n adjustedSize,\n summaryI,\n summary,\n summaryStyle,\n type\n}) => {\n const mappedBins = []\n const mappedPoints = []\n const actualMax = (relativeBuckets && relativeBuckets[summary.name]) || binMax\n\n const summaryElementStylingFn = type.elementStyleFn || emptyObjectReturnFn\n const barPadding = type.padding || 0\n\n bins.forEach((d, i) => {\n const opacity = d.value / actualMax\n const additionalStyle = summaryElementStylingFn(d.value, opacity, d.pieces)\n const finalStyle =\n type.type === \"heatmap\"\n ? { opacity: opacity, fill: summaryStyle.fill, ...additionalStyle }\n : { ...summaryStyle, ...additionalStyle }\n\n const thickness = Math.max(1, d.y1 - barPadding * 2)\n\n const finalColumnWidth =\n type.type === \"heatmap\" ? columnWidth : columnWidth * opacity\n let yProp = d.y + barPadding\n let xProp =\n type.type === \"heatmap\" || type.flip\n ? -columnWidth / 2\n : columnWidth / 2 - finalColumnWidth\n let height = thickness\n let width = finalColumnWidth\n let xOffset =\n type.type === \"heatmap\" ? finalColumnWidth / 2 : finalColumnWidth\n let yOffset = d.y1 / 2\n\n if (projection === \"horizontal\") {\n yProp =\n type.type === \"heatmap\"\n ? -columnWidth / 2\n : type.flip\n ? -columnWidth / 2\n : columnWidth / 2 - finalColumnWidth\n xProp = d.y - d.y1 + barPadding\n height = finalColumnWidth\n width = thickness\n yOffset =\n type.type === \"heatmap\" ? finalColumnWidth / 2 : finalColumnWidth\n xOffset = d.y1 / 2\n } else if (projection === \"radial\") {\n const arcGenerator = arc()\n .innerRadius(d.y / 2)\n .outerRadius((d.y + d.y1) / 2)\n\n const angle = summary.pct - summary.pct_padding\n let startAngle = summary.pct_middle - summary.pct_padding\n\n let endAngle =\n type.type === \"heatmap\"\n ? startAngle + angle\n : startAngle + angle * opacity\n startAngle *= twoPI\n endAngle *= twoPI\n\n const arcAdjustX = adjustedSize[0] / 2\n const arcAdjustY = adjustedSize[1] / 2\n\n const arcTranslate = `translate(${arcAdjustX},${arcAdjustY})`\n const arcCenter = arcGenerator.centroid({ startAngle, endAngle })\n mappedPoints.push({\n key: summary.name,\n value: d.value,\n pieces: d.pieces.map((p) => p.piece),\n label: \"Heatmap\",\n x: arcCenter[0] + arcAdjustX,\n y: arcCenter[1] + arcAdjustY\n })\n mappedBins.push({\n markType: \"path\",\n transform: arcTranslate,\n key: `groupIcon-${summaryI}-${i}`,\n d: arcGenerator({ startAngle, endAngle }),\n style: finalStyle\n })\n }\n if (projection !== \"radial\") {\n mappedPoints.push({\n key: summary.name,\n value: d.value,\n pieces: d.pieces.map((p) => p.piece),\n label: \"Heatmap\",\n x: xProp + xOffset,\n y: yProp + yOffset\n })\n\n mappedBins.push({\n markType: \"rect\",\n key: `groupIcon-${summaryI}-${i}`,\n x: xProp,\n y: yProp,\n height: height,\n width: width,\n style: finalStyle\n })\n }\n })\n\n return { marks: mappedBins, points: mappedPoints }\n}\n\n// FROM d3-svg-ribbon\nexport function linearRibbon() {\n const _lineConstructor = line()\n let _xAccessor = function (d) {\n return d.x\n }\n let _yAccessor = function (d) {\n return d.y\n }\n let _rAccessor = function (d) {\n return d.r\n }\n let _interpolator = curveLinearClosed\n\n function _ribbon(pathData) {\n if (pathData.multiple) {\n const original_r = _rAccessor\n const parallelTotal = pathData.multiple.reduce((p, c) => p + c.weight, 0)\n\n _rAccessor = () => parallelTotal\n\n const totalPoints = buildRibbon(pathData.points)\n\n let currentPoints = totalPoints\n .filter((d) => d.direction === \"forward\")\n .reduce(dedupeRibbonPoints(), [])\n\n const allRibbons = []\n\n pathData.multiple.forEach((siblingPath, siblingI) => {\n _rAccessor = () => siblingPath.weight\n const currentRibbon = buildRibbon(currentPoints)\n allRibbons.push(currentRibbon)\n const nextSibling = pathData.multiple[siblingI + 1]\n\n if (nextSibling) {\n const currentLeftSide = currentRibbon\n .reverse()\n .filter((d) => d.direction === \"back\")\n .reduce(dedupeRibbonPoints(), [])\n\n _rAccessor = () => nextSibling.weight\n\n const leftHandInflatedRibbon = buildRibbon(currentLeftSide)\n currentPoints = leftHandInflatedRibbon\n .reverse()\n .filter((d) => d.direction === \"back\")\n .reduce(dedupeRibbonPoints(), [])\n }\n })\n\n _rAccessor = original_r\n return allRibbons.map((d) =>\n _lineConstructor.x(_xAccessor).y(_yAccessor).curve(_interpolator)(d)\n )\n }\n const bothPoints = buildRibbon(pathData).reduce(dedupeRibbonPoints(), [])\n\n return _lineConstructor.x(_xAccessor).y(_yAccessor).curve(_interpolator)(\n bothPoints\n )\n }\n\n _ribbon.x = function (_value) {\n if (!arguments.length) return _xAccessor\n\n _xAccessor = _value\n return _ribbon\n }\n\n _ribbon.y = function (_value) {\n if (!arguments.length) return _yAccessor\n\n _yAccessor = _value\n return _ribbon\n }\n\n _ribbon.r = function (_value) {\n if (!arguments.length) return _rAccessor\n\n _rAccessor = _value\n return _ribbon\n }\n\n _ribbon.interpolate = function (_value) {\n if (!arguments.length) return _interpolator\n\n _interpolator = _value\n return _ribbon\n }\n\n return _ribbon\n\n function offsetEdge(d) {\n const diffX = _yAccessor(d.target) - _yAccessor(d.source)\n const diffY = _xAccessor(d.target) - _xAccessor(d.source)\n\n const angle0 = Math.atan2(diffY, diffX) + Math.PI / 2\n const angle1 = angle0 + Math.PI * 0.5\n const angle2 = angle0 + Math.PI * 0.5\n\n const x1 = _xAccessor(d.source) + _rAccessor(d.source) * Math.cos(angle1)\n const y1 = _yAccessor(d.source) - _rAccessor(d.source) * Math.sin(angle1)\n const x2 = _xAccessor(d.target) + _rAccessor(d.target) * Math.cos(angle2)\n const y2 = _yAccessor(d.target) - _rAccessor(d.target) * Math.sin(angle2)\n\n return { x1: x1, y1: y1, x2: x2, y2: y2 }\n }\n\n function buildRibbon(points) {\n const bothCode = []\n let x = 0\n let transformedPoints = { x1: 0, y1: 0, x2: 0, y2: 0 }\n\n while (x < points.length) {\n if (x !== points.length - 1) {\n transformedPoints = offsetEdge({\n source: points[x],\n target: points[x + 1]\n })\n const p1 = {\n x: transformedPoints.x1,\n y: transformedPoints.y1,\n direction: \"forward\"\n }\n const p2 = {\n x: transformedPoints.x2,\n y: transformedPoints.y2,\n direction: \"forward\"\n }\n bothCode.push(p1, p2)\n if (bothCode.length > 3) {\n const l = bothCode.length - 1\n const lineA = { a: bothCode[l - 3], b: bothCode[l - 2] }\n const lineB = { a: bothCode[l - 1], b: bothCode[l] }\n const intersect = findIntersect(\n lineA.a.x,\n lineA.a.y,\n lineA.b.x,\n lineA.b.y,\n lineB.a.x,\n lineB.a.y,\n lineB.b.x,\n lineB.b.y\n )\n if (intersect.found === true) {\n lineA.b.x = intersect.x\n lineA.b.y = intersect.y\n lineB.a.x = intersect.x\n lineB.a.y = intersect.y\n }\n }\n }\n\n x++\n }\n x--\n //Back\n while (x >= 0) {\n if (x !== 0) {\n transformedPoints = offsetEdge({\n source: points[x],\n target: points[x - 1]\n })\n const p1 = {\n x: transformedPoints.x1,\n y: transformedPoints.y1,\n direction: \"back\"\n }\n const p2 = {\n x: transformedPoints.x2,\n y: transformedPoints.y2,\n direction: \"back\"\n }\n bothCode.push(p1, p2)\n if (bothCode.length > 3) {\n const l = bothCode.length - 1\n const lineA = { a: bothCode[l - 3], b: bothCode[l - 2] }\n const lineB = { a: bothCode[l - 1], b: bothCode[l] }\n const intersect = findIntersect(\n lineA.a.x,\n lineA.a.y,\n lineA.b.x,\n lineA.b.y,\n lineB.a.x,\n lineB.a.y,\n lineB.b.x,\n lineB.b.y\n )\n if (intersect.found === true) {\n lineA.b.x = intersect.x\n lineA.b.y = intersect.y\n lineB.a.x = intersect.x\n lineB.a.y = intersect.y\n }\n }\n }\n\n x--\n }\n\n return bothCode\n }\n\n function findIntersect(l1x1, l1y1, l1x2, l1y2, l2x1, l2y1, l2x2, l2y2) {\n let a, b\n\n const result = {\n x: null,\n y: null,\n found: false\n }\n\n const d = (l2y2 - l2y1) * (l1x2 - l1x1) - (l2x2 - l2x1) * (l1y2 - l1y1)\n if (d === 0) {\n return result\n }\n a = l1y1 - l2y1\n b = l1x1 - l2x1\n const n1 = (l2x2 - l2x1) * a - (l2y2 - l2y1) * b\n const n2 = (l1x2 - l1x1) * a - (l1y2 - l1y1) * b\n a = n1 / d\n b = n2 / d\n\n result.x = l1x1 + a * (l1x2 - l1x1)\n result.y = l1y1 + a * (l1y2 - l1y1)\n\n if (a > 0 && a < 1 && b > 0 && b < 1) {\n result.found = true\n }\n\n return result\n }\n}\n","import * as React from \"react\"\n\n\nimport { ScaleLinear } from \"d3-scale\"\n\ntype RenderModeFnType = (d: number, i: number) => string | Record<string, any>\n\ntype AxisPiecesFnType = {\n renderMode?: RenderModeFnType\n padding: number\n scale: ScaleLinear<number, number>\n ticks: number\n tickValues: number[] | Function\n orient: \"left\" | \"right\" | \"top\" | \"bottom\"\n size: number[]\n footer: boolean\n tickSize: number\n baseline?: boolean | \"under\"\n jaggedBase?: boolean\n}\n\nconst horizontalTornTickGenerator = (width, ticks, y, orient) => {\n const step = width / ticks\n let currentStep = 0\n let tickPath = `M0,${y}`\n const mod = orient === \"right\" ? -1 : 1\n while (currentStep <= width) {\n tickPath += `L${currentStep},${y}`\n if (currentStep < width) {\n tickPath += `L${currentStep + step / 2},${y + 10 * mod}`\n }\n currentStep += step\n }\n return tickPath\n}\n\nconst verticalTornTickGenerator = (height, ticks, x, orient) => {\n const step = height / ticks\n let currentStep = 0\n let tickPath = `M${x},0`\n const mod = orient === \"bottom\" ? -1 : 1\n while (currentStep <= height) {\n tickPath += `L${x},${currentStep}`\n if (currentStep < height) {\n tickPath += `L${x + 10 * mod},${currentStep + step / 2}`\n }\n currentStep += step\n }\n return tickPath\n}\n\nconst generateTornBaseline = (orient, baselineSettings) => {\n let tornD = \"\"\n const { x1, x2, y1, y2 } = baselineSettings\n if (orient === \"left\" || orient === \"right\") {\n const calcWidth = Math.abs(x2 - x1)\n const ticks = Math.ceil(calcWidth / 40)\n tornD = horizontalTornTickGenerator(\n calcWidth,\n ticks,\n orient === \"right\" ? 0 : y1,\n orient\n )\n } else {\n const calcHeight = Math.abs(y2 - y1)\n const ticks = Math.ceil(calcHeight / 40)\n tornD = verticalTornTickGenerator(calcHeight, ticks, x1, orient)\n }\n return tornD\n}\n\nconst defaultTickLineGenerator = ({\n xy,\n orient,\n i,\n \n className = \"\",\n jaggedBase\n}) => {\n let genD = `M${xy.x1},${xy.y1}L${xy.x2},${xy.y2}`\n if (jaggedBase && i === 0) {\n genD = generateTornBaseline(orient, xy)\n }\n return (\n <path key={i}\n \n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1px\"\n d={genD}\n className={`tick-line tick ${orient} ${className}`}\n />\n )\n}\n\nconst outboundTickLineGenerator = ({ xy, orient, i, className = \"\" }) => {\n const tickLength = 8\n let genD = `M-4,${xy.y1}L${xy.x1},${xy.y2}`\n if (orient === \"left\") {\n genD = `M${xy.x1 - tickLength},${xy.y1}L${xy.x1},${xy.y2}`\n } else if (orient === \"right\") {\n genD = `M${xy.x2},${xy.y1}L${xy.x2 + tickLength},${xy.y2}`\n } else if (orient === \"top\") {\n genD = `M${xy.x1},${xy.y1 - tickLength}L${xy.x1},${xy.y1}`\n } else if (orient === \"bottom\") {\n genD = `M${xy.x1},${xy.y2}L${xy.x1},${xy.y2 + tickLength}`\n }\n return (\n <path key={i}\n \n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1px\"\n d={genD}\n className={`outbound-tick-line tick ${orient} ${className}`}\n />\n )\n}\n\nexport function generateTickValues(tickValues, ticks, scale) {\n const axisSize = Math.abs(scale.range()[1] - scale.range()[0])\n\n if (!tickValues) {\n if (!ticks) {\n ticks = Math.max(1, Math.floor(axisSize / 40))\n }\n tickValues = (scale.ticks && scale.ticks(ticks)) || scale.domain()\n }\n\n return tickValues\n}\n\nexport function axisPieces({\n renderMode = () => undefined,\n padding = 5,\n scale,\n ticks,\n tickValues = generateTickValues(undefined, ticks, scale),\n orient = \"left\",\n size,\n footer = false,\n tickSize = footer\n ? -10\n : [\"top\", \"bottom\"].find((d) => d === orient)\n ? (size ? size[1] : 0)\n : (size ? size[0] : 0),\n jaggedBase\n}: AxisPiecesFnType) {\n //returns x1 (start of line), x2 (end of line) associated with the value of the tick\n let axisDomain = [],\n position1,\n position2,\n domain1,\n domain2,\n tposition1,\n tposition2,\n textPositionMod = 0,\n textPositionMod2 = 0,\n defaultAnchor = \"middle\"\n\n switch (orient) {\n case \"top\":\n position1 = \"x1\"\n position2 = \"x2\"\n domain1 = \"y1\"\n domain2 = \"y2\"\n axisDomain = [0, tickSize]\n tposition1 = \"tx\"\n tposition2 = \"ty\"\n textPositionMod -= 20 - padding\n break\n case \"bottom\":\n position1 = \"x1\"\n position2 = \"x2\"\n domain1 = \"y2\"\n domain2 = \"y1\"\n axisDomain = size ? [size[1], size[1] - tickSize] : [0, -tickSize]\n tposition1 = \"tx\"\n tposition2 = \"ty\"\n textPositionMod += 20 + padding\n break\n case \"right\":\n position1 = \"y2\"\n position2 = \"y1\"\n domain1 = \"x2\"\n domain2 = \"x1\"\n axisDomain = size ? [size[0], size[0] - tickSize] : [0, -tickSize]\n tposition1 = \"ty\"\n tposition2 = \"tx\"\n textPositionMod += 5 + padding\n textPositionMod2 += 5\n defaultAnchor = \"start\"\n break\n //left\n default:\n position1 = \"y1\"\n position2 = \"y2\"\n domain1 = \"x1\"\n domain2 = \"x2\"\n axisDomain = [0, tickSize]\n tposition1 = \"ty\"\n tposition2 = \"tx\"\n textPositionMod -= 5 + padding\n textPositionMod2 += 5\n defaultAnchor = \"end\"\n break\n }\n let generatedTicks =\n tickValues instanceof Function ? tickValues({ orient }) : tickValues\n\n if (\n jaggedBase &&\n generatedTicks.find((t) => t === scale.domain()[0]) === undefined\n ) {\n generatedTicks = [scale.domain()[0], ...generatedTicks]\n }\n\n return generatedTicks.map((tick, i) => {\n const tickPosition = scale(tick)\n\n return {\n [position1]: tickPosition,\n [position2]: tickPosition,\n [domain1]: axisDomain[0],\n [domain2]: axisDomain[1],\n [tposition1]: tickPosition + textPositionMod2,\n [tposition2]: axisDomain[0] + textPositionMod,\n defaultAnchor,\n renderMode: renderMode(tick, i),\n value: tick\n }\n })\n}\n\nexport const axisLabels = ({\n axisParts,\n tickFormat,\n rotate = 0,\n center = false,\n orient\n}) => {\n return axisParts.map((axisPart, i) => {\n let renderedValue = tickFormat(axisPart.value, i)\n if (typeof renderedValue !== \"object\" || renderedValue instanceof Date) {\n renderedValue = (\n <text textAnchor={axisPart.defaultAnchor} className=\"axis-label\">\n {renderedValue.toString ? renderedValue.toString() : renderedValue}\n </text>\n )\n }\n\n let textX = axisPart.tx\n let textY = axisPart.ty\n if (center) {\n switch (orient) {\n case \"right\":\n textX -= (axisPart.x2 - axisPart.x1) / 2\n break\n case \"left\":\n textX += (axisPart.x2 - axisPart.x1) / 2\n break\n case \"top\":\n textY += (axisPart.y2 - axisPart.y1) / 2\n break\n case \"bottom\":\n textY -= (axisPart.y2 - axisPart.y1) / 2\n break\n }\n }\n\n return (\n <g\n key={i}\n pointerEvents=\"none\"\n transform={`translate(${textX},${textY}) rotate(${rotate})`}\n className=\"axis-label\"\n >\n {renderedValue}\n </g>\n )\n })\n}\n\nexport const baselineGenerator = (orient, size, className) => {\n const offsets = {\n left: { x: 0, y: 0, width: 0, height: size ? size[1] : 0 },\n right: { x: size ? size[0] : 0, y: 0, width: 0, height: size ? size[1] : 0 },\n top: { x: 0, y: 0, width: size ? size[0] : 0, height: 0 },\n bottom: { x: 0, y: size ? size[1] : 0, width: size ? size[0] : 0, height: 0 }\n }\n\n const orientOffset = offsets[orient]\n\n return (\n <line\n key=\"baseline\"\n className={`axis-baseline ${className}`}\n stroke=\"currentColor\"\n strokeLinecap=\"square\"\n x1={orientOffset.x}\n x2={orientOffset.x + orientOffset.width}\n y1={orientOffset.y}\n y2={orientOffset.y + orientOffset.height}\n />\n )\n}\n\nexport const axisLines = ({\n axisParts,\n orient,\n tickLineGenerator = defaultTickLineGenerator,\n \n className,\n jaggedBase,\n scale,\n showOutboundTickLines = false\n}: {\n axisParts: object[]\n orient: string\n tickLineGenerator: Function\n className: string\n jaggedBase?: boolean\n scale: ScaleLinear<number, number>\n showOutboundTickLines?: boolean\n}) => {\n const axisLines = axisParts.map((axisPart, i) =>\n tickLineGenerator({\n xy: axisPart,\n orient,\n i,\n \n className,\n jaggedBase,\n scale\n })\n ) as React.ReactNode[]\n\n const outboundAxisLines = showOutboundTickLines\n ? (axisParts.map((axisPart, i) =>\n outboundTickLineGenerator({\n xy: axisPart,\n orient,\n i,\n className\n })\n ) as React.ReactNode)\n : []\n\n return [...axisLines, outboundAxisLines]\n}\n","import React from \"react\"\nimport { AxisSummaryTypeSettings } from \"./../types/generalTypes\"\n\nexport interface SummaryGraphicProps {\n translation: {\n left: Array<number>\n right: Array<number>\n top: Array<number>\n bottom: Array<number>\n }\n orient: \"left\" | \"right\" | \"top\" | \"bottom\"\n decoratedSummaryType: {\n type: string\n }\n summaryWidth: number\n renderedSummary: any\n points?: React.ReactNode\n}\n\nfunction translateX({ t, o, w }: { t: string; o: string; w: number }) {\n if ((t === \"contour\" || t === \"boxplot\") && (o === \"left\" || o === \"right\")) {\n return w / 2\n } else {\n return 0\n }\n}\n\nfunction translateY({ t, o, w }: { t: string; o: string; w: number }) {\n if ((t === \"contour\" || t === \"boxplot\") && (o === \"top\" || o === \"bottom\")) {\n return w / 2\n } else {\n return 0\n }\n}\n\nexport default function SummaryGraphic(props: SummaryGraphicProps) {\n const {\n translation,\n orient,\n decoratedSummaryType,\n summaryWidth,\n renderedSummary,\n points\n } = props\n return (\n <g\n className=\"marginal-graphics\"\n transform={`translate(${translation[orient]})`}\n >\n <g\n transform={`translate(${translateX({\n t: decoratedSummaryType.type,\n o: orient,\n w: summaryWidth\n })},${translateY({\n t: decoratedSummaryType.type,\n o: orient,\n w: summaryWidth\n })})`}\n >\n {renderedSummary}\n </g>\n {points}\n </g>\n )\n}\n","import React from 'react';\n\nexport interface AxisTitleProps {\n className: string,\n translation: Array<number>,\n position: Array<number>,\n rotation: number | string,\n labelName: any,\n anchorMod: \"inherit\" | \"middle\" | \"end\" | \"start\"\n}\n\nexport default function AxisTitle(props: AxisTitleProps) { \n const { className, translation, position, rotation, labelName, anchorMod } = props;\n return (\n <g\n className={`axis-title ${className}`}\n transform={`translate(${[\n translation[0] + position[0],\n translation[1] + position[1]\n ]}) rotate(${rotation})`}\n >\n {React.isValidElement(labelName) ? (\n labelName\n ) : (\n <text textAnchor={anchorMod}>{labelName}</text>\n )}\n </g>\n )\n}","import * as React from \"react\"\n\nexport function pointOnArcAtAngle(center, angle, distance) {\n const radians = Math.PI * (angle + 0.75) * 2\n\n const xPosition = center[0] + distance * Math.cos(radians)\n const yPosition = center[1] + distance * Math.sin(radians)\n\n return [xPosition, yPosition]\n}\n\nexport const renderLaidOutPieces = ({\n data,\n shouldRender,\n canvasRender,\n canvasDrawing,\n styleFn,\n classFn,\n renderKeyFn,\n ariaLabel,\n axis\n}) => {\n const valueFormat = axis && axis[0] && axis[0].tickFormat\n if (!shouldRender) return null\n const renderedPieces = []\n data.forEach((d, i) => {\n if (canvasRender && canvasRender(d) === true) {\n const canvasPiece = {\n baseClass: \"orframe-piece\",\n tx: d.tx || 0,\n ty: d.ty || 0,\n d: d.piece,\n i,\n markProps: d.renderElement || d,\n styleFn: styleFn,\n renderFn: () => d.renderValue,\n classFn\n }\n canvasDrawing.push(canvasPiece)\n } else {\n if (React.isValidElement(d.renderElement || d)) {\n renderedPieces.push(d.renderElement || d)\n } else {\n const pieceAriaLabel = ariaLabel\n ? `${d.o} ${ariaLabel.items} value ${\n (valueFormat && valueFormat(d.piece.value)) || d.piece.value\n }`\n : \"\"\n const key = renderKeyFn\n ? renderKeyFn(d.piece)\n : d.renderKey || `piece-render-${i}`\n\n const elementData = d.renderElement || d\n const { markType, style = {}, ...restProps } = elementData\n\n // Merge style into direct props\n const elementProps = { ...restProps, key, \"aria-label\": pieceAriaLabel }\n if (style.fill !== undefined) elementProps.fill = style.fill\n if (style.stroke !== undefined) elementProps.stroke = style.stroke\n if (style.strokeWidth !== undefined) elementProps.strokeWidth = style.strokeWidth\n if (style.opacity !== undefined) elementProps.opacity = style.opacity\n if (style.fillOpacity !== undefined) elementProps.fillOpacity = style.fillOpacity\n if (style.strokeOpacity !== undefined) elementProps.strokeOpacity = style.strokeOpacity\n\n const remainingStyles = { ...style }\n delete remainingStyles.fill\n delete remainingStyles.stroke\n delete remainingStyles.strokeWidth\n delete remainingStyles.opacity\n delete remainingStyles.fillOpacity\n delete remainingStyles.strokeOpacity\n if (Object.keys(remainingStyles).length > 0) {\n elementProps.style = remainingStyles\n }\n\n if (markType) {\n renderedPieces.push(React.createElement(markType, elementProps))\n }\n }\n }\n })\n\n return renderedPieces\n}\n","import { quantile } from \"d3-array\"\nimport { arc } from \"d3-shape\"\nimport { pointOnArcAtAngle } from \"./pieceDrawing\"\nimport { scaleLinear } from \"d3-scale\"\n\ntype BoxplotFnType = {\n data: Record<string, any>[]\n type: Record<string, any>\n renderMode: Function\n eventListenersGenerator: Function\n styleFn: Function\n classFn: Function\n projection: \"horizontal\" | \"vertical\" | \"radial\"\n adjustedSize: number[]\n}\n\nconst emptyObjectReturnFn = () => ({})\n\nexport function boxplotRenderFn({\n data,\n type,\n renderMode,\n eventListenersGenerator,\n styleFn,\n classFn,\n projection,\n adjustedSize,\n}: BoxplotFnType) {\n const summaryElementStylingFn = type.elementStyleFn || emptyObjectReturnFn\n\n const { outliers, fixedInput } = type\n\n const keys = Object.keys(data)\n const renderedSummaryMarks = []\n const summaryXYCoords = []\n keys.forEach((key, summaryI) => {\n const summary = data[key]\n const eventListeners = eventListenersGenerator(summary, summaryI)\n\n const columnWidth = summary.width\n\n const thisSummaryData = summary.pieceData\n\n const calculatedSummaryStyle = styleFn(thisSummaryData[0].data, summaryI)\n const calculatedSummaryClass = classFn(thisSummaryData[0].data, summaryI)\n\n let summaryPositionNest,\n summaryValueNest,\n translate,\n extentlineX1,\n extentlineX2,\n extentlineY1,\n extentlineY2,\n topLineX1,\n topLineX2,\n midLineX1,\n midLineX2,\n bottomLineX1,\n bottomLineX2,\n rectTopWidth,\n rectTopHeight,\n rectTopY,\n rectTopX,\n rectBottomWidth,\n rectBottomHeight,\n rectBottomY,\n rectBottomX,\n rectWholeWidth,\n rectWholeHeight,\n rectWholeY,\n rectWholeX,\n topLineY1,\n topLineY2,\n bottomLineY1,\n bottomLineY2,\n midLineY1,\n midLineY2\n\n summaryValueNest = thisSummaryData.map((p) => p.value).sort((a, b) => a - b)\n\n if (fixedInput !== true || summaryValueNest.length !== 5) {\n summaryValueNest = [\n quantile(summaryValueNest, 0.0),\n quantile(summaryValueNest, 0.25),\n quantile(summaryValueNest, 0.5),\n quantile(summaryValueNest, 0.75),\n quantile(summaryValueNest, 1.0)\n ]\n }\n\n const iqr = summaryValueNest[3] - summaryValueNest[1]\n let minOutlier, maxOutlier\n\n if (outliers) {\n minOutlier = summaryValueNest[1] - iqr * 1.5\n maxOutlier = summaryValueNest[3] + iqr * 1.5\n\n summaryValueNest[0] = Math.max(summaryValueNest[0], minOutlier)\n summaryValueNest[4] = Math.min(summaryValueNest[4], maxOutlier)\n }\n\n // Derive position quantiles from value quantiles via linear interpolation.\n // This avoids depending on d3.quantile sort-order behavior (which changed in v3).\n const posAccessor = projection === \"vertical\"\n ? (p: { scaledVerticalValue: number }) => p.scaledVerticalValue\n : (p: { scaledValue: number }) => p.scaledValue\n\n const sortedPieces = [...thisSummaryData].sort((a, b) => a.value - b.value)\n const valMin = sortedPieces[0].value\n const valMax = sortedPieces[sortedPieces.length - 1].value\n const posOfMin = posAccessor(sortedPieces[0])\n const posOfMax = posAccessor(sortedPieces[sortedPieces.length - 1])\n\n // summaryPositionNest indices now match summaryValueNest:\n // [0]=min, [1]=Q1, [2]=median, [3]=Q3, [4]=max\n summaryPositionNest = summaryValueNest.map((v: number) => {\n if (valMax === valMin) return (posOfMin + posOfMax) / 2\n return posOfMin + (v - valMin) / (valMax - valMin) * (posOfMax - posOfMin)\n })\n\n if (projection === \"vertical\") {\n translate = `translate(${summary.x + summary.width / 2},0)`\n\n extentlineX1 = 0\n extentlineX2 = 0\n extentlineY1 = summaryPositionNest[0]\n extentlineY2 = summaryPositionNest[4]\n topLineX1 = -columnWidth / 2\n topLineX2 = columnWidth / 2\n midLineX1 = -columnWidth / 2\n midLineX2 = columnWidth / 2\n bottomLineX1 = -columnWidth / 2\n bottomLineX2 = columnWidth / 2\n rectBottomWidth = columnWidth\n rectBottomHeight = summaryPositionNest[1] - summaryPositionNest[2]\n rectBottomY = summaryPositionNest[2]\n rectBottomX = -columnWidth / 2\n rectTopWidth = columnWidth\n rectTopHeight = summaryPositionNest[2] - summaryPositionNest[3]\n rectWholeWidth = columnWidth\n rectWholeHeight = summaryPositionNest[1] - summaryPositionNest[3]\n rectWholeY = summaryPositionNest[3]\n rectWholeX = -columnWidth / 2\n rectTopY = summaryPositionNest[3]\n rectTopX = -columnWidth / 2\n topLineY1 = summaryPositionNest[0]\n topLineY2 = summaryPositionNest[0]\n bottomLineY1 = summaryPositionNest[4]\n bottomLineY2 = summaryPositionNest[4]\n midLineY1 = summaryPositionNest[2]\n midLineY2 = summaryPositionNest[2]\n\n const columnCenter = summary.x + summary.width / 2\n\n summaryXYCoords.push(\n {\n label: \"Maximum\",\n key,\n summaryPieceName: \"max\",\n x: columnCenter,\n y: summaryPositionNest[4],\n value: summaryValueNest[4]\n },\n {\n label: \"3rd Quartile\",\n key,\n summaryPieceName: \"q3area\",\n x: columnCenter,\n y: summaryPositionNest[3],\n value: summaryValueNest[3]\n },\n {\n label: \"Median\",\n key,\n summaryPieceName: \"median\",\n x: columnCenter,\n y: summaryPositionNest[2],\n value: summaryValueNest[2]\n },\n {\n label: \"1st Quartile\",\n key,\n summaryPieceName: \"q1area\",\n x: columnCenter,\n y: summaryPositionNest[1],\n value: summaryValueNest[1]\n },\n {\n label: \"Minimum\",\n key,\n summaryPieceName: \"min\",\n x: columnCenter,\n y: summaryPositionNest[0],\n value: summaryValueNest[0]\n }\n )\n } else if (projection === \"horizontal\") {\n const columnCenter = summary.x + summary.width / 2\n\n translate = `translate(0,${columnCenter})`\n\n extentlineY1 = 0\n extentlineY2 = 0\n extentlineX1 = summaryPositionNest[0]\n extentlineX2 = summaryPositionNest[4]\n topLineY1 = -columnWidth / 2\n topLineY2 = columnWidth / 2\n midLineY1 = -columnWidth / 2\n midLineY2 = columnWidth / 2\n bottomLineY1 = -columnWidth / 2\n bottomLineY2 = columnWidth / 2\n rectTopHeight = columnWidth\n rectTopWidth = summaryPositionNest[3] - summaryPositionNest[2]\n rectTopX = summaryPositionNest[2]\n rectTopY = -columnWidth / 2\n rectBottomHeight = columnWidth\n rectBottomWidth = summaryPositionNest[2] - summaryPositionNest[1]\n rectBottomX = summaryPositionNest[1]\n rectBottomY = -columnWidth / 2\n rectWholeHeight = columnWidth\n rectWholeWidth = summaryPositionNest[3] - summaryPositionNest[1]\n rectWholeX = summaryPositionNest[1]\n rectWholeY = -columnWidth / 2\n topLineX1 = summaryPositionNest[0]\n topLineX2 = summaryPositionNest[0]\n bottomLineX1 = summaryPositionNest[4]\n bottomLineX2 = summaryPositionNest[4]\n midLineX1 = summaryPositionNest[2]\n midLineX2 = summaryPositionNest[2]\n\n summaryXYCoords.push(\n {\n label: \"Maximum\",\n key,\n summaryPieceName: \"max\",\n x: summaryPositionNest[4],\n y: columnCenter,\n value: summaryValueNest[4]\n },\n {\n label: \"3rd Quartile\",\n key,\n summaryPieceName: \"q3area\",\n x: summaryPositionNest[3],\n y: columnCenter,\n value: summaryValueNest[3]\n },\n {\n label: \"Median\",\n key,\n summaryPieceName: \"median\",\n x: summaryPositionNest[2],\n y: columnCenter,\n value: summaryValueNest[2]\n },\n {\n label: \"1st Quartile\",\n key,\n summaryPieceName: \"q1area\",\n x: summaryPositionNest[1],\n y: columnCenter,\n value: summaryValueNest[1]\n },\n {\n label: \"Minimum\",\n key,\n summaryPieceName: \"min\",\n x: summaryPositionNest[0],\n y: columnCenter,\n value: summaryValueNest[0]\n }\n )\n }\n\n if (projection === \"radial\") {\n extentlineX1 = 0\n extentlineX2 = 0\n extentlineY1 = summaryPositionNest[0]\n extentlineY2 = summaryPositionNest[4]\n topLineX1 = -columnWidth / 2\n topLineX2 = columnWidth / 2\n midLineX1 = -columnWidth / 2\n midLineX2 = columnWidth / 2\n bottomLineX1 = -columnWidth / 2\n bottomLineX2 = columnWidth / 2\n rectTopWidth = columnWidth\n rectTopHeight = summaryPositionNest[1] - summaryPositionNest[3]\n rectTopY = summaryPositionNest[3]\n rectTopX = -columnWidth / 2\n rectBottomWidth = columnWidth\n rectBottomHeight = summaryPositionNest[1] - summaryPositionNest[3]\n rectBottomY = summaryPositionNest[3]\n rectBottomX = -columnWidth / 2\n topLineY1 = summaryPositionNest[0]\n topLineY2 = summaryPositionNest[0]\n bottomLineY1 = summaryPositionNest[4]\n bottomLineY2 = summaryPositionNest[4]\n midLineY1 = summaryPositionNest[2]\n midLineY2 = summaryPositionNest[2]\n\n const twoPI = Math.PI * 2\n\n const bottomLineArcGenerator = arc()\n .innerRadius(bottomLineY1 / 2)\n .outerRadius(bottomLineY1 / 2)\n // .padAngle(summary.pct_padding * twoPI);\n\n const topLineArcGenerator = arc()\n .innerRadius(topLineY1 / 2)\n .outerRadius(topLineY1 / 2)\n // .padAngle(summary.pct_padding * twoPI);\n\n const midLineArcGenerator = arc()\n .innerRadius(midLineY1 / 2)\n .outerRadius(midLineY1 / 2)\n // .padAngle(summary.pct_padding * twoPI);\n\n const bodyArcTopGenerator = arc()\n .innerRadius(summaryPositionNest[1] / 2)\n .outerRadius(midLineY1 / 2)\n // .padAngle(summary.pct_padding * twoPI);\n\n const bodyArcBottomGenerator = arc()\n .innerRadius(midLineY1 / 2)\n .outerRadius(summaryPositionNest[3] / 2)\n // .padAngle(summary.pct_padding * twoPI);\n\n const bodyArcWholeGenerator = arc()\n .innerRadius(summaryPositionNest[1] / 2)\n .outerRadius(summaryPositionNest[3] / 2)\n // .padAngle(summary.pct_padding * twoPI);\n\n let startAngle = summary.pct_start + summary.pct_padding / 2\n let endAngle = summary.pct + summary.pct_start - summary.pct_padding / 2\n const midAngle = summary.pct / 2 + summary.pct_start\n startAngle *= twoPI\n endAngle *= twoPI\n\n const radialAdjustX = adjustedSize[0] / 2\n\n const radialAdjustY = adjustedSize[1] / 2\n\n // const bottomPoint = bottomLineArcGenerator.centroid({ startAngle, endAngle })\n // const topPoint = topLineArcGenerator.centroid({ startAngle, endAngle })\n const bottomPoint = pointOnArcAtAngle(\n [0, 0],\n midAngle,\n summaryPositionNest[4] / 2\n )\n const topPoint = pointOnArcAtAngle(\n [0, 0],\n midAngle,\n summaryPositionNest[0] / 2\n )\n const thirdPoint = pointOnArcAtAngle(\n [0, 0],\n midAngle,\n summaryPositionNest[3] / 2\n )\n const midPoint = pointOnArcAtAngle(\n [0, 0],\n midAngle,\n summaryPositionNest[2] / 2\n )\n const firstPoint = pointOnArcAtAngle(\n [0, 0],\n midAngle,\n summaryPositionNest[1] / 2\n )\n\n summaryXYCoords.push(\n {\n label: \"Minimum\",\n key,\n summaryPieceName: \"min\",\n x: topPoint[0] + radialAdjustX,\n y: topPoint[1] + radialAdjustY,\n value: summaryValueNest[0]\n },\n {\n label: \"1st Quartile\",\n key,\n summaryPieceName: \"q3area\",\n x: firstPoint[0] + radialAdjustX,\n y: firstPoint[1] + radialAdjustY,\n value: summaryValueNest[1]\n },\n {\n label: \"Median\",\n key,\n summaryPieceName: \"median\",\n x: midPoint[0] + radialAdjustX,\n y: midPoint[1] + radialAdjustY,\n value: summaryValueNest[2]\n },\n {\n label: \"3rd Quartile\",\n key,\n summaryPieceName: \"q1area\",\n x: thirdPoint[0] + radialAdjustX,\n y: thirdPoint[1] + radialAdjustY,\n value: summaryValueNest[3]\n },\n {\n label: \"Maximum\",\n key,\n summaryPieceName: \"max\",\n x: bottomPoint[0] + radialAdjustX,\n y: bottomPoint[1] + radialAdjustY,\n value: summaryValueNest[4]\n }\n )\n translate = `translate(${radialAdjustX},${radialAdjustY})`\n\n renderedSummaryMarks.push({\n //This is a g element\n containerProps: {\n ...eventListeners,\n className: calculatedSummaryClass,\n transform: translate,\n key: `summaryPiece-${summaryI}`,\n role: \"img\",\n tabIndex: -1,\n \"data-o\": key,\n \"aria-label\": `${key} boxplot showing ${summaryXYCoords\n .filter((d) => d.key === key)\n .map((d) => `${d.label} ${d.value}`)}`\n },\n //These are drawn items\n elements: [\n {\n\n\n markType: \"line\",\n x1: bottomPoint[0],\n x2: topPoint[0],\n y1: bottomPoint[1],\n y2: topPoint[1],\n style: Object.assign(\n { strokeWidth: 2 },\n calculatedSummaryStyle,\n summaryElementStylingFn(\"whisker\", thisSummaryData)\n )\n },\n {\n\n\n markType: \"path\",\n d: topLineArcGenerator({ startAngle, endAngle }),\n style: Object.assign(\n { strokeWidth: 4 },\n calculatedSummaryStyle,\n { fill: \"none\" },\n summaryElementStylingFn(\"max\", thisSummaryData)\n )\n },\n {\n\n\n markType: \"path\",\n d: midLineArcGenerator({ startAngle, endAngle }),\n style: Object.assign(\n { strokeWidth: 4 },\n calculatedSummaryStyle,\n { fill: \"none\" },\n summaryElementStylingFn(\"median\", thisSummaryData)\n )\n },\n {\n\n\n markType: \"path\",\n d: bottomLineArcGenerator({ startAngle, endAngle }),\n style: Object.assign(\n { strokeWidth: 4 },\n calculatedSummaryStyle,\n { fill: \"none\" },\n summaryElementStylingFn(\"min\", thisSummaryData)\n )\n },\n {\n\n\n markType: \"path\",\n d: bodyArcWholeGenerator({ startAngle, endAngle }),\n style: Object.assign(\n { strokeWidth: 4 },\n calculatedSummaryStyle,\n summaryElementStylingFn(\"iqrarea\", thisSummaryData)\n )\n },\n {\n\n\n markType: \"path\",\n d: bodyArcTopGenerator({ startAngle, endAngle }),\n style: Object.assign(\n {},\n calculatedSummaryStyle,\n { fill: \"none\", stroke: \"none\" },\n summaryElementStylingFn(\"q3area\", thisSummaryData)\n )\n },\n {\n\n\n markType: \"path\",\n d: bodyArcBottomGenerator({ startAngle, endAngle }),\n style: Object.assign(\n {},\n calculatedSummaryStyle,\n { fill: \"none\", stroke: \"none\" },\n summaryElementStylingFn(\"q1area\", thisSummaryData)\n )\n }\n ]\n })\n } else {\n const boxplotMarks = [\n {\n\n\n markType: \"line\",\n x1: extentlineX1,\n x2: extentlineX2,\n y1: extentlineY1,\n y2: extentlineY2,\n style: Object.assign(\n { strokeWidth: 2 },\n calculatedSummaryStyle,\n summaryElementStylingFn(\"whisker\", thisSummaryData)\n )\n },\n {\n\n\n markType: \"line\",\n x1: topLineX1,\n x2: topLineX2,\n y1: topLineY1,\n y2: topLineY2,\n style: Object.assign(\n { strokeWidth: 2 },\n calculatedSummaryStyle,\n summaryElementStylingFn(\"min\", thisSummaryData)\n )\n },\n {\n\n\n markType: \"line\",\n x1: bottomLineX1,\n x2: bottomLineX2,\n y1: bottomLineY1,\n y2: bottomLineY2,\n style: Object.assign(\n { strokeWidth: 2 },\n calculatedSummaryStyle,\n summaryElementStylingFn(\"max\", thisSummaryData)\n )\n },\n {\n\n\n markType: \"rect\",\n x: rectWholeX,\n width: rectWholeWidth,\n y: rectWholeY,\n height: rectWholeHeight,\n style: Object.assign(\n { strokeWidth: 1 },\n calculatedSummaryStyle,\n summaryElementStylingFn(\"iqrarea\", thisSummaryData)\n )\n },\n {\n\n\n markType: \"rect\",\n x: rectTopX,\n width: rectTopWidth,\n y: rectTopY,\n height: rectTopHeight,\n style: Object.assign(\n {},\n calculatedSummaryStyle,\n { fill: \"none\", stroke: \"none\" },\n summaryElementStylingFn(\"q3area\", thisSummaryData)\n )\n },\n {\n\n\n markType: \"rect\",\n x: rectBottomX,\n width: rectBottomWidth,\n y: rectBottomY,\n height: rectBottomHeight,\n style: Object.assign(\n {},\n calculatedSummaryStyle,\n { fill: \"none\", stroke: \"none\" },\n summaryElementStylingFn(\"q1area\", thisSummaryData)\n )\n },\n {\n\n\n markType: \"line\",\n x1: midLineX1,\n x2: midLineX2,\n y1: midLineY1,\n y2: midLineY2,\n style: Object.assign(\n { strokeWidth: 2 },\n calculatedSummaryStyle,\n summaryElementStylingFn(\"median\", thisSummaryData)\n )\n }\n ]\n\n const outlierMarks = []\n\n if (outliers) {\n const outlierPoints = thisSummaryData.filter(\n (d) => d.value > maxOutlier || d.value < minOutlier\n )\n\n outlierPoints.forEach((point) => {\n outlierMarks.push({\n\n\n markType: \"circle\",\n cx: projection === \"horizontal\" ? point.scaledValue : 0,\n cy: projection === \"vertical\" ? point.scaledVerticalValue : 0,\n style: Object.assign(\n { strokeWidth: \"1px\", stroke: \"black\", fill: \"none\", r: 2 },\n calculatedSummaryStyle,\n summaryElementStylingFn(\"outlier\", thisSummaryData)\n )\n })\n })\n }\n renderedSummaryMarks.push({\n containerProps: {\n ...eventListeners,\n className: calculatedSummaryClass,\n transform: translate,\n key: `summaryPiece-${summaryI}`,\n role: \"img\",\n tabIndex: -1,\n \"data-o\": key,\n \"aria-label\": `${key} boxplot showing ${summaryXYCoords\n .filter((d) => d.key === key)\n .map((d) => `${d.label} ${d.value}`)}`\n },\n //These are drawn items\n elements: [...boxplotMarks, ...outlierMarks]\n })\n }\n })\n\n return { marks: renderedSummaryMarks, xyPoints: summaryXYCoords }\n}\n","/**\n * Ckmeans algorithm from d3-scale-cluster\n *\n * Much of the code that lies within was taken from the simple-statistics library,\n * which offers a javascript implementation of the ckmeans algorithm originally\n * designed by Haizhou Wang and Mingzhou Song\n *\n * https://cran.r-project.org/web/packages/Ckmeans.1d.dp/\n * https://github.com/simple-statistics/simple-statistics\n *\n * The simple-statistics software license is included below\n *\n * --\n *\n * ISC License\n *\n * Copyright (c) 2014, Tom MacWright\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\n * FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\nfunction numericSort(array) {\n return (\n array\n // ensure the array is not changed in-place\n .slice()\n // comparator function that treats input as numeric\n .sort(function (a, b) {\n return a - b\n })\n )\n}\n\nfunction uniqueCountSorted(input) {\n var uniqueValueCount = 0\n var lastSeenValue\n for (var i = 0; i < input.length; i++) {\n if (i === 0 || input[i] !== lastSeenValue) {\n lastSeenValue = input[i]\n uniqueValueCount++\n }\n }\n return uniqueValueCount\n}\n\nfunction makeMatrix(columns, rows) {\n var matrix = []\n for (var i = 0; i < columns; i++) {\n var column = []\n for (var j = 0; j < rows; j++) {\n column.push(0)\n }\n matrix.push(column)\n }\n return matrix\n}\n\nfunction ssq(j, i, sumX, sumXsq) {\n var sji // s(j, i)\n if (j > 0) {\n var muji = (sumX[i] - sumX[j - 1]) / (i - j + 1) // mu(j, i)\n sji = sumXsq[i] - sumXsq[j - 1] - (i - j + 1) * muji * muji\n } else {\n sji = sumXsq[i] - (sumX[i] * sumX[i]) / (i + 1)\n }\n return sji < 0 ? 0 : sji\n}\n\nfunction fillMatrixColumn(\n imin,\n imax,\n column,\n matrix,\n backtrackMatrix,\n sumX,\n sumXsq\n) {\n if (imin > imax) {\n return\n }\n\n // Start at midpoint between imin and imax\n var i = Math.floor((imin + imax) / 2)\n\n // Initialization of S[k][i]:\n matrix[column][i] = matrix[column - 1][i - 1]\n backtrackMatrix[column][i] = i\n\n var jlow = column // the lower end for j\n\n if (imin > column) {\n jlow = Math.max(jlow, backtrackMatrix[column][imin - 1] || 0)\n }\n jlow = Math.max(jlow, backtrackMatrix[column - 1][i] || 0)\n\n var jhigh = i - 1 // the upper end for j\n if (imax < matrix[0].length - 1) {\n jhigh = Math.min(jhigh, backtrackMatrix[column][imax + 1] || 0)\n }\n\n var sji\n var sjlowi\n var ssqjlow\n var ssqj\n for (var j = jhigh; j >= jlow; --j) {\n // compute s(j,i)\n sji = ssq(j, i, sumX, sumXsq)\n\n // MS May 11, 2016 Added:\n if (sji + matrix[column - 1][jlow - 1] >= matrix[column][i]) {\n break\n }\n\n // Examine the lower bound of the cluster border\n // compute s(jlow, i)\n sjlowi = ssq(jlow, i, sumX, sumXsq)\n\n ssqjlow = sjlowi + matrix[column - 1][jlow - 1]\n\n if (ssqjlow < matrix[column][i]) {\n // shrink the lower bound\n matrix[column][i] = ssqjlow\n backtrackMatrix[column][i] = jlow\n }\n jlow++\n\n ssqj = sji + matrix[column - 1][j - 1]\n if (ssqj < matrix[column][i]) {\n matrix[column][i] = ssqj\n backtrackMatrix[column][i] = j\n }\n }\n\n fillMatrixColumn(imin, i - 1, column, matrix, backtrackMatrix, sumX, sumXsq)\n fillMatrixColumn(i + 1, imax, column, matrix, backtrackMatrix, sumX, sumXsq)\n}\n\nfunction fillMatrices(data, matrix, backtrackMatrix) {\n var nValues = matrix[0].length\n var sumX = new Array(nValues)\n var sumXsq = new Array(nValues)\n\n // Use the median to shift values of x to improve numerical stability\n var shift = data[Math.floor(nValues / 2)]\n\n // Initialize first row in matrix & backtrackMatrix\n for (var i = 0; i < nValues; ++i) {\n if (i === 0) {\n sumX[0] = data[0] - shift\n sumXsq[0] = (data[0] - shift) * (data[0] - shift)\n } else {\n sumX[i] = sumX[i - 1] + data[i] - shift\n sumXsq[i] = sumXsq[i - 1] + (data[i] - shift) * (data[i] - shift)\n }\n\n // Initialize for k = 0\n matrix[0][i] = ssq(0, i, sumX, sumXsq)\n backtrackMatrix[0][i] = 0\n }\n\n // Initialize the rest of the columns\n var imin\n for (var k = 1; k < matrix.length; ++k) {\n if (k < matrix.length - 1) {\n imin = k\n } else {\n // No need to compute matrix[K-1][0] ... matrix[K-1][N-2]\n imin = nValues - 1\n }\n\n fillMatrixColumn(\n imin,\n nValues - 1,\n k,\n matrix,\n backtrackMatrix,\n sumX,\n sumXsq\n )\n }\n}\n\n/**\n * Ckmeans clustering is an improvement on heuristic-based clustering\n * approaches like Jenks. The algorithm was developed in\n * [Haizhou Wang and Mingzhou Song](http://journal.r-project.org/archive/2011-2/RJournal_2011-2_Wang+Song.pdf)\n * as a [dynamic programming](https://en.wikipedia.org/wiki/Dynamic_programming) approach\n * to the problem of clustering numeric data into groups with the least\n * within-group sum-of-squared-deviations.\n *\n * Minimizing the difference within groups - what Wang & Song refer to as\n * `withinss`, or within sum-of-squares, means that groups are optimally\n * homogenous within and the data is split into representative groups.\n * This is very useful for visualization, where you may want to represent\n * a continuous variable in discrete color or style groups. This function\n * can provide groups that emphasize differences between data.\n *\n * Being a dynamic approach, this algorithm is based on two matrices that\n * store incrementally-computed values for squared deviations and backtracking\n * indexes.\n *\n * Unlike the [original implementation](https://cran.r-project.org/web/packages/Ckmeans.1d.dp/index.html),\n * this implementation does not include any code to automatically determine\n * the optimal number of clusters: this information needs to be explicitly\n * provided.\n *\n * ### References\n * _Ckmeans.1d.dp: Optimal k-means Clustering in One Dimension by Dynamic\n * Programming_ Haizhou Wang and Mingzhou Song ISSN 2073-4859\n *\n * from The R Journal Vol. 3/2, December 2011\n * @param {Array<number>} data input data, as an array of number values\n * @param {number} nClusters number of desired classes. This cannot be\n * greater than the number of values in the data array.\n * @returns {Array<Array<number>>} clustered input\n * @example\n * ckmeans([-1, 2, -1, 2, 4, 5, 6, -1, 2, -1], 3);\n * // The input, clustered into groups of similar numbers.\n * //= [[-1, -1, -1, -1], [2, 2, 2], [4, 5, 6]]);\n */\n\nexport function ckmeans(data, nClusters) {\n if (nClusters > data.length) {\n throw new Error(\"Cannot generate more classes than there are data values\")\n }\n\n var nValues = data.length\n\n var sorted = numericSort(data)\n // we'll use this as the maximum number of clusters\n var uniqueCount = uniqueCountSorted(sorted)\n\n // if all of the input values are identical, there's one cluster\n // with all of the input in it.\n if (uniqueCount === 1) {\n return [sorted[0]]\n }\n nClusters = Math.min(uniqueCount, nClusters)\n\n // named 'S' originally\n var matrix = makeMatrix(nClusters, nValues)\n // named 'J' originally\n var backtrackMatrix = makeMatrix(nClusters, nValues)\n\n // This is a dynamic programming way to solve the problem of minimizing\n // within-cluster sum of squares. It's similar to linear regression\n // in this way, and this calculation incrementally computes the\n // sum of squares that are later read.\n fillMatrices(sorted, matrix, backtrackMatrix)\n\n // The real work of Ckmeans clustering happens in the matrix generation:\n // the generated matrices encode all possible clustering combinations, and\n // once they're generated we can solve for the best clustering groups\n // very quickly.\n var clusters = []\n var clusterRight = backtrackMatrix[0].length - 1\n\n // Backtrack the clusters from the dynamic programming matrix. This\n // starts at the bottom-right corner of the matrix (if the top-left is 0, 0),\n // and moves the cluster target with the loop.\n for (var cluster = backtrackMatrix.length - 1; cluster >= 0; cluster--) {\n var clusterLeft = backtrackMatrix[cluster][clusterRight]\n\n // fill the cluster from the sorted input by taking a slice of the\n // array. the backtrack matrix makes this easy - it stores the\n // indexes where the cluster should start and end.\n clusters[cluster] = sorted[clusterLeft]\n\n if (cluster > 0) {\n clusterRight = clusterLeft - 1\n }\n }\n\n return clusters\n}\n","import { scaleLinear } from \"d3-scale\"\nimport { ckmeans } from \"./ckmeans\"\n\ntype BoxplotFnType = {\n data: Record<string, any>[]\n type: Record<string, any>\n renderMode: Function\n eventListenersGenerator: Function\n styleFn: Function\n classFn: Function\n projection: \"horizontal\" | \"vertical\" | \"radial\"\n adjustedSize: number[]\n}\n\ninterface summaryInstruction {\n Mark?: JSX.Element\n containerProps?: object\n elements: object[]\n}\n\nexport function ckBinsRenderFn(props: BoxplotFnType) {\n const {\n data,\n type,\n renderMode,\n eventListenersGenerator,\n styleFn,\n classFn,\n projection,\n adjustedSize\n } = props\n const renderedSummaryMarks: summaryInstruction[] = []\n\n const summaryXYCoords = []\n\n const keys = Object.keys(data)\n\n let maxClusterSize = 0\n\n const allBins: Record<string, any>[][] = []\n\n keys.forEach((key, summaryI) => {\n const summary = data[key]\n const eventListeners = eventListenersGenerator(summary, summaryI)\n\n const columnWidth = summary.width\n\n const thisSummaryData = summary.pieceData.sort((a, b) => a.value - b.value)\n\n const firstElement = thisSummaryData[0]\n const lastElement = thisSummaryData[thisSummaryData.length - 1]\n\n const binScale = scaleLinear()\n .domain([firstElement.value, lastElement.value])\n .range([firstElement.scaledValue, lastElement.scaledValue])\n\n const calculatedSummaryStyle = styleFn(thisSummaryData[0].data, summaryI)\n const calculatedSummaryClass = classFn(thisSummaryData[0].data, summaryI)\n\n const binData = thisSummaryData.map((d) => d.value)\n\n const clusters = 5\n\n const ckstops = ckmeans(binData, clusters)\n\n let ckBins = []\n\n ckstops.forEach((ckstop, i) => {\n const start = ckstop\n const end = ckstops[i + 1] ?? lastElement.value\n\n ckBins.push({\n start,\n end,\n key,\n summary,\n calculatedSummaryStyle,\n calculatedSummaryClass,\n scaledStart: binScale(start),\n scaledEnd: binScale(end),\n values: []\n })\n })\n\n allBins.push(ckBins)\n\n let binI = 0\n\n for (const datapoint of thisSummaryData) {\n if (ckBins[binI].end <= datapoint.value) {\n if (ckBins[binI + 1]) {\n binI++\n }\n }\n ckBins[binI].values.push(datapoint)\n }\n\n ckBins.forEach((ckbin) => {\n const clusterSize = ckbin.values.length\n maxClusterSize = Math.max(clusterSize, maxClusterSize)\n })\n })\n\n allBins.forEach((ckBins, index) => {\n const CKBinElements = ckBins.map((ckBin) => {\n const { key, summary, calculatedSummaryStyle, calculatedSummaryClass } =\n ckBin\n\n const { fill = \"black\", stroke = \"black\" } = calculatedSummaryStyle\n\n const lightScale = scaleLinear()\n .domain([1, maxClusterSize])\n .range([\"white\", fill])\n\n return {\n\n\n markType: \"rect\",\n x: ckBin.scaledStart,\n width: ckBin.scaledEnd - ckBin.scaledStart,\n y: ckBin.summary.x,\n height: ckBin.summary.width,\n style: Object.assign({ strokeWidth: 2 }, calculatedSummaryStyle, {\n fill: lightScale(ckBin.values.length),\n strokeWidth: 1,\n stroke\n })\n }\n })\n\n renderedSummaryMarks.push({\n containerProps: {\n // className: calculatedSummaryClass,\n transform: \"\",\n key: `summaryPiece-${index}`,\n role: \"img\",\n tabIndex: -1\n },\n //These are drawn items\n elements: CKBinElements\n })\n })\n\n return { marks: renderedSummaryMarks, xyPoints: summaryXYCoords }\n}\n","import { contourDensity } from \"d3-contour\"\nimport { scaleLinear } from \"d3-scale\"\n\nfunction shapeBounds(coordinates) {\n let left = [Infinity, 0]\n let right = [-Infinity, 0]\n let top = [0, Infinity]\n let bottom = [0, -Infinity]\n coordinates.forEach((d) => {\n left = d[0] < left[0] ? d : left\n right = d[0] > right[0] ? d : right\n bottom = d[1] > bottom[1] ? d : bottom\n top = d[1] < top[1] ? d : top\n })\n\n return {\n center: [(left[0] + right[0]) / 2, (top[1] + bottom[1]) / 2],\n top,\n left,\n right,\n bottom\n }\n}\n\nexport function contouring({ summaryType, data, finalXExtent, finalYExtent }) {\n let projectedSummaries = []\n if (!summaryType.type) {\n summaryType = { type: summaryType }\n }\n\n const {\n resolution = 500,\n thresholds = 10,\n bandwidth = 20,\n neighborhood\n } = summaryType\n\n const xScale = scaleLinear()\n .domain(finalXExtent)\n .rangeRound([0, resolution])\n .nice()\n const yScale = scaleLinear()\n .domain(finalYExtent)\n .rangeRound([resolution, 0])\n .nice()\n\n data.forEach((contourData) => {\n let contourProjectedSummaries = contourDensity()\n .size([resolution, resolution])\n .x((d) => xScale(d[0]))\n .y((d) => yScale(d[1]))\n .thresholds(thresholds)\n .bandwidth(bandwidth)(contourData._xyfCoordinates)\n\n if (neighborhood) {\n contourProjectedSummaries = [contourProjectedSummaries[0]]\n }\n\n const max = Math.max(...contourProjectedSummaries.map((d) => d.value))\n\n contourProjectedSummaries.forEach((summary) => {\n summary.parentSummary = contourData\n summary.bounds = []\n summary.percent = summary.value / max\n summary.coordinates.forEach((poly) => {\n poly.forEach((subpoly, i) => {\n poly[i] = subpoly.map((coordpair) => {\n coordpair = [\n xScale.invert(coordpair[0]),\n yScale.invert(coordpair[1])\n ]\n return coordpair\n })\n //Only push bounds for the main poly, not its interior rings, otherwise you end up labeling interior cutouts\n if (i === 0) {\n summary.bounds.push(shapeBounds(poly[i]))\n }\n })\n })\n })\n projectedSummaries = [...projectedSummaries, ...contourProjectedSummaries]\n })\n\n return projectedSummaries\n}\n","import * as React from \"react\"\nimport { hexbin } from \"d3-hexbin\"\nimport { scaleLinear } from \"d3-scale\"\nimport { ProjectedPoint } from \"../types/generalTypes\"\nimport { SummaryLayoutType } from \"../types/xyTypes\"\n\ninterface BinArray {\n [position: number]: number\n x?: number\n y?: number\n}\n\nexport function hexbinning({\n preprocess = true,\n processedData = false,\n summaryType: baseSummaryType,\n data: baseData,\n finalXExtent: baseXExtent,\n finalYExtent: baseYExtent,\n size,\n xScaleType = scaleLinear(),\n yScaleType = scaleLinear(),\n margin,\n styleFn,\n classFn,\n renderFn,\n chartSize\n}: SummaryLayoutType) {\n let finalXExtent = baseXExtent\n let finalYExtent = baseYExtent\n\n if (!finalXExtent) {\n const xData = baseData.coordinates.map((p) => p.x)\n finalXExtent = [Math.min(...xData), Math.max(...xData)]\n }\n\n if (!finalYExtent) {\n const yData = baseData.coordinates.map((p) => p.y)\n finalYExtent = [Math.min(...yData), Math.max(...yData)]\n }\n\n if (processedData && baseData) {\n return baseData.coordinates\n }\n\n let projectedSummaries = []\n let summaryType: Record<string, any>\n if (!baseSummaryType.type) {\n summaryType = { type: summaryType }\n } else {\n summaryType = baseSummaryType\n }\n\n const {\n bins = 0.05,\n cellPx,\n binValue = (d) => d.length,\n binMax,\n customMark\n } = summaryType\n\n if (baseData.coordinates && !baseData._xyfCoordinates) {\n baseData._xyfCoordinates = baseData.coordinates.map((d) => [d.x, d.y])\n }\n\n const data = Array.isArray(baseData) ? baseData : [baseData]\n\n const hexBinXScale = xScaleType.domain(finalXExtent).range([0, size[0]])\n const hexBinYScale = yScaleType.domain(finalYExtent).range([0, size[1]])\n\n const actualResolution =\n (cellPx && cellPx / 2) || ((bins > 1 ? 1 / bins : bins) * size[0]) / 2\n\n const hexbinner = hexbin()\n .x((d) => hexBinXScale(d._xyfPoint[0]))\n .y((d) => hexBinYScale(d._xyfPoint[1]))\n .radius(actualResolution)\n .size(size)\n\n let hexMax\n const allHexes: ProjectedPoint[] = hexbinner.centers()\n\n data.forEach((hexbinData) => {\n hexMax = 0\n const hexes = hexbinner(\n hexbinData._xyfCoordinates.map((d, i) => ({\n _xyfPoint: d,\n ...hexbinData.coordinates[i]\n }))\n )\n\n const centerHash = {}\n\n hexes.forEach((d) => {\n centerHash[`${parseInt(d.x)}-${parseInt(d.y)}`] = true\n })\n\n allHexes.forEach((hexCenter) => {\n if (!centerHash[`${parseInt(hexCenter[0])}-${parseInt(hexCenter[1])}`]) {\n const newHex: BinArray = []\n newHex.x = hexCenter[0]\n newHex.y = hexCenter[1]\n hexes.push(newHex)\n }\n })\n\n hexMax = Math.max(...hexes.map((d) => binValue(d)))\n\n if (binMax) {\n binMax(hexMax)\n }\n\n const hexBase = [\n [0, -1],\n [0.866, -0.5],\n [0.866, 0.5],\n [0, 1],\n [-0.866, 0.5],\n [-0.866, -0.5]\n ]\n\n const hexWidth = hexBinXScale.invert(actualResolution) - finalXExtent[0]\n const hexHeight = hexBinYScale.invert(actualResolution) - finalYExtent[0]\n\n const hexacoordinates = hexBase.map((d) => [\n d[0] * hexWidth,\n d[1] * hexHeight\n ])\n\n const hexbinProjectedSummaries = hexes.map((d: Record<string, any>) => {\n const hexValue = binValue(d)\n const gx = d.x\n const gy = d.y\n d.x = hexBinXScale.invert(d.x)\n d.y = hexBinYScale.invert(d.y)\n const percent = hexValue / hexMax\n return {\n customMark: customMark && (\n <g transform={`translate(${gx},${size[1] - gy})`}>\n {customMark({\n d: {\n ...d,\n binItems: d,\n percent,\n value: hexValue,\n radius: actualResolution,\n hexCoordinates: hexBase.map((d) => [\n d[0] * actualResolution,\n d[1] * actualResolution\n ])\n },\n margin,\n styleFn,\n classFn,\n renderFn,\n chartSize,\n adjustedSize: size\n })}\n </g>\n ),\n _xyfCoordinates: hexacoordinates.map((p) => [p[0] + d.x, p[1] + d.y]),\n value: hexValue,\n percent,\n data: d,\n parentSummary: hexbinData,\n centroid: true\n }\n })\n projectedSummaries = [...projectedSummaries, ...hexbinProjectedSummaries]\n })\n\n if (preprocess) {\n projectedSummaries.forEach((d) => {\n d.x = d.data.x\n d.y = d.data.y\n })\n return {\n type: \"hexbin\",\n processedData: true,\n coordinates: projectedSummaries,\n binMax: hexMax\n }\n }\n\n return projectedSummaries\n}\n","import * as React from \"react\"\nimport { scaleLinear } from \"d3-scale\"\nimport regression from \"regression\"\nimport { curveCardinal } from \"d3-shape\"\n\nimport { ProjectedPoint } from \"../types/generalTypes\"\nimport { SummaryLayoutType } from \"../types/xyTypes\"\nimport { ProjectedSummary } from \"../types/generalTypes\"\n\n// Re-export from new locations for backwards compatibility\nexport { contouring } from \"./contourLayout\"\nexport { hexbinning } from \"./hexbinLayout\"\n\nconst generateLineBounds = (\n xydata,\n basedata,\n topBoundingAccessor,\n bottomBoundingAccessor\n) => {\n const tops = xydata.map((d, i) => [\n d[0],\n d[1] + topBoundingAccessor(basedata[i])\n ])\n const bottoms = xydata.map((d, i) => [\n d[0],\n d[1] - bottomBoundingAccessor(basedata[i])\n ])\n return [...tops, ...bottoms.reverse()]\n}\n\nexport function lineBounding({ summaryType, data, defined }) {\n let projectedSummaries = []\n if (!summaryType.type) {\n summaryType = { type: summaryType }\n }\n\n const {\n boundingAccessor,\n topBoundingAccessor = boundingAccessor,\n bottomBoundingAccessor = boundingAccessor\n } = summaryType\n\n data.forEach((lineData) => {\n const definedData = lineData._baseData.map(defined)\n let currentBaseData = []\n let currentXYFC = []\n const boundingPieces = [\n {\n xyf: currentXYFC,\n base: currentBaseData\n }\n ]\n definedData.forEach((d, i) => {\n if (d === true) {\n currentBaseData.push(lineData._baseData[i])\n currentXYFC.push(lineData._xyfCoordinates[i])\n } else if (definedData[i + 1]) {\n currentBaseData = []\n currentXYFC = []\n boundingPieces.push({\n xyf: currentXYFC,\n base: currentBaseData\n })\n }\n })\n\n boundingPieces.forEach(({ xyf, base }) => {\n const boundingProjectedSummary = {\n data: lineData,\n parentSummary: lineData,\n _xyfCoordinates: generateLineBounds(\n xyf,\n base,\n topBoundingAccessor,\n bottomBoundingAccessor\n )\n }\n\n projectedSummaries = [...projectedSummaries, boundingProjectedSummary]\n })\n })\n\n return projectedSummaries\n}\n\nexport function heatmapping({\n preprocess = true,\n processedData = false,\n summaryType: baseSummaryType,\n data: baseData,\n finalXExtent = [\n Math.min(...baseData.coordinates.map((d) => d.x)),\n Math.max(...baseData.coordinates.map((d) => d.x))\n ],\n finalYExtent = [\n Math.min(...baseData.coordinates.map((d) => d.y)),\n Math.max(...baseData.coordinates.map((d) => d.y))\n ],\n size,\n xScaleType = scaleLinear(),\n yScaleType = scaleLinear(),\n margin,\n styleFn,\n classFn,\n renderFn,\n chartSize\n}: SummaryLayoutType) {\n if (processedData && baseData) {\n return baseData.coordinates\n }\n\n if (baseData.coordinates && !baseData._xyfCoordinates) {\n baseData._xyfCoordinates = baseData.coordinates.map((d) => [d.x, d.y])\n }\n\n const data = Array.isArray(baseData) ? baseData : [baseData]\n\n let projectedSummaries: ProjectedSummary[] = []\n\n let summaryType: Record<string, any>\n if (!baseSummaryType.type) {\n summaryType = { type: summaryType }\n } else {\n summaryType = baseSummaryType\n }\n\n const {\n // binGraphic = \"square\",\n binValue = (d) => d.length,\n xBins = summaryType.yBins || 0.05,\n yBins = xBins,\n xCellPx = !summaryType.xBins && summaryType.xCellPx,\n yCellPx = !summaryType.yBins && summaryType.yCellPx,\n customMark,\n binMax\n } = summaryType\n const xBinPercent = xBins < 1 ? xBins : 1 / xBins\n const yBinPercent = yBins < 1 ? yBins : 1 / yBins\n\n const heatmapBinXScale = xScaleType.domain(finalXExtent).range([0, size[0]])\n const heatmapBinYScale = yScaleType.domain(finalYExtent).range([size[1], 0])\n\n const actualResolution = [\n Math.ceil(((xCellPx && xCellPx / size[0]) || xBinPercent) * size[0] * 10) /\n 10,\n Math.ceil(((yCellPx && yCellPx / size[1]) || yBinPercent) * size[1] * 10) /\n 10\n ]\n let maxValue = -Infinity\n\n data.forEach((heatmapData) => {\n const grid = []\n const flatGrid = []\n\n let cell\n let gridColumn\n\n for (let i = 0; Math.ceil(i) < size[0]; i += actualResolution[0]) {\n const x = heatmapBinXScale.invert(i)\n const x1 = heatmapBinXScale.invert(i + actualResolution[0])\n\n gridColumn = []\n grid.push(gridColumn)\n for (let j = 0; Math.ceil(j) < size[1]; j += actualResolution[1]) {\n const y = heatmapBinYScale.invert(j)\n const y1 = heatmapBinYScale.invert(j + actualResolution[1])\n cell = {\n gx: i,\n gy: j,\n gw: actualResolution[0],\n gh: actualResolution[1],\n x: (x + x1) / 2,\n y: (y + y1) / 2,\n binItems: [],\n value: 0,\n _xyfCoordinates: [\n [x, y],\n [x1, y],\n [x1, y1],\n [x, y1]\n ],\n parentSummary: heatmapData\n }\n gridColumn.push(cell)\n flatGrid.push(cell)\n }\n gridColumn.push(cell)\n }\n grid.push(gridColumn)\n\n heatmapData._xyfCoordinates.forEach((d: [number, number], di: number) => {\n const baseX = heatmapBinXScale(d[0]) as number\n const baseY = heatmapBinYScale(d[1]) as number\n\n const xCoordinate = Math.floor(baseX / actualResolution[0])\n const yCoordinate = Math.floor(baseY / actualResolution[1])\n\n if (grid[xCoordinate][yCoordinate]) {\n grid[xCoordinate][yCoordinate].binItems.push(\n heatmapData.coordinates[di]\n )\n }\n })\n\n flatGrid.forEach((d) => {\n d.value = binValue(d.binItems)\n maxValue = Math.max(maxValue, d.value)\n })\n\n flatGrid.forEach((d) => {\n d.percent = d.value / maxValue\n d.customMark = customMark && (\n <g transform={`translate(${d.gx},${d.gy})`}>\n {customMark({\n d,\n margin,\n styleFn,\n classFn,\n renderFn,\n chartSize,\n adjustedSize: size\n })}\n </g>\n )\n })\n\n projectedSummaries = [...projectedSummaries, ...flatGrid]\n })\n if (binMax) {\n binMax(maxValue)\n }\n if (preprocess) {\n const preprocessedSummary: ProjectedSummary = {\n type: \"heatmap\",\n processedData: true,\n _baseData: [],\n _xyfCoordinates: [],\n data: [],\n bounds: [],\n x: 0,\n y: 0,\n coordinates: projectedSummaries,\n binMax: maxValue\n }\n return preprocessedSummary\n }\n\n return projectedSummaries\n}\n\nexport function trendlining({\n preprocess = false,\n summaryType: baseSummaryType,\n data: baseData,\n finalXExtent = [\n Math.min(...baseData.coordinates.map((d) => d.x)),\n Math.max(...baseData.coordinates.map((d) => d.x))\n ],\n xScaleType = scaleLinear()\n}: SummaryLayoutType) {\n if (preprocess) {\n return baseData[0].coordinates\n }\n\n let projectedSummaries = []\n\n let summaryType: Record<string, any>\n if (!baseSummaryType.type) {\n summaryType = { type: summaryType }\n } else {\n summaryType = baseSummaryType\n }\n\n const {\n regressionType: baseRegressionType = \"linear\",\n order = 2,\n precision = 4,\n controlPoints = 20,\n curve = curveCardinal\n } = summaryType\n\n let regressionType = baseRegressionType\n\n if (\n finalXExtent[0] < 0 &&\n (baseRegressionType === \"logarithmic\" ||\n baseRegressionType === \"power\" ||\n baseRegressionType === \"exponential\")\n ) {\n console.error(\n `Cannot use this ${baseRegressionType} regressionType type with value range that goes below 0, defaulting to linear`\n )\n regressionType = \"linear\"\n }\n\n if (baseData.coordinates && !baseData._xyfCoordinates) {\n baseData._xyfCoordinates = baseData.coordinates.map((d) => [d.x, d.y])\n }\n\n const data = Array.isArray(baseData) ? baseData : [baseData]\n\n const xScale = xScaleType.domain([0, 1]).range(finalXExtent)\n\n projectedSummaries = []\n data.forEach((bdata) => {\n const regressionLine = regression[regressionType](\n bdata._xyfCoordinates.map((d) => {\n let x = d[0]\n let y = d[1]\n\n if (typeof x !== \"number\") {\n x = x.getTime()\n }\n if (typeof y !== \"number\") {\n y = y.getTime()\n }\n\n return [x, y]\n }),\n {\n order,\n precision\n }\n )\n const controlStep = 1 / controlPoints\n\n let steps = [0, 1]\n\n if (regressionType !== \"linear\") {\n steps = []\n for (let step = 0; step < 1 + controlStep; step += controlStep) {\n steps.push(step)\n }\n }\n\n const controlPointArray = []\n\n steps.forEach((controlPoint) => {\n controlPointArray.push(regressionLine.predict(xScale(controlPoint)))\n })\n\n projectedSummaries.push({\n centroid: false,\n customMark: undefined,\n data: bdata,\n parentSummary: bdata,\n value: regressionLine.string,\n r2: regressionLine.r2,\n curve,\n _xyfCoordinates: controlPointArray\n })\n })\n\n return projectedSummaries\n}\n\nexport function shapeBounds(coordinates) {\n let left = [Infinity, 0]\n let right = [-Infinity, 0]\n let top = [0, Infinity]\n let bottom = [0, -Infinity]\n coordinates.forEach((d) => {\n left = d[0] < left[0] ? d : left\n right = d[0] > right[0] ? d : right\n bottom = d[1] > bottom[1] ? d : bottom\n top = d[1] < top[1] ? d : top\n })\n\n return {\n center: [(left[0] + right[0]) / 2, (top[1] + bottom[1]) / 2],\n top,\n left,\n right,\n bottom\n }\n}\n","import { contouring } from \"../svg/areaDrawing\"\n\nconst contourMap = (d) => [d.xy.x, d.xy.y]\n\nexport function contourRenderFn({\n data,\n type,\n renderMode,\n eventListenersGenerator,\n styleFn,\n classFn,\n adjustedSize\n}) {\n const keys = Object.keys(data)\n const renderedSummaryMarks = []\n const summaryXYCoords = []\n\n keys.forEach((key, ordsetI) => {\n const ordset = data[key]\n type.thresholds = type.thresholds || 8\n type.bandwidth = type.bandwidth || 12\n type.resolution = type.resolution || 1000\n\n const projectedOrd = [\n { id: ordset, _xyfCoordinates: ordset.xyData.map(contourMap) }\n ]\n\n const oContours = contouring({\n summaryType: type,\n data: projectedOrd,\n finalXExtent: [0, adjustedSize[0]],\n finalYExtent: [0, adjustedSize[1]]\n })\n const contourMarks = []\n oContours.forEach((d, i) => {\n d.coordinates.forEach((coords, ii) => {\n const eventListeners = eventListenersGenerator(d, i)\n contourMarks.push({\n\n ...eventListeners,\n\n key: `${i}-${ii}`,\n style: styleFn(ordset.pieceData[0].data, ordsetI),\n className: classFn(ordset.pieceData[0].data, ordsetI),\n markType: \"path\",\n d: `M${d.coordinates[0].map((p) => p.join(\",\")).join(\"L\")}Z`\n })\n })\n })\n\n renderedSummaryMarks.push({\n containerProps: {\n key: `contour-container-${ordsetI}`,\n role: \"img\",\n tabIndex: -1,\n \"data-o\": key,\n \"aria-label\": `${key} boxplot showing ${summaryXYCoords\n .filter((d) => d.key === key)\n .map((d) => `${d.label} ${d.value}`)}`\n },\n //These are drawn items\n elements: contourMarks\n })\n })\n return { marks: renderedSummaryMarks, xyPoints: summaryXYCoords }\n}\n","import * as React from \"react\"\n\n\n\nimport {\n line,\n area,\n curveStep,\n curveStepBefore,\n curveStepAfter,\n curveCardinal,\n curveBasis,\n curveLinear,\n curveCatmullRom,\n curveMonotoneX,\n curveMonotoneY,\n curveNatural\n} from \"d3-shape\"\n\nimport { shapeBounds } from \"../svg/areaDrawing\"\nimport { ProjectedSummary } from \"../types/generalTypes\"\nimport { ScaleLinear } from \"d3-scale\"\n\nexport const curveHash = {\n step: curveStep,\n stepbefore: curveStepBefore,\n stepafter: curveStepAfter,\n cardinal: curveCardinal,\n basis: curveBasis,\n linear: curveLinear,\n catmullrom: curveCatmullRom,\n monotone: curveMonotoneY,\n monotonex: curveMonotoneX,\n monotoney: curveMonotoneY,\n natural: curveNatural\n}\n\nexport function lineGeneratorDecorator({\n generator,\n projectedCoordinateNames,\n defined,\n xScale,\n yScale,\n interpolator,\n simpleLine\n}) {\n const { x, y, yTop, yBottom, xBottom, xTop } = projectedCoordinateNames\n\n generator.x((d) => xScale(d[x])).curve(interpolator)\n\n if (simpleLine) {\n generator.y((d) => yScale(d[y]))\n } else {\n generator.y0((d) => yScale(d[yBottom])).y1((d) => yScale(d[yTop]))\n generator.x0((d) => xScale(d[xBottom])).x1((d) => xScale(d[xTop]))\n }\n\n if (defined) {\n generator.defined((p, q) => defined(p, q))\n } else {\n generator.defined((p) => !p._xyFrameUndefined)\n }\n}\n\nexport function createPoints({\n xScale,\n yScale,\n canvasDrawing,\n data,\n projectedCoordinateNames,\n customMark,\n canvasRender,\n styleFn,\n classFn,\n renderKeyFn,\n renderMode,\n \n showLinePoints: baseShowLinePoints\n}) {\n const { y, x, xMiddle, yMiddle, yTop, yBottom } = projectedCoordinateNames\n\n const showLinePoints: string =\n baseShowLinePoints === true ? undefined : baseShowLinePoints\n\n const whichPoints: {\n top: string\n bottom: string\n } = {\n top: yTop,\n bottom: yBottom\n }\n const whichWay = whichPoints[showLinePoints]\n const mappedPoints = []\n data.forEach((d, i) => {\n const dX = xScale(d[xMiddle] !== undefined ? d[xMiddle] : d[x])\n const dY = yScale(\n d[whichWay] !== undefined\n ? d[whichWay]\n : d[yMiddle] !== undefined\n ? d[yMiddle]\n : d[y]\n )\n\n const pointAriaLabel = `Point at x ${d.x} and y ${d.y}`\n\n // CUSTOM MARK IMPLEMENTATION\n const renderedCustomMark = !customMark\n ? undefined\n : React.isValidElement(customMark)\n ? customMark\n : customMark({ d: d.data, xy: d, i, xScale, yScale })\n const markProps = customMark\n ? { ...renderedCustomMark.props, \"aria-label\": pointAriaLabel }\n : {\n key: `piece-${i}`,\n markType: \"circle\",\n r: 2,\n \"aria-label\": pointAriaLabel\n }\n\n if (\n renderedCustomMark &&\n renderedCustomMark.props &&\n !renderedCustomMark.props.markType &&\n (!canvasRender || canvasRender(d.data, i) !== true)\n ) {\n mappedPoints.push(\n <g\n transform={`translate(${dX},${dY})`}\n key={renderKeyFn ? renderKeyFn(d.data, i) : `custom-point-mark-${i}`}\n style={styleFn ? styleFn(d.data, i) : {}}\n className={classFn ? classFn(d.data, i) : \"\"}\n >\n {renderedCustomMark}\n </g>\n )\n } else {\n if (canvasRender && canvasRender(d.data, i) === true) {\n const canvasPoint = {\n type: \"point\",\n baseClass: \"frame-piece\",\n tx: dX,\n ty: dY,\n d,\n i,\n markProps,\n styleFn,\n renderFn: renderMode,\n classFn\n }\n canvasDrawing.push(canvasPoint)\n } else {\n const yCoordinates = Array.isArray(d[y])\n ? d[y].map((p) => yScale(p))\n : [dY]\n yCoordinates.forEach((yc, yi) => {\n const xCoordinates = Array.isArray(d[x])\n ? d[x].map((p) => xScale(p))\n : [dX]\n xCoordinates.forEach((xc, xi) => {\n mappedPoints.push(\n clonedAppliedElement({\n baseClass: \"frame-piece\",\n tx: xc,\n ty: yc,\n d: (d.data && { ...d, ...d.data }) || d,\n i: yi === 0 && xi === 0 ? i : `${i}-${yi}-${xi}`,\n markProps,\n styleFn,\n renderKeyFn,\n classFn,\n yi\n })\n )\n })\n })\n }\n }\n })\n return mappedPoints\n}\n\nexport function createLines({\n xScale,\n yScale,\n canvasDrawing,\n data,\n projectedCoordinateNames,\n customMark,\n canvasRender,\n styleFn,\n classFn,\n renderMode,\n renderKeyFn,\n type,\n defined,\n \n ariaLabel,\n axesData = []\n}) {\n const xAxis = axesData.find(\n (d) => d.orient === \"bottom\" || d.orient === \"top\"\n )\n const yAxis = axesData.find(\n (d) => d.orient === \"left\" || d.orient === \"right\"\n )\n\n const xAxisFormatter = (xAxis && xAxis.tickFormat) || ((d) => d)\n const yAxisFormatter = (yAxis && yAxis.tickFormat) || ((d) => d)\n\n const customLine = typeof type === \"object\" ? type : { type }\n\n const interpolator =\n typeof customLine.interpolator === \"string\"\n ? curveHash[customLine.interpolator]\n : customLine.interpolator || curveLinear\n\n const lineGenerator = customLine.simpleLine ? line() : area()\n\n lineGeneratorDecorator({\n projectedCoordinateNames,\n defined,\n interpolator,\n generator: lineGenerator,\n xScale,\n yScale,\n simpleLine: customLine.simpleLine\n })\n\n const dynamicLineGenerator =\n (interpolator.dynamicInterpolator &&\n ((d, i) => {\n const dynLineGenerator = area()\n\n lineGeneratorDecorator({\n projectedCoordinateNames,\n defined,\n interpolator: interpolator.dynamicInterpolator(d, i),\n generator: dynLineGenerator,\n xScale,\n yScale,\n simpleLine: customLine.simpleLine\n })\n return dynLineGenerator\n })) ||\n (() => lineGenerator)\n\n const mappedLines = []\n data.forEach((d, i) => {\n const mappedDataForLines = d.data.map((p) => ({ ...p.data, ...p }))\n if (customMark && typeof customMark === \"function\") {\n //shim to make customLineMark work until Semiotic 2\n const compatibleData = {\n ...d,\n data: mappedDataForLines\n }\n mappedLines.push(\n customMark({ d: compatibleData, i, xScale, yScale, canvasDrawing })\n )\n } else {\n const builtInDisplayProps: { fill?: string; stroke?: string } = {}\n if (customLine.simpleLine) {\n builtInDisplayProps.fill = \"none\"\n builtInDisplayProps.stroke = \"black\"\n }\n\n const pathString = dynamicLineGenerator(d, i)(mappedDataForLines)\n\n const markProps = {\n ...builtInDisplayProps,\n markType: \"path\",\n d: pathString,\n \"aria-label\":\n d.data &&\n d.data.length > 0 &&\n ariaLabel &&\n `${d.data.length} point ${\n ariaLabel.items\n } starting value ${yAxisFormatter(d.data[0].y)} at ${xAxisFormatter(\n d.data[0].x\n )} ending value ${yAxisFormatter(\n d.data[d.data.length - 1].y\n )} at ${xAxisFormatter(d.data[d.data.length - 1].x)}`\n }\n\n if (canvasRender && canvasRender(d, i) === true) {\n const canvasLine = {\n type: \"line\",\n baseClass: \"xyframe-line\",\n tx: 0,\n ty: 0,\n d,\n i,\n markProps,\n styleFn,\n renderFn: renderMode,\n classFn\n }\n canvasDrawing.push(canvasLine)\n } else {\n let moddedStyleFn = styleFn\n\n if (customLine.type === \"area\" && customLine.enclosed !== true) {\n moddedStyleFn = (d, i) => ({ ...styleFn(d, i), stroke: \"none\" })\n }\n\n mappedLines.push(\n clonedAppliedElement({\n baseClass: \"xyframe-line\",\n d,\n i,\n markProps,\n styleFn: moddedStyleFn,\n renderKeyFn,\n classFn\n })\n )\n if (customLine.type === \"area\" && customLine.enclosed !== true) {\n const topperStyleFn = (d, i) => ({ ...styleFn(d, i), fill: \"none\" })\n\n const topperLineGenerator = line()\n\n lineGeneratorDecorator({\n projectedCoordinateNames,\n defined,\n interpolator: interpolator,\n generator: topperLineGenerator,\n xScale,\n yScale,\n simpleLine: true\n })\n\n const topperMarkProps = {\n ...markProps,\n d: topperLineGenerator(mappedDataForLines)\n }\n\n const topperKeyFn = renderKeyFn\n ? (d, i, yi) => `${renderKeyFn(d, i, yi)}-top`\n : undefined\n\n mappedLines.push(\n clonedAppliedElement({\n baseClass: \"xyframe-line-top\",\n d,\n i,\n markProps: topperMarkProps,\n styleFn: topperStyleFn,\n renderKeyFn: topperKeyFn,\n classFn\n })\n )\n }\n }\n }\n })\n\n if (customLine.type === \"difference\" && data.length === 2) {\n //Create the overlay line for the difference chart\n\n const diffdataA = data[0].data.map((basedata, baseI) => {\n const linePoint =\n basedata.yTop > data[1].data[baseI].yTop\n ? basedata.yTop\n : basedata.yBottom\n return {\n x: basedata.x,\n y: linePoint,\n yBottom: linePoint,\n yTop: linePoint\n }\n })\n\n const diffdataB = data[0].data.map((basedata, baseI) => {\n const linePoint =\n data[1].data[baseI].yTop > basedata.yTop\n ? data[1].data[baseI].yTop\n : data[1].data[baseI].yBottom\n return {\n x: basedata.x,\n y: linePoint,\n yBottom: linePoint,\n yTop: linePoint\n }\n })\n\n const doClassname = classFn\n ? `xyframe-line ${classFn(diffdataA)}`\n : \"xyframe-line\"\n\n const overLine = line()\n\n lineGeneratorDecorator({\n projectedCoordinateNames,\n defined,\n interpolator,\n generator: overLine,\n xScale,\n yScale,\n simpleLine: true\n })\n\n // let baseStyle = props.lineStyle ? props.lineStyle(diffdata, 0) : {}\n const diffOverlayA = (\n <path key={\"xyline-diff-a\"}\n className={`${doClassname} difference-overlay-a`}\n \n d={overLine(diffdataA)}\n style={{ fill: \"none\", pointerEvents: \"none\" }}\n />\n )\n mappedLines.push(diffOverlayA)\n\n const diffOverlayB = (\n <path key={\"xyline-diff-b\"}\n className={`${doClassname} difference-overlay-b`}\n \n d={overLine(diffdataB)}\n style={{ fill: \"none\", pointerEvents: \"none\" }}\n />\n )\n mappedLines.push(diffOverlayB)\n }\n\n return mappedLines\n}\n\nexport function createSummaries({\n xScale,\n yScale,\n canvasDrawing,\n data,\n canvasRender,\n styleFn,\n classFn,\n renderKeyFn,\n renderMode,\n \n customMark\n}: {\n xScale: ScaleLinear<number, number>\n yScale: ScaleLinear<number, number>\n canvasDrawing?: object[]\n data: ProjectedSummary[]\n canvasRender?: Function\n styleFn?: Function\n classFn?: Function\n renderKeyFn?: Function\n renderMode?: Function\n customMark?: Function\n}) {\n const summaryClass = classFn || (() => \"\")\n const summaryStyle = styleFn || (() => ({}))\n\n const renderFn = renderMode\n\n if (!Array.isArray(data)) {\n data = [data]\n }\n\n const renderedSummaries = []\n\n data.forEach((d, i) => {\n let className = \"xyframe-summary\"\n if (summaryClass) {\n className = `xyframe-summary ${summaryClass(d)}`\n }\n let drawD: string | React.ReactNode = \"\"\n let shouldBeValid = false\n if (\n typeof d.customMark === \"string\" ||\n React.isValidElement(d.customMark)\n ) {\n drawD = d.customMark\n shouldBeValid = true\n } else if (d.type === \"MultiPolygon\") {\n const polycoords = d.coordinates as unknown as [number, number][][][]\n\n polycoords.forEach((coord: [number, number][][]) => {\n coord.forEach((c) => {\n drawD += `M${c\n .map((p) => `${xScale(p[0])},${yScale(p[1])}`)\n .join(\"L\")}Z `\n })\n })\n } else if (customMark) {\n const xyfCoords = d._xyfCoordinates as [number, number][]\n const projectedCoordinates = xyfCoords.map((p) => [\n xScale(p[0]),\n yScale(p[1])\n ])\n // CUSTOM MARK IMPLEMENTATION\n drawD = customMark({\n d,\n i,\n classFn: summaryClass,\n styleFn: summaryStyle,\n renderFn,\n projectedCoordinates,\n xScale,\n yScale,\n bounds: shapeBounds(projectedCoordinates)\n })\n shouldBeValid = true\n } else {\n const xyfCoords = d._xyfCoordinates as number[][]\n if (d.curve) {\n const lineDrawing = line()\n .x((d) => xScale(d[0]))\n .y((d) => yScale(d[1]))\n .curve(d.curve)\n drawD = lineDrawing(xyfCoords)\n } else {\n drawD = `M${xyfCoords\n .map((p) => `${xScale(p[0])},${yScale(p[1])}`)\n .join(\"L\")}Z`\n }\n }\n\n const renderKey = renderKeyFn ? renderKeyFn(d, i) : `summary-${i}`\n\n if (shouldBeValid && React.isValidElement(drawD)) {\n renderedSummaries.push(drawD)\n } else if (canvasRender && canvasRender(d, i) === true) {\n const canvasSummary = {\n type: \"summary\",\n baseClass: \"xyframe-summary\",\n tx: 0,\n ty: 0,\n d,\n i,\n markProps: { markType: \"path\", d: drawD },\n styleFn: summaryStyle,\n renderFn,\n classFn: () => className\n }\n canvasDrawing.push(canvasSummary)\n } else {\n renderedSummaries.push(\n <path data-testid=\"xyframe-summary\"\n key={renderKey}\n className={className}\n\n d={drawD as string}\n style={summaryStyle(d, i)}\n />\n )\n }\n })\n return renderedSummaries\n}\n\nexport function clonedAppliedElement({\n tx,\n ty,\n d,\n i,\n markProps,\n styleFn,\n classFn,\n renderKeyFn,\n baseClass,\n yi\n}: {\n tx?: number\n ty?: number\n d: Record<string, any>\n i: number\n markProps: Record<string, any>\n styleFn: Function\n classFn: Function\n renderKeyFn: Function\n baseClass: string\n yi?: number\n}) {\n markProps.style = styleFn ? styleFn(d, i, yi) : {}\n\n markProps.className = baseClass\n\n markProps.key = renderKeyFn\n ? renderKeyFn(d, i, yi)\n : `${baseClass}-${d.key === undefined ? i : d.key}`\n\n if (tx || ty) {\n markProps.transform = `translate(${tx || 0},${ty || 0})`\n }\n\n if (classFn) {\n markProps.className = `${baseClass} ${classFn(d, i, yi)}`\n }\n\n if (markProps.style.r) {\n markProps.r = markProps.style.r\n }\n markProps[\"data-testid\"] = baseClass\n\n if (!markProps.markType) {\n const RenderableMark = markProps as React.ComponentClass\n return React.createElement(RenderableMark)\n }\n\n const { markType, ...restProps } = markProps\n return React.createElement(markType, restProps)\n}\n","import * as React from \"react\"\n\nimport { histogram, max } from \"d3-array\"\nimport { groupBarMark } from \"../svg/SvgHelper\"\nimport { area, line, curveCatmullRom, curveLinear, arc } from \"d3-shape\"\nimport { pointOnArcAtAngle } from \"./pieceDrawing\"\nimport { scaleLinear } from \"d3-scale\"\nimport { curveHash } from \"../visualizationLayerBehavior/general\"\nimport { quantile } from \"d3-array\"\nimport { sum } from \"d3-array\"\n\ninterface BuckeyArrayType {\n [position: number]: Record<string, any>\n x0?: number\n x1?: number\n push(item: Record<string, any>): number\n}\n\nconst verticalXYSorting = (a, b) => a.xy.y - b.xy.y\nconst horizontalXYSorting = (a, b) => b.xy.x - a.xy.x\nconst emptyObjectReturnFn = () => ({})\n\nfunction createSummaryAxis({\n summary,\n summaryI,\n axisSettings,\n axisCreator,\n projection,\n actualMax,\n adjustedSize,\n columnWidth\n}) {\n let axisTranslate = `translate(${summary.x},0)`\n let axisDomain = [0, actualMax]\n if (projection === \"horizontal\") {\n axisTranslate = `translate(${0},${summary.x})`\n axisDomain = [actualMax, 0]\n } else if (projection === \"radial\") {\n axisTranslate = \"translate(0, 0)\"\n }\n\n const axisWidth = projection === \"horizontal\" ? adjustedSize[0] : columnWidth\n const axisHeight = projection === \"vertical\" ? adjustedSize[1] : columnWidth\n axisSettings.size = [axisWidth, axisHeight]\n const axisScale = scaleLinear().domain(axisDomain).range([0, columnWidth])\n\n const renderedSummaryAxis = axisCreator(axisSettings, summaryI, axisScale)\n\n return (\n <g\n className=\"summary-axis\"\n key={`summaryPiece-axis-${summaryI}`}\n transform={axisTranslate}\n >\n {renderedSummaryAxis}\n </g>\n )\n}\n\nexport function bucketizedRenderingFn({\n data,\n type,\n renderMode,\n eventListenersGenerator,\n styleFn,\n classFn,\n projection,\n adjustedSize,\n chartSize,\n axisCreator: axisCreatorParam\n}) {\n const renderedSummaryMarks = []\n const summaryXYCoords = []\n\n const buckets = type.bins || 25\n const relativeBuckets = type.relative ? {} : false\n const summaryValueAccessor = type.binValue || ((d) => d.length)\n\n const summaryElementStylingFn = type.elementStyleFn || emptyObjectReturnFn\n\n let axisCreator\n if (type.axis) {\n type.axis.orient =\n projection === \"horizontal\" &&\n [\"left\", \"right\"].indexOf(type.axis.orient) === -1\n ? \"left\"\n : type.axis.orient\n type.axis.orient =\n projection === \"vertical\" &&\n [\"bottom\", \"top\"].indexOf(type.axis.orient) === -1\n ? \"bottom\"\n : type.axis.orient\n axisCreator = axisCreatorParam\n if (projection === \"radial\") {\n console.error(\"Summary axes cannot be drawn for radial histograms\")\n axisCreator = () => null\n }\n }\n\n let bucketSize = chartSize / buckets\n\n const keys = Object.keys(data)\n let binMax = 0\n\n const baseHistogram = histogram()\n\n const binDomain = [0, chartSize]\n\n const binBuckets = []\n\n for (let x = 0; x < buckets; x++) {\n binBuckets.push(binDomain[0] + (x / buckets) * chartSize)\n }\n\n const xyValue =\n projection === \"vertical\"\n ? (p) => p.piece.scaledVerticalValue\n : (p) => p.piece.scaledValue\n\n const instantiatedHistogram = baseHistogram\n .domain(binDomain)\n .thresholds(binBuckets)\n .value(xyValue)\n\n const calculatedBins = keys.map((key, summaryI) => {\n const summary = data[key]\n\n const thisSummaryData = summary.xyData\n\n const xySorting =\n projection === \"vertical\" ? verticalXYSorting : horizontalXYSorting\n\n const summaryPositionNest = thisSummaryData.sort(xySorting)\n\n let keyBins\n if (type.useBins === false) {\n const calculatedValues = summaryPositionNest.map((value) =>\n xyValue(value)\n )\n keyBins = summaryPositionNest\n .map((value, i) => {\n const bucketArray: BuckeyArrayType = []\n bucketArray.x0 = calculatedValues[i] - 1\n bucketArray.x1 = calculatedValues[i] + 1\n bucketArray.push(value)\n return bucketArray\n })\n .sort((a, b) => a.x0 - b.x0)\n bucketSize = chartSize / keyBins.length\n } else {\n keyBins = instantiatedHistogram(summaryPositionNest)\n }\n\n keyBins = keyBins.map((d) => ({\n y: d.x0,\n y1: d.x1 - d.x0,\n pieces: d,\n value: summaryValueAccessor(d.map((p) => p.piece.data))\n }))\n\n if (type.type === \"histogram\" || type.type === \"heatmap\") {\n keyBins = keyBins.filter((d) => d.value !== 0)\n }\n\n const relativeMax =\n keyBins.length === 0 ? 0 : max(keyBins.map((d) => d.value))\n if (relativeBuckets) {\n relativeBuckets[key] = relativeMax\n }\n\n binMax = Math.max(binMax, relativeMax)\n\n return { bins: keyBins, summary, summaryI, thisSummaryData }\n })\n\n const numHorizons = type.horizon\n ? binMax / type.horizon\n : type.numHorizons || 4\n const horizon = type.horizon || binMax / numHorizons\n\n calculatedBins.forEach(({ bins, summary, summaryI, thisSummaryData }) => {\n const eventListeners = eventListenersGenerator(summary, summaryI)\n const columnWidth = summary.width\n let calculatedSummaryStyle = thisSummaryData[0]\n ? styleFn(thisSummaryData[0].piece.data, summaryI)\n : {}\n let calculatedSummaryClass = thisSummaryData[0]\n ? classFn(thisSummaryData[0].piece.data, summaryI)\n : \"\"\n\n let translate = [summary.middle, 0]\n if (projection === \"horizontal\") {\n translate = [bucketSize, summary.middle]\n } else if (projection === \"radial\") {\n translate = [adjustedSize[0] / 2, adjustedSize[1] / 2]\n }\n\n const actualMax =\n (relativeBuckets && relativeBuckets[summary.name]) || binMax\n\n if (type.type === \"heatmap\" || type.type === \"histogram\") {\n const mappedBars = groupBarMark({\n bins,\n binMax,\n relativeBuckets,\n columnWidth,\n projection,\n adjustedSize,\n summaryI,\n summary,\n summaryStyle: calculatedSummaryStyle,\n type\n })\n const tiles = mappedBars.marks\n if (projection === \"radial\") {\n translate = [0, 0]\n }\n\n if (type.axis && type.type === \"histogram\") {\n renderedSummaryMarks.push({\n type: \"svg-only-mark\",\n Mark: createSummaryAxis({\n summary,\n summaryI,\n axisSettings: type.axis,\n axisCreator,\n projection,\n actualMax,\n adjustedSize,\n columnWidth\n })\n })\n }\n mappedBars.points.forEach((d) => {\n d.x += translate[0]\n d.y += translate[1]\n })\n\n summaryXYCoords.push(...mappedBars.points)\n renderedSummaryMarks.push({\n containerProps: {\n ...eventListeners,\n transform: `translate(${translate})`,\n className: calculatedSummaryClass,\n key: `summaryPiece-${summaryI}`,\n role: \"img\",\n tabIndex: -1,\n \"data-o\": summary.name,\n \"aria-label\": `${summary.name} ${type.type}`\n },\n //These are drawn items\n elements: tiles\n })\n } else if (type.type === \"violin\") {\n const { iqr } = type\n const subsets = type.subsets || [false]\n const violinElements: Record<string, any>[] = []\n\n bins[0].y = bins[0].y - bucketSize / 2\n bins[bins.length - 1].y = bins[bins.length - 1].y + bucketSize / 2\n\n subsets.forEach((subsettingFn, subsettingIndex) => {\n let actualBins = bins\n if (subsettingFn) {\n calculatedSummaryStyle = thisSummaryData[0]\n ? styleFn(thisSummaryData[0].piece.data, summaryI, subsettingIndex)\n : {}\n calculatedSummaryClass = thisSummaryData[0]\n ? classFn(thisSummaryData[0].piece.data, summaryI, subsettingIndex)\n : \"\"\n actualBins = bins.map((d) => {\n const actualPieces = d.pieces\n .filter((p, pi) => subsettingFn(p.piece, pi))\n .map((d) => d)\n const actualValue = summaryValueAccessor(actualPieces)\n return {\n ...d,\n pieces: actualPieces,\n value: actualValue\n }\n })\n }\n\n let violinArea = area().curve(type.curve || curveCatmullRom)\n\n let violinPoints = []\n\n if (projection === \"horizontal\") {\n actualBins.forEach((summaryPoint) => {\n const xValue = summaryPoint.y - bucketSize / 2\n const yValue = ((summaryPoint.value / actualMax) * columnWidth) / 2\n\n violinPoints.push({\n x: xValue,\n y0: -yValue,\n y1: yValue\n })\n summaryXYCoords.push({\n key: summary.name,\n x: xValue + translate[0],\n y: yValue + translate[1],\n pieces: summaryPoint.pieces.map((d) => d.piece),\n value: summaryPoint.value\n })\n })\n violinArea\n .x((d) => d.x)\n .y0((d) => d.y0)\n .y1((d) => d.y1)\n .defined(\n (d, i) =>\n d.y0 !== 0 ||\n (violinPoints[i - 1] && violinPoints[i - 1].y0 !== 0) ||\n (violinPoints[i + 1] && violinPoints[i + 1].y0 !== 0)\n )\n } else if (projection === \"vertical\") {\n actualBins.forEach((summaryPoint) => {\n const yValue = summaryPoint.y + bucketSize / 2\n const xValue = ((summaryPoint.value / actualMax) * columnWidth) / 2\n\n violinPoints.push({\n y: yValue,\n x0: -xValue,\n x1: xValue\n })\n\n summaryXYCoords.push({\n key: summary.name,\n x: xValue + translate[0],\n y: yValue + translate[1],\n pieces: summaryPoint.pieces.map((d) => d.piece),\n value: summaryPoint.value\n })\n })\n violinArea\n .y((d) => d.y)\n .x0((d) => d.x0)\n .x1((d) => d.x1)\n .defined(\n (d, i) =>\n d.x0 !== 0 ||\n (violinPoints[i - 1] && violinPoints[i - 1].x0 !== 0) ||\n (violinPoints[i + 1] && violinPoints[i + 1].x0 !== 0)\n )\n } else if (projection === \"radial\") {\n const angle = summary.pct - summary.pct_padding / 2\n const midAngle = summary.pct_middle\n violinPoints = actualBins\n violinArea = (inbins) => {\n const forward = []\n const backward = []\n inbins.forEach((bin) => {\n const outsidePoint = pointOnArcAtAngle(\n [0, 0],\n midAngle + (angle * bin.value) / actualMax / 2,\n (bin.y + bin.y1 - bucketSize / 2) / 2\n )\n const insidePoint = pointOnArcAtAngle(\n [0, 0],\n midAngle - (angle * bin.value) / actualMax / 2,\n (bin.y + bin.y1 - bucketSize / 2) / 2\n )\n\n //Ugh a terrible side effect has appeared\n summaryXYCoords.push({\n key: summary.name,\n x: insidePoint[0] + translate[0],\n y: insidePoint[1] + translate[1],\n pieces: bin.pieces.map((d) => d.piece),\n value: bin.value\n })\n summaryXYCoords.push({\n key: summary.name,\n x: outsidePoint[0] + translate[0],\n y: outsidePoint[1] + translate[1],\n pieces: bin.pieces.map((d) => d.piece),\n value: bin.value\n })\n\n forward.push(outsidePoint)\n backward.push(insidePoint)\n })\n return `M${forward.map((d) => d.join(\",\")).join(\"L\")}L${backward\n .reverse()\n .map((d) => d.join(\",\"))\n .join(\"L\")}Z`\n }\n }\n\n violinElements.push({\n\n ...eventListeners,\n transform: `translate(${translate})`,\n key: `summaryPiece-${summaryI}-${subsettingIndex}`,\n\n markType: \"path\",\n className: calculatedSummaryClass,\n style: calculatedSummaryStyle,\n d: violinArea(violinPoints),\n role: \"img\",\n tabIndex: -1,\n \"data-o\": summary.name,\n \"aria-label\": `${summary.name} distribution`\n })\n if (iqr) {\n let iqrPieces = []\n actualBins.forEach((aBin) => {\n iqrPieces.push(...aBin.pieces)\n })\n\n iqrPieces = iqrPieces\n .map((d) =>\n projection === \"vertical\"\n ? d.piece.scaledVerticalValue\n : d.piece.scaledValue\n )\n .sort((a, b) => a - b)\n\n const iqrValues = [\n quantile(iqrPieces, 0.25),\n quantile(iqrPieces, 0.5),\n quantile(iqrPieces, 0.75)\n ]\n\n const iqrLine =\n projection === \"vertical\"\n ? (first, last, translate) =>\n `M${translate[0]},${first}L${translate[0]},${last}`\n : (first, last, translate) =>\n `M${first},${translate[1]}L${last},${translate[1]}`\n\n violinElements.push({\n\n ...eventListeners,\n key: `summaryPiece-${summaryI}-${subsettingIndex}-iqr-line`,\n\n markType: \"path\",\n className: calculatedSummaryClass,\n style: {\n stroke: \"black\",\n strokeWidth: \"2px\",\n ...calculatedSummaryStyle,\n ...summaryElementStylingFn(\"iqr\")\n },\n d: iqrLine(iqrValues[0], iqrValues[2], translate),\n role: \"img\",\n tabIndex: -1,\n \"data-o\": summary.name,\n \"aria-label\": `${summary.name} distribution`\n })\n\n violinElements.push({\n\n ...eventListeners,\n key: `summaryPiece-${summaryI}-${subsettingIndex}-iqr-median`,\n markType: \"circle\",\n className: calculatedSummaryClass,\n style: {\n stroke: \"black\",\n fill: \"black\",\n strokeWidth: \"1px\",\n r: \"3px\",\n ...calculatedSummaryStyle,\n ...summaryElementStylingFn(\"median\")\n },\n cx: projection === \"vertical\" ? translate[0] : iqrValues[1],\n cy: projection === \"vertical\" ? iqrValues[1] : translate[1],\n role: \"img\",\n tabIndex: -1,\n \"data-o\": summary.name,\n \"aria-label\": `${summary.name} distribution`\n })\n }\n })\n\n renderedSummaryMarks.push({\n elements: violinElements\n })\n } else if (type.type === \"ridgeline\") {\n const zeroedStart = Object.assign({}, bins[0], { value: 0 })\n const zeroedEnd = Object.assign({}, bins[bins.length - 1], { value: 0 })\n //Ridgeline plots need to visually signify the zero baseline with their start and end position\n\n zeroedStart.y = zeroedStart.y - bucketSize / 2\n zeroedEnd.y = zeroedEnd.y + bucketSize / 2\n\n const joyBins = [zeroedStart, ...bins, zeroedEnd]\n let joyPoints = []\n\n const interpolatorSetting = type.curve || type.interpolator\n\n const actualInterpolator =\n typeof interpolatorSetting === \"string\"\n ? curveHash[interpolatorSetting]\n : interpolatorSetting\n\n let joyArea = line()\n .curve(actualInterpolator || curveCatmullRom)\n .x((d) => d.x)\n .y((d) => d.y)\n\n const joyHeight = type.amplitude || 0\n\n if (type.axis && type.type === \"histogram\") {\n renderedSummaryMarks.push({\n type: \"svg-only-mark\",\n Mark: createSummaryAxis({\n summary,\n summaryI,\n axisSettings: { baseline: false, ...type.axis },\n axisCreator,\n projection,\n actualMax,\n adjustedSize,\n columnWidth\n })\n })\n }\n\n if (projection === \"horizontal\") {\n joyBins.forEach((summaryPoint, i) => {\n const xValue = summaryPoint.y - bucketSize / 2\n\n const yValue = type.flip\n ? (summaryPoint.value / actualMax) * (columnWidth + joyHeight) -\n columnWidth / 2\n : (-summaryPoint.value / actualMax) * (columnWidth + joyHeight) +\n columnWidth / 2\n\n joyPoints.push({\n y: yValue,\n x: xValue\n })\n\n //Don't make an interaction point for the first or last\n if (i !== 0 && i !== joyBins.length - 1) {\n summaryXYCoords.push({\n key: summary.name,\n x: xValue + translate[0],\n y: yValue + translate[1],\n pieces: summaryPoint.pieces.map((d) => d.piece),\n value: summaryPoint.value\n })\n }\n })\n } else if (projection === \"vertical\") {\n joyBins.forEach((summaryPoint) => {\n const yValue = summaryPoint.y + bucketSize / 2\n const xValue =\n type.flip === true\n ? (summaryPoint.value / actualMax) * (columnWidth + joyHeight) -\n columnWidth / 2\n : (-summaryPoint.value / actualMax) * (columnWidth + joyHeight) +\n columnWidth / 2\n\n joyPoints.push({\n y: yValue,\n x: xValue\n })\n\n summaryXYCoords.push({\n key: summary.name,\n x: xValue + translate[0],\n y: yValue + translate[1],\n pieces: summaryPoint.pieces.map((d) => d.piece),\n value: summaryPoint.value\n })\n })\n } else if (projection === \"radial\") {\n const angle = summary.pct - summary.pct_padding / 2\n const midAngle = summary.pct_start + summary.pct_padding / 2\n\n translate = [0, 0]\n joyPoints = joyBins\n joyArea = (inbins) => {\n const forward = []\n inbins.forEach((bin) => {\n const outsidePoint = pointOnArcAtAngle(\n [adjustedSize[0] / 2, adjustedSize[1] / 2],\n midAngle + (angle * bin.value) / actualMax,\n (bin.y + bin.y1 - bucketSize / 2) / 2\n )\n //Ugh a terrible side effect has appeared\n summaryXYCoords.push({\n key: summary.name,\n x: outsidePoint[0] + translate[0],\n y: outsidePoint[1] + translate[1],\n pieces: bin.pieces.map((d) => d.piece),\n value: bin.value\n })\n\n forward.push(outsidePoint)\n })\n return `M${forward.map((d) => d.join(\",\")).join(\"L\")}Z`\n }\n }\n\n if (type.axis) {\n renderedSummaryMarks.push({\n type: \"svg-only-mark\",\n Mark: createSummaryAxis({\n summary,\n summaryI,\n axisSettings: type.axis,\n axisCreator,\n projection,\n actualMax,\n adjustedSize,\n columnWidth\n })\n })\n }\n\n renderedSummaryMarks.push({\n elements: [\n {\n\n ...eventListeners,\n transform: `translate(${translate})`,\n key: `summaryPiece-${summaryI}`,\n\n markType: \"path\",\n className: calculatedSummaryClass,\n style: calculatedSummaryStyle,\n d: joyArea(joyPoints),\n role: \"img\",\n tabIndex: -1,\n \"data-o\": summary.name,\n \"aria-label\": `${summary.name} distribution`\n }\n ]\n })\n } else if (type.type === \"horizon\") {\n const zeroedStart = Object.assign({}, bins[0], { value: 0 })\n const zeroedEnd = Object.assign({}, bins[bins.length - 1], { value: 0 })\n\n zeroedStart.y = zeroedStart.y - bucketSize / 2\n zeroedEnd.y = zeroedEnd.y + bucketSize / 2\n\n const horizonBins = [zeroedStart, ...bins, zeroedEnd]\n\n let multiBins = []\n let remainingPieces = true\n let currentHorizon = 0\n\n while (remainingPieces === true) {\n const currentStrip = horizonBins.map((d) => ({\n ...d,\n value: Math.max(0, Math.min(d.value - currentHorizon, horizon))\n }))\n multiBins.push(\n currentStrip.map((d) => ({ ...d, value: d.value * numHorizons }))\n )\n currentHorizon += horizon\n if (max(currentStrip.map((d) => d.value)) < horizon) {\n remainingPieces = false\n }\n }\n\n multiBins = multiBins.filter((d) => sum(d, (p) => p.value) > 0)\n\n horizonBins.forEach((summaryPoint, i) => {\n if (i !== 0 && i !== horizonBins.length - 1) {\n if (projection === \"horizontal\") {\n const xValue = summaryPoint.y - bucketSize / 2\n const yValue =\n (-summaryPoint.value / actualMax) * columnWidth + columnWidth / 2\n\n summaryXYCoords.push({\n key: summary.name,\n x: xValue + translate[0],\n y: yValue + translate[1],\n pieces: summaryPoint.pieces.map((d) => d.piece),\n value: summaryPoint.value\n })\n } else if (projection === \"vertical\") {\n const yValue = summaryPoint.y + bucketSize / 2\n const xValue =\n type.flip === true\n ? (summaryPoint.value / actualMax) * columnWidth -\n columnWidth / 2\n : (-summaryPoint.value / actualMax) * columnWidth +\n columnWidth / 2\n\n summaryXYCoords.push({\n key: summary.name,\n x: xValue + translate[0],\n y: yValue + translate[1],\n pieces: summaryPoint.pieces.map((d) => d.piece),\n value: summaryPoint.value\n })\n }\n }\n })\n\n const multiBinMarks = multiBins.map((multiBin, multiBinI) => {\n let horizonPoints = []\n\n const interpolatorSetting = type.curve || type.interpolator\n\n const actualInterpolator =\n typeof interpolatorSetting === \"string\"\n ? curveHash[interpolatorSetting]\n : interpolatorSetting\n\n let horizonArea = line()\n .curve(actualInterpolator || curveLinear)\n .x((d) => d.x)\n .y((d) => d.y)\n\n if (projection === \"horizontal\") {\n multiBin.forEach((summaryPoint) => {\n const xValue = summaryPoint.y - bucketSize / 2\n const yValue =\n (-summaryPoint.value / actualMax) * columnWidth + columnWidth / 2\n\n horizonPoints.push({\n y: yValue,\n x: xValue\n })\n\n //Don't make an interaction point for the first or last\n })\n } else if (projection === \"vertical\") {\n multiBin.forEach((summaryPoint) => {\n const yValue = summaryPoint.y + bucketSize / 2\n const xValue =\n type.flip === true\n ? (summaryPoint.value / actualMax) * columnWidth -\n columnWidth / 2\n : (-summaryPoint.value / actualMax) * columnWidth +\n columnWidth / 2\n\n horizonPoints.push({\n y: yValue,\n x: xValue\n })\n })\n } else if (projection === \"radial\") {\n const angle = summary.pct - summary.pct_padding / 2\n const midAngle = summary.pct_start + summary.pct_padding / 2\n\n translate = [0, 0]\n horizonPoints = multiBin\n horizonArea = (inbins) => {\n const forward = []\n inbins.forEach((bin) => {\n const outsidePoint = pointOnArcAtAngle(\n [adjustedSize[0] / 2, adjustedSize[1] / 2],\n midAngle + (angle * bin.value) / actualMax,\n (bin.y + bin.y1 - bucketSize / 2) / 2\n )\n\n forward.push(outsidePoint)\n })\n return `M${forward.map((d) => d.join(\",\")).join(\"L\")}Z`\n }\n }\n\n return {\n\n ...eventListeners,\n transform: `translate(${translate})`,\n key: `summaryPiece-${summaryI}-${multiBinI}`,\n\n markType: \"path\",\n className: calculatedSummaryClass,\n style: {\n ...calculatedSummaryStyle,\n ...summaryElementStylingFn(multiBin, multiBinI)\n },\n d: horizonArea(horizonPoints),\n role: \"img\",\n tabIndex: -1,\n \"data-o\": summary.name,\n \"aria-label\": `${summary.name} distribution`\n }\n })\n\n if (type.axis) {\n renderedSummaryMarks.push({\n type: \"svg-only-mark\",\n Mark: createSummaryAxis({\n summary,\n summaryI,\n axisSettings: type.axis,\n axisCreator,\n projection,\n actualMax,\n adjustedSize,\n columnWidth\n })\n })\n }\n\n renderedSummaryMarks.push({ elements: multiBinMarks })\n }\n })\n\n return {\n marks: renderedSummaryMarks,\n xyPoints: summaryXYCoords,\n thresholds: binBuckets\n }\n}\n","import * as React from \"react\"\n\nimport { ProjectionTypes } from \"../types/generalTypes\"\n\nimport { boxplotRenderFn } from \"./boxplotRenderer\"\nimport { ckBinsRenderFn } from \"./ckbinsRenderer\"\nimport { contourRenderFn } from \"./contourRenderer\"\nimport { bucketizedRenderingFn } from \"./bucketizedRenderer\"\n\n// Re-export renderer functions so existing imports from this module continue to work\nexport { boxplotRenderFn } from \"./boxplotRenderer\"\nexport { ckBinsRenderFn } from \"./ckbinsRenderer\"\nexport { contourRenderFn } from \"./contourRenderer\"\nexport { bucketizedRenderingFn } from \"./bucketizedRenderer\"\n\ntype SummaryType = { type: string }\n\ntype ORFrameSummaryRendererTypes = {\n data: Array<object>\n type: SummaryType\n renderMode: Function\n eventListenersGenerator: Function\n styleFn: Function\n classFn: Function\n projection: ProjectionTypes\n adjustedSize: Array<number>\n chartSize: number\n margin: object\n axisCreator?: Function\n}\n\nconst summaryRenderHash = {\n contour: contourRenderFn,\n boxplot: boxplotRenderFn,\n violin: bucketizedRenderingFn,\n heatmap: bucketizedRenderingFn,\n ridgeline: bucketizedRenderingFn,\n histogram: bucketizedRenderingFn,\n horizon: bucketizedRenderingFn,\n ckbins: ckBinsRenderFn\n}\n\nexport function orFrameSummaryRenderer({\n data,\n type,\n renderMode,\n eventListenersGenerator,\n styleFn,\n classFn,\n projection,\n adjustedSize,\n chartSize,\n margin,\n axisCreator\n}: ORFrameSummaryRendererTypes) {\n let summaryRenderFn\n if (typeof type.type === \"function\") {\n summaryRenderFn = type.type\n } else if (summaryRenderHash[type.type]) {\n summaryRenderFn = summaryRenderHash[type.type]\n } else {\n console.error(\n `Invalid summary type: ${\n type.type\n } - Must be a function or one of the following strings: ${Object.keys(\n summaryRenderHash\n ).join(\", \")}`\n )\n return {}\n }\n return summaryRenderFn({\n data,\n type,\n renderMode,\n eventListenersGenerator,\n styleFn,\n classFn,\n projection,\n adjustedSize,\n chartSize,\n margin,\n axisCreator\n })\n}\n\n/**\n * Main drawing function for summary visualizations\n */\nexport const drawSummaries = ({\n data,\n type,\n renderMode,\n eventListenersGenerator,\n styleFn,\n classFn,\n projection,\n adjustedSize,\n margin,\n axisCreator\n}: {\n data: object\n type: { type?: string | Function }\n renderMode: Function\n eventListenersGenerator: Function\n styleFn: Function\n classFn: Function\n projection: ProjectionTypes\n adjustedSize: number[]\n margin: object\n axisCreator?: Function\n}) => {\n if (!type || !type.type) return\n type = typeof type === \"string\" ? { type } : type\n const chartSize =\n projection === \"vertical\" ? adjustedSize[1] : adjustedSize[0]\n\n return orFrameSummaryRenderer({\n data: data as unknown as Array<object>,\n type: type as SummaryType,\n renderMode,\n eventListenersGenerator,\n styleFn,\n classFn,\n projection,\n adjustedSize,\n chartSize,\n margin,\n axisCreator\n })\n}\n\ninterface summaryInstruction {\n Mark?: JSX.Element\n containerProps?: object\n elements: object[]\n}\n\n/**\n * Converts summary instructions to rendered SVG elements\n */\nexport function summaryInstructionsToMarks(data: summaryInstruction[]) {\n const renderedSummaries: JSX.Element[] = []\n for (const container of data) {\n const renderedElements: JSX.Element[] = []\n const { elements, containerProps} = container\n if (container.Mark) {\n renderedSummaries.push(container.Mark)\n } else {\n for (let i = 0; i < elements.length; i++) {\n const element: Record<string, any> = elements[i] as Record<string, any>\n const { markType, style = {}, ...restProps } = element\n\n // Merge style object into direct props for cleaner SVG\n const elementProps: Record<string, any> = { ...restProps }\n if (style.fill !== undefined) elementProps.fill = style.fill\n if (style.stroke !== undefined) elementProps.stroke = style.stroke\n if (style.strokeWidth !== undefined) elementProps.strokeWidth = style.strokeWidth\n if (style.opacity !== undefined) elementProps.opacity = style.opacity\n if (style.fillOpacity !== undefined) elementProps.fillOpacity = style.fillOpacity\n if (style.strokeOpacity !== undefined) elementProps.strokeOpacity = style.strokeOpacity\n\n // Keep remaining styles\n const remainingStyles: Record<string, any> = { ...style }\n delete remainingStyles.fill\n delete remainingStyles.stroke\n delete remainingStyles.strokeWidth\n delete remainingStyles.opacity\n delete remainingStyles.fillOpacity\n delete remainingStyles.strokeOpacity\n if (Object.keys(remainingStyles).length > 0) {\n elementProps.style = remainingStyles\n }\n\n elementProps.key = element.key || i\n\n if (markType) {\n renderedElements.push(React.createElement(markType, elementProps))\n }\n }\n if (containerProps) {\n renderedSummaries.push(<g {...containerProps}>{renderedElements}</g>)\n } else {\n renderedSummaries.push(...renderedElements)\n }\n }\n }\n return renderedSummaries\n}\n\nexport const renderLaidOutSummaries = ({\n data,\n canvasRender,\n canvasDrawing\n}) => {\n if (canvasRender()) {\n for (const container of data) {\n if (container.type !== \"svg-only-mark\") {\n const { transform: containerTransform = \"translate(0,0)\" } =\n container?.containerProps ?? {\n transform: \"translate(0,0)\"\n }\n\n const [containerX, containerY] = containerTransform\n .replace(\"translate(\", \"\")\n .replace(\")\", \"\")\n .split(\",\")\n for (const element of container.elements) {\n const { transform: elementTransform = \"translate(0,0)\" } = element\n\n const [elementX, elementY] = elementTransform\n .replace(\"translate(\", \"\")\n .replace(\")\", \"\")\n .split(\",\")\n\n const canvasNode = {\n baseClass: \"frame-piece\",\n tx: parseInt(elementX) + parseInt(containerX),\n ty: parseInt(elementY) + parseInt(containerY),\n d: {},\n i: 0,\n markProps: element,\n styleFn: () => element.style,\n renderFn: element.renderMode,\n classFn: () => \"\"\n }\n\n canvasDrawing.push(canvasNode)\n }\n }\n }\n }\n\n return summaryInstructionsToMarks(\n data.filter((d) => !canvasRender() || d.type === \"svg-only-mark\")\n )\n}\n","import * as React from \"react\"\nimport { useEffect, useState, useRef } from \"react\"\n\nimport {\n axisLabels,\n axisPieces,\n axisLines\n} from \"./../visualizationLayerBehavior/axis\"\n\nimport SummaryGraphic from \"./summaryGraphic\"\nimport AxisTitle from \"./axisTitle\"\n\nimport { AxisProps } from \"./../types/annotationTypes\"\n\nimport {\n drawSummaries,\n summaryInstructionsToMarks\n} from \"./../svg/summaryLayouts\"\nimport { AxisSummaryTypeSettings } from \"./../types/generalTypes\"\n\n// components\n\nconst marginalPointMapper = (orient, width, data) => {\n const xMod = orient === \"left\" || orient === \"right\" ? width / 2 : 0\n const yMod = orient === \"bottom\" || orient === \"top\" ? width / 2 : 0\n return data.map((p) => [p.xy.x + xMod, p.xy.y + yMod])\n}\n\nfunction formatValue(value, props) {\n if (props.tickFormat) {\n return props.tickFormat(value)\n }\n if (value.toString) {\n return value.toString()\n }\n return value\n}\n\nconst boundingBoxMax = (axisNode, orient) => {\n const axisRef = axisNode.current\n if (!axisRef) return 30\n\n const positionType =\n orient === \"left\" || orient === \"right\" ? \"width\" : \"height\"\n\n const axisLabelMax =\n Math.max(\n ...[...axisRef.querySelectorAll(\".axis-label\")]\n .map(\n (l: { getBBox: Function }) =>\n (l.getBBox && l.getBBox()) || { height: 30, width: 30 }\n )\n .map((d) => d[positionType])\n ) + 25\n\n return axisLabelMax\n}\n\nexport default function Axis(props: AxisProps) {\n const {\n rotate,\n label,\n dynamicLabelPosition,\n orient = \"left\",\n marginalSummaryType,\n tickFormat = marginalSummaryType ? () => \"\" : (d) => d,\n size,\n width = (size && size[0]) || 0,\n height = (size && size[1]) || 0,\n className,\n padding,\n tickValues,\n scale,\n ticks,\n footer,\n tickSize,\n tickLineGenerator,\n baseline = true,\n margin = { top: 0, bottom: 0, left: 0, right: 0 },\n center = false,\n annotationFunction,\n glyphFunction,\n xyPoints\n } = props\n\n const [hoverPosition, changeHoverPosition] = useState(0)\n const [calculatedLabelPosition, changeCalculatedLabelPosition] =\n useState(undefined)\n\n const axisNode = useRef(null)\n\n useEffect(() => {\n if (!label?.position && dynamicLabelPosition) {\n const newBBMax = boundingBoxMax(axisNode, orient)\n if (newBBMax !== calculatedLabelPosition) {\n changeCalculatedLabelPosition(newBBMax)\n }\n }\n }, [label, dynamicLabelPosition])\n\n let { axisParts, position = [0, 0] } = props\n\n let axisTickLines\n\n if (!axisParts) {\n axisParts = axisPieces({\n padding: padding,\n tickValues,\n scale,\n ticks,\n orient,\n size: [width, height],\n footer,\n tickSize\n })\n axisTickLines = (\n <g className={`axis ${className}`}>\n {axisLines({\n axisParts,\n orient,\n tickLineGenerator,\n className,\n scale\n })}\n </g>\n )\n }\n if (axisParts.length === 0) {\n return null\n }\n\n let hoverWidth = 50\n let hoverHeight = height\n let hoverX = -50\n let hoverY = 0\n let baselineX = 0\n let baselineY = 0\n let baselineX2 = 0\n let baselineY2 = height\n // hoverFunction is set is switch(orient) below\n let hoverFunction\n let circleX = 25\n let textX = -25\n let textY = 18\n let lineWidth = width + 25\n let lineHeight = 0\n let circleY = hoverPosition\n let annotationOffset = 0\n let annotationType = \"y\"\n\n switch (orient) {\n case \"right\":\n position = [position[0], position[1]]\n hoverX = width\n baselineX2 = baselineX = width\n annotationOffset = margin.top\n lineWidth = -width - 25\n textX = 5\n hoverFunction = (e) => {\n changeHoverPosition(e.nativeEvent.offsetY - annotationOffset)\n }\n if (center === true) {\n baselineX2 = baselineX = width / 2\n }\n break\n case \"top\":\n position = [position[0], 0]\n hoverWidth = width\n hoverHeight = 50\n hoverY = -50\n hoverX = 0\n annotationOffset = margin.left\n annotationType = \"x\"\n baselineX2 = width\n baselineY2 = 0\n if (center === true) {\n baselineY2 = baselineY = height / 2\n }\n hoverFunction = (e) => {\n changeHoverPosition(e.nativeEvent.offsetX - annotationOffset)\n }\n circleX = hoverPosition\n circleY = 25\n textX = 0\n textY = -10\n lineWidth = 0\n lineHeight = height + 25\n break\n case \"bottom\":\n position = [position[0], 0]\n hoverWidth = width\n hoverHeight = 50\n baselineY = baselineY2 = hoverY = height\n baselineX = hoverX = 0\n baselineX2 = width\n annotationOffset = margin.left\n\n hoverFunction = (e) => {\n changeHoverPosition(e.nativeEvent.offsetX - annotationOffset)\n }\n circleX = hoverPosition\n circleY = 25\n textX = 0\n textY = 15\n lineWidth = 0\n lineHeight = -height - 25\n annotationType = \"x\"\n if (center === true) {\n baselineY2 = baselineY = height / 2\n }\n break\n default:\n position = [position[0], position[1]]\n annotationOffset = margin.top\n if (center === true) {\n baselineX2 = baselineX = width / 2\n }\n hoverFunction = (e) => {\n changeHoverPosition(e.nativeEvent.offsetY - annotationOffset)\n }\n }\n\n let annotationBrush\n\n if (annotationFunction) {\n const formattedValue = formatValue(scale.invert(hoverPosition), props)\n const hoverGlyph: any = glyphFunction ? (\n glyphFunction({\n lineHeight,\n lineWidth,\n value: scale.invert(hoverPosition)\n })\n ) : (\n <g>\n {React.isValidElement(formattedValue) ? (\n <g transform={`translate(${textX},${textY})`}>{formattedValue}</g>\n ) : (\n <text x={textX} y={textY}>\n {formattedValue}\n </text>\n )}\n <circle r={5} />\n <line x1={lineWidth} y1={lineHeight} style={{ stroke: \"black\" }} />\n </g>\n )\n const annotationSymbol = hoverPosition ? (\n <g\n style={{ pointerEvents: \"none\" }}\n transform={`translate(${circleX},${circleY})`}\n >\n {hoverGlyph}\n </g>\n ) : null\n\n annotationBrush = (\n <g\n className=\"annotation-brush\"\n transform={`translate(${hoverX},${hoverY})`}\n >\n <rect\n style={{ fillOpacity: 0 }}\n height={hoverHeight}\n width={hoverWidth}\n onMouseMove={hoverFunction}\n onClick={(e) =>\n annotationFunction({\n className: \"dynamic-axis-annotation\",\n type: annotationType,\n value: scale.invert(hoverPosition),\n e\n })\n }\n onMouseOut={() => {\n changeHoverPosition(undefined)\n }}\n />\n {annotationSymbol}\n </g>\n )\n }\n\n let summaryGraphic\n\n if (marginalSummaryType && xyPoints) {\n const summaryWidth = Math.max(margin[orient] - 6, 5)\n\n const decoratedSummaryType: AxisSummaryTypeSettings =\n typeof marginalSummaryType === \"string\"\n ? { type: marginalSummaryType }\n : marginalSummaryType\n\n if (\n decoratedSummaryType.flip === undefined &&\n (orient === \"bottom\" || orient === \"right\")\n ) {\n decoratedSummaryType.flip = true\n }\n\n const summaryStyle = decoratedSummaryType.summaryStyle\n ? () => decoratedSummaryType.summaryStyle\n : () => ({\n fill: \"black\",\n fillOpacity: 0.5,\n stroke: \"black\",\n strokeDasharray: \"0\"\n })\n\n const summaryRenderMode = decoratedSummaryType.renderMode\n ? () => decoratedSummaryType.renderMode\n : () => undefined\n\n const summaryClass = decoratedSummaryType.summaryClass\n ? () => decoratedSummaryType.summaryClass\n : () => \"\"\n\n const dataFilter = decoratedSummaryType.filter || (() => true)\n\n const forSummaryData = xyPoints\n .filter(\n (p: { x?: number; y?: number; data?: object }) =>\n p.x !== undefined && p.y !== undefined && dataFilter(p.data)\n )\n .map((d: { x: number; y: number }) => ({\n ...d,\n xy: {\n x: orient === \"top\" || orient === \"bottom\" ? scale(d.x) : 0,\n y: orient === \"left\" || orient === \"right\" ? scale(d.y) : 0\n },\n piece: {\n scaledVerticalValue: scale(d.y),\n scaledValue: scale(d.x)\n },\n value:\n orient === \"top\" || orient === \"bottom\" ? scale(d.y) : scale(d.x),\n scaledValue: scale(d.x),\n scaledVerticalValue: scale(d.y)\n }))\n\n const calculatedSummary = drawSummaries({\n data: {\n column: {\n middle: summaryWidth / 2,\n pieceData: forSummaryData,\n width: summaryWidth,\n xyData: forSummaryData\n }\n },\n type: decoratedSummaryType,\n renderMode: summaryRenderMode,\n eventListenersGenerator:\n decoratedSummaryType.eventListenersGenerator || (() => ({})),\n styleFn: summaryStyle,\n classFn: summaryClass,\n projection:\n orient === \"top\" || orient === \"bottom\" ? \"horizontal\" : \"vertical\",\n adjustedSize: size,\n margin: { top: 0, bottom: 0, left: 0, right: 0 }\n })\n\n const renderedSummary = summaryInstructionsToMarks(calculatedSummary.marks)\n\n let points\n\n if (decoratedSummaryType.showPoints === true) {\n const mappedPoints = marginalPointMapper(\n orient,\n summaryWidth,\n forSummaryData\n )\n\n points = mappedPoints.map((d, i) => (\n <circle\n key={`axis-summary-point-${i}`}\n cx={d[0]}\n cy={d[1]}\n r={decoratedSummaryType.r || 3}\n style={\n decoratedSummaryType.pointStyle || {\n fill: \"black\",\n fillOpacity: 0.1\n }\n }\n />\n ))\n }\n\n const translation = {\n left: [-margin.left + 2, 0],\n right: [size[0] + 2, 0],\n top: [0, -margin.top + 2],\n bottom: [0, size[1] + 2]\n }\n\n summaryGraphic = (\n <SummaryGraphic\n translation={translation}\n orient={orient}\n decoratedSummaryType={decoratedSummaryType}\n summaryWidth={summaryWidth}\n renderedSummary={renderedSummary}\n points={points}\n />\n )\n }\n\n let axisTitle\n\n const axisTickLabels = axisLabels({\n tickFormat,\n axisParts,\n orient,\n rotate,\n center\n })\n if (label) {\n const labelName: any = label.name || label\n const labelPosition = label.position || {}\n const locationMod = labelPosition.location || \"outside\"\n let anchorMod = (labelPosition.anchor || \"middle\") as \"inherit\" | \"middle\" | \"end\" | \"start\"\n const distance = label.locationDistance || calculatedLabelPosition\n\n const rotateHash = {\n left: -90,\n right: 90,\n top: 0,\n bottom: 0\n }\n\n const rotation = labelPosition.rotation || rotateHash[orient]\n\n const positionHash = {\n left: {\n start: [0, size[1]],\n middle: [0, size[1] / 2],\n end: [0, 0],\n inside: [distance || 15, 0],\n outside: [-(distance || 45), 0]\n },\n right: {\n start: [size[0] + 0, size[1]],\n middle: [size[0] + 0, size[1] / 2],\n end: [size[0] + 0, 0],\n inside: [-(distance || 15), 0],\n outside: [distance || 45, 0]\n },\n top: {\n start: [0, 0],\n middle: [0 + size[0] / 2, 0],\n end: [0 + size[0], 0],\n inside: [0, distance || 15],\n outside: [0, -(distance || 40)]\n },\n bottom: {\n start: [0, size[1]],\n middle: [0 + size[0] / 2, size[1]],\n end: [0 + size[0], size[1]],\n inside: [0, -(distance || 5)],\n outside: [0, distance || 50]\n }\n }\n\n const translation = positionHash[orient][anchorMod]\n const location = positionHash[orient][locationMod]\n\n translation[0] = translation[0] + location[0]\n translation[1] = translation[1] + location[1]\n\n if (anchorMod === \"start\" && orient === \"right\") {\n anchorMod = \"end\"\n } else if (anchorMod === \"end\" && orient === \"right\") {\n anchorMod = \"start\"\n }\n\n axisTitle = (\n <AxisTitle\n className={className}\n translation={translation}\n position={position}\n rotation={rotation}\n labelName={labelName}\n anchorMod={anchorMod}\n />\n )\n }\n\n const axisAriaLabel = `${orient} axis ${\n (axisParts &&\n axisParts.length > 0 &&\n `from ${tickFormat(axisParts[0].value, 0)} to ${tickFormat(\n axisParts[axisParts.length - 1].value,\n axisParts.length - 1\n )}`) ||\n \"without ticks\"\n }`\n\n return (\n <g className={className} aria-label={axisAriaLabel} ref={axisNode}>\n {annotationBrush}\n {axisTickLabels}\n {axisTickLines}\n {baseline === true ? (\n <line\n key=\"baseline\"\n className={`axis-baseline ${className}`}\n stroke=\"black\"\n strokeLinecap=\"square\"\n x1={baselineX}\n x2={baselineX2}\n y1={baselineY}\n y2={baselineY2}\n />\n ) : null}\n {axisTitle}\n {summaryGraphic}\n </g>\n )\n}\n\nexport { marginalPointMapper, formatValue, boundingBoxMax }\n","import * as React from \"react\"\n\nimport { drawAreaConnector } from \"../svg/SvgHelper\"\nimport Axis from \"../Axis\"\nimport { AxisProps } from \"../types/annotationTypes\"\n\nimport {\n boxplotRenderFn,\n contourRenderFn,\n bucketizedRenderingFn,\n ckBinsRenderFn,\n orFrameSummaryRenderer\n} from \"./summaryLayouts\"\nimport {\n axisPieces,\n axisLines,\n baselineGenerator\n} from \"../visualizationLayerBehavior/axis\"\n\nimport {\n MarginType,\n ProjectionTypes,\n accessorType\n} from \"../types/generalTypes\"\n\nimport { scaleLinear, ScaleLinear } from \"d3-scale\"\n\nconst extent = (inputArray) =>\n inputArray.reduce(\n (p, c) => {\n return [Math.min(c, p[0]), Math.max(c, p[1])]\n },\n [Infinity, -Infinity]\n )\n\nexport type TitleType =\n | string\n | Element\n | { title?: string | Element; orient?: string }\n\ntype PieceType = { type: string; innerRadius?: number }\n\ntype SummaryType = { type: string }\n\ntype CalculateMarginTypes = {\n margin?: number | object\n axes?: Array<AxisProps>\n title: TitleType\n oLabel?: boolean | Function | { label?: boolean | Function; orient?: string; padding?: number }\n projection?: ProjectionTypes\n size?: number[]\n}\n\ntype AdjustedPositionSizeTypes = {\n size: Array<number>\n position?: Array<number>\n margin: MarginType\n projection?: ProjectionTypes\n}\n\ntype ORFrameConnectionRendererTypes = {\n type: { type: Function }\n data: { keyedData: Record<string, any>; oExtent: string[] }\n renderMode: Function\n eventListenersGenerator: Function\n styleFn: Function\n classFn: Function\n projection: ProjectionTypes\n canvasRender: Function\n canvasDrawing: Array<object>\n pieceType: PieceType\n}\n\ntype ORFrameAxisGeneratorTypes = {\n projection: ProjectionTypes\n axis?: Array<AxisProps>\n adjustedSize: Array<number>\n size: Array<number>\n rScale: ScaleLinear<number, number>\n rScaleType: ScaleLinear<number, number>\n pieceType: PieceType\n rExtent: Array<number>\n data: Array<object>\n maxColumnValues?: number\n xyData: Array<{ value: number; data: object }>\n margin: MarginType\n thresholds?: number[]\n}\n\nconst findActualTitle = (rawTitle) => {\n let title = null\n let orient = \"top\"\n if (typeof rawTitle === \"string\") {\n title = rawTitle\n } else if (\"title\" in rawTitle) {\n title = rawTitle.title\n orient = rawTitle.orient || \"top\"\n } else {\n title = rawTitle\n }\n\n return { orient, title }\n}\n\nfunction roundToTenth(number: number) {\n return Math.round(number * 10) / 10\n}\n\nexport const circlePath = (cx: number, cy: number, r: number) =>\n `${[\n \"M\",\n roundToTenth(cx - r),\n roundToTenth(cy),\n \"a\",\n r,\n r,\n 0,\n 1,\n 0,\n r * 2,\n 0,\n \"a\",\n r,\n r,\n 0,\n 1,\n 0,\n -(r * 2),\n 0\n ].join(\" \")}Z`\n\nexport const drawMarginPath = ({\n margin,\n size,\n inset = 0\n}: {\n margin: MarginType\n size: Array<number>\n inset: number\n}) => {\n const iSize = [size[0] - inset, size[1] - inset]\n return `M0,0 h${size[0]} v${size[1]} h-${size[0]}Z M${margin.left - inset},${\n margin.top - inset\n } v${size[1] + inset * 2 - margin.top - margin.bottom} h${\n iSize[0] + inset * 3 - margin.left - margin.right\n } v-${iSize[1] + inset * 3 - margin.top - margin.bottom}Z`\n}\n\nexport const calculateMargin = ({\n margin,\n axes,\n title: rawTitle,\n oLabel,\n projection,\n size\n}: CalculateMarginTypes): MarginType => {\n if (margin !== undefined) {\n if (typeof margin === \"function\") {\n margin = margin({ size })\n }\n if (typeof margin !== \"object\") {\n return { top: margin, bottom: margin, left: margin, right: margin }\n } else if (typeof margin === \"object\") {\n return Object.assign({ top: 0, bottom: 0, left: 0, right: 0 }, margin)\n }\n }\n const finalMargin = { top: 0, bottom: 0, left: 0, right: 0 }\n\n let orient = \"left\"\n\n if (axes && projection !== \"radial\") {\n axes.forEach((axisObj) => {\n const axisObjAdditionMargin = axisObj.label ? 60 : 50\n orient = axisObj.orient\n finalMargin[orient] = axisObjAdditionMargin\n })\n }\n\n const { title, orient: titleOrient } = findActualTitle(rawTitle)\n\n if (title && !(typeof title === \"string\" && title.length === 0)) {\n finalMargin[titleOrient] += 40\n }\n\n if (oLabel && projection !== \"radial\") {\n if (orient === \"bottom\" || orient === \"top\") {\n finalMargin.left += 50\n } else {\n finalMargin.bottom += 50\n }\n }\n return finalMargin\n}\n\ntype ObjectifyType = {\n type?: string | Function\n}\n\nexport function objectifyType(\n type?: string | Function | ObjectifyType\n): ObjectifyType {\n if (type instanceof Function || typeof type === \"string\") {\n return { type: type }\n } else if (type === undefined) {\n return {}\n }\n return type\n}\n\nexport function generateOrdinalFrameEventListeners(\n customHoverBehavior: Function,\n customClickBehavior: Function\n) {\n let eventListenersGenerator: (\n d?: object,\n i?: number\n ) => {\n onMouseEnter?: (e) => void\n onMouseLeave?: (e) => void\n onClick?: (e) => void\n } = () => ({})\n\n if (customHoverBehavior || customClickBehavior) {\n eventListenersGenerator = (d: object, i: number) => ({\n onMouseEnter: customHoverBehavior\n ? (e): void => customHoverBehavior(d, i, e)\n : undefined,\n onMouseLeave: customHoverBehavior\n ? (e): void => customHoverBehavior(undefined, undefined, e)\n : undefined,\n onClick: customClickBehavior\n ? (e): void => customClickBehavior(d, i, e)\n : undefined\n })\n }\n return eventListenersGenerator\n}\n\nexport function keyAndObjectifyBarData({\n data,\n renderKey = (d?: object | number, i?: number) => i,\n oAccessor,\n rAccessor: baseRAccessor,\n originalRAccessor,\n originalOAccessor,\n multiAxis = false\n}: {\n data: Array<object | number>\n renderKey: Function\n oAccessor: Array<Function>\n rAccessor: Array<(d: number | object, i?: number) => number>\n multiAxis?: boolean\n originalOAccessor: Array<string | Function>\n originalRAccessor: Array<string | Function>\n}): { allData: Array<object>; multiExtents?: Array<Array<number>> } {\n let rAccessor\n let multiExtents\n if (multiAxis && baseRAccessor.length > 1) {\n let minNegative = Infinity\n multiExtents = baseRAccessor.map((accessor) => {\n const basicExtent = extent(data.map(accessor))\n minNegative = Math.min(basicExtent[0] / basicExtent[1], minNegative)\n return basicExtent\n })\n const rScales = multiExtents.map((ext) => {\n let range = [0, 1]\n let adjustedExtent = ext\n\n if (ext[0] < 0 && ext[1] > 0) {\n range[0] = minNegative\n adjustedExtent[0] = adjustedExtent[1] * minNegative\n } else if (ext[0] < 0 && ext[1] < 0) {\n adjustedExtent[1] = 0\n range = [-1, 0]\n } else {\n adjustedExtent[0] = 0\n }\n return scaleLinear().domain(ext).range(range)\n })\n rAccessor = rScales.map((scale, i) => (d) => {\n return scale(baseRAccessor[i](d))\n })\n } else {\n rAccessor = baseRAccessor\n }\n const decoratedData: {\n value: number\n renderKey: string\n data: object\n rIndex: number\n rName: string\n oIndex: number\n oName: string\n column: string\n }[] = []\n oAccessor.forEach((actualOAccessor, oIndex) => {\n rAccessor.forEach((actualRAccessor, rIndex) => {\n ;(data || []).forEach((d) => {\n const baseAppliedKey = renderKey(d, decoratedData.length)\n const appliedKey =\n (baseAppliedKey !== undefined &&\n baseAppliedKey.toString &&\n baseAppliedKey.toString()) ||\n baseAppliedKey\n\n const originalR = originalRAccessor[rIndex]\n const originalO = originalOAccessor[oIndex]\n const rName =\n typeof originalR === \"string\" ? originalR : `function-${rIndex}`\n const oName =\n typeof originalO === \"string\" ? originalO : `function-${oIndex}`\n\n if (typeof d !== \"object\") {\n const expandedData = { value: d, renderKey: appliedKey }\n const value = actualRAccessor(expandedData)\n decoratedData.push({\n data: expandedData,\n value,\n rIndex,\n rName,\n oIndex,\n oName,\n column: appliedKey,\n renderKey: appliedKey\n })\n } else {\n const value = actualRAccessor(d)\n const column = actualOAccessor(d)\n decoratedData.push({\n renderKey: appliedKey,\n data: d,\n rIndex,\n rName,\n oIndex,\n oName,\n value,\n column: column && column.toString ? column.toString() : column\n })\n }\n })\n })\n })\n return { allData: decoratedData, multiExtents }\n}\n\nexport function adjustedPositionSize({\n size = [500, 500],\n position = [0, 0],\n margin,\n projection\n}: AdjustedPositionSizeTypes) {\n const heightAdjust = margin.top + margin.bottom\n const widthAdjust = margin.left + margin.right\n\n const adjustedPosition = [position[0], position[1]]\n let adjustedSize = [size[0] - widthAdjust, size[1] - heightAdjust]\n if (projection === \"radial\") {\n const minSize = Math.min(adjustedSize[0], adjustedSize[1])\n adjustedSize = [minSize, minSize]\n }\n\n return { adjustedPosition, adjustedSize }\n}\n\nexport function generateFrameTitle({\n title: rawTitle = { title: \"\", orient: \"top\" },\n size\n}: {\n title: TitleType\n size: Array<number>\n}) {\n let finalTitle = null\n\n const { title, orient } = findActualTitle(rawTitle)\n\n let x = 0,\n y = 0,\n transform\n switch (orient) {\n case \"top\":\n x = size[0] / 2\n y = 25\n break\n case \"bottom\":\n x = size[0] / 2\n y = size[1] - 25\n break\n case \"left\":\n x = 25\n y = size[1] / 2\n transform = \"rotate(-90)\"\n break\n case \"right\":\n x = size[0] - 25\n y = size[1] / 2\n transform = \"rotate(90)\"\n\n break\n }\n const gTransform = `translate(${x},${y})`\n if (typeof title === \"string\" && title.length > 0) {\n finalTitle = (\n <g transform={gTransform}>\n <text\n className={\"frame-title\"}\n transform={transform}\n style={{ textAnchor: \"middle\", pointerEvents: \"none\" }}\n >\n {title}\n </text>\n </g>\n )\n } else if (title) {\n //assume if defined then its an svg mark of some sort\n finalTitle = <g transform={gTransform}>{title}</g>\n }\n return finalTitle\n}\n\nexport function orFrameConnectionRenderer({\n type,\n data,\n renderMode,\n eventListenersGenerator,\n styleFn,\n classFn,\n projection,\n canvasRender,\n canvasDrawing,\n pieceType\n}: ORFrameConnectionRendererTypes) {\n if (!type.type) {\n return null\n }\n const renderedConnectorMarks = []\n const radarMap = new Map()\n\n const { keyedData, oExtent } = data\n\n if (typeof type.type === \"function\") {\n const connectionRule = type.type\n const keys = oExtent\n\n oExtent.forEach((key, pieceArrayI) => {\n const pieceArray = keyedData[key]\n const nextColumn = keyedData[keys[pieceArrayI + 1]]\n if (nextColumn) {\n const matchArray = nextColumn.map((d, i) =>\n connectionRule({ ...d.piece, ...d.piece.data }, i)\n )\n pieceArray.forEach((piece, pieceI) => {\n const thisConnectionPiece = connectionRule(\n { ...piece.piece, ...piece.piece.data },\n pieceI\n )\n const targetMatch = connectionRule(\n { ...piece.piece, ...piece.piece.data },\n pieceI\n )\n\n const matchingPieceIndex =\n targetMatch !== undefined &&\n targetMatch !== false &&\n matchArray.indexOf(targetMatch)\n if (\n thisConnectionPiece !== undefined &&\n thisConnectionPiece !== null &&\n matchingPieceIndex !== false &&\n matchingPieceIndex !== -1\n ) {\n const matchingPiece = nextColumn[matchingPieceIndex]\n let markD\n if (projection === \"radial\" && pieceType.type === \"point\") {\n if (!radarMap.get(piece)) {\n radarMap.set(piece, [piece])\n }\n const thisRadar = radarMap.get(piece)\n if (thisRadar) {\n thisRadar.push(matchingPiece)\n radarMap.set(matchingPiece, thisRadar)\n radarMap.delete(piece)\n }\n } else {\n const { xy } = piece\n const { xy: mxy } = matchingPiece\n const { x, y, height = 1, width = 1 } = xy\n const {\n x: mx,\n y: my,\n height: mheight = 1,\n width: mwidth = 1\n } = mxy\n if (projection === \"vertical\") {\n markD = drawAreaConnector({\n x1: x + width,\n x2: mx,\n y1: y,\n y2: my,\n sizeX1: 0,\n sizeX2: 0,\n sizeY1: height,\n sizeY2: mheight\n })\n } else if (projection === \"horizontal\") {\n const { value } = piece.piece\n const { value: mvalue } = matchingPiece.piece\n const x1 = value >= 0 ? x - width : piece.piece.bottom - width\n const x2 =\n mvalue >= 0\n ? mx - mwidth\n : matchingPiece.piece.bottom - mwidth\n markD = drawAreaConnector({\n x1,\n x2,\n y1: y + height,\n y2: my,\n sizeX1: width,\n sizeX2: mwidth,\n sizeY1: 0,\n sizeY2: 0\n })\n } else if (projection === \"radial\") {\n markD = drawAreaConnector({\n x1: x,\n x2: mx,\n y1: y + height,\n y2: my,\n sizeX1: width,\n sizeX2: mwidth,\n sizeY1: 0,\n sizeY2: 0\n })\n }\n const renderValue = renderMode && renderMode(piece.piece, pieceI)\n const source = { ...piece.piece.data, ...piece.piece.data }\n const target = {\n ...matchingPiece.piece,\n ...matchingPiece.piece.data\n }\n const calculatedStyle = styleFn({\n source,\n target\n })\n\n const eventListeners = eventListenersGenerator(\n { source, target },\n pieceI\n )\n if (canvasRender && canvasRender(piece.piece) === true) {\n const canvasConnector = {\n baseClass: \"xyframe-line\",\n tx: 0,\n ty: 0,\n d: {\n source,\n target\n },\n markProps: { d: markD, markType: \"path\" },\n styleFn: styleFn,\n renderFn: renderMode,\n classFn\n }\n canvasDrawing.push(canvasConnector)\n } else {\n renderedConnectorMarks.push(\n <path\n {...eventListeners}\n d={markD}\n className={classFn ? classFn(piece.piece.data, pieceI) : \"\"}\n key={`connector${piece.piece.renderKey}`}\n {...calculatedStyle}\n style={calculatedStyle}\n />\n )\n }\n }\n }\n })\n }\n })\n\n if (radarMap.size > 0) {\n for (const ring of radarMap.values()) {\n const ringPiece = { ...ring[0].piece, ...ring[0].piece.data }\n const markD = `M${ring.map((d) => `${d.xy.x},${d.xy.y}`).join(\"L\")}Z`\n if (canvasRender && canvasRender(ringPiece)) {\n const canvasRadar = {\n baseClass: \"ordinal-radar\",\n tx: 0,\n ty: 0,\n d: {\n source: ringPiece\n },\n markProps: { d: markD, markType: \"path\" },\n styleFn: styleFn,\n renderFn: renderMode,\n classFn\n }\n canvasDrawing.push(canvasRadar)\n } else {\n const style = styleFn({\n source: ringPiece\n })\n renderedConnectorMarks.push(\n <path\n d={markD}\n className={classFn ? classFn(ringPiece) : \"\"}\n key={`ordinal-ring-${ringPiece.renderKey}`}\n {...style}\n style={style}\n />\n )\n }\n }\n }\n } else if (type.type) {\n console.error(\n `Invalid connectorType - Must be a function that takes a data point and determines if it is connected to a data point in the next column`\n )\n }\n return renderedConnectorMarks\n}\n\nexport const orFrameAxisGenerator = ({\n projection,\n axis,\n adjustedSize,\n size,\n rScale,\n rScaleType,\n pieceType,\n rExtent,\n data,\n maxColumnValues = 1,\n xyData,\n margin,\n thresholds\n}: ORFrameAxisGeneratorTypes) => {\n if (!axis) return { axis: undefined, axesTickLines: undefined }\n let generatedAxis: Array<JSX.Element>, axesTickLines: Array<Object>\n if (projection !== \"radial\" && axis) {\n axesTickLines = []\n const axisPosition = [0, 0]\n\n generatedAxis = axis.map((d, i) => {\n let axisClassname = d.className || \"\"\n let tickValues\n const axisDomain = d.extentOverride ? d.extentOverride : rScale.domain()\n\n const leftRight = [\"left\", \"right\"]\n\n const axisScale =\n (leftRight.indexOf(d.orient) === -1 && projection !== \"vertical\") ||\n (leftRight.indexOf(d.orient) !== -1 && projection !== \"horizontal\")\n ? rScaleType.domain(axisDomain)\n : rScaleType.domain([0, maxColumnValues])\n\n const orient = d.orient\n const axisRange =\n (leftRight.indexOf(d.orient) === -1 && projection !== \"vertical\") ||\n (leftRight.indexOf(d.orient) !== -1 && projection !== \"horizontal\")\n ? rScale.range()\n : [0, projection === \"vertical\" ? adjustedSize[0] : adjustedSize[1]]\n\n if (orient === \"right\") {\n axisScale.range(axisRange.reverse())\n axisClassname += \" right y\"\n } else if (orient === \"left\") {\n axisClassname += \" left y\"\n axisScale.range(axisRange.reverse())\n } else if (orient === \"top\") {\n axisClassname += \" top x\"\n axisScale.range(axisRange)\n } else if (orient === \"bottom\") {\n axisClassname += \" bottom x\"\n axisScale.range(axisRange)\n }\n\n if (d.tickValues && Array.isArray(d.tickValues)) {\n tickValues = d.tickValues\n } else if (d.tickValues instanceof Function) {\n //otherwise assume a function\n tickValues = d.tickValues(data, size, rScale)\n } else if (!d.tickValues && thresholds) {\n tickValues = thresholds.map((d) => rScale.invert(d))\n }\n const axisParts = axisPieces({\n padding: d.padding,\n tickValues,\n scale: axisScale,\n ticks: d.ticks,\n orient,\n size: adjustedSize,\n footer: d.footer,\n tickSize: d.tickSize,\n jaggedBase: d.jaggedBase\n })\n const axisTickLines = axisLines({\n className: d.className,\n axisParts,\n orient,\n tickLineGenerator: d.tickLineGenerator,\n jaggedBase: d.jaggedBase,\n scale: axisScale\n })\n\n axesTickLines.push(axisTickLines)\n if (d.baseline === \"under\") {\n axesTickLines.push(\n baselineGenerator(d.orient, adjustedSize, d.className)\n )\n }\n\n const marginalSummaryType =\n typeof d.marginalSummaryType === \"string\"\n ? { type: d.marginalSummaryType }\n : d.marginalSummaryType\n\n return (\n <Axis\n {...d}\n key={d.key || `orframe-axis-${i}`}\n axisParts={axisParts}\n orient={orient}\n size={adjustedSize}\n position={axisPosition}\n tickValues={tickValues}\n scale={axisScale}\n className={axisClassname}\n marginalSummaryType={marginalSummaryType}\n margin={margin}\n xyPoints={xyData.map((d) => ({\n x: projection === \"vertical\" ? 0 : d.value,\n y: projection === \"vertical\" ? d.value : 0,\n data: d.data\n }))}\n />\n )\n })\n } else if (projection === \"radial\" && axis) {\n const { innerRadius = 0 } = pieceType\n\n const ticks = []\n axis.forEach((axisObj) => {\n const {\n tickValues: baseTickValues = rScale.ticks(\n Math.max(2, (adjustedSize[0] / 2 - innerRadius) / 50)\n ),\n label,\n tickFormat = (d) => d\n } = axisObj\n\n const tickScale = rScaleType\n .domain(rExtent)\n .range([innerRadius, adjustedSize[0] / 2])\n\n const tickValues =\n baseTickValues instanceof Function\n ? baseTickValues({\n orient: axisObj.orient\n })\n : baseTickValues\n tickValues.forEach((t, i) => {\n const tickSize = tickScale(t)\n if (!(innerRadius === 0 && t === 0)) {\n let axisLabel\n let ref = \"\"\n if (label && i === tickValues.length - 1) {\n const labelSettings =\n typeof label === \"string\"\n ? { name: label, locationDistance: 15 }\n : label\n const { locationDistance = 15 } = labelSettings\n ref = `${Math.random().toString()} `\n axisLabel = (\n <g\n className=\"axis-label radial\"\n transform={`translate(0,${locationDistance})`}\n >\n <text textAnchor=\"middle\">\n <textPath\n startOffset={tickSize * Math.PI * 0.5}\n xlinkHref={`#${ref}`}\n >\n {label.name}\n </textPath>\n </text>\n </g>\n )\n }\n ticks.push(\n <g\n key={`orframe-radial-axis-element-${t}`}\n className=\"axis axis-label axis-tick radial\"\n transform={`translate(0,0)`}\n >\n <path\n id={ref}\n d={circlePath(0, 0, tickSize)}\n r={tickSize}\n stroke=\"gray\"\n fill=\"none\"\n />\n <text y={-tickSize + 5} textAnchor=\"middle\">\n {tickFormat(t)}\n </text>\n {axisLabel}\n </g>\n )\n }\n return undefined\n })\n })\n\n generatedAxis = [\n <g\n key={axis[0].key || `orframe-radial-axis-container`}\n className=\"axis-labels\"\n transform={`translate(${adjustedSize[0] / 2},${adjustedSize[1] / 2})`}\n >\n {ticks}\n </g>\n ]\n }\n\n return { axis: generatedAxis, axesTickLines }\n}\n\nexport const canvasEvent = (canvasContext, overlayRegions, canvasMap, e) => {\n const interactionContext = canvasContext.getContext(\"2d\", { willReadFrequently: true })\n const hoverPoint = interactionContext.getImageData(e.offsetX, e.offsetY, 1, 1)\n\n const mostCommonRGB = `rgba(${hoverPoint.data[0]},${hoverPoint.data[1]},${hoverPoint.data[2]},255)`\n\n let overlay: React.ReactElement = overlayRegions[canvasMap.get(mostCommonRGB)]\n\n if (!overlay) {\n const hoverArea = interactionContext.getImageData(\n e.offsetX - 2,\n e.offsetY - 2,\n 5,\n 5\n )\n let x = 0\n\n while (!overlay && x < 100) {\n overlay =\n overlayRegions[\n canvasMap.get(\n `rgba(${hoverArea.data[x]},${hoverArea.data[x + 1]},${\n hoverArea.data[x + 2]\n },255)`\n )\n ]\n x += 4\n }\n }\n\n return overlay\n}\n","import * as React from \"react\"\nimport { useRef, useLayoutEffect } from \"react\"\n\nimport { canvasEvent } from \"../svg/frameFunctions\"\n\nimport { MarginType } from \"../types/generalTypes\"\n\ntype InteractionCanvasProps = {\n height: number\n width: number\n overlayRegions: Array<{\n props: { d?: string; children: Array<{ props: { d?: string } }> }\n }>\n margin: MarginType\n voronoiHover: Function\n}\n\nexport default React.memo(function InteractionCanvas({\n width,\n height,\n overlayRegions,\n margin,\n voronoiHover\n}: InteractionCanvasProps) {\n let canvasRef = useRef<HTMLCanvasElement>()\n\n useLayoutEffect(() => {\n renderInteractionCanvas(\n canvasRef.current,\n voronoiHover,\n height,\n width,\n overlayRegions,\n margin\n )\n }, [width, height, overlayRegions])\n\n return (\n <canvas\n className=\"frame-canvas-interaction\"\n ref={(canvas: HTMLCanvasElement) => {\n if (canvas != null && canvasRef.current !== canvas) {\n canvasRef.current = canvas\n renderInteractionCanvas(\n canvas,\n voronoiHover,\n height,\n width,\n overlayRegions,\n margin\n )\n }\n }}\n style={{\n position: \"absolute\",\n left: `0px`,\n top: `0px`,\n imageRendering: \"pixelated\",\n pointerEvents: \"all\",\n opacity: 0\n }}\n width={width}\n height={height}\n />\n )\n})\n\nfunction renderInteractionCanvas(\n interactionContext: HTMLCanvasElement,\n voronoiHover: Function,\n height: number,\n width: number,\n overlayRegions: Array<{\n props: { d?: string; children: Array<{ props: { d?: string } }> }\n }>,\n margin: MarginType\n) {\n const canvasMap: Map<string, number> = new Map()\n if (interactionContext === null || !overlayRegions) return\n\n const boundCanvasEvent = canvasEvent.bind(\n null,\n interactionContext,\n overlayRegions,\n canvasMap\n )\n interactionContext.onmousemove = (e) => {\n const overlay = boundCanvasEvent(e)\n\n if (overlay?.props?.onMouseEnter) {\n overlay?.props?.onMouseEnter()\n } else if (overlay?.props?.children?.[0]) {\n overlay.props.children[0].props.onMouseEnter()\n } else {\n voronoiHover(null)\n }\n }\n interactionContext.onmouseout = () => {\n voronoiHover(null)\n }\n\n interactionContext.onclick = (e) => {\n const overlay = boundCanvasEvent(e)\n if (overlay?.props?.onClick) {\n overlay?.props?.onClick()\n } else if (overlay?.props?.children?.[0]) {\n overlay.props.children[0].props.onClick(e)\n }\n }\n interactionContext.ondblclick = (e) => {\n const overlay = boundCanvasEvent(e)\n if (overlay?.props?.onDoubleClick) {\n overlay?.props?.onDoubleClick()\n } else if (overlay?.props?.children?.[0]) {\n overlay.props.children[0].props.onDoubleClick(e)\n }\n }\n\n const interactionContext2D = interactionContext.getContext(\"2d\", { willReadFrequently: true })\n\n interactionContext2D.imageSmoothingEnabled = false\n interactionContext2D.setTransform(1, 0, 0, 1, margin.left, margin.top)\n interactionContext2D.clearRect(-margin.left, -margin.top, width, height)\n\n interactionContext2D.lineWidth = 1\n\n overlayRegions.forEach((overlay, oi) => {\n const interactionRGBA = `rgba(${Math.floor(\n Math.random() * 255\n )},${Math.floor(Math.random() * 255)},${Math.floor(\n Math.random() * 255\n )},255)`\n canvasMap.set(interactionRGBA, oi)\n\n const props = overlay.props as {\n d?: string\n children?: Array<{ props: { d?: string; transform?: string } }>\n transform?: string\n markType?: string\n x?: number\n y?: number\n width?: number\n height?: number\n }\n\n interactionContext2D.fillStyle = interactionRGBA\n interactionContext2D.strokeStyle = interactionRGBA\n\n if (props.d || props.children?.[0]?.props?.d) {\n const overlayD = props.d || props.children[0].props.d\n const transform =\n props.transform ||\n props.children?.[0]?.props?.transform ||\n \"translate(0,0)\"\n const [x, y] = transform\n .replace(\"translate(\", \"\")\n .replace(\")\", \"\")\n .split(\",\")\n .map(Number)\n\n interactionContext2D.translate(x, y)\n const p = new Path2D(overlayD)\n interactionContext2D.stroke(p)\n interactionContext2D.fill(p)\n interactionContext2D.translate(-x, -y)\n } else if (props.markType === \"rect\") {\n interactionContext2D.fillRect(props.x, props.y, props.width, props.height)\n interactionContext2D.strokeRect(\n props.x,\n props.y,\n props.width,\n props.height\n )\n }\n })\n}\n","\"use client\"\nimport * as React from \"react\"\nimport { useState, useEffect } from \"react\"\nimport { brushX, brushY, brush } from \"d3-brush\"\nimport { select } from \"d3-selection\"\n\n// components\nimport Brush from \"./Brush\"\n\nimport {\n Interactivity,\n InteractionLayerProps,\n BaseColumnType\n} from \"./types/interactionTypes\"\n\nimport {\n brushing,\n brushEnd,\n brushStart,\n calculateOverlay\n} from \"./processing/InteractionItems\"\nimport InteractionCanvas from \"./interactionLayerBehavior/InteractionCanvas\"\nimport { useTooltip } from \"./store/TooltipStore\"\n\nconst generateOMappingFn =\n (projectedColumns) =>\n (d): null | any => {\n if (d) {\n const columnValues = Object.values(projectedColumns)\n\n const foundColumns = columnValues.filter(\n (c: { x: number; width: number }) => {\n return d[1] >= c.x && d[0] <= c.x + c.width\n }\n )\n return foundColumns\n }\n return null\n }\n\nconst generateOEndMappingFn =\n (projectedColumns) =>\n (d, event): null | Array<BaseColumnType> => {\n if (\n d &&\n event.sourceEvent &&\n event.sourceEvent.path &&\n event.sourceEvent.path[1] &&\n event.sourceEvent.path[1].classList.contains(\"xybrush\") &&\n event.target.move\n ) {\n const columnValues: BaseColumnType[] = Object.values(projectedColumns)\n const foundColumns: BaseColumnType[] = columnValues.filter(\n (c: BaseColumnType) => d[1] >= c.x && d[0] <= c.x + c.width\n )\n\n const firstColumn: { x: number; width: number } = foundColumns[0] || {\n x: 0,\n width: 0\n }\n\n const lastColumn: { x: number; width: number } = foundColumns[\n foundColumns.length - 1\n ] || {\n x: 0,\n width: 0\n }\n\n const columnPosition = [\n firstColumn.x + Math.min(5, firstColumn.width / 10),\n lastColumn.x + lastColumn.width - Math.min(5, lastColumn.width / 10)\n ]\n\n select(event.sourceEvent.path[1])\n .transition(750)\n .call(event.target.move, columnPosition)\n\n return foundColumns\n }\n\n return null\n }\n\nconst createBrush = (\n interaction: Interactivity,\n props: InteractionLayerProps\n) => {\n let semioticBrush, mappingFn, selectedExtent, endMappingFn\n\n const { xScale, yScale, size, renderPipeline } = props\n\n const brushData = {}\n\n Object.entries(renderPipeline).forEach(([key, value]) => {\n if (value.data && value.data.length > 0) {\n brushData[key] = value.data\n }\n })\n\n const { projection, projectedColumns } = interaction\n\n const actualBrush =\n interaction.brush === \"oBrush\"\n ? projection === \"horizontal\"\n ? \"yBrush\"\n : \"xBrush\"\n : interaction.brush\n\n let { extent } = interaction\n\n if (!extent) {\n extent =\n actualBrush === \"xyBrush\"\n ? [\n [xScale.invert(0), yScale.invert(0)],\n [xScale.invert(size[0]), yScale.invert(size[1])]\n ]\n : actualBrush === \"xBrush\"\n ? [xScale.invert(0), xScale.invert(size[0])]\n : [yScale.invert(0), yScale.invert(size[1])]\n }\n\n if (extent.indexOf && extent.indexOf(undefined) !== -1) {\n return <g />\n }\n\n if (actualBrush === \"xBrush\") {\n const castExtent = [...extent] as number[]\n mappingFn = (d): null | Array<number> =>\n !d ? null : [xScale.invert(d[0]), xScale.invert(d[1])]\n semioticBrush = brushX()\n selectedExtent = castExtent.map((d) => xScale(d)) as number[]\n endMappingFn = mappingFn\n } else if (actualBrush === \"yBrush\") {\n const castExtent = [...extent] as number[]\n\n mappingFn = (d): null | Array<number> =>\n !d\n ? null\n : [yScale.invert(d[0]), yScale.invert(d[1])].sort((a, b) => a - b)\n semioticBrush = brushY()\n selectedExtent = castExtent.map((d) => yScale(d)).sort((a, b) => a - b)\n endMappingFn = mappingFn\n } else {\n const typedExtent = extent as Array<number[]>\n const castExtent = [...typedExtent.map((ee) => [...ee])] as number[][]\n if (\n castExtent.indexOf(undefined) !== -1 ||\n castExtent[0].indexOf(undefined) !== -1 ||\n castExtent[1].indexOf(undefined) !== -1\n ) {\n return <g />\n }\n\n semioticBrush = brush()\n mappingFn = (d): null | Array<Array<number>> => {\n if (!d) return null\n const yValues = [yScale.invert(d[0][1]), yScale.invert(d[1][1])].sort(\n (a, b) => a - b\n )\n\n return [\n [xScale.invert(d[0][0]), yValues[0]],\n [xScale.invert(d[1][0]), yValues[1]]\n ]\n }\n\n const yValues = [yScale(extent[0][1]), yScale(extent[1][1])].sort(\n (a, b) => a - b\n )\n\n selectedExtent = castExtent.map((d, i) => [xScale(d[0]), yValues[i]])\n\n endMappingFn = mappingFn\n }\n\n if (interaction.brush === \"oBrush\") {\n selectedExtent = null\n if (interaction.extent) {\n const [leftExtent, rightExtent] = interaction.extent\n if (\n (typeof leftExtent === \"string\" || typeof leftExtent === \"number\") &&\n (typeof rightExtent === \"string\" || typeof rightExtent === \"number\")\n ) {\n selectedExtent = [\n projectedColumns[leftExtent].x,\n projectedColumns[rightExtent].x + projectedColumns[rightExtent].width\n ]\n }\n }\n\n mappingFn = generateOMappingFn(projectedColumns)\n endMappingFn = generateOEndMappingFn(projectedColumns)\n }\n\n semioticBrush\n .extent([\n [0, 0],\n [size[0], size[1]]\n ])\n .on(\"start\", (event) => {\n brushStart(\n mappingFn(event.selection),\n undefined,\n brushData,\n undefined,\n interaction\n )\n })\n .on(\"brush\", (event) => {\n brushing(\n mappingFn(event.selection),\n undefined,\n brushData,\n undefined,\n interaction\n )\n })\n .on(\"end\", (event) => {\n brushEnd(\n endMappingFn(event.selection, event),\n undefined,\n brushData,\n undefined,\n interaction\n )\n })\n\n return (\n <g className=\"brush\">\n <Brush\n selectedExtent={selectedExtent}\n extent={extent}\n svgBrush={semioticBrush}\n />\n </g>\n )\n}\n\nconst createColumnsBrush = (\n interaction: Interactivity,\n props: InteractionLayerProps\n) => {\n const { projection, rScale, oColumns, renderPipeline } = props\n\n if (!projection || !rScale || !oColumns) return\n\n const brushData = {}\n Object.entries(renderPipeline).forEach(([key, value]) => {\n if (value.data && value.data.length > 0) {\n brushData[key] = value.data\n }\n })\n\n let semioticBrush, mappingFn\n\n const rScaleReverse = rScale\n .copy()\n .domain(rScale.domain())\n .range(rScale.domain().reverse())\n\n if (projection && projection === \"horizontal\") {\n mappingFn = (d): null | Array<number> =>\n !d ? null : [rScale.invert(d[0]), rScale.invert(d[1])]\n } else\n mappingFn = (d): null | Array<number> => {\n return !d\n ? null\n : [\n rScaleReverse(rScale.invert(d[1])),\n rScaleReverse(rScale.invert(d[0]))\n ]\n }\n\n const rRange = rScale.range()\n\n const columnHash = oColumns\n let brushPosition, selectedExtent\n const brushes: Array<React.ReactNode> = Object.keys(columnHash).map((c) => {\n if (projection && projection === \"horizontal\") {\n selectedExtent = interaction.extent[c]\n ? interaction.extent[c].map((d) => rScale(d))\n : interaction.startEmpty\n ? null\n : rRange\n\n brushPosition = [0, columnHash[c].x]\n semioticBrush = brushX()\n semioticBrush\n .extent([\n [rRange[0], 0],\n [rRange[1], columnHash[c].width]\n ])\n .on(\"start\", (event) => {\n brushStart(\n mappingFn(event.selection),\n c,\n brushData,\n columnHash[c],\n interaction\n )\n })\n .on(\"brush\", (event) => {\n brushing(\n mappingFn(event.selection),\n c,\n brushData,\n columnHash[c],\n interaction\n )\n })\n .on(\"end\", (event) => {\n brushEnd(\n mappingFn(event.selection),\n c,\n brushData,\n columnHash[c],\n interaction\n )\n })\n } else {\n selectedExtent = interaction.extent[c]\n ? interaction.extent[c].map((d) => rRange[1] - rScale(d)).reverse()\n : interaction.startEmpty\n ? null\n : rRange\n brushPosition = [columnHash[c].x, 0]\n semioticBrush = brushY()\n semioticBrush\n .extent([\n [0, rRange[0]],\n [columnHash[c].width, rRange[1]]\n ])\n .on(\"start\", (event) => {\n brushStart(\n mappingFn(event.selection),\n c,\n brushData,\n columnHash[c],\n interaction\n )\n })\n .on(\"brush\", (event) => {\n brushing(\n mappingFn(event.selection),\n c,\n brushData,\n columnHash[c],\n interaction\n )\n })\n .on(\"end\", (event) => {\n brushEnd(\n mappingFn(event.selection),\n c,\n brushData,\n columnHash[c],\n interaction\n )\n })\n }\n\n return (\n <g key={`column-brush-${c}`} className=\"brush\">\n <Brush\n key={`orbrush${c}`}\n selectedExtent={selectedExtent}\n svgBrush={semioticBrush}\n position={brushPosition}\n />\n </g>\n )\n })\n return brushes\n}\n\nexport default function InteractionLayer(props: InteractionLayerProps) {\n let semioticBrush = null\n const {\n interaction,\n svgSize = [500, 500],\n margin = { left: 0, right: 0, top: 0, bottom: 0 },\n overlay,\n points,\n xScale,\n yScale,\n hoverAnnotation,\n customClickBehavior,\n customDoubleClickBehavior,\n customHoverBehavior,\n disableCanvasInteraction,\n canvasRendering\n // voronoiHover\n } = props\n let { enabled } = props\n\n let changeTooltip = useTooltip((state) => state.changeTooltip)\n\n const voronoiHover = (d) => {\n changeTooltip(d)\n }\n\n const [overlayRegions, changeOverlayRegions] = useState([])\n const [interactionCanvas, changeInteractionCanvas] = useState(null)\n useEffect(() => {\n let nextOverlay, interactionCanvas\n\n if (disableCanvasInteraction || !overlayRegions) {\n nextOverlay = null\n interactionCanvas = null\n } else {\n nextOverlay = calculateOverlay(props, voronoiHover)\n if (canvasRendering) {\n interactionCanvas = (\n <InteractionCanvas\n height={svgSize[1]}\n width={svgSize[0]}\n overlayRegions={nextOverlay}\n margin={margin}\n voronoiHover={voronoiHover}\n />\n )\n }\n }\n\n changeOverlayRegions(nextOverlay)\n changeInteractionCanvas(interactionCanvas)\n }, [\n overlay,\n points,\n xScale,\n yScale,\n !!hoverAnnotation,\n !!customClickBehavior,\n !!customDoubleClickBehavior,\n !!customHoverBehavior\n ])\n\n if (interaction && interaction.brush) {\n enabled = true\n semioticBrush = createBrush(interaction, props)\n }\n\n if (interaction && interaction.columnsBrush) {\n enabled = true\n semioticBrush = createColumnsBrush(interaction, props)\n }\n\n if (!overlayRegions && !semioticBrush) {\n return null\n }\n\n return (\n <div\n className=\"interaction-layer\"\n data-testid=\"interaction-layer\"\n style={{\n position: \"absolute\",\n background: \"none\",\n pointerEvents: \"none\",\n height: \"100%\",\n width: \"100%\",\n overflow: \"hidden\"\n }}\n >\n {interactionCanvas || (\n <svg\n height={svgSize[1]}\n width={svgSize[0]}\n style={{ background: \"none\", pointerEvents: \"none\" }}\n >\n <g\n className=\"interaction-overlay\"\n transform={`translate(${margin.left},${margin.top})`}\n style={{ pointerEvents: enabled ? \"all\" : \"none\" }}\n >\n <g className=\"interaction-regions\">{overlayRegions}</g>\n {semioticBrush}\n </g>\n </svg>\n )}\n </div>\n )\n}\n","type BatchOptions = { signal?: AbortSignal; timeFrameMs?: number }\n\nconst MAX_TIMEFRAME_MS = 30\n\nexport async function batchWork(\n performWork: () => boolean,\n { signal, timeFrameMs = MAX_TIMEFRAME_MS }: BatchOptions = {}\n): Promise<void> {\n return new Promise((resolve, reject) => {\n requestAnimationFrame(function loop() {\n // FIXME the `timestamp` value can be received from rAF,\n // but the value is not in sync with performance.now (in tests only)\n let timestamp = performance.now()\n let elapsed = 0\n let shouldContinue = false\n let isAborted = signal != null && signal.aborted\n\n try {\n if (isAborted) {\n return resolve()\n }\n\n do {\n shouldContinue = performWork()\n elapsed = performance.now() - timestamp\n isAborted = signal != null && signal.aborted\n } while (!isAborted && shouldContinue && elapsed < timeFrameMs)\n\n if (!isAborted && shouldContinue) {\n requestAnimationFrame(loop)\n } else {\n resolve()\n }\n } catch (error) {\n reject(error)\n }\n })\n })\n}\n","\"use client\"\nimport * as React from \"react\"\nimport { RefObject, useCallback, useEffect, useMemo, useState } from \"react\"\n\nimport {\n MarginType,\n RenderPipelineType,\n VizLayerTypes,\n RoughType,\n TransitionConfig\n} from \"./types/generalTypes\"\n\nimport { ContextType } from \"./types/canvasTypes\"\nimport { batchWork } from \"./batchWork\"\nimport { useTooltip } from \"./store/TooltipStore\"\n\ntype Props = {\n axes?: Array<React.ReactNode>\n frameKey?: string\n xScale: Function\n yScale: Function\n dataVersion?: string\n canvasContext?: RefObject<ContextType>\n width: number\n height: number\n margin: MarginType\n canvasPostProcess?: Function\n title?: JSX.Element | string\n ariaTitle?: string\n matte?: React.ReactNode\n matteClip?: boolean\n renderPipeline: RenderPipelineType\n projectedCoordinateNames: object\n position: Array<number>\n disableContext?: boolean\n renderOrder: ReadonlyArray<VizLayerTypes>\n sketchyRenderingEngine?: RoughType\n axesTickLines?: React.ReactNode\n frameRenderOrder: Array<string>\n additionalVizElements: object\n disableProgressiveRendering?: boolean\n transition?: boolean | TransitionConfig\n}\n\ntype State = {\n canvasDrawing: Array<{\n tx: number\n ty: number\n i: number\n d: { data: object }\n styleFn: Function\n markProps: {\n renderMode?: object\n markType: string\n width: number\n height: number\n x: number\n y: number\n r: number\n rx: number\n d: string\n }\n renderFn?: Function\n }>\n dataVersion?: string\n renderedElements: Array<React.ReactNode>\n focusedPieceIndex: number | null\n focusedVisualizationGroup?: string\n piecesGroup: object\n props: Props\n handleKeyDown: Function\n}\n\nconst updateVisualizationLayer = (\n props: Props,\n handleKeyDown: Function,\n voronoiHover: Function\n) => {\n const {\n xScale,\n yScale,\n dataVersion,\n projectedCoordinateNames,\n renderPipeline = {},\n renderOrder = [],\n sketchyRenderingEngine,\n transition\n } = props\n\n const canvasDrawing = []\n\n const piecesGroup = {}\n\n const renderedElements = []\n const renderVizKeys: Array<VizLayerTypes> = Object.keys(\n renderPipeline\n ) as VizLayerTypes[]\n const renderKeys = renderOrder.concat(\n renderVizKeys.filter((d) => renderOrder.indexOf(d) === -1)\n )\n\n renderKeys.forEach((k) => {\n const pipe = renderPipeline[k]\n if (\n pipe &&\n ((pipe.data &&\n typeof pipe.data === \"object\" &&\n !Array.isArray(pipe.data)) ||\n (pipe.data && pipe.data.length > 0))\n ) {\n const additionalMarkProps = {\n sketchyGenerator:\n sketchyRenderingEngine && sketchyRenderingEngine.generator,\n \"aria-label\":\n (pipe.ariaLabel && pipe.ariaLabel.items) || \"dataviz-element\",\n role: \"img\",\n tabIndex: -1\n }\n\n const renderedPipe = pipe.behavior({\n xScale,\n yScale,\n canvasDrawing,\n projectedCoordinateNames,\n ...pipe\n })\n\n if (renderedPipe && renderedPipe.length > 0) {\n renderedElements.push(\n <g\n key={k}\n className={k}\n data-testid={k}\n role={\"group\"}\n tabIndex={0}\n {...(transition ? { \"data-semiotic-transition\": \"\" } : undefined)}\n aria-label={\n (pipe.ariaLabel &&\n `${renderedPipe.length} ${pipe.ariaLabel.items}s in a ${pipe.ariaLabel.chart}`) ||\n k\n }\n onKeyDown={(e) => handleKeyDown({ e, k, props, piecesGroup })}\n onBlur={() => {\n voronoiHover(undefined)\n }}\n ref={(thisNode) =>\n thisNode && (piecesGroup[k] = thisNode.childNodes)\n }\n >\n {renderedPipe}\n </g>\n )\n }\n }\n })\n\n return {\n renderedElements,\n dataVersion,\n canvasDrawing,\n piecesGroup\n }\n}\n\nconst handleKeyDown =\n ({\n focusedPieceIndex,\n changeFocusedPieceIndex,\n changeFocusedVisualizationGroup\n }) =>\n ({ e: { keyCode }, vizgroup, props, piecesGroup }) => {\n // If enter, focus on the first element\n\n const { renderPipeline, voronoiHover } = props\n const pushed = keyCode\n if (pushed !== 37 && pushed !== 39 && pushed !== 13) return\n\n let newPieceIndex = 0\n const vizGroupSetting: { focusedVisualizationGroup?: string } = {}\n\n // If a user pressed enter, highlight the first one\n // Let a user move up and down in stacked bar by getting keys of bars?\n\n if (focusedPieceIndex === null || pushed === 13) {\n vizGroupSetting.focusedVisualizationGroup = vizgroup\n } else if (pushed === 37) {\n newPieceIndex = focusedPieceIndex - 1\n } else if (pushed === 39) {\n newPieceIndex = focusedPieceIndex + 1\n }\n\n newPieceIndex =\n newPieceIndex < 0\n ? piecesGroup[vizgroup].length + newPieceIndex\n : newPieceIndex % piecesGroup[vizgroup].length\n\n const piece = renderPipeline[vizgroup].accessibleTransform(\n renderPipeline[vizgroup].data,\n newPieceIndex,\n piecesGroup[vizgroup][newPieceIndex]\n )\n\n voronoiHover(piece)\n\n changeFocusedPieceIndex(newPieceIndex)\n changeFocusedVisualizationGroup(vizGroupSetting.focusedVisualizationGroup)\n }\n\nfunction buildTransitionStyle(\n transition: boolean | TransitionConfig | undefined\n): React.ReactNode {\n if (!transition) return null\n\n const duration =\n typeof transition === \"object\" && transition.duration != null\n ? transition.duration\n : 300\n const ease =\n typeof transition === \"object\" && transition.ease != null\n ? transition.ease\n : \"ease\"\n\n const dur = `${duration}ms`\n\n const css = `\n@keyframes semiotic-enter {\n from { opacity: 0; }\n to { opacity: 1; }\n}\ng[data-semiotic-transition] > rect,\ng[data-semiotic-transition] > circle,\ng[data-semiotic-transition] > path,\ng[data-semiotic-transition] > line,\ng[data-semiotic-transition] > g > rect,\ng[data-semiotic-transition] > g > circle,\ng[data-semiotic-transition] > g > path,\ng[data-semiotic-transition] > g > line {\n transition: fill ${dur} ${ease},\n stroke ${dur} ${ease},\n opacity ${dur} ${ease},\n transform ${dur} ${ease};\n animation: semiotic-enter ${dur} ${ease};\n}\n`\n return <style key=\"semiotic-transition-style\">{css}</style>\n}\n\nexport default function VisualizationLayer(props: Props) {\n const {\n matte,\n matteClip,\n axes,\n frameKey = \"\",\n margin = { left: 0, right: 0, bottom: 0, top: 0 },\n title,\n ariaTitle,\n axesTickLines,\n frameRenderOrder,\n additionalVizElements,\n transition\n } = props\n\n let changeTooltip = useTooltip((state) => state.changeTooltip)\n\n const voronoiHover = useCallback((d) => {\n changeTooltip(d)\n }, [changeTooltip])\n\n const [focusedPieceIndex, changeFocusedPieceIndex] = useState(null)\n const [focusedVisualizationGroup, changeFocusedVisualizationGroup] =\n useState(null)\n const decoratedKeydown = useMemo(\n () => handleKeyDown({\n focusedPieceIndex,\n changeFocusedPieceIndex,\n changeFocusedVisualizationGroup\n }),\n [focusedPieceIndex, changeFocusedPieceIndex, changeFocusedVisualizationGroup]\n )\n\n const vizState = updateVisualizationLayer(\n props,\n decoratedKeydown,\n voronoiHover\n )\n\n const { renderedElements } = vizState\n\n useEffect(() => {\n const canvasContext = props.canvasContext?.current\n let updateCtrl = new AbortController()\n\n if (props.disableContext || !canvasContext) return\n\n const {\n sketchyRenderingEngine,\n width,\n height,\n margin,\n disableProgressiveRendering = false\n } = props\n\n const size = [\n width + margin.left + margin.right,\n height + margin.top + margin.bottom\n ]\n\n let rc\n canvasContext.width = size[0]\n canvasContext.height = size[1]\n canvasContext.style.width = size[0]\n canvasContext.style.height = size[1]\n\n const context = canvasContext.getContext(\"2d\")\n\n context.scale(devicePixelRatio, devicePixelRatio)\n\n context.setTransform(1, 0, 0, 1, margin.left, margin.top)\n\n context.clearRect(-margin.left, -margin.top, size[0], size[1])\n\n const renderCanvasPiece = renderCanvas(\n canvasContext,\n context,\n margin,\n props,\n sketchyRenderingEngine,\n rc\n )\n\n context.clearRect(-margin.left, -margin.top, size[0], size[1])\n\n if (disableProgressiveRendering) {\n for (const piece of vizState.canvasDrawing) {\n renderCanvasPiece(piece)\n }\n } else {\n updateCtrl = new AbortController()\n\n batchCollectionWork(renderCanvasPiece, vizState.canvasDrawing, {\n signal: updateCtrl.signal\n })\n }\n\n context.setTransform(1, 0, 0, 1, 0, 0)\n context.globalAlpha = 1\n\n if (props.canvasPostProcess) {\n props.canvasPostProcess(props.canvasContext?.current, context, size)\n }\n\n if (\n focusedVisualizationGroup !== null &&\n vizState.piecesGroup[focusedVisualizationGroup] &&\n focusedPieceIndex !== null\n ) {\n const focusElParent =\n vizState.piecesGroup[focusedVisualizationGroup][focusedPieceIndex]\n\n const focusEl =\n (focusElParent &&\n [...focusElParent.childNodes].find((child) =>\n child.getAttribute(\"aria-label\")\n )) ||\n focusElParent\n\n focusEl && focusEl.focus && focusEl.focus()\n }\n\n return function cleanup() {\n updateCtrl.abort()\n }\n }, [\n matte,\n matteClip,\n axes,\n frameKey,\n margin,\n ariaTitle,\n axesTickLines,\n frameRenderOrder,\n additionalVizElements\n ])\n\n const transitionStyle = buildTransitionStyle(transition)\n\n const renderHash = {\n [\"axes-tick-lines\"]: axesTickLines && (\n <g\n key=\"visualization-tick-lines\"\n className=\"axis axis-tick-lines\"\n aria-hidden={true}\n >\n {axesTickLines}\n </g>\n ),\n [\"axes-labels\"]: axes && (\n <g key=\"visualization-axis-labels\" className=\"axis axis-labels\">\n {axes}\n </g>\n ),\n matte: matte,\n [\"viz-layer\"]:\n renderedElements && renderedElements.length > 0\n ? (\n <React.Fragment key=\"viz-layer\">\n {transitionStyle}\n {renderedElements}\n </React.Fragment>\n )\n : null,\n ...additionalVizElements\n }\n\n let ariaLabel = \"\"\n\n const finalTitle =\n (title && ariaTitle) || title\n ? typeof title !== \"string\" &&\n title.props &&\n typeof title.props.children === \"string\"\n ? `titled ${title.props.children}`\n : \"with a complex title\"\n : \"with no title\"\n ariaLabel = `Visualization ${finalTitle}. Use arrow keys to navigate elements.`\n\n const orderedElements = []\n\n frameRenderOrder.forEach((r) => {\n if (renderHash[r]) {\n orderedElements.push(renderHash[r])\n }\n })\n\n const renderedDataVisualization =\n (orderedElements.length > 0 && (\n <g\n className=\"data-visualization\"\n data-testid=\"data-visualization\"\n key=\"visualization-clip-path\"\n aria-label={ariaLabel}\n role=\"group\"\n clipPath={\n matteClip && matte ? `url(#matte-clip${frameKey})` : undefined\n }\n transform={`translate(${margin.left},${margin.top})`}\n >\n {orderedElements}\n </g>\n )) ||\n null\n\n return renderedDataVisualization\n}\n\nfunction renderCanvas(\n canvasContext,\n context,\n margin,\n np,\n sketchyRenderingEngine,\n rc\n) {\n const defaultStyle = {\n fill: \"black\",\n stroke: \"black\",\n opacity: 1,\n fillOpacity: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n }\n\n const { position = [0, 0] } = np\n\n return (piece) => {\n const combinedDatum = { ...piece.d, ...piece.d.data }\n const style = piece.styleFn\n ? piece.styleFn(combinedDatum, piece.i) || defaultStyle\n : defaultStyle\n\n const fill = style.fill ? style.fill : \"black\"\n const stroke = style.stroke ? style.stroke : \"black\"\n context.setTransform(1, 0, 0, 1, margin.left, margin.top)\n context.translate(position[0], position[1])\n context.translate(piece.tx, piece.ty)\n context.fillStyle = fill\n context.strokeStyle = stroke\n context.lineWidth = style.strokeWidth ? style.strokeWidth : 0\n\n let rcSettings = {}\n const renderObject =\n piece.renderFn && piece.renderFn(combinedDatum, piece.i)\n let actualRenderMode =\n (renderObject && renderObject.renderMode) || renderObject\n\n if (actualRenderMode) {\n if (!sketchyRenderingEngine) {\n console.error(\n \"You cannot render sketchy graphics without specifying a Rough.js-like library as the sketchyRenderingEngine prop of your frame\"\n )\n actualRenderMode = undefined\n } else {\n const RoughCanvas = sketchyRenderingEngine.canvas\n if (!RoughCanvas) {\n console.error(\n \"The sketchyRenderingEngine you specify does not expose a prop `RoughCanvas` and so cannot render sketchy HTML5 Canvas graphics\"\n )\n } else {\n rc = rc || RoughCanvas(canvasContext)\n const rcExtension =\n (typeof renderObject === \"object\" && renderObject) || {}\n rcSettings = {\n fill,\n stroke,\n strokeWidth: context.lineWidth,\n ...rcExtension\n }\n }\n }\n }\n\n if (\n piece.markProps.markType === \"circle\" ||\n (piece.markProps.markType === \"rect\" && piece.markProps.rx > 0)\n ) {\n let vizX = piece.markProps.cx ?? 0,\n vizY = piece.markProps.cy ?? 0,\n r = style.r ?? piece.markProps.r\n if (piece.markProps.width) {\n const halfWidth = piece.markProps.width / 2\n vizX = piece.markProps.x + halfWidth\n vizY = piece.markProps.y + halfWidth\n r = halfWidth\n }\n if (actualRenderMode === \"sketchy\") {\n if (context.globalAlpha !== 0) rc.circle(vizX, vizY, r, rcSettings)\n } else {\n context.beginPath()\n context.arc(vizX, vizY, r, 0, 2 * Math.PI)\n context.globalAlpha = style.fillOpacity || style.opacity || 1\n if (style.fill && style.fill !== \"none\" && context.globalAlpha !== 0) {\n context.fill()\n }\n\n context.globalAlpha = style.strokeOpacity || style.opacity || 1\n\n if (\n style.stroke &&\n style.stroke !== \"none\" &&\n context.globalAlpha !== 0\n )\n context.stroke()\n }\n } else if (piece.markProps.markType === \"rect\") {\n if (actualRenderMode === \"sketchy\") {\n context.globalAlpha = style.opacity || 1\n if (context.globalAlpha !== 0)\n rc.rectangle(\n piece.markProps.x,\n piece.markProps.y,\n piece.markProps.width,\n piece.markProps.height,\n rcSettings\n )\n } else {\n context.globalAlpha = style.fillOpacity || style.opacity || 1\n if (style.fill && style.fill !== \"none\" && context.globalAlpha !== 0)\n context.fillRect(\n piece.markProps.x,\n piece.markProps.y,\n piece.markProps.width,\n piece.markProps.height\n )\n context.globalAlpha = style.strokeOpacity || style.opacity || 1\n if (\n style.stroke &&\n style.stroke !== \"none\" &&\n context.globalAlpha !== 0\n )\n context.strokeRect(\n piece.markProps.x,\n piece.markProps.y,\n piece.markProps.width,\n piece.markProps.height\n )\n }\n } else if (piece.markProps.markType === \"path\") {\n if (actualRenderMode === \"sketchy\") {\n context.globalAlpha = style.opacity || 1\n rc.path(piece.markProps.d, rcSettings)\n } else {\n const p = new Path2D(piece.markProps.d)\n context.globalAlpha = style.strokeOpacity || style.opacity || 1\n if (\n style.stroke &&\n style.stroke !== \"none\" &&\n context.globalAlpha !== 0\n )\n context.stroke(p)\n context.globalAlpha = style.fillOpacity || style.opacity || 1\n if (style.fill && style.fill !== \"none\" && context.globalAlpha !== 0)\n context.fill(p)\n }\n } else if (piece.markProps.markType === \"line\") {\n if (actualRenderMode === \"sketchy\") {\n context.globalAlpha = style.opacity || 1\n rc.line(\n piece.markProps.x1,\n piece.markProps.y1,\n piece.markProps.x2,\n piece.markProps.y2,\n rcSettings\n )\n } else {\n context.globalAlpha = style.strokeOpacity || style.opacity || 1\n context.beginPath()\n context.moveTo(piece.markProps.x1, piece.markProps.y1)\n context.lineTo(piece.markProps.x2, piece.markProps.y2)\n if (\n style.stroke &&\n style.stroke !== \"none\" &&\n context.globalAlpha !== 0\n ) {\n context.stroke()\n }\n }\n } else {\n console.error(\"CURRENTLY UNSUPPORTED MARKTYPE FOR CANVAS RENDERING\")\n }\n }\n}\n\n// using batchWork utility, this function iterates over a collection of data\n// in batches of 1000 and invokes `process` function for each data point\nfunction batchCollectionWork(process, data, options) {\n let pointer = 0\n let batchSize = 1000\n\n return batchWork(() => {\n let limit = Math.min(pointer + batchSize, data.length)\n for (let i = pointer; i < limit; i++) {\n process(data[i])\n }\n pointer = pointer + batchSize\n return data.length > pointer\n }, options)\n}\n","import * as React from \"react\"\nimport { drawMarginPath } from \"../svg/frameFunctions\"\n\ntype FilterDefTypes = {\n matte?: React.ReactNode\n key: string\n additionalDefs?: React.ReactNode\n}\n\nexport const filterDefs = ({ matte, key, additionalDefs }: FilterDefTypes) => (\n <defs>\n <filter id=\"paintyFilterHeavy\">\n <feGaussianBlur\n id=\"gaussblurrer\"\n in=\"SourceGraphic\"\n stdDeviation={4}\n colorInterpolationFilters=\"sRGB\"\n result=\"blur\"\n />\n <feColorMatrix\n in=\"blur\"\n mode=\"matrix\"\n values=\"1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 34 -7\"\n result=\"gooey\"\n />\n </filter>\n <filter id=\"paintyFilterLight\">\n <feGaussianBlur\n id=\"gaussblurrer\"\n in=\"SourceGraphic\"\n stdDeviation={2}\n colorInterpolationFilters=\"sRGB\"\n result=\"blur\"\n />\n <feColorMatrix\n in=\"blur\"\n mode=\"matrix\"\n values=\"1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 34 -7\"\n result=\"gooey\"\n />\n </filter>\n <clipPath id={`matte-clip-${key}`}>{matte}</clipPath>\n {additionalDefs}\n </defs>\n)\n\nexport const generateFinalDefs = ({\n matte,\n size,\n margin,\n frameKey,\n additionalDefs,\n name\n}) => {\n let marginGraphic\n\n if (typeof matte === \"function\") {\n marginGraphic = matte({ size, margin })\n } else if (React.isValidElement(matte)) {\n marginGraphic = matte\n } else if (matte === true) {\n marginGraphic = (\n <path\n fill=\"white\"\n transform={`translate(${-margin.left},${-margin.top})`}\n d={drawMarginPath({\n margin,\n size: size,\n inset: 0\n })}\n className={`${name}-matte`}\n />\n )\n }\n\n const finalFilterDefs = filterDefs({\n matte: marginGraphic,\n key: matte && (frameKey || name),\n additionalDefs: additionalDefs\n })\n\n return { defs: finalFilterDefs, matte: marginGraphic }\n}\n","\"use client\"\nimport * as React from \"react\"\nimport { useCallback, useEffect, useState, useRef } from \"react\"\nimport AnnotationLayer from \"./AnnotationLayer\"\nimport InteractionLayer from \"./InteractionLayer\"\nimport VisualizationLayer from \"./VisualizationLayer\"\nimport { generateFrameTitle } from \"./svg/frameFunctions\"\nimport { generateFinalDefs } from \"./constants/jsx\"\n\nimport { MarginType, RoughType, TransitionConfig } from \"./types/generalTypes\"\nimport { AnnotationHandling, CustomHoverType } from \"./types/annotationTypes\"\nimport { LegendProps } from \"./types/legendTypes\"\nimport { ScaleLinear } from \"d3-scale\"\nimport { AdvancedInteractionSettings } from \"./types/interactionTypes\"\n\nimport { TooltipProvider } from \"./store/TooltipStore\"\n\ntype VizDataLayerKeys =\n | \"pieces\"\n | \"summaries\"\n | \"connectors\"\n | \"edges\"\n | \"nodes\"\n | \"lines\"\n | \"points\"\n\ntype Props = {\n name?: string\n title: string | Element | { title?: string | Element }\n margin: MarginType\n size: Array<number>\n annotationSettings: AnnotationHandling\n annotations?: Array<object>\n customHoverBehavior?: Function\n customClickBehavior?: Function\n customDoubleClickBehavior?: Function\n htmlAnnotationRules?: Function\n tooltipContent?: Function\n className?: string\n interaction?: object\n renderFn?: string | Function\n hoverAnnotation?: CustomHoverType\n backgroundGraphics?: React.ReactNode | Function\n foregroundGraphics?: React.ReactNode | Function\n interactionOverflow?: object\n disableContext?: boolean\n canvasRendering?: boolean\n canvasPostProcess?: Function\n projection?: string\n rScale?: ScaleLinear<number, number>\n columns?: object\n overlay?: Array<object>\n legendSettings?: LegendProps\n adjustedPosition: Array<number>\n defaultHTMLRule: Function\n defaultSVGRule: Function\n beforeElements?: React.ReactNode\n afterElements?: React.ReactNode\n points?: Array<object>\n projectedYMiddle?: string\n dataVersion?: string\n frameKey?: string\n additionalDefs?: React.ReactNode\n xScale: ScaleLinear<number, number>\n yScale: ScaleLinear<number, number>\n adjustedSize?: Array<number>\n renderPipeline: { [key in VizDataLayerKeys]?: object }\n projectedCoordinateNames: { x: string; y: string }\n matte?: boolean | object | Element | Function\n axes?: Array<React.ReactNode>\n axesTickLines?: React.ReactNode\n disableCanvasInteraction?: boolean\n showLinePoints?: string\n renderOrder: ReadonlyArray<VizDataLayerKeys>\n sketchyRenderingEngine: RoughType\n frameRenderOrder: Array<string>\n additionalVizElements?: object\n interactionSettings?: AdvancedInteractionSettings\n disableProgressiveRendering: boolean\n transition?: boolean | TransitionConfig\n}\n\nconst blankArray = []\n\nconst blankObject = {}\n\nconst defaultPosition = [0, 0]\nconst defaultCoordinateNames = { x: \"x\", y: \"y\" }\n\nconst defaultFrameRenderOrder = [\n \"axes-tick-lines\",\n \"viz-layer\",\n \"matte\",\n \"axes-labels\",\n \"labels\"\n]\n\nconst defaultZeroMargin = { top: 0, bottom: 0, left: 0, right: 0 }\n\nexport default function Frame(props) {\n const {\n axes,\n axesTickLines,\n className = \"\",\n name = \"\",\n frameKey,\n projectedCoordinateNames = defaultCoordinateNames,\n renderPipeline,\n size,\n adjustedSize = size,\n title,\n xScale,\n yScale,\n dataVersion,\n annotations,\n projectedYMiddle,\n interaction,\n customClickBehavior,\n customHoverBehavior,\n customDoubleClickBehavior,\n points,\n margin = defaultZeroMargin,\n backgroundGraphics,\n foregroundGraphics,\n beforeElements,\n afterElements,\n defaultSVGRule,\n defaultHTMLRule,\n adjustedPosition = defaultPosition,\n legendSettings,\n annotationSettings = blankObject,\n overlay,\n columns,\n rScale,\n projection,\n interactionOverflow,\n canvasPostProcess,\n canvasRendering,\n renderOrder = blankArray,\n showLinePoints,\n disableCanvasInteraction = false,\n sketchyRenderingEngine,\n disableContext,\n frameRenderOrder = defaultFrameRenderOrder,\n additionalVizElements = blankObject,\n interactionSettings,\n disableProgressiveRendering,\n additionalDefs,\n transition\n } = props\n\n let { hoverAnnotation } = props\n\n const canvasContext = useRef(null)\n\n const [finalDefs, changeFinalDefs] = useState(null)\n const [matte, changeMatte] = useState(null)\n useEffect(() => {\n const generatedDefs = generateFinalDefs({\n matte,\n size,\n margin,\n frameKey,\n additionalDefs,\n name\n })\n\n changeFinalDefs(generatedDefs.defs)\n changeMatte(generatedDefs.matte)\n }, [\n size[0],\n size[1],\n margin.top,\n margin.bottom,\n margin.right,\n margin.left,\n margin.top,\n matte,\n additionalDefs\n ])\n\n if (\n !hoverAnnotation &&\n (customClickBehavior || customHoverBehavior || customDoubleClickBehavior)\n ) {\n hoverAnnotation = blankArray\n }\n\n const areaAnnotations = []\n\n const totalAnnotations = annotations\n ? [...annotations, ...areaAnnotations]\n : areaAnnotations\n\n const defaultSVGRuleRef = useRef(defaultSVGRule)\n defaultSVGRuleRef.current = defaultSVGRule\n const defaultHTMLRuleRef = useRef(defaultHTMLRule)\n defaultHTMLRuleRef.current = defaultHTMLRule\n const renderPipelineRef = useRef(renderPipeline)\n renderPipelineRef.current = renderPipeline\n\n const svgAnnotationRuleCb = useCallback(\n (d, i, thisALayer) =>\n defaultSVGRuleRef.current({ d, i, annotationLayer: thisALayer, ...renderPipelineRef.current }),\n []\n )\n const htmlAnnotationRuleCb = useCallback(\n (d, i, thisALayer) =>\n defaultHTMLRuleRef.current({ d, i, annotationLayer: thisALayer, ...renderPipelineRef.current }),\n []\n )\n\n const annotationLayer = (\n <AnnotationLayer\n legendSettings={legendSettings}\n margin={margin}\n axes={axes}\n annotationHandling={annotationSettings}\n pointSizeFunction={\n annotationSettings.layout && annotationSettings.layout.pointSizeFunction\n }\n labelSizeFunction={\n annotationSettings.layout && annotationSettings.layout.labelSizeFunction\n }\n annotations={totalAnnotations}\n svgAnnotationRule={svgAnnotationRuleCb}\n htmlAnnotationRule={htmlAnnotationRuleCb}\n size={adjustedSize}\n position={[\n adjustedPosition[0] + margin.left,\n adjustedPosition[1] + margin.top\n ]}\n />\n )\n\n const generatedTitle = generateFrameTitle({\n title: title,\n size: size\n })\n\n const finalBackgroundGraphics =\n typeof backgroundGraphics === \"function\"\n ? backgroundGraphics({ size, margin })\n : backgroundGraphics\n\n const finalForegroundGraphics =\n typeof foregroundGraphics === \"function\"\n ? foregroundGraphics({ size, margin })\n : foregroundGraphics\n\n return (\n <div\n className={`${className} frame ${name}`}\n style={{\n background: \"none\"\n }}\n >\n {beforeElements && (\n <div className={`${name} frame-before-elements`}>\n {beforeElements}\n </div>\n )}\n <div\n className=\"frame-elements\"\n style={{ height: `${size[1]}px`, width: `${size[0]}px` }}\n >\n <TooltipProvider>\n <div\n className=\"visualization-layer\"\n style={{ position: \"absolute\" }}\n >\n {backgroundGraphics && (\n <svg\n className=\"background-graphics\"\n style={{ position: \"absolute\" }}\n width={size[0]}\n height={size[1]}\n >\n {backgroundGraphics && (\n <g aria-hidden={true} className=\"background-graphics\">\n {finalBackgroundGraphics}\n </g>\n )}\n </svg>\n )}\n <svg\n className=\"visualization-layer\"\n style={{ position: \"absolute\" }}\n width={size[0]}\n height={size[1]}\n >\n {finalDefs}\n <VisualizationLayer\n disableContext={disableContext}\n renderPipeline={renderPipeline}\n position={adjustedPosition}\n width={adjustedSize[0]}\n height={adjustedSize[1]}\n projectedCoordinateNames={projectedCoordinateNames}\n xScale={xScale}\n yScale={yScale}\n axes={axes}\n title={generatedTitle}\n frameKey={frameKey}\n canvasContext={canvasContext}\n dataVersion={dataVersion}\n matte={matte}\n margin={margin}\n canvasPostProcess={canvasPostProcess}\n\n renderOrder={renderOrder}\n sketchyRenderingEngine={sketchyRenderingEngine}\n axesTickLines={axesTickLines}\n additionalVizElements={additionalVizElements}\n frameRenderOrder={frameRenderOrder}\n disableProgressiveRendering={disableProgressiveRendering}\n transition={transition}\n />\n {generatedTitle && (\n <g className=\"frame-title\">{generatedTitle}</g>\n )}\n {foregroundGraphics && (\n <g aria-hidden={true} className=\"foreground-graphics\">\n {finalForegroundGraphics}\n </g>\n )}\n </svg>\n </div>\n {canvasRendering && (\n <canvas\n className=\"frame-canvas\"\n ref={canvasContext}\n style={{\n pointerEvents: \"none\",\n position: \"absolute\"\n }}\n width={size[0] / 2}\n height={size[1] / 2}\n />\n )}\n <InteractionLayer\n hoverAnnotation={hoverAnnotation}\n projectedX={projectedCoordinateNames.x}\n projectedY={projectedCoordinateNames.y}\n projectedYMiddle={projectedYMiddle}\n interaction={interaction}\n customClickBehavior={customClickBehavior}\n customHoverBehavior={customHoverBehavior}\n customDoubleClickBehavior={customDoubleClickBehavior}\n points={points}\n showLinePoints={showLinePoints}\n canvasRendering={canvasRendering}\n position={adjustedPosition}\n margin={margin}\n size={adjustedSize}\n svgSize={size}\n xScale={xScale}\n yScale={yScale}\n enabled={true}\n overlay={overlay}\n oColumns={columns}\n rScale={rScale}\n projection={projection}\n interactionOverflow={interactionOverflow}\n disableCanvasInteraction={disableCanvasInteraction}\n renderPipeline={renderPipeline}\n advancedSettings={interactionSettings}\n />\n {annotationLayer}\n </TooltipProvider>\n </div>\n {afterElements && (\n <div className={`${name} frame-after-elements`}>\n {afterElements}\n </div>\n )}\n </div>\n )\n}\n","\"use client\"\nimport * as React from \"react\"\nimport { useState, useEffect, useCallback } from \"react\"\n\ntype Props = {\n tooltipContent: Function\n tooltipContentArgs?: object\n}\n\ntype State = {\n collision: object\n tooltipContainerInitialDimensions: object\n tooltipContentArgsCurrent: object\n}\n\nconst // simple heuristics to check if the tooltip container exceeds the viewport\n // if so, capture the suggested offset\n checkPosition = ({\n tooltipRef,\n tooltipContentArgs,\n changeTooltipContentArgsCurrent,\n changeTooltipContainerInitialDimensions,\n changeCollision\n }) => {\n const tooltipContainerInitialDimensions =\n tooltipRef?.getBoundingClientRect()\n\n if (!tooltipContainerInitialDimensions) {\n return\n }\n\n const { right, left, top, bottom, width, height } =\n tooltipContainerInitialDimensions\n\n // flags to indicate whether the data point + tooltip dimension collides with the viewport\n // on each of the 4 directions/sides\n let collision = {\n left: false,\n right: false,\n top: false,\n bottom: false\n }\n\n if (left + width > window.innerWidth) {\n collision.right = true\n }\n if (left - width < 0) {\n collision.left = true\n }\n if (top + height > window.innerHeight) {\n collision.bottom = true\n }\n if (top - height < 0) {\n collision.top = true\n }\n\n changeTooltipContentArgsCurrent()\n changeTooltipContainerInitialDimensions(tooltipContainerInitialDimensions)\n changeCollision(collision)\n }\n\nexport default function TooltipPositioner(props: Props) {\n const { tooltipContent, tooltipContentArgs } = props\n\n const [collision, changeCollision] = useState(null)\n const [\n tooltipContainerInitialDimensions,\n changeTooltipContainerInitialDimensions\n ] = useState(null)\n const [tooltipContentArgsCurrent, changeTooltipContentArgsCurrent] =\n useState(null)\n const [tooltipNode, setTooltipNode] = useState(null)\n\n const tooltipNodeRef = useCallback((node) => {\n setTooltipNode(node)\n\n checkPosition({\n tooltipRef: node,\n tooltipContentArgs,\n changeTooltipContentArgsCurrent,\n changeTooltipContainerInitialDimensions,\n changeCollision\n })\n }, [])\n\n useEffect(() => {\n // if new args, reset collision state\n changeCollision(null)\n changeTooltipContainerInitialDimensions(null)\n }, [JSON.stringify(tooltipContentArgs)])\n\n useEffect(() => {\n if (tooltipNode && !collision) {\n checkPosition({\n tooltipRef: tooltipNode,\n tooltipContentArgs,\n changeTooltipContentArgsCurrent,\n changeTooltipContainerInitialDimensions,\n changeCollision\n })\n }\n }, [tooltipNode, collision])\n\n const containerStyle = {\n //to handle issue when the tooltip content has margins set by client,\n // which results in the tooltip container having smaller height,\n // which in turn causes the css transform to be inaccurate\n // (ref: https://www.w3.org/TR/css-box-3/#collapsing-margins)\n overflow: \"hidden\",\n\n opacity:\n collision && tooltipContentArgsCurrent === tooltipContentArgs ? 1 : 0\n }\n\n const tooltipContainerClasses = collision\n ? [\n \"tooltip-container\",\n \"tooltip-collision-evaluated\",\n collision && collision.top && \"collision-top\",\n collision && collision.bottom && \"collision-bottom\",\n collision && collision.right && \"collision-right\",\n collision && collision.left && \"collision-left\"\n ]\n .filter((el) => el)\n .join(\" \")\n : \"tooltip-container\"\n\n const tooltipContainerAttributes = {\n offset: { x: 0, y: 0 },\n tooltipContainerInitialDimensions\n }\n\n return (\n <div\n ref={tooltipNodeRef}\n style={containerStyle}\n className={tooltipContainerClasses}\n data-testid=\"TooltipPositioner\"\n >\n {tooltipContent({\n ...tooltipContentArgs,\n tooltipContainerAttributes\n })}\n </div>\n )\n}\n","import * as React from \"react\"\n\nimport Annotation from \"../Annotation\"\nimport { polygonHull } from \"d3-polygon\"\nimport Offset from \"polygon-offset\"\n\nexport const circleEnclosure = ({ d, i, circle }) => {\n const { padding = 2, radiusPadding = padding, label } = d\n\n const noteData = Object.assign(\n {\n dx: 0,\n dy: 0,\n note: { label },\n connector: { end: \"arrow\" }\n },\n d,\n {\n coordinates: undefined,\n x: circle.x,\n y: circle.y,\n type: \"callout-circle\",\n subject: {\n radius: circle.r,\n radiusPadding\n },\n i\n }\n )\n\n if (noteData.rp) {\n switch (noteData.rp) {\n case \"top\":\n noteData.dx = 0\n noteData.dy = -circle.r - noteData.rd\n break\n case \"bottom\":\n noteData.dx = 0\n noteData.dy = circle.r + noteData.rd\n break\n case \"left\":\n noteData.dx = -circle.r - noteData.rd\n noteData.dy = 0\n break\n default:\n noteData.dx = circle.r + noteData.rd\n noteData.dy = 0\n }\n }\n //TODO: Support .ra (setting angle)\n\n return <Annotation key={d.key || `annotation-${i}`} noteData={noteData} />\n}\n\nexport const rectangleEnclosure = ({ bboxNodes, d, i }) => {\n const { padding = 0, dx = -25, dy = -25, label } = d\n const bbox = [\n [\n Math.min(...bboxNodes.map((p) => p.x0)) - padding,\n Math.min(...bboxNodes.map((p) => p.y0)) - padding\n ],\n [\n Math.max(...bboxNodes.map((p) => p.x1)) + padding,\n Math.max(...bboxNodes.map((p) => p.y1)) + padding\n ]\n ]\n\n const noteData = Object.assign(\n {\n dx: dx,\n dy: dy,\n note: { label },\n connector: { end: \"arrow\" }\n },\n d,\n {\n type: \"callout-rect\",\n x: bbox[0][0],\n y: bbox[0][1],\n subject: {\n width: bbox[1][0] - bbox[0][0],\n height: bbox[1][1] - bbox[0][1]\n }\n }\n )\n\n return <Annotation key={d.key || `annotation-${i}`} noteData={noteData} />\n}\n\nexport const hullEnclosure = ({ points, d, i }) => {\n const {\n color = \"currentColor\",\n dx = -25,\n dy = -25,\n label,\n padding = 10,\n buffer = padding,\n strokeWidth = 10\n } = d\n\n const hullPoints = polygonHull(points)\n\n const offset = new Offset()\n\n const bufferedHull = offset\n .data([...hullPoints, hullPoints[0]])\n .margin(buffer)[0]\n\n const hullD = `M${bufferedHull.map((d) => d.join(\",\")).join(\"L\")}Z`\n\n const firstCoord = bufferedHull[0]\n\n const { nx = firstCoord[0] + dx, ny = firstCoord[1] + dy } = d\n\n const closestCoordinates = bufferedHull.reduce((p, c) => {\n if (Math.hypot(nx - p[0], ny - p[1]) > Math.hypot(nx - c[0], ny - c[1])) {\n p = c\n }\n return p\n }, firstCoord)\n\n const noteData = Object.assign(\n {\n dx: dx,\n dy: dy,\n note: { label },\n connector: { end: \"arrow\" }\n },\n d,\n {\n type: \"callout-custom\",\n x: closestCoordinates[0],\n y: closestCoordinates[1],\n subject: {\n custom: [\n <path\n key=\"hull-drawing\"\n d={hullD}\n strokeWidth={strokeWidth}\n strokeMiterlimit=\"10\"\n strokeLinejoin=\"miter\"\n strokeLinecap=\"butt\"\n fill=\"none\"\n stroke={color}\n transform={`translate(${-closestCoordinates[0]},${-closestCoordinates[1]})`}\n />\n ],\n customID: \"hull-annotation\"\n }\n }\n )\n\n return <Annotation key={d.key || `annotation-${i}`} noteData={noteData} />\n}\n\nexport const desaturationLayer = ({\n style = { fill: \"white\", fillOpacity: 0.5 },\n size,\n i,\n key\n}: {\n style: { fill?: string; fillOpacity?: number }\n size: number[]\n i?: number\n key?: string\n}) => (\n <rect\n data-testid=\"desaturation-layer\"\n key={key || `desaturation-${i}`}\n x={-5}\n y={-5}\n width={size[0] + 10}\n height={size[1] + 10}\n style={style}\n />\n)\n","import * as React from \"react\"\n\nimport Annotation from \"../Annotation\"\n\nimport { line, area } from \"d3-shape\"\nimport { packEnclose } from \"d3-hierarchy\"\nimport { extent } from \"d3-array\"\nimport { circleEnclosure, rectangleEnclosure, hullEnclosure } from \"./baseRules\"\nimport { findFirstAccessorValue } from \"../data/multiAccessorUtils\"\nimport { curveHash } from \"../visualizationLayerBehavior/general\"\nimport { ScaleLinear } from \"d3-scale\"\nimport { ProjectedPoint, RenderPipelineType } from \"../types/generalTypes\"\n\nexport const pointsAlong =\n (along) =>\n ({ d, lines, points, xScale, yScale, pointStyle }) => {\n const alongScale = along === \"x\" ? xScale : yScale\n along = along === \"yTop\" && d.yMiddle ? \"yMiddle\" : along\n if (d && d[along]) {\n const { threshold = 1, r = () => 4, styleFn = pointStyle } = d\n const foundPoints = []\n\n const halfThreshold = threshold / 2\n\n if (lines && lines.length > 0) {\n lines.forEach((linedata) => {\n const linePoints = linedata.data.filter((p) => {\n const pAlong = alongScale(p[along])\n const dAlong = alongScale(d[along])\n\n return (\n pAlong <= dAlong + halfThreshold &&\n pAlong >= dAlong - halfThreshold\n )\n })\n foundPoints.push(...linePoints)\n })\n }\n\n if (points && points.length > 0) {\n const pointPoints = points.filter((p) => {\n const pAlong = alongScale(p[along])\n const dAlong = alongScale(d[along])\n\n return (\n pAlong <= dAlong + halfThreshold && pAlong >= dAlong - halfThreshold\n )\n })\n foundPoints.push(...pointPoints)\n }\n\n return foundPoints.map((p, i) => (\n <circle\n key={`found-circle-${i}`}\n r={r(p, i)}\n style={styleFn(p, i)}\n cx={xScale(p.xMiddle || p.x)}\n cy={yScale(p.yMiddle || p.yTop)}\n />\n ))\n }\n return null\n }\n\nexport const svgHorizontalPointsAnnotation = pointsAlong(\"yTop\")\nexport const svgVerticalPointsAnnotation = pointsAlong(\"x\")\n\nexport const svgHighlight = ({\n d,\n i,\n points = { data: [] },\n lines = { data: [], type: {} },\n summaries = { data: [] },\n idAccessor,\n xScale,\n yScale,\n xyFrameRender,\n defined\n}: {\n d: ProjectedPoint\n i?: number\n points: { data: [] }\n lines: {\n data: []\n type?: { interpolator?: string | Function; curve?: string | Function }\n }\n summaries: { data: [] }\n idAccessor: Function\n xScale: ScaleLinear<number, number>\n yScale: ScaleLinear<number, number>\n xyFrameRender: RenderPipelineType\n defined: Function\n}) => {\n let dID\n const baseID = idAccessor({ ...d, ...d.data }, i)\n if (baseID !== undefined) {\n dID = baseID\n } else if (d.parentLine && idAccessor(d.parentLine, i) !== undefined) {\n dID = idAccessor(d.parentLine, i)\n } else if (d.parentSummary && idAccessor(d.parentSummary, i) !== undefined) {\n dID = idAccessor(d.parentSummary, i)\n }\n\n const foundPoints = points.data\n .filter(\n (p: ProjectedPoint, q) => idAccessor({ ...p, ...p.data }, q) === dID\n )\n .map((p: ProjectedPoint, q) => {\n const baseStyle = xyFrameRender.points.styleFn({ ...p, ...p.data })\n\n const highlightStyle =\n typeof d.style === \"function\"\n ? d.style({ ...p, ...p.data }, q)\n : d.style || {}\n\n return (\n <circle\n key={`highlight-point-${q}`}\n cx={xScale(p.x)}\n cy={yScale(p.y)}\n r={5}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n style={{ ...baseStyle, ...highlightStyle }}\n className={`highlight-annotation ${\n (d.class &&\n typeof d.class === \"function\" &&\n d.class({ ...p, ...p.data }, q)) ||\n (d.class && d.class) ||\n \"\"\n }`}\n />\n )\n })\n\n const lineGenerator = area()\n .x((p) => xScale(p.x))\n .y0((p) => yScale(p.yBottom))\n .y1((p) => yScale(p.yTop))\n\n const interpolatorSetting = lines.type.interpolator || lines.type.curve\n\n const actualInterpolator =\n typeof interpolatorSetting === \"string\"\n ? curveHash[interpolatorSetting]\n : interpolatorSetting\n\n if (actualInterpolator) {\n lineGenerator.curve(actualInterpolator)\n }\n\n if (defined) {\n lineGenerator.defined((p, q) => defined(p.data, q))\n }\n\n const foundLines = lines.data\n .filter((p, q) => idAccessor(p, q) === dID)\n .map((p: ProjectedPoint, q) => {\n const baseStyle = xyFrameRender.lines.styleFn(p, q)\n\n const highlightStyle =\n typeof d.style === \"function\" ? d.style(p, q) : d.style || {}\n\n return (\n <path\n className={`highlight-annotation ${\n (d.class && typeof d.class === \"function\" && d.class(p, q)) ||\n (d.class && d.class) ||\n \"\"\n }`}\n key={`highlight-summary-${q}`}\n d={lineGenerator(p.data)}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={1}\n style={{ ...baseStyle, ...highlightStyle }}\n />\n )\n })\n\n const foundSummaries = summaries.data\n .filter((p, q) => idAccessor(p, q) === dID)\n .map((p: ProjectedPoint, q) => {\n const baseStyle = xyFrameRender.summaries.styleFn(p, q)\n\n const highlightStyle =\n typeof d.style === \"function\" ? d.style(p, q) : d.style || {}\n\n return (\n <path\n className={`highlight-annotation ${\n (d.class && typeof d.class === \"function\" && d.class(p, q)) ||\n (d.class && d.class) ||\n \"\"\n }`}\n key={`highlight-summary-${q}`}\n d={`M${p.coordinates.join(\"L\")}`}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={1}\n style={{ ...baseStyle, ...highlightStyle }}\n />\n )\n })\n\n return [...foundSummaries, ...foundLines, ...foundPoints]\n}\n\nexport const svgXYAnnotation = ({ screenCoordinates, i, d }) => {\n let inlineStyle\n if (d.color) inlineStyle = { fill: d.color }\n\n const laLine = (\n <circle className={`annotation ${d.type} ${d.className || \"\"} `}\n key={`annotationpoint${i}`}\n \n cx={screenCoordinates[0]}\n cy={screenCoordinates[1]}\n style={inlineStyle}\n fill=\"none\"\n stroke=\"currentColor\"\n r={5}\n />\n )\n let laLabel\n if (d.type === \"xy\") {\n laLabel = (\n <text \n key={`${d.label}annotationtext${i}`}\n x={screenCoordinates[0]}\n y={10 + screenCoordinates[1]}\n data-testid=\"annotation-xy-label\"\n className={`annotation annotation-xy-label ${d.className || \"\"} `}\n >\n {d.label}\n </text>\n )\n }\n\n return [laLine, laLabel]\n}\n\nexport const basicReactAnnotation = ({ screenCoordinates, d, i }) => {\n const noteData = Object.assign(\n {\n dx: 0,\n dy: 0,\n note: { label: d.label, orientation: d.orientation, align: d.align },\n connector: { end: \"arrow\" }\n },\n d,\n {\n type: d.type,\n screenCoordinates,\n i\n }\n )\n\n noteData.x = noteData.fixedX ? noteData.fixedX : screenCoordinates[0]\n noteData.y = noteData.fixedY ? noteData.fixedY : screenCoordinates[1]\n\n return <Annotation key={d.key || `annotation-${i}`} noteData={noteData} />\n}\n\nexport const svgXAnnotation = ({ screenCoordinates, d, i, adjustedSize }) => {\n const noteData = Object.assign(\n {\n dx: 50,\n dy: 20,\n y: 0,\n note: { label: d.label },\n connector: { end: \"arrow\" }\n },\n d,\n {\n type: \"xy-threshold\",\n x: screenCoordinates[0],\n subject: {\n x: screenCoordinates[0],\n y1: 0,\n y2: adjustedSize[1]\n },\n i\n }\n )\n return <Annotation key={d.key || `annotation-${i}`} noteData={noteData} />\n}\n\nexport const svgYAnnotation = ({\n screenCoordinates,\n d,\n i,\n adjustedSize,\n adjustedPosition\n}) => {\n const xPosition = i * 25\n\n const noteData = Object.assign(\n {\n dx: 50,\n dy: -20,\n x: xPosition,\n note: { label: d.label },\n connector: { end: \"arrow\" }\n },\n d,\n {\n type: \"xy-threshold\",\n y: screenCoordinates[1],\n subject: {\n y: screenCoordinates[1],\n x1: 0,\n x2: adjustedSize[0] + adjustedPosition[0]\n },\n i\n }\n )\n return <Annotation key={d.key || `annotation-${i}`} noteData={noteData} />\n}\n\nexport const svgBoundsAnnotation = ({\n d,\n i,\n adjustedSize,\n xAccessor,\n yAccessor,\n xScale,\n yScale\n}) => {\n const startXValue = findFirstAccessorValue(xAccessor, d.bounds[0])\n const startYValue = findFirstAccessorValue(yAccessor, d.bounds[0])\n const endXValue = findFirstAccessorValue(xAccessor, d.bounds[1])\n const endYValue = findFirstAccessorValue(yAccessor, d.bounds[1])\n\n const x0Position = startXValue ? xScale(startXValue) : 0\n const y0Position = startYValue ? yScale(startYValue) : adjustedSize[1]\n const x1Position = endXValue ? xScale(endXValue) : adjustedSize[0]\n const y1Position = endYValue ? yScale(endYValue) : 0\n\n const noteData = Object.assign(\n {\n dx: 250,\n dy: -20,\n note: { label: d.label },\n connector: { end: \"arrow\" }\n },\n d,\n {\n type: \"callout-rect\",\n x: Math.min(x0Position, x1Position),\n y: Math.min(y0Position, y1Position),\n subject: {\n width: Math.abs(x1Position - x0Position),\n height: Math.abs(y0Position - y1Position)\n },\n i\n }\n )\n return <Annotation key={d.key || `annotation-${i}`} noteData={noteData} />\n}\n\nexport const svgLineAnnotation = ({ d, i, screenCoordinates }) => {\n const lineGenerator = line()\n .x((p) => p[0])\n .y((p) => p[1])\n const lineD = lineGenerator(screenCoordinates)\n const laLine = (\n <path key={`${d.label}annotationline${i}`}\n \n d={lineD}\n className={`annotation annotation-line ${d.className || \"\"} `}\n />\n )\n\n const laLabel = (\n <text \n key={`${d.label}annotationlinetext${i}`}\n x={(screenCoordinates[0][0] + screenCoordinates[1][0]) / 2}\n y={(screenCoordinates[0][1] + screenCoordinates[1][1]) / 2}\n className={`annotation annotation-line-label ${d.className || \"\"} `}\n >\n {d.label}\n </text>\n )\n\n return [laLine, laLabel]\n}\n\nexport const svgAreaAnnotation = ({\n d,\n i,\n xScale,\n xAccessor,\n yScale,\n yAccessor,\n annotationLayer\n}) => {\n const mappedCoordinates = `M${d.coordinates\n .map((p) => [\n xScale(findFirstAccessorValue(xAccessor, p)),\n yScale(findFirstAccessorValue(yAccessor, p))\n ])\n .join(\"L\")}Z`\n const xBounds = extent(\n d.coordinates.map((p) => xScale(findFirstAccessorValue(xAccessor, p)))\n )\n const yBounds = extent(\n d.coordinates.map((p) => yScale(findFirstAccessorValue(yAccessor, p)))\n )\n const xCenter = (xBounds[0] + xBounds[1]) / 2\n const yCenter = (yBounds[0] + yBounds[1]) / 2\n\n const laLine = (\n <path key={`${d.label}-annotation-area-${i}`}\n \n d={mappedCoordinates}\n className={`annotation annotation-area ${d.className || \"\"} `}\n />\n )\n\n const laLabel = (\n <text \n key={`${d.label}-annotationtext-${i}`}\n x={xCenter}\n y={yCenter}\n transform={`translate(${annotationLayer.position})`}\n className={`annotation annotation-area-label ${d.className || \"\"} `}\n style={{ textAnchor: \"middle\" }}\n >\n {d.label}\n </text>\n )\n\n return [laLine, laLabel]\n}\n\nexport const htmlTooltipAnnotation = ({\n content,\n screenCoordinates,\n i,\n d,\n adjustedSize\n}) => {\n //To string because React gives a DOM error if it gets a date\n\n const flipped = adjustedSize && screenCoordinates[0] > adjustedSize[0] / 2\n const tooltipStyle: React.CSSProperties = {\n position: \"absolute\",\n top: `${screenCoordinates[1]}px`\n }\n\n if (flipped) {\n tooltipStyle.right = `${adjustedSize[0] - screenCoordinates[0]}px`\n } else {\n tooltipStyle.left = `${screenCoordinates[0]}px`\n }\n\n return (\n <div\n key={`xylabel-${i}`}\n className={`annotation annotation-xy-label ${d.className || \"\"} `}\n style={tooltipStyle}\n >\n {content}\n </div>\n )\n}\n\nexport const svgRectEncloseAnnotation = ({ d, i, screenCoordinates }) => {\n const bboxNodes = screenCoordinates.map((p) => {\n return {\n x0: (p.x0 = p[0]),\n x1: (p.x1 = p[0]),\n y0: (p.y0 = p[1]),\n y1: (p.y1 = p[1])\n }\n })\n\n return rectangleEnclosure({ bboxNodes, d, i })\n}\n\nexport const svgEncloseAnnotation = ({ screenCoordinates, d, i }) => {\n const circle = packEnclose(\n screenCoordinates.map((p) => ({ x: p[0], y: p[1], r: 2 }))\n )\n\n return circleEnclosure({ d, circle, i })\n}\n\nexport const svgHullEncloseAnnotation = ({ screenCoordinates, d, i }) => {\n return hullEnclosure({ points: screenCoordinates, d, i })\n}\n","export const extentValue = extent =>\n (extent && extent.extent) || (Array.isArray(extent) && extent) || []\n","import { projectLineData, projectSummaryData } from \"../svg/lineDrawing\"\nimport {\n projectedX,\n projectedY,\n projectedYTop,\n projectedYMiddle,\n projectedYBottom,\n projectedXBottom,\n projectedXMiddle,\n projectedXTop\n} from \"../constants/coordinateNames\"\nimport {\n differenceLine,\n stackedArea,\n bumpChart,\n lineChart,\n cumulativeLine\n} from \"../svg/lineDrawing\"\n\nimport {\n contouring,\n hexbinning,\n heatmapping,\n trendlining,\n lineBounding\n} from \"../svg/areaDrawing\"\nimport { max, min } from \"d3-array\"\n\nimport { extentValue } from \"./unflowedFunctions\"\n\nimport {\n ProjectedPoint,\n ProjectedLine,\n ProjectedSummary,\n ProjectedBin,\n RawSummary,\n RawPoint,\n RawLine,\n LineTypeSettings,\n SummaryTypeSettings,\n ExtentType,\n MarginType\n} from \"../types/generalTypes\"\n\nconst baseDefinedFunction = () => true\n\nconst whichPointsHashY = {\n top: projectedYTop,\n bottom: projectedYBottom,\n orphan: projectedY\n}\n\nconst whichPointsHashX = {\n top: projectedXTop,\n bottom: projectedXBottom,\n orphan: projectedX\n}\n\nconst builtInTransformations = {\n stackedarea: stackedArea,\n \"stackedarea-invert\": stackedArea,\n stackedpercent: stackedArea,\n \"stackedpercent-invert\": stackedArea,\n linepercent: stackedArea,\n difference: differenceLine,\n bumparea: bumpChart,\n bumpline: bumpChart,\n \"bumparea-invert\": bumpChart,\n line: lineChart,\n area: lineChart,\n cumulative: cumulativeLine,\n \"cumulative-reverse\": cumulativeLine\n}\n\ntype validStrFnTypes =\n | boolean\n | string\n | number\n | Record<string, any>\n | Record<string, any>[]\n | RawPoint\n | RawPoint[]\n\nexport function stringToFn<StrFnType extends validStrFnTypes>(\n accessor?:\n | ((args?: Record<string, any>, index?: number) => StrFnType)\n | string\n | StrFnType,\n defaultAccessor?: (arg?: Record<string, any>, i?: number) => StrFnType,\n raw?: boolean\n): (d?: Record<string, any>, i?: number) => StrFnType {\n if (!accessor && defaultAccessor) {\n return defaultAccessor\n } else if (typeof accessor === \"object\") {\n return () => accessor\n } else if (accessor instanceof Function) {\n return accessor\n } else if (raw === true) {\n const castAccessor = accessor as unknown as StrFnType\n return () => castAccessor\n } else if (typeof accessor === \"string\") {\n return (d: Record<string, any>) => (d ? d[accessor] : undefined)\n }\n\n return () => undefined\n}\n\nexport function stringToArrayFn<StrFnType extends validStrFnTypes>(\n accessor?:\n | ((arg?: Record<string, any>, index?: number) => StrFnType)\n | string\n | StrFnType\n | Array<\n | ((arg?: Record<string, any>, index?: number) => StrFnType)\n | string\n | StrFnType\n >,\n defaultAccessor?: (arg?: Record<string, any>, index?: number) => StrFnType,\n raw?: boolean\n): Array<(arg?: Record<string, any>, index?: number) => StrFnType> {\n if (accessor === undefined) {\n return [stringToFn<StrFnType>(undefined, defaultAccessor, raw)]\n }\n let arrayOfAccessors = []\n if (Array.isArray(accessor)) {\n arrayOfAccessors = accessor\n } else {\n arrayOfAccessors = [accessor]\n }\n\n return arrayOfAccessors.map((a) =>\n stringToFn<StrFnType>(a, defaultAccessor, raw)\n )\n}\n\nfunction rebuildFullDatasetWithSummaries(\n fullDataset: Array<ProjectedPoint | ProjectedBin | ProjectedSummary>,\n projectedSummaries: ProjectedSummary[]\n): Array<ProjectedPoint | ProjectedBin | ProjectedSummary> {\n const rebuilt: Array<ProjectedPoint | ProjectedBin | ProjectedSummary> = []\n for (const d of projectedSummaries) {\n rebuilt.push({ ...d })\n }\n for (const d of fullDataset) {\n if (!(d as ProjectedPoint).parentSummary) {\n rebuilt.push(d)\n }\n }\n return rebuilt\n}\n\ntype CalculateDataTypes = {\n lineDataAccessor: Array<Function>\n summaryDataAccessor: Array<Function>\n summaryStyleFn: Function\n summaryClassFn: Function\n summaryRenderModeFn: Function\n xAccessor: Array<Function>\n yAccessor: Array<Function>\n summaries?: Array<RawSummary>\n points?: Array<RawPoint>\n lines?: Array<RawLine>\n lineType: LineTypeSettings\n showLinePoints?: boolean | string\n showSummaryPoints?: boolean\n xExtent?: ExtentType\n yExtent?: ExtentType\n invertX?: boolean\n invertY?: boolean\n summaryType: SummaryTypeSettings\n adjustedSize: Array<number>\n chartSize: Array<number>\n xScaleType: Function\n yScaleType: Function\n margin: MarginType\n defined?: Function\n annotations: object[]\n filterRenderedLines: (\n value: ProjectedLine,\n index: number,\n array: ProjectedLine[]\n ) => any\n filterRenderedSummaries: (\n value: ProjectedSummary,\n index: number,\n array: ProjectedSummary[]\n ) => any\n filterRenderedPoints: (\n value: ProjectedPoint | ProjectedBin | ProjectedSummary,\n index: number,\n array: (ProjectedPoint | ProjectedBin | ProjectedSummary)[]\n ) => any\n}\n\nexport const calculateDataExtent = ({\n lineDataAccessor,\n xAccessor,\n yAccessor,\n summaries,\n points,\n lines,\n lineType,\n showLinePoints,\n showSummaryPoints,\n xExtent,\n yExtent,\n invertX,\n invertY,\n summaryDataAccessor,\n summaryType,\n adjustedSize: size,\n margin,\n summaryStyleFn,\n summaryClassFn,\n summaryRenderModeFn,\n chartSize,\n filterRenderedLines,\n filterRenderedSummaries,\n filterRenderedPoints,\n defined = baseDefinedFunction,\n annotations = []\n}: CalculateDataTypes) => {\n let fullDataset: Array<ProjectedPoint | ProjectedBin | ProjectedSummary> = []\n let initialProjectedLines = []\n\n let projectedPoints: Array<ProjectedPoint> = [],\n projectedLines: Array<ProjectedLine> = [],\n projectedSummaries: Array<ProjectedSummary> = []\n if (points) {\n xAccessor.forEach((actualXAccessor, xIndex) => {\n yAccessor.forEach((actualYAccessor, yIndex) => {\n let i = 0\n for (const d of points) {\n const x = actualXAccessor(d, i)\n const y = actualYAccessor(d, i)\n const projectedPoint = { x, y, data: d, xIndex, yIndex }\n if (Array.isArray(y)) {\n projectedPoint[projectedYBottom] = Math.min(...y)\n projectedPoint[projectedYTop] = Math.max(...y)\n projectedPoint[projectedYMiddle] =\n (projectedPoint[projectedYBottom] +\n projectedPoint[projectedYTop]) /\n 2\n }\n if (Array.isArray(x)) {\n projectedPoint[projectedXBottom] = Math.min(...x)\n projectedPoint[projectedXTop] = Math.max(...x)\n projectedPoint[projectedXMiddle] =\n (projectedPoint[projectedXBottom] +\n projectedPoint[projectedXTop]) /\n 2\n }\n projectedPoints.push(projectedPoint)\n i++\n }\n })\n })\n\n for (const d of projectedPoints) {\n fullDataset.push({\n ...d,\n [projectedX]: d[projectedXTop] || d[projectedXBottom] || d.x,\n [projectedY]: d[projectedYTop] || d[projectedYBottom] || d.y\n })\n }\n }\n if (lines) {\n initialProjectedLines = projectLineData({\n data: lines,\n lineDataAccessor,\n xProp: projectedX,\n xPropTop: projectedXTop,\n xPropBottom: projectedXBottom,\n yProp: projectedY,\n yPropTop: projectedYTop,\n yPropBottom: projectedYBottom,\n xAccessor,\n yAccessor\n })\n\n const optionsObject = {\n xProp: projectedX,\n yProp: projectedY,\n yPropMiddle: projectedYMiddle,\n yPropTop: projectedYTop,\n yPropBottom: projectedYBottom,\n xPropMiddle: projectedXMiddle,\n xPropTop: projectedXTop,\n xPropBottom: projectedXBottom\n }\n\n projectedLines = lineTransformation(\n lineType,\n optionsObject\n )(initialProjectedLines)\n\n for (const d of projectedLines) {\n for (let q = 0; q < d.data.length; q++) {\n const p = d.data[q]\n if (!defined(Object.assign({}, p.data, p), q)) continue\n const mappedP: ProjectedPoint = {\n parentLine: d,\n y: p.y,\n x: p.x,\n xTop: p.xTop,\n xMiddle: p.xMiddle,\n xBottom: p.xBottom,\n yTop: p.yTop,\n yMiddle: p.yMiddle,\n yBottom: p.yBottom,\n data: p.data\n }\n if (p.percent) {\n mappedP.percent = p.percent\n }\n fullDataset.push(mappedP)\n }\n }\n if (showLinePoints) {\n const whichPointsX =\n showLinePoints === true\n ? projectedXMiddle\n : whichPointsHashX[showLinePoints]\n\n const whichPointsY =\n showLinePoints === true\n ? projectedYMiddle\n : whichPointsHashY[showLinePoints]\n\n projectedLines.forEach((d: ProjectedLine) => {\n d.data\n .filter((p, q) => {\n const isDefined = defined(Object.assign({}, p.data, p))\n if (isDefined) {\n if (showLinePoints === \"orphan\") {\n const prePoint = d.data[q - 1]\n const postPoint = d.data[q + 1]\n\n if (\n (!prePoint ||\n !defined(Object.assign({}, prePoint.data, prePoint))) &&\n (!postPoint ||\n !defined(Object.assign({}, postPoint.data, postPoint)))\n ) {\n return true\n } else {\n return false\n }\n } else {\n return true\n }\n } else {\n return false\n }\n })\n .forEach((p) => {\n projectedPoints.push({\n ...p,\n parentLine: d,\n [projectedY]:\n p[whichPointsY] !== undefined\n ? p[whichPointsY]\n : p[projectedYMiddle] !== undefined\n ? p[projectedYMiddle]\n : p[projectedYBottom] !== undefined\n ? p[projectedYBottom]\n : p.y,\n [projectedX]:\n p[whichPointsX] !== undefined\n ? p[whichPointsX]\n : p[projectedXMiddle] !== undefined\n ? p[projectedXMiddle]\n : p[projectedXBottom] !== undefined\n ? p[projectedXBottom]\n : p.y\n })\n })\n })\n }\n }\n\n if (summaries) {\n projectedSummaries = projectSummaryData({\n data: summaries,\n summaryDataAccessor,\n xAccessor,\n yAccessor\n })\n\n projectedSummaries.forEach((d) => {\n const baseData = d._baseData\n\n if (d._xyfCoordinates.length > 0 && d._xyfCoordinates[0][0][0]) {\n d._xyfCoordinates[0].forEach((multi) => {\n if (Array.isArray(multi)) {\n multi\n .map((p, q) =>\n Object.assign({ parentSummary: d }, baseData[q], {\n [projectedX]: p[0],\n [projectedY]: p[1]\n })\n )\n .forEach((e) => {\n if (showSummaryPoints) {\n projectedPoints.push({\n x: 0,\n ...e,\n [projectedY]:\n e[projectedYTop] || e[projectedYBottom] || e[projectedY]\n })\n }\n fullDataset.push({ x: 0, y: 0, ...e })\n })\n }\n })\n } else if (d._xyfCoordinates.length > 0) {\n if (Array.isArray(d._xyfCoordinates)) {\n const coordArray: [number, number][] = d._xyfCoordinates as [\n number,\n number\n ][]\n coordArray\n .map((p, q) => ({\n parentSummary: d,\n ...baseData[q],\n [projectedX]: p[0],\n [projectedY]: p[1]\n }))\n .forEach((e) => {\n if (showSummaryPoints) {\n projectedPoints.push({\n x: 0,\n ...e,\n [projectedY]:\n e[projectedYTop] || e[projectedYBottom] || e[projectedY]\n })\n }\n fullDataset.push({ x: 0, y: 0, ...e })\n })\n }\n }\n })\n }\n\n let suitableXAnnotations = []\n let suitableYAnnotations = []\n\n if (\n xExtent &&\n !Array.isArray(xExtent) &&\n xExtent.includeAnnotations === true\n ) {\n xAccessor.forEach((actualXAccessor) => {\n annotations.forEach((annotation, annotationIndex) => {\n const x = actualXAccessor(annotation, annotationIndex)\n if (isFinite(x)) {\n suitableXAnnotations.push({\n [projectedX]: x\n })\n }\n })\n })\n }\n\n if (\n yExtent &&\n !Array.isArray(yExtent) &&\n yExtent.includeAnnotations === true\n ) {\n yAccessor.forEach((actualYAccessor) => {\n annotations.forEach((annotation, annotationIndex) => {\n const y = actualYAccessor(annotation, annotationIndex)\n if (isFinite(y)) {\n suitableYAnnotations.push({\n [projectedY]: y\n })\n }\n })\n })\n }\n\n // Single-pass extent calculation over fullDataset + annotations\n let xMinVal: number | undefined\n let xMaxVal: number | undefined\n let yMinVal: number | undefined\n let yMaxVal: number | undefined\n\n for (const d of fullDataset) {\n const xLo = d[projectedXBottom] === undefined\n ? d[projectedX]\n : Math.min(d[projectedXTop], d[projectedXBottom])\n const xHi = d[projectedXTop] === undefined\n ? d[projectedX]\n : Math.max(d[projectedXBottom], d[projectedXTop])\n const yLo = d[projectedYBottom] === undefined\n ? d[projectedY]\n : Math.min(d[projectedYTop], d[projectedYBottom])\n const yHi = d[projectedYTop] === undefined\n ? d[projectedY]\n : Math.max(d[projectedYBottom], d[projectedYTop])\n\n if (xLo !== undefined && (xMinVal === undefined || xLo < xMinVal)) xMinVal = xLo\n if (xHi !== undefined && (xMaxVal === undefined || xHi > xMaxVal)) xMaxVal = xHi\n if (yLo !== undefined && (yMinVal === undefined || yLo < yMinVal)) yMinVal = yLo\n if (yHi !== undefined && (yMaxVal === undefined || yHi > yMaxVal)) yMaxVal = yHi\n }\n\n for (const d of suitableXAnnotations) {\n const v = d[projectedX]\n if (v !== undefined && (xMinVal === undefined || v < xMinVal)) xMinVal = v\n if (v !== undefined && (xMaxVal === undefined || v > xMaxVal)) xMaxVal = v\n }\n\n for (const d of suitableYAnnotations) {\n const v = d[projectedY]\n if (v !== undefined && (yMinVal === undefined || v < yMinVal)) yMinVal = v\n if (v !== undefined && (yMaxVal === undefined || v > yMaxVal)) yMaxVal = v\n }\n\n const calculatedXExtent = [xMinVal, xMaxVal]\n const calculatedYExtent = [yMinVal, yMaxVal]\n\n const actualXExtent: number[] = extentValue(xExtent)\n const actualYExtent: number[] = extentValue(yExtent)\n\n const xMin =\n actualXExtent && actualXExtent[0] !== undefined\n ? actualXExtent[0]\n : calculatedXExtent[0]\n const xMax =\n actualXExtent && actualXExtent[1] !== undefined\n ? actualXExtent[1]\n : calculatedXExtent[1]\n\n const yMin =\n actualYExtent && actualYExtent[0] !== undefined\n ? actualYExtent[0]\n : calculatedYExtent[0]\n const yMax =\n actualYExtent && actualYExtent[1] !== undefined\n ? actualYExtent[1]\n : calculatedYExtent[1]\n\n let finalYExtent = [yMin, yMax]\n let finalXExtent = [xMin, xMax]\n\n if (invertX && !(actualXExtent && actualXExtent.length === 2)) {\n finalXExtent = [finalXExtent[1], finalXExtent[0]]\n }\n\n if (\n (lineType.type === \"bumpline\" || invertY) &&\n !(actualYExtent && actualYExtent.length === 2)\n ) {\n finalYExtent = [finalYExtent[1], finalYExtent[0]]\n }\n\n if (summaryType.type && summaryType.type === \"contour\") {\n projectedSummaries = contouring({\n summaryType,\n data: projectedSummaries,\n finalXExtent,\n finalYExtent\n })\n } else if (summaryType.type && summaryType.type === \"linebounds\") {\n projectedSummaries = lineBounding({\n summaryType,\n data: projectedSummaries,\n defined\n })\n } else if (summaryType.type && summaryType.type === \"hexbin\") {\n projectedSummaries = hexbinning({\n summaryType,\n data: projectedSummaries[0],\n processedData: summaries && !!summaries[0].processedData,\n preprocess: false,\n finalXExtent,\n finalYExtent,\n size,\n margin,\n styleFn: summaryStyleFn,\n classFn: summaryClassFn,\n renderFn: summaryRenderModeFn,\n chartSize\n }) as unknown as ProjectedSummary[]\n\n fullDataset = rebuildFullDatasetWithSummaries(fullDataset, projectedSummaries)\n } else if (summaryType.type && summaryType.type === \"heatmap\") {\n projectedSummaries = heatmapping({\n summaryType,\n data: projectedSummaries[0],\n processedData: summaries && !!summaries[0].processedData,\n preprocess: false,\n finalXExtent,\n finalYExtent,\n size,\n margin,\n styleFn: summaryStyleFn,\n classFn: summaryClassFn,\n renderFn: summaryRenderModeFn,\n chartSize\n }) as unknown as ProjectedSummary[]\n\n fullDataset = rebuildFullDatasetWithSummaries(fullDataset, projectedSummaries)\n } else if (summaryType.type && summaryType.type === \"trendline\") {\n projectedSummaries = trendlining({\n summaryType,\n data: projectedSummaries[0],\n preprocess: summaries && !!summaries[0].processedData,\n finalXExtent\n })\n\n fullDataset = rebuildFullDatasetWithSummaries(fullDataset, projectedSummaries)\n }\n\n if (filterRenderedLines) {\n projectedLines = projectedLines.filter(filterRenderedLines)\n fullDataset = fullDataset.filter((d: ProjectedPoint, i) => {\n return !d.parentLine || filterRenderedLines(d.parentLine, i, [])\n })\n }\n if (filterRenderedPoints) {\n fullDataset = fullDataset.filter(filterRenderedPoints)\n }\n if (filterRenderedSummaries) {\n projectedSummaries = projectedSummaries.filter(filterRenderedSummaries)\n fullDataset = fullDataset.filter((d: ProjectedPoint, i) => {\n return !d.parentSummary || filterRenderedSummaries(d.parentSummary, i, [])\n })\n }\n\n return {\n xExtent: finalXExtent,\n yExtent: finalYExtent,\n projectedLines,\n projectedPoints,\n projectedSummaries,\n fullDataset,\n calculatedXExtent,\n calculatedYExtent\n }\n}\n\nconst differenceCatch = (olineType, data) => {\n if (\n !builtInTransformations[olineType] ||\n (olineType === \"difference\" && data.length !== 2)\n ) {\n return \"line\"\n }\n return olineType\n}\n\nfunction lineTransformation(lineType, options) {\n return (data) =>\n builtInTransformations[differenceCatch(lineType.type, data)]({\n ...lineType,\n ...options,\n data\n })\n}\n","import * as React from \"react\"\n\nimport { scaleLinear, ScaleLinear } from \"d3-scale\"\n\nimport Axis from \"../Axis\"\n\nimport { XYFrameProps, XYFrameState } from \"../types/xyTypes\"\n\nimport {\n axisPieces,\n axisLines,\n baselineGenerator\n} from \"../visualizationLayerBehavior/axis\"\n\nimport {\n calculateDataExtent\n} from \"../data/dataFunctions\"\n\nimport { XYPipelineCache } from \"../data/xyPipelineCache\"\n\n\nimport {\n createPoints,\n createLines,\n createSummaries\n} from \"../visualizationLayerBehavior/general\"\n\nimport {\n objectifyType\n} from \"../svg/frameFunctions\"\n\nimport {\n ProjectedSummary,\n LineTypeSettings,\n SummaryTypeSettings\n} from \"../types/generalTypes\"\n\nconst screenScales = ({\n xExtent,\n yExtent,\n adjustedSize,\n xScaleType,\n yScaleType\n}: {\n xExtent: number[]\n yExtent: number[]\n adjustedSize: number[]\n xScaleType: ScaleLinear<number, number>\n yScaleType: ScaleLinear<number, number>\n}) => {\n const xDomain = [0, adjustedSize[0]]\n const yDomain = [adjustedSize[1], 0]\n\n const xScale = xScaleType\n const yScale = yScaleType\n\n if (xScaleType.domain) {\n xScaleType.domain(xExtent)\n }\n if (yScaleType.domain) {\n yScaleType.domain(yExtent)\n }\n xScaleType.range(xDomain)\n yScaleType.range(yDomain)\n\n return { xScale, yScale }\n}\n\nconst naturalLanguageLineType = {\n line: { items: \"line\", chart: \"line chart\" },\n area: { items: \"summary\", chart: \"summary chart\" },\n summary: { items: \"summary\", chart: \"summary chart\" },\n cumulative: { items: \"line\", chart: \"cumulative chart\" },\n \"cumulative-reverse\": { items: \"line\", chart: \"cumulative chart\" },\n linepercent: { items: \"line\", chart: \"line chart\" },\n stackedarea: { items: \"stacked area\", chart: \"stacked area chart\" },\n \"stackedarea-invert\": { items: \"stacked area\", chart: \"stacked area chart\" },\n stackedpercent: { items: \"stacked area\", chart: \"stacked area chart\" },\n \"stackedpercent-invert\": {\n items: \"stacked area\",\n chart: \"stacked area chart\"\n },\n bumparea: { items: \"ranked area\", chart: \"ranked area chart\" },\n \"bumparea-invert\": { items: \"ranked area\", chart: \"ranked area chart\" },\n bumpline: { items: \"ranked line\", chart: \"ranked line chart\" },\n difference: {\n items: \"line\",\n chart: \"difference chart\"\n }\n}\n\nexport const calculateXYFrame = (\n currentProps: XYFrameProps,\n prevState: XYFrameState,\n updateData: boolean,\n cache: XYPipelineCache\n) => {\n const {\n legend,\n lines,\n lineClass,\n pointStyle,\n pointRenderMode,\n pointClass,\n summaryClass,\n canvasLines,\n canvasPoints,\n canvasSummaries,\n defined,\n size,\n renderKey,\n lineType,\n summaryType,\n customLineMark,\n customPointMark,\n customSummaryMark,\n summaryStyle,\n summaryRenderMode,\n lineStyle,\n lineRenderMode,\n xExtent: baseXExtent,\n yExtent: baseYExtent,\n title,\n xScaleType: baseXScaleType = scaleLinear(),\n yScaleType: baseYScaleType = scaleLinear(),\n lineIDAccessor,\n invertX,\n invertY,\n showLinePoints,\n showSummaryPoints,\n points,\n lineDataAccessor,\n summaryDataAccessor,\n yAccessor,\n xAccessor,\n useSummariesAsInteractionLayer,\n filterRenderedLines,\n filterRenderedSummaries,\n filterRenderedPoints,\n annotations\n } = currentProps\n let {\n projectedLines,\n projectedPoints,\n projectedSummaries,\n summaries,\n fullDataset\n } = currentProps\n\n if (summaryType && points && !summaries) {\n summaries = [{ coordinates: points }]\n } else if (\n summaryType &&\n summaryType.type === \"linebounds\" &&\n lines &&\n !summaries\n ) {\n summaries = lines\n }\n\n const castXScaleType = baseXScaleType as unknown as Function\n\n const xScaleType = baseXScaleType.domain ? baseXScaleType : castXScaleType()\n\n const castYScaleType = baseYScaleType as unknown as Function\n\n const yScaleType = baseYScaleType.domain ? baseYScaleType : castYScaleType()\n\n const cachedAccessors = cache.annotatedSettings(\n xAccessor, yAccessor, summaryDataAccessor, lineDataAccessor,\n renderKey, lineType, summaryType, lineIDAccessor\n )\n\n const annotatedSettings = {\n ...cachedAccessors,\n lineType: objectifyType(lineType) as LineTypeSettings,\n summaryType: objectifyType(summaryType) as SummaryTypeSettings,\n summaries:\n !summaries || (Array.isArray(summaries) && summaries.length === 0)\n ? undefined\n : !Array.isArray(summaries)\n ? [summaries]\n : !summaryDataAccessor && !summaries[0].coordinates\n ? [{ coordinates: summaries }]\n : summaries,\n lines:\n !lines || (Array.isArray(lines) && lines.length === 0)\n ? undefined\n : !Array.isArray(lines)\n ? [lines]\n : !lineDataAccessor && !lines[0].coordinates\n ? [{ coordinates: lines }]\n : lines,\n title:\n typeof title === \"object\" &&\n !React.isValidElement(title) &&\n title !== null\n ? title\n : { title, orient: \"top\" },\n xExtent: Array.isArray(baseXExtent)\n ? baseXExtent\n : !baseXExtent\n ? undefined\n : baseXExtent.extent,\n yExtent: Array.isArray(baseYExtent)\n ? baseYExtent\n : !baseYExtent\n ? undefined\n : baseYExtent.extent\n }\n\n if (annotatedSettings.lineType.type === \"area\") {\n annotatedSettings.lineType.y1 = () => 0\n annotatedSettings.lineType.simpleLine = false\n }\n\n const { summaryStyleFn, summaryClassFn, summaryRenderModeFn } = cache.summaryStyleFns(\n summaryStyle, summaryClass, summaryRenderMode\n )\n\n const generatedAxes =\n currentProps.axes &&\n currentProps.axes.map((axisFnOrObject) =>\n typeof axisFnOrObject === \"function\"\n ? axisFnOrObject({ size: currentProps.size })\n : axisFnOrObject\n )\n\n const { margin, adjustedPosition, adjustedSize } = cache.marginCalc(\n currentProps.margin, generatedAxes, annotatedSettings.title, currentProps.size\n )\n\n let calculatedXExtent = [],\n calculatedYExtent = [],\n yExtent,\n xExtent,\n xExtentSettings,\n yExtentSettings\n\n if (typeof baseXExtent === \"object\") {\n xExtentSettings = baseXExtent\n } else {\n xExtentSettings = { extent: baseXExtent }\n }\n\n if (typeof baseYExtent === \"object\") {\n yExtentSettings = baseYExtent\n } else {\n yExtentSettings = { extent: baseYExtent }\n }\n\n let xScale, yScale\n\n if (\n updateData ||\n (currentProps.dataVersion &&\n currentProps.dataVersion !== prevState.dataVersion)\n ) {\n //This will always fire at this point because xExtent/yExtent are just defined up there so revisit this logic\n if (\n !xExtent ||\n !yExtent ||\n !fullDataset ||\n (!projectedLines && !projectedPoints && !projectedSummaries)\n ) {\n ;({\n xExtent,\n yExtent,\n projectedLines,\n projectedPoints,\n projectedSummaries,\n fullDataset,\n calculatedXExtent,\n calculatedYExtent\n } = calculateDataExtent({\n lineDataAccessor: annotatedSettings.lineDataAccessor,\n summaryDataAccessor: annotatedSettings.summaryDataAccessor,\n xAccessor: annotatedSettings.xAccessor,\n yAccessor: annotatedSettings.yAccessor,\n lineType: annotatedSettings.lineType,\n summaryType: annotatedSettings.summaryType,\n summaries: annotatedSettings.summaries,\n points,\n lines: annotatedSettings.lines,\n showLinePoints,\n showSummaryPoints,\n xExtent: baseXExtent,\n yExtent: baseYExtent,\n invertX,\n invertY,\n adjustedSize,\n margin,\n summaryStyleFn,\n summaryClassFn,\n summaryRenderModeFn,\n chartSize: size,\n xScaleType,\n yScaleType,\n defined,\n filterRenderedLines,\n filterRenderedSummaries,\n filterRenderedPoints,\n annotations\n }))\n }\n\n ;({ xScale, yScale } = screenScales({\n xExtent,\n yExtent,\n adjustedSize,\n xScaleType: xScaleType.copy(),\n yScaleType: yScaleType.copy()\n }))\n } else {\n ;({\n xExtent,\n yExtent,\n projectedLines,\n projectedPoints,\n projectedSummaries,\n fullDataset,\n calculatedXExtent,\n calculatedYExtent\n } = prevState)\n if (\n adjustedSize[0] === prevState.adjustedSize[0] &&\n adjustedSize[1] === prevState.adjustedSize[1]\n ) {\n xScale = prevState.xScale\n yScale = prevState.yScale\n } else {\n ;({ xScale, yScale } = screenScales({\n xExtent,\n yExtent,\n adjustedSize,\n xScaleType,\n yScaleType\n }))\n }\n }\n\n xExtent =\n Array.isArray(xExtentSettings.extent) && xExtentSettings.extent.length === 2\n ? xExtentSettings.extent\n : xExtent\n yExtent =\n Array.isArray(yExtentSettings.extent) && yExtentSettings.extent.length === 2\n ? yExtentSettings.extent\n : yExtent\n\n const canvasDrawing = []\n\n let axes\n let axesTickLines\n\n const existingBaselines = {}\n\n if (generatedAxes) {\n axesTickLines = []\n axes = generatedAxes.map((d, i) => {\n let axisClassname = d.className || \"\"\n axisClassname += \" axis\"\n let axisScale = yScale\n if (existingBaselines[d.orient]) {\n d.baseline = d.baseline || false\n }\n existingBaselines[d.orient] = true\n if (d.orient === \"top\" || d.orient === \"bottom\") {\n axisClassname += \" x\"\n axisScale = xScale\n } else {\n axisClassname += \" y\"\n }\n axisClassname += ` ${d.orient}`\n\n let tickValues\n if (d.tickValues && Array.isArray(d.tickValues)) {\n tickValues = d.tickValues\n } else if (d.tickValues instanceof Function) {\n //otherwise assume a function\n tickValues = d.tickValues(fullDataset, currentProps.size, axisScale)\n }\n const axisSize = [adjustedSize[0], adjustedSize[1]]\n\n const axisParts = axisPieces({\n padding: d.padding,\n tickValues,\n scale: axisScale,\n ticks: d.ticks,\n orient: d.orient,\n size: axisSize,\n footer: d.footer,\n tickSize: d.tickSize,\n jaggedBase: d.jaggedBase\n })\n const axisTickLines = (\n <g key={`axes-tick-lines-${i}`} className={`axis ${axisClassname}`}>\n {axisLines({\n axisParts,\n orient: d.orient,\n tickLineGenerator: d.tickLineGenerator,\n className: axisClassname,\n jaggedBase: d.jaggedBase,\n scale: axisScale,\n showOutboundTickLines: d.showOutboundTickLines\n })}\n {d.baseline === \"under\" &&\n baselineGenerator(d.orient, adjustedSize, d.className)}\n </g>\n )\n axesTickLines.push(axisTickLines)\n return (\n <Axis\n {...d}\n key={d.key || `axis-${i}`}\n annotationFunction={d.axisAnnotationFunction}\n axisParts={axisParts}\n size={axisSize}\n margin={margin}\n tickValues={tickValues}\n scale={axisScale}\n className={axisClassname}\n xyPoints={fullDataset}\n />\n )\n })\n }\n let legendSettings\n\n if (legend) {\n legendSettings = legend === true ? {} : legend\n if (projectedLines && !legendSettings.legendGroups) {\n const typeString = annotatedSettings.lineType.type\n const type =\n typeof typeString === \"string\" &&\n [\"stackedarea\", \"stackedpercent\", \"bumparea\"].indexOf(typeString) === -1\n ? \"line\"\n : \"fill\"\n const legendGroups = [\n {\n styleFn: currentProps.lineStyle,\n type,\n items: projectedLines.map((d) =>\n Object.assign({ label: annotatedSettings.lineIDAccessor(d) }, d)\n )\n }\n ]\n legendSettings.legendGroups = legendGroups\n }\n }\n const areaAnnotations = []\n\n if (annotatedSettings.summaryType.label && projectedSummaries) {\n projectedSummaries.forEach((d, i) => {\n if (d.bounds) {\n const bounds = Array.isArray(d.bounds) ? d.bounds : [d.bounds]\n bounds.forEach((labelBounds) => {\n const label =\n typeof annotatedSettings.summaryType.label === \"function\"\n ? annotatedSettings.summaryType.label(d)\n : annotatedSettings.summaryType.label\n if (label && label !== null) {\n const labelPosition = label.position || \"center\"\n const labelCenter = [\n xScale(labelBounds[labelPosition][0]),\n yScale(labelBounds[labelPosition][1])\n ]\n const labelContent = label.content || ((p) => p.value || p.id || i)\n\n areaAnnotations.push({\n x: labelCenter[0],\n y: labelCenter[1],\n dx: label.dx,\n dy: label.dy,\n className: label.className,\n type: label.type || \"callout\",\n note: label.note || { title: labelContent(d) },\n subject: label.subject || { text: labelContent(d) },\n connector: label.connector\n })\n }\n })\n }\n })\n } else if (\n annotatedSettings.summaryType.showSlope &&\n projectedSummaries &&\n projectedSummaries[0]\n ) {\n const firstSummary: ProjectedSummary & { value?: string; r2?: number } = projectedSummaries[0] as ProjectedSummary & { value?: string; r2?: number }\n\n const firstPoint = firstSummary._xyfCoordinates[0]\n const finalPoint =\n firstSummary._xyfCoordinates[firstSummary._xyfCoordinates.length - 1]\n\n areaAnnotations.push({\n x: firstPoint[0],\n y: firstPoint[1],\n x1: finalPoint[0],\n x2: finalPoint[1],\n type: \"trendline-annotation\",\n value: firstSummary.value,\n r2: firstSummary.r2\n })\n }\n\n const lineAriaLabel =\n annotatedSettings.lineType.type !== undefined &&\n typeof annotatedSettings.lineType.type === \"string\" &&\n naturalLanguageLineType[annotatedSettings.lineType.type]\n\n const xyFrameRender = {\n lines: {\n accessibleTransform: (data, i) => ({\n ...data[i].data[data[i].data.length - 1],\n type: \"frame-hover\"\n }),\n data: projectedLines,\n ...cache.lineStyleFns(lineStyle, lineClass, lineRenderMode, canvasLines),\n customMark: customLineMark,\n type: annotatedSettings.lineType,\n defined: defined,\n renderKeyFn: annotatedSettings.renderKeyFn,\n ariaLabel: lineAriaLabel,\n axesData: generatedAxes,\n behavior: createLines\n },\n summaries: {\n accessibleTransform: (data, i) => ({ ...data[i], type: \"frame-hover\" }),\n data: projectedSummaries,\n styleFn: summaryStyleFn,\n classFn: summaryClassFn,\n renderMode: summaryRenderModeFn,\n canvasRender: cache.summaryCanvasRender(canvasSummaries),\n customMark: customSummaryMark,\n type: annotatedSettings.summaryType,\n renderKeyFn: annotatedSettings.renderKeyFn,\n behavior: createSummaries\n },\n points: {\n accessibleTransform: (data, i) => ({\n type: \"frame-hover\",\n ...(data[i].data || data[i])\n }),\n data: projectedPoints,\n ...cache.pointStyleFns(pointStyle, pointClass, pointRenderMode, canvasPoints),\n customMark: customPointMark,\n renderKeyFn: annotatedSettings.renderKeyFn,\n showLinePoints,\n behavior: createPoints\n }\n }\n\n if (\n xExtentSettings.onChange &&\n prevState.calculatedXExtent.join(\",\") !== calculatedXExtent.join(\",\")\n ) {\n xExtentSettings.onChange(calculatedXExtent)\n }\n if (\n yExtentSettings.onChange &&\n prevState.calculatedYExtent.join(\",\") !== calculatedYExtent.join(\",\")\n ) {\n yExtentSettings.onChange(calculatedYExtent)\n }\n\n let overlay = undefined\n if (useSummariesAsInteractionLayer && projectedSummaries) {\n overlay = createSummaries({\n xScale,\n yScale,\n data: projectedSummaries\n }).map((m, i) => ({\n ...m.props,\n style: { fillOpacity: 0 },\n overlayData: projectedSummaries && projectedSummaries[i] // luckily createSummaries is a map fn\n }))\n }\n\n return {\n lineData: currentProps.lines,\n pointData: currentProps.points,\n summaryData: currentProps.summaries,\n dataVersion: currentProps.dataVersion,\n projectedLines,\n projectedPoints,\n projectedSummaries,\n canvasDrawing,\n fullDataset,\n adjustedPosition,\n adjustedSize,\n backgroundGraphics: currentProps.backgroundGraphics,\n foregroundGraphics: currentProps.foregroundGraphics,\n axesData: generatedAxes,\n axes,\n axesTickLines,\n renderNumber: prevState.renderNumber + 1,\n xScale,\n yScale,\n xAccessor: annotatedSettings.xAccessor,\n yAccessor: annotatedSettings.yAccessor,\n xExtent: [\n xExtent[0] === undefined ? calculatedXExtent[0] : xExtent[0],\n xExtent[1] === undefined ? calculatedXExtent[1] : xExtent[1]\n ],\n yExtent: [\n yExtent[0] === undefined ? calculatedYExtent[0] : yExtent[0],\n yExtent[1] === undefined ? calculatedYExtent[1] : yExtent[1]\n ],\n calculatedXExtent,\n calculatedYExtent,\n margin,\n legendSettings,\n areaAnnotations,\n xyFrameRender,\n size,\n annotatedSettings,\n overlay,\n props: currentProps\n }\n}\n","import memoize from \"memoize-one\"\nimport { ProjectedLine, RawPoint, RawSummary } from \"../types/generalTypes\"\nimport { calculateMargin, adjustedPositionSize } from \"../svg/frameFunctions\"\nimport { stringToFn, stringToArrayFn } from \"./dataFunctions\"\n\nconst emptyObjectReturnFunction = () => ({})\nconst emptyStringReturnFunction = () => \"\"\n\nexport function createXYPipelineCache() {\n return {\n annotatedSettings: memoize((\n xAccessor: any,\n yAccessor: any,\n summaryDataAccessor: any,\n lineDataAccessor: any,\n renderKey: any,\n lineType: any,\n summaryType: any,\n lineIDAccessor: any\n ) => ({\n xAccessor: stringToArrayFn<number>(xAccessor, (d: number[]) => d[0]),\n yAccessor: stringToArrayFn<number>(yAccessor, (d: number[]) => d[1]),\n summaryDataAccessor: stringToArrayFn<RawPoint[]>(\n summaryDataAccessor,\n (d: RawSummary | number[]) => (Array.isArray(d) ? d : d.coordinates)\n ),\n lineDataAccessor: stringToArrayFn<RawPoint[]>(\n lineDataAccessor,\n (d: ProjectedLine | number[]) => (Array.isArray(d) ? d : d.coordinates)\n ),\n renderKeyFn: stringToFn<string>(\n renderKey,\n (d: Record<string, any>, i: number) => `line-${i}`,\n true\n ),\n lineIDAccessor: stringToFn<string>(lineIDAccessor, (l) => l.semioticLineID),\n })),\n\n marginCalc: memoize((\n margin: any,\n axes: any,\n title: any,\n size: number[]\n ) => {\n const calculatedMargin = calculateMargin({ margin, axes, title, size })\n const { adjustedPosition, adjustedSize } = adjustedPositionSize({\n size,\n margin: calculatedMargin\n })\n return { margin: calculatedMargin, adjustedPosition, adjustedSize }\n }),\n\n summaryStyleFns: memoize((\n summaryStyle: any,\n summaryClass: any,\n summaryRenderMode: any\n ) => ({\n summaryStyleFn: stringToFn<Record<string, any>>(summaryStyle, emptyObjectReturnFunction, true),\n summaryClassFn: stringToFn<string>(summaryClass, emptyStringReturnFunction, true),\n summaryRenderModeFn: stringToFn<Record<string, any> | string>(summaryRenderMode, undefined, true),\n })),\n\n lineStyleFns: memoize((\n lineStyle: any,\n lineClass: any,\n lineRenderMode: any,\n canvasLines: any\n ) => ({\n styleFn: stringToFn<Record<string, any>>(lineStyle, emptyObjectReturnFunction, true),\n classFn: stringToFn<string>(lineClass, emptyStringReturnFunction, true),\n renderMode: stringToFn<Record<string, any> | string>(lineRenderMode, undefined, true),\n canvasRender: stringToFn<boolean>(canvasLines, undefined, true),\n })),\n\n pointStyleFns: memoize((\n pointStyle: any,\n pointClass: any,\n pointRenderMode: any,\n canvasPoints: any\n ) => ({\n styleFn: stringToFn<Record<string, any>>(pointStyle, emptyObjectReturnFunction, true),\n classFn: stringToFn<string>(pointClass, emptyStringReturnFunction, true),\n renderMode: stringToFn<Record<string, any> | string>(pointRenderMode, undefined, true),\n canvasRender: stringToFn<boolean>(canvasPoints, undefined, true),\n })),\n\n summaryCanvasRender: memoize((canvasSummaries: any) =>\n stringToFn<boolean>(canvasSummaries, undefined, true)\n ),\n }\n}\n\nexport type XYPipelineCache = ReturnType<typeof createXYPipelineCache>\n","//size is a special case and handled checking the actual values in the size array\n\nconst sharedChangeProps = [\n \"customClickBehavior\",\n \"customHoverBehavior\",\n \"customDoubleClickBehavior\",\n \"hoverAnnotation\",\n \"name\",\n \"title\",\n \"margin\",\n \"className\",\n \"additionalDefs\",\n \"renderKey\"\n]\n\n// Legacy export for backward compatibility\nexport const xyFrameDataProps = [\n \"lines\",\n \"points\",\n \"summaries\",\n \"xScaleType\",\n \"yScaleType\",\n \"xAccessor\",\n \"yAccessor\",\n \"lineDataAccessor\",\n \"areaDataAccessor\",\n \"summaryDataAccessor\",\n \"lineType\",\n \"showLinePoints\",\n \"showSummaryPoints\",\n \"defined\",\n \"summaryType\"\n]\n\n// NEW: Props that affect data projection - trigger calculateDataExtent\nexport const xyFrameDataAffectingProps = [\n // Core data props\n \"lines\",\n \"points\",\n \"summaries\",\n\n // Data accessors\n \"xAccessor\",\n \"yAccessor\",\n \"lineDataAccessor\",\n \"areaDataAccessor\",\n \"summaryDataAccessor\",\n \"lineIDAccessor\",\n\n // Data transformation\n \"lineType\",\n \"summaryType\",\n \"showLinePoints\",\n \"showSummaryPoints\",\n \"defined\",\n\n // Extent overrides (affect extent calculation)\n \"xExtent\",\n \"yExtent\",\n\n // Scale types (affect data domain)\n \"xScaleType\",\n \"yScaleType\",\n \"invertX\",\n \"invertY\",\n\n // Filters (affect which data is processed)\n \"filterRenderedLines\",\n \"filterRenderedPoints\",\n \"filterRenderedSummaries\"\n]\n\n// NEW: Props that affect scales/layout - trigger scale recalc but not data projection\nexport const xyFrameScaleAffectingProps = [\n // Size and layout\n \"size\",\n \"margin\",\n \"title\",\n\n // Axes (affect margin calculation)\n \"axes\",\n\n // All data-affecting props also affect scales\n ...xyFrameDataAffectingProps\n]\n\n// NEW: Props that only affect styling/rendering - no data or scale recalc\nexport const xyFrameStylingProps = [\n // Styling\n \"lineStyle\",\n \"pointStyle\",\n \"summaryStyle\",\n\n // Classes\n \"lineClass\",\n \"pointClass\",\n \"areaClass\",\n \"summaryClass\",\n \"className\",\n\n // Custom marks\n \"customPointMark\",\n \"customLineMark\",\n \"customSummaryMark\",\n\n // Render modes\n \"lineRenderMode\",\n \"pointRenderMode\",\n \"summaryRenderMode\",\n \"canvasLines\",\n \"canvasPoints\",\n \"canvasSummaries\",\n\n // Interaction (no data recalc needed)\n \"customClickBehavior\",\n \"customHoverBehavior\",\n \"customDoubleClickBehavior\",\n \"hoverAnnotation\",\n\n // Other rendering\n \"additionalDefs\",\n \"renderKey\",\n \"name\"\n]\n\n// Legacy export - now includes all prop categories\nexport const xyFrameChangeProps = [\n ...xyFrameDataAffectingProps,\n ...xyFrameStylingProps,\n \"axes\", // Duplicated but needed for backward compatibility\n \"size\",\n \"margin\",\n \"title\"\n]\n\n// NEW: Props that affect data projection - trigger calculateOrdinalFrame data processing\nexport const orFrameDataAffectingProps = [\n // Core data\n \"data\",\n\n // Data accessors\n \"oAccessor\",\n \"rAccessor\",\n \"dataAccessor\",\n\n // Data transformation\n \"type\",\n \"summaryType\",\n \"connectorType\",\n \"projection\",\n \"orient\",\n\n // Scale types (affect data domain)\n \"oScaleType\",\n \"rScaleType\",\n\n // Extent overrides\n \"oExtent\",\n \"rExtent\",\n \"invertO\",\n \"invertR\",\n\n // Layout affecting data\n \"oPadding\",\n \"oSort\",\n \"dynamicColumnWidth\",\n \"rBaseline\",\n \"summaryPosition\",\n\n // Custom rendering\n \"renderFn\"\n]\n\n// NEW: Props that affect scales/layout - trigger scale recalc but not data projection\nexport const orFrameScaleAffectingProps = [\n // Size and layout\n \"size\",\n \"margin\",\n \"title\",\n\n // Axes and labels (affect margin/layout)\n \"axes\",\n \"oLabel\",\n\n // All data-affecting props also affect scales\n ...orFrameDataAffectingProps\n]\n\n// NEW: Props that only affect styling/rendering - no data or scale recalc\nexport const orFrameStylingProps = [\n // Styling\n \"style\",\n \"connectorStyle\",\n \"summaryStyle\",\n\n // Classes\n \"className\",\n\n // Interaction (no data recalc needed)\n \"customClickBehavior\",\n \"customHoverBehavior\",\n \"customDoubleClickBehavior\",\n \"hoverAnnotation\",\n \"pieceHoverAnnotation\",\n \"summaryHoverAnnotation\",\n\n // Other rendering\n \"additionalDefs\",\n \"renderKey\",\n \"name\"\n]\n\n// Legacy export - now includes all prop categories\nexport const orFrameChangeProps = [\n ...orFrameDataAffectingProps,\n ...orFrameStylingProps,\n \"axes\", // Duplicated but needed for backward compatibility\n \"size\",\n \"margin\",\n \"title\",\n \"oLabel\"\n]\n\n// NEW: Props that affect data projection - trigger calculateNetworkFrame data processing\nexport const networkFrameDataAffectingProps = [\n // Core data\n \"graph\",\n \"nodes\",\n \"edges\",\n\n // Data accessors\n \"nodeIDAccessor\",\n \"sourceAccessor\",\n \"targetAccessor\",\n \"nodeSizeAccessor\",\n \"edgeWidthAccessor\",\n\n // Layout and type\n \"networkType\",\n \"edgeType\",\n\n // Filters\n \"filterRenderedNodes\",\n\n // Custom rendering\n \"renderFn\"\n]\n\n// NEW: Props that affect scales/layout - trigger scale recalc but not data projection\nexport const networkFrameScaleAffectingProps = [\n // Size and layout\n \"size\",\n \"margin\",\n \"title\",\n\n // Labels (might affect layout)\n \"nodeLabels\",\n\n // All data-affecting props also affect scales\n ...networkFrameDataAffectingProps\n]\n\n// NEW: Props that only affect styling/rendering - no data or scale recalc\nexport const networkFrameStylingProps = [\n // Styling\n \"nodeStyle\",\n \"edgeStyle\",\n\n // Custom marks\n \"customNodeIcon\",\n\n // Classes\n \"className\",\n\n // Interaction (no data recalc needed)\n \"customClickBehavior\",\n \"customHoverBehavior\",\n \"customDoubleClickBehavior\",\n \"hoverAnnotation\",\n\n // Other rendering\n \"additionalDefs\",\n \"renderKey\",\n \"name\"\n]\n\n// Legacy export - now includes all prop categories\nexport const networkFrameChangeProps = [\n ...networkFrameDataAffectingProps,\n ...networkFrameStylingProps,\n \"size\",\n \"margin\",\n \"title\",\n \"nodeLabels\"\n]\n","\"use client\"\nimport { useRef, useMemo } from \"react\"\n\n// this hooks should only be used for transitioning from class to function components\n// this hooks is supposed to replicate behavior of getDerivedStateFromProps\n// and some assumptions related to it:\n// 1. initial state, defined in \"constructor\" should not trigger additional computation\n// 2. the computation function can opt-out if it thinks that nothing has changed, so the existing state should be used\n//\n// ideally, the state must be refactored to be function component friendly, so this hooks should become irrelevant\nexport function useDerivedStateFromProps<Props, State>(\n fn: (nextProps: Props, prevState: State) => Partial<State> | null,\n props: Props,\n initialState: State\n): State {\n let prevRef = useRef(initialState)\n let state = useMemo(() => {\n let state = prevRef.current\n let patch = fn(props, state)\n if (patch != null) {\n return { ...state, ...patch }\n }\n return state\n }, [props])\n prevRef.current = state\n return state\n}\n","\"use client\"\nimport { useEffect, useRef } from \"react\"\nimport { GeneralFrameProps, GeneralFrameState } from \"./types/generalTypes\"\n\n// to properly replicate behavior of componentWillUnmount, the effect must not have dependencies\n// which is why we need to store latest props and state values in ref that can be accessible during unmount\n// TODO get rid of the behavior and props.onUnmount\nexport function useLegacyUnmountCallback(props: GeneralFrameProps, state: GeneralFrameState) {\n let ref = useRef<[GeneralFrameProps, GeneralFrameState]>()\n ref.current = [props, state]\n useEffect(() => {\n return () => {\n const [props, state] = ref.current\n const onUnmount = props.onUnmount\n if (onUnmount) {\n onUnmount(props, state)\n }\n }\n }, [])\n}\n","\"use client\"\nimport * as React from \"react\"\nimport { useCallback, useMemo, useRef } from \"react\"\n\nimport { scaleLinear } from \"d3-scale\"\n\n// components\n\nimport Frame from \"./Frame\"\nimport TooltipPositioner from \"./TooltipPositioner\"\nimport {\n svgXYAnnotation,\n svgHighlight,\n basicReactAnnotation,\n svgEncloseAnnotation,\n svgRectEncloseAnnotation,\n svgHullEncloseAnnotation,\n svgXAnnotation,\n svgYAnnotation,\n svgBoundsAnnotation,\n svgLineAnnotation,\n svgAreaAnnotation,\n svgHorizontalPointsAnnotation,\n svgVerticalPointsAnnotation,\n htmlTooltipAnnotation\n} from \"./annotationRules/xyframeRules\"\n\nimport { desaturationLayer } from \"./annotationRules/baseRules\"\n\nimport { relativeY, relativeX, findPointByID } from \"./svg/lineDrawing\"\n\nimport { calculateMargin, adjustedPositionSize } from \"./svg/frameFunctions\"\n\nimport {\n projectedX,\n projectedY,\n projectedYTop,\n projectedYMiddle,\n projectedYBottom,\n projectedXMiddle,\n projectedXTop,\n projectedXBottom\n} from \"./constants/coordinateNames\"\n\nimport { extentValue } from \"./data/unflowedFunctions\"\n\nimport { findFirstAccessorValue } from \"./data/multiAccessorUtils\"\n\nimport { calculateXYFrame } from \"./processing/xyDrawing\"\nimport { createXYPipelineCache, XYPipelineCache } from \"./data/xyPipelineCache\"\n\nimport {\n xyFrameChangeProps,\n xyFrameDataAffectingProps,\n xyFrameScaleAffectingProps,\n xyFrameStylingProps\n} from \"./constants/frame_props\"\n\nimport {\n ProjectedPoint,\n ProjectedSummary,\n ProjectedLine\n} from \"./types/generalTypes\"\n\nimport { AnnotationType } from \"./types/annotationTypes\"\n\nimport { XYFrameProps, XYFrameState } from \"./types/xyTypes\"\n\nimport { UpdatedAnnotationLayerProps } from \"./AnnotationLayer/AnnotationLayer\"\nimport { useDerivedStateFromProps } from \"./useDerivedStateFromProps\"\nimport { useLegacyUnmountCallback } from \"./useLegacyUnmountCallback\"\n\nlet xyframeKey = \"\"\nconst chars = \"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\"\nfor (let i = 32; i > 0; --i)\n xyframeKey += chars[Math.floor(Math.random() * chars.length)]\n\nconst projectedCoordinateNames = {\n y: projectedY,\n x: projectedX,\n yMiddle: projectedYMiddle,\n yTop: projectedYTop,\n yBottom: projectedYBottom,\n xMiddle: projectedXMiddle,\n xTop: projectedXTop,\n xBottom: projectedXBottom\n}\n\nconst defaultProps = {\n annotations: [],\n foregroundGraphics: undefined,\n size: [500, 500],\n className: \"\",\n lineType: \"line\",\n name: \"xyframe\",\n dataVersion: undefined\n}\n\nexport function XYFrameInner<TDatum = Record<string, any>>(allProps: XYFrameProps<TDatum>) {\n const props = { ...defaultProps, ...allProps }\n const pipelineCacheRef = useRef(createXYPipelineCache())\n const baseState = {\n size: [500, 500],\n dataVersion: undefined,\n lineData: undefined,\n pointData: undefined,\n summaryData: undefined,\n projectedLines: undefined,\n projectedPoints: undefined,\n projectedSummaries: undefined,\n fullDataset: [],\n adjustedPosition: [0, 0],\n adjustedSize: [500, 500],\n backgroundGraphics: null,\n foregroundGraphics: null,\n axesData: undefined,\n axes: undefined,\n axesTickLines: undefined,\n renderNumber: 0,\n margin: { top: 0, bottom: 0, left: 0, right: 0 },\n calculatedXExtent: [0, 0],\n calculatedYExtent: [0, 0],\n xAccessor: [(d: { x: number }) => d.x],\n yAccessor: [(d: { y: number }) => d.y],\n xExtent: [0, 0],\n yExtent: [0, 0],\n areaAnnotations: [],\n xScale: scaleLinear(),\n yScale: scaleLinear(),\n title: null,\n legendSettings: undefined,\n xyFrameRender: {},\n canvasDrawing: [],\n annotatedSettings: {\n xAccessor: undefined,\n yAccessor: undefined,\n summaryDataAccessor: undefined,\n lineDataAccessor: undefined,\n renderKeyFn: undefined,\n lineType: undefined,\n summaryType: undefined,\n lineIDAccessor: undefined,\n summaries: undefined,\n lines: undefined,\n title: undefined,\n xExtent: undefined,\n yExtent: undefined\n },\n overlay: undefined,\n props\n }\n\n const initialState = useMemo(\n () => ({\n ...baseState,\n ...calculateXYFrame(props, baseState, true, pipelineCacheRef.current)\n }),\n []\n )\n const state = useDerivedStateFromProps(\n (nextProps, prevState) => deriveXYFrameState(nextProps, prevState, pipelineCacheRef.current),\n props,\n initialState\n )\n\n const {\n size,\n className,\n annotationSettings,\n annotations,\n additionalDefs,\n hoverAnnotation,\n interaction,\n customClickBehavior,\n customHoverBehavior,\n customDoubleClickBehavior,\n canvasPostProcess,\n canvasSummaries,\n canvasPoints,\n canvasLines,\n afterElements,\n beforeElements,\n renderOrder,\n matte,\n frameKey,\n showLinePoints,\n sketchyRenderingEngine,\n disableContext,\n frameRenderOrder,\n disableCanvasInteraction,\n interactionSettings,\n disableProgressiveRendering,\n transition\n } = props\n\n const {\n backgroundGraphics,\n foregroundGraphics,\n adjustedPosition,\n adjustedSize,\n margin,\n axes,\n axesTickLines,\n xScale,\n yScale,\n fullDataset,\n dataVersion,\n areaAnnotations,\n legendSettings,\n xyFrameRender,\n annotatedSettings,\n overlay\n } = state\n\n useLegacyUnmountCallback(props, state)\n\n const propsRef = useRef(props)\n propsRef.current = props\n const stateRef = useRef(state)\n stateRef.current = state\n\n const defaultSVGRuleCb = useCallback(\n (args) => defaultXYSVGRule(propsRef.current, stateRef.current, args),\n []\n )\n const defaultHTMLRuleCb = useCallback(\n (args) => defaultXYHTMLRule(propsRef.current, stateRef.current, args),\n []\n )\n\n // Memoize merged annotations to prevent unnecessary array creation\n const mergedAnnotations = useMemo(\n () =>\n areaAnnotations.length > 0\n ? [...annotations, ...areaAnnotations]\n : annotations,\n [annotations, areaAnnotations]\n )\n\n // Memoize showLinePoints conversion\n const showLinePointsValue = useMemo(\n () => (typeof showLinePoints === \"string\" ? showLinePoints : undefined),\n [showLinePoints]\n )\n\n // Memoize canvas rendering flag\n const canvasRendering = useMemo(\n () => !!(canvasSummaries || canvasPoints || canvasLines),\n [canvasSummaries, canvasPoints, canvasLines]\n )\n\n return (\n <Frame\n name=\"xyframe\"\n renderPipeline={xyFrameRender}\n adjustedPosition={adjustedPosition}\n size={size}\n projectedCoordinateNames={projectedCoordinateNames}\n xScale={xScale}\n yScale={yScale}\n axes={axes}\n axesTickLines={axesTickLines}\n title={annotatedSettings.title}\n dataVersion={dataVersion}\n matte={matte}\n className={className}\n adjustedSize={adjustedSize}\n frameKey={frameKey || xyframeKey}\n additionalDefs={additionalDefs}\n hoverAnnotation={hoverAnnotation}\n defaultSVGRule={defaultSVGRuleCb}\n defaultHTMLRule={defaultHTMLRuleCb}\n annotations={mergedAnnotations}\n annotationSettings={annotationSettings}\n legendSettings={legendSettings}\n projectedYMiddle={projectedYMiddle}\n interaction={interaction}\n customClickBehavior={customClickBehavior}\n customHoverBehavior={customHoverBehavior}\n customDoubleClickBehavior={customDoubleClickBehavior}\n points={fullDataset}\n showLinePoints={showLinePointsValue}\n margin={margin}\n backgroundGraphics={backgroundGraphics}\n foregroundGraphics={foregroundGraphics}\n beforeElements={beforeElements}\n afterElements={afterElements}\n disableContext={disableContext}\n canvasPostProcess={canvasPostProcess}\n canvasRendering={canvasRendering}\n renderOrder={renderOrder}\n overlay={overlay}\n sketchyRenderingEngine={sketchyRenderingEngine}\n frameRenderOrder={frameRenderOrder}\n disableCanvasInteraction={disableCanvasInteraction}\n interactionSettings={interactionSettings}\n disableProgressiveRendering={disableProgressiveRendering}\n transition={transition}\n />\n )\n}\n\nfunction deriveXYFrameState(nextProps: XYFrameProps, prevState: XYFrameState, cache?: XYPipelineCache) {\n const { props } = prevState\n const {\n xExtent: oldXExtent = [],\n yExtent: oldYExtent = [],\n size: oldSize,\n dataVersion: oldDataVersion,\n lineData,\n summaryData,\n pointData\n } = prevState\n const {\n xExtent: baseNewXExtent,\n yExtent: baseNewYExtent,\n size: newSize,\n dataVersion: newDataVersion,\n lines: newLines,\n summaries: newSummaries,\n points: newPoints\n } = nextProps\n\n const newXExtent: number[] = extentValue(baseNewXExtent)\n\n const newYExtent: number[] = extentValue(baseNewYExtent)\n\n const extentChange =\n (oldXExtent[0] !== newXExtent[0] && newXExtent[0] !== undefined) ||\n (oldYExtent[0] !== newYExtent[0] && newYExtent[0] !== undefined) ||\n (oldXExtent[1] !== newXExtent[1] && newXExtent[1] !== undefined) ||\n (oldYExtent[1] !== newYExtent[1] && newYExtent[1] !== undefined)\n\n const lineChange = lineData !== newLines\n\n const summaryChange = summaryData !== newSummaries\n\n const pointChange = pointData !== newPoints\n\n // Check which category of props changed\n const dataPropsChanged = !oldDataVersion && xyFrameDataAffectingProps.some(\n (prop) => props[prop] !== nextProps[prop]\n )\n\n const scalePropsChanged = !oldDataVersion && xyFrameScaleAffectingProps.some(\n (prop) => props[prop] !== nextProps[prop]\n )\n\n const sizeChanged = oldSize[0] !== newSize[0] || oldSize[1] !== newSize[1]\n\n // Force full recalc if dataVersion changed or no fullDataset exists\n if (\n (oldDataVersion && oldDataVersion !== newDataVersion) ||\n !prevState.fullDataset\n ) {\n return calculateXYFrame(nextProps, prevState, true, cache)\n }\n\n // Full data recalculation needed if:\n // - Data arrays changed (lines, points, summaries)\n // - Extent overrides changed\n // - Data-affecting props changed (accessors, types, etc.)\n if (\n lineChange ||\n summaryChange ||\n pointChange ||\n extentChange ||\n dataPropsChanged\n ) {\n return calculateXYFrame(nextProps, prevState, true, cache)\n }\n\n // Scale-only recalculation needed if:\n // - Size changed\n // - Scale-affecting props changed (but not data props)\n if (sizeChanged || scalePropsChanged) {\n // TODO: Once calculateXYFrame supports updateScales flag, use:\n // return calculateXYFrame(nextProps, prevState, { updateData: false, updateScales: true })\n // For now, still do full recalc to avoid breaking changes\n return calculateXYFrame(nextProps, prevState, false, cache)\n }\n\n // Only styling changed - no recalc needed, React will re-render with existing state\n return null\n}\n\nconst annotationTypeStrings = new Set([\n \"label\", \"callout\", \"callout-circle\", \"callout-rect\",\n \"callout-custom\", \"xy-threshold\", \"bracket\"\n])\n\nfunction defaultXYSVGRule(\n props: XYFrameProps,\n state: XYFrameState,\n {\n d: baseD,\n i,\n lines,\n summaries,\n points,\n annotationLayer\n }: {\n d: AnnotationType\n i: number\n annotationLayer: UpdatedAnnotationLayerProps\n lines: { data: [] }\n summaries: { data: [] }\n points: {\n data: []\n styleFn: (args?: Record<string, any>, index?: number) => Record<string, any>\n }\n }\n) {\n const {\n showLinePoints,\n defined,\n margin: baseMargin,\n size,\n svgAnnotationRules\n } = props\n\n const {\n xyFrameRender,\n xScale,\n yScale,\n xAccessor,\n yAccessor,\n axesData,\n annotatedSettings\n } = state\n\n let screenCoordinates: number[] | number[][] = []\n const idAccessor = annotatedSettings.lineIDAccessor\n\n if (baseD.type === \"highlight\") {\n return svgHighlight({\n d: baseD,\n i,\n idAccessor,\n lines,\n summaries,\n points,\n xScale,\n yScale,\n xyFrameRender,\n defined\n })\n }\n\n const d: AnnotationType = baseD.coordinates\n ? baseD\n : findPointByID({\n point: baseD,\n idAccessor,\n lines,\n xScale,\n projectedX,\n xAccessor\n })\n\n if (!d) return null\n\n const margin = calculateMargin({\n margin: baseMargin,\n axes: axesData,\n title: annotatedSettings.title,\n size: size\n })\n const { adjustedPosition, adjustedSize } = adjustedPositionSize({\n size: size,\n margin\n })\n\n if (!d.coordinates && !d.bounds) {\n screenCoordinates = [\n relativeX({\n point: d,\n projectedXMiddle,\n projectedX,\n xAccessor,\n xScale\n }) || 0,\n relativeY({\n point: d,\n projectedYMiddle,\n projectedY,\n yAccessor,\n yScale,\n showLinePoints\n }) || 0\n ]\n } else if (!d.bounds) {\n screenCoordinates = d.coordinates.reduce(\n (coords: number[], p: AnnotationType | ProjectedPoint) => {\n const xCoordinate = relativeX({\n point: p,\n projectedXMiddle,\n projectedX,\n xAccessor,\n xScale\n })\n\n const yCoordinate = relativeY({\n point: p,\n projectedYMiddle,\n projectedY,\n yAccessor,\n yScale\n })\n if (Array.isArray(yCoordinate)) {\n return [\n ...coords,\n [xCoordinate, Math.min(...yCoordinate)],\n [xCoordinate, Math.max(...yCoordinate)]\n ]\n } else if (Array.isArray(xCoordinate)) {\n return [\n ...coords,\n [Math.min(...xCoordinate), yCoordinate],\n [Math.max(...xCoordinate), yCoordinate]\n ]\n } else {\n return [...coords, [xCoordinate, yCoordinate]]\n }\n },\n [] as number[]\n ) as number[]\n }\n\n const { voronoiHover } = annotationLayer\n\n const customSVG =\n svgAnnotationRules &&\n svgAnnotationRules({\n d,\n i,\n screenCoordinates,\n xScale,\n yScale,\n xAccessor,\n yAccessor,\n xyFrameProps: props,\n xyFrameState: state,\n summaries,\n points,\n lines,\n voronoiHover,\n adjustedPosition,\n adjustedSize,\n annotationLayer\n })\n if (svgAnnotationRules !== undefined && customSVG !== null) {\n return customSVG\n } else if (d.type === \"desaturation-layer\") {\n return desaturationLayer({\n style: d.style instanceof Function ? d.style(d, i) : d.style,\n size: adjustedSize,\n i,\n key: d.key\n })\n } else if (d.type === \"xy\" || d.type === \"frame-hover\") {\n return svgXYAnnotation({ d, i, screenCoordinates })\n } else if (typeof d.type === \"function\" || annotationTypeStrings.has(d.type)) {\n return basicReactAnnotation({ d, screenCoordinates, i })\n } else if (d.type === \"enclose\") {\n return svgEncloseAnnotation({ d, screenCoordinates, i })\n } else if (d.type === \"enclose-rect\") {\n return svgRectEncloseAnnotation({ d, screenCoordinates, i })\n } else if (d.type === \"enclose-hull\") {\n return svgHullEncloseAnnotation({ d, screenCoordinates, i })\n } else if (d.type === \"x\") {\n return svgXAnnotation({\n d,\n screenCoordinates,\n i,\n adjustedSize\n })\n } else if (d.type === \"y\") {\n return svgYAnnotation({\n d,\n screenCoordinates,\n i,\n adjustedSize,\n adjustedPosition\n })\n } else if (d.type === \"bounds\") {\n return svgBoundsAnnotation({\n d,\n i,\n adjustedSize,\n xAccessor,\n yAccessor,\n xScale,\n yScale\n })\n } else if (d.type === \"line\") {\n return svgLineAnnotation({ d, i, screenCoordinates })\n } else if (d.type === \"area\") {\n return svgAreaAnnotation({\n d,\n i,\n xScale,\n xAccessor,\n yScale,\n yAccessor,\n annotationLayer\n })\n } else if (d.type === \"horizontal-points\") {\n return svgHorizontalPointsAnnotation({\n d,\n lines: lines.data,\n points: points.data,\n xScale,\n yScale,\n pointStyle: points.styleFn\n })\n } else if (d.type === \"vertical-points\") {\n return svgVerticalPointsAnnotation({\n d,\n lines: lines.data,\n points: points.data,\n xScale,\n yScale,\n pointStyle: points.styleFn\n })\n }\n return null\n}\n\nfunction defaultXYHTMLRule(\n props: XYFrameProps,\n state: XYFrameState,\n {\n d: baseD,\n i,\n lines,\n summaries,\n points,\n annotationLayer\n }: {\n d: AnnotationType\n i: number\n annotationLayer: UpdatedAnnotationLayerProps\n lines: { data: ProjectedLine[] }\n summaries: { data: ProjectedSummary[] }\n points: {\n data: ProjectedPoint[]\n styleFn: (args?: Record<string, any>, index?: number) => Record<string, any>\n }\n }\n) {\n const {\n xAccessor,\n yAccessor,\n xScale,\n yScale,\n annotatedSettings,\n axesData\n } = state\n\n const { voronoiHover } = annotationLayer\n\n let screenCoordinates = []\n\n const {\n tooltipContent,\n optimizeCustomTooltipPosition,\n htmlAnnotationRules,\n size,\n showLinePoints,\n margin: baseMargin\n } = props\n\n const idAccessor = annotatedSettings.lineIDAccessor\n const d: AnnotationType = findPointByID({\n point: baseD,\n idAccessor,\n lines,\n xScale,\n projectedX,\n xAccessor\n })\n\n if (!d) {\n return null\n }\n\n const xCoord =\n d[projectedXMiddle] || d[projectedX] || findFirstAccessorValue(xAccessor, d)\n const yCoord =\n d[projectedYMiddle] || d[projectedY] || findFirstAccessorValue(yAccessor, d)\n\n const xString = xCoord && xCoord.toString ? xCoord.toString() : xCoord\n const yString = yCoord && yCoord.toString ? yCoord.toString() : yCoord\n\n const margin = calculateMargin({\n margin: baseMargin,\n axes: axesData,\n title: annotatedSettings.title,\n size: size\n })\n const { adjustedPosition, adjustedSize } = adjustedPositionSize({\n size,\n margin\n })\n if (!d.coordinates) {\n screenCoordinates = [\n xScale(xCoord) || 0,\n relativeY({\n point: d,\n projectedYMiddle,\n projectedY,\n showLinePoints,\n yAccessor,\n yScale\n }) || 0\n ]\n } else {\n screenCoordinates = d.coordinates.map((p) => {\n const foundP = findPointByID({\n point: { x: 0, y: 0, ...p },\n idAccessor,\n lines,\n xScale,\n projectedX,\n xAccessor\n })\n return [\n (xScale(findFirstAccessorValue(xAccessor, d)) || 0) +\n adjustedPosition[0],\n (relativeY({\n point: foundP,\n projectedYMiddle,\n projectedY,\n yAccessor,\n yScale\n }) || 0) + adjustedPosition[1]\n ]\n })\n }\n\n const customAnnotation =\n htmlAnnotationRules &&\n htmlAnnotationRules({\n d,\n i,\n screenCoordinates,\n xScale,\n yScale,\n xAccessor,\n yAccessor,\n xyFrameProps: props,\n xyFrameState: state,\n summaries,\n points,\n lines,\n voronoiHover,\n adjustedPosition,\n adjustedSize,\n annotationLayer\n })\n\n if (htmlAnnotationRules && customAnnotation !== null) {\n return customAnnotation\n }\n if (d.type === \"frame-hover\") {\n let content = (\n <div\n className=\"tooltip-content\"\n data-testid=\"tooltip-content\"\n >\n <p key=\"html-annotation-content-1\">{xString}</p>\n <p key=\"html-annotation-content-2\">{yString}</p>\n {d.percent ? (\n <p key=\"html-annotation-content-3\">\n {Math.floor(d.percent * 1000) / 10}%\n </p>\n ) : null}\n </div>\n )\n\n if (d.type === \"frame-hover\" && tooltipContent) {\n content = optimizeCustomTooltipPosition ? (\n <TooltipPositioner\n tooltipContent={tooltipContent}\n tooltipContentArgs={d}\n />\n ) : (\n tooltipContent(d)\n )\n }\n return htmlTooltipAnnotation({\n content,\n screenCoordinates,\n i,\n d,\n adjustedSize\n })\n }\n return null\n}\n\nXYFrameInner.displayName = \"XYFrame\"\nconst XYFrame = React.memo(XYFrameInner) as typeof XYFrameInner\nexport default XYFrame\n","import * as React from \"react\"\n\nimport Annotation from \"../Annotation\"\n\n\nimport { packEnclose } from \"d3-hierarchy\"\nimport { max, min, sum, extent } from \"d3-array\"\nimport { pointOnArcAtAngle } from \"../svg/pieceDrawing\"\nimport { circleEnclosure, rectangleEnclosure } from \"./baseRules\"\nimport { findFirstAccessorValue } from \"../data/multiAccessorUtils\"\nimport { line } from \"d3-shape\"\nimport { curveHash } from \"../visualizationLayerBehavior/general\"\nimport TooltipPositioner from \"../TooltipPositioner\"\n\nconst derivePieceValue = (accessor, piece) => {\n const pieceVal = accessor(piece)\n return (pieceVal && pieceVal.toString && pieceVal.toString()) || pieceVal\n}\n\nfunction polarToCartesian(centerX, centerY, radius, angleInDegrees) {\n const angleInRadians = ((angleInDegrees - 90) * Math.PI) / 180.0\n\n return {\n x: centerX + radius * Math.cos(angleInRadians),\n y: centerY + radius * Math.sin(angleInRadians)\n }\n}\n\nfunction pieContentGenerator({ column }) {\n return (\n <div\n className=\"tooltip-content\"\n data-testid=\"tooltip-content\"\n >\n <p key=\"or-annotation-1\">{column.name}</p>\n <p key=\"or-annotation-2\">{`${(column.pct * 100).toFixed(0)}%`}</p>\n </div>\n )\n}\n\nfunction arcBracket({\n x,\n y,\n radius,\n startAngle,\n endAngle,\n inset,\n outset,\n curly = true\n}) {\n const start = polarToCartesian(x, y, radius + outset, endAngle)\n const end = polarToCartesian(x, y, radius + outset, startAngle)\n\n const innerStart = polarToCartesian(x, y, radius + outset - inset, endAngle)\n const innerEnd = polarToCartesian(x, y, radius + outset - inset, startAngle)\n\n const angleSize = endAngle - startAngle\n const largeArcFlag = angleSize <= 180 ? \"0\" : \"1\"\n let d\n if (curly) {\n const curlyOffset = Math.min(10, angleSize / 4)\n\n const middleLeft = polarToCartesian(\n x,\n y,\n radius + outset,\n (startAngle + endAngle) / 2 + curlyOffset\n )\n\n const middle = polarToCartesian(\n x,\n y,\n radius + outset + 10,\n (startAngle + endAngle) / 2\n )\n const middleRight = polarToCartesian(\n x,\n y,\n radius + outset,\n (startAngle + endAngle) / 2 - curlyOffset\n )\n\n d = [\n \"M\",\n innerStart.x,\n innerStart.y,\n \"L\",\n start.x,\n start.y,\n \"A\",\n radius + outset,\n radius + outset,\n 0,\n 0,\n 0,\n middleLeft.x,\n middleLeft.y,\n \"A\",\n radius + outset,\n radius + outset,\n 1,\n 0,\n 1,\n middle.x,\n middle.y,\n \"A\",\n radius + outset,\n radius + outset,\n 1,\n 0,\n 1,\n middleRight.x,\n middleRight.y,\n\n \"A\",\n radius + outset,\n radius + outset,\n 0,\n 0,\n 0,\n end.x,\n end.y,\n \"L\",\n innerEnd.x,\n innerEnd.y\n ].join(\" \")\n } else {\n d = [\n \"M\",\n innerStart.x,\n innerStart.y,\n \"L\",\n start.x,\n start.y,\n \"A\",\n radius + outset,\n radius + outset,\n 0,\n largeArcFlag,\n 0,\n end.x,\n end.y,\n \"L\",\n innerEnd.x,\n innerEnd.y\n ].join(\" \")\n }\n\n const midAngle = (startAngle + endAngle) / 2\n let textOffset, largeTextArcFlag, finalTextEnd, finalTextStart, arcFlip\n const lowerArc = midAngle > 90 && midAngle < 270\n if (lowerArc) {\n textOffset = 12\n largeTextArcFlag = endAngle - startAngle <= 180 ? \"0\" : \"1\"\n arcFlip = 0\n } else {\n largeTextArcFlag = endAngle - startAngle <= 180 ? \"0\" : \"1\"\n textOffset = 5\n arcFlip = 1\n }\n textOffset += curly ? 10 : 0\n const textStart = polarToCartesian(\n x,\n y,\n radius + outset + textOffset,\n endAngle\n )\n const textEnd = polarToCartesian(\n x,\n y,\n radius + outset + textOffset,\n startAngle\n )\n if (lowerArc) {\n finalTextStart = textStart\n finalTextEnd = textEnd\n } else {\n finalTextStart = textEnd\n finalTextEnd = textStart\n }\n\n const textD = [\n \"M\",\n finalTextStart.x,\n finalTextStart.y,\n \"A\",\n radius + outset + textOffset,\n radius + outset + textOffset,\n arcFlip,\n largeTextArcFlag,\n arcFlip,\n finalTextEnd.x,\n finalTextEnd.y\n ].join(\" \")\n\n return { arcPath: d, textArcPath: textD }\n}\n\nexport const getColumnScreenCoordinates = ({\n d,\n projectedColumns,\n oAccessor,\n summaryType,\n type,\n projection,\n adjustedPosition,\n adjustedSize\n}) => {\n const column =\n typeof d.column === \"object\"\n ? d.column\n : projectedColumns[d.facetColumn] ||\n projectedColumns[findFirstAccessorValue(oAccessor, d)]\n\n if (!column) {\n return { coordinates: [0, 0], pieces: undefined, column: undefined }\n }\n const pieces = column.pieceData || column.pieces\n\n const positionValue =\n (summaryType.type && summaryType.type !== \"none\") ||\n [\"swarm\", \"point\", \"clusterbar\", \"timeline\"].find((p) => p === type.type)\n ? max(pieces.map((p) => p.scaledValue))\n : projection === \"horizontal\"\n ? max(\n pieces.map((p) =>\n p.value >= 0 ? p.scaledValue + p.bottom : p.bottom\n )\n )\n : min(\n pieces.map((p) =>\n p.value >= 0 ? p.bottom - p.scaledValue : p.bottom\n )\n )\n\n let xPosition = column.middle + adjustedPosition[0]\n let yPosition =\n (summaryType.type && summaryType.type !== \"none\") ||\n [\"swarm\", \"point\", \"clusterbar\", \"timeline\"].find((p) => p === type.type)\n ? adjustedSize[1] - positionValue\n : positionValue\n yPosition += 10\n\n if (projection === \"horizontal\") {\n yPosition = column.middle\n xPosition = positionValue + adjustedPosition[0]\n } else if (projection === \"radial\") {\n const { pieArc } = column\n\n const { translate, outerPoint, centroid } = pieArc\n\n xPosition = (centroid[0] + outerPoint[0]) / 2 + translate[0]\n yPosition = (centroid[1] + outerPoint[1]) / 2 + translate[1]\n }\n return { coordinates: [xPosition, yPosition], pieces, column }\n}\n\nexport const svgHighlightRule = ({\n d,\n pieceIDAccessor,\n orFrameRender,\n oAccessor\n}) => {\n const thisID = pieceIDAccessor(d)\n const thisO = findFirstAccessorValue(oAccessor, d)\n\n const { pieces } = orFrameRender\n const { styleFn } = pieces\n\n const foundPieces =\n (pieces &&\n pieces.data\n .filter((p) => {\n return (\n (thisID === undefined ||\n pieceIDAccessor({ ...p.piece, ...p.piece.data }) === thisID) &&\n (thisO === undefined ||\n findFirstAccessorValue(oAccessor, p.piece.data) === thisO)\n )\n })\n .map((p, q) => {\n let styleObject = {\n style: styleFn({ ...p.piece, ...p.piece.data })\n }\n if (d.style && typeof d.style === \"function\") {\n styleObject = {\n style: {\n ...styleObject,\n ...d.style({ ...p.piece, ...p.piece.data })\n }\n }\n } else if (d.style) {\n styleObject = { style: { ...styleObject, ...d.style } }\n }\n const styledD = { ...p.renderElement, ...styleObject }\n const className = `highlight-annotation ${\n (d.class &&\n typeof d.class === \"function\" &&\n d.class(p.piece.data, q)) ||\n (d.class && d.class) ||\n \"\"\n }`\n\n if (React.isValidElement(p.renderElement)) {\n return React.cloneElement(p.renderElement, {\n ...styleObject,\n className\n })\n }\n\n const { markType, ...restProps } = styledD\n return React.createElement(markType || 'path', {\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: \"2px\",\n key: `highlight-piece-${q}`,\n ...restProps,\n className\n })\n })) ||\n []\n\n return [...foundPieces]\n}\n\nexport const findIDPiece = (pieceIDAccessor, oColumn, d) => {\n const foundIDValue = pieceIDAccessor(d)\n\n const pieceID = foundIDValue === \"\" && d.rName ? d.rName : foundIDValue\n\n const basePieces =\n oColumn &&\n oColumn.pieceData.filter(\n (r) => r.rName === pieceID || pieceIDAccessor(r.data) === pieceID\n )\n\n if (\n pieceID === \"\" ||\n basePieces === undefined ||\n basePieces === false ||\n basePieces.length !== 1\n )\n return d\n\n const basePiece = basePieces[0]\n\n const reactAnnotationProps = [\n \"type\",\n \"label\",\n \"note\",\n \"connector\",\n \"disabled\",\n \"color\",\n \"subject\"\n ]\n\n if (basePiece) {\n reactAnnotationProps.forEach((prop) => {\n if (d[prop]) basePiece[prop] = d[prop]\n })\n }\n\n return basePiece\n}\n\nexport const screenProject = ({\n p,\n adjustedSize,\n rScale,\n oColumn,\n rAccessor,\n idPiece,\n projection,\n rScaleType\n}) => {\n const basePValue = findFirstAccessorValue(rAccessor, p) || p.value\n const pValue = Array.isArray(basePValue)\n ? Math.max(...basePValue)\n : basePValue\n\n let o\n if (oColumn) {\n o = oColumn.middle\n } else {\n o = 0\n }\n\n if (oColumn && projection === \"radial\") {\n return pointOnArcAtAngle(\n [adjustedSize[0] / 2, adjustedSize[1] / 2],\n oColumn.pct_middle,\n idPiece && (idPiece.x === undefined ? idPiece.scaledValue : idPiece.x)\n ? idPiece.x / 2 || (idPiece.bottom + idPiece.scaledValue / 2) / 2\n : pValue / 2\n )\n }\n if (projection === \"horizontal\") {\n return [\n idPiece && idPiece.scaledEndValue\n ? idPiece.scaledEndValue\n : idPiece && idPiece.scaledValue\n ? idPiece.value >= 0\n ? idPiece.bottom + idPiece.scaledValue\n : idPiece.bottom\n : rScale(pValue),\n o\n ]\n }\n const newScale = rScaleType\n .copy()\n .domain(rScale.domain())\n .range(rScale.range().reverse())\n\n return [\n o,\n idPiece && (idPiece.x === undefined ? idPiece.scaledValue : idPiece.x)\n ? idPiece.y === undefined\n ? idPiece.value >= 0\n ? idPiece.bottom - idPiece.scaledValue\n : idPiece.bottom\n : idPiece.y\n : newScale(pValue)\n ]\n}\n\nexport const svgORRule = ({ d, i, screenCoordinates, projection }) => {\n return (\n <text \n key={`${d.label}annotationtext${i}`}\n x={parseInt(\n screenCoordinates[0] + (projection === \"horizontal\" ? 10 : 0)\n )}\n y={parseInt(screenCoordinates[1] + (projection === \"vertical\" ? 10 : 0))}\n className={`annotation annotation-or-label ${d.className || \"\"}`}\n data-testid=\"annotation-or-label\"\n textAnchor=\"middle\"\n >\n {d.label}\n </text>\n )\n}\n\nexport const basicReactAnnotationRule = ({ d, i, screenCoordinates }) => {\n const noteData = Object.assign(\n {\n dx: 0,\n dy: 0,\n note: { label: d.label, orientation: d.orientation, align: d.align },\n connector: { end: \"arrow\" }\n },\n d,\n {\n x: screenCoordinates[0],\n y: screenCoordinates[1],\n type: typeof d.type === \"function\" ? d.type : undefined,\n screenCoordinates\n }\n )\n if (d.fixedX) noteData.x = d.fixedX\n if (d.fixedY) noteData.y = d.fixedY\n return <Annotation key={d.key || `annotation-${i}`} noteData={noteData} />\n}\n\nexport const svgEncloseRule = ({ d, i, screenCoordinates }) => {\n const circle = packEnclose(\n screenCoordinates.map((p) => ({ x: p[0], y: p[1], r: 2 }))\n )\n\n return circleEnclosure({ d, i, circle })\n}\n\nexport const svgRRule = ({\n d,\n i,\n screenCoordinates,\n rScale,\n rAccessor,\n adjustedSize,\n adjustedPosition,\n projection\n}) => {\n let x, y, xPosition, yPosition, subject, dx, dy\n if (projection === \"radial\") {\n return (\n <Annotation\n key={d.key || `annotation-${i}`}\n noteData={Object.assign(\n {\n dx: 50,\n dy: 50,\n note: { label: d.label },\n connector: { end: \"arrow\" }\n },\n d,\n {\n type: \"callout-circle\",\n subject: {\n radius: rScale(findFirstAccessorValue(rAccessor, d)) / 2,\n radiusPadding: 0\n },\n x: adjustedSize[0] / 2,\n y: adjustedSize[1] / 2\n }\n )}\n />\n )\n } else if (projection === \"horizontal\") {\n dx = 50\n dy = 50\n yPosition = d.offset || i * 25\n x = screenCoordinates[0]\n y = yPosition\n subject = {\n x,\n y1: 0,\n y2: adjustedSize[1] + adjustedPosition[1]\n }\n } else {\n dx = 50\n dy = -20\n xPosition = d.offset || i * 25\n y = screenCoordinates[1]\n x = xPosition\n subject = {\n y,\n x1: 0,\n x2: adjustedSize[0] + adjustedPosition[0]\n }\n }\n\n const noteData = Object.assign(\n {\n dx,\n dy,\n note: { label: d.label },\n connector: { end: \"arrow\" }\n },\n d,\n {\n type: \"xy-threshold\",\n x,\n y,\n subject\n }\n )\n return <Annotation key={d.key || `annotation-${i}`} noteData={noteData} />\n}\n\nexport const svgCategoryRule = ({\n projection,\n d,\n i,\n categories,\n adjustedSize\n}) => {\n const {\n bracketType = \"curly\",\n position = projection === \"vertical\" ? \"top\" : \"left\",\n depth = 30,\n offset = 0,\n padding = 0\n } = d\n const actualCategories = Array.isArray(d.categories)\n ? d.categories\n : [d.categories]\n\n const cats = actualCategories.map((c) => categories[c])\n\n if (projection === \"radial\") {\n const arcPadding = padding / adjustedSize[1]\n const leftX = min(\n cats.map((p) => p.pct_start + p.pct_padding / 2 + arcPadding / 2)\n )\n const rightX = max(\n cats.map((p) => p.pct_start + p.pct - p.pct_padding / 2 - arcPadding / 2)\n )\n\n const chartSize = Math.min(adjustedSize[0], adjustedSize[1]) / 2\n const centerX = adjustedSize[0] / 2\n const centerY = adjustedSize[1] / 2\n\n const { arcPath, textArcPath } = arcBracket({\n x: 0,\n y: 0,\n radius: chartSize,\n startAngle: leftX * 360,\n endAngle: rightX * 360,\n inset: depth,\n outset: offset,\n curly: bracketType === \"curly\"\n })\n\n const textPathID = `text-path-${i}-${Math.random()}`\n return (\n <g\n className=\"category-annotation annotation\"\n transform={`translate(${centerX},${centerY})`}\n >\n <path d={arcPath} fill=\"none\" stroke=\"currentColor\" />\n <path id={textPathID} d={textArcPath} style={{ display: \"none\" }} />\n <text font-size=\"12.5\">\n <textPath\n startOffset={\"50%\"}\n textAnchor={\"middle\"}\n xlinkHref={`#${textPathID}`}\n >\n {d.label}\n </textPath>\n </text>\n </g>\n )\n } else {\n const leftX = min(cats.map((p) => p.x))\n const rightX = max(cats.map((p) => p.x + p.width))\n\n if (projection === \"vertical\") {\n let yPosition = position === \"top\" ? 0 : adjustedSize[1]\n yPosition += position === \"top\" ? -offset : offset\n const noteData = {\n type: \"bracket\",\n y: yPosition,\n x: leftX - padding,\n note: {\n title: d.title || d.label,\n label: d.title ? d.label : undefined\n },\n subject: {\n type: bracketType,\n width: rightX - leftX + padding * 2,\n depth: position === \"top\" ? -depth : depth\n }\n }\n return <Annotation key={d.key || `annotation-${i}`} noteData={noteData} />\n } else if (projection === \"horizontal\") {\n let yPosition = position === \"left\" ? 0 : adjustedSize[0]\n yPosition += position === \"left\" ? -offset : offset\n const noteData = {\n type: \"bracket\",\n x: yPosition,\n y: leftX - padding,\n note: {\n title: d.title || d.label,\n label: d.title ? d.label : undefined\n },\n subject: {\n type: bracketType,\n height: rightX - leftX + padding * 2,\n depth: position === \"left\" ? -depth : depth\n }\n }\n return <Annotation key={d.key || `annotation-${i}`} noteData={noteData} />\n }\n }\n}\n\nexport const htmlFrameHoverRule = ({\n d,\n i,\n rAccessor,\n oAccessor,\n projection,\n tooltipContent,\n optimizeCustomTooltipPosition,\n pieceIDAccessor,\n projectedColumns,\n adjustedSize,\n rScale,\n type,\n rScaleType\n}) => {\n tooltipContent =\n tooltipContent === \"pie\"\n ? () =>\n pieContentGenerator({\n column: d.column\n })\n : tooltipContent\n //To string because React gives a DOM error if it gets a date\n let contentFill\n const pO = findFirstAccessorValue(oAccessor, d) || d.column\n const oColumn = projectedColumns[pO]\n\n const idPiece = findIDPiece(pieceIDAccessor, oColumn, d)\n\n if (!idPiece) {\n return null\n }\n\n const screenCoordinates =\n ((type.type === \"clusterbar\" ||\n type.type === \"point\" ||\n type.type === \"swarm\") &&\n d.x !== undefined &&\n d.y !== undefined) ||\n d.isSummaryData\n ? [d.x, d.y]\n : screenProject({\n p: d,\n adjustedSize,\n rScale,\n oColumn,\n rAccessor,\n idPiece,\n projection,\n rScaleType\n })\n\n if (d.isSummaryData) {\n let summaryContent = d.label\n\n if (d.pieces && d.pieces.length !== 0) {\n if (d.pieces.length === 1) {\n summaryContent = []\n rAccessor.forEach((actualRAccessor) => {\n summaryContent.push(actualRAccessor(d.pieces[0].data))\n })\n } else {\n summaryContent = []\n rAccessor.forEach((actualRAccessor) => {\n const pieceData = extent(\n d.pieces.map((p) => p.data).map(actualRAccessor)\n )\n summaryContent.push(`From ${pieceData[0]} to ${pieceData[1]}`)\n })\n }\n }\n const summaryLabel = <p key=\"html-annotation-content-2\">{summaryContent}</p>\n contentFill = [\n <p key=\"html-annotation-content-1\">{d.key}</p>,\n summaryLabel,\n <p key=\"html-annotation-content-3\">{d.value}</p>\n ]\n } else if (d.data) {\n contentFill = []\n\n oAccessor.forEach((actualOAccessor, i) => {\n if (idPiece.data) {\n const pieceOVal = derivePieceValue(actualOAccessor, idPiece.data)\n contentFill.push(\n <p key={`html-annotation-content-o-${i}`}>{pieceOVal}</p>\n )\n }\n })\n\n rAccessor.forEach((actualRAccessor, i) => {\n if (idPiece.data) {\n const pieceRVal = derivePieceValue(actualRAccessor, idPiece.data)\n contentFill.push(\n <p key={`html-annotation-content-r-${i}`}>{pieceRVal}</p>\n )\n }\n })\n } else if (d.label) {\n contentFill = d.label\n }\n let content = (\n <div\n className=\"tooltip-content\"\n data-testid=\"tooltip-content\"\n >\n {contentFill}\n </div>\n )\n\n if (d.type === \"frame-hover\" && tooltipContent && idPiece) {\n const tooltipContentArgs = {\n ...idPiece,\n ...idPiece.data,\n column: oColumn,\n pieces: oColumn ? oColumn.pieceData.map(p => p.data) : []\n }\n content = optimizeCustomTooltipPosition ? (\n <TooltipPositioner\n tooltipContent={tooltipContent}\n tooltipContentArgs={tooltipContentArgs}\n />\n ) : (\n tooltipContent(tooltipContentArgs)\n )\n }\n\n const xPos = parseInt(screenCoordinates[0])\n const flipped = adjustedSize && xPos > adjustedSize[0] / 2\n const tooltipStyle: React.CSSProperties = {\n position: \"absolute\",\n top: `${parseInt(screenCoordinates[1])}px`\n }\n\n if (flipped) {\n tooltipStyle.right = `${adjustedSize[0] - xPos}px`\n } else {\n tooltipStyle.left = `${xPos}px`\n }\n\n return (\n <div\n key={`xylabel-${i}`}\n className={`annotation annotation-or-label ${projection} ${\n d.className || \"\"\n }`}\n data-testid=\"annotation-or-label\"\n style={tooltipStyle}\n >\n {content}\n </div>\n )\n}\n\nexport const htmlColumnHoverRule = ({\n d,\n i,\n summaryType,\n oAccessor,\n type,\n adjustedPosition,\n adjustedSize,\n projection,\n tooltipContent,\n optimizeCustomTooltipPosition,\n projectedColumns\n}) => {\n //we need to ignore negative pieces to make sure the hover behavior populates on top of the positive bar\n const {\n coordinates: [xPosition, yPosition],\n pieces,\n column\n } = getColumnScreenCoordinates({\n d,\n projectedColumns,\n oAccessor,\n summaryType,\n type,\n projection,\n adjustedPosition,\n adjustedSize\n })\n\n if (column === undefined) {\n return null\n }\n //To string because React gives a DOM error if it gets a date\n const oContent = []\n oAccessor.forEach((actualOAccessor, i) => {\n if (pieces[0].data) {\n const pieceOVal = derivePieceValue(actualOAccessor, pieces[0].data)\n oContent.push(<p key={`or-annotation-o-${i}`}>{pieceOVal}</p>)\n }\n })\n\n let content = (\n <div\n className=\"tooltip-content\"\n data-testid=\"tooltip-content\"\n >\n {oContent}\n <p key=\"or-annotation-2\">\n {sum(pieces.map((p) => p.value).filter((p) => p > 0))}\n </p>\n </div>\n )\n\n if (d.type === \"column-hover\" && tooltipContent) {\n if (tooltipContent === \"pie\") {\n tooltipContent = pieContentGenerator\n }\n\n const tooltipContentArgs = {\n ...d,\n pieces: pieces.map((p) => p.data),\n column,\n oAccessor\n }\n content = optimizeCustomTooltipPosition ? (\n <TooltipPositioner\n tooltipContent={tooltipContent}\n tooltipContentArgs={tooltipContentArgs}\n />\n ) : (\n tooltipContent(tooltipContentArgs)\n )\n } else if (d.label) {\n content = (\n <div\n className=\"tooltip-content\"\n data-testid=\"tooltip-content\"\n >\n {d.label}\n </div>\n )\n }\n\n const xPos = parseInt(xPosition)\n const flipped = adjustedSize && xPos > adjustedSize[0] / 2\n const tooltipStyle: React.CSSProperties = {\n position: \"absolute\",\n top: `${parseInt(yPosition)}px`\n }\n\n if (flipped) {\n tooltipStyle.right = `${adjustedSize[0] - xPos}px`\n } else {\n tooltipStyle.left = `${xPos}px`\n }\n\n return (\n <div\n key={`orlabel-${i}`}\n className={`annotation annotation-or-label ${projection} ${\n d.className || \"\"\n }`}\n data-testid=\"annotation-or-label\"\n style={tooltipStyle}\n >\n {content}\n </div>\n )\n}\n\nexport const svgRectEncloseRule = ({ d, i, screenCoordinates }) => {\n const bboxNodes = screenCoordinates.map((p) => {\n return {\n x0: (p.x0 = p[0]),\n x1: (p.x1 = p[0]),\n y0: (p.y0 = p[1]),\n y1: (p.y1 = p[1])\n }\n })\n\n return rectangleEnclosure({ bboxNodes, d, i })\n}\n\nexport const svgOrdinalLine = ({ screenCoordinates, d, voronoiHover }) => {\n const lineGenerator = line()\n .x((d) => d[0])\n .y((d) => d[1])\n if (d.curve) {\n const interpolator = curveHash[d.curve] || d.curve\n lineGenerator.curve(interpolator)\n }\n\n const lineStyle =\n typeof d.lineStyle === \"function\" ? d.lineStyle(d) : d.lineStyle || {}\n\n return (\n <g key=\"ordinal-line-annotation\">\n <path\n stroke=\"currentColor\"\n fill=\"none\"\n style={lineStyle}\n d={lineGenerator(screenCoordinates)}\n />\n {(d.points || d.interactive) &&\n screenCoordinates.map((p, q) => {\n const pointStyle =\n typeof d.pointStyle === \"function\"\n ? d.pointStyle(d.coordinates[q], q)\n : d.pointStyle || {}\n\n return (\n <g\n transform={`translate(${p[0]},${p[1]})`}\n key={`ordinal-line-point-${q}`}\n >\n {d.points && (\n <circle style={pointStyle} r={d.radius || 5} fill=\"currentColor\" />\n )}\n {d.interactive && (\n <circle\n style={{ pointerEvents: \"all\" }}\n r={d.hoverRadius || 15}\n opacity={0}\n onMouseEnter={() =>\n voronoiHover({\n type: \"frame-hover\",\n ...d.coordinates[q],\n data: d.coordinates[q]\n })\n }\n onMouseOut={() => voronoiHover()}\n />\n )}\n </g>\n )\n })}\n </g>\n )\n}\n","import * as React from \"react\"\nimport Axis from \"../Axis\"\n\n/**\n * Generates an Axis component for summary visualizations\n * This function creates the actual Axis component with the provided props\n */\nexport function axisGenerator(axisProps, i, axisScale) {\n return (\n <Axis\n label={axisProps.label}\n key={axisProps.key || `orframe-summary-axis-${i}`}\n orient={axisProps.orient}\n size={axisProps.size}\n ticks={axisProps.ticks}\n tickSize={axisProps.tickSize}\n tickFormat={axisProps.tickFormat}\n tickValues={axisProps.tickValues}\n rotate={axisProps.rotate}\n scale={axisScale}\n className={axisProps.className}\n />\n )\n}\n","import * as React from \"react\"\nimport { forceSimulation, forceX, forceY, forceCollide } from \"d3-force\"\nimport { pointOnArcAtAngle } from \"./pieceDrawing\"\n\nexport function swarmLayout({\n type,\n data,\n renderMode,\n eventListenersGenerator,\n styleFn,\n projection,\n classFn,\n adjustedSize,\n chartSize,\n margin,\n\n rScale\n}) {\n let allCalculatedPieces = []\n\n const columnKeys = Object.keys(data)\n\n // Calculate total data points for adaptive iterations\n const totalDataPoints = columnKeys.reduce((sum, key) => {\n return sum + (data[key].pieceData?.length || 0)\n }, 0)\n\n // Adaptive iteration count: reduce iterations for large datasets to maintain performance\n const adaptiveIterations = Math.max(\n 30,\n Math.min(120, Math.floor(120 - (totalDataPoints - 100) / 20))\n )\n\n const iterations = type.iterations !== undefined ? type.iterations : adaptiveIterations\n\n columnKeys.forEach((key, ordsetI) => {\n const oColumn = data[key]\n const anglePiece = 1 / columnKeys.length\n const oData = oColumn.pieceData\n const adjustedColumnWidth = oColumn.width\n\n const circleRadius =\n type.r ||\n Math.max(2, Math.min(5, (4 * adjustedColumnWidth) / oData.length))\n\n const simulation = forceSimulation(oData)\n .force(\"y\", forceY((d) => d.scaledValue).strength(type.strength || 2))\n .force(\"x\", forceX(oColumn.middle))\n .force(\"collide\", forceCollide(circleRadius))\n .stop()\n\n if (projection === \"vertical\") {\n simulation.force(\n \"y\",\n forceY((d) => d.scaledVerticalValue).strength(type.strength || 2)\n )\n }\n\n for (let i = 0; i < iterations; ++i) simulation.tick()\n\n const calculatedPieces = oData.map((piece, i) => {\n const renderValue = renderMode && renderMode(piece.data, i)\n\n let xPosition = piece.x\n let yPosition = piece.y\n\n if (projection === \"horizontal\") {\n yPosition = piece.x\n xPosition = piece.y\n } else if (projection === \"radial\") {\n const angle = oColumn.pct_middle\n xPosition =\n ((piece.x - oColumn.middle) / adjustedColumnWidth) * anglePiece\n const rPosition = piece.scaledValue / 2\n const xAngle = angle + xPosition\n const baseCentroid = pointOnArcAtAngle(\n [adjustedSize[0] / 2, adjustedSize[1] / 2],\n xAngle,\n rPosition\n )\n xPosition = baseCentroid[0]\n yPosition = baseCentroid[1]\n }\n\n const actualCircleRadius =\n typeof circleRadius === \"function\"\n ? circleRadius(piece, i)\n : circleRadius\n\n const eventListeners = eventListenersGenerator(piece, i)\n\n const renderElementObject = type.customMark ? (\n <g\n key={`piece-${piece.renderKey}`}\n transform={`translate(${xPosition},${yPosition})`}\n >\n {type.customMark(\n { ...piece.data, ...piece, x: xPosition, y: yPosition },\n i,\n {\n x: xPosition,\n y: yPosition,\n r: circleRadius,\n\n renderMode,\n styleFn,\n classFn,\n adjustedSize,\n chartSize,\n margin,\n rScale\n }\n )}\n </g>\n ) : (\n {\n className: classFn({ ...piece, ...piece.data }, i),\n markType: \"rect\",\n key: `piece-${piece.renderKey}`,\n height: actualCircleRadius * 2,\n width: actualCircleRadius * 2,\n x: xPosition - actualCircleRadius,\n y: yPosition - actualCircleRadius,\n rx: actualCircleRadius,\n ry: actualCircleRadius,\n style: styleFn({ ...piece, ...piece.data }, ordsetI),\n ...eventListeners\n }\n )\n\n const calculatedPiece = {\n o: key,\n xy: {\n x: xPosition,\n y: yPosition\n },\n piece,\n renderValue,\n renderElement: renderElementObject\n }\n\n return calculatedPiece\n })\n allCalculatedPieces = [...allCalculatedPieces, ...calculatedPieces]\n })\n\n return allCalculatedPieces\n}\n","import * as React from \"react\"\nimport { /*area, curveCatmullRom,*/ arc } from \"d3-shape\"\nimport pathBounds from \"svg-path-bounding-box\"\nimport { scaleLinear } from \"d3-scale\"\nimport { arcTweener } from \"./SvgHelper\"\nimport { pointOnArcAtAngle } from \"./pieceDrawing\"\n\n// RENAME XY to drawingProps\n\ntype PieceXYProp = {\n x?: number\n y?: number\n middle?: number\n height?: number\n width?: number\n dx?: number\n dy?: number\n}\n\nconst twoPI = Math.PI * 2\n\nconst radialBarFeatureGenerator = ({\n type,\n ordset,\n adjustedSize,\n piece,\n i\n}) => {\n let { innerRadius } = type\n const { offsetAngle = 0, angleRange = [0, 360] } = type\n const offsetPct = offsetAngle / 360\n const rangePct = angleRange.map((d) => d / 360)\n const rangeMod = rangePct[1] - rangePct[0]\n\n const adjustedPct =\n rangeMod < 1 ? scaleLinear().domain([0, 1]).range(rangePct) : (d) => d\n\n let innerSize =\n type.type === \"clusterbar\"\n ? 0\n : type.type === \"timeline\"\n ? piece.scaledValue / 2\n : piece.bottom / 2\n let outerSize =\n type.type === \"clusterbar\"\n ? piece.scaledValue / 2\n : type.type === \"timeline\"\n ? piece.scaledEndValue / 2\n : piece.scaledValue / 2 + piece.bottom / 2\n\n if (innerRadius) {\n innerRadius = parseInt(innerRadius, 10)\n const canvasRadius = adjustedSize[0] / 2\n const donutMod = (canvasRadius - innerRadius) / canvasRadius\n innerSize = innerSize * donutMod + innerRadius\n outerSize = outerSize * donutMod + innerRadius\n }\n\n const arcGenerator = arc().innerRadius(innerSize).outerRadius(outerSize)\n\n const angle =\n (type.type === \"clusterbar\"\n ? (ordset.pct - ordset.pct_padding) / ordset.pieceData.length\n : ordset.pct) * rangeMod\n\n const startAngle = adjustedPct(\n type.type === \"clusterbar\"\n ? ordset.pct_start +\n (i / ordset.pieceData.length) * (ordset.pct - ordset.pct_padding)\n : ordset.pct === 1\n ? 0\n : ordset.pct_start + offsetPct\n )\n\n const endAngle =\n ordset.pct === 1\n ? rangePct[1]\n : Math.max(startAngle, startAngle + angle - ordset.pct_padding / 2)\n\n const startAngleFinal = startAngle * twoPI\n const endAngleFinal = endAngle * twoPI\n\n const markD = arcGenerator({\n startAngle: startAngleFinal,\n endAngle: endAngleFinal\n })\n\n const centroid = arcGenerator.centroid({\n startAngle: startAngleFinal,\n endAngle: endAngleFinal\n })\n\n const xOffset = adjustedSize[0] / 2\n const yOffset = adjustedSize[1] / 2\n const xPosition = centroid[0] + xOffset\n const yPosition = centroid[1] + yOffset\n\n const outerPoint = pointOnArcAtAngle(\n [0, 0],\n (startAngle + endAngle) / 2,\n piece.scaledValue / 2\n )\n\n const xy = {\n arcGenerator: arcGenerator,\n startAngle: startAngleFinal,\n endAngle: endAngleFinal,\n dx: outerPoint[0],\n dy: outerPoint[1]\n }\n const translate = `translate(${xOffset},${yOffset})`\n\n return {\n xPosition,\n yPosition,\n xy,\n translate,\n tx: xOffset,\n ty: yOffset,\n markProps: {\n markType: \"path\",\n d: markD,\n transform: translate\n }\n }\n}\n\nconst iconBarCustomMark =\n ({\n type,\n projection,\n finalHeight,\n finalWidth,\n styleFn,\n renderValue,\n classFn\n }) =>\n (piece, i, xy) => {\n const iconD =\n typeof type.icon === \"string\" ? type.icon : type.icon(piece.data, i)\n const { iconPadding = 1, resize = \"auto\" } = type\n\n const iconBounds = pathBounds(iconD)\n const iconTranslate = [\n 0 - iconBounds.x1 + iconPadding,\n 0 - iconBounds.y1 + iconPadding\n ]\n iconBounds.height += iconPadding * 2\n iconBounds.width += iconPadding * 2\n\n const icons = []\n\n let stackedIconSize = iconBounds.height\n let stackedIconNumber = 1\n let iconScale = 1\n const spaceToUse = projection === \"horizontal\" ? finalHeight : finalWidth\n const sizeToFit =\n projection === \"horizontal\" ? iconBounds.height : iconBounds.width\n const sizeToPad =\n projection === \"horizontal\" ? iconBounds.width : iconBounds.height\n const spaceToFill = projection === \"horizontal\" ? xy.width : xy.height\n const spaceToStackFill = projection === \"horizontal\" ? xy.height : xy.width\n if (resize === \"auto\") {\n stackedIconSize = spaceToUse / sizeToFit\n if (stackedIconSize < 1) {\n iconScale = stackedIconSize\n } else {\n stackedIconNumber = Math.floor(stackedIconSize)\n iconScale =\n 1 + (stackedIconSize - stackedIconNumber) / stackedIconNumber\n }\n } else if (resize === \"fixed\") {\n iconScale = spaceToUse / sizeToFit\n }\n\n // const finalIconWidth = iconBounds.width * iconScale;\n const finalIconHeight = iconBounds.height * iconScale\n\n const spaceToStep = sizeToPad * iconScale\n const spaceToStackStep = sizeToFit * iconScale\n\n iconTranslate[0] = iconTranslate[0] * iconScale\n iconTranslate[1] = iconTranslate[1] * iconScale\n\n const randoClipID = `iso-clip-${i}-${Math.random()}`\n const clipPath = `url(#${randoClipID})`\n if (xy.width > 0) {\n icons.push(\n <clipPath key={randoClipID} id={randoClipID}>\n <rect x={0} y={0} width={xy.width} height={xy.height} />\n </clipPath>\n )\n const iconPieces = []\n const stepStart =\n projection === \"horizontal\" ? 0 : xy.height - finalIconHeight\n const stepper = projection === \"horizontal\" ? spaceToStep : -spaceToStep\n const stepTest =\n projection === \"horizontal\"\n ? (step, spaceToFillValue) => step < spaceToFillValue\n : (step, spaceToFillValue, stepperValue) => step > 0 + stepperValue\n\n for (\n let step = stepStart;\n stepTest(step, spaceToFill, stepper);\n step += stepper\n ) {\n for (\n let stack = 0;\n stack < spaceToStackFill;\n stack += spaceToStackStep\n ) {\n const stepX = projection === \"horizontal\" ? step : stack\n const stepY = projection === \"horizontal\" ? stack : step\n const paddedX = stepX + iconTranslate[0]\n const paddedY = stepY + iconTranslate[1]\n iconPieces.push(\n <path \n key={`icon-${step}-${stack}`}\n transform={`translate(${paddedX},${paddedY}) scale(${iconScale})`}\n vectorEffect={\"non-scaling-stroke\"}\n d={iconD}\n style={styleFn({ ...piece, ...piece.data }, i)}\n className={classFn({ ...piece, ...piece.data }, i)}\n />\n )\n }\n }\n icons.push(\n <g key={`clipped-region-${i}`} clipPath={clipPath}>\n {iconPieces}\n </g>\n )\n }\n return icons\n }\n\nexport function clusterBarLayout({\n type,\n data,\n renderMode,\n eventListenersGenerator,\n styleFn,\n projection,\n classFn,\n adjustedSize,\n chartSize,\n margin,\n \n rScale\n}) {\n let allCalculatedPieces = []\n const keys = Object.keys(data)\n keys.forEach((key, ordsetI) => {\n const ordset = data[key]\n\n const barColumnWidth = Math.max(ordset.width, 1)\n const clusterWidth = barColumnWidth / ordset.pieceData.length\n\n let currentX = 0\n let currentY = 0\n\n const calculatedPieces = ordset.pieceData.map((piece, i) => {\n const renderValue = renderMode && renderMode(piece.data, i)\n\n let xPosition = piece.x\n let yPosition = piece.base\n let finalWidth = clusterWidth\n let finalHeight = piece.scaledValue\n let xy: PieceXYProp = { x: 0, y: 0 }\n if (!piece.negative) {\n yPosition -= piece.scaledValue\n }\n\n if (projection === \"horizontal\") {\n //TODO: NEGATIVE FOR HORIZONTAL\n yPosition = piece.x\n xPosition = piece.base\n finalHeight = clusterWidth\n finalWidth = piece.scaledValue\n xy.x = piece.scaledValue\n if (piece.negative) {\n xPosition -= piece.scaledValue\n xy.x = xPosition\n }\n }\n\n let translate,\n markProps = {},\n pieceTx = 0,\n pieceTy = 0\n\n if (projection === \"radial\") {\n let tx, ty\n ;({ xPosition, yPosition, markProps, xy, tx, ty } = radialBarFeatureGenerator({\n type,\n ordset,\n adjustedSize,\n piece,\n i\n }))\n pieceTx = tx\n pieceTy = ty\n xy.x = xPosition\n } else {\n xPosition += currentX\n yPosition += currentY\n markProps = {\n markType: \"rect\",\n x: xPosition,\n y: yPosition,\n width: Math.max(0, finalWidth),\n height: Math.max(0, finalHeight),\n rx: 0,\n ry: 0\n }\n if (projection === \"vertical\") {\n xy.x = xPosition\n }\n }\n\n const eventListeners = eventListenersGenerator(piece, i)\n\n xy.y = yPosition\n xy.middle = clusterWidth / 2\n xy.height = finalHeight\n xy.width = finalWidth\n\n if (type.icon && projection !== \"radial\") {\n type.customMark = iconBarCustomMark({\n type,\n projection,\n finalHeight,\n finalWidth,\n styleFn,\n renderValue,\n classFn\n })\n } else if (type.icon && projection === \"radial\") {\n console.error(\"Icons are currently unsupported on radial charts\")\n }\n const renderElementObject = type.customMark ? (\n <g\n key={`piece-${piece.renderKey}`}\n transform={\n translate ? translate : `translate(${xPosition},${yPosition})`\n }\n >\n {type.customMark(\n { ...piece.data, ...piece, x: xPosition, y: yPosition },\n i,\n {\n ...xy,\n \n renderMode,\n styleFn,\n classFn,\n adjustedSize,\n chartSize,\n margin,\n rScale\n }\n )}\n </g>\n ) : (\n {\n className: classFn({ ...piece, ...piece.data }, i),\n key: `piece-${piece.renderKey}`,\n transform: translate,\n style: styleFn({ ...piece, ...piece.data }, ordsetI),\n ...markProps,\n ...eventListeners\n }\n )\n\n const calculatedPiece = {\n o: key,\n xy,\n piece,\n tx: pieceTx,\n ty: pieceTy,\n renderValue,\n renderElement: renderElementObject\n }\n if (projection === \"horizontal\") {\n currentY += finalHeight\n } else {\n currentX += finalWidth\n }\n\n // currentOffset += pieceSize\n return calculatedPiece\n })\n allCalculatedPieces = [...allCalculatedPieces, ...calculatedPieces]\n })\n return allCalculatedPieces\n}\n\nexport function barLayout({\n type,\n data,\n renderMode,\n eventListenersGenerator,\n styleFn,\n projection,\n classFn,\n adjustedSize,\n chartSize,\n margin,\n \n rScale\n}) {\n const keys = Object.keys(data)\n let allCalculatedPieces = []\n keys.forEach((key, ordsetI) => {\n const ordset = data[key]\n const barColumnWidth = Math.max(ordset.width, 1)\n\n ordset.pieceData.forEach((piece, i) => {\n const pieceSize = piece.scaledValue\n const renderValue = renderMode && renderMode(piece.data, i)\n\n let xPosition = piece.x\n let yPosition = piece.bottom\n let finalWidth = barColumnWidth\n let finalHeight = pieceSize\n\n let xy = {}\n\n if (!piece.negative) {\n yPosition -= piece.scaledValue\n }\n\n if (projection === \"vertical\") {\n xy = {\n x: xPosition,\n y: yPosition,\n middle: barColumnWidth / 2,\n height: finalHeight,\n width: finalWidth\n }\n } else if (projection === \"horizontal\") {\n yPosition = piece.x\n xPosition = piece.bottom\n finalHeight = barColumnWidth\n finalWidth = pieceSize\n\n xy = {\n x: xPosition + piece.scaledValue,\n y: yPosition,\n middle: barColumnWidth / 2,\n height: finalHeight,\n width: finalWidth\n }\n if (piece.negative) {\n xPosition = piece.bottom - piece.scaledValue\n }\n }\n\n let markProps,\n pieceTx = 0,\n pieceTy = 0\n\n if (projection === \"radial\") {\n let tx, ty\n ;({ markProps, xPosition, yPosition, tx, ty } = radialBarFeatureGenerator({\n type,\n ordset,\n adjustedSize,\n piece,\n i\n }))\n pieceTx = tx\n pieceTy = ty\n finalHeight = undefined\n finalWidth = undefined\n\n xy = {\n x: xPosition,\n y: yPosition,\n middle: barColumnWidth / 2,\n height: finalHeight,\n width: finalWidth\n }\n } else {\n markProps = {\n markType: \"rect\",\n x: xPosition,\n y: yPosition,\n width: Math.max(0, finalWidth),\n height: Math.max(0, finalHeight),\n rx: 0,\n ry: 0\n }\n }\n\n const eventListeners = eventListenersGenerator(piece, i)\n\n if (type.icon && projection !== \"radial\") {\n type.customMark = iconBarCustomMark({\n type,\n projection,\n finalHeight,\n finalWidth,\n styleFn,\n renderValue,\n classFn\n })\n } else if (type.icon && projection !== \"horizontal\") {\n console.error(\"Icons are currently unsupported in radial charts\")\n }\n\n const renderElementObject = type.customMark ? (\n <g\n key={`piece-${piece.renderKey}`}\n transform={`translate(${xPosition},${yPosition})`}\n role=\"img\"\n tabIndex={-1}\n >\n {type.customMark(\n { ...piece.data, ...piece, x: xPosition, y: yPosition },\n i,\n {\n ...xy,\n \n renderMode,\n styleFn,\n classFn,\n adjustedSize,\n chartSize,\n margin,\n rScale\n }\n )}\n </g>\n ) : (\n {\n className: classFn({ ...piece, ...piece.data }, i),\n key: `piece-${piece.renderKey}`,\n style: styleFn({ ...piece, ...piece.data }, ordsetI),\n ...eventListeners,\n ...markProps\n }\n )\n\n allCalculatedPieces.push({\n o: key,\n xy,\n piece,\n tx: pieceTx,\n ty: pieceTy,\n renderValue,\n renderElement: renderElementObject\n })\n })\n })\n\n return allCalculatedPieces\n}\n\nexport function timelineLayout({\n type,\n data,\n renderMode,\n eventListenersGenerator,\n styleFn,\n projection,\n classFn,\n adjustedSize,\n chartSize,\n margin,\n \n rScale\n}) {\n let allCalculatedPieces = []\n const keys = Object.keys(data)\n keys.forEach((key, ordsetI) => {\n const ordset = data[key]\n const calculatedPieces = []\n\n ordset.pieceData.forEach((piece, i) => {\n let scaledValue, scaledBottom\n let pieceTx = 0, pieceTy = 0\n\n const renderValue = renderMode && renderMode(piece.data, i)\n let xPosition = ordset.x\n let height = piece.scaledEndValue - piece.scaledValue\n let yPosition = piece.scaledVerticalValue - height\n let width = ordset.width\n let markProps: {\n markType: string\n height?: number\n width?: number\n x?: number\n y?: number\n d?: string\n transform?: string\n } = {\n markType: \"rect\",\n height: height < 0 ? -height : height,\n width,\n x: xPosition,\n y: height < 0 ? yPosition + height : yPosition\n }\n\n if (projection === \"horizontal\") {\n yPosition = ordset.x\n xPosition = piece.scaledValue\n scaledValue = piece.scaledEndValue - piece.scaledValue\n scaledBottom = piece.scaledBottom\n width = piece.scaledEndValue - piece.scaledValue\n height = ordset.width\n markProps = {\n markType: \"rect\",\n height,\n width: width < 0 ? -width : width,\n x: width < 0 ? xPosition + width : xPosition,\n y: yPosition\n }\n } else if (projection === \"radial\") {\n let tx, ty\n ;({ markProps, tx, ty } = radialBarFeatureGenerator({\n piece,\n type,\n ordset,\n adjustedSize,\n i\n }))\n pieceTx = tx\n pieceTy = ty\n }\n\n //Only return the actual piece if you're rendering points, otherwise you just needed to iterate and calculate the points for the contour summary type\n\n const eventListeners = eventListenersGenerator(piece, i)\n const xy = {\n x: xPosition,\n y: yPosition,\n scaledValue,\n scaledBottom,\n height\n }\n\n const renderElementObject = type.customMark ? (\n <g\n key={`piece-${piece.renderKey}`}\n transform={`translate(${xPosition},${yPosition + height})`}\n >\n {type.customMark(\n { ...piece.data, ...piece, x: xPosition, y: yPosition },\n i,\n {\n ...xy,\n \n renderMode,\n styleFn,\n classFn,\n adjustedSize,\n chartSize,\n margin,\n rScale\n }\n )}\n </g>\n ) : (\n {\n className: classFn({ ...piece, ...piece.data }, i),\n key: `piece-${piece.renderKey}`,\n style: styleFn({ ...piece, ...piece.data }, ordsetI),\n ...markProps,\n ...eventListeners\n }\n )\n\n const calculatedPiece = {\n o: key,\n xy,\n piece,\n tx: pieceTx,\n ty: pieceTy,\n renderValue,\n renderElement: renderElementObject\n }\n\n calculatedPieces.push(calculatedPiece)\n })\n allCalculatedPieces = [...allCalculatedPieces, ...calculatedPieces]\n })\n\n return allCalculatedPieces\n}\n\nexport function pointLayout({\n type,\n data,\n renderMode,\n eventListenersGenerator,\n styleFn,\n projection,\n classFn,\n adjustedSize,\n chartSize,\n margin,\n \n rScale\n}) {\n const circleRadius = type.r || 3\n let allCalculatedPieces = []\n const keys = Object.keys(data)\n\n keys.forEach((key, ordsetI) => {\n const ordset = data[key]\n\n const calculatedPieces = []\n\n ordset.pieceData.forEach((piece, i) => {\n const renderValue = renderMode && renderMode(piece.data, i)\n\n let xPosition = ordset.middle\n let yPosition = piece.scaledVerticalValue\n\n if (projection === \"horizontal\") {\n yPosition = ordset.middle\n xPosition = piece.scaledValue\n } else if (projection === \"radial\") {\n const angle = ordset.pct_middle\n\n const rPosition = piece.scaledValue / 2\n const baseCentroid = pointOnArcAtAngle(\n [adjustedSize[0] / 2, adjustedSize[1] / 2],\n angle,\n rPosition\n )\n xPosition = baseCentroid[0]\n yPosition = baseCentroid[1]\n }\n\n //Only return the actual piece if you're rendering points, otherwise you just needed to iterate and calculate the points for the contour summary type\n const actualCircleRadius =\n typeof circleRadius === \"function\"\n ? circleRadius(piece, i)\n : circleRadius\n const eventListeners = eventListenersGenerator(piece, i)\n\n const renderElementObject = type.customMark ? (\n <g\n key={`piece-${piece.renderKey}`}\n transform={`translate(${xPosition},${yPosition})`}\n >\n {type.customMark(\n {\n ...piece.data,\n ...piece,\n x: xPosition,\n y: yPosition,\n width: ordset.width\n },\n i,\n {\n r: circleRadius,\n x: xPosition,\n y: yPosition,\n \n renderMode,\n styleFn,\n classFn,\n adjustedSize,\n chartSize,\n margin,\n rScale\n }\n )}\n </g>\n ) : (\n {\n className: classFn({ ...piece, ...piece.data }, i),\n markType: \"rect\",\n key: `piece-${piece.renderKey}`,\n height: actualCircleRadius * 2,\n width: actualCircleRadius * 2,\n x: xPosition - actualCircleRadius,\n y: yPosition - actualCircleRadius,\n rx: actualCircleRadius,\n ry: actualCircleRadius,\n style: styleFn({ ...piece, ...piece.data }, ordsetI),\n ...eventListeners\n }\n )\n\n const calculatedPiece = {\n o: key,\n xy: {\n x: xPosition,\n y: yPosition\n },\n piece,\n renderValue,\n renderElement: renderElementObject\n }\n\n calculatedPieces.push(calculatedPiece)\n })\n allCalculatedPieces = [...allCalculatedPieces, ...calculatedPieces]\n })\n\n return allCalculatedPieces\n}\n\n// Re-export from new location for backwards compatibility\nexport { swarmLayout } from \"./swarmLayout\"\n","export const genericFunction = value => () => value\n","import {\n clusterBarLayout,\n barLayout,\n pointLayout,\n swarmLayout,\n timelineLayout\n} from \"../svg/pieceLayouts\"\n\nimport { genericFunction } from \"../generic_utilities/functions\"\n\nexport const layoutHash = {\n clusterbar: clusterBarLayout,\n bar: barLayout,\n point: pointLayout,\n swarm: swarmLayout,\n timeline: timelineLayout\n}\n\nexport const midMod = (d) => (d.middle ? d.middle : 0)\n\nexport const zeroFunction = genericFunction(0)\nexport const twoPI = Math.PI * 2\n\nexport const naturalLanguageTypes = {\n bar: { items: \"bar\", chart: \"bar chart\" },\n clusterbar: { items: \"bar\", chart: \"grouped bar chart\" },\n swarm: { items: \"point\", chart: \"swarm plot\" },\n point: { items: \"point\", chart: \"point plot\" },\n timeline: { items: \"bar\", chart: \"timeline\" }\n}\n","import { ProjectionTypes } from \"../types/generalTypes\"\n\ninterface PieArc {\n markD: string\n centroid: number[]\n translate: number[]\n midAngle: number\n}\n\ninterface ProjectedColumn {\n width: number\n x: number\n middle: number\n y: number\n pieceData: Record<string, any>[]\n pieArc?: PieArc\n [key: string]: unknown\n}\n\nexport interface GenerateColumnOverlaysArgs {\n oExtent: string[]\n projectedColumns: { [key: string]: ProjectedColumn }\n rScale: { range: () => number[] }\n pieArcs: PieArc[]\n padding: number\n projection: ProjectionTypes\n customDoubleClickBehavior?: Function\n customClickBehavior?: Function\n customHoverBehavior?: Function\n}\n\nexport function generateColumnOverlays({\n oExtent,\n projectedColumns,\n rScale,\n pieArcs,\n padding,\n projection,\n customDoubleClickBehavior,\n customClickBehavior,\n customHoverBehavior\n}: GenerateColumnOverlaysArgs): Record<string, any>[] {\n return oExtent.map((d, i) => {\n const barColumnWidth = projectedColumns[d].width\n let xPosition = projectedColumns[d].x\n let yPosition = 0\n let height = rScale.range()[1]\n let width = barColumnWidth + padding\n if (projection === \"horizontal\") {\n yPosition = projectedColumns[d].x\n xPosition = 0\n width = rScale.range()[1]\n height = barColumnWidth\n }\n\n if (projection === \"radial\") {\n const { markD, centroid, translate, midAngle } = pieArcs[i]\n const radialMousePackage = {\n type: \"column-hover\",\n column: projectedColumns[d],\n pieces: projectedColumns[d].pieceData,\n summary: projectedColumns[d].pieceData,\n arcAngles: {\n centroid,\n translate,\n midAngle,\n length: rScale.range()[1] / 2\n }\n }\n return {\n markType: \"path\",\n key: `hover${d}`,\n d: markD,\n transform: `translate(${translate.join(\",\")})`,\n style: { opacity: 0 },\n overlayData: radialMousePackage,\n onDoubleClick:\n customDoubleClickBehavior &&\n ((e) => {\n customDoubleClickBehavior(radialMousePackage, e)\n }),\n onClick:\n customClickBehavior &&\n ((e) => {\n customClickBehavior(radialMousePackage, e)\n }),\n onMouseEnter:\n customHoverBehavior &&\n ((e) => {\n customHoverBehavior(radialMousePackage, e)\n }),\n onMouseLeave:\n customHoverBehavior &&\n ((e) => {\n customHoverBehavior(e)\n })\n }\n }\n\n const baseMousePackage = {\n type: \"column-hover\",\n column: projectedColumns[d],\n pieces: projectedColumns[d].pieceData,\n summary: projectedColumns[d].pieceData\n }\n return {\n markType: \"rect\",\n key: `hover-${d}`,\n x: xPosition,\n y: yPosition,\n height: height,\n width: width,\n style: { opacity: 0 },\n onDoubleClick:\n customDoubleClickBehavior &&\n ((e) => {\n customDoubleClickBehavior(baseMousePackage, e)\n }),\n onClick:\n customClickBehavior &&\n ((e) => {\n customClickBehavior(baseMousePackage, e)\n }),\n onMouseEnter:\n customHoverBehavior &&\n ((e) => {\n customHoverBehavior(baseMousePackage, e)\n }),\n onMouseLeave: (e) => {\n customHoverBehavior(undefined, e)\n },\n overlayData: baseMousePackage\n }\n })\n}\n","import * as React from \"react\"\n\nimport { orFrameConnectionRenderer } from \"../svg/frameFunctions\"\nimport { renderLaidOutPieces } from \"../svg/pieceDrawing\"\nimport { renderLaidOutSummaries } from \"../svg/summaryLayouts\"\n\nimport {\n OrdinalFrameProps,\n OrdinalFrameState,\n PieceTypeSettings,\n ProjectedOrdinalSummary\n} from \"../types/ordinalTypes\"\n\nimport { AxisProps } from \"../types/annotationTypes\"\n\nimport { MarginType, GenericAccessor } from \"../types/generalTypes\"\n\nimport { midMod, zeroFunction, naturalLanguageTypes } from \"./ordinalConstants\"\n\nimport { ScaleBand, ScaleLinear } from \"d3-scale\"\n\nexport interface AssembleRenderPipelineArgs {\n // Piece / overlay data\n usesPieceOverlays: boolean\n shouldRecalculateOverlay: boolean\n calculatedPieceData: Record<string, any>[]\n projection: string\n customClickBehavior?: Function\n customDoubleClickBehavior?: Function\n customHoverBehavior?: Function\n currentState: OrdinalFrameState\n\n // Render config (all style/class/renderMode values are pre-converted functions from the cache)\n connectorStyle: Function\n connectorClass: Function\n connectorRenderMode: Function\n connectorCanvasRender: Function\n summaryCanvasRender: Function\n pieceCanvasRender: Function\n connectorType: Record<string, any>\n eventListenersGenerator: () => Record<string, never>\n pieceType: PieceTypeSettings\n summaryStyle: Function\n summaryClass: Function\n pieceStyle: Function\n pieceClass: Function\n\n // Data\n keyedData: { [key: string]: Record<string, any>[] }\n oExtent: string[]\n projectedColumns: { [key: string]: Record<string, any> }\n calculatedSummaries: ProjectedOrdinalSummary\n oAccessor: Function[]\n\n // Scales\n rScale: ScaleLinear<number, number>\n\n // Extent\n calculatedRExtent: number[]\n calculatedOExtent: string[]\n rExtentSettings: Record<string, any>\n oExtentSettings: { extent?: string[]; onChange?: Function }\n\n // Layout\n adjustedPosition: number[]\n adjustedSize: number[]\n margin: MarginType\n\n // Additional props\n backgroundGraphics?: React.ReactNode | Function\n foregroundGraphics?: React.ReactNode | Function\n arrayWrappedAxis?: AxisProps[]\n axis: React.ReactNode[]\n axesTickLines: object[]\n oLabels: React.ReactNode\n title: object\n columnOverlays: Record<string, any>[]\n oScaleType: ScaleBand<string>\n instantiatedRScaleType: ScaleLinear<number, number>\n oScale: ScaleBand<string>\n rExtent: number[]\n legend?: object | boolean\n pieceIDAccessor: GenericAccessor<string>\n currentProps: OrdinalFrameProps\n}\n\nexport function assembleRenderPipeline(args: AssembleRenderPipelineArgs) {\n const {\n usesPieceOverlays,\n shouldRecalculateOverlay,\n calculatedPieceData,\n projection,\n customClickBehavior,\n customDoubleClickBehavior,\n customHoverBehavior,\n currentState,\n\n connectorStyle,\n connectorClass,\n connectorRenderMode,\n connectorCanvasRender,\n summaryCanvasRender,\n pieceCanvasRender,\n connectorType,\n eventListenersGenerator,\n pieceType,\n summaryStyle,\n summaryClass,\n pieceStyle,\n pieceClass,\n\n keyedData,\n oExtent,\n projectedColumns,\n calculatedSummaries,\n oAccessor,\n\n rScale,\n\n calculatedRExtent,\n calculatedOExtent,\n rExtentSettings,\n oExtentSettings,\n\n adjustedPosition,\n adjustedSize,\n margin,\n\n backgroundGraphics,\n foregroundGraphics,\n arrayWrappedAxis,\n axis,\n axesTickLines,\n oLabels,\n title,\n oScaleType,\n instantiatedRScaleType,\n oScale,\n rExtent,\n legend,\n pieceIDAccessor,\n currentProps\n } = args\n\n let { columnOverlays } = args\n\n // Piece overlays for bar/clusterbar/timeline types\n if (usesPieceOverlays) {\n const yMod = projection === \"horizontal\" ? midMod : zeroFunction\n const xMod = projection === \"vertical\" ? midMod : zeroFunction\n if (shouldRecalculateOverlay) {\n columnOverlays = calculatedPieceData.map((d, i) => {\n const mousePackage = {\n ...d.piece,\n x: d.xy.x + xMod(d.xy),\n y: d.xy.y + yMod(d.xy)\n }\n if (React.isValidElement(d.renderElement)) {\n return {\n renderElement: d.renderElement,\n overlayData: mousePackage\n }\n }\n return {\n ...d.renderElement,\n key: `hover-${i}`,\n style: { opacity: 0 },\n overlayData: mousePackage,\n onClick:\n customClickBehavior &&\n ((e) => {\n customClickBehavior(mousePackage.data, e)\n }),\n onDoubleClick:\n customDoubleClickBehavior &&\n ((e) => {\n customDoubleClickBehavior(mousePackage.data, e)\n }),\n onMouseEnter:\n customHoverBehavior &&\n ((e) => {\n customHoverBehavior(mousePackage.data, e)\n }),\n onMouseLeave:\n customHoverBehavior &&\n ((e) => {\n customHoverBehavior(undefined, e)\n })\n }\n })\n } else {\n columnOverlays = currentState.columnOverlays\n }\n }\n\n const typeAriaLabel = (pieceType.type !== undefined &&\n typeof pieceType.type !== \"function\" &&\n naturalLanguageTypes[pieceType.type]) || {\n items: \"piece\",\n chart: \"ordinal chart\"\n }\n\n const orFrameRender = {\n connectors: {\n accessibleTransform: (data, i) => data[i],\n projection,\n data: { keyedData, oExtent } as unknown as object[],\n styleFn: connectorStyle,\n classFn: connectorClass,\n renderMode: connectorRenderMode,\n canvasRender: connectorCanvasRender,\n behavior: orFrameConnectionRenderer,\n type: connectorType,\n eventListenersGenerator,\n pieceType\n },\n summaries: {\n accessibleTransform: (data, i) => {\n const columnName = oExtent[i]\n\n const summaryPackage = {\n type: \"column-hover\",\n column: projectedColumns[columnName],\n pieces: projectedColumns[columnName].pieceData,\n summary: projectedColumns[columnName].pieceData,\n oAccessor\n }\n return summaryPackage\n },\n data: calculatedSummaries.marks,\n behavior: renderLaidOutSummaries,\n canvasRender: summaryCanvasRender,\n styleFn: summaryStyle,\n classFn: summaryClass\n },\n pieces: {\n accessibleTransform: (data, i) => ({\n ...(data[i].piece ? { ...data[i].piece, ...data[i].xy } : data[i]),\n type: \"frame-hover\"\n }),\n shouldRender: pieceType.type && pieceType.type !== \"none\",\n data: calculatedPieceData,\n behavior: renderLaidOutPieces,\n canvasRender: pieceCanvasRender,\n styleFn: pieceStyle,\n classFn: pieceClass,\n axis: arrayWrappedAxis,\n ariaLabel: typeAriaLabel\n }\n }\n\n if (\n rExtentSettings.onChange &&\n (currentState.calculatedRExtent || []).join(\",\") !==\n (calculatedRExtent || []).join(\",\")\n ) {\n rExtentSettings.onChange(calculatedRExtent)\n }\n\n if (\n oExtentSettings.onChange &&\n (currentState.calculatedOExtent || []).join(\",\") !==\n (calculatedOExtent || []).join(\",\")\n ) {\n oExtentSettings.onChange(calculatedOExtent)\n }\n\n let legendSettings\n\n if (legend) {\n legendSettings = legend === true ? {} : { ...legend }\n\n // Sort legend items to match the sorted oExtent order\n if (legendSettings.legendGroups) {\n const extentOrder = new Map(oExtent.map((d, i) => [d, i]))\n legendSettings.legendGroups = legendSettings.legendGroups.map((group) => ({\n ...group,\n items: [...group.items].sort((a, b) => {\n const aIdx = extentOrder.has(a.label) ? extentOrder.get(a.label) : Infinity\n const bIdx = extentOrder.has(b.label) ? extentOrder.get(b.label) : Infinity\n return aIdx - bIdx\n })\n }))\n }\n }\n\n return {\n adjustedPosition,\n adjustedSize,\n backgroundGraphics,\n foregroundGraphics,\n axisData: arrayWrappedAxis,\n axes: axis,\n axesTickLines,\n oLabels: { labels: oLabels },\n title,\n columnOverlays,\n renderNumber: currentState.renderNumber + 1,\n oScaleType,\n rScaleType: instantiatedRScaleType,\n oExtent,\n rExtent,\n oScale,\n rScale,\n calculatedOExtent,\n calculatedRExtent,\n projectedColumns,\n margin,\n legendSettings,\n orFrameRender,\n pieceIDAccessor,\n props: currentProps\n }\n}\n","import * as React from \"react\"\n\nimport { sum, max, min, extent } from \"d3-array\"\n\nimport { arc } from \"d3-shape\"\nimport {\n objectifyType,\n keyAndObjectifyBarData,\n orFrameAxisGenerator\n} from \"../svg/frameFunctions\"\nimport { pointOnArcAtAngle } from \"../svg/pieceDrawing\"\nimport { drawSummaries } from \"../svg/summaryLayouts\"\nimport { axisGenerator } from \"../svg/summaryAxis\"\n\n\nimport { OrdinalPipelineCache } from \"../data/ordinalPipelineCache\"\n\nimport {\n OrdinalFrameProps,\n OrdinalFrameState,\n PieceTypeSettings,\n OExtentObject,\n ProjectedOrdinalSummary,\n LabelSettingsType\n} from \"../types/ordinalTypes\"\n\nimport { AxisProps } from \"../types/annotationTypes\"\n\nimport { PieceLayoutType } from \"../types/generalTypes\"\n\nimport { scaleOrdinal, scaleLinear, ScaleBand, ScaleLinear } from \"d3-scale\"\n\nimport {\n layoutHash,\n midMod,\n zeroFunction,\n twoPI,\n naturalLanguageTypes\n} from \"./ordinalConstants\"\n\nimport { generateColumnOverlays } from \"./ordinalOverlays\"\nimport { assembleRenderPipeline } from \"./ordinalRenderPipeline\"\n\nexport { layoutHash, midMod, zeroFunction, twoPI, naturalLanguageTypes } from \"./ordinalConstants\"\nexport { generateColumnOverlays } from \"./ordinalOverlays\"\nexport type { GenerateColumnOverlaysArgs } from \"./ordinalOverlays\"\nexport { assembleRenderPipeline } from \"./ordinalRenderPipeline\"\nexport type { AssembleRenderPipelineArgs } from \"./ordinalRenderPipeline\"\n\nexport const calculateMappedMiddles = (\n oScale: ScaleBand<string>,\n middleMax: number,\n padding: number\n) => {\n const oScaleDomainValues = oScale.domain()\n\n const mappedMiddles = {}\n oScaleDomainValues.forEach((p, q) => {\n const base = oScale(p) - padding\n const next = oScaleDomainValues[q + 1]\n ? oScale(oScaleDomainValues[q + 1])\n : middleMax\n const diff = (next - base) / 2\n mappedMiddles[p] = base + diff\n })\n\n return mappedMiddles\n}\n\nexport const calculateOrdinalFrame = (\n currentProps: OrdinalFrameProps,\n currentState: OrdinalFrameState,\n cache: OrdinalPipelineCache\n) => {\n let oLabels\n const projectedColumns = {}\n\n const {\n oPadding: basePadding = 0,\n summaryType: baseSummaryType,\n type: baseType,\n connectorType: baseConnectorType,\n oAccessor: baseOAccessor,\n rAccessor: baseRAccessor,\n connectorStyle: baseConnectorStyle,\n style: baseStyle,\n rExtent: baseRExtent,\n oSort,\n pieceClass: basePieceClass,\n summaryStyle: baseSummaryStyle,\n summaryClass: baseSummaryClass,\n dynamicColumnWidth,\n projection,\n customHoverBehavior,\n customClickBehavior,\n customDoubleClickBehavior,\n size,\n pixelColumnWidth,\n title: baseTitle,\n oLabel,\n hoverAnnotation,\n pieceHoverAnnotation,\n summaryHoverAnnotation,\n backgroundGraphics,\n foregroundGraphics,\n oScaleType,\n rScaleType,\n legend,\n renderKey: baseRenderKey,\n data,\n margin: baseMargin,\n oExtent: baseOExtent,\n axes: baseAxes,\n pieceIDAccessor: basePieceIDAccessor,\n multiAxis,\n annotations,\n sketchyRenderingEngine\n } = currentProps\n\n // Radial (pie chart) projection ignores oPadding — angular gaps widen\n // radially and create visual artifacts between slices\n const padding = projection === \"radial\" ? 0 : basePadding\n\n const summaryType = objectifyType(baseSummaryType)\n const pieceType = objectifyType(baseType) as PieceTypeSettings\n const connectorType = objectifyType(baseConnectorType)\n\n const cachedAccessors = cache.accessorConversions(baseOAccessor, baseRAccessor, baseRenderKey, basePieceIDAccessor)\n\n const oAccessor = cachedAccessors.oAccessor\n const rAccessor = cachedAccessors.rAccessor\n const renderKey = cachedAccessors.renderKey\n\n const eventListenersGenerator = () => ({})\n\n const {\n connectorStyle, summaryStyle, pieceStyle, pieceClass, summaryClass,\n connectorClass: connectorClassFn, pieceRenderMode, summaryRenderMode,\n connectorRenderMode: connectorRenderModeFn,\n pieceCanvasRender, summaryCanvasRender, connectorCanvasRender\n } = cache.styleFns(\n baseConnectorStyle, baseSummaryStyle, baseStyle, basePieceClass, baseSummaryClass,\n currentProps.connectorClass, currentProps.renderMode, currentProps.summaryRenderMode,\n currentProps.connectorRenderMode,\n currentProps.canvasPieces, currentProps.canvasSummaries, currentProps.canvasConnectors\n )\n const title =\n typeof baseTitle === \"object\" &&\n !React.isValidElement(baseTitle) &&\n baseTitle !== null\n ? baseTitle\n : { title: baseTitle, orient: \"top\" }\n\n const pieceIDAccessor = cachedAccessors.pieceIDAccessor\n\n const originalRAccessor = Array.isArray(baseRAccessor)\n ? baseRAccessor\n : [baseRAccessor]\n\n const originalOAccessor = Array.isArray(baseOAccessor)\n ? baseOAccessor\n : [baseOAccessor]\n\n // For radial (pie chart) projection, force uniform arc depth by overriding\n // rAccessor to always return 1. Encode value via dynamicColumnWidth instead.\n let effectiveRAccessor = rAccessor\n let effectiveDynamicColumnWidth = dynamicColumnWidth\n if (projection === \"radial\") {\n if (!effectiveDynamicColumnWidth) {\n // Auto-set dynamicColumnWidth to sum original rAccessor values\n // so angular extent still encodes the data\n const originalAccessors = rAccessor\n effectiveDynamicColumnWidth = (pieces: object[]) =>\n sum(pieces, (d) => {\n let total = 0\n for (const accessor of originalAccessors) {\n total += accessor(d) || 0\n }\n return total\n })\n }\n effectiveRAccessor = [() => 1]\n }\n\n const { allData, multiExtents } = keyAndObjectifyBarData({\n data,\n renderKey,\n oAccessor,\n rAccessor: effectiveRAccessor,\n originalRAccessor,\n originalOAccessor,\n multiAxis\n })\n\n let columnOverlays\n\n const prevProps = currentState.props\n const shouldRecalculateOverlay =\n currentProps.data !== prevProps.data ||\n currentProps.size[0] !== prevProps.size[0] ||\n currentProps.size[1] !== prevProps.size[1] ||\n currentProps.margin !== prevProps.margin ||\n !currentState.columnOverlays ||\n currentState.columnOverlays.length === 0 ||\n currentProps.customClickBehavior !== prevProps.customClickBehavior ||\n currentProps.customDoubleClickBehavior !==\n prevProps.customDoubleClickBehavior ||\n currentProps.customHoverBehavior !== prevProps.customHoverBehavior\n\n let arrayWrappedAxis: AxisProps[] | undefined\n\n if (Array.isArray(baseAxes)) {\n arrayWrappedAxis = baseAxes.map((axisFnOrObject) =>\n typeof axisFnOrObject === \"function\"\n ? axisFnOrObject({ size: currentProps.size })\n : axisFnOrObject\n )\n } else if (baseAxes) {\n arrayWrappedAxis = [baseAxes].map((axisFnOrObject) =>\n typeof axisFnOrObject === \"function\"\n ? axisFnOrObject({ size: currentProps.size })\n : axisFnOrObject\n )\n }\n\n if (multiExtents && baseAxes) {\n arrayWrappedAxis.forEach((d, i) => {\n d.extentOverride = multiExtents[i]\n })\n }\n\n const { margin, adjustedPosition, adjustedSize } = cache.marginCalc(\n baseMargin, arrayWrappedAxis, title, oLabel, projection, size\n )\n\n const oExtentSettings: OExtentObject =\n baseOExtent === undefined || Array.isArray(baseOExtent)\n ? { extent: baseOExtent as string[] }\n : baseOExtent\n\n const calculatedOExtent = allData.reduce(\n (p: Array<string | number>, c: { column: string | number }) => {\n const baseOValue = c.column\n const oValue = baseOValue !== undefined ? String(baseOValue) : baseOValue\n\n if (p.indexOf(oValue) === -1) {\n p.push(oValue)\n }\n return p\n },\n []\n ) as string[]\n\n let oExtent: string[] =\n (oExtentSettings.extent as string[]) || (calculatedOExtent as string[])\n\n if (pieceType.type === \"barpercent\") {\n const oExtentSums = oExtent\n .map((d) =>\n allData\n .filter((p: { column: string }) => String(p.column) === d)\n .reduce((p, c: { value: number }) => p + c.value, 0)\n )\n .reduce((p, c, i) => {\n p[oExtent[i]] = c\n return p\n }, {})\n\n allData.forEach((d: { value?: number; column: string }) => {\n d.value = (oExtentSums[d.column] && d.value / oExtentSums[d.column]) || 0\n })\n\n pieceType.type = \"bar\"\n }\n\n if (pixelColumnWidth) {\n if (projection === \"radial\") {\n console.error(\"pixelColumnWidth is not honored in radial mode\")\n } else if (projection === \"vertical\") {\n adjustedSize[0] = oExtent.length * pixelColumnWidth\n } else {\n adjustedSize[1] = oExtent.length * pixelColumnWidth\n }\n }\n\n const oDomain = (projection === \"vertical\" && [0, adjustedSize[0]]) || [\n 0,\n adjustedSize[1]\n ]\n\n const cwHash = oExtent.reduce(\n (p, c) => {\n p[c] = (1 / oExtent.length) * oDomain[1]\n p.total += p[c]\n return p\n },\n { total: 0 }\n )\n\n const castOScaleType = oScaleType as unknown as (ScaleBand<string> & (() => ScaleBand<string>))\n\n const oScale = (effectiveDynamicColumnWidth\n ? scaleOrdinal()\n : castOScaleType?.domain\n ? castOScaleType\n : castOScaleType()) as ScaleBand<string>\n\n oScale.domain(oExtent)\n\n let maxColumnValues\n\n const rExtentSettings =\n baseRExtent === undefined || Array.isArray(baseRExtent)\n ? { extent: baseRExtent, onChange: undefined, includeAnnotations: false }\n : baseRExtent\n\n let rExtent = rExtentSettings.extent as number[]\n let subZeroRExtent = [0, 0]\n\n if (\n pieceType.type === \"bar\" &&\n summaryType.type &&\n summaryType.type !== \"none\"\n ) {\n pieceType.type = \"none\"\n }\n\n const annotationsForExtent = []\n\n if (rExtentSettings.includeAnnotations && annotations) {\n rAccessor.forEach((actualRAccessor) => {\n annotations.forEach((annotation, annotationIndex) => {\n const r = actualRAccessor(annotation, annotationIndex)\n if (isFinite(r)) {\n annotationsForExtent.push(r)\n }\n })\n })\n }\n\n if (pieceType.type === \"timeline\") {\n const rData = allData.map((d: { value: number }) => d.value)\n const leftExtent = extent(rData.map((d) => d[0]))\n const rightExtent = extent(rData.map((d) => d[1]))\n rExtent = extent([...leftExtent, ...rightExtent, ...annotationsForExtent])\n } else if (pieceType.type !== \"bar\") {\n rExtent = extent([\n ...allData.map((d: { value: number }) => d.value),\n ...annotationsForExtent\n ])\n } else {\n const nestedPositiveData = []\n const nestedNegativeData = []\n\n const positiveDataKeys = {}\n const negativeDataKeys = {}\n for (const datum of allData as { column: string; value: number }[]) {\n if (datum.value >= 0) {\n if (!positiveDataKeys[datum.column]) {\n positiveDataKeys[datum.column] = {\n column: datum.column,\n value: 0\n }\n nestedPositiveData.push(positiveDataKeys[datum.column])\n }\n positiveDataKeys[datum.column].value += datum.value\n } else {\n if (!negativeDataKeys[datum.column]) {\n negativeDataKeys[datum.column] = {\n column: datum.column,\n value: 0\n }\n nestedNegativeData.push(negativeDataKeys[datum.column])\n }\n negativeDataKeys[datum.column].value += datum.value\n }\n }\n\n const positiveAnnotations = annotationsForExtent.filter((d) => d > 0)\n\n rExtent = [\n 0,\n nestedPositiveData.length === 0 && positiveAnnotations.length === 0\n ? 0\n : Math.max(\n max([\n ...nestedPositiveData.map((d: { value: number }) => d.value),\n ...positiveAnnotations\n ]),\n 0\n )\n ]\n\n const negativeAnnotations = annotationsForExtent.filter((d) => d < 0)\n\n subZeroRExtent = [\n 0,\n nestedNegativeData.length === 0\n ? 0\n : Math.min(\n min([\n ...nestedNegativeData.map((d: { value: number }) => d.value),\n ...negativeAnnotations\n ]),\n 0\n )\n ]\n rExtent = [subZeroRExtent[1], rExtent[1]]\n }\n\n if ((pieceType.type === \"clusterbar\" || multiAxis) && rExtent[0] > 0) {\n rExtent[0] = 0\n }\n\n const calculatedRExtent = rExtent\n\n if (\n rExtentSettings.extent &&\n rExtentSettings.extent[0] !== undefined &&\n rExtentSettings.extent[1] !== undefined\n ) {\n rExtent = rExtentSettings.extent as number[]\n } else {\n if (\n rExtentSettings.extent &&\n rExtentSettings.extent[1] !== undefined &&\n rExtentSettings.extent[0] === undefined\n ) {\n rExtent[1] = rExtentSettings.extent[1]\n }\n\n if (\n rExtentSettings.extent &&\n rExtentSettings.extent[0] !== undefined &&\n rExtentSettings.extent[1] === undefined\n ) {\n rExtent[0] = rExtentSettings.extent[0]\n }\n }\n\n if (\n currentProps.invertR ||\n (rExtentSettings.extent &&\n rExtentSettings.extent[0] > rExtentSettings.extent[1])\n ) {\n rExtent = [rExtent[1], rExtent[0]]\n }\n\n const nestedPieces = {}\n\n for (const datum of allData as { column: string; value: number }[]) {\n if (!nestedPieces[datum.column]) {\n nestedPieces[datum.column] = []\n }\n nestedPieces[datum.column].push(datum)\n }\n\n if (oSort !== undefined) {\n oExtent = oExtent.sort((a, b) =>\n oSort(\n a,\n b,\n nestedPieces[a].map((d) => d.data),\n nestedPieces[b].map((d) => d.data)\n )\n )\n\n oScale.domain(oExtent)\n } else {\n // Default sort: descending by summed value, with dynamicColumnWidth as tiebreaker\n const columnSums: Record<string, number> = {}\n for (const col of oExtent) {\n columnSums[col] = sum(nestedPieces[col], (d: { value: number }) => d.value)\n }\n\n let columnWidthValues: Record<string, number> | undefined\n if (effectiveDynamicColumnWidth) {\n columnWidthValues = {}\n let columnValueCreator: (d: any[]) => number\n if (typeof effectiveDynamicColumnWidth === \"string\") {\n columnValueCreator = (d) => sum(d, (p: any) => p.data[effectiveDynamicColumnWidth as string])\n } else {\n columnValueCreator = (d) => (effectiveDynamicColumnWidth as Function)(d.map((p: any) => p.data))\n }\n for (const col of oExtent) {\n columnWidthValues[col] = columnValueCreator(nestedPieces[col])\n }\n }\n\n oExtent = oExtent.sort((a, b) => {\n const diff = columnSums[b] - columnSums[a]\n if (diff !== 0) return diff\n if (columnWidthValues) return columnWidthValues[b] - columnWidthValues[a]\n return 0\n })\n\n oScale.domain(oExtent)\n }\n\n if (effectiveDynamicColumnWidth) {\n let columnValueCreator\n if (typeof effectiveDynamicColumnWidth === \"string\") {\n columnValueCreator = (d) => sum(d, (p) => p.data[effectiveDynamicColumnWidth as string])\n } else {\n columnValueCreator = (d) => (effectiveDynamicColumnWidth as Function)(d.map((p) => p.data))\n }\n const thresholdDomain = [0]\n const columnValues = []\n maxColumnValues = 0\n\n oExtent.forEach((d) => {\n const oValues = allData.filter((p: { column: string }) => p.column === d)\n const columnValue = columnValueCreator(oValues)\n\n columnValues.push(columnValue)\n maxColumnValues += columnValue\n })\n\n cwHash.total = 0\n oExtent.forEach((d, i) => {\n const oValue = columnValues[i]\n const stepValue = (oValue / maxColumnValues) * (oDomain[1] - oDomain[0])\n cwHash[d] = stepValue\n cwHash.total += stepValue\n if (i !== oExtent.length - 1) {\n thresholdDomain.push(stepValue + thresholdDomain[i])\n }\n })\n oScale.range(thresholdDomain)\n } else {\n oScale.range(oDomain)\n }\n\n const rDomain = (projection === \"vertical\" && [0, adjustedSize[1]]) || [\n 0,\n adjustedSize[0]\n ]\n\n const castRScaleType = rScaleType as unknown as (ScaleLinear<number, number> & { (): ScaleLinear<number, number> })\n\n // if rScaleType has a domain that means it's instantiated, otherwise, it needs to be instantiated\n const instantiatedRScaleType = castRScaleType.domain\n ? castRScaleType\n : castRScaleType()\n\n const zeroCheck = instantiatedRScaleType(0)\n\n if (\n rExtentSettings.extent &&\n rExtentSettings.extent[0] !== undefined &&\n (isNaN(zeroCheck) || zeroCheck === -Infinity || zeroCheck === Infinity)\n ) {\n rExtent[0] = rExtentSettings.extent[0]\n }\n\n const rScale = instantiatedRScaleType.copy().domain(rExtent).range(rDomain)\n\n const rScaleReverse = scaleLinear().domain(rDomain).range(rDomain.reverse())\n\n const rScaleVertical = instantiatedRScaleType\n .copy()\n .domain(rExtent)\n .range(rDomain)\n\n const columnWidth = cwHash ? 0 : oScale.bandwidth()\n\n let pieceData = []\n\n let mappedMiddleSize = adjustedSize[1]\n if (projection === \"vertical\") {\n mappedMiddleSize = adjustedSize[0]\n }\n const mappedMiddles = calculateMappedMiddles(\n oScale,\n mappedMiddleSize,\n padding\n )\n\n pieceData = oExtent.map((d) => (nestedPieces[d] ? nestedPieces[d] : []))\n\n let zeroValue =\n projection === \"vertical\" ? rScaleReverse(rScale(0)) : rScale(0)\n\n if (\n (isNaN(zeroValue) || zeroValue === -Infinity || zeroValue === Infinity) &&\n rExtentSettings.extent &&\n rExtentSettings.extent[0] !== undefined &&\n (zeroCheck === -Infinity || zeroCheck === Infinity)\n ) {\n zeroValue =\n projection === \"vertical\"\n ? rScaleReverse(rScale(rExtentSettings.extent[0]))\n : rScale(rExtentSettings.extent[0])\n }\n\n oExtent.forEach((o, i) => {\n projectedColumns[o] = {\n name: o,\n padding,\n pieceData: pieceData[i],\n pieces: pieceData[i]\n }\n projectedColumns[o].x = oScale(o) + padding / 2\n projectedColumns[o].y = 0\n projectedColumns[o].middle = mappedMiddles[o] + padding / 2\n\n let negativeOffset = zeroValue\n let positiveOffset = zeroValue\n\n let negativeBaseValue = 0\n let positiveBaseValue = 0\n\n projectedColumns[o].pieceData.forEach((piece) => {\n let valPosition\n\n if (pieceType.type === \"timeline\") {\n piece.scaledValue = rScale(piece.value[0])\n piece.scaledEndValue = rScale(piece.value[1])\n piece.scaledVerticalValue = rScaleVertical(piece.value[0])\n } else if (pieceType.type !== \"bar\" && pieceType.type !== \"clusterbar\") {\n piece.scaledValue = rScale(piece.value)\n piece.scaledVerticalValue = rScaleVertical(piece.value)\n } else if (pieceType.type === \"clusterbar\") {\n valPosition =\n projection === \"vertical\"\n ? rScaleReverse(rScale(piece.value))\n : rScale(piece.value)\n piece.scaledValue = Math.abs(zeroValue - valPosition)\n }\n\n piece.x = projectedColumns[o].x\n if (piece.value >= 0) {\n if (pieceType.type === \"bar\") {\n piece.scaledValue =\n projection === \"vertical\"\n ? positiveOffset -\n rScaleReverse(rScale(positiveBaseValue + piece.value))\n : rScale(positiveBaseValue + piece.value) - positiveOffset\n\n positiveBaseValue += piece.value\n }\n piece.base = zeroValue\n piece.bottom = pieceType.type === \"bar\" ? positiveOffset : 0\n piece.middle = piece.scaledValue / 2 + positiveOffset\n positiveOffset =\n projection === \"vertical\"\n ? positiveOffset - piece.scaledValue\n : positiveOffset + piece.scaledValue\n piece.negative = false\n } else {\n if (pieceType.type === \"bar\") {\n piece.scaledValue =\n projection === \"vertical\"\n ? Math.abs(rScale(piece.value) - rScale(0))\n : Math.abs(rScale(piece.value) - zeroValue)\n\n negativeBaseValue += piece.value\n }\n piece.base = zeroValue\n piece.bottom = pieceType.type === \"bar\" ? negativeOffset : 0\n piece.middle = negativeOffset - piece.scaledValue / 2\n negativeOffset =\n projection === \"vertical\"\n ? negativeOffset + piece.scaledValue\n : negativeOffset - piece.scaledValue\n piece.negative = true\n }\n })\n\n if (cwHash) {\n projectedColumns[o].width = cwHash[o] - padding\n\n if (currentProps.ordinalAlign === \"center\") {\n if (i === 0) {\n projectedColumns[o].x =\n projectedColumns[o].x - projectedColumns[o].width / 2\n projectedColumns[o].middle =\n projectedColumns[o].middle - projectedColumns[o].width / 2\n } else {\n projectedColumns[o].x =\n projectedColumns[oExtent[i - 1]].x +\n projectedColumns[oExtent[i - 1]].width\n projectedColumns[o].middle =\n projectedColumns[o].x + projectedColumns[o].width / 2\n }\n }\n\n projectedColumns[o].pct = cwHash[o] / cwHash.total\n projectedColumns[o].pct_start =\n (projectedColumns[o].x - oDomain[0]) / cwHash.total\n projectedColumns[o].pct_padding = padding / cwHash.total\n projectedColumns[o].pct_middle =\n (projectedColumns[o].middle - oDomain[0]) / cwHash.total\n } else {\n projectedColumns[o].width = columnWidth - padding\n if (currentProps.ordinalAlign === \"center\") {\n projectedColumns[o].x =\n projectedColumns[o].x - projectedColumns[o].width / 2\n projectedColumns[o].middle =\n projectedColumns[o].middle - projectedColumns[o].width / 2\n }\n\n projectedColumns[o].pct = columnWidth / adjustedSize[1]\n projectedColumns[o].pct_start =\n (projectedColumns[o].x - oDomain[0]) / adjustedSize[1]\n projectedColumns[o].pct_padding = padding / adjustedSize[1]\n projectedColumns[o].pct_middle =\n (projectedColumns[o].middle - oDomain[0]) / adjustedSize[1]\n }\n })\n\n const labelArray = []\n\n const pieArcs = []\n\n const labelSettings: LabelSettingsType =\n typeof oLabel === \"object\"\n ? Object.assign({ label: true, padding: 5 }, oLabel)\n : { orient: \"default\", label: oLabel, padding: 5 }\n\n if (oLabel || hoverAnnotation) {\n const offsetPct =\n (pieceType.offsetAngle && pieceType.offsetAngle / 360) || 0\n\n const rangePct = (pieceType.angleRange &&\n pieceType.angleRange.map((d) => d / 360)) || [0, 1]\n const rangeMod = rangePct[1] - rangePct[0]\n\n const adjustedPct =\n rangeMod < 1 ? scaleLinear().domain([0, 1]).range(rangePct) : (d) => d\n\n oExtent.forEach((d) => {\n const arcGenerator = arc()\n .innerRadius(0)\n .outerRadius(rScale.range()[1] / 2)\n\n const angle = projectedColumns[d].pct * rangeMod\n const startAngle = adjustedPct(projectedColumns[d].pct_start + offsetPct)\n\n const endAngle = startAngle + angle\n const midAngle = startAngle + angle / 2\n\n const markD = arcGenerator({\n startAngle: startAngle * twoPI,\n endAngle: endAngle * twoPI\n })\n const translate = [adjustedSize[0] / 2, adjustedSize[1] / 2]\n const centroid = arcGenerator.centroid({\n startAngle: startAngle * twoPI,\n endAngle: endAngle * twoPI\n })\n\n const addedPadding =\n centroid[1] > 0 &&\n (!labelSettings.orient ||\n labelSettings.orient === \"default\" ||\n labelSettings.orient === \"edge\")\n ? 8\n : 0\n\n const outerPoint = pointOnArcAtAngle(\n [0, 0],\n midAngle,\n rScale.range()[1] / 2 + labelSettings.padding + addedPadding\n )\n\n const pieArc = {\n startAngle,\n endAngle,\n midAngle,\n markD,\n translate,\n centroid,\n outerPoint\n }\n\n projectedColumns[d].pieArc = pieArc\n\n pieArcs.push(pieArc)\n })\n }\n\n if (currentProps.oLabel) {\n let labelingFn\n if (typeof labelSettings.label === \"function\") {\n labelingFn = labelSettings.label\n } else {\n const labelStyle: {\n textAnchor: \"inherit\" | \"middle\" | \"end\" | \"start\"\n } = {\n textAnchor: \"middle\"\n }\n if (projection === \"horizontal\" && labelSettings.orient === \"right\") {\n labelStyle.textAnchor = \"start\"\n } else if (projection === \"horizontal\") {\n labelStyle.textAnchor = \"end\"\n }\n\n labelingFn = (d, p, i) => {\n const additionalStyle: {\n textAnchor?: \"inherit\" | \"middle\" | \"end\" | \"start\" | null\n } = {}\n let transformRotate\n\n if (projection === \"radial\" && labelSettings.orient === \"stem\") {\n transformRotate = `rotate(${\n pieArcs[i].outerPoint[0] < 0\n ? pieArcs[i].midAngle * 360 + 90\n : pieArcs[i].midAngle * 360 - 90\n })`\n } else if (\n projection === \"radial\" &&\n labelSettings.orient === \"annotation\"\n ) {\n const { centroid } = pieArcs[i]\n\n const labelIndex = pieArcs.filter(\n (p, q) =>\n q < i &&\n centroid[0] < 0 === pieArcs[q].centroid[0] < 0 &&\n centroid[1] < 0 === pieArcs[q].centroid[1] < 0\n ).length\n const labelMod = labelIndex * 15\n let labelLength = d.length * 7\n let textAnchor: \"inherit\" | \"middle\" | \"end\" | \"start\" = \"start\"\n\n let positionProps = { dx: 0, dy: 0 }\n if (centroid[0] < 0) {\n textAnchor = \"end\"\n labelLength = -labelLength\n positionProps.dx = -35\n } else {\n positionProps.dx = 35\n }\n\n if (centroid[1] < 0) {\n positionProps.dy = -35 - labelMod\n } else {\n positionProps.dy = 35 + labelMod\n }\n return (\n <g>\n <path\n fill=\"none\"\n stroke=\"black\"\n strokeWidth={2}\n d={`M0,0L${positionProps.dx},${positionProps.dy}L${\n positionProps.dx + labelLength\n },${positionProps.dy}`}\n />\n <text\n textAnchor={textAnchor}\n x={positionProps.dx}\n y={positionProps.dy - 2}\n >\n {d}\n </text>\n </g>\n )\n } else if (\n projection === \"radial\" &&\n labelSettings.orient !== \"center\"\n ) {\n transformRotate = `rotate(${\n pieArcs[i].outerPoint[1] < 0\n ? pieArcs[i].midAngle * 360\n : pieArcs[i].midAngle * 360 + 180\n })`\n }\n if (\n projection === \"radial\" &&\n labelSettings.orient === \"stem\" &&\n ((pieArcs[i].outerPoint[0] > 0 && labelSettings.padding < 0) ||\n (pieArcs[i].outerPoint[0] < 0 && labelSettings.padding >= 0))\n ) {\n additionalStyle.textAnchor = \"end\"\n } else if (projection === \"radial\" && labelSettings.orient === \"stem\") {\n additionalStyle.textAnchor = \"start\"\n }\n return (\n <text\n {...labelStyle}\n {...additionalStyle}\n transform={transformRotate}\n >\n {d}\n </text>\n )\n }\n }\n\n oExtent.forEach((d, i) => {\n let xPosition = projectedColumns[d].middle\n let yPosition = 0\n\n if (projection === \"horizontal\") {\n yPosition = projectedColumns[d].middle\n if (labelSettings.orient === \"right\") {\n xPosition = adjustedSize[0] + 3\n } else {\n xPosition = -3\n }\n } else if (projection === \"radial\") {\n if (labelSettings.orient === \"annotation\") {\n xPosition =\n pieArcs[i].centroid[0] * 0.25 +\n pieArcs[i].outerPoint[0] * 0.75 +\n pieArcs[i].translate[0]\n yPosition =\n pieArcs[i].centroid[1] * 0.25 +\n pieArcs[i].outerPoint[1] * 0.75 +\n pieArcs[i].translate[1]\n } else if (labelSettings.orient === \"center\") {\n xPosition = pieArcs[i].centroid[0] + pieArcs[i].translate[0]\n yPosition = pieArcs[i].centroid[1] + pieArcs[i].translate[1]\n } else {\n xPosition = pieArcs[i].outerPoint[0] + pieArcs[i].translate[0]\n yPosition = pieArcs[i].outerPoint[1] + pieArcs[i].translate[1]\n }\n }\n\n const labelValue = labelSettings.labelFormatter\n ? labelSettings.labelFormatter(d)\n : d\n\n const label = labelingFn(\n labelValue,\n projectedColumns[d].pieceData.map((d) => d.data),\n i,\n projectedColumns[d]\n )\n labelArray.push(\n <g\n key={`olabel-${i}`}\n transform={`translate(${xPosition},${yPosition})`}\n >\n {label}\n </g>\n )\n })\n\n if (projection === \"vertical\") {\n let labelY\n if (labelSettings.orient === \"top\") {\n labelY = -15\n } else {\n labelY = 15 + rScale.range()[1]\n }\n oLabels = (\n <g\n key=\"ordinalframe-labels-container\"\n className=\"ordinal-labels\"\n transform={`translate(0,${labelY})`}\n >\n {labelArray}\n </g>\n )\n } else if (projection === \"horizontal\") {\n oLabels = (\n <g key=\"ordinalframe-labels-container\" className=\"ordinal-labels\">\n {labelArray}\n </g>\n )\n } else if (projection === \"radial\") {\n oLabels = (\n <g key=\"ordinalframe-labels-container\" className=\"ordinal-labels\">\n {labelArray}\n </g>\n )\n }\n }\n\n const isBarType = [\"bar\", \"clusterbar\", \"timeline\"].indexOf(pieceType.type) !== -1\n const usesPieceOverlays = (currentProps.hoverAnnotation || currentProps.pieceHoverAnnotation) && isBarType\n\n if (\n !usesPieceOverlays &&\n !currentProps.summaryHoverAnnotation &&\n (currentProps.hoverAnnotation ||\n currentProps.customClickBehavior ||\n currentProps.customDoubleClickBehavior ||\n currentProps.customHoverBehavior)\n ) {\n if (shouldRecalculateOverlay) {\n columnOverlays = generateColumnOverlays({\n oExtent,\n projectedColumns,\n rScale,\n pieArcs,\n padding,\n projection,\n customDoubleClickBehavior,\n customClickBehavior,\n customHoverBehavior\n })\n } else {\n columnOverlays = currentState.columnOverlays\n }\n }\n\n let pieceDataXY\n\n const pieceTypeForXY =\n pieceType.type && pieceType.type !== \"none\" ? pieceType.type : \"point\"\n const pieceTypeLayout: PieceLayoutType =\n typeof pieceTypeForXY === \"function\"\n ? pieceTypeForXY\n : layoutHash[pieceTypeForXY]\n\n const calculatedPieceData = pieceTypeLayout({\n type: pieceType,\n data: projectedColumns,\n renderMode: pieceRenderMode,\n eventListenersGenerator,\n styleFn: pieceStyle,\n projection,\n classFn: pieceClass,\n adjustedSize,\n chartSize: size,\n margin,\n rScale\n }) as Record<string, any>[]\n\n const keyedData = calculatedPieceData.reduce((p, c) => {\n if (c.o) {\n if (!p[c.o]) {\n p[c.o] = []\n }\n p[c.o].push(c)\n }\n return p\n }, {})\n\n Object.keys(projectedColumns).forEach((d) => {\n projectedColumns[d].xyData = keyedData[d] || []\n })\n let calculatedSummaries: ProjectedOrdinalSummary = {}\n\n if (summaryType.type && summaryType.type !== \"none\") {\n calculatedSummaries = drawSummaries({\n data: projectedColumns,\n type: summaryType,\n renderMode: summaryRenderMode,\n styleFn: summaryStyle,\n classFn: summaryClass,\n projection,\n eventListenersGenerator,\n adjustedSize,\n // chartSize: size,\n margin,\n axisCreator: axisGenerator\n })\n\n calculatedSummaries.originalData = projectedColumns\n }\n\n const yMod = projection === \"horizontal\" ? midMod : zeroFunction\n const xMod = projection === \"vertical\" ? midMod : zeroFunction\n const basePieceData = calculatedPieceData\n .map((d) => {\n if (d.piece && d.xy) {\n return {\n ...d.piece,\n type: \"frame-hover\",\n x: d.xy.x + xMod(d.xy),\n y: d.xy.y + yMod(d.xy)\n }\n }\n return null\n })\n .filter((d) => d)\n\n if (\n ((hoverAnnotation || pieceHoverAnnotation) &&\n [\"bar\", \"clusterbar\", \"timeline\"].indexOf(pieceType.type) === -1) ||\n summaryHoverAnnotation\n ) {\n if (summaryHoverAnnotation && calculatedSummaries.xyPoints) {\n pieceDataXY = calculatedSummaries.xyPoints.map(\n (d: { x: number; y: number }) =>\n Object.assign({}, d, {\n type: \"frame-hover\",\n isSummaryData: true,\n x: d.x,\n y: d.y\n })\n )\n } else if ((hoverAnnotation || pieceHoverAnnotation) && calculatedPieceData) {\n //Check interaction layer rendering when only one point per column\n pieceDataXY = basePieceData\n }\n }\n\n const { axis, axesTickLines } = orFrameAxisGenerator({\n axis: arrayWrappedAxis,\n data: allData,\n projection,\n adjustedSize,\n size,\n rScale,\n rScaleType: instantiatedRScaleType.copy(),\n pieceType,\n rExtent,\n maxColumnValues,\n xyData: basePieceData,\n margin,\n thresholds: calculatedSummaries.thresholds\n })\n\n return {\n pieceDataXY,\n oAccessor,\n rAccessor,\n summaryType,\n type: pieceType,\n ...assembleRenderPipeline({\n usesPieceOverlays,\n shouldRecalculateOverlay,\n calculatedPieceData,\n projection,\n customClickBehavior,\n customDoubleClickBehavior,\n customHoverBehavior,\n currentState,\n\n connectorStyle,\n connectorClass: connectorClassFn,\n connectorRenderMode: connectorRenderModeFn,\n connectorCanvasRender,\n summaryCanvasRender,\n pieceCanvasRender,\n connectorType,\n eventListenersGenerator,\n pieceType,\n summaryStyle,\n summaryClass,\n pieceStyle,\n pieceClass,\n\n keyedData,\n oExtent,\n projectedColumns,\n calculatedSummaries,\n oAccessor,\n\n rScale,\n\n calculatedRExtent,\n calculatedOExtent,\n rExtentSettings,\n oExtentSettings,\n\n adjustedPosition,\n adjustedSize,\n margin,\n\n backgroundGraphics,\n foregroundGraphics,\n arrayWrappedAxis,\n axis,\n axesTickLines,\n oLabels,\n title,\n columnOverlays,\n oScaleType,\n instantiatedRScaleType,\n oScale,\n rExtent,\n legend,\n pieceIDAccessor,\n currentProps\n })\n }\n}\n","import memoize from \"memoize-one\"\nimport { calculateMargin, adjustedPositionSize, keyAndObjectifyBarData } from \"../svg/frameFunctions\"\nimport { stringToFn, stringToArrayFn } from \"./dataFunctions\"\nimport { ProjectionTypes } from \"../types/generalTypes\"\n\nexport function createOrdinalPipelineCache() {\n return {\n marginCalc: memoize((\n margin: any,\n axes: any,\n title: any,\n oLabel: any,\n projection: ProjectionTypes,\n size: number[]\n ) => {\n const calculatedMargin = calculateMargin({ margin, axes, title, oLabel, projection, size })\n const { adjustedPosition, adjustedSize } = adjustedPositionSize({\n size,\n margin: calculatedMargin,\n projection\n })\n return { margin: calculatedMargin, adjustedPosition, adjustedSize }\n }),\n\n structureData: memoize((\n data: any[],\n renderKey: any,\n oAccessor: Function[],\n rAccessor: Array<(d: number | object, i?: number) => number>,\n originalRAccessor: any[],\n originalOAccessor: any[],\n multiAxis: boolean\n ) => {\n return keyAndObjectifyBarData({\n data,\n renderKey,\n oAccessor,\n rAccessor,\n originalRAccessor,\n originalOAccessor,\n multiAxis\n })\n }),\n\n accessorConversions: memoize((\n baseOAccessor: any,\n baseRAccessor: any,\n baseRenderKey: any,\n basePieceIDAccessor: any\n ) => ({\n oAccessor: stringToArrayFn<string | number>(baseOAccessor, (d) => d.renderKey),\n rAccessor: stringToArrayFn<number>(baseRAccessor, (d) => d.value || 1),\n renderKey: stringToFn<string | number>(baseRenderKey, (d, i) => i),\n pieceIDAccessor: stringToFn<string>(basePieceIDAccessor, () => \"\"),\n })),\n\n styleFns: memoize((\n baseConnectorStyle: any,\n baseSummaryStyle: any,\n baseStyle: any,\n basePieceClass: any,\n baseSummaryClass: any,\n baseConnectorClass: any,\n baseRenderMode: any,\n baseSummaryRenderMode: any,\n baseConnectorRenderMode: any,\n canvasPieces: any,\n canvasSummaries: any,\n canvasConnectors: any\n ) => ({\n connectorStyle: stringToFn<Record<string, any>>(baseConnectorStyle, () => ({}), true),\n summaryStyle: stringToFn<Record<string, any>>(baseSummaryStyle, () => ({}), true),\n pieceStyle: stringToFn<Record<string, any>>(baseStyle, () => ({}), true),\n pieceClass: stringToFn<string>(basePieceClass, () => \"\", true),\n summaryClass: stringToFn<string>(baseSummaryClass, () => \"\", true),\n connectorClass: stringToFn<string>(baseConnectorClass, () => \"\", true),\n pieceRenderMode: stringToFn<Record<string, any> | string>(baseRenderMode, undefined, true),\n summaryRenderMode: stringToFn<Record<string, any> | string>(baseSummaryRenderMode, undefined, true),\n connectorRenderMode: stringToFn<Record<string, any> | string>(baseConnectorRenderMode, undefined, true),\n pieceCanvasRender: stringToFn<boolean>(canvasPieces, undefined, true),\n summaryCanvasRender: stringToFn<boolean>(canvasSummaries, undefined, true),\n connectorCanvasRender: stringToFn<boolean>(canvasConnectors, undefined, true),\n })),\n }\n}\n\nexport type OrdinalPipelineCache = ReturnType<typeof createOrdinalPipelineCache>\n","\"use client\"\nimport * as React from \"react\"\nimport { useCallback, useMemo, useRef } from \"react\"\n\nimport { scaleBand, scaleLinear, ScaleLinear } from \"d3-scale\"\n\nimport {\n orFrameChangeProps,\n orFrameDataAffectingProps,\n orFrameScaleAffectingProps,\n orFrameStylingProps\n} from \"./constants/frame_props\"\nimport {\n svgORRule,\n svgHighlightRule,\n svgOrdinalLine,\n basicReactAnnotationRule,\n svgEncloseRule,\n svgRectEncloseRule,\n svgRRule,\n svgCategoryRule,\n htmlFrameHoverRule,\n htmlColumnHoverRule,\n screenProject,\n findIDPiece,\n getColumnScreenCoordinates\n} from \"./annotationRules/orframeRules\"\n\nimport { desaturationLayer } from \"./annotationRules/baseRules\"\n\nimport { findFirstAccessorValue } from \"./data/multiAccessorUtils\"\n\nimport Frame from \"./Frame\"\n\nimport { stringToFn, stringToArrayFn } from \"./data/dataFunctions\"\n\nimport { calculateOrdinalFrame } from \"./processing/ordinal\"\nimport { createOrdinalPipelineCache, OrdinalPipelineCache } from \"./data/ordinalPipelineCache\"\n\nimport { AnnotationType } from \"./types/annotationTypes\"\n\nimport { UpdatedAnnotationLayerProps } from \"./AnnotationLayer/AnnotationLayer\"\n\nimport { OrdinalFrameProps, OrdinalFrameState } from \"./types/ordinalTypes\"\nimport { useDerivedStateFromProps } from \"./useDerivedStateFromProps\"\nimport { useLegacyUnmountCallback } from \"./useLegacyUnmountCallback\"\n\nconst xScale = scaleLinear()\nconst yScale = scaleLinear()\n\nconst projectedCoordinatesObject = { y: \"y\", x: \"x\" }\n\nconst defaultOverflow = { top: 0, bottom: 0, left: 0, right: 0 }\n\nconst defaultProps: Partial<OrdinalFrameProps> = {\n annotations: [],\n foregroundGraphics: [],\n projection: \"vertical\",\n size: [500, 500],\n className: \"\",\n data: [],\n oScaleType: scaleBand(),\n rScaleType: scaleLinear as unknown as () => ScaleLinear<number, number>,\n type: \"none\",\n optimizeCustomTooltipPosition: false\n}\n\nexport function OrdinalFrameInner<TDatum = Record<string, any>>(\n allProps: OrdinalFrameProps<TDatum>\n) {\n const props = { ...defaultProps, ...allProps } as OrdinalFrameProps<TDatum>\n const pipelineCacheRef = useRef(createOrdinalPipelineCache())\n const baseState = {\n adjustedPosition: [],\n adjustedSize: [],\n backgroundGraphics: undefined,\n foregroundGraphics: undefined,\n axisData: undefined,\n renderNumber: 0,\n oLabels: { labels: [] },\n oAccessor: stringToArrayFn<string>(\"renderKey\"),\n rAccessor: stringToArrayFn<number>(\"value\"),\n oScale: scaleBand(),\n rScale: scaleLinear(),\n axes: undefined,\n calculatedOExtent: [],\n calculatedRExtent: [0, 1],\n columnOverlays: [],\n dataVersion: undefined,\n legendSettings: undefined,\n margin: { top: 0, bottom: 0, left: 0, right: 0 },\n oExtent: [],\n oScaleType: scaleBand(),\n orFrameRender: {},\n pieceDataXY: [],\n pieceIDAccessor: stringToFn<string>(\"semioticPieceID\"),\n projectedColumns: {},\n rExtent: [],\n rScaleType: scaleLinear(),\n summaryType: { type: \"none\" },\n title: {},\n type: { type: \"none\" },\n props: props as OrdinalFrameProps\n }\n\n const initialState = useMemo(\n () => ({\n ...baseState,\n ...calculateOrdinalFrame(props as OrdinalFrameProps, baseState, pipelineCacheRef.current)\n } as OrdinalFrameState),\n []\n )\n const state = useDerivedStateFromProps(\n (nextProps, prevState) => deriveOrdinalFrameState(nextProps as OrdinalFrameProps, prevState, pipelineCacheRef.current),\n props as OrdinalFrameProps,\n initialState\n )\n\n useLegacyUnmountCallback(props, state)\n\n const propsRef = useRef(props)\n propsRef.current = props\n const stateRef = useRef(state)\n stateRef.current = state\n\n const defaultSVGRuleCb = useCallback(\n (args) => defaultORSVGRule(propsRef.current as OrdinalFrameProps, stateRef.current, args),\n []\n )\n const defaultHTMLRuleCb = useCallback(\n (args) => defaultORHTMLRule(propsRef.current as OrdinalFrameProps, stateRef.current, args),\n []\n )\n\n const {\n className,\n annotationSettings,\n annotations,\n matte,\n renderKey,\n interaction,\n customClickBehavior,\n customHoverBehavior,\n customDoubleClickBehavior,\n projection,\n backgroundGraphics,\n foregroundGraphics,\n afterElements,\n beforeElements,\n disableContext,\n summaryType,\n summaryHoverAnnotation,\n pieceHoverAnnotation,\n hoverAnnotation,\n canvasPostProcess,\n canvasPieces,\n canvasSummaries,\n canvasConnectors,\n renderOrder,\n additionalDefs,\n sketchyRenderingEngine,\n frameRenderOrder,\n disableCanvasInteraction,\n disableProgressiveRendering,\n transition\n } = props\n\n const {\n orFrameRender,\n projectedColumns,\n adjustedPosition,\n adjustedSize,\n legendSettings,\n columnOverlays,\n axesTickLines,\n axes,\n margin,\n pieceDataXY,\n oLabels,\n title\n } = state\n\n const size = [\n adjustedSize[0] + margin.left + margin.right,\n adjustedSize[1] + margin.top + margin.bottom\n ]\n\n let interactionOverflow\n\n if (summaryType && summaryType.amplitude) {\n if (projection === \"horizontal\") {\n interactionOverflow = {\n top: summaryType.amplitude,\n bottom: 0,\n left: 0,\n right: 0\n }\n } else if (projection === \"radial\") {\n interactionOverflow = defaultOverflow\n } else {\n interactionOverflow = {\n top: 0,\n bottom: 0,\n left: summaryType.amplitude,\n right: 0\n }\n }\n }\n\n // Memoize foreground graphics calculation\n const renderedForegroundGraphics = useMemo(\n () =>\n typeof foregroundGraphics === \"function\"\n ? foregroundGraphics({ size, margin })\n : foregroundGraphics,\n [foregroundGraphics, size, margin]\n )\n\n // Memoize className concatenation\n const frameClassName = useMemo(\n () => `${className} ${projection}`,\n [className, projection]\n )\n\n // Memoize hoverAnnotation selection\n const selectedHoverAnnotation = useMemo(\n () => summaryHoverAnnotation || hoverAnnotation || pieceHoverAnnotation,\n [summaryHoverAnnotation, pieceHoverAnnotation, hoverAnnotation]\n )\n\n // Memoize interaction object\n const memoizedInteraction = useMemo(\n () =>\n interaction && {\n ...interaction,\n brush: interaction.columnsBrush !== true && \"oBrush\",\n projection,\n projectedColumns\n },\n [interaction, projection, projectedColumns]\n )\n\n // Memoize canvas rendering flag\n const canvasRendering = useMemo(\n () => !!(canvasPieces || canvasSummaries || canvasConnectors),\n [canvasPieces, canvasSummaries, canvasConnectors]\n )\n\n return (\n <Frame\n name=\"ordinalframe\"\n renderPipeline={orFrameRender}\n adjustedPosition={adjustedPosition}\n adjustedSize={adjustedSize}\n size={size}\n xScale={xScale}\n yScale={yScale}\n axes={axes}\n axesTickLines={axesTickLines}\n title={title}\n matte={matte}\n additionalDefs={additionalDefs}\n className={frameClassName}\n frameKey={\"none\"}\n renderFn={renderKey}\n projectedCoordinateNames={projectedCoordinatesObject}\n defaultSVGRule={defaultSVGRuleCb}\n defaultHTMLRule={defaultHTMLRuleCb}\n hoverAnnotation={selectedHoverAnnotation}\n annotations={annotations}\n annotationSettings={annotationSettings}\n legendSettings={legendSettings}\n interaction={memoizedInteraction}\n customClickBehavior={customClickBehavior}\n customHoverBehavior={customHoverBehavior}\n customDoubleClickBehavior={customDoubleClickBehavior}\n points={pieceDataXY}\n margin={margin}\n columns={projectedColumns}\n backgroundGraphics={backgroundGraphics}\n foregroundGraphics={renderedForegroundGraphics}\n beforeElements={beforeElements}\n afterElements={afterElements}\n overlay={columnOverlays}\n rScale={state.rScale}\n projection={projection}\n disableContext={disableContext}\n interactionOverflow={interactionOverflow}\n canvasPostProcess={canvasPostProcess}\n \n canvasRendering={canvasRendering}\n renderOrder={renderOrder}\n disableCanvasInteraction={disableCanvasInteraction}\n sketchyRenderingEngine={sketchyRenderingEngine}\n frameRenderOrder={frameRenderOrder}\n additionalVizElements={oLabels}\n disableProgressiveRendering={disableProgressiveRendering}\n transition={transition}\n />\n )\n}\n\nfunction deriveOrdinalFrameState(\n nextProps: OrdinalFrameProps,\n prevState: OrdinalFrameState,\n cache?: OrdinalPipelineCache\n) {\n const { props } = prevState\n\n // Check which category of props changed\n const dataPropsChanged = !prevState.dataVersion && orFrameDataAffectingProps.some(\n (prop) => props[prop] !== nextProps[prop]\n )\n\n const scalePropsChanged = !prevState.dataVersion && orFrameScaleAffectingProps.some(\n (prop) => props[prop] !== nextProps[prop]\n )\n\n const sizeChanged = props.size[0] !== nextProps.size[0] || props.size[1] !== nextProps.size[1]\n\n // Force full recalc if dataVersion changed or no projectedColumns exists\n if (\n (prevState.dataVersion && prevState.dataVersion !== nextProps.dataVersion) ||\n !prevState.projectedColumns\n ) {\n return {\n ...calculateOrdinalFrame(nextProps, prevState, cache),\n props: nextProps\n }\n }\n\n // Full data recalculation needed if data-affecting props changed\n if (dataPropsChanged) {\n return {\n ...calculateOrdinalFrame(nextProps, prevState, cache),\n props: nextProps\n }\n }\n\n // Scale/layout recalculation needed if size or scale-affecting props changed\n // Note: calculateOrdinalFrame doesn't have an updateData flag like XYFrame,\n // but size changes typically need full recalc due to column layout\n if (sizeChanged || scalePropsChanged) {\n return {\n ...calculateOrdinalFrame(nextProps, prevState, cache),\n props: nextProps\n }\n }\n\n // Only styling changed - no recalc needed, React will re-render with existing state\n return { props: nextProps }\n}\n\nconst annotationTypeStrings = new Set([\n \"label\", \"callout\", \"callout-circle\", \"callout-rect\",\n \"callout-custom\", \"xy-threshold\", \"bracket\"\n])\n\nfunction defaultORSVGRule(\n props: OrdinalFrameProps,\n state: OrdinalFrameState,\n {\n d,\n i,\n annotationLayer\n }: {\n d: AnnotationType\n i: number\n annotationLayer: UpdatedAnnotationLayerProps\n }\n) {\n const { projection, svgAnnotationRules } = props\n\n const {\n adjustedPosition,\n adjustedSize,\n oAccessor,\n rAccessor,\n oScale,\n rScale,\n projectedColumns,\n orFrameRender,\n pieceIDAccessor,\n rScaleType,\n summaryType,\n type\n } = state\n\n let screenCoordinates: number[] | number[][] = [0, 0]\n\n getColumnScreenCoordinates\n\n if (d.isColumnAnnotation) {\n const {\n coordinates: [xPosition, yPosition]\n } = getColumnScreenCoordinates({\n d,\n projectedColumns,\n oAccessor,\n summaryType,\n type,\n projection,\n adjustedPosition,\n adjustedSize\n })\n screenCoordinates = [xPosition, yPosition]\n } else if (d.coordinates || (d.type === \"enclose\" && d.neighbors)) {\n screenCoordinates = (d.coordinates || d.neighbors).map(\n (p: { column?: string }) => {\n const pO = findFirstAccessorValue(oAccessor, p) || p.column\n const oColumn = projectedColumns[pO]\n const idPiece = findIDPiece(pieceIDAccessor, oColumn, p)\n\n return screenProject({\n p,\n adjustedSize,\n rScale,\n rAccessor,\n idPiece,\n projection,\n oColumn,\n rScaleType\n })\n }\n )\n } else {\n const pO = findFirstAccessorValue(oAccessor, d) || d.column\n const oColumn = projectedColumns[pO]\n const idPiece = findIDPiece(pieceIDAccessor, oColumn, d)\n\n screenCoordinates = screenProject({\n p: d,\n adjustedSize,\n rScale,\n rAccessor,\n idPiece,\n projection,\n oColumn,\n rScaleType\n })\n }\n\n const { voronoiHover } = annotationLayer\n\n //TODO: Process your rules first\n const customAnnotation =\n svgAnnotationRules &&\n svgAnnotationRules({\n d,\n i,\n oScale,\n rScale,\n oAccessor,\n rAccessor,\n orFrameProps: props,\n orFrameState: state,\n screenCoordinates,\n adjustedPosition,\n adjustedSize,\n annotationLayer,\n categories: projectedColumns,\n voronoiHover\n })\n if (svgAnnotationRules && customAnnotation !== null) {\n return customAnnotation\n } else if (d.type === \"desaturation-layer\") {\n return desaturationLayer({\n style: d.style instanceof Function ? d.style(d, i) : d.style,\n size: adjustedSize,\n i,\n key: d.key\n })\n } else if (d.type === \"ordinal-line\") {\n return svgOrdinalLine({ d, screenCoordinates, voronoiHover })\n } else if (d.type === \"or\") {\n return svgORRule({ d, i, screenCoordinates, projection })\n } else if (d.type === \"highlight\") {\n return svgHighlightRule({\n d,\n pieceIDAccessor,\n orFrameRender,\n oAccessor\n })\n } else if (typeof d.type === \"function\" || annotationTypeStrings.has(d.type)) {\n return basicReactAnnotationRule({ d, i, screenCoordinates })\n } else if (d.type === \"enclose\") {\n return svgEncloseRule({ d, i, screenCoordinates })\n } else if (d.type === \"enclose-rect\") {\n return svgRectEncloseRule({ d, screenCoordinates, i })\n } else if (d.type === \"r\") {\n return svgRRule({\n d,\n i,\n screenCoordinates,\n rScale,\n rAccessor,\n projection,\n adjustedSize,\n adjustedPosition\n })\n } else if (d.type === \"category\") {\n return svgCategoryRule({\n projection,\n d,\n i,\n categories: state.projectedColumns,\n adjustedSize\n })\n }\n return null\n}\n\nfunction defaultORHTMLRule(\n props: OrdinalFrameProps,\n state: OrdinalFrameState,\n {\n d,\n i,\n annotationLayer\n }: {\n d: AnnotationType\n i: number\n annotationLayer: UpdatedAnnotationLayerProps\n }\n) {\n const {\n adjustedPosition,\n adjustedSize,\n oAccessor,\n rAccessor,\n oScale,\n rScale,\n projectedColumns,\n summaryType,\n type,\n pieceIDAccessor,\n rScaleType\n } = state\n const {\n htmlAnnotationRules,\n tooltipContent,\n optimizeCustomTooltipPosition,\n projection,\n size\n } = props\n let screenCoordinates: number[] | number[][] = [0, 0]\n\n const { voronoiHover } = annotationLayer\n\n if (d.coordinates || (d.type === \"enclose\" && d.neighbors)) {\n screenCoordinates = (d.coordinates || d.neighbors).map(\n (p: { column?: string }) => {\n const pO = findFirstAccessorValue(oAccessor, p) || p.column\n const oColumn = projectedColumns[pO]\n const idPiece = findIDPiece(pieceIDAccessor, oColumn, p)\n\n return screenProject({\n p,\n adjustedSize,\n rScale,\n rAccessor,\n idPiece,\n projection,\n oColumn,\n rScaleType\n })\n }\n )\n } else if (d.type === \"column-hover\") {\n const {\n coordinates: [xPosition, yPosition]\n } = getColumnScreenCoordinates({\n d,\n projectedColumns,\n oAccessor,\n summaryType,\n type,\n projection,\n adjustedPosition,\n adjustedSize\n })\n screenCoordinates = [xPosition, yPosition]\n } else {\n const pO = findFirstAccessorValue(oAccessor, d) || d.column\n const oColumn = projectedColumns[pO]\n const idPiece = findIDPiece(pieceIDAccessor, oColumn, d)\n\n screenCoordinates = screenProject({\n p: d,\n adjustedSize,\n rScale,\n rAccessor,\n idPiece,\n projection,\n oColumn,\n rScaleType\n })\n }\n\n const flippedRScale =\n projection === \"vertical\"\n ? rScaleType.domain(rScale.domain()).range(rScale.range().reverse())\n : rScale\n //TODO: Process your rules first\n const customAnnotation =\n htmlAnnotationRules &&\n htmlAnnotationRules({\n d,\n i,\n oScale,\n rScale: flippedRScale,\n oAccessor,\n rAccessor,\n orFrameProps: props,\n screenCoordinates,\n adjustedPosition,\n adjustedSize,\n annotationLayer,\n orFrameState: state,\n categories: state.projectedColumns,\n voronoiHover\n })\n\n if (htmlAnnotationRules && customAnnotation !== null) {\n return customAnnotation\n }\n\n if (d.type === \"frame-hover\") {\n return htmlFrameHoverRule({\n d,\n i,\n rAccessor,\n oAccessor,\n projection,\n tooltipContent,\n optimizeCustomTooltipPosition,\n projectedColumns,\n pieceIDAccessor,\n adjustedSize,\n rScale,\n type,\n rScaleType\n })\n } else if (d.type === \"column-hover\") {\n return htmlColumnHoverRule({\n d,\n i,\n summaryType,\n oAccessor,\n projectedColumns,\n type,\n adjustedPosition,\n adjustedSize,\n projection,\n tooltipContent,\n optimizeCustomTooltipPosition\n })\n }\n return null\n}\n\nOrdinalFrameInner.displayName = \"OrdinalFrame\"\nconst OrdinalFrame = React.memo(OrdinalFrameInner) as typeof OrdinalFrameInner\nexport default OrdinalFrame\n","\"use client\"\nimport * as React from \"react\"\n\nimport XYFrame from \"./XYFrame\"\n\nimport { XYFrameProps } from \"./types/xyTypes\"\n\nimport { Interactivity } from \"./types/interactionTypes\"\n\nexport interface MinimapProps extends XYFrameProps {\n brushStart: Function\n brush: Function\n brushEnd: Function\n xBrushable: boolean\n yBrushable: boolean\n yBrushExtent?: number[]\n xBrushExtent?: number[]\n size: number[]\n}\n\nconst MiniMap = (props: MinimapProps) => {\n const {\n brushStart,\n brush,\n brushEnd,\n xBrushable,\n yBrushable,\n yBrushExtent,\n xBrushExtent,\n ...rest\n } = props\n const interactivity: Interactivity = {\n start: brushStart,\n during: brush,\n end: brushEnd\n }\n\n if (xBrushable && yBrushable) {\n interactivity.brush = \"xyBrush\"\n\n if (xBrushExtent || yBrushExtent) {\n interactivity.extent = [[0, 0], [...props.size]]\n }\n if (xBrushExtent) {\n interactivity.extent[0] = xBrushExtent\n }\n if (yBrushExtent) {\n interactivity.extent[1] = yBrushExtent\n }\n } else if (xBrushable) {\n interactivity.brush = \"xBrush\"\n if (xBrushExtent) {\n interactivity.extent = xBrushExtent\n }\n } else if (yBrushable) {\n interactivity.brush = \"yBrush\"\n if (yBrushExtent) {\n interactivity.extent = yBrushExtent\n }\n }\n\n return <XYFrame {...rest} interaction={interactivity} />\n}\n\nexport default MiniMap\n","\"use client\"\nimport * as React from \"react\"\n\n// components\nimport XYFrame from \"./XYFrame\"\nimport MiniMap from \"./MiniMap\"\n\nimport { XYFrameProps } from \"./types/xyTypes\"\n\ninterface MinimapXYFrameProps<TDatum = Record<string, any>> extends XYFrameProps<TDatum> {\n renderBefore?: boolean\n minimap: { summaries: object[] }\n}\n\nconst generateMinimap = <TDatum = Record<string, any>>(props: MinimapXYFrameProps<TDatum>) => {\n const {\n xAccessor,\n yAccessor,\n points,\n lines,\n minimap,\n summaries,\n size,\n lineDataAccessor,\n lineType,\n lineStyle,\n summaryStyle,\n pointStyle,\n lineClass,\n summaryClass,\n pointClass,\n lineRenderMode,\n pointRenderMode,\n summaryRenderMode,\n canvasLines,\n canvasPoints,\n canvasSummaries,\n axes,\n margin,\n name,\n annotations,\n summaryType,\n interactionSettings\n } = props\n\n const miniDefaults = {\n position: [0, 0],\n size: [size[0], size[1] * 0.25],\n xAccessor: xAccessor,\n yAccessor: yAccessor,\n points: points,\n lines: lines,\n summaries: summaries,\n lineDataAccessor: lineDataAccessor,\n xBrushable: true,\n yBrushable: true,\n brushStart: () => {},\n brush: () => {},\n brushEnd: () => {},\n lineType: lineType,\n lineStyle,\n summaryStyle,\n pointStyle,\n lineClass,\n summaryClass,\n pointClass,\n lineRenderMode,\n pointRenderMode,\n summaryRenderMode,\n canvasLines,\n canvasPoints,\n canvasSummaries,\n axes,\n margin,\n name,\n annotations,\n summaryType,\n interactionSettings\n }\n\n const combinedOptions = {\n ...miniDefaults,\n ...minimap,\n hoverAnnotation: false\n }\n\n return <MiniMap {...combinedOptions} />\n}\n\nexport default function MinimapXYFrame<TDatum = Record<string, any>>(props: MinimapXYFrameProps<TDatum>) {\n const miniMap = generateMinimap(props)\n const options: {\n beforeElements?: React.ReactNode\n afterElements?: React.ReactNode\n } = {}\n const { minimap, renderBefore, ...rest } = props\n\n if (renderBefore) {\n options.beforeElements = miniMap\n } else {\n options.afterElements = miniMap\n }\n\n return <XYFrame {...rest} {...options} />\n}\n","import * as React from \"react\"\nimport Annotation from \"../Annotation\"\n\nimport { packEnclose } from \"d3-hierarchy\"\nimport { circleEnclosure, rectangleEnclosure, hullEnclosure } from \"./baseRules\"\nimport TooltipPositioner from \"../TooltipPositioner\"\n\nexport const htmlFrameHoverRule = ({\n d: baseD,\n i,\n tooltipContent,\n optimizeCustomTooltipPosition,\n nodes,\n edges,\n nodeIDAccessor,\n adjustedSize\n}) => {\n const d =\n baseD.x !== undefined && baseD.y !== undefined\n ? baseD\n : baseD.edge\n ? {\n ...(edges.find(\n (p) =>\n nodeIDAccessor(p.source) === nodeIDAccessor(baseD.source) &&\n nodeIDAccessor(p.target) === nodeIDAccessor(baseD.target)\n ) || {}),\n ...baseD\n }\n : nodes.find((p) => nodeIDAccessor(p) === baseD.id)\n\n if (!d) return null\n\n let content = d.edge ? (\n <div\n className=\"tooltip-content\"\n data-testid=\"tooltip-content\"\n >\n <p key=\"html-annotation-content-1\">\n {(d.source || d.edge.source).id} to {(d.target || d.edge.target).id}\n </p>\n </div>\n ) : (\n <div\n className=\"tooltip-content\"\n data-testid=\"tooltip-content\"\n >\n <p key=\"html-annotation-content-1\">{d.id}</p>\n <p key=\"html-annotation-content-2\">Degree: {d.degree}</p>\n </div>\n )\n\n if (d.type === \"frame-hover\" && tooltipContent) {\n content = optimizeCustomTooltipPosition ? (\n <TooltipPositioner\n tooltipContent={tooltipContent}\n tooltipContentArgs={d}\n />\n ) : (\n tooltipContent(d)\n )\n }\n\n const flipped = adjustedSize && d.x > adjustedSize[0] / 2\n const tooltipStyle: React.CSSProperties = {\n position: \"absolute\",\n top: `${d.y}px`\n }\n\n if (flipped) {\n tooltipStyle.right = `${adjustedSize[0] - d.x}px`\n } else {\n tooltipStyle.left = `${d.x}px`\n }\n\n return (\n <div\n key={`network-annotation-label-${i}`}\n className={`annotation annotation-network-label ${d.className || \"\"}`}\n data-testid=\"network-tooltip-container\"\n style={tooltipStyle}\n >\n {content}\n </div>\n )\n}\n\nexport const svgNodeRule = ({ d, i, nodeSizeAccessor }) => {\n if (!d) {\n return null\n }\n const noteData = Object.assign(\n {\n dx: d.dx || -25,\n dy: d.dy || -25,\n x: d.x,\n y: d.y,\n note: { label: d.label, orientation: d.orientation, align: d.align },\n connector: { end: \"arrow\" }\n },\n d,\n {\n type: \"callout-circle\",\n subject: {\n radius: d.radius || d.radius || nodeSizeAccessor(d)\n }\n }\n )\n return <Annotation key={d.key || `annotation-${i}`} noteData={noteData} />\n}\n\nexport const svgReactAnnotationRule = ({\n d,\n i,\n projectedNodes,\n nodeIDAccessor\n}) => {\n const selectedNode =\n d.x !== undefined && d.y !== undefined\n ? d\n : projectedNodes.find((p) => nodeIDAccessor(p) === d.id)\n if (!selectedNode) {\n return null\n }\n const noteData = Object.assign(\n {\n dx: 0,\n dy: 0,\n x: selectedNode.x,\n y: selectedNode.y,\n note: { label: d.label },\n connector: { end: \"arrow\" }\n },\n d,\n { type: typeof d.type === \"function\" ? d.type : undefined }\n )\n return <Annotation key={d.key || `annotation-${i}`} noteData={noteData} />\n}\n\nexport const svgEncloseRule = ({\n d,\n i,\n projectedNodes,\n nodeIDAccessor,\n nodeSizeAccessor\n}) => {\n const selectedNodes = projectedNodes.filter(\n (p) => d.ids.indexOf(nodeIDAccessor(p)) !== -1\n )\n if (selectedNodes.length === 0) {\n return null\n }\n const circle = packEnclose(\n selectedNodes.map((p) => ({ x: p.x, y: p.y, r: nodeSizeAccessor(p) }))\n )\n return circleEnclosure({ circle, d, i })\n}\n\nexport const svgRectEncloseRule = ({\n d,\n i,\n projectedNodes,\n nodeIDAccessor,\n nodeSizeAccessor\n}) => {\n const selectedNodes = projectedNodes.filter(\n (p) => d.ids.indexOf(nodeIDAccessor(p)) !== -1\n )\n if (selectedNodes.length === 0) {\n return null\n }\n\n const bboxNodes = selectedNodes.map((p) => {\n if (p.shapeNode) {\n return {\n x0: p.x0,\n x1: p.x1,\n y0: p.y0,\n y1: p.y1\n }\n }\n const nodeSize = nodeSizeAccessor(p)\n return {\n x0: p.x - nodeSize,\n x1: p.x + nodeSize,\n y0: p.y - nodeSize,\n y1: p.y + nodeSize\n }\n })\n\n return rectangleEnclosure({ bboxNodes, d, i })\n}\n\nexport const svgHullEncloseRule = ({\n d,\n i,\n projectedNodes,\n nodeIDAccessor,\n nodeSizeAccessor\n}) => {\n const selectedNodes = projectedNodes.filter(\n (p) => d.ids.indexOf(nodeIDAccessor(p)) !== -1\n )\n\n if (selectedNodes.length === 0) {\n return null\n }\n\n const projectedPoints = []\n\n selectedNodes.forEach((p) => {\n if (p.shapeNode) {\n projectedPoints.push({ x: p.x0, y: p.y0 })\n projectedPoints.push({ x: p.x0, y: p.y1 })\n projectedPoints.push({ x: p.x1, y: p.y0 })\n projectedPoints.push({ x: p.x1, y: p.y1 })\n } else {\n const nodeSize = nodeSizeAccessor(p)\n projectedPoints.push({ x: p.x - nodeSize, y: p.y - nodeSize })\n projectedPoints.push({ x: p.x + nodeSize, y: p.y - nodeSize })\n projectedPoints.push({ x: p.x - nodeSize, y: p.y + nodeSize })\n projectedPoints.push({ x: p.x + nodeSize, y: p.y + nodeSize })\n }\n })\n\n return hullEnclosure({ points: projectedPoints.map((d) => [d.x, d.y]), d, i })\n}\n\nexport const svgHighlightRule = ({ d, i, networkFrameRender }) => {\n const { nodes } = networkFrameRender\n const { customMark, styleFn: baseStyle } = nodes\n\n let styleFn = baseStyle\n if (d.style && typeof d.style === \"function\") {\n styleFn = (d) => ({ ...baseStyle(d), ...d.style(d) })\n } else if (d.style) {\n styleFn = (d) => ({ ...baseStyle(d), ...d.style })\n }\n\n const transform = `translate(${d.x},${d.y})`\n\n const HighlightMark = customMark({\n d,\n styleFn,\n transform,\n key: `highlight-${i}`\n })\n\n return HighlightMark\n}\n","import * as React from \"react\"\nimport { arc } from \"d3-shape\"\nimport { scaleLinear } from \"d3-scale\"\n\nexport const circleNodeGenerator = ({\n d,\n i,\n styleFn,\n renderMode,\n key,\n className,\n transform\n}) => {\n //this is repetitious\n const style = styleFn(d, i)\n return (\n <rect\n key={key}\n transform={transform}\n width={d.nodeSize * 2}\n height={d.nodeSize * 2}\n ry={d.nodeSize * 2}\n rx={d.nodeSize * 2}\n x={-d.nodeSize}\n y={-d.nodeSize}\n {...style}\n style={style}\n className={className}\n aria-label={`Node ${d.id}`}\n tabIndex={-1}\n />\n )\n}\n\nexport const gridProps = (gridSize) => {\n return {\n x: -gridSize / 2,\n y: -gridSize / 2,\n width: gridSize,\n height: gridSize\n }\n}\n\nexport const sankeyNodeGenerator = ({\n d,\n i,\n styleFn,\n renderMode,\n key,\n className,\n transform\n}) => {\n const height = d.direction !== \"down\" ? d.height : d.width\n const width = d.direction !== \"down\" ? d.width : d.height\n\n if (!d) {\n return <g />\n }\n\n return (\n <rect key={key}\n className={className}\n transform={transform}\n\n height={height}\n width={width}\n x={-width / 2}\n y={-height / 2}\n rx={0}\n ry={0}\n style={styleFn(d)}\n aria-label={`Node ${d.id}`}\n tabIndex={-1}\n />\n )\n}\n\nexport const chordNodeGenerator =\n (size) =>\n ({ d, i, styleFn, renderMode, key, className }) => {\n if (!d) {\n return <g />\n }\n\n return (\n <path key={key}\n className={className}\n transform={`translate(${size[0] / 2},${size[1] / 2})`}\n\n d={d.d}\n style={styleFn(d, i)}\n aria-label={`Node ${d.id}`}\n tabIndex={-1}\n />\n )\n }\n\nexport const matrixNodeGenerator = (size, nodes) => {\n const gridSize = Math.min(...size)\n const stepSize = gridSize / (nodes.length + 1)\n\n return ({ d, i, styleFn, renderMode, key, className }) => {\n if (!d) {\n return <g />\n }\n\n const showText = stepSize > 6\n const showLine = stepSize > 3\n const showRect = stepSize > 0.5\n\n const textProps: {\n textAnchor: \"inherit\" | \"middle\" | \"end\" | \"start\"\n fontSize: string\n } = {\n textAnchor: \"end\",\n fontSize: `${stepSize / 2}px`\n }\n const style = styleFn(d, i)\n const renderModeValue = renderMode ? renderMode(d, i) : undefined\n\n return (\n <g key={key} className={className}>\n {showRect && (\n <rect\n x={stepSize / 2}\n y={d.y - stepSize / 2}\n width={gridSize - stepSize}\n height={stepSize}\n style={{ ...style, stroke: \"none\" }}\n />\n )}\n {showRect && (\n <rect\n y={stepSize / 2}\n x={d.y - stepSize / 2}\n height={gridSize - stepSize}\n width={stepSize}\n style={{ ...style, stroke: \"none\" }}\n />\n )}\n {showLine && (\n <line\n stroke=\"black\"\n x1={0}\n x2={gridSize - stepSize / 2}\n y1={d.y - stepSize / 2}\n y2={d.y - stepSize / 2}\n style={style}\n />\n )}\n {showLine && (\n <line\n stroke=\"black\"\n y1={0}\n y2={gridSize - stepSize / 2}\n x1={d.y - stepSize / 2}\n x2={d.y - stepSize / 2}\n style={style}\n />\n )}\n {showLine && i === nodes.length - 1 && (\n <line\n stroke=\"black\"\n x1={0}\n x2={gridSize - stepSize / 2}\n y1={d.y + stepSize / 2}\n y2={d.y + stepSize / 2}\n style={style}\n />\n )}\n {showLine && i === nodes.length - 1 && (\n <line\n stroke=\"black\"\n y1={0}\n y2={gridSize - stepSize / 2}\n x1={d.y + stepSize / 2}\n x2={d.y + stepSize / 2}\n style={style}\n />\n )}\n {showText && (\n <text x={0} y={d.y + stepSize / 5} {...textProps}>\n {d.id}\n </text>\n )}\n {showText && (\n <text\n transform={`translate(${d.y}) rotate(90) translate(0,${\n stepSize / 5\n })`}\n {...textProps}\n y={0}\n >\n {d.id}\n </text>\n )}\n </g>\n )\n }\n}\n\nexport const radialRectNodeGenerator = (size, center, type) => {\n const radialArc = arc()\n const { angleRange = [0, 360] } = type\n const rangePct = angleRange.map((d) => d / 360)\n const rangeMod = rangePct[1] - rangePct[0]\n\n const adjustedPct =\n rangeMod < 1 ? scaleLinear().domain([0, 1]).range(rangePct) : (d) => d\n\n return ({ d, i, styleFn, renderMode, key, className }) => {\n if (!d) {\n return <g />\n }\n\n radialArc.innerRadius(d.y0 / 2).outerRadius(d.y1 / 2)\n\n return (\n <path key={key}\n transform={`translate(${center})`}\n\n d={radialArc({\n startAngle: adjustedPct(d.x0 / size[0]) * Math.PI * 2,\n endAngle: adjustedPct(d.x1 / size[0]) * Math.PI * 2\n })}\n style={styleFn(d, i)}\n className={className}\n aria-label={`Node ${d.id}`}\n tabIndex={-1}\n />\n )\n }\n}\n\nexport const radialLabelGenerator = (node, nodei, nodeIDAccessor, size) => {\n const anglePct = (node.x1 + node.x0) / 2 / size[0]\n const nodeLabel = nodeIDAccessor(node, nodei)\n const labelRotate = anglePct > 0.5 ? anglePct * 360 + 90 : anglePct * 360 - 90\n\n return (\n <g transform={`rotate(${labelRotate})`}>\n {typeof nodeLabel === \"string\" ? (\n <text textAnchor=\"middle\" y={5}>\n {nodeLabel}\n </text>\n ) : (\n nodeLabel\n )}\n </g>\n )\n}\n\nexport const hierarchicalRectNodeGenerator = ({\n d,\n i,\n styleFn,\n renderMode,\n key,\n className\n}) => {\n if (!d) {\n return <g />\n }\n //this is repetitious\n return (\n <rect key={key}\n transform={`translate(0,0)`}\n\n width={d.x1 - d.x0}\n height={d.y1 - d.y0}\n x={d.x0}\n y={d.y0}\n rx={0}\n ry={0}\n style={styleFn(d, i)}\n className={className}\n aria-label={`Node ${d.id}`}\n tabIndex={-1}\n />\n )\n}\n","import * as React from \"react\"\nimport { useEffect, useRef } from \"react\"\nimport { select } from \"d3-selection\"\n\nimport {\n d as glyphD /*, project as glyphProject, mutate as glyphMutate*/\n} from \"d3-glyphedge\"\n\nimport { pathArrows } from \"d3-path-arrows\"\n\nimport {\n curveMonotoneX,\n curveMonotoneY,\n curveBasis,\n line,\n linkHorizontal,\n linkVertical\n} from \"d3-shape\"\nimport { linearRibbon } from \"./SvgHelper\"\nimport { interpolateNumber } from \"d3-interpolate\"\n\nimport { gridProps } from \"./nodeGenerators\"\n\nconst curvature = 0.5\n\nconst horizontalDagreLineGenerator = line()\n .curve(curveMonotoneX)\n .x((d) => d.x)\n .y((d) => d.y)\n\nconst verticalDagreLineGenerator = line()\n .curve(curveMonotoneY)\n .x((d) => d.x)\n .y((d) => d.y)\n\nexport function sankeyEdgeSort(a, b, direction) {\n if (a.circular && !b.circular) return -1\n if (b.circular && !a.circular) return 1\n const first = direction === \"down\" ? \"y\" : \"x\"\n const second = direction === \"down\" ? \"x\" : \"y\"\n\n return a.source[first] === b.source[first]\n ? a.sankeyWidth === b.sankeyWidth\n ? a.source[second] - b.source[second]\n : b.sankeyWidth - a.sankeyWidth\n : a.source[first] - b.source[first]\n}\n\nexport const sigmoidLinks = {\n horizontal: linkHorizontal()\n .x((d) => d.x)\n .y((d) => d.y),\n vertical: linkVertical()\n .x((d) => d.x)\n .y((d) => d.y),\n radial: glyphD.lineArc\n}\n\nexport const customEdgeHashD = {\n curve: (d, projection = \"vertical\") => sigmoidLinks[projection](d),\n linearc: (d) => glyphD.lineArc(d),\n ribbon: (d) => glyphD.ribbon(d, d.width),\n arrowhead: (d) =>\n glyphD.arrowHead(d, d.target.nodeSize, d.width, d.width * 1.5),\n halfarrow: (d) =>\n glyphD.halfArrow(d, d.target.nodeSize, d.width, d.width * 1.5),\n nail: (d) => glyphD.nail(d, d.source.nodeSize),\n comet: (d) => glyphD.comet(d, d.target.nodeSize),\n taffy: (d) =>\n glyphD.taffy(\n d,\n d.source.nodeSize / 2,\n d.target.nodeSize / 2,\n (d.source.nodeSize + d.target.nodeSize) / 4\n )\n}\n\nexport const genericLineGenerator = (d) =>\n `M${d.source.x},${d.source.y}L${d.target.x},${d.target.y}`\n\nexport const matrixEdgeGenerator =\n (size, nodes) =>\n ({ d, i, styleFn, renderMode, key, className }) => {\n const gridSize = Math.min(...size) / nodes.length\n const style = styleFn(d, i)\n return (\n <g key={key}>\n <rect\n key={key}\n className={className}\n transform={`translate(${d.source.y},${d.target.y})`}\n {...style}\n style={style}\n aria-label={`Connection from ${d.source.id} to ${d.target.id}`}\n tabIndex={-1}\n {...gridProps(gridSize)}\n />\n </g>\n )\n }\n\nexport const arcEdgeGenerator = (size) => {\n const yAdjust = size[1] / size[0]\n function arcDiagramArc(d) {\n const draw = line().curve(curveBasis)\n const midX = (d.source.x + d.target.x) / 2\n const midY = d.source.x - d.target.x\n return draw([\n [d.source.x, 0],\n [midX, midY * yAdjust],\n [d.target.x, 0]\n ])\n }\n\n return ({ d, i, styleFn, renderMode, key, className }) => {\n const style = styleFn(d, i)\n return (\n <path\n key={key}\n className={className}\n transform={`translate(0,${size[1] / 2})`}\n d={arcDiagramArc(d)}\n {...style}\n style={style}\n aria-label={`Connection from ${d.source.id} to ${d.target.id}`}\n tabIndex={-1}\n />\n )\n }\n}\n\nconst ArrowedPath = (props) => {\n const { d, width, edgeLength, circular } = props\n const pathRef = useRef(null)\n\n useEffect(() => {\n if (pathRef?.current) {\n const circularMod = circular ? width : edgeLength\n const arrowHeadSize = Math.max(Math.min(width, circularMod) / 5, 2)\n let arrows = pathArrows()\n .arrowLength(arrowHeadSize * 2.5)\n .gapLength(100)\n .arrowHeadSize(arrowHeadSize)\n .path(d)\n\n select(pathRef.current).selectAll(\"*\").remove()\n\n select(pathRef.current).call(arrows)\n\n select(pathRef.current)\n .selectAll(\":not(.arrow-head)\")\n .style(\"fill\", \"none\")\n .style(\"stroke-width\", arrowHeadSize / 4)\n .style(\"stroke\", \"white\")\n\n select(pathRef.current).selectAll(\".arrow-head\").style(\"fill\", \"white\")\n }\n }, [d])\n\n return <g ref={pathRef} />\n}\n\nexport const sankeyArrowGenerator = (props) => {\n const {\n d,\n i,\n styleFn,\n renderMode,\n key,\n className,\n\n generatedPath\n } = props\n\n const { showArrows } = d\n\n let arrowPath = \"\"\n if (d.circular) {\n const { circularPathData } = d\n const {\n sourceX,\n sourceY,\n leftFullExtent,\n rightFullExtent,\n verticalFullExtent,\n targetX,\n targetY\n } = circularPathData\n\n arrowPath = `M${sourceX},${sourceY}L${leftFullExtent},${sourceY}L${leftFullExtent},${verticalFullExtent}L${rightFullExtent},${verticalFullExtent}L${rightFullExtent},${targetY}L${targetX},${targetY}`\n } else {\n let x0 = d.source.x1,\n x1 = d.target.x0,\n xi = interpolateNumber(x0, x1),\n x2 = xi(curvature),\n x3 = xi(1 - curvature),\n y0 = d.y0,\n y1 = d.y1\n\n arrowPath = `M${x0},${y0}C${x2},${y0} ${x3},${y1} ${x1},${y1}`\n }\n\n return (\n <React.Fragment key={key}>\n <path\n className={className}\n\n d={generatedPath}\n style={styleFn(d, i)}\n aria-label={`Connection from ${d.source.id} to ${d.target.id}`}\n tabIndex={-1}\n />\n {showArrows && (\n <ArrowedPath\n d={arrowPath}\n width={d.sankeyWidth}\n edgeLength={Math.abs(d.target.x - d.source.x)}\n circular={d.circular}\n />\n )}\n </React.Fragment>\n )\n}\n\nexport const chordEdgeGenerator =\n (size) =>\n ({ d, i, styleFn, renderMode, key, className }) =>\n (\n <path key={key}\n className={className}\n transform={`translate(${size[0] / 2},${size[1] / 2})`}\n\n d={d.d}\n style={styleFn(d, i)}\n aria-label={`Connection from ${d.source.id} to ${d.target.id}`}\n tabIndex={-1}\n />\n )\n\nexport const dagreEdgeGenerator = (direction) => {\n const dagreLineGenerator =\n direction === \"LR\" || direction === \"RL\"\n ? horizontalDagreLineGenerator\n : verticalDagreLineGenerator\n return ({ d, i, styleFn, renderMode, key, className }) => {\n if (d.ribbon || d.parallelEdges) {\n const ribbonGenerator = linearRibbon()\n\n ribbonGenerator.x((p) => p.x)\n ribbonGenerator.y((p) => p.y)\n ribbonGenerator.r(() => d.weight || 1)\n\n if (d.parallelEdges) {\n const sortedParallelEdges = d.parallelEdges.sort(\n (a, b) => b.weight - a.weight\n )\n return (\n <g key={`${key}`}>\n {ribbonGenerator({\n points: d.points,\n multiple: d.parallelEdges\n }).map((ribbonD, ribbonI) => (\n <path key={`${key}-${ribbonI}`}\n className={className}\n\n d={ribbonD}\n style={styleFn(sortedParallelEdges[ribbonI], i)}\n aria-label={`Connection from ${d.source.id} to ${d.target.id}`}\n tabIndex={-1}\n />\n ))}\n </g>\n )\n }\n\n return (\n <path key={key}\n className={className}\n\n d={ribbonGenerator(d.points)}\n style={styleFn(d, i)}\n aria-label={`Connection from ${d.source.id} to ${d.target.id}`}\n tabIndex={-1}\n />\n )\n }\n\n return (\n <path key={key}\n className={className}\n\n d={dagreLineGenerator(d.points)}\n style={styleFn(d, i)}\n aria-label={`Connection from ${d.source.id} to ${d.target.id}`}\n tabIndex={-1}\n />\n )\n }\n}\n","import { linearRibbon } from \"./SvgHelper\"\nimport { interpolateNumber } from \"d3-interpolate\"\n\nconst curvature = 0.5\n\nexport const ribbonLink = (d) => {\n const diff =\n d.direction === \"down\"\n ? Math.abs(d.target.y - d.source.y)\n : Math.abs(d.source.x - d.target.x)\n // const halfWidth = d.width / 2\n const testCoordinates =\n d.direction === \"down\"\n ? [\n {\n x: d.y0,\n y: d.source.y\n },\n {\n x: d.y0,\n y: d.source.y + diff / 3\n },\n {\n x: d.y1,\n y: d.target.y - diff / 3\n },\n {\n x: d.y1,\n y: d.target.y\n }\n ]\n : [\n {\n x: d.source.x0,\n y: d.y0\n },\n {\n x: d.source.x0 + diff / 3,\n y: d.y0\n },\n {\n x: d.target.x0 - diff / 3,\n y: d.y1\n },\n {\n x: d.target.x0,\n y: d.y1\n }\n ]\n\n const linkGenerator = linearRibbon()\n\n linkGenerator.x((d) => d.x)\n linkGenerator.y((d) => d.y)\n linkGenerator.r(() => d.sankeyWidth / 2)\n\n return linkGenerator(testCoordinates)\n}\n\nexport const areaLink = (d) => {\n let x0, x1, x2, x3, y0, y1, xi, y2, y3\n\n if (d.direction === \"down\") {\n x0 = d.y0 - d.sankeyWidth / 2\n x1 = d.y1 - d.sankeyWidth / 2\n x2 = d.y1 + d.sankeyWidth / 2\n x3 = d.y0 + d.sankeyWidth / 2\n y0 = d.source.y1\n y1 = d.target.y0\n xi = interpolateNumber(y0, y1)\n y2 = xi(curvature)\n y3 = xi(1 - curvature)\n\n return `M${x0},${y0}C${x0},${y2} ${x1},${y3} ${x1},${y1}L${x2},${y1}C${x2},${y3} ${x3},${y2} ${x3},${y0}Z`\n }\n ;(x0 = d.source.x1), // eslint-disable-line no-sequences\n (x1 = d.target.x0),\n (xi = interpolateNumber(x0, x1)),\n (x2 = xi(curvature)),\n (x3 = xi(1 - curvature)),\n (y0 = d.y0 - d.sankeyWidth / 2),\n (y1 = d.y1 - d.sankeyWidth / 2),\n (y2 = d.y1 + d.sankeyWidth / 2),\n (y3 = d.y0 + d.sankeyWidth / 2)\n\n return `M${x0},${y0}C${x2},${y0} ${x3},${y1} ${x1},${y1}L${x1},${y2}C${x3},${y2} ${x2},${y3} ${x0},${y3}Z`\n}\n\nexport function circularAreaLink(link) {\n const linkGenerator = linearRibbon()\n\n linkGenerator.x((d) => d.x)\n linkGenerator.y((d) => d.y)\n linkGenerator.r(() => link.sankeyWidth / 2)\n\n const xyForLink =\n link.direction === \"down\"\n ? [\n {\n x: link.circularPathData.sourceY,\n y: link.circularPathData.sourceX\n },\n {\n x: link.circularPathData.sourceY,\n y: link.circularPathData.leftFullExtent\n },\n {\n x: link.circularPathData.verticalFullExtent,\n y: link.circularPathData.leftFullExtent\n },\n {\n x: link.circularPathData.verticalFullExtent,\n y: link.circularPathData.rightFullExtent\n },\n {\n x: link.circularPathData.targetY,\n y: link.circularPathData.rightFullExtent\n },\n {\n x: link.circularPathData.targetY,\n y: link.circularPathData.targetX\n }\n ]\n : [\n {\n x: link.circularPathData.sourceX,\n y: link.circularPathData.sourceY\n },\n {\n x: link.circularPathData.leftFullExtent,\n y: link.circularPathData.sourceY\n },\n {\n x: link.circularPathData.leftFullExtent,\n y: link.circularPathData.verticalFullExtent\n },\n {\n x: link.circularPathData.rightFullExtent,\n y: link.circularPathData.verticalFullExtent\n },\n {\n x: link.circularPathData.rightFullExtent,\n y: link.circularPathData.targetY\n },\n {\n x: link.circularPathData.targetX,\n y: link.circularPathData.targetY\n }\n ]\n\n return linkGenerator(xyForLink)\n}\n","export function topologicalSort(nodesArray, edgesArray) {\n // adapted from https://simplapi.wordpress.com/2015/08/19/detect-graph-cycle-in-javascript/\n const nodes = []\n const nodeMap = new Map()\n for (const edge of edgesArray) {\n if (!edge.source.id || !edge.target.id) {\n return false\n }\n if (!nodeMap.has(edge.source.id)) {\n const newNode = { _id: edge.source.id, links: [] }\n nodeMap.set(edge.source.id, newNode)\n nodes.push(newNode)\n }\n if (!nodeMap.has(edge.target.id)) {\n const newNode = { _id: edge.target.id, links: [] }\n nodeMap.set(edge.target.id, newNode)\n nodes.push(newNode)\n }\n nodeMap.get(edge.source.id).links.push(edge.target.id)\n }\n\n // Test if a node got any icoming edge\n function hasIncomingEdge(list, node) {\n for (let i = 0, l = list.length; i < l; ++i) {\n if (list[i].links.indexOf(node._id) !== -1) {\n return true\n }\n }\n return false\n }\n\n // Kahn Algorithm\n const L = [],\n S = nodes.filter((node) => !hasIncomingEdge(nodes, node))\n\n let n = null\n\n while (S.length) {\n // Remove a node n from S\n n = S.pop()\n // Add n to tail of L\n L.push(n)\n\n let i = n.links.length\n while (i--) {\n // Getting the node associated to the current stored id in links\n const m = nodes[nodes.map((d) => d._id).indexOf(n.links[i])]\n\n // Remove edge e from the graph\n n.links.pop()\n\n if (!hasIncomingEdge(nodes, m)) {\n S.push(m)\n }\n }\n }\n\n // If any of them still got links, there is cycle somewhere\n const nodeWithEdge = nodes.find((node) => node.links.length !== 0)\n\n return nodeWithEdge ? null : L\n}\n\nconst hierarchyDecorator = (hierarchy, hashEntries, nodeIDAccessor, nodes) => {\n if (hierarchy.children) {\n for (const child of hierarchy.children) {\n const theseEntries = hashEntries.filter((entry) => entry[1] === child.id)\n\n for (const entry of theseEntries) {\n const idNode =\n nodes.find((node) => nodeIDAccessor(node) === entry[0]) || {}\n\n const newNode = {\n id: entry[0],\n ...idNode,\n children: [],\n childMap: {}\n }\n\n child.childMap.set(entry[0], newNode)\n child.children.push(newNode)\n }\n if (child.children.length > 0) {\n hierarchyDecorator(child, hashEntries, nodeIDAccessor, nodes)\n }\n }\n }\n}\n\nexport const softStack = (\n edges,\n nodes,\n sourceAccessor,\n targetAccessor,\n nodeIDAccessor\n) => {\n let hierarchy = { id: \"root-generated\", children: [], childMap: new Map() }\n const discoveredHierarchyMap = new Map()\n const targetToSourceMap = new Map()\n let hasLogicalRoot = true\n let isHierarchical = true\n\n for (let i = 0; i < edges.length; i++) {\n const edge = edges[i]\n\n const source = sourceAccessor(edge)\n const target = targetAccessor(edge)\n const sourceID =\n typeof source === \"object\" ? nodeIDAccessor(source) : source\n const targetID =\n typeof target === \"object\" ? nodeIDAccessor(target) : target\n\n targetToSourceMap.set(targetID, sourceID)\n\n if (!discoveredHierarchyMap.has(sourceID)) {\n discoveredHierarchyMap.set(sourceID, targetID)\n } else {\n isHierarchical = false\n break\n }\n }\n\n if (isHierarchical) {\n const hashEntries: Array<string[]> = []\n for (const entry of discoveredHierarchyMap) {\n hashEntries.push(entry)\n const target = entry[1]\n if (!discoveredHierarchyMap.has(target)) {\n discoveredHierarchyMap.set(target, \"root-generated\")\n const idNode =\n nodes.find((node) => nodeIDAccessor(node) === target) || {}\n\n const newNode = {\n id: target,\n ...idNode,\n children: [],\n childMap: new Map()\n }\n hierarchy.childMap.set(target, newNode)\n hierarchy.children.push(newNode)\n }\n }\n\n hierarchyDecorator(hierarchy, hashEntries, nodeIDAccessor, nodes)\n\n nodes.forEach((node) => {\n const nodeID = nodeIDAccessor(node)\n if (\n !discoveredHierarchyMap.has(nodeID) &&\n !targetToSourceMap.has(nodeID)\n ) {\n hierarchy.children.push({\n id: nodeID,\n ...node,\n children: [],\n childMap: new Map()\n })\n }\n })\n\n if (hierarchy.children.length === 1) {\n hierarchy = hierarchy.children[0]\n hasLogicalRoot = false\n }\n\n return { hierarchy, isHierarchical: true, hasLogicalRoot }\n }\n\n return { hierarchy: {}, isHierarchical: false, hasLogicalRoot: false }\n}\n","import * as React from \"react\"\n\nimport {\n sankeyEdgeSort,\n customEdgeHashD,\n genericLineGenerator\n} from \"./edgeGenerators\"\n\nimport { gridProps } from \"./nodeGenerators\"\n\n// Re-export everything from the split modules so existing imports continue to work\nexport {\n circleNodeGenerator,\n sankeyNodeGenerator,\n chordNodeGenerator,\n matrixNodeGenerator,\n radialRectNodeGenerator,\n radialLabelGenerator,\n hierarchicalRectNodeGenerator\n} from \"./nodeGenerators\"\n\nexport {\n matrixEdgeGenerator,\n arcEdgeGenerator,\n sankeyArrowGenerator,\n chordEdgeGenerator,\n dagreEdgeGenerator\n} from \"./edgeGenerators\"\n\nexport { ribbonLink, areaLink, circularAreaLink } from \"./sankeyLinks\"\n\nexport { topologicalSort, softStack } from \"./graphAlgorithms\"\n\nexport const drawNodes = ({\n data,\n renderKeyFn,\n customMark,\n styleFn,\n classFn,\n renderMode,\n canvasDrawing,\n canvasRenderFn,\n\n networkSettings\n}) => {\n const markGenerator = customMark\n const renderedData = []\n\n if (networkSettings.type === \"matrix\" && canvasRenderFn) {\n return\n }\n\n if (networkSettings) {\n let i = 0\n for (const d of data) {\n const generatedMark = markGenerator({\n d,\n i,\n renderKeyFn,\n styleFn,\n classFn,\n renderMode,\n key: renderKeyFn ? renderKeyFn(d, i) : d.id || `node-${i}`,\n className: `node ${classFn(d, i)}`,\n transform: `translate(${d.x},${d.y})`\n })\n\n if (canvasRenderFn && canvasRenderFn(d, i) === true) {\n const { transform = \"translate(0,0)\" } = generatedMark.props\n const [x, y] = transform\n .replace(\"translate(\", \"\")\n .replace(\")\", \"\")\n .split(\",\")\n const canvasNode = {\n baseClass: \"frame-piece\",\n tx: x,\n ty: y,\n d,\n i,\n markProps: {\n markType: typeof generatedMark.type === \"string\" ? generatedMark.type : generatedMark.props.markType,\n ...generatedMark.props\n },\n styleFn,\n renderFn: renderMode,\n classFn\n }\n canvasDrawing.push(canvasNode)\n } else {\n // Use the already generated mark\n renderedData.push(generatedMark)\n }\n i++\n }\n }\n return renderedData\n}\n\nexport const drawEdges = (settings) => {\n const {\n data: baseData,\n renderKeyFn,\n customMark,\n styleFn,\n classFn,\n renderMode,\n canvasRenderFn,\n canvasDrawing,\n type,\n\n networkSettings,\n projection,\n numberOfNodes,\n size\n } = settings\n\n const {\n type: networkType,\n direction,\n edgeSort = sankeyEdgeSort\n } = networkSettings\n const data =\n networkType === \"sankey\"\n ? baseData.sort((a, b) => edgeSort(a, b, direction))\n : baseData\n\n let dGenerator = genericLineGenerator\n const renderedData = []\n if (canvasRenderFn && networkSettings.type === \"matrix\") {\n let i = 0\n const gridSize = Math.floor(Math.min(...size) / numberOfNodes)\n for (const d of data) {\n const canvasEdge = {\n baseClass: \"frame-piece\",\n tx: d.source.y,\n ty: d.target.y,\n d,\n i,\n markProps: { markType: \"rect\", ...gridProps(gridSize) },\n styleFn,\n renderFn: renderMode,\n classFn\n }\n canvasDrawing.push(canvasEdge)\n i++\n }\n } else if (customMark) {\n // CUSTOM MARK IMPLEMENTATION\n if (type) {\n if (typeof type === \"function\") {\n dGenerator = type\n } else if (customEdgeHashD[type]) {\n dGenerator = (d) => customEdgeHashD[type](d, projection)\n }\n }\n let i = 0\n for (const d of data) {\n const renderedCustomMark = customMark({\n d,\n i,\n renderKeyFn,\n styleFn,\n classFn,\n renderMode,\n key: renderKeyFn ? renderKeyFn(d, i) : `edge-${i}`,\n className: `${classFn(d, i)} edge`,\n transform: `translate(${d.x},${d.y})`,\n\n generatedPath: dGenerator(d)\n })\n if (\n renderedCustomMark &&\n renderedCustomMark.props &&\n (renderedCustomMark.props.markType !== \"path\" ||\n renderedCustomMark.props.d)\n ) {\n renderedData.push(renderedCustomMark)\n }\n i++\n }\n } else {\n if (type) {\n if (typeof type === \"function\") {\n dGenerator = type\n } else if (customEdgeHashD[type]) {\n dGenerator = (d) => customEdgeHashD[type](d, projection)\n }\n }\n let i = 0\n for (const d of data) {\n const renderedD = dGenerator(d)\n\n if (renderedD && canvasRenderFn && canvasRenderFn(d, i) === true) {\n const canvasEdge = {\n baseClass: \"frame-piece\",\n tx: d.x,\n ty: d.y,\n d,\n i,\n markProps: { markType: \"path\", d: renderedD },\n styleFn,\n renderFn: renderMode,\n classFn\n }\n canvasDrawing.push(canvasEdge)\n } else if (renderedD) {\n renderedData.push(\n <path key={renderKeyFn ? renderKeyFn(d, i) : `edge-${i}`}\n\n className={`${classFn(d)} edge`}\n d={renderedD}\n style={styleFn(d, i)}\n tabIndex={-1}\n role=\"img\"\n aria-label={`connection from ${d.source.id} to ${d.target.id}`}\n />\n )\n }\n }\n }\n\n return renderedData\n}\n","export const emptyArray = []\n\nexport const baseNodeProps = {\n id: undefined,\n degree: 0,\n inDegree: 0,\n outDegree: 0,\n x: 0,\n y: 0,\n x1: 0,\n x0: 0,\n y1: 0,\n y0: 0,\n height: 0,\n width: 0,\n radius: 0,\n r: 0,\n direction: undefined,\n textHeight: 0,\n textWidth: 0,\n fontSize: 0,\n scale: 1,\n nodeSize: 0,\n component: -99,\n shapeNode: false\n}\n\nexport const baseNetworkSettings = {\n hierarchicalNetwork: false\n}\n\nexport const baseGraphSettings = {\n nodeHash: new Map(),\n edgeHash: new Map(),\n nodes: [],\n edges: [],\n hierarchicalNetwork: false,\n type: \"force\"\n}\n","import {\n tree,\n pack,\n cluster,\n treemap,\n partition\n} from \"d3-hierarchy\"\nimport { NetworkLayoutHandler, NetworkLayoutMap } from \"./types\"\n\nexport const hierarchicalTypeHash = {\n dendrogram: tree,\n tree,\n circlepack: pack,\n cluster,\n treemap,\n partition\n}\n\n// Hierarchy layouts don't use the standard layout handler pattern because\n// they are applied during data loading (via hierarchicalTypeHash), not during\n// the layout dispatch phase. These entries exist so the layout map recognizes\n// these types as valid and falls through to the default node positioning.\nconst hierarchyFallthrough: NetworkLayoutHandler = ({\n projectedNodes,\n projectedEdges\n}) => {\n projectedNodes.forEach((node) => {\n node.x = node.x === undefined ? (node.x0 + node.x1) / 2 : node.x\n node.y = node.y === undefined ? node.y0 : node.y\n })\n\n return { projectedNodes, projectedEdges }\n}\n\nexport const hierarchyLayouts: NetworkLayoutMap = {\n tree: hierarchyFallthrough,\n dendrogram: hierarchyFallthrough,\n cluster: hierarchyFallthrough,\n treemap: hierarchyFallthrough,\n circlepack: hierarchyFallthrough,\n partition: hierarchyFallthrough\n}\n","import {\n sankeyCircular,\n sankeyLeft,\n sankeyRight,\n sankeyCenter,\n sankeyJustify\n} from \"d3-sankey-circular\"\nimport { NetworkLayoutHandler } from \"./types\"\n\nexport const sankeyOrientHash = {\n left: sankeyLeft,\n right: sankeyRight,\n center: sankeyCenter,\n justify: sankeyJustify\n}\n\nexport const sankeyLayout: NetworkLayoutHandler = ({\n projectedNodes,\n projectedEdges,\n networkSettings,\n adjustedSize,\n nodeIDAccessor\n}) => {\n const {\n orient = \"center\",\n iterations = 100,\n nodePadding,\n nodePaddingRatio = nodePadding ? undefined : 0.5,\n nodeWidth = networkSettings.type === \"flowchart\" ? 2 : 24,\n customSankey,\n direction = \"right\",\n showArrows = false\n } = networkSettings\n\n const sankeyOrient = sankeyOrientHash[orient]\n\n const actualSankey = customSankey || sankeyCircular\n\n let frameExtent = [[0, 0], adjustedSize]\n\n if (\n networkSettings.direction === \"up\" ||\n networkSettings.direction === \"down\"\n ) {\n frameExtent = [\n [0, 0],\n [adjustedSize[1], adjustedSize[0]]\n ]\n }\n\n // CREATE FAKE EDGES TO GET UP TO PASSED VALUE\n let resultEdges = projectedEdges\n const generateEphemeralEdges = projectedNodes.some(\n (n) => !n.createdByFrame && n.value > 0\n )\n if (generateEphemeralEdges) {\n const edgeValueMap = new Map()\n for (const edge of projectedEdges) {\n if (!edgeValueMap.has(edge.source.id)) {\n edgeValueMap.set(edge.source.id, {\n source: 0,\n target: 0\n })\n }\n if (!edgeValueMap.has(edge.target.id)) {\n edgeValueMap.set(edge.target.id, {\n source: 0,\n target: 0\n })\n }\n edgeValueMap.get(edge.source.id).source += edge.value\n edgeValueMap.get(edge.target.id).target += edge.value\n }\n for (const node of projectedNodes) {\n if (!node.createdByFrame) {\n let maxEdgeValue = 0\n if (edgeValueMap.has(node.id)) {\n maxEdgeValue = Math.max(\n edgeValueMap.get(node.id).source,\n edgeValueMap.get(node.id).target\n )\n }\n if (node.value > maxEdgeValue) {\n projectedEdges.push({\n source: node,\n target: node,\n value: node.value - maxEdgeValue,\n ephemeral: true\n })\n }\n }\n }\n }\n\n const frameSankey = actualSankey()\n .extent(frameExtent)\n .links(projectedEdges)\n .nodes(projectedNodes)\n .nodeAlign(sankeyOrient)\n .nodeId(nodeIDAccessor)\n .nodeWidth(nodeWidth)\n .iterations(iterations)\n\n if (generateEphemeralEdges) {\n resultEdges = projectedEdges.filter((e) => !e.ephemeral)\n }\n\n if (frameSankey.nodePaddingRatio && nodePaddingRatio) {\n frameSankey.nodePaddingRatio(nodePaddingRatio)\n } else if (nodePadding) {\n frameSankey.nodePadding(nodePadding)\n }\n\n frameSankey()\n\n projectedNodes.forEach((d) => {\n d.height = d.y1 - d.y0\n d.width = d.x1 - d.x0\n d.x = d.x0 + d.width / 2\n d.y = d.y0 + d.height / 2\n d.radius = d.height / 2\n d.direction = direction\n })\n\n const finalEdges = generateEphemeralEdges ? resultEdges : projectedEdges\n finalEdges.forEach((d) => {\n d.showArrows = showArrows\n d.sankeyWidth = d.width\n d.direction = direction\n d.width = undefined\n })\n\n return { projectedNodes, projectedEdges: finalEdges }\n}\n","import {\n hierarchicalRectNodeGenerator,\n radialRectNodeGenerator,\n chordNodeGenerator,\n chordEdgeGenerator,\n matrixNodeGenerator,\n matrixEdgeGenerator,\n arcEdgeGenerator,\n sankeyNodeGenerator,\n circleNodeGenerator,\n dagreEdgeGenerator,\n sankeyArrowGenerator\n} from \"../svg/networkDrawing\"\n\n// Re-export from new locations for backwards compatibility\nexport { hierarchicalTypeHash } from \"./layouts/hierarchyLayout\"\nexport { sankeyOrientHash } from \"./layouts/sankeyLayout\"\n\nexport function determineNodeIcon(baseCustomNodeIcon, networkSettings, size, nodes) {\n if (baseCustomNodeIcon) return baseCustomNodeIcon\n\n const center = [size[0] / 2, size[1] / 2]\n\n switch (networkSettings.type) {\n case \"sankey\":\n return sankeyNodeGenerator\n case \"partition\":\n return networkSettings.projection === \"radial\"\n ? radialRectNodeGenerator(size, center, networkSettings)\n : hierarchicalRectNodeGenerator\n case \"treemap\":\n return networkSettings.projection === \"radial\"\n ? radialRectNodeGenerator(size, center, networkSettings)\n : hierarchicalRectNodeGenerator\n case \"circlepack\":\n return circleNodeGenerator\n case \"chord\":\n return chordNodeGenerator(size)\n case \"dagre\":\n return hierarchicalRectNodeGenerator\n case \"matrix\":\n return matrixNodeGenerator(size, nodes)\n }\n\n return circleNodeGenerator\n}\n\nexport function determineEdgeIcon({\n baseCustomEdgeIcon,\n networkSettings,\n size,\n graph,\n nodes\n}) {\n if (baseCustomEdgeIcon) return baseCustomEdgeIcon\n switch (networkSettings.type) {\n case \"partition\":\n return () => null\n case \"treemap\":\n return () => null\n case \"circlepack\":\n return () => null\n case \"chord\":\n return chordEdgeGenerator(size)\n case \"matrix\":\n return matrixEdgeGenerator(size, nodes)\n case \"arc\":\n return arcEdgeGenerator(size)\n case \"dagre\":\n if (graph) return dagreEdgeGenerator(graph.graph().rankdir)\n case \"sankey\":\n return sankeyArrowGenerator\n }\n return undefined\n}\n\nexport const basicMiddle = (d) => ({\n edge: d,\n x: (d.source.x + d.target.x) / 2,\n y: (d.source.y + d.target.y) / 2\n})\n\nexport const edgePointHash = {\n sankey: (d) => ({\n edge: d,\n x: (d.source.x1 + d.target.x0) / 2,\n y: d.circularPathData\n ? d.circularPathData.verticalFullExtent\n : ((d.y0 + d.y1) / 2 + (d.y0 + d.y1) / 2) / 2\n }),\n force: basicMiddle,\n tree: basicMiddle,\n cluster: basicMiddle,\n matrix: (d) => {\n return {\n edge: d,\n x: d.source.y,\n y: d.target.y\n }\n }\n}\n\nexport const hierarchicalProjectable = {\n partition: true,\n cluster: true,\n tree: true,\n dendrogram: true\n}\n\nexport const radialProjectable = {\n partition: true,\n cluster: true,\n tree: true,\n dendrogram: true\n}\n","import { hierarchy } from \"d3-hierarchy\"\n\nexport function recursiveIDAccessor(idAccessor, node, accessorString) {\n if (node.parent) {\n accessorString = `${accessorString}-${recursiveIDAccessor(\n idAccessor,\n { ...node.parent, ...node.parent.data },\n accessorString\n )}`\n }\n return `${accessorString}-${idAccessor({ ...node, ...node.data })}`\n}\n\nexport const defaultHierarchicalIDAccessor = (d) => d.id || d.descendantIndex\n\nexport const nodesEdgesFromHierarchy = (\n baseRootNode,\n idAccessor = defaultHierarchicalIDAccessor\n) => {\n const edges = []\n const nodes = []\n\n const rootNode = baseRootNode.descendants\n ? baseRootNode\n : hierarchy(baseRootNode)\n\n const descendants = rootNode.descendants()\n\n let i = 0\n\n for (const node of descendants) {\n node.descendantIndex = i\n i++\n }\n\n for (const node of descendants) {\n const generatedID = `${\n idAccessor({\n ...node,\n ...node.data\n }) ?? defaultHierarchicalIDAccessor(node)\n }-${\n node.parent\n ? recursiveIDAccessor(\n idAccessor,\n { ...node.parent, ...node.parent.data },\n \"\"\n ) ?? node.parent.name\n : \"root\"\n }`\n\n const dataD = Object.assign(node, node.data || {}, {\n hierarchicalID: generatedID\n })\n nodes.push(dataD)\n if (node.parent !== null) {\n const dataParent = Object.assign(node.parent, node.parent.data || {})\n edges.push({\n source: dataParent,\n target: dataD,\n depth: node.depth,\n weight: 1,\n value: 1,\n _NWFEdgeKey: generatedID\n })\n }\n }\n\n return { edges, nodes }\n}\n\nexport function breadthFirstCompontents(baseNodes, hash) {\n const componentMap = {\n \"0\": { componentNodes: [], componentEdges: [] }\n }\n const components = [componentMap[\"0\"]]\n\n let componentID = 0\n\n traverseNodesBF(baseNodes, true)\n\n function traverseNodesBF(nodes, top) {\n for (const node of nodes) {\n const hashNode = hash.get(node)\n if (!hashNode) {\n componentMap[\"0\"].componentNodes.push(node)\n } else if (hashNode.component === -99) {\n if (top === true) {\n componentID++\n componentMap[componentID] = {\n componentNodes: [],\n componentEdges: []\n }\n components.push(componentMap[componentID])\n }\n\n hashNode.component = componentID\n componentMap[componentID].componentNodes.push(node)\n componentMap[componentID].componentEdges.push(...hashNode.edges)\n const traversibleNodes = [...hashNode.connectedNodes]\n traverseNodesBF(traversibleNodes, hash)\n }\n }\n }\n\n return components.sort(\n (a, b) => b.componentNodes.length - a.componentNodes.length\n )\n}\n\nexport const matrixify = ({ edgeHash, nodes, edgeWidthAccessor, nodeIDAccessor }) => {\n const matrix = []\n for (const nodeSource of nodes) {\n const nodeSourceID = nodeIDAccessor(nodeSource)\n const sourceRow = []\n matrix.push(sourceRow)\n for (const nodeTarget of nodes) {\n const nodeTargetID = nodeIDAccessor(nodeTarget)\n const theEdge = edgeHash.get(`${nodeSourceID}|${nodeTargetID}`)\n if (theEdge) {\n sourceRow.push(edgeWidthAccessor(theEdge))\n } else {\n sourceRow.push(0)\n }\n }\n }\n return matrix\n}\n","import * as React from \"react\"\n\nimport { scaleLinear } from \"d3-scale\"\n\nimport { min, max } from \"d3-array\"\n\nimport {\n TitleType\n} from \"../svg/frameFunctions\"\n\nimport { pointOnArcAtAngle } from \"../svg/pieceDrawing\"\n\nimport { NetworkPipelineCache } from \"../data/networkPipelineCache\"\n\nimport {\n drawNodes,\n drawEdges,\n softStack,\n areaLink,\n ribbonLink,\n circularAreaLink,\n radialLabelGenerator\n} from \"../svg/networkDrawing\"\n\nimport { hierarchy } from \"d3-hierarchy\"\n\nimport {\n NetworkFrameProps,\n NetworkFrameState,\n NetworkSettingsType,\n NodeType\n} from \"../types/networkTypes\"\n\nimport { NetworkLayoutMap } from \"./layouts/types\"\n\nimport { baseNodeProps, baseNetworkSettings, baseGraphSettings, emptyArray } from \"./networkDefaults\"\nimport { determineNodeIcon, determineEdgeIcon, basicMiddle, edgePointHash, hierarchicalProjectable, radialProjectable } from \"./networkLayoutHelpers\"\nimport { hierarchicalTypeHash } from \"./layouts/hierarchyLayout\"\nimport { recursiveIDAccessor, defaultHierarchicalIDAccessor, nodesEdgesFromHierarchy } from \"./hierarchyUtils\"\n\nexport { nodesEdgesFromHierarchy } from \"./hierarchyUtils\"\n\nexport const calculateNetworkFrame = (\n currentProps: NetworkFrameProps,\n prevState: NetworkFrameState,\n cache: NetworkPipelineCache,\n layoutMap?: NetworkLayoutMap\n) => {\n const {\n graph,\n nodes = Array.isArray(graph) || typeof graph === \"function\"\n ? emptyArray\n : (graph && graph.nodes) || emptyArray,\n edges = typeof graph === \"function\"\n ? emptyArray\n : Array.isArray(graph)\n ? graph\n : (graph && graph.edges) || emptyArray,\n networkType,\n size,\n nodeStyle,\n nodeClass,\n canvasNodes,\n edgeStyle,\n edgeClass,\n canvasEdges,\n nodeRenderMode,\n edgeRenderMode,\n nodeLabels,\n title: baseTitle,\n margin: baseMargin,\n hoverAnnotation,\n customNodeIcon: baseCustomNodeIcon,\n customEdgeIcon: baseCustomEdgeIcon,\n filterRenderedNodes\n } = currentProps\n\n let { edgeType } = currentProps\n\n let networkSettings: NetworkSettingsType\n\n const nodeHierarchicalIDFill = {}\n let networkSettingsKeys = [\"type\"]\n\n if (typeof networkType === \"string\") {\n networkSettings = {\n type: networkType,\n ...baseNetworkSettings,\n graphSettings: baseGraphSettings\n }\n } else {\n if (networkType) networkSettingsKeys = Object.keys(networkType)\n\n networkSettings = {\n type: \"force\",\n ...baseNetworkSettings,\n ...networkType,\n graphSettings: baseGraphSettings\n }\n }\n\n if (\n networkSettings.projection === \"vertical\" &&\n networkSettings.type === \"sankey\"\n ) {\n networkSettings.direction = \"down\"\n }\n\n networkSettingsKeys.push(\"height\", \"width\")\n\n const title =\n typeof baseTitle === \"object\" &&\n !React.isValidElement(baseTitle) &&\n baseTitle !== null\n ? (baseTitle as TitleType)\n : ({ title: baseTitle, orient: \"top\" } as TitleType)\n\n const { margin, adjustedPosition, adjustedSize } = cache.marginCalc(baseMargin, title, size)\n\n networkSettings.graphSettings.nodes = nodes\n networkSettings.graphSettings.edges = edges\n networkSettings.graphSettings.filterRenderedNodes = filterRenderedNodes\n\n let { edgeHash, nodeHash } = networkSettings.graphSettings\n\n const createPointLayer =\n networkSettings.type === \"treemap\" ||\n networkSettings.type === \"partition\" ||\n networkSettings.type === \"sankey\"\n\n const cachedAccessors = cache.accessorConversions(\n currentProps.nodeIDAccessor,\n currentProps.sourceAccessor,\n currentProps.targetAccessor,\n currentProps.nodeSizeAccessor,\n currentProps.edgeWidthAccessor\n )\n\n const nodeIDAccessor = cachedAccessors.nodeIDAccessor\n const sourceAccessor = cachedAccessors.sourceAccessor\n const targetAccessor = cachedAccessors.targetAccessor\n const nodeSizeAccessor: (args?: Record<string, any>) => number = cachedAccessors.nodeSizeAccessor as (args?: Record<string, any>) => number\n const edgeWidthAccessor = cachedAccessors.edgeWidthAccessor\n const { nodeStyleFn, nodeClassFn, nodeRenderModeFn, nodeCanvasRenderFn } = cache.nodeStyleFns(\n nodeStyle, nodeClass, nodeRenderMode, canvasNodes\n )\n\n let { projectedNodes, projectedEdges } = prevState\n\n const isHierarchical =\n typeof networkSettings.type === \"string\" &&\n hierarchicalTypeHash[networkSettings.type]\n\n const changedData =\n !prevState.projectedNodes ||\n !prevState.projectedEdges ||\n prevState.graphSettings.nodes !== nodes ||\n prevState.graphSettings.edges !== edges ||\n isHierarchical ||\n prevState.graphSettings.filterRenderedNodes !== filterRenderedNodes\n\n if (networkSettings.type === \"dagre\") {\n const dagreGraph = graph as {\n nodes: Function\n edges: Function\n node: Function\n edge: Function\n }\n const dagreNodeMap = new Map()\n projectedNodes = dagreGraph.nodes().map((n) => {\n const baseNode = dagreGraph.node(n)\n const dagreNode = {\n ...baseNode,\n x0: baseNode.x - baseNode.width / 2,\n x1: baseNode.x + baseNode.width / 2,\n y0: baseNode.y - baseNode.height / 2,\n y1: baseNode.y + baseNode.height / 2,\n id: n,\n shapeNode: true,\n sourceLinks: [],\n targetLinks: []\n }\n dagreNodeMap.set(n, dagreNode)\n return dagreNode\n })\n projectedEdges = dagreGraph.edges().map((e) => {\n const dagreEdge = dagreGraph.edge(e)\n const baseEdge = {\n ...dagreEdge,\n points: dagreEdge.points.map((d) => ({ ...d }))\n }\n baseEdge.source = projectedNodes.find((p) => p.id === e.v)\n baseEdge.target = projectedNodes.find((p) => p.id === e.w)\n baseEdge.points.unshift({ x: baseEdge.source.x, y: baseEdge.source.y })\n baseEdge.points.push({ x: baseEdge.target.x, y: baseEdge.target.y })\n dagreNodeMap.get(e.v).targetLinks.push(baseEdge)\n dagreNodeMap.get(e.w).sourceLinks.push(baseEdge)\n return baseEdge\n })\n } else if (changedData) {\n const previousNodes = projectedNodes\n edgeHash = new Map()\n nodeHash = new Map()\n networkSettings.graphSettings.edgeHash = edgeHash\n networkSettings.graphSettings.nodeHash = nodeHash\n projectedNodes = []\n projectedEdges = []\n const fixFunction =\n typeof networkSettings.fixExistingNodes === \"function\"\n ? networkSettings.fixExistingNodes\n : networkSettings.fixExistingNodes\n ? () => true\n : false\n nodes.forEach((node) => {\n const projectedNode = { ...node }\n const id = nodeIDAccessor(projectedNode)\n const existingNode = previousNodes.find((prevNode) => prevNode.id === id)\n\n const equivalentOldNode = existingNode || { x: undefined, y: undefined }\n nodeHash.set(id, projectedNode)\n nodeHash.set(node, projectedNode)\n projectedNodes.push(projectedNode)\n projectedNode.id = id\n projectedNode.inDegree = 0\n projectedNode.outDegree = 0\n projectedNode.degree = 0\n projectedNode.x = equivalentOldNode.x\n projectedNode.y = equivalentOldNode.y\n if (existingNode && fixFunction && fixFunction(existingNode)) {\n projectedNode.fx = existingNode.x\n projectedNode.fy = existingNode.y\n }\n })\n\n let operationalEdges = edges\n let baseEdges = edges\n\n if (isHierarchical && Array.isArray(edges)) {\n const createdHierarchicalData = softStack(\n edges,\n nodes,\n sourceAccessor,\n targetAccessor,\n nodeIDAccessor\n )\n\n if (createdHierarchicalData.isHierarchical) {\n baseEdges = createdHierarchicalData.hierarchy\n projectedNodes = []\n } else {\n console.error(\n \"You've sent an edge list that is not strictly hierarchical (there are nodes with multiple parents) defaulting to force-directed network layout\"\n )\n networkSettings.type = \"force\"\n }\n }\n\n if (!Array.isArray(baseEdges)) {\n networkSettings.hierarchicalNetwork = true\n const rootNode = hierarchy(baseEdges, networkSettings.hierarchyChildren)\n\n rootNode.sum(networkSettings.hierarchySum || ((d) => d.value))\n\n if (isHierarchical) {\n const layout = networkSettings.layout || isHierarchical\n const hierarchicalLayout = layout()\n const networkSettingKeys = Object.keys(networkSettings)\n if (\n (networkSettings.type === \"dendrogram\" ||\n networkSettings.type === \"tree\" ||\n networkSettings.type === \"cluster\") &&\n hierarchicalLayout.separation\n ) {\n hierarchicalLayout.separation(\n (a, b) =>\n (nodeSizeAccessor({ ...a, ...a.data }) || 1) +\n (networkSettings.nodePadding || 0) +\n (nodeSizeAccessor({ ...b, ...b.data }) || 1)\n )\n }\n\n networkSettingKeys.forEach((key) => {\n if (hierarchicalLayout[key]) {\n hierarchicalLayout[key](networkSettings[key])\n }\n })\n const layoutSize =\n networkSettings.projection === \"horizontal\" && isHierarchical\n ? [adjustedSize[1], adjustedSize[0]]\n : adjustedSize\n if (!networkSettings.nodeSize && hierarchicalLayout.size) {\n hierarchicalLayout.size(layoutSize)\n }\n\n hierarchicalLayout(rootNode)\n }\n\n operationalEdges = nodesEdgesFromHierarchy(rootNode, nodeIDAccessor).edges\n }\n\n baseNodeProps.shapeNode = createPointLayer\n if (Array.isArray(operationalEdges)) {\n operationalEdges.forEach((edge) => {\n const source = sourceAccessor(edge)\n const target = targetAccessor(edge)\n const sourceTarget = [source, target]\n sourceTarget.forEach((nodeDirection) => {\n if (!nodeHash.get(nodeDirection)) {\n const nodeObject: NodeType =\n typeof nodeDirection === \"object\"\n ? {\n ...baseNodeProps,\n ...nodeDirection\n }\n : {\n ...baseNodeProps,\n id: nodeDirection,\n createdByFrame: true\n }\n\n const nodeIDValue = nodeObject.id || nodeIDAccessor(nodeObject)\n nodeHierarchicalIDFill[nodeIDValue]\n ? (nodeHierarchicalIDFill[nodeIDValue] += 1)\n : (nodeHierarchicalIDFill[nodeIDValue] = 1)\n\n if (!nodeObject.id) {\n const nodeSuffix =\n nodeHierarchicalIDFill[nodeIDValue] === 1\n ? \"\"\n : `-${nodeHierarchicalIDFill[nodeIDValue]}`\n nodeObject.id = `${nodeIDValue}${nodeSuffix}`\n }\n\n nodeHash.set(nodeDirection, nodeObject)\n\n projectedNodes.push(nodeObject)\n }\n })\n\n const edgeWeight = edge.weight || 1\n\n const sourceNode = nodeHash.get(source)\n const targetNode = nodeHash.get(target)\n\n targetNode.inDegree += edgeWeight\n sourceNode.outDegree += edgeWeight\n targetNode.degree += edgeWeight\n sourceNode.degree += edgeWeight\n\n const edgeKey = `${nodeIDAccessor(sourceNode) || source}|${\n nodeIDAccessor(targetNode) || target\n }`\n const newEdge = Object.assign({}, edge, {\n source: nodeHash.get(source),\n target: nodeHash.get(target)\n })\n edgeHash.set(edgeKey, newEdge)\n projectedEdges.push(newEdge)\n if (networkSettings.type === \"matrix\") {\n projectedEdges.push({\n ...newEdge,\n source: newEdge.target,\n target: newEdge.source\n })\n }\n })\n }\n } else {\n edgeHash = new Map()\n networkSettings.graphSettings.edgeHash = edgeHash\n projectedEdges.forEach((edge) => {\n const edgeSource =\n typeof edge.source === \"string\"\n ? edge.source\n : nodeIDAccessor(edge.source)\n const edgeTarget =\n typeof edge.target === \"string\"\n ? edge.target\n : nodeIDAccessor(edge.target)\n\n const edgeKey = `${edgeSource}|${edgeTarget}`\n edgeHash.set(edgeKey, edge)\n })\n }\n\n const customNodeIcon = determineNodeIcon(\n baseCustomNodeIcon,\n networkSettings,\n adjustedSize,\n projectedNodes\n )\n\n const customEdgeIcon = determineEdgeIcon({\n baseCustomEdgeIcon,\n networkSettings,\n size: adjustedSize,\n nodes: projectedNodes,\n graph\n })\n\n networkSettings.width = size[0]\n networkSettings.height = size[1]\n\n let networkSettingsChanged = false\n\n networkSettingsKeys.forEach((key) => {\n if (\n key !== \"edgeType\" &&\n key !== \"graphSettings\" &&\n networkSettings[key] !== prevState.graphSettings[key]\n ) {\n networkSettingsChanged = true\n }\n })\n\n //Support bubble chart with circle pack and with force\n if (networkSettings.type === \"sankey\") {\n edgeType = (d) =>\n d.circular\n ? circularAreaLink(d)\n : edgeType === \"angled\"\n ? ribbonLink(d)\n : areaLink(d)\n } else if (isHierarchical) {\n projectedNodes.forEach((node) => {\n if (createPointLayer) {\n node.x = (node.x0 + node.x1) / 2\n node.y = (node.y0 + node.y1) / 2\n }\n if (\n typeof networkSettings.type === \"string\" &&\n hierarchicalProjectable[networkSettings.type] &&\n networkSettings.projection === \"horizontal\"\n ) {\n const ox = node.x\n node.x = node.y\n node.y = ox\n\n if (createPointLayer) {\n const ox0 = node.x0\n const ox1 = node.x1\n node.x0 = node.y0\n node.x1 = node.y1\n node.y0 = ox0\n node.y1 = ox1\n }\n } else if (\n typeof networkSettings.type === \"string\" &&\n radialProjectable[networkSettings.type] &&\n networkSettings.projection === \"radial\"\n ) {\n const radialPoint =\n node.depth === 0\n ? [adjustedSize[0] / 2, adjustedSize[1] / 2]\n : pointOnArcAtAngle(\n [adjustedSize[0] / 2, adjustedSize[1] / 2],\n node.x / adjustedSize[0],\n node.y / 2\n )\n node.x = radialPoint[0]\n node.y = radialPoint[1]\n } else {\n node.x = node.x\n node.y = node.y\n if (createPointLayer) {\n node.x0 = node.x0\n node.x1 = node.x1\n node.y0 = node.y0\n node.y1 = node.y1\n }\n }\n })\n }\n\n if (\n networkSettings.type !== \"static\" &&\n (changedData || networkSettingsChanged)\n ) {\n let components = [\n {\n componentNodes: projectedNodes,\n componentEdges: projectedEdges\n }\n ]\n\n const layoutType = typeof networkSettings.type === \"string\" ? networkSettings.type : \"custom\"\n const handler = layoutMap?.[layoutType]\n\n if (handler) {\n const result = handler({\n projectedNodes,\n projectedEdges,\n networkSettings,\n adjustedSize,\n edgeHash,\n nodeIDAccessor,\n edgeWidthAccessor,\n nodeSizeAccessor,\n size\n })\n projectedNodes = result.projectedNodes\n projectedEdges = result.projectedEdges\n if (result.components) components = result.components\n } else if (typeof networkSettings.type === \"function\") {\n networkSettings.type({\n nodes: projectedNodes,\n edges: projectedEdges\n })\n } else {\n projectedNodes.forEach((node) => {\n node.x = node.x === undefined ? (node.x0 + node.x1) / 2 : node.x\n node.y = node.y === undefined ? node.y0 : node.y\n })\n }\n\n prevState.graphSettings.nodes = currentProps.nodes\n prevState.graphSettings.edges = currentProps.edges\n }\n\n //filter out user-defined nodes\n projectedNodes = projectedNodes.filter(filterRenderedNodes)\n\n projectedEdges = projectedEdges.filter(\n (d) =>\n projectedNodes.indexOf(d.target) !== -1 &&\n projectedNodes.indexOf(d.source) !== -1\n )\n\n if (networkSettings.direction === \"flip\") {\n projectedNodes.forEach((node) => {\n // const ox = node.x\n // const oy = node.y\n node.x = adjustedSize[0] - node.x\n node.y = adjustedSize[1] - node.y\n })\n } else if (\n networkSettings.direction === \"up\" ||\n networkSettings.direction === \"down\"\n ) {\n const mod =\n networkSettings.direction === \"up\"\n ? (value) => adjustedSize[1] - value\n : (value) => value\n projectedNodes.forEach((node) => {\n const ox = node.x\n const ox0 = node.x0\n const ox1 = node.x1\n node.x = mod(node.y)\n node.x0 = mod(node.y0)\n node.x1 = mod(node.y1)\n node.y = ox\n node.y0 = ox0\n node.y1 = ox1\n })\n } else if (networkSettings.direction === \"left\") {\n projectedNodes.forEach((node) => {\n node.x = adjustedSize[0] - node.x\n node.x0 = adjustedSize[0] - node.x0\n node.x1 = adjustedSize[0] - node.x1\n })\n }\n\n if (typeof networkSettings.zoom === \"function\") {\n networkSettings.zoom(projectedNodes, projectedEdges, adjustedSize)\n } else if (\n networkSettings.zoom !== false &&\n networkSettings.type !== \"matrix\" &&\n networkSettings.type !== \"chord\" &&\n networkSettings.type !== \"sankey\" &&\n networkSettings.type !== \"partition\" &&\n networkSettings.type !== \"treemap\" &&\n networkSettings.type !== \"circlepack\" &&\n networkSettings.type !== \"dagre\"\n ) {\n // ZOOM SHOULD MAINTAIN ASPECT RATIO, ADD \"stretch\" to fill whole area\n const xMin = min(projectedNodes.map((p) => p.x - nodeSizeAccessor(p)))\n const xMax = max(projectedNodes.map((p) => p.x + nodeSizeAccessor(p)))\n const yMin = min(projectedNodes.map((p) => p.y - nodeSizeAccessor(p)))\n const yMax = max(projectedNodes.map((p) => p.y + nodeSizeAccessor(p)))\n\n const xSize = Math.abs(xMax - xMin)\n const ySize = Math.abs(yMax - yMin)\n\n const networkAspectRatio = xSize / ySize\n const baseAspectRatio = adjustedSize[0] / adjustedSize[1]\n\n let yMod, xMod\n\n if (networkSettings.zoom === \"stretch\") {\n yMod = 0\n xMod = 0\n } else if (xSize > ySize) {\n if (networkAspectRatio > baseAspectRatio) {\n xMod = 0\n yMod = (adjustedSize[1] - (adjustedSize[0] / xSize) * ySize) / 2\n } else {\n yMod = 0\n xMod = (adjustedSize[0] - (adjustedSize[1] / ySize) * xSize) / 2\n }\n } else {\n if (networkAspectRatio > baseAspectRatio) {\n xMod = 0\n yMod = (adjustedSize[1] - (adjustedSize[0] / xSize) * ySize) / 2\n } else {\n yMod = 0\n xMod = (adjustedSize[0] - (adjustedSize[1] / ySize) * xSize) / 2\n }\n }\n\n const projectionScaleX = scaleLinear()\n .domain([xMin, xMax])\n .range([xMod, adjustedSize[0] - xMod])\n const projectionScaleY = scaleLinear()\n .domain([yMin, yMax])\n .range([yMod, adjustedSize[1] - yMod])\n projectedNodes.forEach((node) => {\n node.x = projectionScaleX(node.x)\n node.y = projectionScaleY(node.y)\n })\n } else if (\n networkSettings.zoom !== false &&\n networkSettings.projection !== \"radial\" &&\n (networkSettings.type === \"partition\" ||\n networkSettings.type === \"treemap\" ||\n networkSettings.type === \"dagre\")\n ) {\n const xMin = min(projectedNodes.map((p) => p.x0))\n const xMax = max(projectedNodes.map((p) => p.x1))\n const yMin = min(projectedNodes.map((p) => p.y0))\n const yMax = max(projectedNodes.map((p) => p.y1))\n\n const projectionScaleX = scaleLinear()\n .domain([xMin, xMax])\n .range([margin.left, adjustedSize[0] - margin.right])\n const projectionScaleY = scaleLinear()\n .domain([yMin, yMax])\n .range([margin.top, adjustedSize[1] - margin.bottom])\n projectedNodes.forEach((node) => {\n node.x = projectionScaleX(node.x)\n node.y = projectionScaleY(node.y)\n node.x0 = projectionScaleX(node.x0)\n node.y0 = projectionScaleY(node.y0)\n node.x1 = projectionScaleX(node.x1)\n node.y1 = projectionScaleY(node.y1)\n node.zoomedHeight = node.y1 - node.y0\n node.zoomedWidth = node.x1 - node.x0\n })\n\n projectedEdges.forEach((edge) => {\n if (edge.points) {\n edge.points.forEach((p) => {\n p.x = projectionScaleX(p.x)\n p.y = projectionScaleY(p.y)\n })\n }\n })\n } else if (\n networkSettings.zoom !== false &&\n networkSettings.type === \"sankey\" &&\n projectedEdges.some((e) => e.circular)\n ) {\n const circularLinks = projectedEdges.filter((e) => e.circular)\n const xMinEdge =\n min(\n circularLinks,\n (e) => e.circularPathData.rightFullExtent - e.sankeyWidth / 2\n ) || Infinity\n const xMaxEdge =\n max(\n circularLinks,\n (e) => e.circularPathData.leftFullExtent + e.sankeyWidth / 2\n ) || -Infinity\n const yMinEdge =\n min(\n circularLinks,\n (e) => e.circularPathData.verticalFullExtent - e.sankeyWidth / 2\n ) || Infinity\n const yMaxEdge =\n max(\n circularLinks,\n (e) => e.circularPathData.verticalFullExtent + e.sankeyWidth / 2\n ) || -Infinity\n\n const yMinNode = min(projectedNodes, (node) => node.y0)\n const yMaxNode = max(projectedNodes, (node) => node.y1)\n const xMinNode = min(projectedNodes, (node) => node.x0)\n const xMaxNode = max(projectedNodes, (node) => node.x1)\n\n const sankeyMinX = Math.min(xMinEdge, xMinNode)\n const sankeyMaxX = Math.max(xMaxEdge, xMaxNode)\n const sankeyMinY = Math.min(yMinEdge, yMinNode)\n const sankeyMaxY = Math.max(yMaxEdge, yMaxNode)\n\n const projectionScaleX = scaleLinear()\n .domain([sankeyMinX, sankeyMaxX])\n .range([0, adjustedSize[0]])\n const projectionScaleY = scaleLinear()\n .domain([sankeyMinY, sankeyMaxY])\n .range([0, adjustedSize[1]])\n\n const widthFactor = adjustedSize[1] / (sankeyMaxY - sankeyMinY)\n\n for (const node of projectedNodes) {\n node.x = projectionScaleX(node.x)\n node.x0 = projectionScaleX(node.x0)\n node.x1 = projectionScaleX(node.x1)\n node.y = projectionScaleY(node.y)\n node.y0 = projectionScaleY(node.y0)\n node.y1 = projectionScaleY(node.y1)\n node.width = node.x1 - node.x0\n node.height = node.y1 - node.y0\n }\n\n for (const edge of projectedEdges) {\n if (edge.circular) {\n edge.circularPathData.sourceX = projectionScaleX(\n edge.circularPathData.sourceX\n )\n edge.circularPathData.sourceY = projectionScaleY(\n edge.circularPathData.sourceY\n )\n edge.circularPathData.leftFullExtent = projectionScaleX(\n edge.circularPathData.leftFullExtent\n )\n edge.circularPathData.verticalFullExtent = projectionScaleY(\n edge.circularPathData.verticalFullExtent\n )\n edge.circularPathData.rightFullExtent = projectionScaleX(\n edge.circularPathData.rightFullExtent\n )\n edge.circularPathData.targetX = projectionScaleX(\n edge.circularPathData.targetX\n )\n edge.circularPathData.targetY = projectionScaleY(\n edge.circularPathData.targetY\n )\n } else {\n edge.y0 = projectionScaleY(edge.y0)\n edge.y1 = projectionScaleY(edge.y1)\n }\n edge.sankeyWidth = edge.sankeyWidth * widthFactor\n }\n }\n\n projectedNodes.forEach((node) => {\n node.nodeSize = nodeSizeAccessor(node)\n })\n\n projectedEdges.forEach((edge) => {\n edge.width = edgeWidthAccessor(edge)\n })\n\n let legendSettings\n\n if (currentProps.legend) {\n legendSettings = currentProps.legend\n if (!legendSettings.legendGroups) {\n ///Something auto for networks\n const legendGroups = [\n {\n styleFn: currentProps.nodeStyle,\n type: \"fill\",\n items: []\n }\n ]\n legendSettings.legendGroups = legendGroups\n }\n }\n\n const cachedEdgeStyles = cache.edgeStyleFns(edgeStyle, edgeClass, edgeRenderMode, canvasEdges)\n\n const networkFrameRender = {\n edges: {\n accessibleTransform: (data, i) => {\n const edgeX = (data[i].source.x + data[i].target.x) / 2\n const edgeY = (data[i].source.y + data[i].target.y) / 2\n return { type: \"frame-hover\", ...data[i], x: edgeX, y: edgeY }\n },\n data: projectedEdges,\n styleFn: cachedEdgeStyles.edgeStyleFn,\n classFn: cachedEdgeStyles.edgeClassFn,\n renderMode: cachedEdgeStyles.edgeRenderModeFn,\n canvasRenderFn: cachedEdgeStyles.edgeCanvasRenderFn,\n renderKeyFn: currentProps.edgeRenderKey\n ? currentProps.edgeRenderKey\n : (d) => d._NWFEdgeKey || d.key || `${d.source.id}-${d.target.id}`,\n behavior: drawEdges,\n projection: networkSettings.projection,\n type: edgeType,\n customMark: customEdgeIcon,\n networkSettings,\n numberOfNodes: projectedNodes.length,\n size: adjustedSize\n },\n nodes: {\n accessibleTransform: (data, i) => ({\n type: \"frame-hover\",\n ...data[i],\n ...(data[i].data || {})\n }),\n data: projectedNodes,\n styleFn: nodeStyleFn,\n classFn: nodeClassFn,\n renderMode: nodeRenderModeFn,\n canvasRenderFn: nodeCanvasRenderFn,\n customMark: customNodeIcon,\n behavior: drawNodes,\n renderKeyFn: currentProps.nodeRenderKey,\n networkSettings\n }\n }\n\n const nodeLabelAnnotations = []\n if (currentProps.nodeLabels && projectedNodes) {\n projectedNodes.forEach((node, nodei) => {\n const feasibleLabel =\n nodeLabels && nodeLabels !== true && nodeLabels(node)\n\n if (nodeLabels === true || feasibleLabel) {\n const actualLabel =\n networkSettings.projection === \"radial\" && node.depth !== 0\n ? radialLabelGenerator(\n node,\n nodei,\n nodeLabels === true ? nodeIDAccessor : nodeLabels,\n adjustedSize\n )\n : nodeLabels === true\n ? nodeIDAccessor(node, nodei)\n : feasibleLabel\n\n let nodeLabel\n\n if (React.isValidElement(actualLabel)) {\n nodeLabel = {\n key: `node-label-${nodei}`,\n type: \"basic-node-label\",\n x: node.x,\n y: node.y,\n element: actualLabel\n }\n } else {\n nodeLabel = {\n key: `node-label-${nodei}`,\n className: \"node-label\",\n dx: 0,\n dy: 0,\n x: node.x,\n y: node.y,\n color: \"currentColor\",\n note: { label: actualLabel },\n connector: { end: \"none\" },\n type: \"label\",\n subject: { radius: nodeSizeAccessor(node) + 2 }\n }\n }\n\n nodeLabelAnnotations.push(nodeLabel)\n }\n })\n }\n\n let projectedXYPoints\n const overlay = []\n const areaBasedTypes = [\n \"circlepack\",\n \"treemap\",\n \"partition\",\n \"chord\"\n // \"matrix\"\n ]\n if (\n (hoverAnnotation &&\n areaBasedTypes.find((d) => d === networkSettings.type)) ||\n hoverAnnotation === \"area\"\n ) {\n if (hoverAnnotation !== \"edge\") {\n const renderedNodeOverlays = projectedNodes.map((d, i) => ({\n overlayData: d,\n ...customNodeIcon({\n d,\n i,\n transform: `translate(${d.x},${d.y})`,\n styleFn: () => ({ opacity: 0 })\n }).props\n }))\n\n overlay.push(...renderedNodeOverlays)\n }\n if (hoverAnnotation !== \"node\") {\n projectedEdges.forEach((d, i) => {\n const generatedIcon = customEdgeIcon({\n d,\n i,\n transform: `translate(${d.x},${d.y})`,\n styleFn: () => ({ opacity: 0 })\n })\n if (generatedIcon) {\n overlay.push({\n overlayData: {\n ...d,\n x: d.x === undefined ? (d.source.x + d.target.x) / 2 : d.x,\n y: d.y === undefined ? (d.source.y + d.target.y) / 2 : d.y,\n edge: true\n },\n ...generatedIcon.props\n })\n }\n })\n }\n } else if (\n hoverAnnotation === \"edge\" &&\n typeof networkSettings.type === \"string\" &&\n edgePointHash[networkSettings.type]\n ) {\n projectedXYPoints = projectedEdges.map(edgePointHash[networkSettings.type])\n } else if (\n Array.isArray(hoverAnnotation) ||\n hoverAnnotation === true ||\n hoverAnnotation === \"node\"\n ) {\n projectedXYPoints = projectedNodes\n if (changedData || networkSettingsChanged)\n projectedXYPoints = [...projectedNodes]\n } else if (\n hoverAnnotation === \"all\" &&\n typeof networkSettings.type === \"string\"\n ) {\n projectedXYPoints = [\n ...projectedEdges.map(edgePointHash[networkSettings.type]),\n ...projectedNodes\n ]\n }\n\n return {\n adjustedPosition: adjustedPosition,\n adjustedSize: adjustedSize,\n backgroundGraphics: currentProps.backgroundGraphics,\n foregroundGraphics: currentProps.foregroundGraphics,\n title,\n renderNumber: prevState.renderNumber + 1,\n projectedNodes,\n projectedEdges,\n projectedXYPoints,\n overlay,\n nodeIDAccessor,\n sourceAccessor,\n targetAccessor,\n nodeSizeAccessor,\n edgeWidthAccessor,\n margin,\n legendSettings,\n networkFrameRender,\n nodeLabelAnnotations,\n graphSettings: {\n ...networkSettings.graphSettings,\n ...networkSettings\n },\n props: currentProps\n }\n}\n","import memoize from \"memoize-one\"\nimport { calculateMargin, adjustedPositionSize } from \"../svg/frameFunctions\"\nimport { stringToFn } from \"./dataFunctions\"\n\nimport { genericFunction } from \"../generic_utilities/functions\"\n\nexport function createNetworkPipelineCache() {\n return {\n marginCalc: memoize((\n margin: any,\n title: any,\n size: number[]\n ) => {\n const calculatedMargin = calculateMargin({ margin, title, size })\n const { adjustedPosition, adjustedSize } = adjustedPositionSize({\n size,\n margin: calculatedMargin\n })\n return { margin: calculatedMargin, adjustedPosition, adjustedSize }\n }),\n\n accessorConversions: memoize((\n nodeIDAccessor: any,\n sourceAccessor: any,\n targetAccessor: any,\n nodeSizeAccessor: any,\n edgeWidthAccessor: any\n ) => ({\n nodeIDAccessor: stringToFn<string>(nodeIDAccessor, (d) => d ? d.id : undefined),\n sourceAccessor: stringToFn<string | Record<string, any>>(sourceAccessor, (d) => d.source),\n targetAccessor: stringToFn<string | Record<string, any>>(targetAccessor, (d) => d.target),\n nodeSizeAccessor: typeof nodeSizeAccessor === \"number\"\n ? genericFunction(nodeSizeAccessor)\n : stringToFn<number>(nodeSizeAccessor, genericFunction(5)),\n edgeWidthAccessor: stringToFn<number>(edgeWidthAccessor, (d) => d.weight || 1),\n })),\n\n nodeStyleFns: memoize((\n nodeStyle: any,\n nodeClass: any,\n nodeRenderMode: any,\n canvasNodes: any\n ) => ({\n nodeStyleFn: stringToFn<Record<string, any>>(nodeStyle, () => ({}), true),\n nodeClassFn: stringToFn<string>(nodeClass, () => \"\", true),\n nodeRenderModeFn: stringToFn<string | Record<string, any>>(nodeRenderMode, undefined, true),\n nodeCanvasRenderFn: canvasNodes ? stringToFn<boolean>(canvasNodes, undefined, true) : undefined,\n })),\n\n edgeStyleFns: memoize((\n edgeStyle: any,\n edgeClass: any,\n edgeRenderMode: any,\n canvasEdges: any\n ) => ({\n edgeStyleFn: stringToFn<Record<string, any>>(edgeStyle, () => ({}), true),\n edgeClassFn: stringToFn<string>(edgeClass, () => \"\", true),\n edgeRenderModeFn: stringToFn<string | Record<string, any>>(edgeRenderMode, undefined, true),\n edgeCanvasRenderFn: canvasEdges ? stringToFn<boolean>(canvasEdges, undefined, true) : undefined,\n })),\n }\n}\n\nexport type NetworkPipelineCache = ReturnType<typeof createNetworkPipelineCache>\n","import { chord, ribbon } from \"d3-chord\"\nimport { arc } from \"d3-shape\"\nimport pathBounds from \"svg-path-bounding-box\"\nimport { matrixify } from \"../hierarchyUtils\"\nimport { NetworkLayoutHandler } from \"./types\"\n\nexport const chordLayout: NetworkLayoutHandler = ({\n projectedNodes,\n projectedEdges,\n networkSettings,\n adjustedSize,\n edgeHash,\n nodeIDAccessor,\n edgeWidthAccessor\n}) => {\n const radius = adjustedSize[1] / 2\n\n const { groupWidth = 20, padAngle = 0.01, sortGroups } = networkSettings\n\n const arcGenerator = arc()\n .innerRadius(radius - groupWidth)\n .outerRadius(radius)\n\n const ribbonGenerator = ribbon().radius(radius - groupWidth)\n\n const matrixifiedNetwork = matrixify({\n edgeHash: edgeHash,\n nodes: projectedNodes,\n edgeWidthAccessor,\n nodeIDAccessor\n })\n\n const chordGenerator = chord().padAngle(padAngle)\n\n if (sortGroups) {\n chordGenerator.sortGroups(sortGroups)\n }\n\n const chords = chordGenerator(matrixifiedNetwork)\n const groups = chords.groups\n\n groups.forEach((group) => {\n const groupCentroid = arcGenerator.centroid(group)\n const groupD = arcGenerator(group)\n const groupNode = projectedNodes[group.index]\n groupNode.d = groupD\n groupNode.index = group.index\n groupNode.x = groupCentroid[0] + adjustedSize[0] / 2\n groupNode.y = groupCentroid[1] + adjustedSize[1] / 2\n })\n\n chords.forEach((generatedChord) => {\n const chordD = ribbonGenerator(generatedChord)\n\n const nodeSourceID = nodeIDAccessor(\n projectedNodes[generatedChord.source.index]\n )\n const nodeTargetID = nodeIDAccessor(\n projectedNodes[generatedChord.target.index]\n )\n // d3-chord always emits source.index < target.index, which may\n // not match the original edge direction. Try both key orders.\n const chordEdge =\n edgeHash.get(`${nodeSourceID}|${nodeTargetID}`) ||\n edgeHash.get(`${nodeTargetID}|${nodeSourceID}`)\n if (chordEdge) {\n chordEdge.d = chordD\n const chordBounds = pathBounds(chordD)\n chordEdge.x =\n adjustedSize[0] / 2 + (chordBounds.x1 + chordBounds.x2) / 2\n chordEdge.y =\n adjustedSize[1] / 2 + (chordBounds.y1 + chordBounds.y2) / 2\n }\n })\n\n return { projectedNodes, projectedEdges }\n}\n","import {\n forceSimulation,\n forceX,\n forceY,\n forceLink,\n forceManyBody\n} from \"d3-force\"\nimport { scaleLinear } from \"d3-scale\"\nimport { min, max } from \"d3-array\"\nimport { breadthFirstCompontents } from \"../hierarchyUtils\"\nimport { NetworkLayoutHandler } from \"./types\"\n\nexport const forceLayout: NetworkLayoutHandler = ({\n projectedNodes,\n projectedEdges,\n networkSettings,\n adjustedSize,\n nodeSizeAccessor\n}) => {\n // Adaptive iteration count for force layout: reduce iterations for large networks\n const nodeCount = projectedNodes.length\n const adaptiveIterations = Math.max(\n 50,\n Math.min(300, Math.floor(300 - (nodeCount - 30) * 2))\n )\n\n const {\n iterations = adaptiveIterations,\n edgeStrength = 0.1,\n distanceMax = Infinity,\n edgeDistance,\n forceManyBody: nsForceMB = (d) => -25 * nodeSizeAccessor(d)\n } = networkSettings\n\n // Set deterministic initial positions for nodes that don't have x/y yet.\n // d3-force uses Math.random() for unpositioned nodes which produces\n // different layouts on every render. A phyllotaxis spiral gives\n // evenly-distributed starting positions based on index alone.\n const cx = adjustedSize[0] / 2\n const cy = adjustedSize[1] / 2\n const goldenAngle = Math.PI * (3 - Math.sqrt(5))\n projectedNodes.forEach((node, i) => {\n if (node.x == null || node.y == null) {\n const r = Math.sqrt(i + 0.5) * 10\n const theta = i * goldenAngle\n node.x = cx + r * Math.cos(theta)\n node.y = cy + r * Math.sin(theta)\n }\n })\n\n const linkForce = forceLink().strength((d) =>\n Math.min(2.5, d.weight ? d.weight * edgeStrength : edgeStrength)\n )\n\n if (edgeDistance) {\n linkForce.distance(edgeDistance)\n }\n\n const simulation =\n networkSettings.simulation ||\n forceSimulation().force(\n \"charge\",\n forceManyBody().distanceMax(distanceMax).strength(nsForceMB)\n )\n\n simulation.nodes(projectedNodes)\n\n const forceMod = adjustedSize[1] / adjustedSize[0]\n\n if (!simulation.force(\"x\")) {\n simulation.force(\n \"x\",\n forceX(adjustedSize[0] / 2).strength(forceMod * 0.1)\n )\n }\n if (!simulation.force(\"y\")) {\n simulation.force(\"y\", forceY(adjustedSize[1] / 2).strength(0.1))\n }\n\n if (projectedEdges.length !== 0 && !simulation.force(\"link\")) {\n simulation.force(\"link\", linkForce)\n simulation.force(\"link\").links(projectedEdges)\n }\n\n //reset alpha if it's too cold\n if (simulation.alpha() < 0.1) {\n simulation.alpha(1)\n }\n\n simulation.stop()\n\n for (let i = 0; i < iterations; ++i) {\n simulation.tick()\n }\n\n return { projectedNodes, projectedEdges }\n}\n\nexport const motifsLayout: NetworkLayoutHandler = ({\n projectedNodes,\n projectedEdges,\n networkSettings,\n adjustedSize,\n nodeSizeAccessor,\n size\n}) => {\n const componentMap = new Map()\n projectedEdges.forEach((edge) => {\n ;[edge.source, edge.target].forEach((node) => {\n if (!componentMap.get(node)) {\n componentMap.set(node, {\n node,\n component: -99,\n connectedNodes: [],\n edges: []\n })\n }\n })\n\n componentMap.get(edge.source).connectedNodes.push(edge.target)\n componentMap.get(edge.target).connectedNodes.push(edge.source)\n componentMap.get(edge.source).edges.push(edge)\n })\n\n const components = breadthFirstCompontents(projectedNodes, componentMap)\n\n const largestComponent = Math.max(\n projectedNodes.length / 3,\n components[0].componentNodes.length\n )\n\n const layoutSize = size[0] > size[1] ? size[1] : size[0]\n const layoutDirection = size[0] > size[1] ? \"horizontal\" : \"vertical\"\n\n // Adaptive iteration count for motifs layout (same as force layout)\n const nodeCount = projectedNodes.length\n const adaptiveIterations = Math.max(\n 50,\n Math.min(300, Math.floor(300 - (nodeCount - 30) * 2))\n )\n\n const {\n iterations = adaptiveIterations,\n edgeStrength = 0.1,\n edgeDistance,\n padding = 0\n } = networkSettings\n\n let currentX = padding\n let currentY = padding\n\n components.forEach(({ componentNodes, componentEdges }) => {\n const linkForce = forceLink().strength((d) =>\n Math.min(2.5, d.weight ? d.weight * edgeStrength : edgeStrength)\n )\n\n if (edgeDistance) {\n linkForce.distance(edgeDistance)\n }\n\n const componentLayoutSize =\n Math.max(componentNodes.length / largestComponent, 0.2) * layoutSize\n\n const xBound = componentLayoutSize + currentX\n const yBound = componentLayoutSize + currentY\n\n if (layoutDirection === \"horizontal\") {\n if (yBound > size[1]) {\n currentX = componentLayoutSize + currentX + padding\n currentY = componentLayoutSize + padding\n } else {\n currentY = componentLayoutSize + currentY + padding\n }\n } else {\n if (xBound > size[0]) {\n currentY = componentLayoutSize + currentY + padding\n currentX = componentLayoutSize + padding\n } else {\n currentX = componentLayoutSize + currentX + padding\n }\n }\n\n const xCenter = currentX - componentLayoutSize / 2\n const yCenter = currentY - componentLayoutSize / 2\n\n const simulation = forceSimulation()\n .force(\n \"charge\",\n forceManyBody().strength(\n networkSettings.forceManyBody ||\n ((d) => -25 * nodeSizeAccessor(d))\n )\n )\n .force(\"link\", linkForce)\n\n simulation\n .force(\"x\", forceX(xCenter))\n .force(\"y\", forceY(yCenter))\n .nodes(componentNodes)\n\n simulation.force(\"link\").links(componentEdges)\n\n simulation.stop()\n\n for (let i = 0; i < iterations; ++i) simulation.tick()\n\n const maxX = max(componentNodes.map((d) => d.x))\n const maxY = max(componentNodes.map((d) => d.y))\n const minX = min(componentNodes.map((d) => d.x))\n const minY = min(componentNodes.map((d) => d.y))\n\n const resetX = scaleLinear()\n .domain([minX, maxX])\n .range([currentX - componentLayoutSize, currentX - 20])\n const resetY = scaleLinear()\n .domain([minY, maxY])\n .range([currentY - componentLayoutSize, currentY - 20])\n\n componentNodes.forEach((node) => {\n node.x = resetX(node.x)\n node.y = resetY(node.y)\n })\n })\n\n return { projectedNodes, projectedEdges, components }\n}\n","import { NetworkLayoutHandler } from \"./types\"\n\nexport const matrixLayout: NetworkLayoutHandler = ({\n projectedNodes,\n projectedEdges,\n networkSettings,\n adjustedSize\n}) => {\n let sortedNodes = projectedNodes\n if (networkSettings.sort) {\n sortedNodes = [...projectedNodes].sort(networkSettings.sort)\n }\n\n const gridSize = Math.min(...adjustedSize)\n const stepSize = gridSize / (sortedNodes.length + 1)\n\n sortedNodes.forEach((node, index) => {\n node.x = 0\n node.y = (index + 1) * stepSize\n })\n\n return { projectedNodes: sortedNodes, projectedEdges }\n}\n\nexport const arcLayout: NetworkLayoutHandler = ({\n projectedNodes,\n projectedEdges,\n networkSettings,\n adjustedSize\n}) => {\n let sortedNodes = projectedNodes\n if (networkSettings.sort) {\n sortedNodes = [...projectedNodes].sort(networkSettings.sort)\n }\n\n const stepSize = adjustedSize[0] / (sortedNodes.length + 2)\n\n sortedNodes.forEach((node, index) => {\n node.x = (index + 1) * stepSize\n node.y = adjustedSize[1] / 2\n })\n\n return { projectedNodes: sortedNodes, projectedEdges }\n}\n\nexport const simpleLayouts = {\n matrix: matrixLayout,\n arc: arcLayout\n}\n","import { NetworkLayoutMap } from \"./types\"\nimport { chordLayout } from \"./chordLayout\"\nimport { sankeyLayout } from \"./sankeyLayout\"\nimport { forceLayout, motifsLayout } from \"./forceLayout\"\nimport { hierarchyLayouts } from \"./hierarchyLayout\"\nimport { simpleLayouts } from \"./simpleLayouts\"\n\nexport { NetworkLayoutHandler, NetworkLayoutMap } from \"./types\"\nexport { chordLayout } from \"./chordLayout\"\nexport { sankeyLayout, sankeyOrientHash } from \"./sankeyLayout\"\nexport { forceLayout, motifsLayout } from \"./forceLayout\"\nexport { hierarchyLayouts, hierarchicalTypeHash } from \"./hierarchyLayout\"\nexport { simpleLayouts, matrixLayout, arcLayout } from \"./simpleLayouts\"\n\nexport const allNetworkLayouts: NetworkLayoutMap = {\n chord: chordLayout,\n sankey: sankeyLayout,\n flowchart: sankeyLayout,\n force: forceLayout,\n motifs: motifsLayout,\n ...hierarchyLayouts,\n ...simpleLayouts\n}\n","\"use client\"\nimport * as React from \"react\"\nimport { useCallback, useMemo, useRef } from \"react\"\n\nimport Frame from \"./Frame\"\n\nimport { stringToFn } from \"./data/dataFunctions\"\n\nimport {\n networkFrameChangeProps,\n networkFrameDataAffectingProps,\n networkFrameScaleAffectingProps,\n networkFrameStylingProps\n} from \"./constants/frame_props\"\n\nimport {\n htmlFrameHoverRule,\n svgNodeRule,\n svgReactAnnotationRule,\n svgEncloseRule,\n svgRectEncloseRule,\n svgHullEncloseRule,\n svgHighlightRule\n} from \"./annotationRules/networkframeRules\"\n\nimport { desaturationLayer } from \"./annotationRules/baseRules\"\n\nimport { genericFunction } from \"./generic_utilities/functions\"\n\nimport { AnnotationType } from \"./types/annotationTypes\"\n\nimport { scaleLinear } from \"d3-scale\"\n\nimport { calculateNetworkFrame } from \"./processing/network\"\nimport { createNetworkPipelineCache, NetworkPipelineCache } from \"./data/networkPipelineCache\"\nimport { allNetworkLayouts } from \"./processing/layouts\"\n\nconst blankArray = []\n\nconst matrixRenderOrder: ReadonlyArray<\"nodes\" | \"edges\"> = [\"nodes\", \"edges\"]\nconst generalRenderOrder: ReadonlyArray<\"nodes\" | \"edges\"> = [\"edges\", \"nodes\"]\n\nconst projectedCoordinateNames = { y: \"y\", x: \"x\" }\n\nconst xScale = scaleLinear()\nconst yScale = scaleLinear()\n\n\nimport {\n NodeType,\n NetworkFrameProps,\n NetworkFrameState\n} from \"./types/networkTypes\"\nimport { UpdatedAnnotationLayerProps } from \"./AnnotationLayer/AnnotationLayer\"\nimport { useDerivedStateFromProps } from \"./useDerivedStateFromProps\"\nimport { useLegacyUnmountCallback } from \"./useLegacyUnmountCallback\"\n\nconst defaultProps = {\n annotations: [],\n foregroundGraphics: [],\n size: [500, 500],\n className: \"\",\n name: \"networkframe\",\n networkType: { type: \"force\", iterations: 500 },\n filterRenderedNodes: (d: NodeType) => d.id !== \"root-generated\"\n}\n\nexport function NetworkFrameInner<TNode = Record<string, any>, TEdge = Record<string, any>>(\n allProps: NetworkFrameProps<TNode, TEdge>\n) {\n const props: NetworkFrameProps<TNode, TEdge> = { ...defaultProps, ...allProps }\n const pipelineCacheRef = useRef(createNetworkPipelineCache())\n const baseState = {\n dataVersion: undefined,\n nodeData: [],\n edgeData: [],\n adjustedPosition: [],\n adjustedSize: [],\n backgroundGraphics: null,\n foregroundGraphics: null,\n projectedNodes: [],\n projectedEdges: [],\n renderNumber: 0,\n nodeLabelAnnotations: [],\n graphSettings: {\n type: \"empty-start\",\n nodes: [],\n edges: [],\n nodeHash: new Map(),\n edgeHash: new Map(),\n hierarchicalNetwork: false\n },\n edgeWidthAccessor: stringToFn<number>(\"weight\"),\n legendSettings: undefined,\n margin: { top: 0, left: 0, right: 0, bottom: 0 },\n networkFrameRender: {},\n nodeIDAccessor: stringToFn<string>(\"id\"),\n nodeSizeAccessor: genericFunction(5),\n overlay: [],\n projectedXYPoints: [],\n sourceAccessor: stringToFn<string | Record<string, any>>(\"source\"),\n targetAccessor: stringToFn<string | Record<string, any>>(\"target\"),\n title: { title: undefined },\n props: props as NetworkFrameProps\n }\n\n const initialState = useMemo(\n () => ({\n ...baseState,\n ...calculateNetworkFrame(props as NetworkFrameProps, baseState, pipelineCacheRef.current, (props as NetworkFrameProps)._layoutMap || allNetworkLayouts)\n } as NetworkFrameState),\n []\n )\n\n const state = useDerivedStateFromProps(\n (nextProps, prevState) => deriveNetworkFrameState(nextProps as NetworkFrameProps, prevState, pipelineCacheRef.current, (nextProps as NetworkFrameProps)._layoutMap || allNetworkLayouts),\n props as NetworkFrameProps,\n initialState\n )\n\n useLegacyUnmountCallback(props, state)\n\n const propsRef = useRef(props)\n propsRef.current = props\n const stateRef = useRef(state)\n stateRef.current = state\n\n const defaultSVGRuleCb = useCallback(\n (args) => defaultNetworkSVGRule(propsRef.current as NetworkFrameProps, stateRef.current, args),\n []\n )\n const defaultHTMLRuleCb = useCallback(\n (args) => defaultNetworkHTMLRule(propsRef.current as NetworkFrameProps, stateRef.current, args),\n []\n )\n\n const {\n annotations = [],\n annotationSettings,\n className,\n customClickBehavior,\n customDoubleClickBehavior,\n customHoverBehavior,\n size,\n matte,\n hoverAnnotation,\n beforeElements,\n afterElements,\n interaction,\n disableContext,\n canvasPostProcess,\n canvasNodes,\n canvasEdges,\n additionalDefs,\n renderOrder = state.graphSettings && state.graphSettings.type === \"matrix\"\n ? matrixRenderOrder\n : generalRenderOrder,\n sketchyRenderingEngine,\n frameRenderOrder,\n disableCanvasInteraction,\n interactionSettings,\n disableProgressiveRendering,\n transition\n } = props\n const {\n backgroundGraphics,\n foregroundGraphics,\n projectedXYPoints,\n margin,\n legendSettings,\n adjustedPosition,\n adjustedSize,\n networkFrameRender,\n nodeLabelAnnotations,\n overlay,\n title\n } = state\n\n // Memoize overlay formatting\n const formattedOverlay = useMemo(\n () => (overlay && overlay.length > 0 ? overlay : undefined),\n [overlay]\n )\n\n // Memoize active hover annotation logic\n const activeHoverAnnotation = useMemo(() => {\n if (Array.isArray(hoverAnnotation)) {\n return hoverAnnotation\n } else if (\n (customClickBehavior ||\n customDoubleClickBehavior ||\n customHoverBehavior) &&\n (hoverAnnotation === undefined || hoverAnnotation === false)\n ) {\n return blankArray\n } else {\n return !!hoverAnnotation\n }\n }, [\n hoverAnnotation,\n customClickBehavior,\n customDoubleClickBehavior,\n customHoverBehavior\n ])\n\n // Memoize merged annotations to prevent unnecessary array creation\n const mergedAnnotations = useMemo(\n () => [...annotations, ...nodeLabelAnnotations],\n [annotations, nodeLabelAnnotations]\n )\n\n // Memoize canvas rendering flag\n const canvasRendering = useMemo(\n () => !!(canvasNodes || canvasEdges),\n [canvasNodes, canvasEdges]\n )\n\n return (\n <Frame\n name=\"networkframe\"\n renderPipeline={networkFrameRender}\n adjustedPosition={adjustedPosition}\n adjustedSize={adjustedSize}\n size={size}\n xScale={xScale}\n yScale={yScale}\n title={title}\n matte={matte}\n className={className}\n additionalDefs={additionalDefs}\n frameKey={\"none\"}\n projectedCoordinateNames={projectedCoordinateNames}\n defaultSVGRule={defaultSVGRuleCb}\n defaultHTMLRule={defaultHTMLRuleCb}\n hoverAnnotation={activeHoverAnnotation}\n annotations={mergedAnnotations}\n annotationSettings={annotationSettings}\n legendSettings={legendSettings}\n interaction={interaction}\n customClickBehavior={customClickBehavior}\n customHoverBehavior={customHoverBehavior}\n customDoubleClickBehavior={customDoubleClickBehavior}\n points={projectedXYPoints}\n margin={margin}\n overlay={formattedOverlay}\n backgroundGraphics={backgroundGraphics}\n foregroundGraphics={foregroundGraphics}\n beforeElements={beforeElements}\n afterElements={afterElements}\n disableContext={disableContext}\n canvasPostProcess={canvasPostProcess}\n canvasRendering={canvasRendering}\n renderOrder={renderOrder}\n disableCanvasInteraction={disableCanvasInteraction}\n sketchyRenderingEngine={sketchyRenderingEngine}\n frameRenderOrder={frameRenderOrder}\n interactionSettings={interactionSettings}\n disableProgressiveRendering={disableProgressiveRendering}\n transition={transition}\n />\n )\n}\n\nfunction deriveNetworkFrameState(\n nextProps: NetworkFrameProps,\n prevState: NetworkFrameState,\n cache?: NetworkPipelineCache,\n layoutMap?: Record<string, any>\n) {\n const { props } = prevState\n\n // Check which category of props changed\n const dataPropsChanged = !prevState.dataVersion && networkFrameDataAffectingProps.some(\n (prop) => props[prop] !== nextProps[prop]\n )\n\n const scalePropsChanged = !prevState.dataVersion && networkFrameScaleAffectingProps.some(\n (prop) => props[prop] !== nextProps[prop]\n )\n\n const sizeChanged = props.size[0] !== nextProps.size[0] || props.size[1] !== nextProps.size[1]\n\n // Force full recalc if dataVersion changed or no projected data exists\n if (\n (prevState.dataVersion && prevState.dataVersion !== nextProps.dataVersion) ||\n (!prevState.projectedNodes && !prevState.projectedEdges)\n ) {\n return {\n ...calculateNetworkFrame(nextProps, prevState, cache, layoutMap),\n props: nextProps\n }\n }\n\n // Full data recalculation needed if data-affecting props changed\n if (dataPropsChanged) {\n return {\n ...calculateNetworkFrame(nextProps, prevState, cache, layoutMap),\n props: nextProps\n }\n }\n\n // Scale/layout recalculation needed if size or scale-affecting props changed\n // Note: For network layouts (especially force), size changes might affect positioning\n if (sizeChanged || scalePropsChanged) {\n return {\n ...calculateNetworkFrame(nextProps, prevState, cache, layoutMap),\n props: nextProps\n }\n }\n\n // Only styling changed - no recalc needed, React will re-render with existing state\n return { props: nextProps }\n}\n\nconst annotationTypeStrings = new Set([\n \"label\", \"callout\", \"callout-circle\", \"callout-rect\",\n \"callout-custom\", \"xy-threshold\", \"bracket\"\n])\n\nfunction defaultNetworkSVGRule(\n props: NetworkFrameProps,\n state: NetworkFrameState,\n {\n d: baseD,\n i,\n annotationLayer\n }: {\n d: AnnotationType\n i: number\n annotationLayer: UpdatedAnnotationLayerProps\n }\n) {\n const {\n projectedNodes,\n projectedEdges,\n nodeIDAccessor,\n nodeSizeAccessor,\n networkFrameRender,\n adjustedSize,\n adjustedPosition\n } = state\n //TODO PASS FRAME STYLE FNs TO HIGHLIGHT\n const { svgAnnotationRules } = props\n\n const d = baseD.ids\n ? baseD\n : baseD.edge\n ? {\n ...(projectedEdges.find((p) => {\n return (\n nodeIDAccessor(p.source) === nodeIDAccessor(baseD.edge.source) &&\n nodeIDAccessor(p.target) === nodeIDAccessor(baseD.edge.target)\n )\n }) || {}),\n ...baseD\n }\n : {\n ...(projectedNodes.find((p) => nodeIDAccessor(p) === baseD.id) || {}),\n ...baseD\n }\n\n const { voronoiHover } = annotationLayer\n\n if (svgAnnotationRules) {\n const customAnnotation = svgAnnotationRules({\n d,\n i,\n networkFrameProps: props,\n networkFrameState: state,\n nodes: projectedNodes,\n edges: projectedEdges,\n voronoiHover,\n screenCoordinates: [d.x, d.y],\n adjustedPosition,\n adjustedSize,\n annotationLayer\n })\n if (customAnnotation !== null) {\n return customAnnotation\n }\n }\n if (d.type === \"node\") {\n return svgNodeRule({\n d,\n i,\n nodeSizeAccessor\n })\n } else if (d.type === \"desaturation-layer\") {\n return desaturationLayer({\n style: d.style instanceof Function ? d.style(d, i) : d.style,\n size: adjustedSize,\n i,\n key: d.key\n })\n } else if (d.type === \"basic-node-label\") {\n return (\n <g key={d.key || `basic-${i}`} transform={`translate(${d.x},${d.y})`}>\n {(baseD.element || baseD.label) as React.ReactNode}\n </g>\n )\n } else if (typeof d.type === \"function\" || annotationTypeStrings.has(d.type)) {\n return svgReactAnnotationRule({\n d,\n i,\n projectedNodes,\n nodeIDAccessor\n })\n } else if (d.type === \"enclose\") {\n return svgEncloseRule({\n d,\n i,\n projectedNodes,\n nodeIDAccessor,\n nodeSizeAccessor\n })\n } else if (d.type === \"enclose-rect\") {\n return svgRectEncloseRule({\n d,\n i,\n projectedNodes,\n nodeIDAccessor,\n nodeSizeAccessor\n })\n } else if (d.type === \"enclose-hull\") {\n return svgHullEncloseRule({\n d,\n i,\n projectedNodes,\n nodeIDAccessor,\n nodeSizeAccessor\n })\n } else if (d.type === \"highlight\") {\n return svgHighlightRule({\n d,\n i,\n networkFrameRender\n })\n }\n return null\n}\n\nfunction defaultNetworkHTMLRule(\n props: NetworkFrameProps,\n state: NetworkFrameState,\n {\n d: baseD,\n i,\n annotationLayer\n }: {\n d: AnnotationType\n i: number\n annotationLayer: UpdatedAnnotationLayerProps\n }\n) {\n const {\n tooltipContent,\n optimizeCustomTooltipPosition,\n htmlAnnotationRules\n } = props\n const {\n projectedNodes,\n projectedEdges,\n nodeIDAccessor,\n adjustedSize,\n adjustedPosition\n } = state\n\n const { voronoiHover } = annotationLayer\n\n const d = baseD.ids\n ? baseD\n : baseD.edge\n ? {\n ...(projectedEdges.find(\n (p) =>\n nodeIDAccessor(p.source) === nodeIDAccessor(baseD.source) &&\n nodeIDAccessor(p.target) === nodeIDAccessor(baseD.target)\n ) || {}),\n ...baseD\n }\n : {\n ...(projectedNodes.find((p) => nodeIDAccessor(p) === baseD.id) || {}),\n ...baseD\n }\n\n if (htmlAnnotationRules) {\n const customAnnotation = htmlAnnotationRules({\n d,\n i,\n networkFrameProps: props,\n networkFrameState: state,\n nodes: projectedNodes,\n edges: projectedEdges,\n voronoiHover,\n screenCoordinates: [d.x, d.y],\n adjustedPosition,\n adjustedSize,\n annotationLayer\n })\n if (customAnnotation !== null) {\n return customAnnotation\n }\n }\n if (d.type === \"frame-hover\") {\n return htmlFrameHoverRule({\n d,\n i,\n tooltipContent,\n optimizeCustomTooltipPosition,\n nodes: projectedNodes,\n edges: projectedEdges,\n nodeIDAccessor,\n adjustedSize\n })\n }\n return null\n}\n\nNetworkFrameInner.displayName = \"NetworkFrame\"\nconst NetworkFrame = React.memo(NetworkFrameInner) as typeof NetworkFrameInner\nexport default NetworkFrame\n","\"use client\"\nimport * as React from \"react\"\nimport { useState } from \"react\"\nimport memoize from \"memoize-one\"\n\nimport { OrdinalFrameProps } from \"./types/ordinalTypes\"\nimport { XYFrameProps } from \"./types/xyTypes\"\n\nimport { CustomHoverType } from \"./types/annotationTypes\"\n\nconst framePropHash = {\n NetworkFrame: true,\n XYFrame: true,\n OrdinalFrame: true,\n ResponsiveNetworkFrame: true,\n ResponsiveXYFrame: true,\n ResponsiveOrdinalFrame: true,\n SparkNetworkFrame: true,\n SparkXYFrame: true,\n SparkOrdinalFrame: true\n}\n\nconst invertKeys = {\n rExtent: \"invertR\",\n xExtent: \"invertX\",\n yExtent: \"invertY\"\n}\n\nconst buildNewState = (\n prevState,\n extentValue,\n extentType,\n extentPosition,\n invertedExtent\n) => {\n const oldExtents: object = prevState.rawExtents[extentType] || {}\n oldExtents[extentPosition] = extentValue\n\n const extentMinMaxValues = Object.values(oldExtents)\n .flat()\n .filter((d) => d !== undefined && d !== null && !isNaN(d))\n\n let baseExtent = [\n Math.min(...extentMinMaxValues),\n Math.max(...extentMinMaxValues)\n ]\n\n if (invertedExtent) {\n baseExtent = baseExtent.reverse()\n }\n\n return {\n extents: {\n ...prevState.extents,\n [extentType]: extentMinMaxValues.length === 0 ? undefined : baseExtent\n },\n rawExtents: {\n ...prevState.rawExtents,\n [extentType]: oldExtents\n }\n }\n}\n\nfunction validFrameProps(originalProps) {\n const newProps = { ...originalProps }\n return newProps\n}\n\ninterface FacetControllerProps {\n children: React.ReactElement\n sharedRExtent: boolean\n sharedXExtent: boolean\n sharedYExtent: boolean\n}\n\ntype Props = FacetControllerProps & OrdinalFrameProps & XYFrameProps\n\ninterface State {\n extents: object\n rawExtents: object\n facetHover?: object\n facetHoverAnnotations?: CustomHoverType\n changeExtents: Function\n changeRawExtents: Function\n changeFacetHover: Function\n changeFacetHoverAnnotations: Function\n}\n\nconst processFacetController = memoize((props: Props, state: State) => {\n return React.Children.map(\n props.children as unknown as React.ReactElement[],\n (child: React.ReactElement, index) => {\n if (!child) return null\n return mapChildrenWithAppropriateProps({\n child,\n index,\n originalAnnotations: child.props.annotations || [],\n props,\n state\n })\n }\n )\n})\n\n/**\n * Helper for creating extent if we have a min/max value\n * use that else use the onChange version so we can in return\n * normalize all of the facets to have the same extents\n */\nconst createExtent = (\n extentType: string,\n props: Props,\n state: State,\n index: number\n) => {\n return state.extents && state.extents[extentType]\n ? {\n onChange: extentHandler(extentType, props, state, index),\n extent: state.extents[extentType]\n }\n : { onChange: extentHandler(extentType, props, state, index) }\n}\n\n/**\n * Whenever the extent changes, create the min/max values for each extentType\n * so this could be rExtent for OrdinalFrame or x/yExtent for the XYFrame\n */\nconst extentHandler = (\n extentType: string,\n props: Props,\n state: State,\n extentPosition: number\n) => {\n const invertedExtent = props[invertKeys[extentType]] || false\n return (extentValue: Array<number>) => {\n const newState = buildNewState(\n state,\n extentValue,\n extentType,\n extentPosition,\n invertedExtent\n )\n\n state.changeRawExtents(newState.rawExtents)\n state.changeExtents(newState.extents)\n\n return extentValue\n }\n}\n\n/**\n * Map hover annotations and extent to child. Initially the extent is an object with\n * an onChange handler however once each of those resolve we then create an\n * extent that matches between all of them. This logic can be found in createExtent and also\n * extentHandler\n */\nconst mapChildrenWithAppropriateProps = ({\n child,\n index,\n originalAnnotations,\n props,\n state\n}: {\n child: React.ReactElement\n props: Props\n index: number\n state: State\n originalAnnotations: Array<Object>\n}) => {\n const childType = child.type as unknown as { displayName?: string }\n const frameType = childType.displayName\n const annotations = generateChildAnnotations({\n state,\n props,\n originalAnnotations\n })\n const customProps = { ...props, annotations }\n\n if (!framePropHash[frameType]) {\n return React.cloneElement(child, { facetprops: customProps })\n }\n\n // pieceHoverAnnotation could be an object, so we need to be explicit in checking for true\n if (props.hoverAnnotation || props.pieceHoverAnnotation) {\n customProps.customHoverBehavior = (d) => {\n state.changeFacetHover(d)\n state.changeFacetHoverAnnotations(\n props.hoverAnnotation || props.pieceHoverAnnotation\n )\n }\n }\n\n if (\n (frameType === \"OrdinalFrame\" ||\n frameType === \"ResponsiveOrdinalFrame\" ||\n frameType === \"SparkOrdinalFrame\") &&\n props.sharedRExtent === true\n ) {\n const invertedExtent = customProps[invertKeys[\"rExtent\"]] || false\n\n customProps.rExtent = createExtent(\"rExtent\", props, state, index)\n customProps.onUnmount = () => {\n const newState = buildNewState(\n state,\n [],\n \"rExtent\",\n index,\n invertedExtent\n )\n state.changeRawExtents(newState.rawExtents)\n state.changeExtents(newState.extents)\n }\n }\n\n if (\n (frameType === \"XYFrame\" ||\n frameType === \"ResponsiveXYFrame\" ||\n frameType === \"SparkXYFrame\") &&\n props.sharedXExtent === true\n ) {\n const invertedExtent = customProps[invertKeys[\"xExtent\"]] || false\n customProps.xExtent = createExtent(\"xExtent\", props, state, index)\n customProps.onUnmount = () => {\n const newState = buildNewState(\n state,\n [],\n \"xExtent\",\n index,\n invertedExtent\n )\n state.changeRawExtents(newState.rawExtents)\n state.changeExtents(newState.extents)\n }\n }\n\n if (\n (frameType === \"XYFrame\" ||\n frameType === \"ResponsiveXYFrame\" ||\n frameType === \"SparkXYFrame\") &&\n props.sharedYExtent === true\n ) {\n const invertedExtent = customProps[invertKeys[\"yExtent\"]] || false\n customProps.yExtent = createExtent(\"yExtent\", props, state, index)\n customProps.onUnmount = () => {\n const newState = buildNewState(\n state,\n [],\n \"yExtent\",\n index,\n invertedExtent\n )\n state.changeRawExtents(newState.rawExtents)\n state.changeExtents(newState.extents)\n }\n }\n if (customProps.pieceHoverAnnotation) {\n customProps.pieceHoverAnnotation = []\n } else if (customProps.hoverAnnotation) {\n customProps.hoverAnnotation = []\n }\n\n return React.cloneElement(child, validFrameProps(customProps))\n}\n\n/**\n * Remove and add required annotation props for specific annotation types.\n */\n\nconst generateChildAnnotations = ({\n originalAnnotations,\n state,\n props\n}: {\n originalAnnotations: Array<Object>\n state: State\n props: Props\n}) => {\n let annotationBase = state.facetHoverAnnotations\n\n const { hoverAnnotation, pieceHoverAnnotation } = props\n const annotationSettings = hoverAnnotation || pieceHoverAnnotation\n\n if (!annotationSettings || !annotationBase) {\n return originalAnnotations\n }\n\n if (state.facetHover) {\n const annotations = [...originalAnnotations]\n\n if (annotationSettings === true) {\n annotationBase = [{ ...state.facetHover }]\n } else {\n const annotationMap = annotationSettings as object[]\n annotationBase = annotationMap.map((annotation) => {\n const decoratedAnnotation =\n typeof annotation === \"function\"\n ? annotation(state.facetHover)\n : { ...state.facetHover, ...annotation }\n\n return decoratedAnnotation\n })\n }\n\n if (Array.isArray(annotationBase)) {\n annotationBase.forEach((annotation) => {\n if (typeof annotation !== \"function\") {\n if (annotation.type === \"column-hover\") {\n annotation.facetColumn = annotation.column.name\n annotation.column = undefined\n } else {\n if (!annotation.type) {\n annotation.type = \"frame-hover\"\n }\n annotation.y = undefined\n annotation.yBottom = undefined\n annotation.yMiddle = undefined\n annotation.yTop = undefined\n }\n }\n })\n\n annotations.push(...annotationBase)\n }\n return annotations\n }\n\n return originalAnnotations\n}\n\nexport default function FacetController(props: Props) {\n const [extents, changeExtents] = useState({})\n const [rawExtents, changeRawExtents] = useState({})\n const [facetHover, changeFacetHover] = useState(undefined)\n const [facetHoverAnnotations, changeFacetHoverAnnotations] =\n useState(undefined)\n\n return (\n <React.Fragment>\n {processFacetController(props, {\n extents,\n rawExtents,\n facetHover,\n facetHoverAnnotations,\n changeFacetHoverAnnotations,\n changeExtents,\n changeRawExtents,\n changeFacetHover\n })}\n </React.Fragment>\n )\n}\n","\"use client\"\nimport { useState, useLayoutEffect, RefObject } from \"react\"\n\nexport function useBoundingRect(ref: RefObject<HTMLElement>): DOMRect | null {\n const [rect, setRect] = useState<DOMRect | null>(null)\n useLayoutEffect(() => {\n const element = ref.current\n if (element != null) {\n setRect(element.getBoundingClientRect())\n // TypeScript 3.9 does not know about resize observer\n // @ts-ignore\n const observer = new ResizeObserver((entries) => {\n if (entries.length > 0) {\n setRect(entries[0].contentRect as DOMRect)\n }\n })\n observer.observe(element)\n return () => observer.disconnect()\n }\n }, [])\n return rect\n}\n","\"use client\"\nimport * as React from \"react\"\nimport { useState, useLayoutEffect, useRef } from \"react\"\n\nimport { OrdinalFrameProps } from \"./types/ordinalTypes\"\nimport { XYFrameProps } from \"./types/xyTypes\"\nimport { NetworkFrameProps } from \"./types/networkTypes\"\n\nimport { useBoundingRect } from \"./useBoundingRect\"\n\nexport interface ResponsiveFrameProps {\n debounce?: number\n responsiveWidth?: boolean\n responsiveHeight?: boolean\n gridDisplay?: boolean\n elementResizeEvent?: Function\n}\n\nexport interface ResponsiveFrameState {\n containerHeight?: number\n containerWidth?: number\n}\n\ntype ActualFrameProps = OrdinalFrameProps | XYFrameProps | NetworkFrameProps\n\nconst createResponsiveFrame = (ParticularFrame) => {\n function ResponsiveFrame(props: ResponsiveFrameProps & ActualFrameProps) {\n const {\n responsiveWidth,\n responsiveHeight,\n size = [500, 500],\n dataVersion,\n debounce = 200,\n gridDisplay,\n ...rest\n } = props\n\n const actualSize = [...size]\n\n let returnEmpty = false\n\n let sceneRef = useRef()\n let rect = useBoundingRect(sceneRef)\n\n if (responsiveWidth) {\n if (rect == null) returnEmpty = true\n else actualSize[0] = rect.width\n }\n\n if (responsiveHeight) {\n if (rect == null) returnEmpty = true\n else actualSize[1] = rect.height\n }\n\n const dataVersionWithSize = dataVersion + actualSize.toString() + debounce\n\n return (\n <div\n data-testid=\"responsive-container\"\n className=\"responsive-container\"\n style={\n gridDisplay\n ? { minWidth: \"0px\", minHeight: \"0px\" }\n : { height: \"100%\", width: \"100%\" }\n }\n ref={sceneRef}\n >\n {!returnEmpty && (\n <ParticularFrame\n {...rest}\n size={actualSize}\n dataVersion={dataVersion ? dataVersionWithSize : undefined}\n />\n )}\n </div>\n )\n }\n ResponsiveFrame.isResizing = setTimeout(() => {})\n\n ResponsiveFrame.displayName = `Responsive${ParticularFrame.displayName}`\n return ResponsiveFrame\n}\n\nexport default createResponsiveFrame\n","\"use client\"\nimport NetworkFrame from \"./NetworkFrame\"\nimport createResponsiveFrame from \"./ResponsiveFrame\"\nimport { ResponsiveFrameProps } from \"./ResponsiveFrame\"\nimport { NetworkFrameProps } from \"./types/networkTypes\"\n\nexport const ResponsiveNetworkFrame =\n\t/*#__PURE__*/ createResponsiveFrame(NetworkFrame) as\n\t<TNode = Record<string, any>, TEdge = Record<string, any>>(props: ResponsiveFrameProps & NetworkFrameProps<TNode, TEdge>) => JSX.Element\n","\"use client\"\nimport MinimapXYFrame from \"./MinimapXYFrame\"\nimport createResponsiveFrame from \"./ResponsiveFrame\"\nimport { ResponsiveFrameProps } from \"./ResponsiveFrame\"\nimport { XYFrameProps } from \"./types/xyTypes\"\n\nexport const ResponsiveMinimapXYFrame =\n\t/*#__PURE__*/ createResponsiveFrame(MinimapXYFrame) as\n\t<TDatum = Record<string, any>>(props: ResponsiveFrameProps & XYFrameProps<TDatum>) => JSX.Element\n","\"use client\"\nimport XYFrame from \"./XYFrame\"\nimport createResponsiveFrame from \"./ResponsiveFrame\"\nimport { ResponsiveFrameProps } from \"./ResponsiveFrame\"\nimport { XYFrameProps } from \"./types/xyTypes\"\n\nexport const ResponsiveXYFrame = /*#__PURE__*/ createResponsiveFrame(XYFrame) as\n <TDatum = Record<string, any>>(props: ResponsiveFrameProps & XYFrameProps<TDatum>) => JSX.Element\n","\"use client\"\nimport OrdinalFrame from \"./OrdinalFrame\"\nimport createResponsiveFrame from \"./ResponsiveFrame\"\nimport { ResponsiveFrameProps } from \"./ResponsiveFrame\"\nimport { OrdinalFrameProps } from \"./types/ordinalTypes\"\n\nexport const ResponsiveOrdinalFrame =\n\t/*#__PURE__*/ createResponsiveFrame(OrdinalFrame) as\n\t<TDatum = Record<string, any>>(props: ResponsiveFrameProps & OrdinalFrameProps<TDatum>) => JSX.Element\n","\"use client\"\nimport * as React from \"react\"\nimport { useCallback, useState } from \"react\"\nimport { OrdinalFrameProps } from \"./types/ordinalTypes\"\nimport { XYFrameProps } from \"./types/xyTypes\"\nimport { NetworkFrameProps } from \"./types/networkTypes\"\n\ntype ActualFrameProps = OrdinalFrameProps | XYFrameProps | NetworkFrameProps\n\nconst allFrameDefaults = {\n margin: 0\n}\n\nfunction sparkNetworkSettings(originalSettings = \"force\") {\n let finalSettings = {}\n if (originalSettings) {\n finalSettings = originalSettings\n if (originalSettings === \"force\") finalSettings = { type: \"force\" }\n\n return {\n edgeStrength: 2,\n edgeDistance: 5,\n nodePadding: 1,\n nodeWidth: 5,\n groupWidth: 4,\n ...finalSettings\n }\n }\n return originalSettings\n}\n\ntype SparkFrameProps = {\n sparkStyle?: object\n size?: number | number[]\n}\n\ntype SparkFrameState = {\n containerHeight: number\n containerWidth: number\n}\n\nexport const axisDefaults = {\n tickFormat: () => \"\",\n baseline: false\n}\n\nexport const xyFrameDefaults = (props) => ({\n ...allFrameDefaults,\n ...props,\n hoverAnnotation: props.hoverAnnotation,\n axes: props.axes\n ? props.axes.map((a) => ({ ...axisDefaults, ...a }))\n : props.axes\n})\n\nexport const ordinalFrameDefaults = (props) => ({\n ...allFrameDefaults,\n ...props,\n hoverAnnotation: props.hoverAnnotation,\n axes: props.axes\n ? props.axes.map((a) => ({ ...axisDefaults, ...a }))\n : props.axes\n})\n\nexport const networkFrameDefaults = (props) => ({\n ...allFrameDefaults,\n nodeSizeAccessor: 2,\n ...props,\n networkType: sparkNetworkSettings(props.networkType)\n})\n\nexport default function createSparkFrame(Frame, defaults, frameName) {\n return (props: SparkFrameProps) => {\n const { size = [], sparkStyle = {} } = props\n\n const [containerHeight, changeContainerHeight] = useState(30)\n\n const actualSize = []\n\n actualSize[0] =\n typeof size === \"number\" ? size : size[0] ? size[0] : containerHeight\n actualSize[1] = containerHeight\n\n const sparkNodeRef = useCallback((node) => {\n if (node) { \n const lineHeight =\n +window.getComputedStyle(node).lineHeight.split(\"px\")[0] - 5\n changeContainerHeight(isNaN(lineHeight) ? node.offsetHeight : lineHeight)\n }\n }, [])\n\n return (\n <div\n style={Object.assign(\n {\n width: `${actualSize[0]}px`,\n height: `${actualSize[1]}px`,\n display: \"inline-block\",\n marginLeft: \"5px\",\n marginRight: \"5px\"\n },\n sparkStyle\n )}\n ref={sparkNodeRef}\n >\n <Frame {...defaults(props)} size={actualSize} />\n </div>\n )\n }\n}\n","\"use client\"\nimport XYFrame from \"./XYFrame\"\nimport createSparkFrame from \"./SparkFrame\"\nimport { xyFrameDefaults } from \"./SparkFrame\"\nimport { XYFrameProps } from \"./types/xyTypes\"\n\nexport const SparkXYFrame = /*#__PURE__*/ createSparkFrame(\n\tXYFrame,\n\txyFrameDefaults,\n\t\"SparkXYFrame\"\n) as <TDatum = Record<string, any>>(props: XYFrameProps<TDatum> & { sparkStyle?: object; size?: number | number[] }) => JSX.Element\n","\"use client\"\nimport OrdinalFrame from \"./OrdinalFrame\"\nimport createSparkFrame from \"./SparkFrame\"\nimport { ordinalFrameDefaults } from \"./SparkFrame\"\nimport { OrdinalFrameProps } from \"./types/ordinalTypes\"\n\nexport const SparkOrdinalFrame = /*#__PURE__*/ createSparkFrame(\n OrdinalFrame,\n ordinalFrameDefaults,\n \"SparkOrdinalFrame\"\n) as <TDatum = Record<string, any>>(props: OrdinalFrameProps<TDatum> & { sparkStyle?: object; size?: number | number[] }) => JSX.Element\n","\"use client\"\nimport NetworkFrame from \"./NetworkFrame\"\nimport createSparkFrame from \"./SparkFrame\"\nimport { networkFrameDefaults } from \"./SparkFrame\"\nimport { NetworkFrameProps } from \"./types/networkTypes\"\n\nexport const SparkNetworkFrame = /*#__PURE__*/ createSparkFrame(\n NetworkFrame,\n networkFrameDefaults,\n \"SparkNetworkFrame\"\n) as <TNode = Record<string, any>, TEdge = Record<string, any>>(props: NetworkFrameProps<TNode, TEdge> & { sparkStyle?: object; size?: number | number[] }) => JSX.Element\n","import { scaleOrdinal, scaleSequential } from \"d3-scale\"\nimport {\n schemeCategory10,\n schemeTableau10,\n schemeSet3,\n interpolateBlues,\n interpolateReds,\n interpolateGreens,\n interpolateOranges,\n interpolatePurples,\n interpolateViridis,\n interpolatePlasma\n} from \"d3-scale-chromatic\"\n\n/**\n * Predefined color schemes\n */\nexport const COLOR_SCHEMES = {\n // Categorical schemes\n category10: schemeCategory10,\n tableau10: schemeTableau10,\n set3: schemeSet3,\n\n // Sequential schemes (for continuous data)\n blues: interpolateBlues,\n reds: interpolateReds,\n greens: interpolateGreens,\n oranges: interpolateOranges,\n purples: interpolatePurples,\n viridis: interpolateViridis,\n plasma: interpolatePlasma\n}\n\n/**\n * Default colors for charts\n */\nexport const DEFAULT_COLORS = schemeCategory10\n\n/**\n * Gets a color for a data point based on the colorBy configuration\n *\n * @param dataPoint - The data point\n * @param colorBy - Field name or function to determine color\n * @param colorScale - Optional custom color scale\n * @returns Color string\n *\n * @example\n * ```ts\n * // Using a field name\n * getColor({category: 'A', value: 10}, 'category', colorScale)\n *\n * // Using a function\n * getColor({value: 10}, d => d.value > 5 ? 'red' : 'blue')\n * ```\n */\nexport function getColor(\n dataPoint: any,\n colorBy: string | ((d: any) => string),\n colorScale?: (v: any) => string\n): string {\n if (typeof colorBy === \"function\") {\n return colorBy(dataPoint)\n }\n\n const colorValue = dataPoint[colorBy]\n\n if (colorScale) {\n return colorScale(colorValue)\n }\n\n // Default: return a hash-based color\n return DEFAULT_COLORS[Math.abs(hashString(String(colorValue))) % DEFAULT_COLORS.length]\n}\n\n/**\n * Creates a color scale function from data\n *\n * @param data - Array of data points\n * @param colorBy - Field name to use for coloring\n * @param scheme - Color scheme name or custom palette\n * @returns Color scale function\n *\n * @example\n * ```ts\n * const colorScale = createColorScale(data, 'category')\n * const color = colorScale('A') // Returns color for category 'A'\n * ```\n */\nexport function createColorScale(\n data: Array<Record<string, any>>,\n colorBy: string,\n scheme: string | string[] = \"category10\"\n): (v: string) => string {\n // Get unique values\n const uniqueValues = Array.from(new Set(data.map(d => d[colorBy])))\n\n // Check if values are numeric for sequential scale\n const isNumeric = uniqueValues.every(v => typeof v === \"number\" || !isNaN(Number(v)))\n\n // Handle custom color array\n if (Array.isArray(scheme)) {\n return scaleOrdinal<any, string>()\n .domain(uniqueValues)\n .range(scheme)\n .unknown(\"#999\") as (v: any) => string\n }\n\n const colorScheme = COLOR_SCHEMES[scheme] || COLOR_SCHEMES.category10\n\n if (isNumeric && typeof colorScheme === \"function\") {\n // Use sequential scale for numeric data\n return (v: any) => colorScheme(Number(v) / Math.max(...uniqueValues.map(Number)))\n } else {\n // Use ordinal scale for categorical data\n const colors = Array.isArray(colorScheme) ? colorScheme : DEFAULT_COLORS\n return scaleOrdinal<any, string>()\n .domain(uniqueValues)\n .range(colors)\n .unknown(\"#999\") as (v: any) => string\n }\n}\n\n/**\n * Simple string hash function for deterministic color assignment\n */\nfunction hashString(str: string): number {\n let hash = 0\n for (let i = 0; i < str.length; i++) {\n const char = str.charCodeAt(i)\n hash = (hash << 5) - hash + char\n hash = hash & hash // Convert to 32bit integer\n }\n return Math.abs(hash)\n}\n\n/**\n * Generates a size function based on sizeBy configuration\n *\n * @param dataPoint - The data point\n * @param sizeBy - Field name or function to determine size\n * @param sizeRange - Min and max size range [min, max]\n * @param domain - Optional domain for scaling [minValue, maxValue]\n * @returns Size value\n */\nexport function getSize(\n dataPoint: any,\n sizeBy: string | ((d: any) => number),\n sizeRange: [number, number] = [3, 20],\n domain?: [number, number]\n): number {\n let value: number\n\n if (typeof sizeBy === \"function\") {\n value = sizeBy(dataPoint)\n } else {\n value = dataPoint[sizeBy]\n }\n\n if (!domain) {\n return value\n }\n\n // Scale value to size range\n const [minDomain, maxDomain] = domain\n const [minSize, maxSize] = sizeRange\n\n if (maxDomain === minDomain) {\n return (minSize + maxSize) / 2\n }\n\n const normalized = (value - minDomain) / (maxDomain - minDomain)\n return minSize + normalized * (maxSize - minSize)\n}\n","import type { Accessor } from \"./types\"\n\n/**\n * Create a legend configuration for HOC components\n *\n * @param data - Array of data points\n * @param colorBy - Field or function to determine color categories\n * @param colorScale - Optional d3 color scale function\n * @param getColor - Function to get color for a data point\n * @param strokeColor - Optional stroke color for legend items\n * @param strokeWidth - Optional stroke width for legend items\n * @returns Legend configuration object for Semiotic frames\n */\nexport function createLegend({\n data,\n colorBy,\n colorScale,\n getColor,\n strokeColor,\n strokeWidth\n}: {\n data: Array<Record<string, any>>\n colorBy: Accessor<string>\n colorScale?: ((v: string) => string)\n getColor: (d: Record<string, any>, accessor: Accessor<string>, scale?: ((v: string) => string)) => string\n strokeColor?: string\n strokeWidth?: number\n}) {\n // Get unique category values\n const uniqueValues = Array.from(\n new Set(\n data.map((d) => {\n if (typeof colorBy === \"function\") {\n return colorBy(d)\n }\n return d[colorBy as string]\n })\n )\n )\n\n // Create items array for the legend\n const items = uniqueValues.map((value) => {\n const sampleData =\n typeof colorBy === \"function\"\n ? data.find((d) => colorBy(d) === value)\n : data.find((d) => d[colorBy as string] === value)\n\n const color = sampleData\n ? getColor(sampleData, colorBy, colorScale)\n : colorScale\n ? colorScale(value)\n : \"#000000\"\n\n return {\n label: String(value),\n color\n }\n })\n\n return {\n legendGroups: [\n {\n styleFn: (d: { color: string }) => {\n const style: Record<string, string | number> = { fill: d.color, stroke: d.color }\n if (strokeColor !== undefined) {\n style.stroke = strokeColor\n }\n if (strokeWidth !== undefined) {\n style.strokeWidth = strokeWidth\n }\n return style\n },\n type: \"fill\" as const,\n items,\n label: \"\" // Required by LegendGroup interface\n }\n ]\n }\n}\n","import * as React from \"react\"\nimport type { Accessor } from \"../charts/shared/types\"\n\n/**\n * Configuration for a single tooltip field\n */\nexport interface TooltipField {\n /**\n * Label for this field\n */\n label?: string\n\n /**\n * Field name or accessor function to get the value\n * (alias for 'accessor')\n */\n key?: Accessor\n\n /**\n * Field name or accessor function to get the value\n */\n accessor?: Accessor\n\n /**\n * Optional format function for the value\n */\n format?: (value: unknown) => string\n}\n\n/**\n * Base tooltip configuration\n */\nexport interface TooltipConfig {\n /**\n * Array of fields to display in the tooltip\n * Can be simple field names or full TooltipField objects\n */\n fields?: Array<string | TooltipField>\n\n /**\n * Custom title accessor (field name or function)\n */\n title?: Accessor<string>\n\n /**\n * Custom format function for all values (if fields don't specify their own)\n */\n format?: (value: unknown) => string\n\n /**\n * Custom style object for the tooltip container\n */\n style?: React.CSSProperties\n\n /**\n * Custom className for the tooltip container\n */\n className?: string\n}\n\n/**\n * Multi-line tooltip configuration\n */\nexport interface MultiLineTooltipConfig extends TooltipConfig {\n /**\n * Show field labels (default: true)\n */\n showLabels?: boolean\n\n /**\n * Separator between label and value (default: \": \")\n */\n separator?: string\n}\n\n/**\n * Default tooltip styles following best practices\n */\nexport const defaultTooltipStyle: React.CSSProperties = {\n background: \"rgba(0, 0, 0, 0.85)\",\n color: \"white\",\n padding: \"8px 12px\",\n borderRadius: \"4px\",\n fontSize: \"14px\",\n lineHeight: \"1.5\",\n boxShadow: \"0 2px 8px rgba(0, 0, 0, 0.15)\",\n pointerEvents: \"none\",\n maxWidth: \"300px\",\n wordWrap: \"break-word\"\n}\n\n/**\n * Extract value from data using accessor\n */\nfunction getValue(data: Record<string, unknown>, accessor: Accessor): unknown {\n if (typeof accessor === \"function\") {\n return accessor(data)\n }\n return data[accessor]\n}\n\n/**\n * Format a value for display\n */\nfunction formatValue(value: unknown, format?: (value: unknown) => string): string {\n if (format) {\n return format(value)\n }\n\n if (value === null || value === undefined) {\n return \"\"\n }\n\n // Format numbers with commas\n if (typeof value === \"number\") {\n return value.toLocaleString()\n }\n\n // Format dates\n if (value instanceof Date) {\n return value.toLocaleDateString()\n }\n\n // Handle objects (e.g. resolved network nodes with an id property)\n if (typeof value === \"object\" && value !== null) {\n const obj = value as Record<string, unknown>\n if (obj.id !== undefined) return String(obj.id)\n if (obj.name !== undefined) return String(obj.name)\n return JSON.stringify(value)\n }\n\n return String(value)\n}\n\n/**\n * Create a simple tooltip that displays a single value or title\n *\n * @example\n * ```tsx\n * <Scatterplot\n * data={data}\n * tooltip={Tooltip({ title: \"name\" })}\n * />\n * ```\n *\n * @example\n * ```tsx\n * <BarChart\n * data={data}\n * tooltip={Tooltip({\n * title: d => `${d.category}: ${d.value}`,\n * style: { background: \"#333\" }\n * })}\n * />\n * ```\n */\nexport function Tooltip(config: TooltipConfig = {}) {\n const {\n fields,\n title,\n format,\n style = {},\n className = \"\"\n } = config\n\n // Return a tooltipContent function that Semiotic expects\n return (data: Record<string, unknown>) => {\n // Guard against undefined/null data\n if (!data || typeof data !== \"object\") {\n return null\n }\n\n let titleContent: React.ReactNode\n const fieldLines: Array<{ label?: string; value: string }> = []\n\n if (title) {\n const titleValue = getValue(data, title)\n titleContent = formatValue(titleValue, format)\n }\n\n if (fields && fields.length > 0) {\n fields.forEach((field) => {\n let label: string | undefined\n let accessor: Accessor\n let fieldFormat: ((value: unknown) => string) | undefined\n\n if (typeof field === \"string\") {\n label = field\n accessor = field\n fieldFormat = format\n } else {\n label = field.label\n accessor = field.accessor || field.key || \"\"\n fieldFormat = field.format || format\n }\n\n const value = getValue(data, accessor)\n fieldLines.push({\n label,\n value: formatValue(value, fieldFormat)\n })\n })\n } else if (!title) {\n // Default: try common field names (only when no title or fields specified)\n const commonFields = [\"value\", \"y\", \"name\", \"id\", \"label\"]\n for (const field of commonFields) {\n if (data[field] !== undefined) {\n titleContent = formatValue(data[field], format)\n break\n }\n }\n\n // If still nothing, show first non-internal property\n if (!titleContent) {\n const keys = Object.keys(data).filter(k => !k.startsWith(\"_\"))\n if (keys.length > 0) {\n titleContent = formatValue(data[keys[0]], format)\n }\n }\n }\n\n const mergedStyle = { ...defaultTooltipStyle, ...style }\n\n return (\n <div\n className={`semiotic-tooltip ${className}`.trim()}\n style={mergedStyle}\n >\n {titleContent && <div style={{ fontWeight: fieldLines.length > 0 ? \"bold\" : \"normal\" }}>{titleContent}</div>}\n {fieldLines.map((line, index) => (\n <div key={index} style={{ marginTop: index === 0 && titleContent ? \"4px\" : 0 }}>\n {line.label && <span>{line.label}: </span>}\n {line.value}\n </div>\n ))}\n </div>\n )\n }\n}\n\n/**\n * Create a multi-line tooltip that displays multiple fields\n *\n * @example\n * ```tsx\n * <Scatterplot\n * data={data}\n * tooltip={MultiLineTooltip({\n * fields: [\"name\", \"value\", \"category\"]\n * })}\n * />\n * ```\n *\n * @example\n * ```tsx\n * <LineChart\n * data={data}\n * tooltip={MultiLineTooltip({\n * title: \"series\",\n * fields: [\n * { label: \"X\", accessor: \"x\", format: v => v.toFixed(2) },\n * { label: \"Y\", accessor: \"y\", format: v => v.toFixed(2) },\n * { label: \"Category\", accessor: \"category\" }\n * ]\n * })}\n * />\n * ```\n *\n * @example\n * ```tsx\n * <BarChart\n * data={data}\n * tooltip={MultiLineTooltip({\n * fields: [\n * { label: \"Category\", accessor: \"category\" },\n * { label: \"Sales\", accessor: \"value\", format: v => `$${v.toLocaleString()}` }\n * ],\n * showLabels: true\n * })}\n * />\n * ```\n */\nexport function MultiLineTooltip(config: MultiLineTooltipConfig = {}) {\n const {\n fields = [],\n title,\n format,\n style = {},\n className = \"\",\n showLabels = true,\n separator = \": \"\n } = config\n\n // Return a tooltipContent function that Semiotic expects\n return (data: Record<string, unknown>) => {\n // Guard against undefined/null data\n if (!data || typeof data !== \"object\") {\n return null\n }\n\n const lines: Array<{ label?: string; value: string }> = []\n\n // Add title line if specified\n if (title) {\n const titleValue = getValue(data, title)\n lines.push({\n value: formatValue(titleValue, format)\n })\n }\n\n // Add field lines\n if (fields && Array.isArray(fields) && fields.length > 0) {\n fields.forEach((field) => {\n let label: string | undefined\n let accessor: Accessor\n let fieldFormat: ((value: unknown) => string) | undefined\n\n if (typeof field === \"string\") {\n // Simple string field name\n label = field\n accessor = field\n fieldFormat = format\n } else {\n // Full TooltipField object\n // Support both 'key' and 'accessor' for backward compatibility\n label = field.label\n accessor = field.accessor || field.key || \"\"\n fieldFormat = field.format || format\n }\n\n const value = getValue(data, accessor)\n const formattedValue = formatValue(value, fieldFormat)\n\n lines.push({\n label: showLabels ? label : undefined,\n value: formattedValue\n })\n })\n } else {\n // Default: show all non-internal properties\n const keys = Object.keys(data).filter(\n (k) => !k.startsWith(\"_\") && k !== \"data\"\n )\n keys.forEach((key) => {\n lines.push({\n label: showLabels ? key : undefined,\n value: formatValue(data[key], format)\n })\n })\n }\n\n const mergedStyle = { ...defaultTooltipStyle, ...style }\n\n // Safety check: ensure lines is an array\n if (!Array.isArray(lines) || lines.length === 0) {\n return null\n }\n\n return (\n <div\n className={`semiotic-tooltip semiotic-tooltip-multiline ${className}`.trim()}\n style={mergedStyle}\n >\n {lines.map((line, index) => (\n <div key={index} style={{ marginBottom: index < lines.length - 1 ? \"4px\" : 0 }}>\n {line.label && (\n <strong>\n {line.label}\n {separator}\n </strong>\n )}\n {line.value}\n </div>\n ))}\n </div>\n )\n }\n}\n\n/**\n * Type for tooltip prop that chart components accept\n */\nexport type TooltipProp =\n | boolean\n | ((data: Record<string, unknown>) => React.ReactNode)\n | ReturnType<typeof Tooltip>\n | ReturnType<typeof MultiLineTooltip>\n\n/**\n * Convert a tooltip prop to the format Semiotic expects\n */\nexport function normalizeTooltip(tooltip: TooltipProp): boolean | Function {\n if (tooltip === true) {\n // Enable default tooltip\n return true\n }\n\n if (typeof tooltip === \"function\") {\n // Already a tooltip function, use it as tooltipContent\n return tooltip\n }\n\n if (tooltip === false || tooltip === undefined) {\n // No tooltip\n return false\n }\n\n // Should not reach here but return the value as-is\n return tooltip\n}\n","import { useMemo } from \"react\"\nimport { createColorScale } from \"./colorUtils\"\nimport type { Accessor } from \"./types\"\n\n/**\n * Default fill color used when no colorBy is specified\n */\nexport const DEFAULT_COLOR = \"#007bff\"\n\n/**\n * Resolve an accessor (string key or function) into a function.\n * Used across chart components to normalize `valueAccessor`, `categoryAccessor`, etc.\n */\nexport function resolveAccessor<T = any>(\n accessor: string | ((d: Record<string, any>, i?: number) => T)\n): (d: Record<string, any>) => T {\n return typeof accessor === \"function\"\n ? accessor\n : (d: Record<string, any>) => d[accessor]\n}\n\n/**\n * Hook to create a color scale from data and colorBy configuration.\n * Returns undefined when colorBy is absent or is a function accessor.\n */\nexport function useColorScale(\n data: Array<Record<string, any>>,\n colorBy: Accessor<string> | undefined,\n colorScheme: string | string[] = \"category10\"\n): ((v: string) => string) | undefined {\n return useMemo(() => {\n if (!colorBy || typeof colorBy === \"function\") return undefined\n return createColorScale(data, colorBy as string, colorScheme)\n }, [data, colorBy, colorScheme])\n}\n\n/**\n * Hook to sort data by a value accessor.\n * Used by BarChart and DotPlot.\n */\nexport function useSortedData(\n data: Array<Record<string, any>>,\n sort: boolean | \"asc\" | \"desc\" | ((a: Record<string, any>, b: Record<string, any>) => number),\n valueAccessor: Accessor<number>\n): Array<Record<string, any>> {\n return useMemo(() => {\n if (!sort) return data\n const copy = [...data]\n if (typeof sort === \"function\") return copy.sort(sort)\n const getValue = resolveAccessor<number>(valueAccessor)\n return sort === \"asc\"\n ? copy.sort((a, b) => getValue(a) - getValue(b))\n : copy.sort((a, b) => getValue(b) - getValue(a))\n }, [data, sort, valueAccessor])\n}\n","\"use client\"\nimport * as React from \"react\"\n\nexport interface ChartErrorProps {\n /** Component name for the error message */\n componentName: string\n /** The error message to display */\n message: string\n /** Chart width */\n width: number\n /** Chart height */\n height: number\n}\n\n/**\n * Renders a visible, styled error state inside the chart's dimensions.\n * Shows the component name, error message, and a hint for developers.\n *\n * Designed to be obvious in development but not alarming in production —\n * uses muted colors that adapt to light/dark backgrounds.\n */\nexport default function ChartError({\n componentName,\n message,\n width,\n height,\n}: ChartErrorProps) {\n return (\n <div\n role=\"alert\"\n style={{\n width,\n height: Math.max(height, 120),\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n border: \"1px dashed rgba(128, 128, 128, 0.4)\",\n borderRadius: 8,\n background: \"rgba(128, 128, 128, 0.04)\",\n padding: 24,\n boxSizing: \"border-box\",\n }}\n >\n <div style={{ textAlign: \"center\", maxWidth: 400 }}>\n <div\n style={{\n fontSize: 13,\n fontWeight: 600,\n color: \"rgba(128, 128, 128, 0.7)\",\n marginBottom: 6,\n fontFamily: \"monospace\",\n }}\n >\n {componentName}\n </div>\n <div\n style={{\n fontSize: 14,\n color: \"rgba(128, 128, 128, 0.9)\",\n lineHeight: 1.5,\n }}\n >\n {message}\n </div>\n </div>\n </div>\n )\n}\n","/**\n * Validates chart data and accessors at render time.\n * Returns null if data is valid, or an error message string if not.\n *\n * Validation is intentionally lightweight — it checks the first data point\n * to catch common mistakes (wrong field names, missing data) without\n * iterating the entire dataset.\n */\n\ntype AccessorLike = string | ((...args: any[]) => any)\n\ninterface ArrayDataValidation {\n componentName: string\n data: any[] | undefined | null\n accessors?: Record<string, AccessorLike | undefined>\n requiredProps?: Record<string, any>\n}\n\ninterface ObjectDataValidation {\n componentName: string\n data: any | undefined | null\n dataLabel?: string\n}\n\ninterface NetworkDataValidation {\n componentName: string\n nodes?: any[] | undefined | null\n edges?: any[] | undefined | null\n nodesRequired?: boolean\n edgesRequired?: boolean\n accessors?: Record<string, AccessorLike | undefined>\n}\n\n/**\n * Validate array-based chart data (LineChart, BarChart, Scatterplot, etc.)\n */\nexport function validateArrayData({\n componentName,\n data,\n accessors,\n requiredProps,\n}: ArrayDataValidation): string | null {\n // Check required props first\n if (requiredProps) {\n for (const [name, value] of Object.entries(requiredProps)) {\n if (value === undefined || value === null) {\n return `${name} is required. Provide a field name or function.`\n }\n }\n }\n\n // Check data exists and is non-empty\n if (!data || !Array.isArray(data) || data.length === 0) {\n return \"No data provided. Pass a non-empty array to the data prop.\"\n }\n\n // Check accessors against the first data point\n if (accessors) {\n const sample = data[0]\n if (sample && typeof sample === \"object\") {\n for (const [label, accessor] of Object.entries(accessors)) {\n if (!accessor) continue\n if (typeof accessor === \"string\" && !(accessor in sample)) {\n return (\n `${label} \"${accessor}\" not found in data. ` +\n `Available fields: ${Object.keys(sample).join(\", \")}.`\n )\n }\n }\n }\n }\n\n return null\n}\n\n/**\n * Validate object/hierarchical data (TreeDiagram, Treemap, CirclePack)\n */\nexport function validateObjectData({\n componentName,\n data,\n dataLabel = \"data\",\n}: ObjectDataValidation): string | null {\n if (data === undefined || data === null) {\n return `No ${dataLabel} provided. Pass a hierarchical data object to the ${dataLabel} prop.`\n }\n return null\n}\n\n/**\n * Validate network data (ForceDirectedGraph, ChordDiagram, SankeyDiagram)\n */\nexport function validateNetworkData({\n componentName,\n nodes,\n edges,\n nodesRequired = false,\n edgesRequired = true,\n accessors,\n}: NetworkDataValidation): string | null {\n if (edgesRequired && (!edges || !Array.isArray(edges) || edges.length === 0)) {\n return \"No edges provided. Pass a non-empty array to the edges prop.\"\n }\n\n if (nodesRequired && (!nodes || !Array.isArray(nodes) || nodes.length === 0)) {\n return \"No nodes provided. Pass a non-empty array to the nodes prop.\"\n }\n\n // Check accessors against first data point\n if (accessors) {\n if (nodes && nodes.length > 0) {\n const sample = nodes[0]\n if (sample && typeof sample === \"object\") {\n for (const [label, accessor] of Object.entries(accessors)) {\n if (!accessor) continue\n if (typeof accessor === \"string\" && !(accessor in sample)) {\n return (\n `${label} \"${accessor}\" not found in node data. ` +\n `Available fields: ${Object.keys(sample).join(\", \")}.`\n )\n }\n }\n }\n }\n }\n\n return null\n}\n","\"use client\"\nimport * as React from \"react\"\nimport { useMemo } from \"react\"\nimport XYFrame from \"../../XYFrame\"\nimport type { XYFrameProps } from \"../../types/xyTypes\"\nimport { getColor, getSize } from \"../shared/colorUtils\"\nimport { createLegend } from \"../shared/legendUtils\"\nimport type { BaseChartProps, AxisConfig, ChartAccessor } from \"../shared/types\"\nimport { normalizeTooltip, type TooltipProp } from \"../../Tooltip/Tooltip\"\nimport { useColorScale, DEFAULT_COLOR } from \"../shared/hooks\"\nimport ChartError from \"../shared/ChartError\"\nimport { validateArrayData } from \"../shared/validateChartData\"\n\n/**\n * Scatterplot component props\n */\nexport interface ScatterplotProps<TDatum extends Record<string, any> = Record<string, any>> extends BaseChartProps, AxisConfig {\n /** Array of data points. Each point should have x and y properties. */\n data: TDatum[]\n /** Field name or function to access x values @default \"x\" */\n xAccessor?: ChartAccessor<TDatum, number>\n /** Field name or function to access y values @default \"y\" */\n yAccessor?: ChartAccessor<TDatum, number>\n /** Field name or function to determine point color */\n colorBy?: ChartAccessor<TDatum, string>\n /** Color scheme for categorical data or custom colors array @default \"category10\" */\n colorScheme?: string | string[]\n /** Field name or function to determine point size */\n sizeBy?: ChartAccessor<TDatum, number>\n /** Min and max radius for points @default [3, 15] */\n sizeRange?: [number, number]\n /** Default point radius when sizeBy is not specified @default 5 */\n pointRadius?: number\n /** Point opacity @default 0.8 */\n pointOpacity?: number\n /** Enable hover annotations @default true */\n enableHover?: boolean\n /** Show grid lines @default false */\n showGrid?: boolean\n /** Show legend @default true (when colorBy is specified) */\n showLegend?: boolean\n /** Tooltip configuration */\n tooltip?: TooltipProp\n /** Additional XYFrame props for advanced customization */\n frameProps?: Partial<Omit<XYFrameProps, \"points\" | \"size\">>\n}\n\n/**\n * Scatterplot - Visualize relationships between two continuous variables\n *\n * @example\n * ```tsx\n * <Scatterplot\n * data={[{x: 1, y: 10}, {x: 2, y: 20}]}\n * xLabel=\"Time\"\n * yLabel=\"Value\"\n * />\n * ```\n */\nexport function Scatterplot<TDatum extends Record<string, any> = Record<string, any>>(props: ScatterplotProps<TDatum>) {\n const {\n data,\n width = 600,\n height = 400,\n margin: userMargin,\n className,\n title,\n xLabel,\n yLabel,\n xFormat,\n yFormat,\n xAccessor = \"x\",\n yAccessor = \"y\",\n colorBy,\n colorScheme = \"category10\",\n sizeBy,\n sizeRange = [3, 15],\n pointRadius = 5,\n pointOpacity = 0.8,\n enableHover = true,\n showGrid = false,\n showLegend,\n tooltip,\n frameProps = {}\n } = props\n\n const safeData = data || []\n\n const colorScale = useColorScale(safeData, colorBy, colorScheme)\n\n const sizeDomain = useMemo(() => {\n if (!sizeBy || safeData.length === 0) return undefined\n const sizes = safeData.map((d) =>\n typeof sizeBy === \"function\" ? sizeBy(d) : d[sizeBy]\n )\n return [Math.min(...sizes), Math.max(...sizes)] as [number, number]\n }, [safeData, sizeBy])\n\n const pointStyle = useMemo(() => {\n return (d: Record<string, any>) => {\n const baseStyle: Record<string, string | number> = { fillOpacity: pointOpacity }\n baseStyle.fill = colorBy ? getColor(d, colorBy, colorScale) : DEFAULT_COLOR\n baseStyle.r = sizeBy\n ? getSize(d, sizeBy, sizeRange, sizeDomain)\n : pointRadius\n return baseStyle\n }\n }, [colorBy, colorScale, sizeBy, sizeRange, sizeDomain, pointRadius, pointOpacity])\n\n const axes = useMemo((): Array<Record<string, unknown>> => [\n {\n orient: \"left\",\n label: yLabel,\n tickFormat: yFormat,\n ...(showGrid && { tickLineGenerator: () => null })\n },\n {\n orient: \"bottom\",\n label: xLabel,\n tickFormat: xFormat,\n ...(showGrid && { tickLineGenerator: () => null })\n }\n ], [xLabel, yLabel, xFormat, yFormat, showGrid])\n\n const shouldShowLegend = showLegend !== undefined ? showLegend : !!colorBy\n\n const legend = useMemo(() => {\n if (!shouldShowLegend || !colorBy) return undefined\n return createLegend({ data: safeData, colorBy, colorScale, getColor })\n }, [shouldShowLegend, colorBy, safeData, colorScale])\n\n const margin = useMemo(() => {\n const finalMargin = { top: 50, bottom: 60, left: 70, right: 40, ...userMargin }\n if (legend && finalMargin.right < 120) finalMargin.right = 120\n return finalMargin\n }, [userMargin, legend])\n\n // Validate data (after all hooks)\n const error = validateArrayData({\n componentName: \"Scatterplot\",\n data: safeData,\n accessors: {\n xAccessor,\n yAccessor,\n },\n })\n if (error) return <ChartError componentName=\"Scatterplot\" message={error} width={width} height={height} />\n\n const xyFrameProps: XYFrameProps = {\n size: [width, height],\n points: safeData,\n xAccessor,\n yAccessor,\n pointStyle,\n axes: axes as any,\n hoverAnnotation: enableHover,\n margin,\n ...(legend && { legend }),\n ...(className && { className }),\n ...(title && { title }),\n ...(tooltip && { tooltipContent: normalizeTooltip(tooltip) as Function }),\n transition: true,\n ...frameProps\n }\n\n return <XYFrame {...xyFrameProps} />\n}\n","\"use client\"\nimport * as React from \"react\"\nimport { useMemo } from \"react\"\nimport {\n curveLinear,\n curveMonotoneX,\n curveMonotoneY,\n curveStep,\n curveStepAfter,\n curveStepBefore,\n curveBasis,\n curveCardinal,\n curveCatmullRom\n} from \"d3-shape\"\nimport XYFrame from \"../../XYFrame\"\nimport type { XYFrameProps } from \"../../types/xyTypes\"\nimport type { LineTypeSettings } from \"../../types/generalTypes\"\nimport { getColor } from \"../shared/colorUtils\"\nimport { useColorScale, DEFAULT_COLOR } from \"../shared/hooks\"\nimport { createLegend } from \"../shared/legendUtils\"\nimport type { BaseChartProps, AxisConfig, ChartAccessor } from \"../shared/types\"\nimport { normalizeTooltip, type TooltipProp } from \"../../Tooltip/Tooltip\"\nimport ChartError from \"../shared/ChartError\"\nimport { validateArrayData } from \"../shared/validateChartData\"\n\n/** Map of curve name strings to d3-shape curve functions */\nconst CURVE_MAP = {\n linear: curveLinear,\n monotoneX: curveMonotoneX,\n monotoneY: curveMonotoneY,\n step: curveStep,\n stepAfter: curveStepAfter,\n stepBefore: curveStepBefore,\n basis: curveBasis,\n cardinal: curveCardinal,\n catmullRom: curveCatmullRom\n} as const\n\n/**\n * LineChart component props\n */\nexport interface LineChartProps<TDatum extends Record<string, any> = Record<string, any>> extends BaseChartProps, AxisConfig {\n /**\n * Array of data points or array of line objects with coordinates.\n * @example\n * ```ts\n * // Simple format (single line)\n * [{x: 1, y: 10}, {x: 2, y: 20}]\n *\n * // Multiple lines with grouping\n * [{x: 1, y: 10, series: 'A'}, {x: 2, y: 20, series: 'A'}, {x: 1, y: 15, series: 'B'}]\n *\n * // Line objects format\n * [{label: 'Series A', coordinates: [{x: 1, y: 10}, {x: 2, y: 20}]}]\n * ```\n */\n data: TDatum[]\n\n /**\n * Field name or function to access x values\n * @default \"x\"\n */\n xAccessor?: ChartAccessor<TDatum, number>\n\n /**\n * Field name or function to access y values\n * @default \"y\"\n */\n yAccessor?: ChartAccessor<TDatum, number>\n\n /**\n * Field name or function to group data into multiple lines\n * @example\n * ```ts\n * lineBy=\"series\" // Group by series field\n * lineBy={d => d.category} // Use function\n * ```\n */\n lineBy?: ChartAccessor<TDatum, string>\n\n /**\n * Field name in line objects that contains coordinate arrays\n * Used when data is in line objects format\n * @default \"coordinates\"\n */\n lineDataAccessor?: string\n\n /**\n * Field name or function to determine line color\n * @example\n * ```ts\n * colorBy=\"series\"\n * colorBy={d => d.label}\n * ```\n */\n colorBy?: ChartAccessor<TDatum, string>\n\n /**\n * Color scheme for categorical data or custom colors array\n * @default \"category10\"\n */\n colorScheme?: string | string[]\n\n /**\n * Curve interpolation type\n * @default \"linear\"\n */\n curve?: \"linear\" | \"monotoneX\" | \"monotoneY\" | \"step\" | \"stepAfter\" | \"stepBefore\" | \"basis\" | \"cardinal\" | \"catmullRom\"\n\n /**\n * Show points on the line\n * @default false\n */\n showPoints?: boolean\n\n /**\n * Point radius when showPoints is true\n * @default 3\n */\n pointRadius?: number\n\n /**\n * Fill area under the line\n * @default false\n */\n fillArea?: boolean\n\n /**\n * Area opacity when fillArea is true\n * @default 0.3\n */\n areaOpacity?: number\n\n /**\n * Line stroke width\n * @default 2\n */\n lineWidth?: number\n\n /**\n * Enable hover annotations\n * @default true\n */\n enableHover?: boolean\n\n /**\n * Show grid lines\n * @default false\n */\n showGrid?: boolean\n\n /**\n * Show legend for multiple lines\n * @default true (when multiple lines)\n */\n showLegend?: boolean\n\n /**\n * Tooltip configuration\n */\n tooltip?: TooltipProp\n\n /**\n * Additional XYFrame props for advanced customization\n * For full control, consider using XYFrame directly\n * @see https://semiotic.nteract.io/guides/xy-frame\n */\n frameProps?: Partial<Omit<XYFrameProps, \"lines\" | \"size\">>\n}\n\n/**\n * LineChart - Visualize trends and time series data with lines\n *\n * A simplified wrapper around XYFrame for creating line charts. Perfect for\n * showing trends, comparisons, and temporal patterns in your data.\n *\n * @example\n * ```tsx\n * // Simple line chart\n * <LineChart\n * data={[\n * {x: 1, y: 10},\n * {x: 2, y: 20},\n * {x: 3, y: 15}\n * ]}\n * xLabel=\"Time\"\n * yLabel=\"Value\"\n * />\n * ```\n *\n * @example\n * ```tsx\n * // Multiple lines with grouping\n * <LineChart\n * data={[\n * {x: 1, y: 10, series: 'A'},\n * {x: 2, y: 20, series: 'A'},\n * {x: 1, y: 15, series: 'B'},\n * {x: 2, y: 25, series: 'B'}\n * ]}\n * lineBy=\"series\"\n * colorBy=\"series\"\n * xLabel=\"Time\"\n * yLabel=\"Value\"\n * />\n * ```\n *\n * @example\n * ```tsx\n * // Area chart with custom curve\n * <LineChart\n * data={data}\n * curve=\"monotoneX\"\n * fillArea={true}\n * areaOpacity={0.3}\n * showPoints={true}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // Advanced: Override XYFrame props\n * <LineChart\n * data={data}\n * frameProps={{\n * lineType: { type: \"line\", interpolator: d3.curveCardinal },\n * customLineMark: ({ d }) => <path stroke=\"red\" />\n * }}\n * />\n * ```\n *\n * @remarks\n * This component wraps {@link XYFrame} with sensible defaults for line charts.\n * For more advanced features like custom marks, annotations, or complex interactions,\n * use XYFrame directly.\n *\n * **Breadcrumb to advanced usage:**\n * - Use the `frameProps` prop to pass any XYFrame prop\n * - See XYFrame documentation: https://semiotic.nteract.io/guides/xy-frame\n * - All XYFrame props are available via `frameProps`\n *\n * @param props - LineChart configuration\n * @returns Rendered line chart\n */\nexport function LineChart<TDatum extends Record<string, any> = Record<string, any>>(props: LineChartProps<TDatum>) {\n const {\n data,\n width = 600,\n height = 400,\n margin: userMargin,\n className,\n title,\n xLabel,\n yLabel,\n xFormat,\n yFormat,\n xAccessor = \"x\",\n yAccessor = \"y\",\n lineBy,\n lineDataAccessor = \"coordinates\",\n colorBy,\n colorScheme = \"category10\",\n curve = \"linear\",\n showPoints = false,\n pointRadius = 3,\n fillArea = false,\n areaOpacity = 0.3,\n lineWidth = 2,\n enableHover = true,\n showGrid = false,\n showLegend,\n tooltip,\n frameProps = {}\n } = props\n\n const safeData = data || []\n\n // Check if data is in line objects format (has lineDataAccessor field)\n const isLineObjectFormat = safeData[0]?.[lineDataAccessor] !== undefined\n\n // Transform data to line format if needed\n const lineData = useMemo(() => {\n if (isLineObjectFormat) {\n // Data is already in line objects format\n return safeData\n }\n\n if (lineBy) {\n // Group data by lineBy field\n const grouped = safeData.reduce((acc, d) => {\n const key = typeof lineBy === \"function\" ? lineBy(d) : d[lineBy]\n if (!acc[key]) {\n const lineObj: Record<string, any> = { [lineDataAccessor]: [] }\n // Add the grouping field\n if (typeof lineBy === \"string\") {\n lineObj[lineBy] = key\n }\n acc[key] = lineObj\n }\n acc[key][lineDataAccessor].push(d)\n return acc\n }, {} as Record<string, Record<string, any>>)\n\n return Object.values(grouped)\n }\n\n // Single line - wrap in line object\n return [{ [lineDataAccessor]: safeData }]\n }, [safeData, lineBy, lineDataAccessor, isLineObjectFormat])\n\n // Create color scale if colorBy is specified\n const colorScale = useColorScale(safeData, colorBy, colorScheme)\n\n // Curve function from module-level map\n const curveFunction = CURVE_MAP[curve] || curveLinear\n\n // Line style function\n const lineStyle = useMemo(() => {\n return (d: Record<string, any>) => {\n const baseStyle: Record<string, string | number> = {\n strokeWidth: lineWidth\n }\n\n // Apply color\n if (colorBy) {\n baseStyle.stroke = getColor(d, colorBy, colorScale)\n } else {\n baseStyle.stroke = DEFAULT_COLOR\n }\n\n // Apply fill for area chart\n if (fillArea) {\n baseStyle.fill = baseStyle.stroke\n baseStyle.fillOpacity = areaOpacity\n }\n\n return baseStyle\n }\n }, [colorBy, colorScale, lineWidth, fillArea, areaOpacity])\n\n // Point style function (if showPoints is true)\n const pointStyle = useMemo(() => {\n if (!showPoints) return undefined\n\n return (d: Record<string, any>) => {\n const baseStyle: Record<string, string | number> = {\n r: pointRadius,\n fillOpacity: 1\n }\n\n // Match line color\n if (colorBy) {\n baseStyle.fill = getColor(d.parentLine || d, colorBy, colorScale)\n } else {\n baseStyle.fill = DEFAULT_COLOR\n }\n\n return baseStyle\n }\n }, [showPoints, pointRadius, colorBy, colorScale])\n\n // Build axes configuration\n const axes = useMemo(() => {\n const axesConfig: Array<Record<string, unknown>> = []\n\n // Y axis (left)\n axesConfig.push({\n orient: \"left\",\n label: yLabel,\n tickFormat: yFormat,\n ...(showGrid && { tickLineGenerator: () => null })\n })\n\n // X axis (bottom)\n axesConfig.push({\n orient: \"bottom\",\n label: xLabel,\n tickFormat: xFormat,\n ...(showGrid && { tickLineGenerator: () => null })\n })\n\n return axesConfig\n }, [xLabel, yLabel, xFormat, yFormat, showGrid])\n\n // Determine line type\n const lineType = useMemo(() => {\n const lineTypeConfig: LineTypeSettings = {\n type: fillArea ? \"area\" : \"line\",\n interpolator: curveFunction\n }\n\n if (fillArea) {\n lineTypeConfig.simpleLine = false\n }\n\n return lineTypeConfig\n }, [fillArea, curveFunction])\n\n // Determine if we should show legend\n const shouldShowLegend = showLegend !== undefined ? showLegend : lineData.length > 1\n\n // Build legend if needed\n const legend = useMemo(() => {\n if (!shouldShowLegend || !colorBy) return undefined\n\n return createLegend({\n data: lineData,\n colorBy,\n colorScale,\n getColor\n })\n }, [shouldShowLegend, colorBy, lineData, colorScale])\n\n // Adjust margin for legend if present\n const margin = useMemo(() => {\n const defaultMargin = { top: 50, bottom: 60, left: 70, right: 40 }\n const finalMargin = { ...defaultMargin, ...userMargin }\n\n // If legend is present and right margin is too small, increase it\n if (legend && finalMargin.right < 120) {\n finalMargin.right = 120\n }\n\n return finalMargin\n }, [userMargin, legend])\n\n // Validate data (after all hooks)\n const error = validateArrayData({\n componentName: \"LineChart\",\n data: safeData,\n accessors: {\n xAccessor,\n yAccessor,\n },\n })\n if (error) return <ChartError componentName=\"LineChart\" message={error} width={width} height={height} />\n\n // Build XYFrame props\n const xyFrameProps: XYFrameProps = {\n size: [width, height],\n lines: lineData,\n xAccessor,\n yAccessor,\n lineDataAccessor,\n lineType,\n lineStyle,\n axes: axes as any,\n hoverAnnotation: enableHover,\n margin,\n ...(showPoints && {\n showLinePoints: true,\n pointStyle\n }),\n ...(legend && { legend }),\n ...(className && { className }),\n ...(title && { title }),\n // Add tooltip support\n ...(tooltip && { tooltipContent: normalizeTooltip(tooltip) as Function }),\n // Allow frameProps to override defaults\n transition: true,\n ...frameProps\n }\n\n return <XYFrame {...xyFrameProps} />\n}\n","\"use client\"\nimport * as React from \"react\"\nimport { useMemo } from \"react\"\nimport {\n curveLinear,\n curveMonotoneX,\n curveMonotoneY,\n curveStep,\n curveStepAfter,\n curveStepBefore,\n curveBasis,\n curveCardinal,\n curveCatmullRom\n} from \"d3-shape\"\nimport XYFrame from \"../../XYFrame\"\nimport type { XYFrameProps } from \"../../types/xyTypes\"\nimport { getColor } from \"../shared/colorUtils\"\nimport { useColorScale, DEFAULT_COLOR } from \"../shared/hooks\"\nimport { createLegend } from \"../shared/legendUtils\"\nimport type { BaseChartProps, AxisConfig, ChartAccessor } from \"../shared/types\"\nimport { normalizeTooltip, type TooltipProp } from \"../../Tooltip/Tooltip\"\nimport ChartError from \"../shared/ChartError\"\nimport { validateArrayData } from \"../shared/validateChartData\"\n\n/** Map of curve name strings to d3-shape curve functions */\nconst CURVE_MAP = {\n linear: curveLinear,\n monotoneX: curveMonotoneX,\n monotoneY: curveMonotoneY,\n step: curveStep,\n stepAfter: curveStepAfter,\n stepBefore: curveStepBefore,\n basis: curveBasis,\n cardinal: curveCardinal,\n catmullRom: curveCatmullRom\n} as const\n\n/**\n * AreaChart component props\n */\nexport interface AreaChartProps<TDatum extends Record<string, any> = Record<string, any>> extends BaseChartProps, AxisConfig {\n /**\n * Array of data points, grouped by category.\n * @example\n * ```ts\n * // Multiple areas with grouping\n * [{x: 1, y: 10, category: 'A'}, {x: 2, y: 20, category: 'A'}, {x: 1, y: 15, category: 'B'}]\n * ```\n */\n data: TDatum[]\n\n /**\n * Field name or function to access x values\n * @default \"x\"\n */\n xAccessor?: ChartAccessor<TDatum, number>\n\n /**\n * Field name or function to access y values\n * @default \"y\"\n */\n yAccessor?: ChartAccessor<TDatum, number>\n\n /**\n * Field name or function to group data into multiple areas\n * @example\n * ```ts\n * areaBy=\"category\" // Group by category field\n * areaBy={d => d.group} // Use function\n * ```\n */\n areaBy?: ChartAccessor<TDatum, string>\n\n /**\n * Field name in area objects that contains coordinate arrays\n * Used when data is in area objects format\n * @default \"coordinates\"\n */\n lineDataAccessor?: string\n\n /**\n * Field name or function to determine area color\n * @example\n * ```ts\n * colorBy=\"category\"\n * colorBy={d => d.label}\n * ```\n */\n colorBy?: ChartAccessor<TDatum, string>\n\n /**\n * Color scheme for categorical data or custom colors array\n * @default \"category10\"\n */\n colorScheme?: string | string[]\n\n /**\n * Curve interpolation type\n * @default \"monotoneX\"\n */\n curve?: \"linear\" | \"monotoneX\" | \"monotoneY\" | \"step\" | \"stepAfter\" | \"stepBefore\" | \"basis\" | \"cardinal\" | \"catmullRom\"\n\n /**\n * Area opacity\n * @default 0.7\n */\n areaOpacity?: number\n\n /**\n * Show line on top of area\n * @default true\n */\n showLine?: boolean\n\n /**\n * Line stroke width when showLine is true\n * @default 2\n */\n lineWidth?: number\n\n /**\n * Enable hover annotations\n * @default true\n */\n enableHover?: boolean\n\n /**\n * Show grid lines\n * @default false\n */\n showGrid?: boolean\n\n /**\n * Show legend for multiple areas\n * @default true (when multiple areas)\n */\n showLegend?: boolean\n\n /**\n * Tooltip configuration\n */\n tooltip?: TooltipProp\n\n /**\n * Additional XYFrame props for advanced customization\n * For full control, consider using XYFrame directly\n * @see https://semiotic.nteract.io/guides/xy-frame\n */\n frameProps?: Partial<Omit<XYFrameProps, \"lines\" | \"size\">>\n}\n\n/**\n * AreaChart - Visualize quantities over continuous intervals with overlapping filled areas\n *\n * Each series fills from its line down to the baseline. Multiple series overlap\n * with transparency so all shapes remain visible.\n *\n * For stacked areas use {@link StackedAreaChart}.\n *\n * @example\n * ```tsx\n * <AreaChart\n * data={[\n * {x: 1, y: 10, category: 'A'},\n * {x: 2, y: 20, category: 'A'},\n * {x: 1, y: 15, category: 'B'},\n * {x: 2, y: 25, category: 'B'}\n * ]}\n * areaBy=\"category\"\n * colorBy=\"category\"\n * xLabel=\"Time\"\n * yLabel=\"Value\"\n * />\n * ```\n */\nexport function AreaChart<TDatum extends Record<string, any> = Record<string, any>>(props: AreaChartProps<TDatum>) {\n const {\n data,\n width = 600,\n height = 400,\n margin: userMargin,\n className,\n title,\n xLabel,\n yLabel,\n xFormat,\n yFormat,\n xAccessor = \"x\",\n yAccessor = \"y\",\n areaBy,\n lineDataAccessor = \"coordinates\",\n colorBy,\n colorScheme = \"category10\",\n curve = \"monotoneX\",\n areaOpacity = 0.7,\n showLine = true,\n lineWidth = 2,\n enableHover = true,\n showGrid = false,\n showLegend,\n tooltip,\n frameProps = {}\n } = props\n\n const safeData = data || []\n\n // Check if data is in area objects format (has lineDataAccessor field)\n const isAreaObjectFormat = safeData[0]?.[lineDataAccessor] !== undefined\n\n // Transform data to line/area format if needed\n const areaData = useMemo(() => {\n if (isAreaObjectFormat) {\n // Data is already in area objects format\n return safeData\n }\n\n if (areaBy) {\n // Group data by areaBy field\n const grouped = safeData.reduce((acc, d) => {\n const key = typeof areaBy === \"function\" ? areaBy(d) : d[areaBy]\n if (!acc[key]) {\n const areaObj: Record<string, any> = { [lineDataAccessor]: [] }\n // Add the grouping field\n if (typeof areaBy === \"string\") {\n areaObj[areaBy] = key\n }\n acc[key] = areaObj\n }\n acc[key][lineDataAccessor].push(d)\n return acc\n }, {} as Record<string, Record<string, any>>)\n\n return Object.values(grouped)\n }\n\n // Single area - wrap in area object\n return [{ [lineDataAccessor]: safeData }]\n }, [safeData, areaBy, lineDataAccessor, isAreaObjectFormat])\n\n // Create color scale if colorBy is specified\n const colorScale = useColorScale(safeData, colorBy, colorScheme)\n\n // Curve function from module-level map\n const curveFunction = CURVE_MAP[curve] || curveMonotoneX\n\n // Area/line style function\n const lineStyle = useMemo(() => {\n return (d: Record<string, any>) => {\n const baseStyle: Record<string, string | number> = {}\n\n // Apply color\n const color = colorBy ? getColor(d, colorBy, colorScale) : DEFAULT_COLOR\n\n baseStyle.fill = color\n baseStyle.fillOpacity = areaOpacity\n\n if (showLine) {\n baseStyle.stroke = color\n baseStyle.strokeWidth = lineWidth\n } else {\n baseStyle.stroke = \"none\"\n }\n\n return baseStyle\n }\n }, [colorBy, colorScale, areaOpacity, showLine, lineWidth])\n\n // Build axes configuration\n const axes = useMemo(() => {\n const axesConfig: Array<Record<string, unknown>> = []\n\n // Y axis (left)\n axesConfig.push({\n orient: \"left\",\n label: yLabel,\n tickFormat: yFormat,\n ...(showGrid && { tickLineGenerator: () => null })\n })\n\n // X axis (bottom)\n axesConfig.push({\n orient: \"bottom\",\n label: xLabel,\n tickFormat: xFormat,\n ...(showGrid && { tickLineGenerator: () => null })\n })\n\n return axesConfig\n }, [xLabel, yLabel, xFormat, yFormat, showGrid])\n\n // Determine line type — always overlapping areas\n const lineType = useMemo(() => ({\n type: \"area\" as const,\n interpolator: curveFunction\n }), [curveFunction])\n\n // Determine if we should show legend\n const shouldShowLegend = showLegend !== undefined ? showLegend : areaData.length > 1\n\n // Build legend if needed\n const legend = useMemo(() => {\n if (!shouldShowLegend || !colorBy) return undefined\n\n return createLegend({\n data: areaData,\n colorBy,\n colorScale,\n getColor\n })\n }, [shouldShowLegend, colorBy, areaData, colorScale])\n\n // Adjust margin for legend if present\n const margin = useMemo(() => {\n const defaultMargin = { top: 50, bottom: 60, left: 70, right: 40 }\n const finalMargin = { ...defaultMargin, ...userMargin }\n\n // If legend is present and right margin is too small, increase it\n if (legend && finalMargin.right < 120) {\n finalMargin.right = 120\n }\n\n return finalMargin\n }, [userMargin, legend])\n\n // Validate data (after all hooks)\n const error = validateArrayData({\n componentName: \"AreaChart\",\n data: safeData,\n accessors: {\n xAccessor,\n yAccessor,\n },\n })\n if (error) return <ChartError componentName=\"AreaChart\" message={error} width={width} height={height} />\n\n // Build XYFrame props\n const xyFrameProps: XYFrameProps = {\n size: [width, height],\n lines: areaData,\n xAccessor,\n yAccessor,\n lineDataAccessor,\n lineType,\n lineStyle,\n axes: axes as any,\n hoverAnnotation: enableHover,\n margin,\n ...(legend && { legend }),\n ...(className && { className }),\n ...(title && { title }),\n // Add tooltip support\n ...(tooltip && { tooltipContent: normalizeTooltip(tooltip) as Function }),\n // Allow frameProps to override defaults\n transition: true,\n ...frameProps\n }\n\n return <XYFrame {...xyFrameProps} />\n}\n","\"use client\"\nimport * as React from \"react\"\nimport { useMemo } from \"react\"\nimport {\n curveLinear,\n curveMonotoneX,\n curveMonotoneY,\n curveStep,\n curveStepAfter,\n curveStepBefore,\n curveBasis,\n curveCardinal,\n curveCatmullRom\n} from \"d3-shape\"\nimport XYFrame from \"../../XYFrame\"\nimport type { XYFrameProps } from \"../../types/xyTypes\"\nimport type { LineTypeSettings } from \"../../types/generalTypes\"\nimport { getColor } from \"../shared/colorUtils\"\nimport { useColorScale, DEFAULT_COLOR } from \"../shared/hooks\"\nimport { createLegend } from \"../shared/legendUtils\"\nimport type { BaseChartProps, AxisConfig, ChartAccessor } from \"../shared/types\"\nimport { normalizeTooltip, type TooltipProp } from \"../../Tooltip/Tooltip\"\nimport ChartError from \"../shared/ChartError\"\nimport { validateArrayData } from \"../shared/validateChartData\"\n\n/** Map of curve name strings to d3-shape curve functions */\nconst CURVE_MAP = {\n linear: curveLinear,\n monotoneX: curveMonotoneX,\n monotoneY: curveMonotoneY,\n step: curveStep,\n stepAfter: curveStepAfter,\n stepBefore: curveStepBefore,\n basis: curveBasis,\n cardinal: curveCardinal,\n catmullRom: curveCatmullRom\n} as const\n\n/**\n * StackedAreaChart component props\n */\nexport interface StackedAreaChartProps<TDatum extends Record<string, any> = Record<string, any>> extends BaseChartProps, AxisConfig {\n /**\n * Array of data points, grouped by category.\n * @example\n * ```ts\n * [{x: 1, y: 10, category: 'A'}, {x: 2, y: 20, category: 'A'}, {x: 1, y: 15, category: 'B'}]\n * ```\n */\n data: TDatum[]\n\n /**\n * Field name or function to access x values\n * @default \"x\"\n */\n xAccessor?: ChartAccessor<TDatum, number>\n\n /**\n * Field name or function to access y values\n * @default \"y\"\n */\n yAccessor?: ChartAccessor<TDatum, number>\n\n /**\n * Field name or function to group data into multiple areas\n * @example\n * ```ts\n * areaBy=\"category\" // Group by category field\n * areaBy={d => d.group} // Use function\n * ```\n */\n areaBy?: ChartAccessor<TDatum, string>\n\n /**\n * Field name in area objects that contains coordinate arrays\n * Used when data is in area objects format\n * @default \"coordinates\"\n */\n lineDataAccessor?: string\n\n /**\n * Field name or function to determine area color\n * @example\n * ```ts\n * colorBy=\"category\"\n * colorBy={d => d.label}\n * ```\n */\n colorBy?: ChartAccessor<TDatum, string>\n\n /**\n * Color scheme for categorical data or custom colors array\n * @default \"category10\"\n */\n colorScheme?: string | string[]\n\n /**\n * Curve interpolation type\n * @default \"monotoneX\"\n */\n curve?: \"linear\" | \"monotoneX\" | \"monotoneY\" | \"step\" | \"stepAfter\" | \"stepBefore\" | \"basis\" | \"cardinal\" | \"catmullRom\"\n\n /**\n * Area opacity\n * @default 0.7\n */\n areaOpacity?: number\n\n /**\n * Show line on top of area\n * @default true\n */\n showLine?: boolean\n\n /**\n * Line stroke width when showLine is true\n * @default 2\n */\n lineWidth?: number\n\n /**\n * Normalize to 100% stacked (proportional)\n * @default false\n */\n normalize?: boolean\n\n /**\n * Enable hover annotations\n * @default true\n */\n enableHover?: boolean\n\n /**\n * Show grid lines\n * @default false\n */\n showGrid?: boolean\n\n /**\n * Show legend for multiple areas\n * @default true (when multiple areas)\n */\n showLegend?: boolean\n\n /**\n * Tooltip configuration\n */\n tooltip?: TooltipProp\n\n /**\n * Additional XYFrame props for advanced customization\n * For full control, consider using XYFrame directly\n * @see https://semiotic.nteract.io/guides/xy-frame\n */\n frameProps?: Partial<Omit<XYFrameProps, \"lines\" | \"size\">>\n}\n\n/**\n * StackedAreaChart - Visualize quantities stacked on top of each other over continuous intervals\n *\n * Each series is stacked so that the total height represents the sum of all series.\n * Use `normalize` for 100% stacked (proportional) areas.\n *\n * For overlapping (non-stacked) areas use {@link AreaChart}.\n *\n * @example\n * ```tsx\n * <StackedAreaChart\n * data={[\n * {x: 1, y: 10, category: 'A'},\n * {x: 2, y: 20, category: 'A'},\n * {x: 1, y: 15, category: 'B'},\n * {x: 2, y: 25, category: 'B'}\n * ]}\n * areaBy=\"category\"\n * colorBy=\"category\"\n * xLabel=\"Time\"\n * yLabel=\"Value\"\n * />\n * ```\n */\nexport function StackedAreaChart<TDatum extends Record<string, any> = Record<string, any>>(props: StackedAreaChartProps<TDatum>) {\n const {\n data,\n width = 600,\n height = 400,\n margin: userMargin,\n className,\n title,\n xLabel,\n yLabel,\n xFormat,\n yFormat,\n xAccessor = \"x\",\n yAccessor = \"y\",\n areaBy,\n lineDataAccessor = \"coordinates\",\n colorBy,\n colorScheme = \"category10\",\n curve = \"monotoneX\",\n areaOpacity = 0.7,\n showLine = true,\n lineWidth = 2,\n normalize = false,\n enableHover = true,\n showGrid = false,\n showLegend,\n tooltip,\n frameProps = {}\n } = props\n\n const safeData = data || []\n\n // Check if data is in area objects format (has lineDataAccessor field)\n const isAreaObjectFormat = safeData[0]?.[lineDataAccessor] !== undefined\n\n // Transform data to line/area format if needed\n const areaData = useMemo(() => {\n if (isAreaObjectFormat) {\n // Data is already in area objects format\n return safeData\n }\n\n if (areaBy) {\n // Group data by areaBy field\n const grouped = safeData.reduce((acc, d) => {\n const key = typeof areaBy === \"function\" ? areaBy(d) : d[areaBy]\n if (!acc[key]) {\n const areaObj: Record<string, any> = { [lineDataAccessor]: [] }\n // Add the grouping field\n if (typeof areaBy === \"string\") {\n areaObj[areaBy] = key\n }\n acc[key] = areaObj\n }\n acc[key][lineDataAccessor].push(d)\n return acc\n }, {} as Record<string, Record<string, any>>)\n\n return Object.values(grouped)\n }\n\n // Single area - wrap in area object\n return [{ [lineDataAccessor]: safeData }]\n }, [safeData, areaBy, lineDataAccessor, isAreaObjectFormat])\n\n // Create color scale if colorBy is specified\n const colorScale = useColorScale(safeData, colorBy, colorScheme)\n\n // Curve function from module-level map\n const curveFunction = CURVE_MAP[curve] || curveMonotoneX\n\n // Area/line style function\n const lineStyle = useMemo(() => {\n return (d: Record<string, any>) => {\n const baseStyle: Record<string, string | number> = {}\n\n // Apply color\n const color = colorBy ? getColor(d, colorBy, colorScale) : DEFAULT_COLOR\n\n baseStyle.fill = color\n baseStyle.fillOpacity = areaOpacity\n\n if (showLine) {\n baseStyle.stroke = color\n baseStyle.strokeWidth = lineWidth\n } else {\n baseStyle.stroke = \"none\"\n }\n\n return baseStyle\n }\n }, [colorBy, colorScale, areaOpacity, showLine, lineWidth])\n\n // Build axes configuration\n const axes = useMemo(() => {\n const axesConfig: Array<Record<string, unknown>> = []\n\n // Y axis (left)\n axesConfig.push({\n orient: \"left\",\n label: yLabel,\n tickFormat: yFormat,\n ...(showGrid && { tickLineGenerator: () => null })\n })\n\n // X axis (bottom)\n axesConfig.push({\n orient: \"bottom\",\n label: xLabel,\n tickFormat: xFormat,\n ...(showGrid && { tickLineGenerator: () => null })\n })\n\n return axesConfig\n }, [xLabel, yLabel, xFormat, yFormat, showGrid])\n\n // Stacked area line type\n const lineType = useMemo(() => ({\n type: normalize ? \"stackedpercent-area\" : \"stackedarea\",\n interpolator: curveFunction\n } as LineTypeSettings), [curveFunction, normalize])\n\n // Determine if we should show legend\n const shouldShowLegend = showLegend !== undefined ? showLegend : areaData.length > 1\n\n // Build legend if needed\n const legend = useMemo(() => {\n if (!shouldShowLegend || !colorBy) return undefined\n\n return createLegend({\n data: areaData,\n colorBy,\n colorScale,\n getColor\n })\n }, [shouldShowLegend, colorBy, areaData, colorScale])\n\n // Adjust margin for legend if present\n const margin = useMemo(() => {\n const defaultMargin = { top: 50, bottom: 60, left: 70, right: 40 }\n const finalMargin = { ...defaultMargin, ...userMargin }\n\n // If legend is present and right margin is too small, increase it\n if (legend && finalMargin.right < 120) {\n finalMargin.right = 120\n }\n\n return finalMargin\n }, [userMargin, legend])\n\n // Validate data (after all hooks)\n const error = validateArrayData({\n componentName: \"StackedAreaChart\",\n data: safeData,\n accessors: {\n xAccessor,\n yAccessor,\n },\n })\n if (error) return <ChartError componentName=\"StackedAreaChart\" message={error} width={width} height={height} />\n\n // Build XYFrame props\n const xyFrameProps: XYFrameProps = {\n size: [width, height],\n lines: areaData,\n xAccessor,\n yAccessor,\n lineDataAccessor,\n lineType,\n lineStyle,\n axes: axes as any,\n hoverAnnotation: enableHover,\n margin,\n ...(legend && { legend }),\n ...(className && { className }),\n ...(title && { title }),\n // Add tooltip support\n ...(tooltip && { tooltipContent: normalizeTooltip(tooltip) as Function }),\n // Allow frameProps to override defaults\n transition: true,\n ...frameProps\n }\n\n return <XYFrame {...xyFrameProps} />\n}\n","\"use client\"\nimport * as React from \"react\"\nimport { useMemo } from \"react\"\nimport { scaleSequential } from \"d3-scale\"\nimport { interpolateBlues, interpolateReds, interpolateGreens, interpolateViridis } from \"d3-scale-chromatic\"\nimport XYFrame from \"../../XYFrame\"\nimport type { XYFrameProps } from \"../../types/xyTypes\"\nimport { DEFAULT_COLOR, resolveAccessor } from \"../shared/hooks\"\nimport type { BaseChartProps, ChartAccessor } from \"../shared/types\"\nimport { normalizeTooltip, type TooltipProp } from \"../../Tooltip/Tooltip\"\nimport ChartError from \"../shared/ChartError\"\nimport { validateArrayData } from \"../shared/validateChartData\"\n\n/**\n * Heatmap component props\n */\nexport interface HeatmapProps<TDatum extends Record<string, any> = Record<string, any>> extends BaseChartProps {\n /**\n * Array of data points with x, y, and value properties.\n * @example\n * ```ts\n * [{x: 1, y: 1, value: 10}, {x: 1, y: 2, value: 20}, {x: 2, y: 1, value: 15}]\n * ```\n */\n data: TDatum[]\n\n /**\n * Field name or function to access x values\n * @default \"x\"\n */\n xAccessor?: ChartAccessor<TDatum, number>\n\n /**\n * Field name or function to access y values\n * @default \"y\"\n */\n yAccessor?: ChartAccessor<TDatum, number>\n\n /**\n * Field name or function to access cell values\n * @default \"value\"\n */\n valueAccessor?: ChartAccessor<TDatum, number>\n\n /**\n * Label for the x-axis\n */\n xLabel?: string\n\n /**\n * Label for the y-axis\n */\n yLabel?: string\n\n /**\n * Format function for x-axis tick labels\n */\n xFormat?: (d: any) => string\n\n /**\n * Format function for y-axis tick labels\n */\n yFormat?: (d: any) => string\n\n /**\n * Color scheme for the heatmap\n * @default \"blues\"\n */\n colorScheme?: \"blues\" | \"reds\" | \"greens\" | \"viridis\" | \"custom\"\n\n /**\n * Custom color scale (used when colorScheme is \"custom\")\n * @example\n * ```ts\n * customColorScale={scaleSequential(interpolatePlasma).domain([0, 100])}\n * ```\n */\n customColorScale?: any\n\n /**\n * Show values in cells\n * @default false\n */\n showValues?: boolean\n\n /**\n * Format function for cell value labels\n */\n valueFormat?: (d: number) => string\n\n /**\n * Cell border color\n * @default \"#fff\"\n */\n cellBorderColor?: string\n\n /**\n * Cell border width\n * @default 1\n */\n cellBorderWidth?: number\n\n /**\n * Enable hover annotations\n * @default true\n */\n enableHover?: boolean\n\n /**\n * Tooltip configuration\n */\n tooltip?: TooltipProp\n\n /**\n * Additional XYFrame props for advanced customization\n * For full control, consider using XYFrame directly\n * @see https://semiotic.nteract.io/guides/xy-frame\n */\n frameProps?: Partial<Omit<XYFrameProps, \"summaries\" | \"size\">>\n}\n\n/**\n * Heatmap - Visualize matrix data with color-encoded cells\n *\n * A simplified wrapper around XYFrame for creating heatmaps. Perfect for\n * showing patterns, correlations, and distributions in 2D data.\n *\n * @example\n * ```tsx\n * // Simple heatmap\n * <Heatmap\n * data={[\n * {x: 1, y: 1, value: 10},\n * {x: 1, y: 2, value: 20},\n * {x: 2, y: 1, value: 15},\n * {x: 2, y: 2, value: 25}\n * ]}\n * xLabel=\"Time\"\n * yLabel=\"Category\"\n * />\n * ```\n *\n * @example\n * ```tsx\n * // With custom color scheme and value labels\n * <Heatmap\n * data={data}\n * colorScheme=\"viridis\"\n * showValues={true}\n * valueFormat={d => d.toFixed(1)}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // Advanced: Custom color scale\n * <Heatmap\n * data={data}\n * colorScheme=\"custom\"\n * customColorScale={\n * scaleSequential(interpolatePlasma).domain([0, 100])\n * }\n * />\n * ```\n *\n * @remarks\n * This component wraps {@link XYFrame} with sensible defaults for heatmaps.\n * For more advanced features like hexbins, contours, or custom summaries,\n * use XYFrame directly.\n *\n * **Breadcrumb to advanced usage:**\n * - Use the `frameProps` prop to pass any XYFrame prop\n * - See XYFrame documentation: https://semiotic.nteract.io/guides/xy-frame\n * - All XYFrame props are available via `frameProps`\n *\n * @param props - Heatmap configuration\n * @returns Rendered heatmap\n */\nexport function Heatmap<TDatum extends Record<string, any> = Record<string, any>>(props: HeatmapProps<TDatum>) {\n const {\n data,\n width = 600,\n height = 400,\n margin = { top: 50, bottom: 60, left: 70, right: 80 },\n className,\n title,\n xAccessor = \"x\",\n yAccessor = \"y\",\n valueAccessor = \"value\",\n xLabel,\n yLabel,\n xFormat,\n yFormat,\n colorScheme = \"blues\",\n customColorScale,\n showValues = false,\n valueFormat,\n cellBorderColor = \"#fff\",\n cellBorderWidth = 1,\n enableHover = true,\n tooltip,\n frameProps = {}\n } = props\n\n const safeData = data || []\n\n // Get value accessor function\n const getValueFn = useMemo(() => {\n return typeof valueAccessor === \"function\"\n ? (d: Record<string, any>) => valueAccessor(d as TDatum)\n : (d: Record<string, any>) => d[valueAccessor]\n }, [valueAccessor])\n\n // Calculate value domain\n const valueDomain = useMemo(() => {\n const values = safeData.map(getValueFn)\n return [Math.min(...values), Math.max(...values)] as [number, number]\n }, [safeData, getValueFn])\n\n // Create color scale\n const colorScale = useMemo(() => {\n if (colorScheme === \"custom\" && customColorScale) {\n return customColorScale\n }\n\n const interpolators = {\n blues: interpolateBlues,\n reds: interpolateReds,\n greens: interpolateGreens,\n viridis: interpolateViridis\n }\n\n const interpolator = interpolators[colorScheme] || interpolateBlues\n\n return scaleSequential(interpolator).domain(valueDomain)\n }, [colorScheme, customColorScale, valueDomain])\n\n // Get unique x and y values for bin sizing\n const { xBinCount, yBinCount } = useMemo(() => {\n const getX = resolveAccessor(xAccessor)\n const getY = resolveAccessor(yAccessor)\n\n return {\n xBinCount: new Set(safeData.map(getX)).size,\n yBinCount: new Set(safeData.map(getY)).size\n }\n }, [safeData, xAccessor, yAccessor])\n\n // Transform data to summary format for XYFrame\n const summaryData = useMemo(() => {\n return { coordinates: safeData }\n }, [safeData])\n\n // Summary style function\n const summaryStyle = useMemo(() => {\n return (d: Record<string, any>) => {\n const value = getValueFn(d)\n return {\n fill: colorScale(value),\n stroke: cellBorderColor,\n strokeWidth: cellBorderWidth\n }\n }\n }, [getValueFn, colorScale, cellBorderColor, cellBorderWidth])\n\n // Summary render function (for value labels)\n const summaryRenderMode = useMemo(() => {\n if (!showValues) return undefined\n\n const midpoint = (valueDomain[0] + valueDomain[1]) / 2\n\n return (d: Record<string, any>, i: number) => {\n const value = getValueFn(d)\n const displayValue = valueFormat ? valueFormat(value) : String(value)\n\n return (\n <text\n textAnchor=\"middle\"\n dominantBaseline=\"middle\"\n fill={getValueFn(d) > midpoint ? \"#fff\" : \"#000\"}\n fontSize=\"12px\"\n >\n {displayValue}\n </text>\n )\n }\n }, [showValues, getValueFn, valueFormat, valueDomain])\n\n // Build axes configuration\n const axes = useMemo(() => {\n const axesConfig: Array<Record<string, unknown>> = []\n\n // Y axis (left)\n axesConfig.push({\n orient: \"left\",\n label: yLabel,\n tickFormat: yFormat\n })\n\n // X axis (bottom)\n axesConfig.push({\n orient: \"bottom\",\n label: xLabel,\n tickFormat: xFormat\n })\n\n return axesConfig\n }, [xLabel, yLabel, xFormat, yFormat])\n\n // Validate data (after all hooks)\n const error = validateArrayData({\n componentName: \"Heatmap\",\n data: safeData,\n accessors: {\n xAccessor,\n yAccessor,\n valueAccessor,\n },\n })\n if (error) return <ChartError componentName=\"Heatmap\" message={error} width={width} height={height} />\n\n // Build XYFrame props\n const xyFrameProps: XYFrameProps = {\n size: [width, height],\n summaries: summaryData,\n xAccessor,\n yAccessor,\n summaryType: {\n type: \"heatmap\",\n xBins: xBinCount,\n yBins: yBinCount,\n binValue: (items: Array<Record<string, any>>) => {\n if (items.length === 0) return 0\n const sum = items.reduce((acc, item) => acc + getValueFn(item), 0)\n return sum / items.length\n }\n },\n summaryStyle,\n axes: axes as any,\n hoverAnnotation: enableHover,\n margin,\n ...(summaryRenderMode && { summaryRenderMode }),\n ...(className && { className }),\n ...(title && { title }),\n // Add tooltip support\n ...(tooltip && { tooltipContent: normalizeTooltip(tooltip) as Function }),\n // Allow frameProps to override defaults\n transition: true,\n ...frameProps\n }\n\n return <XYFrame {...xyFrameProps} />\n}\n","\"use client\"\nimport * as React from \"react\"\nimport { useMemo } from \"react\"\nimport XYFrame from \"../../XYFrame\"\nimport type { XYFrameProps } from \"../../types/xyTypes\"\nimport { getColor, getSize } from \"../shared/colorUtils\"\nimport { useColorScale, DEFAULT_COLOR } from \"../shared/hooks\"\nimport { createLegend } from \"../shared/legendUtils\"\nimport type { BaseChartProps, AxisConfig, ChartAccessor } from \"../shared/types\"\nimport { normalizeTooltip, type TooltipProp } from \"../../Tooltip/Tooltip\"\nimport ChartError from \"../shared/ChartError\"\nimport { validateArrayData } from \"../shared/validateChartData\"\n\n/**\n * BubbleChart component props\n */\nexport interface BubbleChartProps<TDatum extends Record<string, any> = Record<string, any>> extends BaseChartProps, AxisConfig {\n /**\n * Array of data points. Each point should have x, y, and size properties.\n * @example\n * ```ts\n * [{x: 1, y: 10, size: 50, category: 'A'}, {x: 2, y: 20, size: 30, category: 'B'}]\n * ```\n */\n data: TDatum[]\n\n /**\n * Field name or function to access x values\n * @default \"x\"\n */\n xAccessor?: ChartAccessor<TDatum, number>\n\n /**\n * Field name or function to access y values\n * @default \"y\"\n */\n yAccessor?: ChartAccessor<TDatum, number>\n\n /**\n * Field name or function to determine bubble size (required)\n * @example\n * ```ts\n * sizeBy=\"population\"\n * sizeBy={d => Math.sqrt(d.value)}\n * ```\n */\n sizeBy: ChartAccessor<TDatum, number>\n\n /**\n * Min and max radius for bubbles\n * @default [5, 40]\n */\n sizeRange?: [number, number]\n\n /**\n * Field name or function to determine bubble color\n * @example\n * ```ts\n * colorBy=\"category\"\n * colorBy={d => d.value > 10 ? 'red' : 'blue'}\n * ```\n */\n colorBy?: ChartAccessor<TDatum, string>\n\n /**\n * Color scheme for categorical data or custom colors array\n * @default \"category10\"\n */\n colorScheme?: string | string[]\n\n /**\n * Bubble opacity\n * @default 0.6\n */\n bubbleOpacity?: number\n\n /**\n * Bubble stroke width\n * @default 1\n */\n bubbleStrokeWidth?: number\n\n /**\n * Bubble stroke color\n * @default \"white\"\n */\n bubbleStrokeColor?: string\n\n /**\n * Enable hover annotations\n * @default true\n */\n enableHover?: boolean\n\n /**\n * Show grid lines\n * @default false\n */\n showGrid?: boolean\n\n /**\n * Show legend\n * @default true (when colorBy is specified)\n */\n showLegend?: boolean\n\n /**\n * Tooltip configuration\n */\n tooltip?: TooltipProp\n\n /**\n * Additional XYFrame props for advanced customization\n * For full control, consider using XYFrame directly\n * @see https://semiotic.nteract.io/guides/xy-frame\n */\n frameProps?: Partial<Omit<XYFrameProps, \"points\" | \"size\">>\n}\n\n/**\n * BubbleChart - Visualize three dimensions of data using x, y, and size\n *\n * A simplified wrapper around XYFrame for creating bubble charts. Perfect for\n * showing relationships between three continuous variables or comparing\n * magnitudes across categories.\n *\n * @example\n * ```tsx\n * // Simple bubble chart\n * <BubbleChart\n * data={[\n * {x: 1, y: 10, size: 50, name: 'A'},\n * {x: 2, y: 20, size: 30, name: 'B'},\n * {x: 3, y: 15, size: 70, name: 'C'}\n * ]}\n * sizeBy=\"size\"\n * xLabel=\"Time\"\n * yLabel=\"Value\"\n * />\n * ```\n *\n * @example\n * ```tsx\n * // With color encoding\n * <BubbleChart\n * data={data}\n * sizeBy=\"population\"\n * colorBy=\"continent\"\n * sizeRange={[5, 50]}\n * bubbleOpacity={0.7}\n * xLabel=\"GDP per Capita\"\n * yLabel=\"Life Expectancy\"\n * />\n * ```\n *\n * @example\n * ```tsx\n * // Advanced: Override XYFrame props\n * <BubbleChart\n * data={data}\n * sizeBy=\"value\"\n * frameProps={{\n * customPointMark: ({ d }) => <circle r={d.r} fill=\"gold\" />\n * }}\n * />\n * ```\n *\n * @remarks\n * This component wraps {@link XYFrame} with sensible defaults for bubble charts.\n * For more advanced features like custom marks, annotations, or complex interactions,\n * use XYFrame directly.\n *\n * **Breadcrumb to advanced usage:**\n * - Use the `frameProps` prop to pass any XYFrame prop\n * - See XYFrame documentation: https://semiotic.nteract.io/guides/xy-frame\n * - All XYFrame props are available via `frameProps`\n *\n * @param props - BubbleChart configuration\n * @returns Rendered bubble chart\n */\nexport function BubbleChart<TDatum extends Record<string, any> = Record<string, any>>(props: BubbleChartProps<TDatum>) {\n const {\n data,\n width = 600,\n height = 400,\n margin: userMargin,\n className,\n title,\n xLabel,\n yLabel,\n xFormat,\n yFormat,\n xAccessor = \"x\",\n yAccessor = \"y\",\n sizeBy,\n sizeRange = [5, 40],\n colorBy,\n colorScheme = \"category10\",\n bubbleOpacity = 0.6,\n bubbleStrokeWidth = 1,\n bubbleStrokeColor = \"white\",\n enableHover = true,\n showGrid = false,\n showLegend,\n tooltip,\n frameProps = {}\n } = props\n\n const safeData = data || []\n\n // Create color scale if colorBy is specified\n const colorScale = useColorScale(safeData, colorBy, colorScheme)\n\n // Calculate size domain\n const sizeDomain = useMemo(() => {\n const sizes = safeData.map((d) => {\n if (typeof sizeBy === \"function\") {\n return sizeBy(d)\n }\n return d[sizeBy]\n })\n\n return [Math.min(...sizes), Math.max(...sizes)] as [number, number]\n }, [safeData, sizeBy])\n\n // Point style function\n const pointStyle = useMemo(() => {\n return (d: Record<string, any>) => {\n const baseStyle: Record<string, string | number> = {\n fillOpacity: bubbleOpacity,\n strokeWidth: bubbleStrokeWidth,\n stroke: bubbleStrokeColor\n }\n\n // Apply color\n if (colorBy) {\n baseStyle.fill = getColor(d, colorBy, colorScale)\n } else {\n baseStyle.fill = DEFAULT_COLOR\n }\n\n // Apply size\n baseStyle.r = getSize(d, sizeBy, sizeRange, sizeDomain)\n\n return baseStyle\n }\n }, [colorBy, colorScale, sizeBy, sizeRange, sizeDomain, bubbleOpacity, bubbleStrokeWidth, bubbleStrokeColor])\n\n // Build axes configuration\n const axes = useMemo(() => {\n const axesConfig: Array<Record<string, unknown>> = []\n\n // Y axis (left)\n axesConfig.push({\n orient: \"left\",\n label: yLabel,\n tickFormat: yFormat,\n ...(showGrid && { tickLineGenerator: () => null })\n })\n\n // X axis (bottom)\n axesConfig.push({\n orient: \"bottom\",\n label: xLabel,\n tickFormat: xFormat,\n ...(showGrid && { tickLineGenerator: () => null })\n })\n\n return axesConfig\n }, [xLabel, yLabel, xFormat, yFormat, showGrid])\n\n // Determine if we should show legend\n const shouldShowLegend = showLegend !== undefined ? showLegend : !!colorBy\n\n // Build legend if needed\n const legend = useMemo(() => {\n if (!shouldShowLegend || !colorBy) return undefined\n\n return createLegend({\n data: safeData,\n colorBy,\n colorScale,\n getColor,\n strokeColor: bubbleStrokeColor,\n strokeWidth: bubbleStrokeWidth\n })\n }, [shouldShowLegend, colorBy, safeData, colorScale, bubbleStrokeColor, bubbleStrokeWidth])\n\n // Adjust margin for legend if present\n const margin = useMemo(() => {\n const defaultMargin = { top: 50, bottom: 60, left: 70, right: 40 }\n const finalMargin = { ...defaultMargin, ...userMargin }\n\n // If legend is present and right margin is too small, increase it\n if (legend && finalMargin.right < 120) {\n finalMargin.right = 120\n }\n\n return finalMargin\n }, [userMargin, legend])\n\n // Validate data (after all hooks)\n const error = validateArrayData({\n componentName: \"BubbleChart\",\n data: safeData,\n accessors: {\n xAccessor,\n yAccessor,\n },\n requiredProps: { sizeBy },\n })\n if (error) return <ChartError componentName=\"BubbleChart\" message={error} width={width} height={height} />\n\n // Build XYFrame props\n const xyFrameProps: XYFrameProps = {\n size: [width, height],\n points: safeData,\n xAccessor,\n yAccessor,\n pointStyle,\n axes: axes as any,\n hoverAnnotation: enableHover,\n margin,\n ...(legend && { legend }),\n ...(className && { className }),\n ...(title && { title }),\n // Add tooltip support\n ...(tooltip && { tooltipContent: normalizeTooltip(tooltip) as Function }),\n // Allow frameProps to override defaults\n transition: true,\n ...frameProps\n }\n\n return <XYFrame {...xyFrameProps} />\n}\n","\"use client\"\nimport * as React from \"react\"\nimport { useMemo } from \"react\"\nimport OrdinalFrame from \"../../OrdinalFrame\"\nimport type { OrdinalFrameProps } from \"../../types/ordinalTypes\"\nimport { getColor } from \"../shared/colorUtils\"\nimport { useColorScale, useSortedData, DEFAULT_COLOR } from \"../shared/hooks\"\nimport { createLegend } from \"../shared/legendUtils\"\nimport type { BaseChartProps, ChartAccessor } from \"../shared/types\"\nimport { normalizeTooltip, defaultTooltipStyle, type TooltipProp } from \"../../Tooltip/Tooltip\"\nimport ChartError from \"../shared/ChartError\"\nimport { validateArrayData } from \"../shared/validateChartData\"\n\n/**\n * BarChart component props\n */\nexport interface BarChartProps<TDatum extends Record<string, any> = Record<string, any>> extends BaseChartProps {\n /**\n * Array of data points. Each point should have a category and value.\n * @example\n * ```ts\n * [{category: 'A', value: 10}, {category: 'B', value: 20}]\n * ```\n */\n data: TDatum[]\n\n /**\n * Field name or function to access category values\n * @default \"category\"\n */\n categoryAccessor?: ChartAccessor<TDatum, string>\n\n /**\n * Field name or function to access numeric values\n * @default \"value\"\n */\n valueAccessor?: ChartAccessor<TDatum, number>\n\n /**\n * Chart orientation\n * @default \"vertical\"\n */\n orientation?: \"vertical\" | \"horizontal\"\n\n /**\n * Label for the category axis\n */\n categoryLabel?: string\n\n /**\n * Label for the value axis\n */\n valueLabel?: string\n\n /**\n * Format function for value axis tick labels\n */\n valueFormat?: (d: number | string) => string\n\n /**\n * Field name or function to determine bar color\n * @example\n * ```ts\n * colorBy=\"category\" // Use category field\n * colorBy={d => d.value > 10 ? 'green' : 'red'} // Use function\n * ```\n */\n colorBy?: ChartAccessor<TDatum, string>\n\n /**\n * Color scheme for categorical data or custom colors array\n * @default \"category10\"\n */\n colorScheme?: string | string[]\n\n /**\n * Sort bars by value\n * @default false\n * @example\n * ```ts\n * sort=\"asc\" // Ascending\n * sort=\"desc\" // Descending\n * sort={true} // Descending (default)\n * sort={(a, b) => a.value - b.value} // Custom function\n * ```\n */\n sort?: boolean | \"asc\" | \"desc\" | ((a: Record<string, any>, b: Record<string, any>) => number)\n\n /**\n * Padding between bars (in pixels)\n * @default 5\n */\n barPadding?: number\n\n /**\n * Enable hover annotations\n * @default true\n */\n enableHover?: boolean\n\n /**\n * Show grid lines\n * @default false\n */\n showGrid?: boolean\n\n /**\n * Show legend\n * @default true (when colorBy is specified)\n */\n showLegend?: boolean\n\n /**\n * Tooltip configuration\n */\n tooltip?: TooltipProp\n\n /**\n * Additional OrdinalFrame props for advanced customization\n * For full control, consider using OrdinalFrame directly\n * @see https://semiotic.nteract.io/guides/ordinal-frame\n */\n frameProps?: Partial<Omit<OrdinalFrameProps, \"data\" | \"size\">>\n}\n\n/**\n * BarChart - Visualize categorical data with bars.\n *\n * A simplified wrapper around OrdinalFrame for creating bar charts.\n *\n * @example\n * ```tsx\n * <BarChart\n * data={[\n * {category: 'A', value: 10},\n * {category: 'B', value: 20},\n * {category: 'C', value: 15}\n * ]}\n * categoryLabel=\"Category\"\n * valueLabel=\"Value\"\n * />\n * ```\n */\nexport function BarChart<TDatum extends Record<string, any> = Record<string, any>>(props: BarChartProps<TDatum>) {\n const {\n data,\n width = 600,\n height = 400,\n margin: userMargin,\n className,\n title,\n categoryAccessor = \"category\",\n valueAccessor = \"value\",\n orientation = \"vertical\",\n categoryLabel,\n valueLabel,\n valueFormat,\n colorBy,\n colorScheme = \"category10\",\n sort = false,\n barPadding = 5,\n enableHover = true,\n showGrid = false,\n showLegend,\n tooltip,\n frameProps = {}\n } = props\n\n const safeData = data || []\n\n // Sort data if requested\n const sortedData = useSortedData(safeData, sort, valueAccessor)\n\n // Create color scale if colorBy is specified\n const colorScale = useColorScale(safeData, colorBy, colorScheme)\n\n // Piece style function\n const pieceStyle = useMemo(() => {\n return (d: Record<string, any>) => {\n const baseStyle: Record<string, string | number> = {}\n\n // Apply color\n if (colorBy) {\n baseStyle.fill = getColor(d, colorBy, colorScale)\n } else {\n baseStyle.fill = DEFAULT_COLOR\n }\n\n return baseStyle\n }\n }, [colorBy, colorScale])\n\n // Build axes configuration\n const axes = useMemo(() => {\n const axesConfig: Array<Record<string, unknown>> = []\n\n if (orientation === \"vertical\") {\n // Vertical bars: category on bottom, value on left\n axesConfig.push({\n orient: \"left\",\n label: valueLabel,\n tickFormat: valueFormat,\n ...(showGrid && { tickLineGenerator: () => null })\n })\n\n if (categoryLabel) {\n axesConfig.push({\n orient: \"bottom\",\n label: categoryLabel\n })\n }\n } else {\n // Horizontal bars: category on left, value on bottom\n if (categoryLabel) {\n axesConfig.push({\n orient: \"left\",\n label: categoryLabel\n })\n }\n\n axesConfig.push({\n orient: \"bottom\",\n label: valueLabel,\n tickFormat: valueFormat,\n ...(showGrid && { tickLineGenerator: () => null })\n })\n }\n\n return axesConfig\n }, [orientation, categoryLabel, valueLabel, valueFormat, showGrid])\n\n // Determine if we should show legend\n const shouldShowLegend = showLegend !== undefined ? showLegend : !!colorBy\n\n // Build legend if needed\n const legend = useMemo(() => {\n if (!shouldShowLegend || !colorBy) return undefined\n\n return createLegend({\n data: sortedData,\n colorBy,\n colorScale,\n getColor\n })\n }, [shouldShowLegend, colorBy, sortedData, colorScale])\n\n // Adjust margin for legend if present\n const margin = useMemo(() => {\n const defaultMargin = { top: 50, bottom: 60, left: 70, right: 40 }\n const finalMargin = { ...defaultMargin, ...userMargin }\n\n // If legend is present and right margin is too small, increase it\n if (legend && finalMargin.right < 120) {\n finalMargin.right = 120\n }\n\n return finalMargin\n }, [userMargin, legend])\n\n // Default tooltip function for piece hover\n const defaultTooltipContent = useMemo(() => {\n return (d: Record<string, any>) => {\n const cat = typeof categoryAccessor === \"function\" ? categoryAccessor(d as TDatum) : d[categoryAccessor]\n const val = typeof valueAccessor === \"function\" ? valueAccessor(d as TDatum) : d[valueAccessor]\n return (\n <div className=\"semiotic-tooltip\" style={defaultTooltipStyle}>\n <div style={{ fontWeight: \"bold\" }}>{String(cat)}</div>\n <div style={{ marginTop: \"4px\" }}>\n {typeof val === \"number\" ? val.toLocaleString() : String(val)}\n </div>\n </div>\n )\n }\n }, [categoryAccessor, valueAccessor])\n\n // Validate data (after all hooks)\n const error = validateArrayData({\n componentName: \"BarChart\",\n data: safeData,\n accessors: {\n categoryAccessor,\n valueAccessor,\n },\n })\n if (error) return <ChartError componentName=\"BarChart\" message={error} width={width} height={height} />\n\n // Build OrdinalFrame props\n const ordinalFrameProps: OrdinalFrameProps = {\n size: [width, height],\n data: sortedData,\n oAccessor: categoryAccessor,\n rAccessor: valueAccessor,\n type: \"bar\",\n projection: orientation === \"horizontal\" ? \"horizontal\" : \"vertical\",\n style: pieceStyle,\n axes: axes as any,\n hoverAnnotation: enableHover,\n margin,\n oPadding: barPadding,\n ...(legend && { legend }),\n ...(className && { className }),\n ...(title && { title }),\n // Add tooltip support\n tooltipContent: (tooltip ? normalizeTooltip(tooltip) : defaultTooltipContent) as Function,\n // Allow frameProps to override defaults\n transition: true,\n ...frameProps\n }\n\n return <OrdinalFrame {...ordinalFrameProps} />\n}\n","\"use client\"\nimport * as React from \"react\"\nimport { useMemo } from \"react\"\nimport OrdinalFrame from \"../../OrdinalFrame\"\nimport type { OrdinalFrameProps } from \"../../types/ordinalTypes\"\nimport { getColor } from \"../shared/colorUtils\"\nimport { useColorScale, DEFAULT_COLOR, resolveAccessor } from \"../shared/hooks\"\nimport { createLegend } from \"../shared/legendUtils\"\nimport type { BaseChartProps, ChartAccessor } from \"../shared/types\"\nimport { normalizeTooltip, defaultTooltipStyle, type TooltipProp } from \"../../Tooltip/Tooltip\"\nimport ChartError from \"../shared/ChartError\"\nimport { validateArrayData } from \"../shared/validateChartData\"\n\n/**\n * StackedBarChart component props\n */\nexport interface StackedBarChartProps<TDatum extends Record<string, any> = Record<string, any>> extends BaseChartProps {\n /**\n * Array of data points with category, subcategory, and value.\n * @example\n * ```ts\n * [\n * {category: 'Q1', subcategory: 'Product A', value: 100},\n * {category: 'Q1', subcategory: 'Product B', value: 150},\n * {category: 'Q2', subcategory: 'Product A', value: 120}\n * ]\n * ```\n */\n data: TDatum[]\n\n /**\n * Field name or function to access category values\n * @default \"category\"\n */\n categoryAccessor?: ChartAccessor<TDatum, string>\n\n /**\n * Field name or function to access subcategory values (for stacking)\n * @default \"subcategory\"\n */\n stackBy: ChartAccessor<TDatum, string>\n\n /**\n * Field name or function to access numeric values\n * @default \"value\"\n */\n valueAccessor?: ChartAccessor<TDatum, number>\n\n /**\n * Chart orientation\n * @default \"vertical\"\n */\n orientation?: \"vertical\" | \"horizontal\"\n\n /**\n * Label for the category axis\n */\n categoryLabel?: string\n\n /**\n * Label for the value axis\n */\n valueLabel?: string\n\n /**\n * Format function for value axis tick labels\n */\n valueFormat?: (d: number | string) => string\n\n /**\n * Field name or function to determine bar color (typically stackBy)\n * @default stackBy value\n */\n colorBy?: ChartAccessor<TDatum, string>\n\n /**\n * Color scheme for categorical data or custom colors array\n * @default \"category10\"\n */\n colorScheme?: string | string[]\n\n /**\n * Normalize to 100% (percentage stacked)\n * @default false\n */\n normalize?: boolean\n\n /**\n * Padding between bar groups (in pixels)\n * @default 5\n */\n barPadding?: number\n\n /**\n * Enable hover annotations\n * @default true\n */\n enableHover?: boolean\n\n /**\n * Show grid lines\n * @default false\n */\n showGrid?: boolean\n\n /**\n * Show legend for stack categories\n * @default true\n */\n showLegend?: boolean\n\n /**\n * Tooltip configuration\n */\n tooltip?: TooltipProp\n\n /**\n * Additional OrdinalFrame props for advanced customization\n * For full control, consider using OrdinalFrame directly\n * @see https://semiotic.nteract.io/guides/ordinal-frame\n */\n frameProps?: Partial<Omit<OrdinalFrameProps, \"data\" | \"size\">>\n}\n\n/**\n * StackedBarChart - Visualize part-to-whole relationships with stacked bars.\n *\n * A simplified wrapper around OrdinalFrame for creating stacked bar charts.\n *\n * @example\n * ```tsx\n * <StackedBarChart\n * data={[\n * {category: 'Q1', product: 'A', value: 100},\n * {category: 'Q1', product: 'B', value: 150},\n * {category: 'Q2', product: 'A', value: 120},\n * {category: 'Q2', product: 'B', value: 180}\n * ]}\n * stackBy=\"product\"\n * categoryLabel=\"Quarter\"\n * valueLabel=\"Sales\"\n * />\n * ```\n */\nexport function StackedBarChart<TDatum extends Record<string, any> = Record<string, any>>(props: StackedBarChartProps<TDatum>) {\n const {\n data,\n width = 600,\n height = 400,\n margin: userMargin,\n className,\n title,\n categoryAccessor = \"category\",\n stackBy,\n valueAccessor = \"value\",\n orientation = \"vertical\",\n categoryLabel,\n valueLabel,\n valueFormat,\n colorBy,\n colorScheme = \"category10\",\n normalize = false,\n barPadding = 5,\n enableHover = true,\n showGrid = false,\n showLegend = true,\n tooltip,\n frameProps = {}\n } = props\n\n const safeData = data || []\n\n // Use stackBy as colorBy if not specified\n const actualColorBy = colorBy || stackBy\n\n // Get unique stack values for legend\n const stackValues = useMemo(() => {\n const getStackValue = resolveAccessor(stackBy)\n return Array.from(new Set(safeData.map(getStackValue)))\n }, [safeData, stackBy])\n\n // Create color scale\n const colorScale = useColorScale(safeData, actualColorBy, colorScheme)\n\n // Piece style function\n const pieceStyle = useMemo(() => {\n return (d: Record<string, any>) => {\n const baseStyle: Record<string, string | number> = {}\n\n // Apply color\n if (actualColorBy) {\n baseStyle.fill = getColor(d, actualColorBy, colorScale)\n } else {\n baseStyle.fill = DEFAULT_COLOR\n }\n\n return baseStyle\n }\n }, [actualColorBy, colorScale])\n\n // Build axes configuration\n const axes = useMemo(() => {\n const axesConfig: Array<Record<string, unknown>> = []\n\n if (orientation === \"vertical\") {\n // Vertical bars: category on bottom, value on left\n axesConfig.push({\n orient: \"left\",\n label: valueLabel,\n tickFormat: valueFormat,\n ...(showGrid && { tickLineGenerator: () => null })\n })\n\n if (categoryLabel) {\n axesConfig.push({\n orient: \"bottom\",\n label: categoryLabel\n })\n }\n } else {\n // Horizontal bars: category on left, value on bottom\n if (categoryLabel) {\n axesConfig.push({\n orient: \"left\",\n label: categoryLabel\n })\n }\n\n axesConfig.push({\n orient: \"bottom\",\n label: valueLabel,\n tickFormat: valueFormat,\n ...(showGrid && { tickLineGenerator: () => null })\n })\n }\n\n return axesConfig\n }, [orientation, categoryLabel, valueLabel, valueFormat, showGrid])\n\n // Build legend if needed\n const legend = useMemo(() => {\n if (!showLegend) return undefined\n\n return createLegend({\n data: safeData,\n colorBy: actualColorBy,\n colorScale,\n getColor\n })\n }, [showLegend, safeData, actualColorBy, colorScale])\n\n // Adjust margin for legend if present\n const margin = useMemo(() => {\n const defaultMargin = { top: 50, bottom: 60, left: 70, right: 120 }\n const finalMargin = { ...defaultMargin, ...userMargin }\n\n // If legend is present and right margin is too small, increase it\n if (legend && finalMargin.right < 120) {\n finalMargin.right = 120\n }\n\n return finalMargin\n }, [userMargin, legend])\n\n // Default tooltip function for piece hover\n const defaultTooltipContent = useMemo(() => {\n const getStack = resolveAccessor(stackBy)\n const getCat = resolveAccessor(categoryAccessor)\n const getVal = resolveAccessor<number>(valueAccessor)\n\n return (d: Record<string, any>) => {\n const stackValue = String(getStack(d))\n const cat = String(getCat(d))\n const val = Number(getVal(d))\n const pieces = d.pieces || []\n const total = pieces.reduce((sum: number, p: Record<string, any>) => sum + (Number(getVal(p)) || 0), 0)\n const showTotal = pieces.length > 1\n\n return (\n <div className=\"semiotic-tooltip\" style={defaultTooltipStyle}>\n <div style={{ fontWeight: \"bold\" }}>{stackValue}</div>\n <div style={{ marginTop: \"4px\" }}>\n {cat} &middot; {val.toLocaleString()}\n </div>\n {showTotal && (\n <div style={{ marginTop: \"2px\", opacity: 0.8 }}>\n Total: {total.toLocaleString()}\n </div>\n )}\n </div>\n )\n }\n }, [stackBy, categoryAccessor, valueAccessor])\n\n // Validate data (after all hooks)\n const error = validateArrayData({\n componentName: \"StackedBarChart\",\n data: safeData,\n accessors: {\n categoryAccessor,\n valueAccessor,\n },\n requiredProps: { stackBy },\n })\n if (error) return <ChartError componentName=\"StackedBarChart\" message={error} width={width} height={height} />\n\n // Build OrdinalFrame props\n const ordinalFrameProps: OrdinalFrameProps = {\n size: [width, height],\n data: safeData,\n oAccessor: categoryAccessor,\n rAccessor: valueAccessor,\n type: \"bar\",\n projection: orientation === \"horizontal\" ? \"horizontal\" : \"vertical\",\n style: pieceStyle,\n axes: axes as any,\n hoverAnnotation: enableHover,\n margin,\n oPadding: barPadding,\n // Configure stacking\n pieceIDAccessor: stackBy,\n ...(normalize && { rExtent: [0, 1] }),\n ...(legend && { legend }),\n ...(className && { className }),\n ...(title && { title }),\n // Add tooltip support\n tooltipContent: (tooltip ? normalizeTooltip(tooltip) : defaultTooltipContent) as Function,\n // Allow frameProps to override defaults\n transition: true,\n ...frameProps\n }\n\n return <OrdinalFrame {...ordinalFrameProps} />\n}\n","\"use client\"\nimport * as React from \"react\"\nimport { useMemo } from \"react\"\nimport OrdinalFrame from \"../../OrdinalFrame\"\nimport type { OrdinalFrameProps } from \"../../types/ordinalTypes\"\nimport { getColor, getSize } from \"../shared/colorUtils\"\nimport { useColorScale, DEFAULT_COLOR, resolveAccessor } from \"../shared/hooks\"\nimport { createLegend } from \"../shared/legendUtils\"\nimport type { BaseChartProps, ChartAccessor } from \"../shared/types\"\nimport { normalizeTooltip, defaultTooltipStyle, type TooltipProp } from \"../../Tooltip/Tooltip\"\nimport ChartError from \"../shared/ChartError\"\nimport { validateArrayData } from \"../shared/validateChartData\"\n\n/**\n * SwarmPlot component props\n */\nexport interface SwarmPlotProps<TDatum extends Record<string, any> = Record<string, any>> extends BaseChartProps {\n /**\n * Array of data points with category and value.\n * @example\n * ```ts\n * [\n * {category: 'Group A', value: 10, type: 'X'},\n * {category: 'Group A', value: 12, type: 'Y'},\n * {category: 'Group B', value: 15, type: 'X'}\n * ]\n * ```\n */\n data: TDatum[]\n\n /**\n * Field name or function to access category values\n * @default \"category\"\n */\n categoryAccessor?: ChartAccessor<TDatum, string>\n\n /**\n * Field name or function to access numeric values\n * @default \"value\"\n */\n valueAccessor?: ChartAccessor<TDatum, number>\n\n /**\n * Chart orientation\n * @default \"vertical\"\n */\n orientation?: \"vertical\" | \"horizontal\"\n\n /**\n * Label for the category axis\n */\n categoryLabel?: string\n\n /**\n * Label for the value axis\n */\n valueLabel?: string\n\n /**\n * Format function for value axis tick labels\n */\n valueFormat?: (d: number | string) => string\n\n /**\n * Field name or function to determine point color\n * @example\n * ```ts\n * colorBy=\"type\"\n * colorBy={d => d.score > 10 ? 'red' : 'blue'}\n * ```\n */\n colorBy?: ChartAccessor<TDatum, string>\n\n /**\n * Color scheme for categorical data or custom colors array\n * @default \"category10\"\n */\n colorScheme?: string | string[]\n\n /**\n * Field name or function to determine point size\n * @example\n * ```ts\n * sizeBy=\"importance\"\n * sizeBy={d => Math.sqrt(d.value)}\n * ```\n */\n sizeBy?: ChartAccessor<TDatum, number>\n\n /**\n * Min and max radius for points when using dynamic sizing\n * @default [3, 8]\n */\n sizeRange?: [number, number]\n\n /**\n * Default point radius when sizeBy is not specified\n * @default 4\n */\n pointRadius?: number\n\n /**\n * Point opacity\n * @default 0.7\n */\n pointOpacity?: number\n\n /**\n * Padding between categories (in pixels)\n * @default 20\n */\n categoryPadding?: number\n\n /**\n * Enable hover annotations\n * @default true\n */\n enableHover?: boolean\n\n /**\n * Show grid lines\n * @default false\n */\n showGrid?: boolean\n\n /**\n * Show legend\n * @default true (when colorBy is specified)\n */\n showLegend?: boolean\n\n /**\n * Tooltip configuration\n */\n tooltip?: TooltipProp\n\n /**\n * Additional OrdinalFrame props for advanced customization\n * For full control, consider using OrdinalFrame directly\n * @see https://semiotic.nteract.io/guides/ordinal-frame\n */\n frameProps?: Partial<Omit<OrdinalFrameProps, \"data\" | \"size\">>\n}\n\n/**\n * SwarmPlot - Visualize distributions with non-overlapping points.\n *\n * A simplified wrapper around OrdinalFrame for creating swarm plots (beeswarm plots).\n *\n * @example\n * ```tsx\n * <SwarmPlot\n * data={[\n * {category: 'Group A', value: 10},\n * {category: 'Group A', value: 12},\n * {category: 'Group A', value: 11},\n * {category: 'Group B', value: 15},\n * {category: 'Group B', value: 14}\n * ]}\n * categoryLabel=\"Group\"\n * valueLabel=\"Value\"\n * />\n * ```\n */\nexport function SwarmPlot<TDatum extends Record<string, any> = Record<string, any>>(props: SwarmPlotProps<TDatum>) {\n const {\n data,\n width = 600,\n height = 400,\n margin: userMargin,\n className,\n title,\n categoryAccessor = \"category\",\n valueAccessor = \"value\",\n orientation = \"vertical\",\n categoryLabel,\n valueLabel,\n valueFormat,\n colorBy,\n colorScheme = \"category10\",\n sizeBy,\n sizeRange = [3, 8],\n pointRadius = 4,\n pointOpacity = 0.7,\n categoryPadding = 20,\n enableHover = true,\n showGrid = false,\n showLegend,\n tooltip,\n frameProps = {}\n } = props\n\n const safeData = data || []\n\n // Create color scale if colorBy is specified\n const colorScale = useColorScale(safeData, colorBy, colorScheme)\n\n // Calculate size domain if sizeBy is specified\n const sizeDomain = useMemo(() => {\n if (!sizeBy) return undefined\n\n const sizes = safeData.map((d) => {\n if (typeof sizeBy === \"function\") {\n return sizeBy(d)\n }\n return d[sizeBy]\n })\n\n return [Math.min(...sizes), Math.max(...sizes)] as [number, number]\n }, [safeData, sizeBy])\n\n // Point style function\n const pieceStyle = useMemo(() => {\n return (d: Record<string, any>) => {\n const baseStyle: Record<string, string | number> = {\n fillOpacity: pointOpacity\n }\n\n // Apply color\n if (colorBy) {\n baseStyle.fill = getColor(d, colorBy, colorScale)\n } else {\n baseStyle.fill = DEFAULT_COLOR\n }\n\n // Apply size\n if (sizeBy) {\n baseStyle.r = getSize(d, sizeBy, sizeRange, sizeDomain)\n } else {\n baseStyle.r = pointRadius\n }\n\n return baseStyle\n }\n }, [colorBy, colorScale, sizeBy, sizeRange, sizeDomain, pointRadius, pointOpacity])\n\n // Build axes configuration\n const axes = useMemo(() => {\n const axesConfig: Array<Record<string, unknown>> = []\n\n if (orientation === \"vertical\") {\n // Vertical: category on bottom, value on left\n axesConfig.push({\n orient: \"left\",\n label: valueLabel,\n tickFormat: valueFormat,\n ...(showGrid && { tickLineGenerator: () => null })\n })\n\n if (categoryLabel) {\n axesConfig.push({\n orient: \"bottom\",\n label: categoryLabel\n })\n }\n } else {\n // Horizontal: category on left, value on bottom\n if (categoryLabel) {\n axesConfig.push({\n orient: \"left\",\n label: categoryLabel\n })\n }\n\n axesConfig.push({\n orient: \"bottom\",\n label: valueLabel,\n tickFormat: valueFormat,\n ...(showGrid && { tickLineGenerator: () => null })\n })\n }\n\n return axesConfig\n }, [orientation, categoryLabel, valueLabel, valueFormat, showGrid])\n\n // Determine if we should show legend\n const shouldShowLegend = showLegend !== undefined ? showLegend : !!colorBy\n\n // Build legend if needed\n const legend = useMemo(() => {\n if (!shouldShowLegend || !colorBy) return undefined\n\n return createLegend({\n data: safeData,\n colorBy,\n colorScale,\n getColor\n })\n }, [shouldShowLegend, colorBy, safeData, colorScale])\n\n // Adjust margin for legend if present\n const margin = useMemo(() => {\n const defaultMargin = { top: 50, bottom: 60, left: 70, right: 40 }\n const finalMargin = { ...defaultMargin, ...userMargin }\n\n // If legend is present and right margin is too small, increase it\n if (legend && finalMargin.right < 120) {\n finalMargin.right = 120\n }\n\n return finalMargin\n }, [userMargin, legend])\n\n // Default tooltip function for piece hover\n const defaultTooltipContent = useMemo(() => {\n const getVal = resolveAccessor<number>(valueAccessor)\n const getCat = resolveAccessor(categoryAccessor)\n\n return (d: Record<string, any>) => {\n const cat = getCat(d)\n const val = getVal(d)\n const pieces = d.pieces || []\n const showCount = pieces.length > 1\n\n return (\n <div className=\"semiotic-tooltip\" style={defaultTooltipStyle}>\n <div style={{ fontWeight: \"bold\" }}>{String(cat)}</div>\n <div style={{ marginTop: \"4px\" }}>\n {typeof val === \"number\" ? val.toLocaleString() : String(val)}\n </div>\n {showCount && (\n <div style={{ marginTop: \"2px\", opacity: 0.8 }}>\n {pieces.length} points in group\n </div>\n )}\n </div>\n )\n }\n }, [categoryAccessor, valueAccessor])\n\n // Validate data (after all hooks)\n const error = validateArrayData({\n componentName: \"SwarmPlot\",\n data: safeData,\n accessors: {\n categoryAccessor,\n valueAccessor,\n },\n })\n if (error) return <ChartError componentName=\"SwarmPlot\" message={error} width={width} height={height} />\n\n // Build OrdinalFrame props\n const ordinalFrameProps: OrdinalFrameProps = {\n size: [width, height],\n data: safeData,\n oAccessor: categoryAccessor,\n rAccessor: valueAccessor,\n type: \"swarm\",\n projection: orientation === \"horizontal\" ? \"horizontal\" : \"vertical\",\n style: pieceStyle,\n axes: axes as any,\n pieceHoverAnnotation: enableHover,\n margin,\n oPadding: categoryPadding,\n ...(legend && { legend }),\n ...(className && { className }),\n ...(title && { title }),\n // Add tooltip support\n tooltipContent: (tooltip ? normalizeTooltip(tooltip) : defaultTooltipContent) as Function,\n // Allow frameProps to override defaults\n transition: true,\n ...frameProps\n }\n\n return <OrdinalFrame {...ordinalFrameProps} />\n}\n","\"use client\"\nimport * as React from \"react\"\nimport { useMemo } from \"react\"\nimport OrdinalFrame from \"../../OrdinalFrame\"\nimport type { OrdinalFrameProps } from \"../../types/ordinalTypes\"\nimport { getColor } from \"../shared/colorUtils\"\nimport { useColorScale, DEFAULT_COLOR, resolveAccessor } from \"../shared/hooks\"\nimport { createLegend } from \"../shared/legendUtils\"\nimport type { BaseChartProps, ChartAccessor } from \"../shared/types\"\nimport { normalizeTooltip, defaultTooltipStyle, type TooltipProp } from \"../../Tooltip/Tooltip\"\nimport ChartError from \"../shared/ChartError\"\nimport { validateArrayData } from \"../shared/validateChartData\"\n\n/**\n * BoxPlot component props\n */\nexport interface BoxPlotProps<TDatum extends Record<string, any> = Record<string, any>> extends BaseChartProps {\n /**\n * Array of data points with category and value.\n * @example\n * ```ts\n * [\n * {category: 'Group A', value: 10},\n * {category: 'Group A', value: 12},\n * {category: 'Group A', value: 15},\n * {category: 'Group B', value: 20}\n * ]\n * ```\n */\n data: TDatum[]\n\n /**\n * Field name or function to access category values\n * @default \"category\"\n */\n categoryAccessor?: ChartAccessor<TDatum, string>\n\n /**\n * Field name or function to access numeric values\n * @default \"value\"\n */\n valueAccessor?: ChartAccessor<TDatum, number>\n\n /**\n * Chart orientation\n * @default \"vertical\"\n */\n orientation?: \"vertical\" | \"horizontal\"\n\n /**\n * Label for the category axis\n */\n categoryLabel?: string\n\n /**\n * Label for the value axis\n */\n valueLabel?: string\n\n /**\n * Format function for value axis tick labels\n */\n valueFormat?: (d: number | string) => string\n\n /**\n * Field name or function to determine box color\n * @example\n * ```ts\n * colorBy=\"category\"\n * colorBy={d => d.group}\n * ```\n */\n colorBy?: ChartAccessor<TDatum, string>\n\n /**\n * Color scheme for categorical data or custom colors array\n * @default \"category10\"\n */\n colorScheme?: string | string[]\n\n /**\n * Show outlier points\n * @default true\n */\n showOutliers?: boolean\n\n /**\n * Outlier point radius\n * @default 3\n */\n outlierRadius?: number\n\n /**\n * Padding between categories (in pixels)\n * @default 20\n */\n categoryPadding?: number\n\n /**\n * Enable hover annotations\n * @default true\n */\n enableHover?: boolean\n\n /**\n * Show grid lines\n * @default false\n */\n showGrid?: boolean\n\n /**\n * Show legend\n * @default true (when colorBy is specified)\n */\n showLegend?: boolean\n\n /**\n * Tooltip configuration\n */\n tooltip?: TooltipProp\n\n /**\n * Additional OrdinalFrame props for advanced customization\n * For full control, consider using OrdinalFrame directly\n * @see https://semiotic.nteract.io/guides/ordinal-frame\n */\n frameProps?: Partial<Omit<OrdinalFrameProps, \"data\" | \"size\">>\n}\n\n/**\n * BoxPlot - Visualize statistical distributions with box-and-whisker plots.\n *\n * A simplified wrapper around OrdinalFrame for creating box plots.\n *\n * @example\n * ```tsx\n * <BoxPlot\n * data={[\n * {category: 'Group A', value: 10},\n * {category: 'Group A', value: 12},\n * {category: 'Group A', value: 15},\n * {category: 'Group A', value: 18},\n * {category: 'Group B', value: 20},\n * {category: 'Group B', value: 22}\n * ]}\n * categoryLabel=\"Group\"\n * valueLabel=\"Value\"\n * />\n * ```\n */\nexport function BoxPlot<TDatum extends Record<string, any> = Record<string, any>>(props: BoxPlotProps<TDatum>) {\n const {\n data,\n width = 600,\n height = 400,\n margin: userMargin,\n className,\n title,\n categoryAccessor = \"category\",\n valueAccessor = \"value\",\n orientation = \"vertical\",\n categoryLabel,\n valueLabel,\n valueFormat,\n colorBy,\n colorScheme = \"category10\",\n showOutliers = true,\n outlierRadius = 3,\n categoryPadding = 20,\n enableHover = true,\n showGrid = false,\n showLegend,\n tooltip,\n frameProps = {}\n } = props\n\n const safeData = data || []\n\n // Create color scale if colorBy is specified\n const colorScale = useColorScale(safeData, colorBy, colorScheme)\n\n // Summary style function for boxes\n const summaryStyle = useMemo(() => {\n return (d: Record<string, any>) => {\n const color = colorBy ? getColor(d, colorBy, colorScale) : DEFAULT_COLOR\n\n return {\n fill: color,\n stroke: color,\n fillOpacity: 0.8\n }\n }\n }, [colorBy, colorScale])\n\n // Point style function for outliers\n const pointStyle = useMemo(() => {\n if (!showOutliers) return undefined\n\n return (d: Record<string, any>) => {\n const baseStyle: Record<string, string | number> = {\n r: outlierRadius,\n fillOpacity: 0.6\n }\n\n // Apply color (try to match box color)\n if (colorBy) {\n baseStyle.fill = getColor(d, colorBy, colorScale)\n } else {\n baseStyle.fill = DEFAULT_COLOR\n }\n\n return baseStyle\n }\n }, [showOutliers, outlierRadius, colorBy, colorScale])\n\n // Build axes configuration\n const axes = useMemo(() => {\n const axesConfig: Array<Record<string, unknown>> = []\n\n if (orientation === \"vertical\") {\n // Vertical: category on bottom, value on left\n axesConfig.push({\n orient: \"left\",\n label: valueLabel,\n tickFormat: valueFormat,\n ...(showGrid && { tickLineGenerator: () => null })\n })\n\n if (categoryLabel) {\n axesConfig.push({\n orient: \"bottom\",\n label: categoryLabel\n })\n }\n } else {\n // Horizontal: category on left, value on bottom\n if (categoryLabel) {\n axesConfig.push({\n orient: \"left\",\n label: categoryLabel\n })\n }\n\n axesConfig.push({\n orient: \"bottom\",\n label: valueLabel,\n tickFormat: valueFormat,\n ...(showGrid && { tickLineGenerator: () => null })\n })\n }\n\n return axesConfig\n }, [orientation, categoryLabel, valueLabel, valueFormat, showGrid])\n\n // Determine if we should show legend\n const shouldShowLegend = showLegend !== undefined ? showLegend : !!colorBy\n\n // Build legend if needed\n const legend = useMemo(() => {\n if (!shouldShowLegend || !colorBy) return undefined\n\n return createLegend({\n data: safeData,\n colorBy,\n colorScale,\n getColor\n })\n }, [shouldShowLegend, colorBy, safeData, colorScale])\n\n // Adjust margin for legend if present\n const margin = useMemo(() => {\n const defaultMargin = { top: 50, bottom: 60, left: 70, right: 40 }\n const finalMargin = { ...defaultMargin, ...userMargin }\n\n // If legend is present and right margin is too small, increase it\n if (legend && finalMargin.right < 120) {\n finalMargin.right = 120\n }\n\n return finalMargin\n }, [userMargin, legend])\n\n // Default tooltip for summary hover (boxplot quartile points)\n const defaultTooltipContent = useMemo(() => {\n const getVal = resolveAccessor<number>(valueAccessor)\n\n return (d: Record<string, any>) => {\n // d has: label, key, summaryPieceName, value, column, pieces\n const pieces = d.pieces || []\n const values = pieces.map((p: Record<string, any>) => Number(getVal(p))).filter((v: number) => !isNaN(v)).sort((a: number, b: number) => a - b)\n const n = values.length\n\n const fmt = (v: unknown) => typeof v === \"number\" ? v.toLocaleString() : String(v ?? \"\")\n\n // Compute quartiles from the raw data\n let stats: { label: string; value: string; active: boolean }[] = []\n if (n >= 2) {\n const q = (p: number) => {\n const i = p * (n - 1)\n const lo = Math.floor(i)\n const hi = Math.ceil(i)\n return values[lo] + (values[hi] - values[lo]) * (i - lo)\n }\n stats = [\n { label: \"Max\", value: fmt(values[n - 1]), active: d.summaryPieceName === \"max\" },\n { label: \"Third Quartile\", value: fmt(q(0.75)), active: d.summaryPieceName === \"q3area\" },\n { label: \"Median\", value: fmt(q(0.5)), active: d.summaryPieceName === \"median\" },\n { label: \"First Quartile\", value: fmt(q(0.25)), active: d.summaryPieceName === \"q1area\" },\n { label: \"Min\", value: fmt(values[0]), active: d.summaryPieceName === \"min\" },\n ]\n }\n\n return (\n <div className=\"semiotic-tooltip\" style={defaultTooltipStyle}>\n <div style={{ fontWeight: \"bold\", marginBottom: \"4px\" }}>{String(d.key)}</div>\n {stats.map(s => (\n <div key={s.label} style={{ display: \"flex\", justifyContent: \"space-between\", gap: \"12px\", fontWeight: s.active ? \"bold\" : \"normal\" }}>\n <span>{s.label}</span>\n <span>{s.value}</span>\n </div>\n ))}\n {n > 0 && (\n <div style={{ marginTop: \"4px\", opacity: 0.6, fontSize: \"0.9em\" }}>n={n}</div>\n )}\n </div>\n )\n }\n }, [valueAccessor])\n\n // Validate data (after all hooks)\n const error = validateArrayData({\n componentName: \"BoxPlot\",\n data: safeData,\n accessors: {\n categoryAccessor,\n valueAccessor,\n },\n })\n if (error) return <ChartError componentName=\"BoxPlot\" message={error} width={width} height={height} />\n\n // Build OrdinalFrame props\n const ordinalFrameProps: OrdinalFrameProps = {\n size: [width, height],\n data: safeData,\n oAccessor: categoryAccessor,\n rAccessor: valueAccessor,\n summaryType: { type: \"boxplot\", outliers: showOutliers } as any,\n summaryStyle,\n projection: orientation === \"horizontal\" ? \"horizontal\" : \"vertical\",\n axes: axes as any,\n summaryHoverAnnotation: enableHover,\n margin,\n oPadding: categoryPadding,\n ...(pointStyle && { pointStyle }),\n ...(legend && { legend }),\n ...(className && { className }),\n ...(title && { title }),\n // Add tooltip support\n tooltipContent: (tooltip ? normalizeTooltip(tooltip) : defaultTooltipContent) as Function,\n // Allow frameProps to override defaults\n transition: true,\n ...frameProps\n }\n\n return <OrdinalFrame {...ordinalFrameProps} />\n}\n","\"use client\"\nimport * as React from \"react\"\nimport { useMemo } from \"react\"\nimport OrdinalFrame from \"../../OrdinalFrame\"\nimport type { OrdinalFrameProps } from \"../../types/ordinalTypes\"\nimport { getColor } from \"../shared/colorUtils\"\nimport { useColorScale, useSortedData, DEFAULT_COLOR } from \"../shared/hooks\"\nimport { createLegend } from \"../shared/legendUtils\"\nimport type { BaseChartProps, ChartAccessor } from \"../shared/types\"\nimport { normalizeTooltip, defaultTooltipStyle, type TooltipProp } from \"../../Tooltip/Tooltip\"\nimport ChartError from \"../shared/ChartError\"\nimport { validateArrayData } from \"../shared/validateChartData\"\n\n/**\n * DotPlot component props\n */\nexport interface DotPlotProps<TDatum extends Record<string, any> = Record<string, any>> extends BaseChartProps {\n /**\n * Array of data points with category and value.\n * @example\n * ```ts\n * [\n * {category: 'Item A', value: 25},\n * {category: 'Item B', value: 40},\n * {category: 'Item C', value: 15}\n * ]\n * ```\n */\n data: TDatum[]\n\n /**\n * Field name or function to access category values\n * @default \"category\"\n */\n categoryAccessor?: ChartAccessor<TDatum, string>\n\n /**\n * Field name or function to access numeric values\n * @default \"value\"\n */\n valueAccessor?: ChartAccessor<TDatum, number>\n\n /**\n * Chart orientation\n * @default \"horizontal\"\n */\n orientation?: \"vertical\" | \"horizontal\"\n\n /**\n * Label for the category axis\n */\n categoryLabel?: string\n\n /**\n * Label for the value axis\n */\n valueLabel?: string\n\n /**\n * Format function for value axis tick labels\n */\n valueFormat?: (d: number | string) => string\n\n /**\n * Field name or function to determine dot color\n * @example\n * ```ts\n * colorBy=\"type\"\n * colorBy={d => d.value > 20 ? 'high' : 'low'}\n * ```\n */\n colorBy?: ChartAccessor<TDatum, string>\n\n /**\n * Color scheme for categorical data or custom colors array\n * @default \"category10\"\n */\n colorScheme?: string | string[]\n\n /**\n * Sort categories by value\n * @default true\n * @example\n * ```ts\n * sort=\"asc\" // Ascending\n * sort=\"desc\" // Descending\n * sort={true} // Descending (default)\n * sort={(a, b) => a.value - b.value} // Custom function\n * ```\n */\n sort?: boolean | \"asc\" | \"desc\" | ((a: Record<string, any>, b: Record<string, any>) => number)\n\n /**\n * Dot radius\n * @default 5\n */\n dotRadius?: number\n\n /**\n * Padding between categories (in pixels)\n * @default 10\n */\n categoryPadding?: number\n\n /**\n * Enable hover annotations\n * @default true\n */\n enableHover?: boolean\n\n /**\n * Show grid lines\n * @default true\n */\n showGrid?: boolean\n\n /**\n * Show legend\n * @default true (when colorBy is specified)\n */\n showLegend?: boolean\n\n /**\n * Tooltip configuration\n */\n tooltip?: TooltipProp\n\n /**\n * Additional OrdinalFrame props for advanced customization\n * For full control, consider using OrdinalFrame directly\n * @see https://semiotic.nteract.io/guides/ordinal-frame\n */\n frameProps?: Partial<Omit<OrdinalFrameProps, \"data\" | \"size\">>\n}\n\n/**\n * DotPlot - Visualize categorical data with Cleveland dot plots.\n *\n * A simplified wrapper around OrdinalFrame for creating dot plots.\n *\n * @example\n * ```tsx\n * <DotPlot\n * data={[\n * {category: 'Item A', value: 25},\n * {category: 'Item B', value: 40},\n * {category: 'Item C', value: 15}\n * ]}\n * categoryLabel=\"Items\"\n * valueLabel=\"Value\"\n * />\n * ```\n */\nexport function DotPlot<TDatum extends Record<string, any> = Record<string, any>>(props: DotPlotProps<TDatum>) {\n const {\n data,\n width = 600,\n height = 400,\n margin: userMargin,\n className,\n title,\n categoryAccessor = \"category\",\n valueAccessor = \"value\",\n orientation = \"horizontal\",\n categoryLabel,\n valueLabel,\n valueFormat,\n colorBy,\n colorScheme = \"category10\",\n sort = true,\n dotRadius = 5,\n categoryPadding = 10,\n enableHover = true,\n showGrid = true,\n showLegend,\n tooltip,\n frameProps = {}\n } = props\n\n const safeData = data || []\n\n // Sort data if requested\n const sortedData = useSortedData(safeData, sort, valueAccessor)\n\n // Create color scale if colorBy is specified\n const colorScale = useColorScale(safeData, colorBy, colorScheme)\n\n // Piece style function\n const pieceStyle = useMemo(() => {\n return (d: Record<string, any>) => {\n const baseStyle: Record<string, string | number> = {\n r: dotRadius,\n fillOpacity: 0.8\n }\n\n // Apply color\n if (colorBy) {\n baseStyle.fill = getColor(d, colorBy, colorScale)\n } else {\n baseStyle.fill = DEFAULT_COLOR\n }\n\n return baseStyle\n }\n }, [colorBy, colorScale, dotRadius])\n\n // Build axes configuration\n const axes = useMemo(() => {\n const axesConfig: Array<Record<string, unknown>> = []\n\n if (orientation === \"horizontal\") {\n // Horizontal: category on left, value on bottom\n if (categoryLabel) {\n axesConfig.push({\n orient: \"left\",\n label: categoryLabel\n })\n }\n\n axesConfig.push({\n orient: \"bottom\",\n label: valueLabel,\n tickFormat: valueFormat,\n ...(showGrid && { tickLineGenerator: () => null })\n })\n } else {\n // Vertical: category on bottom, value on left\n axesConfig.push({\n orient: \"left\",\n label: valueLabel,\n tickFormat: valueFormat,\n ...(showGrid && { tickLineGenerator: () => null })\n })\n\n if (categoryLabel) {\n axesConfig.push({\n orient: \"bottom\",\n label: categoryLabel\n })\n }\n }\n\n return axesConfig\n }, [orientation, categoryLabel, valueLabel, valueFormat, showGrid])\n\n // Determine if we should show legend\n const shouldShowLegend = showLegend !== undefined ? showLegend : !!colorBy\n\n // Build legend if needed\n const legend = useMemo(() => {\n if (!shouldShowLegend || !colorBy) return undefined\n\n return createLegend({\n data: sortedData,\n colorBy,\n colorScale,\n getColor\n })\n }, [shouldShowLegend, colorBy, sortedData, colorScale])\n\n // Adjust margin for legend if present\n const margin = useMemo(() => {\n const defaultMargin = { top: 50, bottom: 60, left: 120, right: 40 }\n const finalMargin = { ...defaultMargin, ...userMargin }\n\n // If legend is present and right margin is too small, increase it\n if (legend && finalMargin.right < 120) {\n finalMargin.right = 120\n }\n\n return finalMargin\n }, [userMargin, legend])\n\n // Default tooltip function for piece hover\n const defaultTooltipContent = useMemo(() => {\n return (d: Record<string, any>) => {\n const cat = typeof categoryAccessor === \"function\" ? categoryAccessor(d as TDatum) : d[categoryAccessor]\n const val = typeof valueAccessor === \"function\" ? valueAccessor(d as TDatum) : d[valueAccessor]\n return (\n <div className=\"semiotic-tooltip\" style={defaultTooltipStyle}>\n <div style={{ fontWeight: \"bold\" }}>{String(cat)}</div>\n <div style={{ marginTop: \"4px\" }}>\n {typeof val === \"number\" ? val.toLocaleString() : String(val)}\n </div>\n </div>\n )\n }\n }, [categoryAccessor, valueAccessor])\n\n // Validate data (after all hooks)\n const error = validateArrayData({\n componentName: \"DotPlot\",\n data: safeData,\n accessors: {\n categoryAccessor,\n valueAccessor,\n },\n })\n if (error) return <ChartError componentName=\"DotPlot\" message={error} width={width} height={height} />\n\n // Build OrdinalFrame props\n const ordinalFrameProps: OrdinalFrameProps = {\n size: [width, height],\n data: sortedData,\n oAccessor: categoryAccessor,\n rAccessor: valueAccessor,\n type: \"point\",\n projection: orientation === \"horizontal\" ? \"horizontal\" : \"vertical\",\n style: pieceStyle,\n axes: axes as any,\n pieceHoverAnnotation: enableHover,\n margin,\n oPadding: categoryPadding,\n ...(legend && { legend }),\n ...(className && { className }),\n ...(title && { title }),\n // Add tooltip support\n tooltipContent: (tooltip ? normalizeTooltip(tooltip) : defaultTooltipContent) as Function,\n // Allow frameProps to override defaults\n transition: true,\n ...frameProps\n }\n\n return <OrdinalFrame {...ordinalFrameProps} />\n}\n","\"use client\"\nimport * as React from \"react\"\nimport { useMemo } from \"react\"\nimport OrdinalFrame from \"../../OrdinalFrame\"\nimport type { OrdinalFrameProps } from \"../../types/ordinalTypes\"\nimport { getColor } from \"../shared/colorUtils\"\nimport { useColorScale, DEFAULT_COLOR } from \"../shared/hooks\"\nimport { createLegend } from \"../shared/legendUtils\"\nimport type { BaseChartProps, ChartAccessor } from \"../shared/types\"\nimport { normalizeTooltip, defaultTooltipStyle, type TooltipProp } from \"../../Tooltip/Tooltip\"\nimport ChartError from \"../shared/ChartError\"\nimport { validateArrayData } from \"../shared/validateChartData\"\nimport type { PieceTypeSettings } from \"../../types/ordinalTypes\"\n\n/**\n * PieChart component props\n */\nexport interface PieChartProps<TDatum extends Record<string, any> = Record<string, any>> extends BaseChartProps {\n /**\n * Array of data points, one per slice.\n * @example\n * ```ts\n * [{category: 'A', value: 30}, {category: 'B', value: 50}, {category: 'C', value: 20}]\n * ```\n */\n data: TDatum[]\n\n /**\n * Field name or function to access slice labels\n * @default \"category\"\n */\n categoryAccessor?: ChartAccessor<TDatum, string>\n\n /**\n * Field name or function to access slice values\n * @default \"value\"\n */\n valueAccessor?: ChartAccessor<TDatum, number>\n\n /**\n * Field name or function to determine slice color\n * @default categoryAccessor\n */\n colorBy?: ChartAccessor<TDatum, string>\n\n /**\n * Color scheme for categorical data or custom colors array\n * @default \"category10\"\n */\n colorScheme?: string | string[]\n\n /**\n * Starting angle offset in degrees\n * @default 0\n */\n startAngle?: number\n\n /**\n * Padding between slices (in pixels)\n * @default 2\n */\n slicePadding?: number\n\n /**\n * Enable hover annotations\n * @default true\n */\n enableHover?: boolean\n\n /**\n * Show legend\n * @default true\n */\n showLegend?: boolean\n\n /**\n * Tooltip configuration\n */\n tooltip?: TooltipProp\n\n /**\n * Additional OrdinalFrame props for advanced customization\n * For full control, consider using OrdinalFrame directly\n */\n frameProps?: Partial<Omit<OrdinalFrameProps, \"data\" | \"size\">>\n}\n\n/**\n * PieChart - Visualize proportions as slices of a circle.\n *\n * A simplified wrapper around OrdinalFrame with radial projection.\n *\n * @example\n * ```tsx\n * <PieChart\n * data={[\n * {category: 'A', value: 30},\n * {category: 'B', value: 50},\n * {category: 'C', value: 20}\n * ]}\n * />\n * ```\n */\nexport function PieChart<TDatum extends Record<string, any> = Record<string, any>>(props: PieChartProps<TDatum>) {\n const {\n data,\n width = 400,\n height = 400,\n margin: userMargin,\n className,\n title,\n categoryAccessor = \"category\",\n valueAccessor = \"value\",\n colorBy,\n colorScheme = \"category10\",\n startAngle = 0,\n slicePadding = 2,\n enableHover = true,\n showLegend = true,\n tooltip,\n frameProps = {}\n } = props\n\n const safeData = data || []\n\n // Default colorBy to categoryAccessor for pie charts\n const actualColorBy = colorBy || categoryAccessor\n\n // Create color scale\n const colorScale = useColorScale(safeData, actualColorBy, colorScheme)\n\n // Piece style function\n const pieceStyle = useMemo(() => {\n return (d: Record<string, any>) => {\n const baseStyle: Record<string, string | number> = {}\n\n if (actualColorBy) {\n baseStyle.fill = getColor(d, actualColorBy, colorScale)\n } else {\n baseStyle.fill = DEFAULT_COLOR\n }\n\n return baseStyle\n }\n }, [actualColorBy, colorScale])\n\n // Build legend if needed\n const legend = useMemo(() => {\n if (!showLegend) return undefined\n\n return createLegend({\n data: safeData,\n colorBy: actualColorBy,\n colorScale,\n getColor\n })\n }, [showLegend, safeData, actualColorBy, colorScale])\n\n // Adjust margin for legend if present\n const margin = useMemo(() => {\n const defaultMargin = { top: 20, bottom: 20, left: 20, right: 20 }\n const finalMargin = { ...defaultMargin, ...userMargin }\n\n if (legend && finalMargin.right < 120) {\n finalMargin.right = 120\n }\n\n return finalMargin\n }, [userMargin, legend])\n\n // Build type config\n const typeConfig = useMemo((): PieceTypeSettings => {\n const config: PieceTypeSettings = { type: \"bar\" }\n\n if (startAngle) {\n config.offsetAngle = startAngle\n }\n\n return config\n }, [startAngle])\n\n // Default tooltip\n const defaultTooltipContent = useMemo(() => {\n return (d: Record<string, any>) => {\n const cat = typeof categoryAccessor === \"function\" ? categoryAccessor(d as TDatum) : d[categoryAccessor]\n const val = typeof valueAccessor === \"function\" ? valueAccessor(d as TDatum) : d[valueAccessor]\n return (\n <div className=\"semiotic-tooltip\" style={defaultTooltipStyle}>\n <div style={{ fontWeight: \"bold\" }}>{String(cat)}</div>\n <div style={{ marginTop: \"4px\" }}>\n {typeof val === \"number\" ? val.toLocaleString() : String(val)}\n </div>\n </div>\n )\n }\n }, [categoryAccessor, valueAccessor])\n\n // Validate data (after all hooks)\n const error = validateArrayData({\n componentName: \"PieChart\",\n data: safeData,\n accessors: {\n categoryAccessor,\n valueAccessor,\n },\n })\n if (error) return <ChartError componentName=\"PieChart\" message={error} width={width} height={height} />\n\n // Build OrdinalFrame props\n const ordinalFrameProps: OrdinalFrameProps = {\n size: [width, height],\n data: safeData,\n oAccessor: categoryAccessor,\n rAccessor: valueAccessor,\n type: typeConfig,\n projection: \"radial\",\n style: pieceStyle,\n hoverAnnotation: enableHover,\n margin,\n oPadding: slicePadding,\n ...(legend && { legend }),\n ...(className && { className }),\n ...(title && { title }),\n tooltipContent: (tooltip ? normalizeTooltip(tooltip) : defaultTooltipContent) as Function,\n transition: true,\n ...frameProps\n }\n\n return <OrdinalFrame {...ordinalFrameProps} />\n}\n","\"use client\"\nimport * as React from \"react\"\nimport { useMemo } from \"react\"\nimport OrdinalFrame from \"../../OrdinalFrame\"\nimport type { OrdinalFrameProps } from \"../../types/ordinalTypes\"\nimport { getColor } from \"../shared/colorUtils\"\nimport { useColorScale, DEFAULT_COLOR } from \"../shared/hooks\"\nimport { createLegend } from \"../shared/legendUtils\"\nimport type { BaseChartProps, ChartAccessor } from \"../shared/types\"\nimport { normalizeTooltip, defaultTooltipStyle, type TooltipProp } from \"../../Tooltip/Tooltip\"\nimport ChartError from \"../shared/ChartError\"\nimport { validateArrayData } from \"../shared/validateChartData\"\nimport type { PieceTypeSettings } from \"../../types/ordinalTypes\"\n\n/**\n * DonutChart component props\n */\nexport interface DonutChartProps<TDatum extends Record<string, any> = Record<string, any>> extends BaseChartProps {\n /**\n * Array of data points, one per slice.\n * @example\n * ```ts\n * [{category: 'A', value: 30}, {category: 'B', value: 50}, {category: 'C', value: 20}]\n * ```\n */\n data: TDatum[]\n\n /**\n * Field name or function to access slice labels\n * @default \"category\"\n */\n categoryAccessor?: ChartAccessor<TDatum, string>\n\n /**\n * Field name or function to access slice values\n * @default \"value\"\n */\n valueAccessor?: ChartAccessor<TDatum, number>\n\n /**\n * Inner radius in pixels. Controls the donut hole size.\n * @default 60\n */\n innerRadius?: number\n\n /**\n * Content to render in the center of the donut (e.g. a total label)\n */\n centerContent?: React.ReactNode\n\n /**\n * Field name or function to determine slice color\n * @default categoryAccessor\n */\n colorBy?: ChartAccessor<TDatum, string>\n\n /**\n * Color scheme for categorical data or custom colors array\n * @default \"category10\"\n */\n colorScheme?: string | string[]\n\n /**\n * Starting angle offset in degrees\n * @default 0\n */\n startAngle?: number\n\n /**\n * Padding between slices (in pixels)\n * @default 2\n */\n slicePadding?: number\n\n /**\n * Enable hover annotations\n * @default true\n */\n enableHover?: boolean\n\n /**\n * Show legend\n * @default true\n */\n showLegend?: boolean\n\n /**\n * Tooltip configuration\n */\n tooltip?: TooltipProp\n\n /**\n * Additional OrdinalFrame props for advanced customization\n * For full control, consider using OrdinalFrame directly\n */\n frameProps?: Partial<Omit<OrdinalFrameProps, \"data\" | \"size\">>\n}\n\n/**\n * DonutChart - Visualize proportions as slices of a ring.\n *\n * A simplified wrapper around OrdinalFrame with radial projection and\n * an inner radius to create a donut shape.\n *\n * @example\n * ```tsx\n * <DonutChart\n * data={[\n * {category: 'A', value: 30},\n * {category: 'B', value: 50},\n * {category: 'C', value: 20}\n * ]}\n * innerRadius={80}\n * centerContent={<span>Total: 100</span>}\n * />\n * ```\n */\nexport function DonutChart<TDatum extends Record<string, any> = Record<string, any>>(props: DonutChartProps<TDatum>) {\n const {\n data,\n width = 400,\n height = 400,\n margin: userMargin,\n className,\n title,\n categoryAccessor = \"category\",\n valueAccessor = \"value\",\n innerRadius = 60,\n centerContent,\n colorBy,\n colorScheme = \"category10\",\n startAngle = 0,\n slicePadding = 2,\n enableHover = true,\n showLegend = true,\n tooltip,\n frameProps = {}\n } = props\n\n const safeData = data || []\n\n // Default colorBy to categoryAccessor for donut charts\n const actualColorBy = colorBy || categoryAccessor\n\n // Create color scale\n const colorScale = useColorScale(safeData, actualColorBy, colorScheme)\n\n // Piece style function\n const pieceStyle = useMemo(() => {\n return (d: Record<string, any>) => {\n const baseStyle: Record<string, string | number> = {}\n\n if (actualColorBy) {\n baseStyle.fill = getColor(d, actualColorBy, colorScale)\n } else {\n baseStyle.fill = DEFAULT_COLOR\n }\n\n return baseStyle\n }\n }, [actualColorBy, colorScale])\n\n // Build legend if needed\n const legend = useMemo(() => {\n if (!showLegend) return undefined\n\n return createLegend({\n data: safeData,\n colorBy: actualColorBy,\n colorScale,\n getColor\n })\n }, [showLegend, safeData, actualColorBy, colorScale])\n\n // Adjust margin for legend if present\n const margin = useMemo(() => {\n const defaultMargin = { top: 20, bottom: 20, left: 20, right: 20 }\n const finalMargin = { ...defaultMargin, ...userMargin }\n\n if (legend && finalMargin.right < 120) {\n finalMargin.right = 120\n }\n\n return finalMargin\n }, [userMargin, legend])\n\n // Build type config with innerRadius\n const typeConfig = useMemo((): PieceTypeSettings => {\n const config: PieceTypeSettings = {\n type: \"bar\",\n innerRadius\n }\n\n if (startAngle) {\n config.offsetAngle = startAngle\n }\n\n return config\n }, [innerRadius, startAngle])\n\n // Center content rendered via foregroundGraphics\n const foregroundGraphics = useMemo(() => {\n if (!centerContent) return undefined\n\n const cx = width / 2\n const cy = height / 2\n\n return (\n <foreignObject\n x={cx - innerRadius}\n y={cy - innerRadius}\n width={innerRadius * 2}\n height={innerRadius * 2}\n >\n <div\n style={{\n width: \"100%\",\n height: \"100%\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n textAlign: \"center\"\n }}\n >\n {centerContent}\n </div>\n </foreignObject>\n )\n }, [centerContent, width, height, innerRadius])\n\n // Default tooltip\n const defaultTooltipContent = useMemo(() => {\n return (d: Record<string, any>) => {\n const cat = typeof categoryAccessor === \"function\" ? categoryAccessor(d as TDatum) : d[categoryAccessor]\n const val = typeof valueAccessor === \"function\" ? valueAccessor(d as TDatum) : d[valueAccessor]\n return (\n <div className=\"semiotic-tooltip\" style={defaultTooltipStyle}>\n <div style={{ fontWeight: \"bold\" }}>{String(cat)}</div>\n <div style={{ marginTop: \"4px\" }}>\n {typeof val === \"number\" ? val.toLocaleString() : String(val)}\n </div>\n </div>\n )\n }\n }, [categoryAccessor, valueAccessor])\n\n // Validate data (after all hooks)\n const error = validateArrayData({\n componentName: \"DonutChart\",\n data: safeData,\n accessors: {\n categoryAccessor,\n valueAccessor,\n },\n })\n if (error) return <ChartError componentName=\"DonutChart\" message={error} width={width} height={height} />\n\n // Build OrdinalFrame props\n const ordinalFrameProps: OrdinalFrameProps = {\n size: [width, height],\n data: safeData,\n oAccessor: categoryAccessor,\n rAccessor: valueAccessor,\n type: typeConfig,\n projection: \"radial\",\n style: pieceStyle,\n hoverAnnotation: enableHover,\n margin,\n oPadding: slicePadding,\n ...(legend && { legend }),\n ...(foregroundGraphics && { foregroundGraphics }),\n ...(className && { className }),\n ...(title && { title }),\n tooltipContent: (tooltip ? normalizeTooltip(tooltip) : defaultTooltipContent) as Function,\n transition: true,\n ...frameProps\n }\n\n return <OrdinalFrame {...ordinalFrameProps} />\n}\n","\"use client\"\nimport * as React from \"react\"\nimport { useMemo } from \"react\"\nimport OrdinalFrame from \"../../OrdinalFrame\"\nimport type { OrdinalFrameProps } from \"../../types/ordinalTypes\"\nimport { getColor } from \"../shared/colorUtils\"\nimport { useColorScale, DEFAULT_COLOR, resolveAccessor } from \"../shared/hooks\"\nimport { createLegend } from \"../shared/legendUtils\"\nimport type { BaseChartProps, ChartAccessor } from \"../shared/types\"\nimport { normalizeTooltip, defaultTooltipStyle, type TooltipProp } from \"../../Tooltip/Tooltip\"\nimport ChartError from \"../shared/ChartError\"\nimport { validateArrayData } from \"../shared/validateChartData\"\n\n/**\n * GroupedBarChart component props\n */\nexport interface GroupedBarChartProps<TDatum extends Record<string, any> = Record<string, any>> extends BaseChartProps {\n /**\n * Array of data points with category, group, and value.\n * @example\n * ```ts\n * [\n * {category: 'Q1', product: 'A', value: 100},\n * {category: 'Q1', product: 'B', value: 150},\n * {category: 'Q2', product: 'A', value: 120},\n * {category: 'Q2', product: 'B', value: 180}\n * ]\n * ```\n */\n data: TDatum[]\n\n /**\n * Field name or function to access category values\n * @default \"category\"\n */\n categoryAccessor?: ChartAccessor<TDatum, string>\n\n /**\n * Field name or function to access group values (for grouping bars side by side)\n */\n groupBy: ChartAccessor<TDatum, string>\n\n /**\n * Field name or function to access numeric values\n * @default \"value\"\n */\n valueAccessor?: ChartAccessor<TDatum, number>\n\n /**\n * Chart orientation\n * @default \"vertical\"\n */\n orientation?: \"vertical\" | \"horizontal\"\n\n /**\n * Label for the category axis\n */\n categoryLabel?: string\n\n /**\n * Label for the value axis\n */\n valueLabel?: string\n\n /**\n * Format function for value axis tick labels\n */\n valueFormat?: (d: number | string) => string\n\n /**\n * Field name or function to determine bar color\n * @default groupBy value\n */\n colorBy?: ChartAccessor<TDatum, string>\n\n /**\n * Color scheme for categorical data or custom colors array\n * @default \"category10\"\n */\n colorScheme?: string | string[]\n\n /**\n * Padding between bar groups (in pixels)\n * @default 5\n */\n barPadding?: number\n\n /**\n * Enable hover annotations\n * @default true\n */\n enableHover?: boolean\n\n /**\n * Show grid lines\n * @default false\n */\n showGrid?: boolean\n\n /**\n * Show legend for groups\n * @default true\n */\n showLegend?: boolean\n\n /**\n * Tooltip configuration\n */\n tooltip?: TooltipProp\n\n /**\n * Additional OrdinalFrame props for advanced customization\n * For full control, consider using OrdinalFrame directly\n */\n frameProps?: Partial<Omit<OrdinalFrameProps, \"data\" | \"size\">>\n}\n\n/**\n * GroupedBarChart - Visualize comparisons across categories with side-by-side bars.\n *\n * A simplified wrapper around OrdinalFrame using clusterbar type.\n *\n * @example\n * ```tsx\n * <GroupedBarChart\n * data={[\n * {category: 'Q1', product: 'A', value: 100},\n * {category: 'Q1', product: 'B', value: 150},\n * {category: 'Q2', product: 'A', value: 120},\n * {category: 'Q2', product: 'B', value: 180}\n * ]}\n * groupBy=\"product\"\n * categoryLabel=\"Quarter\"\n * valueLabel=\"Sales\"\n * />\n * ```\n */\nexport function GroupedBarChart<TDatum extends Record<string, any> = Record<string, any>>(props: GroupedBarChartProps<TDatum>) {\n const {\n data,\n width = 600,\n height = 400,\n margin: userMargin,\n className,\n title,\n categoryAccessor = \"category\",\n groupBy,\n valueAccessor = \"value\",\n orientation = \"vertical\",\n categoryLabel,\n valueLabel,\n valueFormat,\n colorBy,\n colorScheme = \"category10\",\n barPadding = 5,\n enableHover = true,\n showGrid = false,\n showLegend = true,\n tooltip,\n frameProps = {}\n } = props\n\n const safeData = data || []\n\n // Default colorBy to groupBy for grouped bar charts\n const actualColorBy = colorBy || groupBy\n\n // Create color scale\n const colorScale = useColorScale(safeData, actualColorBy, colorScheme)\n\n // Piece style function\n const pieceStyle = useMemo(() => {\n return (d: Record<string, any>) => {\n const baseStyle: Record<string, string | number> = {}\n\n if (actualColorBy) {\n baseStyle.fill = getColor(d, actualColorBy, colorScale)\n } else {\n baseStyle.fill = DEFAULT_COLOR\n }\n\n return baseStyle\n }\n }, [actualColorBy, colorScale])\n\n // Build axes configuration\n const axes = useMemo(() => {\n const axesConfig: Array<Record<string, unknown>> = []\n\n if (orientation === \"vertical\") {\n axesConfig.push({\n orient: \"left\",\n label: valueLabel,\n tickFormat: valueFormat,\n ...(showGrid && { tickLineGenerator: () => null })\n })\n\n if (categoryLabel) {\n axesConfig.push({\n orient: \"bottom\",\n label: categoryLabel\n })\n }\n } else {\n if (categoryLabel) {\n axesConfig.push({\n orient: \"left\",\n label: categoryLabel\n })\n }\n\n axesConfig.push({\n orient: \"bottom\",\n label: valueLabel,\n tickFormat: valueFormat,\n ...(showGrid && { tickLineGenerator: () => null })\n })\n }\n\n return axesConfig\n }, [orientation, categoryLabel, valueLabel, valueFormat, showGrid])\n\n // Build legend if needed\n const legend = useMemo(() => {\n if (!showLegend) return undefined\n\n return createLegend({\n data: safeData,\n colorBy: actualColorBy,\n colorScale,\n getColor\n })\n }, [showLegend, safeData, actualColorBy, colorScale])\n\n // Adjust margin for legend if present\n const margin = useMemo(() => {\n const defaultMargin = { top: 50, bottom: 60, left: 70, right: 40 }\n const finalMargin = { ...defaultMargin, ...userMargin }\n\n if (legend && finalMargin.right < 120) {\n finalMargin.right = 120\n }\n\n return finalMargin\n }, [userMargin, legend])\n\n // Default tooltip\n const defaultTooltipContent = useMemo(() => {\n const getGroup = resolveAccessor(groupBy)\n const getCat = resolveAccessor(categoryAccessor)\n const getVal = resolveAccessor<number>(valueAccessor)\n\n return (d: Record<string, any>) => {\n const groupValue = String(getGroup(d))\n const cat = String(getCat(d))\n const val = Number(getVal(d))\n\n return (\n <div className=\"semiotic-tooltip\" style={defaultTooltipStyle}>\n <div style={{ fontWeight: \"bold\" }}>{groupValue}</div>\n <div style={{ marginTop: \"4px\" }}>\n {cat} &middot; {val.toLocaleString()}\n </div>\n </div>\n )\n }\n }, [groupBy, categoryAccessor, valueAccessor])\n\n // Validate data (after all hooks)\n const error = validateArrayData({\n componentName: \"GroupedBarChart\",\n data: safeData,\n accessors: {\n categoryAccessor,\n valueAccessor,\n },\n requiredProps: { groupBy },\n })\n if (error) return <ChartError componentName=\"GroupedBarChart\" message={error} width={width} height={height} />\n\n // Build OrdinalFrame props\n const ordinalFrameProps: OrdinalFrameProps = {\n size: [width, height],\n data: safeData,\n oAccessor: categoryAccessor,\n rAccessor: valueAccessor,\n type: \"clusterbar\",\n projection: orientation === \"horizontal\" ? \"horizontal\" : \"vertical\",\n style: pieceStyle,\n axes: axes as any,\n hoverAnnotation: enableHover,\n margin,\n oPadding: barPadding,\n pieceIDAccessor: groupBy,\n ...(legend && { legend }),\n ...(className && { className }),\n ...(title && { title }),\n tooltipContent: (tooltip ? normalizeTooltip(tooltip) : defaultTooltipContent) as Function,\n transition: true,\n ...frameProps\n }\n\n return <OrdinalFrame {...ordinalFrameProps} />\n}\n","\"use client\"\nimport * as React from \"react\"\nimport { useMemo } from \"react\"\nimport NetworkFrame from \"../../NetworkFrame\"\nimport type { NetworkFrameProps } from \"../../types/networkTypes\"\nimport { getColor, getSize } from \"../shared/colorUtils\"\nimport { createLegend } from \"../shared/legendUtils\"\nimport type { BaseChartProps, ChartAccessor } from \"../shared/types\"\nimport { normalizeTooltip, type TooltipProp } from \"../../Tooltip/Tooltip\"\nimport { useColorScale, DEFAULT_COLOR } from \"../shared/hooks\"\nimport ChartError from \"../shared/ChartError\"\nimport { validateNetworkData } from \"../shared/validateChartData\"\nimport { forceLayout } from \"../../processing/layouts/forceLayout\"\n\n/**\n * ForceDirectedGraph component props\n */\nexport interface ForceDirectedGraphProps<TNode extends Record<string, any> = Record<string, any>, TEdge extends Record<string, any> = Record<string, any>> extends BaseChartProps {\n /**\n * Array of nodes. Each node should have an id property.\n * @example\n * ```ts\n * [{id: 'A', label: 'Node A'}, {id: 'B', label: 'Node B'}]\n * ```\n */\n nodes: TNode[]\n\n /**\n * Array of edges connecting nodes.\n * @example\n * ```ts\n * [{source: 'A', target: 'B'}, {source: 'B', target: 'C'}]\n * ```\n */\n edges: TEdge[]\n\n /**\n * Field name or function to access node IDs\n * @default \"id\"\n */\n nodeIDAccessor?: ChartAccessor<TNode, string>\n\n /**\n * Field name or function to access edge source IDs\n * @default \"source\"\n */\n sourceAccessor?: ChartAccessor<TEdge, string>\n\n /**\n * Field name or function to access edge target IDs\n * @default \"target\"\n */\n targetAccessor?: ChartAccessor<TEdge, string>\n\n /**\n * Field name or function to determine node labels\n * @example\n * ```ts\n * nodeLabel=\"label\" // Use label field\n * nodeLabel={d => d.name} // Use function\n * ```\n */\n nodeLabel?: ChartAccessor<TNode, string>\n\n /**\n * Field name or function to determine node color\n * @example\n * ```ts\n * colorBy=\"group\"\n * colorBy={d => d.value > 10 ? 'red' : 'blue'}\n * ```\n */\n colorBy?: ChartAccessor<TNode, string>\n\n /**\n * Color scheme for categorical data or custom colors array\n * @default \"category10\"\n */\n colorScheme?: string | string[]\n\n /**\n * Field name, number, or function to determine node size\n * @example\n * ```ts\n * nodeSize={5} // Fixed size\n * nodeSize=\"importance\" // Use field\n * nodeSize={d => d.connections * 2} // Use function\n * ```\n */\n nodeSize?: number | ChartAccessor<TNode, number>\n\n /**\n * Min and max radius for nodes when using dynamic sizing\n * @default [5, 20]\n */\n nodeSizeRange?: [number, number]\n\n /**\n * Field name, number, or function to determine edge width\n * @default 1\n */\n edgeWidth?: number | ChartAccessor<TEdge, number>\n\n /**\n * Edge color\n * @default \"#999\"\n */\n edgeColor?: string\n\n /**\n * Edge opacity\n * @default 0.6\n */\n edgeOpacity?: number\n\n /**\n * Number of force simulation iterations\n * @default 300\n */\n iterations?: number\n\n /**\n * Strength of the force simulation\n * Lower values create looser layouts\n * @default 0.1\n */\n forceStrength?: number\n\n /**\n * Enable node labels\n * @default false\n */\n showLabels?: boolean\n\n /**\n * Enable hover annotations\n * @default true\n */\n enableHover?: boolean\n\n /**\n * Show legend\n * @default true (when colorBy is specified)\n */\n showLegend?: boolean\n\n /**\n * Tooltip configuration\n */\n tooltip?: TooltipProp\n\n /**\n * Additional NetworkFrame props for advanced customization\n * For full control, consider using NetworkFrame directly\n * @see https://semiotic.nteract.io/guides/network-frame\n */\n frameProps?: Partial<Omit<NetworkFrameProps, \"nodes\" | \"edges\" | \"size\">>\n}\n\n/**\n * ForceDirectedGraph - Visualize network relationships with force-directed layout\n *\n * A simplified wrapper around NetworkFrame for creating force-directed graphs.\n * Perfect for visualizing connections, communities, and network structures.\n *\n * @example\n * ```tsx\n * // Simple force-directed graph\n * <ForceDirectedGraph\n * nodes={[\n * {id: 'A', label: 'Node A'},\n * {id: 'B', label: 'Node B'},\n * {id: 'C', label: 'Node C'}\n * ]}\n * edges={[\n * {source: 'A', target: 'B'},\n * {source: 'B', target: 'C'}\n * ]}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // With color and size encoding\n * <ForceDirectedGraph\n * nodes={nodes}\n * edges={edges}\n * colorBy=\"group\"\n * nodeSize=\"connections\"\n * nodeSizeRange={[5, 25]}\n * showLabels={true}\n * iterations={500}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // Advanced: Override NetworkFrame props\n * <ForceDirectedGraph\n * nodes={nodes}\n * edges={edges}\n * frameProps={{\n * networkType: { type: \"force\", iterations: 500, edgeStrength: 2 },\n * customNodeIcon: ({ d }) => <circle r={10} fill=\"gold\" />\n * }}\n * />\n * ```\n *\n * @remarks\n * This component wraps {@link NetworkFrame} with sensible defaults for force-directed graphs.\n * For more advanced features like custom layouts, hierarchical networks, or complex interactions,\n * use NetworkFrame directly.\n *\n * **Breadcrumb to advanced usage:**\n * - Use the `frameProps` prop to pass any NetworkFrame prop\n * - See NetworkFrame documentation: https://semiotic.nteract.io/guides/network-frame\n * - All NetworkFrame props are available via `frameProps`\n *\n * @param props - ForceDirectedGraph configuration\n * @returns Rendered force-directed graph\n */\nexport function ForceDirectedGraph<TNode extends Record<string, any> = Record<string, any>, TEdge extends Record<string, any> = Record<string, any>>(props: ForceDirectedGraphProps<TNode, TEdge>) {\n const {\n nodes,\n edges,\n width = 600,\n height = 600,\n margin: userMargin,\n className,\n title,\n nodeIDAccessor = \"id\",\n sourceAccessor = \"source\",\n targetAccessor = \"target\",\n nodeLabel,\n colorBy,\n colorScheme = \"category10\",\n nodeSize = 8,\n nodeSizeRange = [5, 20],\n edgeWidth = 1,\n edgeColor = \"#999\",\n edgeOpacity = 0.6,\n iterations = 300,\n forceStrength = 0.1,\n showLabels = false,\n enableHover = true,\n showLegend,\n tooltip,\n frameProps = {}\n } = props\n\n // Safe data defaults (hooks must always run)\n const safeNodes = nodes || []\n const safeEdges = edges || []\n\n // Create color scale if colorBy is specified\n const colorScale = useColorScale(safeNodes, colorBy, colorScheme)\n\n // Calculate node size domain if dynamic sizing\n const nodeSizeDomain = useMemo(() => {\n if (typeof nodeSize === \"number\") return undefined\n if (!nodeSize) return undefined\n\n const sizes = safeNodes.map((d) => {\n if (typeof nodeSize === \"function\") {\n return nodeSize(d)\n }\n return d[nodeSize]\n })\n\n return [Math.min(...sizes), Math.max(...sizes)] as [number, number]\n }, [safeNodes, nodeSize])\n\n // Node style function\n const nodeStyle = useMemo(() => {\n return (d: Record<string, any>) => {\n const baseStyle: Record<string, string | number> = {}\n\n // Apply color\n if (colorBy) {\n baseStyle.fill = getColor(d, colorBy, colorScale)\n } else {\n baseStyle.fill = DEFAULT_COLOR\n }\n\n // Apply size\n if (typeof nodeSize === \"number\") {\n baseStyle.r = nodeSize\n } else if (nodeSize) {\n baseStyle.r = getSize(d, nodeSize, nodeSizeRange, nodeSizeDomain)\n } else {\n baseStyle.r = 8\n }\n\n return baseStyle\n }\n }, [colorBy, colorScale, nodeSize, nodeSizeRange, nodeSizeDomain])\n\n // Edge style function\n const edgeStyle = useMemo(() => {\n return (d: Record<string, any>) => {\n const baseStyle: Record<string, string | number> = {\n stroke: edgeColor,\n strokeOpacity: edgeOpacity\n }\n\n // Apply width\n if (typeof edgeWidth === \"number\") {\n baseStyle.strokeWidth = edgeWidth\n } else if (typeof edgeWidth === \"function\") {\n baseStyle.strokeWidth = edgeWidth(d as TEdge)\n } else if (edgeWidth) {\n baseStyle.strokeWidth = d[edgeWidth]\n }\n\n return baseStyle\n }\n }, [edgeWidth, edgeColor, edgeOpacity])\n\n // Node label function\n const nodeLabelFn = useMemo(() => {\n if (!showLabels || !nodeLabel) return undefined\n\n return (d: Record<string, any>) => {\n if (typeof nodeLabel === \"function\") {\n return nodeLabel(d as TNode)\n }\n return d[nodeLabel]\n }\n }, [showLabels, nodeLabel])\n\n // Determine if we should show legend\n const shouldShowLegend = showLegend !== undefined ? showLegend : !!colorBy\n\n // Build legend if needed\n const legend = useMemo(() => {\n if (!shouldShowLegend || !colorBy) return undefined\n\n return createLegend({\n data: safeNodes,\n colorBy,\n colorScale,\n getColor\n })\n }, [shouldShowLegend, colorBy, safeNodes, colorScale])\n\n // Adjust margin for legend if present\n const margin = useMemo(() => {\n const defaultMargin = { top: 20, bottom: 20, left: 20, right: 20 }\n const finalMargin = { ...defaultMargin, ...userMargin }\n\n // If legend is present and right margin is too small, increase it\n if (legend && finalMargin.right < 120) {\n finalMargin.right = 120\n }\n\n return finalMargin\n }, [userMargin, legend])\n\n // Validate data (after all hooks)\n const error = validateNetworkData({\n componentName: \"ForceDirectedGraph\",\n nodes,\n edges,\n nodesRequired: true,\n edgesRequired: true,\n accessors: { nodeIDAccessor },\n })\n if (error) return <ChartError componentName=\"ForceDirectedGraph\" message={error} width={width} height={height} />\n\n // Build NetworkFrame props\n const networkFrameProps: NetworkFrameProps = {\n size: [width, height],\n nodes: safeNodes,\n edges: safeEdges,\n nodeIDAccessor,\n sourceAccessor,\n targetAccessor,\n networkType: { type: \"force\", iterations, edgeStrength: forceStrength },\n nodeStyle,\n edgeStyle,\n hoverAnnotation: enableHover,\n margin,\n ...(legend && { legend }),\n ...(nodeLabelFn && { nodeLabels: nodeLabelFn }),\n ...(className && { className }),\n ...(title && { title }),\n // Add tooltip support\n ...(tooltip && { tooltipContent: normalizeTooltip(tooltip) as Function }),\n // Allow frameProps to override defaults\n transition: true,\n ...frameProps,\n _layoutMap: { force: forceLayout }\n }\n\n return <NetworkFrame {...networkFrameProps} />\n}\n","\"use client\"\nimport * as React from \"react\"\nimport { useMemo } from \"react\"\nimport NetworkFrame from \"../../NetworkFrame\"\nimport type { NetworkFrameProps } from \"../../types/networkTypes\"\nimport { getColor, COLOR_SCHEMES, DEFAULT_COLORS } from \"../shared/colorUtils\"\nimport type { BaseChartProps, ChartAccessor } from \"../shared/types\"\nimport { normalizeTooltip, type TooltipProp } from \"../../Tooltip/Tooltip\"\nimport { useColorScale, DEFAULT_COLOR } from \"../shared/hooks\"\nimport ChartError from \"../shared/ChartError\"\nimport { validateNetworkData } from \"../shared/validateChartData\"\nimport { chordLayout } from \"../../processing/layouts/chordLayout\"\n\n/**\n * ChordDiagram component props\n */\nexport interface ChordDiagramProps<TNode extends Record<string, any> = Record<string, any>, TEdge extends Record<string, any> = Record<string, any>> extends BaseChartProps {\n /**\n * Array of nodes (optional - will be inferred from edges if not provided)\n * @example\n * ```ts\n * [{id: 'A', category: 'Group1'}, {id: 'B', category: 'Group2'}]\n * ```\n */\n nodes?: TNode[]\n\n /**\n * Array of edges with source, target, and value\n * @example\n * ```ts\n * [\n * {source: 'A', target: 'B', value: 100},\n * {source: 'B', target: 'A', value: 80},\n * {source: 'A', target: 'A', value: 50}\n * ]\n * ```\n */\n edges: TEdge[]\n\n /**\n * Field name or function to access source node identifier\n * @default \"source\"\n */\n sourceAccessor?: ChartAccessor<TEdge, string>\n\n /**\n * Field name or function to access target node identifier\n * @default \"target\"\n */\n targetAccessor?: ChartAccessor<TEdge, string>\n\n /**\n * Field name or function to access edge value (width)\n * @default \"value\"\n */\n valueAccessor?: ChartAccessor<TEdge, number>\n\n /**\n * Field name or function to access node identifier\n * @default \"id\"\n */\n nodeIdAccessor?: ChartAccessor<TNode, string>\n\n /**\n * Field name or function to determine node color\n * @example\n * ```ts\n * colorBy=\"category\"\n * colorBy={d => d.group}\n * ```\n */\n colorBy?: ChartAccessor<TNode, string>\n\n /**\n * Color scheme for nodes or custom colors array\n * @default \"category10\"\n */\n colorScheme?: string | string[]\n\n /**\n * Edge color strategy\n * - \"source\": color edges by source node\n * - \"target\": color edges by target node\n * - function: custom coloring function\n * @default \"source\"\n */\n edgeColorBy?: \"source\" | \"target\" | ((d: any) => string)\n\n /**\n * Padding angle between adjacent groups (in radians)\n * @default 0.01\n */\n padAngle?: number\n\n /**\n * Width of the outer arc (node) in pixels\n * @default 20\n */\n groupWidth?: number\n\n /**\n * Sort function for groups (nodes) around the circle\n * @example\n * ```ts\n * sortGroups={(a, b) => b.value - a.value}\n * ```\n */\n sortGroups?: (a: any, b: any) => number\n\n /**\n * Label accessor for nodes\n * @default Uses nodeIdAccessor\n */\n nodeLabel?: ChartAccessor<TNode, string>\n\n /**\n * Show labels around circumference\n * @default true\n */\n showLabels?: boolean\n\n /**\n * Enable hover annotations\n * @default true\n */\n enableHover?: boolean\n\n /**\n * Edge opacity\n * @default 0.5\n */\n edgeOpacity?: number\n\n /**\n * Tooltip configuration\n */\n tooltip?: TooltipProp\n\n /**\n * Additional NetworkFrame props for advanced customization\n * For full control, consider using NetworkFrame directly\n * @see https://semiotic.nteract.io/guides/network-frame\n */\n frameProps?: Partial<Omit<NetworkFrameProps, \"edges\" | \"size\">>\n}\n\n/**\n * ChordDiagram - Visualize directed relationships with circular chord layout\n *\n * A simplified wrapper around NetworkFrame for creating chord diagrams.\n * Perfect for showing flow and relationships between entities, especially\n * when there are reciprocal connections and self-loops.\n *\n * @example\n * ```tsx\n * // Simple chord diagram\n * <ChordDiagram\n * edges={[\n * {source: 'A', target: 'B', value: 100},\n * {source: 'B', target: 'A', value: 80},\n * {source: 'A', target: 'A', value: 50}\n * ]}\n * colorBy={(d) => d.id}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // With custom styling and padding\n * <ChordDiagram\n * edges={edges}\n * nodes={nodes}\n * colorBy=\"category\"\n * edgeColorBy=\"source\"\n * padAngle={0.05}\n * groupWidth={30}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // With sorting and labels\n * <ChordDiagram\n * edges={edges}\n * sortGroups={(a, b) => b.value - a.value}\n * nodeLabel=\"name\"\n * showLabels={true}\n * />\n * ```\n *\n * @remarks\n * This component wraps {@link NetworkFrame} with sensible defaults for chord diagrams.\n * Chord diagrams work best when there are asymmetric relationships and self-loops.\n *\n * **Data Requirements:**\n * - Edges must have source, target, and value properties\n * - Self-loops (source === target) are displayed as curved arcs\n * - Reciprocal edges show the asymmetry in relationships\n *\n * **Breadcrumb to advanced usage:**\n * - Use the `frameProps` prop to pass any NetworkFrame prop\n * - See NetworkFrame documentation: https://semiotic.nteract.io/guides/network-frame\n * - All NetworkFrame props are available via `frameProps`\n *\n * @param props - ChordDiagram configuration\n * @returns Rendered chord diagram\n */\nexport function ChordDiagram<TNode extends Record<string, any> = Record<string, any>, TEdge extends Record<string, any> = Record<string, any>>(props: ChordDiagramProps<TNode, TEdge>) {\n const {\n nodes,\n edges,\n width = 600,\n height = 600,\n margin = { top: 50, bottom: 50, left: 50, right: 50 },\n className,\n title,\n sourceAccessor = \"source\",\n targetAccessor = \"target\",\n valueAccessor = \"value\",\n nodeIdAccessor = \"id\",\n colorBy,\n colorScheme = \"category10\",\n edgeColorBy = \"source\",\n padAngle = 0.01,\n groupWidth = 20,\n sortGroups,\n nodeLabel,\n showLabels = true,\n enableHover = true,\n edgeOpacity = 0.5,\n tooltip,\n frameProps = {}\n } = props\n\n // Safe data defaults (hooks must always run)\n const safeEdges = edges || []\n\n // Infer nodes from edges if not provided\n const inferredNodes = useMemo(() => {\n if (nodes && nodes.length > 0) return nodes\n\n const nodeSet = new Set<string>()\n safeEdges.forEach((edge) => {\n const sourceId =\n typeof sourceAccessor === \"function\"\n ? sourceAccessor(edge)\n : edge[sourceAccessor]\n const targetId =\n typeof targetAccessor === \"function\"\n ? targetAccessor(edge)\n : edge[targetAccessor]\n\n nodeSet.add(sourceId)\n nodeSet.add(targetId)\n })\n\n return Array.from(nodeSet).map((id) => ({ id }))\n }, [nodes, safeEdges, sourceAccessor, targetAccessor])\n\n // Create color scale if colorBy is specified\n const colorScale = useColorScale(inferredNodes, colorBy, colorScheme)\n\n // Node style function\n const nodeStyle = useMemo(() => {\n return (d: Record<string, any>, i: number) => {\n const baseStyle: Record<string, string | number> = {\n stroke: \"black\",\n strokeWidth: 1\n }\n\n // Apply color\n if (colorBy) {\n baseStyle.fill = getColor(d, colorBy, colorScale)\n } else {\n // Default: color by index using the color scheme\n const palette = Array.isArray(colorScheme)\n ? colorScheme\n : (COLOR_SCHEMES[colorScheme] || DEFAULT_COLORS)\n const colors = Array.isArray(palette) ? palette : DEFAULT_COLORS\n baseStyle.fill = colors[i % colors.length]\n }\n\n return baseStyle\n }\n }, [colorBy, colorScale, colorScheme, inferredNodes])\n\n // Edge style function\n const edgeStyle = useMemo(() => {\n return (d: Record<string, any>) => {\n const baseStyle: Record<string, string | number> = {\n stroke: \"black\",\n strokeWidth: 0.5,\n fillOpacity: edgeOpacity,\n strokeOpacity: edgeOpacity\n }\n\n // Apply color based on edge coloring strategy\n if (typeof edgeColorBy === \"function\") {\n baseStyle.fill = edgeColorBy(d)\n } else if (edgeColorBy === \"source\") {\n if (colorBy) {\n baseStyle.fill = getColor(d.source, colorBy, colorScale)\n } else {\n baseStyle.fill = nodeStyle(d.source, d.source.index).fill\n }\n } else if (edgeColorBy === \"target\") {\n if (colorBy) {\n baseStyle.fill = getColor(d.target, colorBy, colorScale)\n } else {\n baseStyle.fill = nodeStyle(d.target, d.target.index).fill\n }\n }\n\n return baseStyle\n }\n }, [edgeColorBy, colorBy, colorScale, nodeStyle, edgeOpacity])\n\n // Node label function\n const nodeLabelFn = useMemo(() => {\n if (!showLabels) return undefined\n const accessor = nodeLabel || nodeIdAccessor\n return (d: Record<string, any>) => {\n if (typeof accessor === \"function\") return accessor(d as TNode)\n return d[accessor]\n }\n }, [showLabels, nodeLabel, nodeIdAccessor])\n\n // Build network type configuration\n const networkType = useMemo(() => {\n const config: Record<string, unknown> = {\n type: \"chord\",\n padAngle,\n groupWidth\n }\n\n if (sortGroups) {\n config.sortGroups = sortGroups\n }\n\n return config\n }, [padAngle, groupWidth, sortGroups])\n\n // Validate data (after all hooks)\n const error = validateNetworkData({\n componentName: \"ChordDiagram\",\n edges,\n edgesRequired: true,\n })\n if (error) return <ChartError componentName=\"ChordDiagram\" message={error} width={width} height={height} />\n\n // Build NetworkFrame props\n const networkFrameProps: NetworkFrameProps = {\n size: [width, height],\n nodes: inferredNodes,\n edges: safeEdges,\n nodeStyle,\n edgeStyle,\n nodeIDAccessor: nodeIdAccessor,\n sourceAccessor,\n targetAccessor,\n edgeWidthAccessor: valueAccessor,\n networkType,\n hoverAnnotation: enableHover,\n margin,\n nodeSizeAccessor: () => 5, // Small size for hover target\n ...(nodeLabelFn && { nodeLabels: nodeLabelFn }),\n ...(className && { className }),\n ...(title && { title }),\n // Add tooltip support\n ...(tooltip && { tooltipContent: normalizeTooltip(tooltip) as Function }),\n // Allow frameProps to override defaults\n transition: true,\n ...frameProps,\n _layoutMap: { chord: chordLayout }\n }\n\n return <NetworkFrame {...networkFrameProps} />\n}\n","\"use client\"\nimport * as React from \"react\"\nimport { useMemo } from \"react\"\nimport NetworkFrame from \"../../NetworkFrame\"\nimport type { NetworkFrameProps } from \"../../types/networkTypes\"\nimport { getColor } from \"../shared/colorUtils\"\nimport type { BaseChartProps, ChartAccessor } from \"../shared/types\"\nimport { defaultTooltipStyle, type TooltipProp } from \"../../Tooltip/Tooltip\"\nimport { useColorScale, DEFAULT_COLOR } from \"../shared/hooks\"\nimport ChartError from \"../shared/ChartError\"\nimport { validateNetworkData } from \"../shared/validateChartData\"\nimport { sankeyLayout } from \"../../processing/layouts/sankeyLayout\"\n\n/**\n * SankeyDiagram component props\n */\nexport interface SankeyDiagramProps<TNode extends Record<string, any> = Record<string, any>, TEdge extends Record<string, any> = Record<string, any>> extends BaseChartProps {\n /**\n * Array of nodes (optional - will be inferred from edges if not provided)\n * @example\n * ```ts\n * [{id: 'A', category: 'Source'}, {id: 'B', category: 'Target'}]\n * ```\n */\n nodes?: TNode[]\n\n /**\n * Array of edges (links) with source, target, and value\n * @example\n * ```ts\n * [\n * {source: 'A', target: 'B', value: 100},\n * {source: 'B', target: 'C', value: 80}\n * ]\n * ```\n */\n edges: TEdge[]\n\n /**\n * Field name or function to access source node identifier\n * @default \"source\"\n */\n sourceAccessor?: ChartAccessor<TEdge, string>\n\n /**\n * Field name or function to access target node identifier\n * @default \"target\"\n */\n targetAccessor?: ChartAccessor<TEdge, string>\n\n /**\n * Field name or function to access edge value (flow width)\n * @default \"value\"\n */\n valueAccessor?: ChartAccessor<TEdge, number>\n\n /**\n * Field name or function to access node identifier\n * @default \"id\"\n */\n nodeIdAccessor?: ChartAccessor<TNode, string>\n\n /**\n * Field name or function to determine node color\n * @example\n * ```ts\n * colorBy=\"category\"\n * colorBy={d => d.type}\n * ```\n */\n colorBy?: ChartAccessor<TNode, string>\n\n /**\n * Color scheme for nodes or custom colors array\n * @default \"category10\"\n */\n colorScheme?: string | string[]\n\n /**\n * Edge color strategy\n * - \"source\": color edges by source node\n * - \"target\": color edges by target node\n * - \"gradient\": gradient from source to target\n * - function: custom coloring function\n * @default \"source\"\n */\n edgeColorBy?: \"source\" | \"target\" | \"gradient\" | ((d: any) => string)\n\n /**\n * Layout orientation\n * @default \"horizontal\"\n */\n orientation?: \"horizontal\" | \"vertical\"\n\n /**\n * Node alignment strategy\n * - \"justify\": spread nodes evenly\n * - \"left\": align nodes to the left\n * - \"right\": align nodes to the right\n * - \"center\": center nodes\n * @default \"justify\"\n */\n nodeAlign?: \"justify\" | \"left\" | \"right\" | \"center\"\n\n /**\n * Padding between nodes (ratio of node height)\n * @default 0.05\n */\n nodePaddingRatio?: number\n\n /**\n * Fixed width of nodes in pixels\n * @default 15\n */\n nodeWidth?: number\n\n /**\n * Label accessor for nodes\n * @default Uses nodeIdAccessor\n */\n nodeLabel?: ChartAccessor<TNode, string>\n\n /**\n * Show node labels\n * @default true\n */\n showLabels?: boolean\n\n /**\n * Enable hover annotations\n * @default true\n */\n enableHover?: boolean\n\n /**\n * Edge opacity\n * @default 0.5\n */\n edgeOpacity?: number\n\n /**\n * Sort function for edges\n * @example\n * ```ts\n * edgeSort={(a, b) => b.value - a.value}\n * ```\n */\n edgeSort?: (a: any, b: any) => number\n\n /**\n * Tooltip configuration\n */\n tooltip?: TooltipProp\n\n /**\n * Additional NetworkFrame props for advanced customization\n * For full control, consider using NetworkFrame directly\n * @see https://semiotic.nteract.io/guides/network-frame\n */\n frameProps?: Partial<Omit<NetworkFrameProps, \"edges\" | \"size\">>\n}\n\n/**\n * SankeyDiagram - Visualize flow and magnitude of movement between nodes\n *\n * A simplified wrapper around NetworkFrame for creating Sankey diagrams.\n * Perfect for showing material, energy, cost, or any other quantity\n * flowing through a system.\n *\n * @example\n * ```tsx\n * // Simple Sankey diagram\n * <SankeyDiagram\n * edges={[\n * {source: 'A', target: 'B', value: 100},\n * {source: 'A', target: 'C', value: 50},\n * {source: 'B', target: 'D', value: 80}\n * ]}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // With custom styling and orientation\n * <SankeyDiagram\n * edges={edges}\n * nodes={nodes}\n * colorBy=\"category\"\n * edgeColorBy=\"gradient\"\n * orientation=\"vertical\"\n * nodeAlign=\"center\"\n * />\n * ```\n *\n * @example\n * ```tsx\n * // With sorting and padding\n * <SankeyDiagram\n * edges={edges}\n * nodeWidth={20}\n * nodePaddingRatio={0.1}\n * edgeSort={(a, b) => b.value - a.value}\n * />\n * ```\n *\n * @remarks\n * This component wraps {@link NetworkFrame} with sensible defaults for Sankey diagrams.\n * Sankey diagrams are used for directed acyclic graphs (DAGs).\n *\n * **Data Requirements:**\n * - Edges must have source, target, and value properties\n * - Graph should be acyclic (no cycles)\n * - If cycles are detected, consider using a force-directed layout instead\n *\n * **Breadcrumb to advanced usage:**\n * - Use the `frameProps` prop to pass any NetworkFrame prop\n * - See NetworkFrame documentation: https://semiotic.nteract.io/guides/network-frame\n * - All NetworkFrame props are available via `frameProps`\n * - For circular Sankey diagrams, use the `customSankey` prop via frameProps\n *\n * @param props - SankeyDiagram configuration\n * @returns Rendered Sankey diagram\n */\nexport function SankeyDiagram<TNode extends Record<string, any> = Record<string, any>, TEdge extends Record<string, any> = Record<string, any>>(props: SankeyDiagramProps<TNode, TEdge>) {\n const {\n nodes,\n edges,\n width = 800,\n height = 600,\n margin = { top: 50, bottom: 50, left: 50, right: 50 },\n className,\n title,\n sourceAccessor = \"source\",\n targetAccessor = \"target\",\n valueAccessor = \"value\",\n nodeIdAccessor = \"id\",\n colorBy,\n colorScheme = \"category10\",\n edgeColorBy = \"source\",\n orientation = \"horizontal\",\n nodeAlign = \"justify\",\n nodePaddingRatio = 0.05,\n nodeWidth = 15,\n nodeLabel,\n showLabels = true,\n enableHover = true,\n edgeOpacity = 0.5,\n edgeSort,\n tooltip,\n frameProps = {}\n } = props\n\n // Safe data defaults (hooks must always run)\n const safeEdges = edges || []\n\n // Infer nodes from edges if not provided\n const inferredNodes = useMemo(() => {\n if (nodes && nodes.length > 0) return nodes\n\n const nodeSet = new Set<string>()\n safeEdges.forEach((edge) => {\n const sourceId =\n typeof sourceAccessor === \"function\"\n ? sourceAccessor(edge)\n : edge[sourceAccessor]\n const targetId =\n typeof targetAccessor === \"function\"\n ? targetAccessor(edge)\n : edge[targetAccessor]\n\n nodeSet.add(sourceId)\n nodeSet.add(targetId)\n })\n\n return Array.from(nodeSet).map((id) => ({ id }))\n }, [nodes, safeEdges, sourceAccessor, targetAccessor])\n\n // Create color scale if colorBy is specified\n const colorScale = useColorScale(inferredNodes, colorBy, colorScheme)\n\n // Node style function\n const nodeStyle = useMemo(() => {\n return (d: Record<string, any>) => {\n const baseStyle: Record<string, string | number> = {\n stroke: \"black\",\n strokeWidth: 1\n }\n\n // Apply color\n if (colorBy) {\n baseStyle.fill = getColor(d, colorBy, colorScale)\n } else {\n // Default color\n baseStyle.fill = \"#4d430c\"\n }\n\n return baseStyle\n }\n }, [colorBy, colorScale])\n\n // Edge style function\n const edgeStyle = useMemo(() => {\n return (d: Record<string, any>) => {\n const baseStyle: Record<string, string | number> = {\n stroke: \"black\",\n strokeWidth: 0.5,\n fillOpacity: edgeOpacity,\n strokeOpacity: 0.3\n }\n\n // Apply color based on edge coloring strategy\n if (typeof edgeColorBy === \"function\") {\n baseStyle.fill = edgeColorBy(d)\n } else if (edgeColorBy === \"source\") {\n if (colorBy && d.source) {\n baseStyle.fill = getColor(d.source, colorBy, colorScale)\n } else if (d.source) {\n baseStyle.fill = nodeStyle(d.source).fill\n }\n } else if (edgeColorBy === \"target\") {\n if (colorBy && d.target) {\n baseStyle.fill = getColor(d.target, colorBy, colorScale)\n } else if (d.target) {\n baseStyle.fill = nodeStyle(d.target).fill\n }\n } else if (edgeColorBy === \"gradient\") {\n // For gradient, use a semi-transparent gray\n // (actual gradients would require SVG gradient definitions)\n baseStyle.fill = \"#999\"\n baseStyle.fillOpacity = edgeOpacity * 0.7\n }\n\n return baseStyle\n }\n }, [edgeColorBy, colorBy, colorScale, nodeStyle, edgeOpacity])\n\n // Node label function\n const nodeLabelFn = useMemo(() => {\n if (!showLabels) return undefined\n const accessor = nodeLabel || nodeIdAccessor\n return (d: Record<string, any>) => {\n if (typeof accessor === \"function\") return accessor(d as TNode)\n return d[accessor]\n }\n }, [showLabels, nodeLabel, nodeIdAccessor])\n\n // Build network type configuration\n const networkType = useMemo(() => {\n const config: Record<string, unknown> = {\n type: \"sankey\",\n orient: nodeAlign,\n direction: orientation === \"horizontal\" ? undefined : \"down\",\n nodePaddingRatio,\n nodeWidth\n }\n\n if (edgeSort) {\n config.edgeSort = edgeSort\n }\n\n return config\n }, [nodeAlign, orientation, nodePaddingRatio, nodeWidth, edgeSort])\n\n // Tooltip content renderer for Sankey nodes and edges\n const renderTooltip = useMemo(() => {\n return (d: Record<string, any>) => {\n const isEdge = !!d.edge || (d.source && d.target && !d.degree && d.degree !== 0)\n\n if (isEdge) {\n const sourceId = d.source?.id ?? d.edge?.source?.id ?? \"?\"\n const targetId = d.target?.id ?? d.edge?.target?.id ?? \"?\"\n const val = d.value ?? d.weight\n return (\n <div className=\"semiotic-tooltip\" style={defaultTooltipStyle}>\n <div style={{ fontWeight: \"bold\" }}>{sourceId} → {targetId}</div>\n {val != null && (\n <div style={{ marginTop: 4 }}>\n Value: {typeof val === \"number\" ? val.toLocaleString() : String(val)}\n </div>\n )}\n </div>\n )\n }\n\n // Node tooltip\n const accessor = nodeIdAccessor as string | ((...args: any[]) => any)\n const nodeId = typeof accessor === \"function\"\n ? accessor(d)\n : d[accessor] ?? d.id\n const val = d.value\n return (\n <div className=\"semiotic-tooltip\" style={defaultTooltipStyle}>\n <div style={{ fontWeight: \"bold\" }}>{String(nodeId)}</div>\n {val != null && (\n <div style={{ marginTop: 4 }}>\n Total: {typeof val === \"number\" ? val.toLocaleString() : String(val)}\n </div>\n )}\n {d.degree != null && (\n <div style={{ marginTop: 2 }}>\n Degree: {d.degree}{d.inDegree != null ? ` (${d.inDegree} in, ${d.outDegree} out)` : \"\"}\n </div>\n )}\n </div>\n )\n }\n }, [nodeIdAccessor])\n\n // Use htmlAnnotationRules to handle frame-hover annotations directly.\n // This is checked before tooltipContent in the annotation pipeline,\n // ensuring the custom Sankey tooltip always renders.\n const tooltipFn = typeof tooltip === \"function\" ? tooltip : renderTooltip\n const htmlAnnotationRules = useMemo(() => {\n return ({ d, i, adjustedSize }: { d: Record<string, any>; i: number; adjustedSize?: number[]; [key: string]: any }) => {\n if (d.type !== \"frame-hover\") return null\n const flipped = adjustedSize && d.x > adjustedSize[0] / 2\n const tooltipStyle: React.CSSProperties = {\n position: \"absolute\",\n top: `${d.y}px`\n }\n if (flipped) {\n tooltipStyle.right = `${adjustedSize[0] - d.x}px`\n } else {\n tooltipStyle.left = `${d.x}px`\n }\n return (\n <div\n key={`network-annotation-label-${i}`}\n className={`annotation annotation-network-label ${d.className || \"\"}`}\n style={tooltipStyle}\n >\n {tooltipFn(d)}\n </div>\n )\n }\n }, [tooltipFn])\n\n // Validate data (after all hooks)\n const error = validateNetworkData({\n componentName: \"SankeyDiagram\",\n edges,\n edgesRequired: true,\n })\n if (error) return <ChartError componentName=\"SankeyDiagram\" message={error} width={width} height={height} />\n\n // Build NetworkFrame props\n const networkFrameProps: NetworkFrameProps = {\n size: [width, height],\n nodes: inferredNodes,\n edges: safeEdges,\n nodeStyle,\n edgeStyle,\n nodeIDAccessor: nodeIdAccessor,\n sourceAccessor,\n targetAccessor,\n edgeWidthAccessor: valueAccessor,\n networkType,\n hoverAnnotation: enableHover,\n margin,\n nodeSizeAccessor: () => 5, // Small size for hover target\n ...(nodeLabelFn && { nodeLabels: nodeLabelFn }),\n ...(className && { className }),\n ...(title && { title }),\n // Use htmlAnnotationRules for direct tooltip rendering (checked before tooltipContent)\n htmlAnnotationRules,\n // Allow frameProps to override defaults\n transition: true,\n ...frameProps,\n _layoutMap: { sankey: sankeyLayout, flowchart: sankeyLayout }\n }\n\n return <NetworkFrame {...networkFrameProps} />\n}\n","\"use client\"\nimport * as React from \"react\"\nimport { useMemo } from \"react\"\nimport NetworkFrame from \"../../NetworkFrame\"\nimport type { NetworkFrameProps } from \"../../types/networkTypes\"\nimport { getColor, createColorScale } from \"../shared/colorUtils\"\nimport type { BaseChartProps, ChartAccessor, Accessor } from \"../shared/types\"\nimport { normalizeTooltip, type TooltipProp } from \"../../Tooltip/Tooltip\"\nimport { useColorScale, DEFAULT_COLOR } from \"../shared/hooks\"\nimport ChartError from \"../shared/ChartError\"\nimport { validateObjectData } from \"../shared/validateChartData\"\nimport { hierarchyLayouts } from \"../../processing/layouts/hierarchyLayout\"\n\n/**\n * TreeDiagram component props\n */\nexport interface TreeDiagramProps<TNode extends Record<string, any> = Record<string, any>, TEdge extends Record<string, any> = Record<string, any>> extends BaseChartProps {\n /**\n * Hierarchical data structure\n * @example\n * ```ts\n * {\n * name: 'root',\n * children: [\n * {name: 'A', children: [{name: 'A1'}, {name: 'A2'}]},\n * {name: 'B'}\n * ]\n * }\n * ```\n */\n data: TNode\n\n /**\n * Tree layout algorithm\n * - \"tree\": standard tree layout\n * - \"cluster\": cluster (dendrogram) layout\n * - \"partition\": partition (icicle/sunburst) layout\n * - \"treemap\": treemap layout (@deprecated — use the standalone {@link Treemap} component instead)\n * - \"circlepack\": circle packing layout (@deprecated — use the standalone {@link CirclePack} component instead)\n * @default \"tree\"\n */\n layout?: \"tree\" | \"cluster\" | \"partition\" | \"treemap\" | \"circlepack\"\n\n /**\n * Projection orientation\n * - \"vertical\": top to bottom\n * - \"horizontal\": left to right\n * - \"radial\": radial layout (circular)\n * @default \"vertical\"\n */\n orientation?: \"vertical\" | \"horizontal\" | \"radial\"\n\n /**\n * Field name or function to access children array\n * @default \"children\"\n */\n childrenAccessor?: ChartAccessor<TNode, TNode[]>\n\n /**\n * Field name or function to access node value for sizing\n * Used by treemap and circlepack layouts\n * @default \"value\"\n */\n valueAccessor?: Accessor<number>\n\n /**\n * Field name or function to access node identifier\n * @default \"name\"\n */\n nodeIdAccessor?: ChartAccessor<TNode, string>\n\n /**\n * Field name or function to determine node color\n * @example\n * ```ts\n * colorBy=\"category\"\n * colorBy={d => d.depth}\n * ```\n */\n colorBy?: ChartAccessor<TNode, string | number>\n\n /**\n * Color scheme for nodes or custom colors array\n * @default \"category10\"\n */\n colorScheme?: string | string[]\n\n /**\n * Color nodes by depth level\n * @default false\n */\n colorByDepth?: boolean\n\n /**\n * Edge style\n * - \"line\": straight lines\n * - \"curve\": curved lines\n * @default \"curve\"\n */\n edgeStyle?: \"line\" | \"curve\"\n\n /**\n * Label accessor for nodes\n * @default Uses nodeIdAccessor\n */\n nodeLabel?: ChartAccessor<TNode, string>\n\n /**\n * Show node labels\n * @default true\n */\n showLabels?: boolean\n\n /**\n * Node size for tree/cluster layouts\n * @default 5\n */\n nodeSize?: number\n\n /**\n * Enable hover annotations\n * @default true\n */\n enableHover?: boolean\n\n /**\n * Tooltip configuration\n */\n tooltip?: TooltipProp\n\n /**\n * Additional NetworkFrame props for advanced customization\n * For full control, consider using NetworkFrame directly\n * @see https://semiotic.nteract.io/guides/network-frame\n */\n frameProps?: Partial<Omit<NetworkFrameProps, \"edges\" | \"size\">>\n}\n\n/**\n * TreeDiagram - Visualize hierarchical data structures\n *\n * A simplified wrapper around NetworkFrame for creating tree diagrams.\n * Perfect for organizational charts, file systems, taxonomies, and\n * any hierarchical data.\n *\n * @example\n * ```tsx\n * // Simple tree\n * <TreeDiagram\n * data={{\n * name: 'Root',\n * children: [\n * {name: 'A', children: [{name: 'A1'}, {name: 'A2'}]},\n * {name: 'B'}\n * ]\n * }}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // Horizontal cluster (dendrogram)\n * <TreeDiagram\n * data={hierarchicalData}\n * layout=\"cluster\"\n * orientation=\"horizontal\"\n * colorByDepth={true}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // Radial tree\n * <TreeDiagram\n * data={hierarchicalData}\n * layout=\"tree\"\n * orientation=\"radial\"\n * colorBy=\"category\"\n * nodeSize={8}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // Treemap with sizing\n * <TreeDiagram\n * data={hierarchicalData}\n * layout=\"treemap\"\n * valueAccessor=\"size\"\n * colorBy=\"type\"\n * />\n * ```\n *\n * @example\n * ```tsx\n * // Circle pack\n * <TreeDiagram\n * data={hierarchicalData}\n * layout=\"circlepack\"\n * valueAccessor=\"value\"\n * colorByDepth={true}\n * />\n * ```\n *\n * @remarks\n * This component wraps {@link NetworkFrame} with sensible defaults for tree diagrams.\n * Different layouts are suited for different use cases:\n * - **tree/cluster**: Good for organizational structures, phylogenetic trees\n * - **treemap**: Good for showing proportional sizes (disk usage, budget allocation)\n * - **partition**: Good for hierarchical proportions (icicle or sunburst charts)\n * - **circlepack**: Good for nested hierarchies with size encoding\n *\n * **Data Requirements:**\n * - Data must be hierarchical JSON with a children property (or custom accessor)\n * - For treemap/circlepack, nodes should have a value property for sizing\n *\n * **Breadcrumb to advanced usage:**\n * - Use the `frameProps` prop to pass any NetworkFrame prop\n * - See NetworkFrame documentation: https://semiotic.nteract.io/guides/network-frame\n * - All NetworkFrame props are available via `frameProps`\n *\n * @param props - TreeDiagram configuration\n * @returns Rendered tree diagram\n */\nexport function TreeDiagram<TNode extends Record<string, any> = Record<string, any>, TEdge extends Record<string, any> = Record<string, any>>(props: TreeDiagramProps<TNode, TEdge>) {\n const {\n data,\n width = 600,\n height = 600,\n margin = { top: 50, bottom: 50, left: 50, right: 50 },\n className,\n title,\n layout = \"tree\",\n orientation = \"vertical\",\n childrenAccessor = \"children\",\n valueAccessor = \"value\",\n nodeIdAccessor = \"name\",\n colorBy,\n colorScheme = \"category10\",\n colorByDepth = false,\n edgeStyle = \"curve\",\n nodeLabel,\n showLabels = true,\n nodeSize = 5,\n enableHover = true,\n tooltip,\n frameProps = {}\n } = props\n\n // Flatten hierarchy to get all nodes for color scale\n const allNodes = useMemo(() => {\n if (!data) return []\n const nodes: Array<Record<string, any>> = []\n const traverse = (node: Record<string, any>) => {\n nodes.push(node)\n const children =\n typeof childrenAccessor === \"function\"\n ? childrenAccessor(node as TNode)\n : node[childrenAccessor]\n if (children && Array.isArray(children)) {\n children.forEach(traverse)\n }\n }\n traverse(data)\n return nodes\n }, [data, childrenAccessor])\n\n // Create color scale if colorBy is specified\n const colorScale = useMemo(() => {\n if (colorByDepth) {\n // Color by depth level\n return createColorScale(\n allNodes.map((_, idx) => ({ depth: idx % 5 })),\n \"depth\",\n colorScheme\n )\n }\n\n if (!colorBy || typeof colorBy === \"function\") {\n return undefined\n }\n\n const scheme = Array.isArray(colorScheme) ? colorScheme : colorScheme\n return createColorScale(allNodes, colorBy as string, scheme)\n }, [allNodes, colorBy, colorByDepth, colorScheme])\n\n // Node style function\n const nodeStyleFn = useMemo(() => {\n return (d: Record<string, any>) => {\n const baseStyle: Record<string, string | number> = {\n stroke: \"black\",\n strokeWidth: 1\n }\n\n // Apply color\n if (colorByDepth) {\n baseStyle.fill = getColor({ depth: d.depth || 0 }, \"depth\", colorScale)\n } else if (colorBy) {\n baseStyle.fill = getColor(d, colorBy as string | ((d: any) => string), colorScale)\n } else {\n // Default color\n baseStyle.fill = DEFAULT_COLOR\n }\n\n return baseStyle\n }\n }, [colorBy, colorByDepth, colorScale])\n\n // Edge style function\n const edgeStyleFn = useMemo(() => {\n return () => ({\n stroke: \"#999\",\n strokeWidth: 1,\n fill: \"none\"\n })\n }, [])\n\n // Build network type configuration\n const networkType = useMemo(() => {\n const config: Record<string, unknown> = {\n type: layout\n }\n\n // Set projection for tree/cluster layouts\n if (layout === \"tree\" || layout === \"cluster\") {\n config.projection = orientation\n }\n\n // For partition layout, radial creates sunburst\n if (layout === \"partition\" && orientation === \"radial\") {\n config.projection = \"radial\"\n }\n\n return config\n }, [layout, orientation])\n\n // Hierarchy configuration\n const hierarchyChildren = useMemo(() => {\n if (typeof childrenAccessor === \"function\") {\n return childrenAccessor\n }\n return (d: Record<string, any>) => d[childrenAccessor]\n }, [childrenAccessor])\n\n const hierarchySum = useMemo(() => {\n // For layouts that need sizing (treemap, circlepack, partition)\n if (\n layout === \"treemap\" ||\n layout === \"circlepack\" ||\n layout === \"partition\"\n ) {\n if (typeof valueAccessor === \"function\") {\n return valueAccessor\n }\n return (d: Record<string, any>) => d[valueAccessor] || 1\n }\n return undefined\n }, [layout, valueAccessor])\n\n // Validate data (after all hooks)\n const error = validateObjectData({\n componentName: \"TreeDiagram\",\n data,\n })\n if (error) return <ChartError componentName=\"TreeDiagram\" message={error} width={width} height={height} />\n\n if (layout === \"treemap\") {\n console.info(\"TreeDiagram: Consider using the standalone <Treemap> component for treemap visualizations.\")\n } else if (layout === \"circlepack\") {\n console.info(\"TreeDiagram: Consider using the standalone <CirclePack> component for circle packing visualizations.\")\n }\n\n // Build NetworkFrame props\n const networkFrameProps: NetworkFrameProps = {\n size: [width, height],\n edges: data, // For hierarchical data, pass to edges\n nodeStyle: nodeStyleFn,\n edgeStyle: edgeStyleFn,\n nodeIDAccessor: nodeIdAccessor,\n networkType,\n hoverAnnotation: enableHover,\n margin,\n nodeSizeAccessor: () => nodeSize,\n ...(hierarchyChildren && {\n hierarchyChildren: hierarchyChildren as Function\n }),\n ...(hierarchySum && { hierarchySum: hierarchySum as Function }),\n ...(className && { className }),\n ...(title && { title }),\n // Add tooltip support\n ...(tooltip && { tooltipContent: normalizeTooltip(tooltip) as Function }),\n // Allow frameProps to override defaults\n transition: true,\n ...frameProps,\n _layoutMap: hierarchyLayouts\n }\n\n return <NetworkFrame {...networkFrameProps} />\n}\n","\"use client\"\nimport * as React from \"react\"\nimport { useMemo } from \"react\"\nimport NetworkFrame from \"../../NetworkFrame\"\nimport type { NetworkFrameProps } from \"../../types/networkTypes\"\nimport { getColor, createColorScale } from \"../shared/colorUtils\"\nimport type { BaseChartProps, ChartAccessor, Accessor } from \"../shared/types\"\nimport { normalizeTooltip, type TooltipProp } from \"../../Tooltip/Tooltip\"\nimport { DEFAULT_COLOR } from \"../shared/hooks\"\nimport ChartError from \"../shared/ChartError\"\nimport { validateObjectData } from \"../shared/validateChartData\"\nimport { hierarchyLayouts } from \"../../processing/layouts/hierarchyLayout\"\n\n/**\n * Treemap component props\n */\nexport interface TreemapProps<TNode extends Record<string, any> = Record<string, any>, TEdge extends Record<string, any> = Record<string, any>> extends BaseChartProps {\n /**\n * Hierarchical data structure with children and values.\n * @example\n * ```ts\n * {\n * name: 'root',\n * children: [\n * {name: 'A', value: 100},\n * {name: 'B', children: [{name: 'B1', value: 50}, {name: 'B2', value: 30}]}\n * ]\n * }\n * ```\n */\n data: TNode\n\n /**\n * Field name or function to access children array\n * @default \"children\"\n */\n childrenAccessor?: ChartAccessor<TNode, TNode[]>\n\n /**\n * Field name or function to access node value for sizing\n * @default \"value\"\n */\n valueAccessor?: Accessor<number>\n\n /**\n * Field name or function to access node identifier\n * @default \"name\"\n */\n nodeIdAccessor?: ChartAccessor<TNode, string>\n\n /**\n * Field name or function to determine node color\n */\n colorBy?: ChartAccessor<TNode, string | number>\n\n /**\n * Color scheme for nodes or custom colors array\n * @default \"category10\"\n */\n colorScheme?: string | string[]\n\n /**\n * Color nodes by hierarchy depth level\n * @default false\n */\n colorByDepth?: boolean\n\n /**\n * Show labels on treemap cells\n * @default true\n */\n showLabels?: boolean\n\n /**\n * Node label accessor\n * @default Uses nodeIdAccessor\n */\n nodeLabel?: ChartAccessor<TNode, string>\n\n /**\n * Enable hover annotations\n * @default true\n */\n enableHover?: boolean\n\n /**\n * Tooltip configuration\n */\n tooltip?: TooltipProp\n\n /**\n * Additional NetworkFrame props for advanced customization\n * For full control, consider using NetworkFrame directly\n */\n frameProps?: Partial<Omit<NetworkFrameProps, \"edges\" | \"size\">>\n}\n\n/**\n * Treemap - Visualize hierarchical data as nested rectangles.\n *\n * A simplified wrapper around NetworkFrame with treemap layout.\n * Each rectangle's area is proportional to its value.\n *\n * @example\n * ```tsx\n * <Treemap\n * data={{\n * name: 'root',\n * children: [\n * {name: 'A', value: 100},\n * {name: 'B', value: 200},\n * {name: 'C', value: 150}\n * ]\n * }}\n * colorBy=\"name\"\n * />\n * ```\n */\nexport function Treemap<TNode extends Record<string, any> = Record<string, any>, TEdge extends Record<string, any> = Record<string, any>>(props: TreemapProps<TNode, TEdge>) {\n const {\n data,\n width = 600,\n height = 600,\n margin = { top: 10, bottom: 10, left: 10, right: 10 },\n className,\n title,\n childrenAccessor = \"children\",\n valueAccessor = \"value\",\n nodeIdAccessor = \"name\",\n colorBy,\n colorScheme = \"category10\",\n colorByDepth = false,\n showLabels = true,\n nodeLabel,\n enableHover = true,\n tooltip,\n frameProps = {}\n } = props\n\n // Flatten hierarchy to get all nodes for color scale\n const allNodes = useMemo(() => {\n if (!data) return []\n const nodes: Array<Record<string, any>> = []\n const traverse = (node: Record<string, any>) => {\n nodes.push(node)\n const children =\n typeof childrenAccessor === \"function\"\n ? childrenAccessor(node as TNode)\n : node[childrenAccessor]\n if (children && Array.isArray(children)) {\n children.forEach(traverse)\n }\n }\n traverse(data)\n return nodes\n }, [data, childrenAccessor])\n\n // Create color scale\n const colorScale = useMemo(() => {\n if (colorByDepth) {\n return createColorScale(\n allNodes.map((_, idx) => ({ depth: idx % 5 })),\n \"depth\",\n colorScheme\n )\n }\n\n if (!colorBy || typeof colorBy === \"function\") {\n return undefined\n }\n\n return createColorScale(allNodes, colorBy as string, colorScheme)\n }, [allNodes, colorBy, colorByDepth, colorScheme])\n\n // Node style function\n const nodeStyleFn = useMemo(() => {\n return (d: Record<string, any>) => {\n const baseStyle: Record<string, string | number> = {\n stroke: \"currentColor\",\n strokeWidth: 1,\n strokeOpacity: 0.3\n }\n\n if (colorByDepth) {\n baseStyle.fill = getColor({ depth: d.depth || 0 }, \"depth\", colorScale)\n } else if (colorBy) {\n baseStyle.fill = getColor(d, colorBy as string | ((d: any) => string), colorScale)\n } else {\n baseStyle.fill = DEFAULT_COLOR\n }\n\n return baseStyle\n }\n }, [colorBy, colorByDepth, colorScale])\n\n // Hierarchy configuration\n const hierarchyChildren = useMemo(() => {\n if (typeof childrenAccessor === \"function\") {\n return childrenAccessor\n }\n return (d: Record<string, any>) => d[childrenAccessor]\n }, [childrenAccessor])\n\n const hierarchySum = useMemo(() => {\n if (typeof valueAccessor === \"function\") {\n return valueAccessor\n }\n return (d: Record<string, any>) => d[valueAccessor] || 1\n }, [valueAccessor])\n\n // Node label function\n const nodeLabelFn = useMemo(() => {\n if (!showLabels) return undefined\n\n if (nodeLabel) {\n if (typeof nodeLabel === \"function\") return nodeLabel\n return (d: Record<string, any>) => d[nodeLabel]\n }\n\n // Default: use nodeIdAccessor\n if (typeof nodeIdAccessor === \"function\") return nodeIdAccessor\n return (d: Record<string, any>) => d[nodeIdAccessor]\n }, [showLabels, nodeLabel, nodeIdAccessor])\n\n // Validate data (after all hooks)\n const error = validateObjectData({\n componentName: \"Treemap\",\n data,\n })\n if (error) return <ChartError componentName=\"Treemap\" message={error} width={width} height={height} />\n\n // Build NetworkFrame props\n const networkFrameProps: NetworkFrameProps = {\n size: [width, height],\n edges: data,\n nodeStyle: nodeStyleFn,\n edgeStyle: () => ({ fill: \"none\", stroke: \"none\" }),\n nodeIDAccessor: nodeIdAccessor,\n networkType: { type: \"treemap\" },\n hoverAnnotation: enableHover,\n margin,\n ...(hierarchyChildren && {\n hierarchyChildren: hierarchyChildren as Function\n }),\n ...(hierarchySum && { hierarchySum: hierarchySum as Function }),\n ...(nodeLabelFn && { nodeLabels: nodeLabelFn as (args: Record<string, any>) => string }),\n ...(className && { className }),\n ...(title && { title }),\n ...(tooltip && { tooltipContent: normalizeTooltip(tooltip) as Function }),\n transition: true,\n ...frameProps,\n _layoutMap: { treemap: hierarchyLayouts.treemap }\n }\n\n return <NetworkFrame {...networkFrameProps} />\n}\n","\"use client\"\nimport * as React from \"react\"\nimport { useMemo } from \"react\"\nimport NetworkFrame from \"../../NetworkFrame\"\nimport type { NetworkFrameProps } from \"../../types/networkTypes\"\nimport { getColor, createColorScale } from \"../shared/colorUtils\"\nimport type { BaseChartProps, ChartAccessor, Accessor } from \"../shared/types\"\nimport { normalizeTooltip, type TooltipProp } from \"../../Tooltip/Tooltip\"\nimport { DEFAULT_COLOR } from \"../shared/hooks\"\nimport ChartError from \"../shared/ChartError\"\nimport { validateObjectData } from \"../shared/validateChartData\"\nimport { hierarchyLayouts } from \"../../processing/layouts/hierarchyLayout\"\n\n/**\n * CirclePack component props\n */\nexport interface CirclePackProps<TNode extends Record<string, any> = Record<string, any>, TEdge extends Record<string, any> = Record<string, any>> extends BaseChartProps {\n /**\n * Hierarchical data structure with children and values.\n * @example\n * ```ts\n * {\n * name: 'root',\n * children: [\n * {name: 'A', value: 100},\n * {name: 'B', children: [{name: 'B1', value: 50}, {name: 'B2', value: 30}]}\n * ]\n * }\n * ```\n */\n data: TNode\n\n /**\n * Field name or function to access children array\n * @default \"children\"\n */\n childrenAccessor?: ChartAccessor<TNode, TNode[]>\n\n /**\n * Field name or function to access node value for sizing\n * @default \"value\"\n */\n valueAccessor?: Accessor<number>\n\n /**\n * Field name or function to access node identifier\n * @default \"name\"\n */\n nodeIdAccessor?: ChartAccessor<TNode, string>\n\n /**\n * Field name or function to determine node color\n */\n colorBy?: ChartAccessor<TNode, string | number>\n\n /**\n * Color scheme for nodes or custom colors array\n * @default \"category10\"\n */\n colorScheme?: string | string[]\n\n /**\n * Color nodes by hierarchy depth level\n * @default false\n */\n colorByDepth?: boolean\n\n /**\n * Show labels on circles\n * @default true\n */\n showLabels?: boolean\n\n /**\n * Node label accessor\n * @default Uses nodeIdAccessor\n */\n nodeLabel?: ChartAccessor<TNode, string>\n\n /**\n * Circle fill opacity (helps see nesting)\n * @default 0.7\n */\n circleOpacity?: number\n\n /**\n * Enable hover annotations\n * @default true\n */\n enableHover?: boolean\n\n /**\n * Tooltip configuration\n */\n tooltip?: TooltipProp\n\n /**\n * Additional NetworkFrame props for advanced customization\n * For full control, consider using NetworkFrame directly\n */\n frameProps?: Partial<Omit<NetworkFrameProps, \"edges\" | \"size\">>\n}\n\n/**\n * CirclePack - Visualize hierarchical data as nested circles.\n *\n * A simplified wrapper around NetworkFrame with circlepack layout.\n * Each circle's area is proportional to its value.\n *\n * @example\n * ```tsx\n * <CirclePack\n * data={{\n * name: 'root',\n * children: [\n * {name: 'A', value: 100},\n * {name: 'B', value: 200},\n * {name: 'C', value: 150}\n * ]\n * }}\n * colorByDepth\n * />\n * ```\n */\nexport function CirclePack<TNode extends Record<string, any> = Record<string, any>, TEdge extends Record<string, any> = Record<string, any>>(props: CirclePackProps<TNode, TEdge>) {\n const {\n data,\n width = 600,\n height = 600,\n margin = { top: 10, bottom: 10, left: 10, right: 10 },\n className,\n title,\n childrenAccessor = \"children\",\n valueAccessor = \"value\",\n nodeIdAccessor = \"name\",\n colorBy,\n colorScheme = \"category10\",\n colorByDepth = false,\n showLabels = true,\n nodeLabel,\n circleOpacity = 0.7,\n enableHover = true,\n tooltip,\n frameProps = {}\n } = props\n\n // Flatten hierarchy to get all nodes for color scale\n const allNodes = useMemo(() => {\n if (!data) return []\n const nodes: Array<Record<string, any>> = []\n const traverse = (node: Record<string, any>) => {\n nodes.push(node)\n const children =\n typeof childrenAccessor === \"function\"\n ? childrenAccessor(node as TNode)\n : node[childrenAccessor]\n if (children && Array.isArray(children)) {\n children.forEach(traverse)\n }\n }\n traverse(data)\n return nodes\n }, [data, childrenAccessor])\n\n // Create color scale\n const colorScale = useMemo(() => {\n if (colorByDepth) {\n return createColorScale(\n allNodes.map((_, idx) => ({ depth: idx % 5 })),\n \"depth\",\n colorScheme\n )\n }\n\n if (!colorBy || typeof colorBy === \"function\") {\n return undefined\n }\n\n return createColorScale(allNodes, colorBy as string, colorScheme)\n }, [allNodes, colorBy, colorByDepth, colorScheme])\n\n // Node style function\n const nodeStyleFn = useMemo(() => {\n return (d: Record<string, any>) => {\n const baseStyle: Record<string, string | number> = {\n stroke: \"currentColor\",\n strokeWidth: 1,\n strokeOpacity: 0.3,\n fillOpacity: circleOpacity\n }\n\n if (colorByDepth) {\n baseStyle.fill = getColor({ depth: d.depth || 0 }, \"depth\", colorScale)\n } else if (colorBy) {\n baseStyle.fill = getColor(d, colorBy as string | ((d: any) => string), colorScale)\n } else {\n baseStyle.fill = DEFAULT_COLOR\n }\n\n return baseStyle\n }\n }, [colorBy, colorByDepth, colorScale, circleOpacity])\n\n // Hierarchy configuration\n const hierarchyChildren = useMemo(() => {\n if (typeof childrenAccessor === \"function\") {\n return childrenAccessor\n }\n return (d: Record<string, any>) => d[childrenAccessor]\n }, [childrenAccessor])\n\n const hierarchySum = useMemo(() => {\n if (typeof valueAccessor === \"function\") {\n return valueAccessor\n }\n return (d: Record<string, any>) => d[valueAccessor] || 1\n }, [valueAccessor])\n\n // Node label function\n const nodeLabelFn = useMemo(() => {\n if (!showLabels) return undefined\n\n if (nodeLabel) {\n if (typeof nodeLabel === \"function\") return nodeLabel\n return (d: Record<string, any>) => d[nodeLabel]\n }\n\n if (typeof nodeIdAccessor === \"function\") return nodeIdAccessor\n return (d: Record<string, any>) => d[nodeIdAccessor]\n }, [showLabels, nodeLabel, nodeIdAccessor])\n\n // Validate data (after all hooks)\n const error = validateObjectData({\n componentName: \"CirclePack\",\n data,\n })\n if (error) return <ChartError componentName=\"CirclePack\" message={error} width={width} height={height} />\n\n // Build NetworkFrame props\n const networkFrameProps: NetworkFrameProps = {\n size: [width, height],\n edges: data,\n nodeStyle: nodeStyleFn,\n edgeStyle: () => ({ fill: \"none\", stroke: \"none\" }),\n nodeIDAccessor: nodeIdAccessor,\n networkType: { type: \"circlepack\" },\n hoverAnnotation: enableHover,\n margin,\n ...(hierarchyChildren && {\n hierarchyChildren: hierarchyChildren as Function\n }),\n ...(hierarchySum && { hierarchySum: hierarchySum as Function }),\n ...(nodeLabelFn && { nodeLabels: nodeLabelFn as (args: Record<string, any>) => string }),\n ...(className && { className }),\n ...(title && { title }),\n ...(tooltip && { tooltipContent: normalizeTooltip(tooltip) as Function }),\n transition: true,\n ...frameProps,\n _layoutMap: { circlepack: hierarchyLayouts.circlepack }\n }\n\n return <NetworkFrame {...networkFrameProps} />\n}\n","export class RingBuffer<T> {\n private buffer: (T | undefined)[]\n private head: number = 0\n private _size: number = 0\n\n constructor(private _capacity: number) {\n if (_capacity < 1) {\n throw new Error(\"RingBuffer capacity must be at least 1\")\n }\n this.buffer = new Array(_capacity)\n }\n\n push(value: T): T | undefined {\n let evicted: T | undefined\n if (this._size === this._capacity) {\n // Buffer is full — the slot at head is the oldest item\n evicted = this.buffer[this.head]\n } else {\n this._size++\n }\n this.buffer[this.head] = value\n this.head = (this.head + 1) % this._capacity\n return evicted\n }\n\n pushMany(values: T[]): T[] {\n const evicted: T[] = []\n for (const v of values) {\n const e = this.push(v)\n if (e !== undefined) {\n evicted.push(e)\n }\n }\n return evicted\n }\n\n get(index: number): T | undefined {\n if (index < 0 || index >= this._size) return undefined\n const realIndex =\n (this.head - this._size + index + this._capacity) % this._capacity\n return this.buffer[realIndex]\n }\n\n peek(): T | undefined {\n if (this._size === 0) return undefined\n return this.buffer[(this.head - 1 + this._capacity) % this._capacity]\n }\n\n peekOldest(): T | undefined {\n if (this._size === 0) return undefined\n return this.buffer[(this.head - this._size + this._capacity) % this._capacity]\n }\n\n [Symbol.iterator](): Iterator<T> {\n let i = 0\n const self = this\n return {\n next(): IteratorResult<T> {\n if (i >= self._size) return { done: true, value: undefined } as IteratorReturnResult<undefined>\n return { done: false, value: self.get(i++)! }\n }\n }\n }\n\n toArray(): T[] {\n const result: T[] = []\n for (const item of this) {\n result.push(item)\n }\n return result\n }\n\n resize(newCapacity: number): T[] {\n if (newCapacity < 1) {\n throw new Error(\"RingBuffer capacity must be at least 1\")\n }\n const items = this.toArray()\n const evicted: T[] = []\n while (items.length > newCapacity) {\n evicted.push(items.shift()!)\n }\n this._capacity = newCapacity\n this.buffer = new Array(newCapacity)\n this.head = 0\n this._size = 0\n for (const item of items) {\n this.push(item)\n }\n return evicted\n }\n\n clear(): void {\n this.buffer = new Array(this._capacity)\n this.head = 0\n this._size = 0\n }\n\n get size(): number {\n return this._size\n }\n\n get capacity(): number {\n return this._capacity\n }\n\n get full(): boolean {\n return this._size === this._capacity\n }\n}\n","export class IncrementalExtent {\n private _min: number = Infinity\n private _max: number = -Infinity\n private _dirty: boolean = false\n\n push(value: number): void {\n if (Number.isNaN(value)) return\n if (value < this._min) this._min = value\n if (value > this._max) this._max = value\n }\n\n evict(value: number): void {\n if (value === this._min || value === this._max) {\n this._dirty = true\n }\n }\n\n recalculate<T>(\n values: Iterable<T>,\n accessor?: (v: T) => number\n ): void {\n this._min = Infinity\n this._max = -Infinity\n for (const v of values) {\n const n = accessor ? accessor(v) : (v as number)\n if (Number.isNaN(n)) continue\n if (n < this._min) this._min = n\n if (n > this._max) this._max = n\n }\n this._dirty = false\n }\n\n clear(): void {\n this._min = Infinity\n this._max = -Infinity\n this._dirty = false\n }\n\n get extent(): [number, number] {\n return [this._min, this._max]\n }\n\n get min(): number {\n return this._min\n }\n\n get max(): number {\n return this._max\n }\n\n get dirty(): boolean {\n return this._dirty\n }\n}\n","import type { RendererFn } from \"./types\"\n\ninterface ColorThreshold {\n value: number\n color: string\n thresholdType: \"greater\" | \"lesser\"\n}\n\nfunction resolveColor(\n value: number,\n thresholds: ColorThreshold[],\n baseColor: string\n): string {\n let color = baseColor\n for (const t of thresholds) {\n if (t.thresholdType === \"lesser\") {\n if (value < t.value) color = t.color\n } else {\n if (value > t.value) color = t.color\n }\n }\n return color\n}\n\nexport const lineRenderer: RendererFn = (ctx, data, scales, layout, style, accessors, annotations) => {\n const { time: timeScale, value: valueScale } = scales\n const { timeAxis } = layout\n const { time: getTime, value: getValue } = accessors\n\n const baseColor = style.stroke || \"#007bff\"\n\n // Extract color thresholds from annotations\n const colorThresholds: ColorThreshold[] | null =\n annotations\n ? annotations\n .filter((a) => a.type === \"threshold\" && a.color)\n .map((a) => ({\n value: a.value as number,\n color: a.color as string,\n thresholdType: (a.thresholdType || \"greater\") as \"greater\" | \"lesser\"\n }))\n : null\n\n const hasColorThresholds = colorThresholds && colorThresholds.length > 0\n\n // Fast path: no color thresholds — single-path draw, zero overhead\n if (!hasColorThresholds) {\n ctx.beginPath()\n ctx.strokeStyle = baseColor\n ctx.lineWidth = style.strokeWidth || 2\n if (style.strokeDasharray) {\n ctx.setLineDash(style.strokeDasharray.split(/[\\s,]+/).map(Number))\n } else {\n ctx.setLineDash([])\n }\n\n let started = false\n\n for (const d of data) {\n const t = getTime(d)\n const v = getValue(d)\n\n if (t == null || v == null || Number.isNaN(t) || Number.isNaN(v)) {\n started = false\n continue\n }\n\n const tPixel = timeScale(t)\n const vPixel = valueScale(v)\n\n const x = timeAxis === \"x\" ? tPixel : vPixel\n const y = timeAxis === \"x\" ? vPixel : tPixel\n\n if (!started) {\n ctx.moveTo(x, y)\n started = true\n } else {\n ctx.lineTo(x, y)\n }\n }\n\n ctx.stroke()\n return\n }\n\n // Threshold mode: segment-based drawing\n ctx.lineWidth = style.strokeWidth || 2\n if (style.strokeDasharray) {\n ctx.setLineDash(style.strokeDasharray.split(/[\\s,]+/).map(Number))\n } else {\n ctx.setLineDash([])\n }\n\n let prevX: number | null = null\n let prevY: number | null = null\n let prevValue: number | null = null\n let prevColor: string | null = null\n let pathStarted = false\n\n function toPixel(t: number, v: number): [number, number] {\n const tPixel = timeScale(t)\n const vPixel = valueScale(v)\n return timeAxis === \"x\" ? [tPixel, vPixel] : [vPixel, tPixel]\n }\n\n function startSegment(color: string, x: number, y: number) {\n ctx.beginPath()\n ctx.strokeStyle = color\n ctx.moveTo(x, y)\n pathStarted = true\n }\n\n function endSegment() {\n if (pathStarted) {\n ctx.stroke()\n pathStarted = false\n }\n }\n\n for (const d of data) {\n const t = getTime(d)\n const v = getValue(d)\n\n if (t == null || v == null || Number.isNaN(t) || Number.isNaN(v)) {\n endSegment()\n prevX = null\n prevY = null\n prevValue = null\n prevColor = null\n continue\n }\n\n const [x, y] = toPixel(t, v)\n const currColor = resolveColor(v, colorThresholds, baseColor)\n\n if (prevX === null || prevColor === null || prevValue === null) {\n // First valid point\n startSegment(currColor, x, y)\n prevX = x\n prevY = y\n prevValue = v\n prevColor = currColor\n continue\n }\n\n if (currColor === prevColor) {\n ctx.lineTo(x, y)\n } else {\n // Find all thresholds crossed between prevValue and v, sorted by interpolation t\n const crossings: Array<{ t: number; color: string }> = []\n\n for (const threshold of colorThresholds) {\n const tv = threshold.value\n // Check if the threshold value lies between prevValue and v\n if ((prevValue <= tv && v >= tv) || (prevValue >= tv && v <= tv)) {\n // Don't add crossing at exact endpoints\n if (prevValue !== tv && v !== tv) {\n const interpT = (tv - prevValue) / (v - prevValue)\n crossings.push({ t: interpT, color: \"\" }) // color resolved after sorting\n }\n }\n }\n\n // Sort crossings by interpolation parameter\n crossings.sort((a, b) => a.t - b.t)\n\n // Walk through crossings\n let lastT = 0\n let runningColor = prevColor\n\n for (const crossing of crossings) {\n const midX = prevX + (x - prevX) * crossing.t\n const midY = prevY! + (y - prevY!) * crossing.t\n\n // Determine value at crossing point to resolve next color\n const midValue = prevValue + (v - prevValue) * crossing.t\n // Nudge slightly past the crossing to determine the color on the other side\n const nudgedValue = prevValue + (v - prevValue) * Math.min(crossing.t + 0.0001, 1)\n const nextColor = resolveColor(nudgedValue, colorThresholds, baseColor)\n\n ctx.lineTo(midX, midY)\n endSegment()\n startSegment(nextColor, midX, midY)\n runningColor = nextColor\n }\n\n ctx.lineTo(x, y)\n }\n\n prevX = x\n prevY = y\n prevValue = v\n prevColor = currColor\n }\n\n endSegment()\n}\n","import type { RendererFn } from \"./types\"\n\nconst DEFAULT_PALETTE = [\n \"#007bff\", \"#28a745\", \"#dc3545\", \"#fd7e14\", \"#6f42c1\",\n \"#20c997\", \"#e83e8c\", \"#17a2b8\", \"#6610f2\", \"#ffc107\"\n]\n\ninterface ColorThreshold {\n value: number\n color: string\n thresholdType: \"greater\" | \"lesser\"\n}\n\nfunction resolveColor(\n value: number,\n thresholds: ColorThreshold[],\n baseColor: string\n): string {\n let color = baseColor\n for (const t of thresholds) {\n if (t.thresholdType === \"lesser\") {\n if (value < t.value) color = t.color\n } else {\n if (value > t.value) color = t.color\n }\n }\n return color\n}\n\nexport const swarmRenderer: RendererFn = (ctx, data, scales, layout, style, accessors, annotations, options) => {\n const { time: timeScale, value: valueScale } = scales\n const { timeAxis } = layout\n const { time: getTime, value: getValue, category: getCategory } = accessors\n const ss = options?.swarmStyle\n const barColors = options?.barColors\n\n const radius = ss?.radius ?? 3\n const defaultFill = ss?.fill ?? style.stroke ?? \"#007bff\"\n const opacity = ss?.opacity ?? 0.7\n const hasStroke = ss?.stroke != null\n\n // Extract color thresholds from annotations\n const colorThresholds: ColorThreshold[] | null =\n annotations\n ? annotations\n .filter((a) => a.type === \"threshold\" && a.color)\n .map((a) => ({\n value: a.value as number,\n color: a.color as string,\n thresholdType: (a.thresholdType || \"greater\") as \"greater\" | \"lesser\"\n }))\n : null\n\n const hasColorThresholds = colorThresholds && colorThresholds.length > 0\n\n ctx.globalAlpha = opacity\n\n let paletteIndex = 0\n const categoryColorCache: Record<string, string> = {}\n\n for (const d of data) {\n const t = getTime(d)\n const v = getValue(d)\n if (v == null || Number.isNaN(v)) continue\n\n let x: number, y: number\n if (timeAxis === \"x\") {\n x = timeScale(t)\n y = valueScale(v)\n } else {\n x = valueScale(v)\n y = timeScale(t)\n }\n\n // Determine fill color\n let fill = defaultFill\n if (getCategory) {\n const cat = getCategory(d)\n if (barColors && barColors[cat]) {\n fill = barColors[cat]\n } else {\n if (!(cat in categoryColorCache)) {\n categoryColorCache[cat] = DEFAULT_PALETTE[paletteIndex % DEFAULT_PALETTE.length]\n paletteIndex++\n }\n fill = categoryColorCache[cat]\n }\n }\n\n // Threshold coloring overrides category/default fill\n if (hasColorThresholds) {\n fill = resolveColor(v, colorThresholds, fill)\n }\n\n ctx.fillStyle = fill\n ctx.beginPath()\n ctx.arc(x, y, radius, 0, Math.PI * 2)\n ctx.fill()\n\n if (hasStroke) {\n ctx.strokeStyle = ss!.stroke!\n ctx.lineWidth = ss?.strokeWidth ?? 1\n ctx.stroke()\n }\n }\n\n ctx.globalAlpha = 1\n}\n","import type { RendererFn } from \"./types\"\n\nexport const candlestickRenderer: RendererFn = () => {\n throw new Error(\"candlestickRenderer: Not yet implemented\")\n}\n","import type { RendererFn } from \"./types\"\n\nconst DEFAULT_POSITIVE_COLOR = \"#28a745\"\nconst DEFAULT_NEGATIVE_COLOR = \"#dc3545\"\n\nexport function computeWaterfallExtent(\n data: Iterable<Record<string, any>>,\n getValue: (d: Record<string, any>) => number\n): [number, number] {\n let min = 0\n let max = 0\n let cumulative = 0\n\n for (const d of data) {\n const v = getValue(d)\n if (v == null || Number.isNaN(v)) continue\n cumulative += v\n if (cumulative < min) min = cumulative\n if (cumulative > max) max = cumulative\n }\n\n return [min, max]\n}\n\nexport const waterfallRenderer: RendererFn = (ctx, data, scales, layout, style, accessors, annotations, options) => {\n const { time: timeScale, value: valueScale } = scales\n const { timeAxis, width, height } = layout\n const { time: getTime, value: getValue } = accessors\n const ws = options?.waterfallStyle\n\n const positiveColor = ws?.positiveColor ?? DEFAULT_POSITIVE_COLOR\n const negativeColor = ws?.negativeColor ?? DEFAULT_NEGATIVE_COLOR\n const gap = ws?.gap ?? 1\n const connectorStroke = ws?.connectorStroke\n const connectorWidth = ws?.connectorWidth ?? 1\n const hasStroke = ws?.stroke != null\n if (hasStroke) {\n ctx.strokeStyle = ws!.stroke!\n ctx.lineWidth = ws?.strokeWidth ?? 1\n }\n\n // Collect into array for random access (skip NaN/null values)\n const arr: Record<string, any>[] = []\n for (const d of data) {\n const v = getValue(d)\n if (v == null || Number.isNaN(v)) continue\n arr.push(d)\n }\n\n if (arr.length === 0) return\n\n let baseline = 0\n // Track the end edge of the previous bar and its cumulative value for connectors\n let prevEdge: number | null = null\n let prevCumulative: number | null = null\n\n for (let i = 0; i < arr.length; i++) {\n const d = arr[i]\n const t = getTime(d)\n const delta = getValue(d)\n const cumEnd = baseline + delta\n\n // Compute bar width from time gap to next point\n let barWidthTime: number\n if (i < arr.length - 1) {\n barWidthTime = getTime(arr[i + 1]) - t\n } else if (i > 0) {\n barWidthTime = t - getTime(arr[i - 1])\n } else {\n // Single point fallback: use 0 to trigger pixel fallback\n barWidthTime = 0\n }\n\n ctx.fillStyle = delta >= 0 ? positiveColor : negativeColor\n\n if (timeAxis === \"x\") {\n let rawX0: number, rawX1: number\n\n if (barWidthTime !== 0) {\n rawX0 = timeScale(t)\n rawX1 = timeScale(t + barWidthTime)\n } else {\n rawX0 = timeScale(t)\n rawX1 = rawX0 + width / 10\n }\n\n const x0 = Math.min(rawX0, rawX1) + gap / 2\n const x1 = Math.max(rawX0, rawX1) - gap / 2\n const barWidth = x1 - x0\n if (barWidth <= 0) {\n baseline = cumEnd\n prevEdge = x1\n prevCumulative = cumEnd\n continue\n }\n\n const yBaseline = valueScale(baseline)\n const yTop = valueScale(cumEnd)\n const rectY = Math.min(yBaseline, yTop)\n const rectH = Math.abs(yBaseline - yTop)\n\n // Connector line at the baseline level from previous bar's right edge to this bar's left edge\n if (connectorStroke && prevEdge != null && prevCumulative != null) {\n ctx.save()\n ctx.strokeStyle = connectorStroke\n ctx.lineWidth = connectorWidth\n const connY = valueScale(prevCumulative)\n ctx.beginPath()\n ctx.moveTo(prevEdge, connY)\n ctx.lineTo(x0, connY)\n ctx.stroke()\n ctx.restore()\n if (hasStroke) {\n ctx.strokeStyle = ws!.stroke!\n ctx.lineWidth = ws?.strokeWidth ?? 1\n }\n }\n\n ctx.fillRect(x0, rectY, barWidth, rectH)\n if (hasStroke) ctx.strokeRect(x0, rectY, barWidth, rectH)\n\n prevEdge = x1\n } else {\n // timeAxis === \"y\": horizontal bars\n let rawY0: number, rawY1: number\n\n if (barWidthTime !== 0) {\n rawY0 = timeScale(t)\n rawY1 = timeScale(t + barWidthTime)\n } else {\n rawY0 = timeScale(t)\n rawY1 = rawY0 + height / 10\n }\n\n const y0 = Math.min(rawY0, rawY1) + gap / 2\n const y1 = Math.max(rawY0, rawY1) - gap / 2\n const barHeight = y1 - y0\n if (barHeight <= 0) {\n baseline = cumEnd\n prevEdge = y1\n prevCumulative = cumEnd\n continue\n }\n\n const xBaseline = valueScale(baseline)\n const xEnd = valueScale(cumEnd)\n const rectX = Math.min(xBaseline, xEnd)\n const rectW = Math.abs(xEnd - xBaseline)\n\n // Connector line at the baseline level from previous bar's bottom edge to this bar's top edge\n if (connectorStroke && prevEdge != null && prevCumulative != null) {\n ctx.save()\n ctx.strokeStyle = connectorStroke\n ctx.lineWidth = connectorWidth\n const connX = valueScale(prevCumulative)\n ctx.beginPath()\n ctx.moveTo(connX, prevEdge)\n ctx.lineTo(connX, y0)\n ctx.stroke()\n ctx.restore()\n if (hasStroke) {\n ctx.strokeStyle = ws!.stroke!\n ctx.lineWidth = ws?.strokeWidth ?? 1\n }\n }\n\n ctx.fillRect(rectX, y0, rectW, barHeight)\n if (hasStroke) ctx.strokeRect(rectX, y0, rectW, barHeight)\n\n prevEdge = y1\n }\n\n baseline = cumEnd\n prevCumulative = cumEnd\n }\n}\n","export interface Bin {\n start: number\n end: number\n total: number\n categories: Map<string, number>\n}\n\nexport function computeBins(\n data: Iterable<Record<string, any>>,\n getTime: (d: Record<string, any>) => number,\n getValue: (d: Record<string, any>) => number,\n binSize: number,\n getCategory?: (d: Record<string, any>) => string\n): Map<number, Bin> {\n const bins = new Map<number, Bin>()\n\n for (const d of data) {\n const t = getTime(d)\n const v = getValue(d)\n\n if (t == null || v == null || Number.isNaN(t) || Number.isNaN(v)) continue\n\n const binStart = Math.floor(t / binSize) * binSize\n\n let bin = bins.get(binStart)\n if (!bin) {\n bin = { start: binStart, end: binStart + binSize, total: 0, categories: new Map() }\n bins.set(binStart, bin)\n }\n\n bin.total += v\n\n if (getCategory) {\n const cat = getCategory(d)\n bin.categories.set(cat, (bin.categories.get(cat) || 0) + v)\n }\n }\n\n return bins\n}\n\nexport function computeBinExtent(\n data: Iterable<Record<string, any>>,\n getTime: (d: Record<string, any>) => number,\n getValue: (d: Record<string, any>) => number,\n binSize: number,\n getCategory?: (d: Record<string, any>) => string\n): [number, number] {\n const bins = computeBins(data, getTime, getValue, binSize, getCategory)\n\n if (bins.size === 0) return [0, 0]\n\n let maxTotal = 0\n for (const bin of bins.values()) {\n if (bin.total > maxTotal) maxTotal = bin.total\n }\n\n return [0, maxTotal]\n}\n","import type { RendererFn } from \"./types\"\nimport { computeBins } from \"../BinAccumulator\"\n\nconst DEFAULT_PALETTE = [\n \"#4e79a7\", \"#f28e2b\", \"#e15759\", \"#76b7b2\",\n \"#59a14f\", \"#edc948\", \"#b07aa1\", \"#ff9da7\",\n \"#9c755f\", \"#bab0ac\"\n]\n\nexport const barRenderer: RendererFn = (ctx, data, scales, layout, style, accessors, annotations, options) => {\n const binSize = options?.binSize\n if (!binSize) return\n\n const { time: timeScale, value: valueScale } = scales\n const { timeAxis } = layout\n const { time: getTime, value: getValue, category: getCategory } = accessors\n const barColors = options?.barColors\n const barStyle = options?.barStyle\n\n const bins = computeBins(data, getTime, getValue, binSize, getCategory)\n if (bins.size === 0) return\n\n const [domainMin, domainMax] = timeScale.domain() as [number, number]\n\n const gap = barStyle?.gap ?? 1\n const hasCategories = getCategory != null\n\n // Determine category order: barColors keys first, then alphabetical for unlisted\n let categoryOrder: string[] | null = null\n if (hasCategories) {\n const allCategories = new Set<string>()\n for (const bin of bins.values()) {\n for (const cat of bin.categories.keys()) {\n allCategories.add(cat)\n }\n }\n const colorKeys = barColors ? Object.keys(barColors) : []\n const listed = new Set(colorKeys)\n const unlisted = Array.from(allCategories).filter(c => !listed.has(c)).sort()\n categoryOrder = [...colorKeys.filter(k => allCategories.has(k)), ...unlisted]\n }\n\n // Bar stroke settings\n const hasBarStroke = barStyle?.stroke != null\n if (hasBarStroke) {\n ctx.strokeStyle = barStyle!.stroke!\n ctx.lineWidth = barStyle?.strokeWidth ?? 1\n }\n\n for (const bin of bins.values()) {\n if (timeAxis === \"x\") {\n const clampedStart = Math.max(bin.start, domainMin)\n const clampedEnd = Math.min(bin.end, domainMax)\n if (clampedStart >= clampedEnd) continue\n\n const rawX0 = timeScale(clampedStart)\n const rawX1 = timeScale(clampedEnd)\n const x0 = Math.min(rawX0, rawX1) + gap / 2\n const x1 = Math.max(rawX0, rawX1) - gap / 2\n const barWidth = x1 - x0\n if (barWidth <= 0) continue\n\n if (hasCategories && categoryOrder) {\n let cumulativeBase = 0\n let paletteIdx = 0\n for (const cat of categoryOrder) {\n const catVal = bin.categories.get(cat) || 0\n if (catVal === 0) continue\n\n const yBottom = valueScale(cumulativeBase)\n const yTop = valueScale(cumulativeBase + catVal)\n const rectY = Math.min(yBottom, yTop)\n const rectH = Math.abs(yBottom - yTop)\n\n ctx.fillStyle = (barColors && barColors[cat]) || DEFAULT_PALETTE[paletteIdx % DEFAULT_PALETTE.length]\n ctx.fillRect(x0, rectY, barWidth, rectH)\n if (hasBarStroke) ctx.strokeRect(x0, rectY, barWidth, rectH)\n\n cumulativeBase += catVal\n paletteIdx++\n }\n } else {\n const yZero = valueScale(0)\n const yTop = valueScale(bin.total)\n const rectY = Math.min(yZero, yTop)\n const rectH = Math.abs(yZero - yTop)\n\n ctx.fillStyle = barStyle?.fill || style.stroke || \"#007bff\"\n ctx.fillRect(x0, rectY, barWidth, rectH)\n if (hasBarStroke) ctx.strokeRect(x0, rectY, barWidth, rectH)\n }\n } else {\n // timeAxis === \"y\": horizontal bars\n const clampedStart = Math.max(bin.start, domainMin)\n const clampedEnd = Math.min(bin.end, domainMax)\n if (clampedStart >= clampedEnd) continue\n\n const rawY0 = timeScale(clampedStart)\n const rawY1 = timeScale(clampedEnd)\n const y0 = Math.min(rawY0, rawY1) + gap / 2\n const y1 = Math.max(rawY0, rawY1) - gap / 2\n const barHeight = y1 - y0\n if (barHeight <= 0) continue\n\n if (hasCategories && categoryOrder) {\n let cumulativeBase = 0\n let paletteIdx = 0\n for (const cat of categoryOrder) {\n const catVal = bin.categories.get(cat) || 0\n if (catVal === 0) continue\n\n const xLeft = valueScale(cumulativeBase)\n const xRight = valueScale(cumulativeBase + catVal)\n const rectX = Math.min(xLeft, xRight)\n const rectW = Math.abs(xRight - xLeft)\n\n ctx.fillStyle = (barColors && barColors[cat]) || DEFAULT_PALETTE[paletteIdx % DEFAULT_PALETTE.length]\n ctx.fillRect(rectX, y0, rectW, barHeight)\n if (hasBarStroke) ctx.strokeRect(rectX, y0, rectW, barHeight)\n\n cumulativeBase += catVal\n paletteIdx++\n }\n } else {\n const xZero = valueScale(0)\n const xEnd = valueScale(bin.total)\n const rectX = Math.min(xZero, xEnd)\n const rectW = Math.abs(xEnd - xZero)\n\n ctx.fillStyle = barStyle?.fill || style.stroke || \"#007bff\"\n ctx.fillRect(rectX, y0, rectW, barHeight)\n if (hasBarStroke) ctx.strokeRect(rectX, y0, rectW, barHeight)\n }\n }\n }\n}\n","\"use client\"\nimport * as React from \"react\"\nimport {\n useRef,\n useState,\n useEffect,\n useMemo,\n useCallback,\n useImperativeHandle,\n forwardRef\n} from \"react\"\nimport { scaleLinear, type ScaleLinear } from \"d3-scale\"\n\nimport { RingBuffer } from \"./RingBuffer\"\nimport { IncrementalExtent } from \"./IncrementalExtent\"\nimport { lineRenderer } from \"./renderers/lineRenderer\"\nimport { swarmRenderer } from \"./renderers/swarmRenderer\"\nimport { candlestickRenderer } from \"./renderers/candlestickRenderer\"\nimport { waterfallRenderer, computeWaterfallExtent } from \"./renderers/waterfallRenderer\"\nimport { barRenderer } from \"./renderers/barRenderer\"\nimport { computeBins, computeBinExtent } from \"./BinAccumulator\"\nimport type { RendererFn } from \"./renderers/types\"\nimport type {\n RealtimeFrameProps,\n RealtimeFrameHandle,\n ArrowOfTime,\n LineStyle,\n HoverData,\n HoverAnnotationConfig\n} from \"./types\"\n\nconst RENDERERS: Record<string, RendererFn> = {\n line: lineRenderer,\n swarm: swarmRenderer,\n candlestick: candlestickRenderer,\n waterfall: waterfallRenderer,\n bar: barRenderer\n}\n\nconst DEFAULT_MARGIN = { top: 20, right: 20, bottom: 30, left: 40 }\nconst DEFAULT_LINE_STYLE: LineStyle = {}\n\nfunction resolveAccessor(\n accessor: string | ((d: Record<string, any>) => number) | undefined,\n fallback: string\n): (d: Record<string, any>) => number {\n if (typeof accessor === \"function\") return (d: Record<string, any>) => +accessor(d)\n const key = accessor || fallback\n return (d: Record<string, any>) => +d[key]\n}\n\nfunction getTimeAxis(arrowOfTime: ArrowOfTime): \"x\" | \"y\" {\n return arrowOfTime === \"up\" || arrowOfTime === \"down\" ? \"y\" : \"x\"\n}\n\nfunction buildScales(\n arrowOfTime: ArrowOfTime,\n timeExtent: [number, number],\n valueExtent: [number, number],\n width: number,\n height: number\n) {\n const timeAxis = getTimeAxis(arrowOfTime)\n\n let timeRange: [number, number]\n let valueRange: [number, number]\n\n if (timeAxis === \"x\") {\n timeRange = arrowOfTime === \"right\" ? [0, width] : [width, 0]\n valueRange = [height, 0]\n } else {\n timeRange = arrowOfTime === \"down\" ? [0, height] : [height, 0]\n valueRange = [0, width]\n }\n\n return {\n time: scaleLinear().domain(timeExtent).range(timeRange),\n value: scaleLinear().domain(valueExtent).range(valueRange)\n }\n}\n\nfunction defaultTickFormat(v: number): string {\n return String(Math.round(v * 100) / 100)\n}\n\n/** Colors resolved from CSS custom properties for theme-aware canvas rendering */\ninterface ThemeColors {\n axisStroke: string // axis lines and tick marks\n tickText: string // tick label text\n crosshair: string // crosshair lines\n hoverFill: string // hover highlight fill\n hoverStroke: string // hover highlight stroke\n pointRing: string // ring around hover point indicator\n}\n\nconst LIGHT_THEME: ThemeColors = {\n axisStroke: \"#ccc\",\n tickText: \"#666\",\n crosshair: \"rgba(0, 0, 0, 0.25)\",\n hoverFill: \"rgba(255, 255, 255, 0.3)\",\n hoverStroke: \"rgba(0, 0, 0, 0.4)\",\n pointRing: \"white\"\n}\n\n/** Read CSS custom properties from an element to build theme-aware colors */\nfunction resolveThemeColors(el: HTMLElement | null): ThemeColors {\n if (!el) return LIGHT_THEME\n const style = getComputedStyle(el)\n const textSecondary = style.getPropertyValue(\"--text-secondary\").trim()\n const textPrimary = style.getPropertyValue(\"--text-primary\").trim()\n const surface3 = style.getPropertyValue(\"--surface-3\").trim()\n const surface0 = style.getPropertyValue(\"--surface-0\").trim()\n\n // If no CSS custom properties are found, fall back to light defaults\n if (!textSecondary && !textPrimary) return LIGHT_THEME\n\n return {\n axisStroke: surface3 || LIGHT_THEME.axisStroke,\n tickText: textSecondary || LIGHT_THEME.tickText,\n crosshair: textSecondary ? `${textSecondary}66` : LIGHT_THEME.crosshair,\n hoverFill: surface0 ? `${surface0}4D` : LIGHT_THEME.hoverFill,\n hoverStroke: textSecondary ? `${textSecondary}99` : LIGHT_THEME.hoverStroke,\n pointRing: surface0 || LIGHT_THEME.pointRing\n }\n}\n\nfunction drawAxes(\n ctx: CanvasRenderingContext2D,\n arrowOfTime: ArrowOfTime,\n timeScale: ScaleLinear<number, number>,\n valueScale: ScaleLinear<number, number>,\n width: number,\n height: number,\n tickFormatTime?: (value: number) => string,\n tickFormatValue?: (value: number) => string,\n theme?: ThemeColors\n) {\n const timeAxis = getTimeAxis(arrowOfTime)\n const fmtValue = tickFormatValue || defaultTickFormat\n const colors = theme || LIGHT_THEME\n\n ctx.strokeStyle = colors.axisStroke\n ctx.lineWidth = 1\n ctx.fillStyle = colors.tickText\n ctx.font = \"10px sans-serif\"\n ctx.textAlign = \"center\"\n ctx.textBaseline = \"top\"\n\n if (timeAxis === \"x\") {\n ctx.beginPath()\n ctx.moveTo(0, height)\n ctx.lineTo(width, height)\n ctx.stroke()\n\n ctx.beginPath()\n ctx.moveTo(0, 0)\n ctx.lineTo(0, height)\n ctx.stroke()\n\n const timeTicks = timeScale.ticks(5)\n ctx.textAlign = \"center\"\n ctx.textBaseline = \"top\"\n for (const tick of timeTicks) {\n const x = timeScale(tick)\n ctx.beginPath()\n ctx.moveTo(x, height)\n ctx.lineTo(x, height + 5)\n ctx.stroke()\n if (tickFormatTime) {\n ctx.fillText(tickFormatTime(tick), x, height + 7)\n }\n }\n\n ctx.textAlign = \"right\"\n ctx.textBaseline = \"middle\"\n const valueTicks = valueScale.ticks(5)\n for (const tick of valueTicks) {\n const y = valueScale(tick)\n ctx.beginPath()\n ctx.moveTo(-5, y)\n ctx.lineTo(0, y)\n ctx.stroke()\n ctx.fillText(fmtValue(tick), -8, y)\n }\n } else {\n ctx.beginPath()\n ctx.moveTo(0, 0)\n ctx.lineTo(0, height)\n ctx.stroke()\n\n ctx.beginPath()\n ctx.moveTo(0, timeAxis === \"y\" && arrowOfTime === \"down\" ? 0 : height)\n ctx.lineTo(width, timeAxis === \"y\" && arrowOfTime === \"down\" ? 0 : height)\n ctx.stroke()\n\n ctx.textAlign = \"center\"\n ctx.textBaseline = \"top\"\n const valueTicks = valueScale.ticks(5)\n for (const tick of valueTicks) {\n const x = valueScale(tick)\n ctx.beginPath()\n ctx.moveTo(x, height)\n ctx.lineTo(x, height + 5)\n ctx.stroke()\n ctx.fillText(fmtValue(tick), x, height + 7)\n }\n\n ctx.textAlign = \"right\"\n ctx.textBaseline = \"middle\"\n const timeTicks = timeScale.ticks(5)\n for (const tick of timeTicks) {\n const y = timeScale(tick)\n ctx.beginPath()\n ctx.moveTo(-5, y)\n ctx.lineTo(0, y)\n ctx.stroke()\n if (tickFormatTime) {\n ctx.fillText(tickFormatTime(tick), -8, y)\n }\n }\n }\n}\n\n// Binary search: find the index of the nearest point by time value\nfunction findNearestIndex(\n buf: RingBuffer<Record<string, any>>,\n targetTime: number,\n getTime: (d: Record<string, any>) => number\n): number {\n if (buf.size === 0) return -1\n\n let lo = 0\n let hi = buf.size - 1\n\n while (lo < hi) {\n const mid = (lo + hi) >> 1\n const t = getTime(buf.get(mid)!)\n if (t < targetTime) lo = mid + 1\n else hi = mid\n }\n\n // lo is first point with time >= targetTime; check if lo-1 is closer\n if (lo > 0) {\n const tLo = getTime(buf.get(lo)!)\n const tPrev = getTime(buf.get(lo - 1)!)\n if (Math.abs(tPrev - targetTime) <= Math.abs(tLo - targetTime)) {\n return lo - 1\n }\n }\n\n return lo\n}\n\nfunction drawCrosshair(\n ctx: CanvasRenderingContext2D,\n hover: HoverData,\n width: number,\n height: number,\n config: HoverAnnotationConfig,\n pointColor: string,\n theme?: ThemeColors\n) {\n const showCrosshair = config.crosshair !== false\n if (!showCrosshair) return\n const colors = theme || LIGHT_THEME\n\n ctx.save()\n const crossStyle = typeof config.crosshair === \"object\" ? config.crosshair : {}\n ctx.strokeStyle = crossStyle.stroke || colors.crosshair\n ctx.lineWidth = crossStyle.strokeWidth || 1\n if (crossStyle.strokeDasharray) {\n ctx.setLineDash(crossStyle.strokeDasharray.split(/[\\s,]+/).map(Number))\n } else {\n ctx.setLineDash([4, 4])\n }\n\n // Vertical guide\n ctx.beginPath()\n ctx.moveTo(hover.x, 0)\n ctx.lineTo(hover.x, height)\n ctx.stroke()\n\n // Horizontal guide\n ctx.beginPath()\n ctx.moveTo(0, hover.y)\n ctx.lineTo(width, hover.y)\n ctx.stroke()\n\n ctx.restore()\n\n // Point indicator\n ctx.beginPath()\n ctx.arc(hover.x, hover.y, 4, 0, Math.PI * 2)\n ctx.fillStyle = pointColor\n ctx.fill()\n ctx.strokeStyle = colors.pointRing\n ctx.lineWidth = 2\n ctx.stroke()\n}\n\nconst defaultTooltipStyle: React.CSSProperties = {\n background: \"rgba(0, 0, 0, 0.85)\",\n color: \"white\",\n padding: \"6px 10px\",\n borderRadius: 4,\n fontSize: 12,\n lineHeight: 1.5,\n boxShadow: \"0 2px 8px rgba(0, 0, 0, 0.15)\",\n pointerEvents: \"none\",\n whiteSpace: \"nowrap\"\n}\n\nfunction DefaultTooltip({ hover, formatTime }: { hover: HoverData; formatTime?: (v: number) => string }) {\n const fmtValue = (v: number) =>\n Number.isInteger(v) ? String(v) : v.toFixed(2)\n const fmtTime = formatTime || fmtValue\n\n const colorMap: Record<string, string> | undefined = hover.data.barColors\n const hoveredCat: string | undefined = hover.data.hoveredCategory\n const hoveredCatVal: number | undefined = hover.data.hoveredCategoryValue\n\n return (\n <div className=\"semiotic-tooltip\" style={defaultTooltipStyle}>\n {hoveredCat != null && hoveredCatVal != null ? (\n <>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 5, fontWeight: 600, marginBottom: 2 }}>\n {colorMap && colorMap[hoveredCat] && (\n <span style={{ width: 8, height: 8, borderRadius: \"50%\", background: colorMap[hoveredCat], flexShrink: 0 }} />\n )}\n <span>{hoveredCat}</span>\n <span style={{ marginLeft: \"auto\" }}>{fmtValue(hoveredCatVal)}</span>\n </div>\n <div style={{ opacity: 0.6, fontSize: 11 }}>\n total {fmtValue(hover.value)}\n </div>\n </>\n ) : (\n <div style={{ fontWeight: 600, marginBottom: 2 }}>\n {fmtValue(hover.value)}\n </div>\n )}\n <div style={{ opacity: 0.7, fontSize: 11 }}>\n {fmtTime(hover.time)}\n </div>\n </div>\n )\n}\n\nconst RealtimeFrame = forwardRef<RealtimeFrameHandle, RealtimeFrameProps>(\n function RealtimeFrame(props, ref) {\n const {\n chartType = \"line\",\n arrowOfTime = \"right\",\n windowMode = \"sliding\",\n windowSize = 200,\n data,\n timeAccessor,\n valueAccessor,\n timeExtent: fixedTimeExtent,\n valueExtent: fixedValueExtent,\n extentPadding = 0.1,\n size = [500, 300],\n margin: marginProp,\n className,\n lineStyle = DEFAULT_LINE_STYLE,\n annotations,\n svgAnnotationRules,\n hoverAnnotation,\n tooltipContent,\n customHoverBehavior,\n showAxes = true,\n background,\n categoryAccessor,\n binSize,\n barColors,\n barStyle,\n waterfallStyle,\n swarmStyle,\n tickFormatTime,\n tickFormatValue\n } = props\n\n const margin = { ...DEFAULT_MARGIN, ...marginProp }\n const adjustedWidth = size[0] - margin.left - margin.right\n const adjustedHeight = size[1] - margin.top - margin.bottom\n\n // Memoize accessors so they don't change every render.\n // Without this, the data effect re-runs on every render\n // (new function reference), which triggers cascading re-renders.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const getTime = useMemo(() => resolveAccessor(timeAccessor, \"time\"), [timeAccessor])\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const getValue = useMemo(() => resolveAccessor(valueAccessor, \"value\"), [valueAccessor])\n\n const getCategory = useMemo(\n () => categoryAccessor\n ? (typeof categoryAccessor === \"function\" ? categoryAccessor : (d: Record<string, any>) => d[categoryAccessor])\n : undefined,\n [categoryAccessor]\n )\n\n const bufferRef = useRef<RingBuffer<Record<string, any>>>(\n new RingBuffer(windowSize)\n )\n const timeExtentRef = useRef(new IncrementalExtent())\n const valueExtentRef = useRef(new IncrementalExtent())\n const canvasRef = useRef<HTMLCanvasElement>(null)\n const rafRef = useRef(0)\n const dirtyRef = useRef(false)\n const scalesRef = useRef<ReturnType<typeof buildScales> | null>(null)\n const [annotationFrame, setAnnotationFrame] = useState(0)\n\n const growingCapRef = useRef(windowSize)\n\n // Hover state: ref for canvas (sync), React state for tooltip (async)\n const hoverRef = useRef<HoverData | null>(null)\n const [hoverPoint, setHoverPoint] = useState<HoverData | null>(null)\n\n // Store the render function in a ref so scheduleRender is stable\n // and never goes stale. The ref is updated every React render\n // (below the hooks) so it always captures fresh props/closures.\n const renderFnRef = useRef<() => void>(() => {})\n\n // Stable scheduleRender — never recreated, so no stale closure chain\n const scheduleRender = useCallback(() => {\n if (rafRef.current) return\n rafRef.current = requestAnimationFrame(() => renderFnRef.current())\n }, [])\n\n const pushPoint = useCallback(\n (point: Record<string, any>) => {\n const buf = bufferRef.current\n const t = getTime(point)\n const v = getValue(point)\n\n if (windowMode === \"growing\" && buf.full) {\n growingCapRef.current *= 2\n buf.resize(growingCapRef.current)\n }\n\n const evicted = buf.push(point)\n\n timeExtentRef.current.push(t)\n valueExtentRef.current.push(v)\n\n if (evicted != null) {\n timeExtentRef.current.evict(getTime(evicted))\n valueExtentRef.current.evict(getValue(evicted))\n }\n\n dirtyRef.current = true\n scheduleRender()\n },\n [windowMode, getTime, getValue, scheduleRender]\n )\n\n const pushManyPoints = useCallback(\n (points: Record<string, any>[]) => {\n for (const p of points) {\n pushPoint(p)\n }\n },\n [pushPoint]\n )\n\n const clearAll = useCallback(() => {\n bufferRef.current.clear()\n timeExtentRef.current.clear()\n valueExtentRef.current.clear()\n dirtyRef.current = true\n scheduleRender()\n }, [scheduleRender])\n\n useImperativeHandle(\n ref,\n () => ({\n push: pushPoint,\n pushMany: pushManyPoints,\n clear: clearAll,\n getData: () => bufferRef.current.toArray()\n }),\n [pushPoint, pushManyPoints, clearAll]\n )\n\n // Controlled data prop\n useEffect(() => {\n if (!data) return\n bufferRef.current.clear()\n timeExtentRef.current.clear()\n valueExtentRef.current.clear()\n for (const d of data) {\n bufferRef.current.push(d)\n timeExtentRef.current.push(getTime(d))\n valueExtentRef.current.push(getValue(d))\n }\n dirtyRef.current = true\n scheduleRender()\n }, [data, getTime, getValue, scheduleRender])\n\n // Hover mouse handler — stored in ref so it always captures fresh closures\n const hoverHandlerRef = useRef<(e: React.MouseEvent) => void>(() => {})\n const hoverLeaveRef = useRef<() => void>(() => {})\n\n hoverHandlerRef.current = (e: React.MouseEvent) => {\n if (!hoverAnnotation) return\n\n const canvas = canvasRef.current\n if (!canvas) return\n const rect = canvas.getBoundingClientRect()\n\n // Mouse position in chart coordinates (canvas is full-size, ctx translated by margin)\n const chartX = e.clientX - rect.left - margin.left\n const chartY = e.clientY - rect.top - margin.top\n\n // Outside chart area → clear hover\n if (chartX < 0 || chartX > adjustedWidth || chartY < 0 || chartY > adjustedHeight) {\n if (hoverRef.current) {\n hoverRef.current = null\n setHoverPoint(null)\n if (customHoverBehavior) customHoverBehavior(null)\n scheduleRender()\n }\n return\n }\n\n const scales = scalesRef.current\n if (!scales) return\n\n const buf = bufferRef.current\n if (buf.size === 0) return\n\n const timeAxis = getTimeAxis(arrowOfTime)\n const timePixel = timeAxis === \"x\" ? chartX : chartY\n const targetTime = scales.time.invert(timePixel)\n\n let hover: HoverData\n\n if (chartType === \"bar\" && binSize) {\n // Snap to the bin the cursor is in\n const bins = computeBins(buf, getTime, getValue, binSize, getCategory)\n const binStart = Math.floor(targetTime / binSize) * binSize\n const bin = bins.get(binStart)\n if (!bin) return\n\n const [domainMin, domainMax] = scales.time.domain() as [number, number]\n const clampedStart = Math.max(bin.start, domainMin)\n const clampedEnd = Math.min(bin.end, domainMax)\n const midTime = clampedStart + (clampedEnd - clampedStart) / 2\n const tPixel = scales.time(midTime)\n const vPixel = scales.value(bin.total)\n const x = timeAxis === \"x\" ? tPixel : vPixel\n const y = timeAxis === \"x\" ? vPixel : tPixel\n\n // Hit-test which category segment the cursor is in\n let hoveredCategory: string | undefined\n let hoveredCategoryValue: number | undefined\n if (getCategory && bin.categories.size > 0) {\n const colorKeys = barColors ? Object.keys(barColors) : []\n const listed = new Set(colorKeys)\n const unlisted = Array.from(bin.categories.keys()).filter(c => !listed.has(c)).sort()\n const catOrder = [...colorKeys.filter(k => bin.categories.has(k)), ...unlisted]\n\n const valuePixel = timeAxis === \"x\" ? chartY : chartX\n let cumBase = 0\n for (const cat of catOrder) {\n const catVal = bin.categories.get(cat) || 0\n if (catVal === 0) continue\n const edgeA = scales.value(cumBase)\n const edgeB = scales.value(cumBase + catVal)\n const lo = Math.min(edgeA, edgeB)\n const hi = Math.max(edgeA, edgeB)\n if (valuePixel >= lo && valuePixel <= hi) {\n hoveredCategory = cat\n hoveredCategoryValue = catVal\n break\n }\n cumBase += catVal\n }\n }\n\n hover = {\n data: {\n binStart: bin.start, binEnd: bin.end, total: bin.total,\n categories: Object.fromEntries(bin.categories),\n barColors: barColors || {},\n hoveredCategory,\n hoveredCategoryValue\n },\n time: midTime,\n value: bin.total,\n x,\n y\n }\n } else {\n const idx = findNearestIndex(buf, targetTime, getTime)\n if (idx < 0) return\n\n const d = buf.get(idx)!\n const t = getTime(d)\n const v = getValue(d)\n\n const tPixel = scales.time(t)\n const vPixel = scales.value(v)\n const x = timeAxis === \"x\" ? tPixel : vPixel\n const y = timeAxis === \"x\" ? vPixel : tPixel\n\n hover = { data: d, time: t, value: v, x, y }\n }\n hoverRef.current = hover\n setHoverPoint(hover)\n if (customHoverBehavior) customHoverBehavior(hover)\n scheduleRender()\n }\n\n hoverLeaveRef.current = () => {\n if (hoverRef.current) {\n hoverRef.current = null\n setHoverPoint(null)\n if (customHoverBehavior) customHoverBehavior(null)\n scheduleRender()\n }\n }\n\n // Stable event handlers that delegate to refs\n const onMouseMove = useCallback(\n (e: React.MouseEvent) => hoverHandlerRef.current(e),\n []\n )\n const onMouseLeave = useCallback(\n () => hoverLeaveRef.current(),\n []\n )\n\n // Update the render function ref on every React render.\n // This captures the latest props (arrowOfTime, chartType, lineStyle,\n // annotations, etc.) without needing useCallback dependency chains.\n // The rAF loop calls this via renderFnRef, so it always sees fresh values.\n renderFnRef.current = () => {\n rafRef.current = 0\n const canvas = canvasRef.current\n if (!canvas) return\n\n const ctx = canvas.getContext(\"2d\")\n if (!ctx) return\n\n const buf = bufferRef.current\n const tExtent = timeExtentRef.current\n const vExtent = valueExtentRef.current\n\n if (tExtent.dirty) {\n tExtent.recalculate(buf, getTime)\n }\n if (vExtent.dirty) {\n vExtent.recalculate(buf, getValue)\n }\n\n let tDomain = fixedTimeExtent || tExtent.extent\n let vDomain = fixedValueExtent || vExtent.extent\n\n if (chartType === \"bar\" && binSize && !fixedValueExtent && buf.size > 0) {\n const [, maxTotal] = computeBinExtent(buf, getTime, getValue, binSize, getCategory)\n vDomain = [0, maxTotal + maxTotal * extentPadding]\n } else if (chartType === \"waterfall\" && !fixedValueExtent && buf.size > 0) {\n const [minCum, maxCum] = computeWaterfallExtent(buf, getValue)\n const range = maxCum - minCum\n const pad = range > 0 ? range * extentPadding : 1\n vDomain = [\n Math.min(0, minCum - Math.abs(pad)),\n Math.max(0, maxCum + Math.abs(pad))\n ]\n } else if (!fixedValueExtent && vDomain[0] !== Infinity) {\n const range = vDomain[1] - vDomain[0]\n const pad = range > 0 ? range * extentPadding : 1\n vDomain = [vDomain[0] - pad, vDomain[1] + pad]\n }\n\n if (tDomain[0] === Infinity || tDomain[1] === -Infinity) {\n tDomain = [0, 1]\n }\n if (vDomain[0] === Infinity || vDomain[1] === -Infinity) {\n vDomain = [0, 1]\n }\n\n const scales = buildScales(\n arrowOfTime,\n tDomain,\n vDomain,\n adjustedWidth,\n adjustedHeight\n )\n scalesRef.current = scales\n\n const dpr = typeof window !== \"undefined\" ? window.devicePixelRatio || 1 : 1\n canvas.width = size[0] * dpr\n canvas.height = size[1] * dpr\n canvas.style.width = `${size[0]}px`\n canvas.style.height = `${size[1]}px`\n ctx.scale(dpr, dpr)\n ctx.translate(margin.left, margin.top)\n\n ctx.clearRect(-margin.left, -margin.top, size[0], size[1])\n\n // Resolve theme colors from CSS custom properties for theme-aware rendering\n const theme = resolveThemeColors(canvas)\n\n if (background) {\n ctx.fillStyle = background\n ctx.fillRect(0, 0, adjustedWidth, adjustedHeight)\n }\n\n if (showAxes) {\n ctx.save()\n drawAxes(ctx, arrowOfTime, scales.time, scales.value, adjustedWidth, adjustedHeight, tickFormatTime, tickFormatValue, theme)\n ctx.restore()\n }\n\n const renderer = RENDERERS[chartType]\n if (renderer) {\n const layout = {\n width: adjustedWidth,\n height: adjustedHeight,\n timeAxis: getTimeAxis(arrowOfTime)\n }\n renderer(\n ctx, buf, scales, layout, lineStyle,\n { time: getTime, value: getValue, category: getCategory },\n annotations,\n chartType === \"bar\" ? { binSize, barColors, barStyle }\n : chartType === \"waterfall\" ? { waterfallStyle }\n : chartType === \"swarm\" ? { swarmStyle, barColors }\n : undefined\n )\n }\n\n // Draw bar highlight on hovered bin/segment\n if (hoverAnnotation && hoverRef.current && chartType === \"bar\" && binSize) {\n const hd = hoverRef.current.data\n if (hd.binStart != null) {\n const gap = barStyle?.gap ?? 1\n const tAxis = getTimeAxis(arrowOfTime)\n\n // Determine which segment to highlight\n const segBase = hd.hoveredCategory != null\n ? (() => {\n // Walk categories to find the cumulative base of the hovered segment\n const cats: Record<string, number> = hd.categories || {}\n const colorKeys = barColors ? Object.keys(barColors) : []\n const listed = new Set(colorKeys)\n const unlisted = Object.keys(cats).filter((c: string) => !listed.has(c)).sort()\n const catOrder = [...colorKeys.filter((k: string) => k in cats), ...unlisted]\n let base = 0\n for (const cat of catOrder) {\n if (cat === hd.hoveredCategory) return base\n base += cats[cat] || 0\n }\n return base\n })()\n : 0\n const segTop = hd.hoveredCategory != null\n ? segBase + (hd.hoveredCategoryValue || 0)\n : hd.total\n\n const [domainMin, domainMax] = scales.time.domain() as [number, number]\n const clampedBinStart = Math.max(hd.binStart, domainMin)\n const clampedBinEnd = Math.min(hd.binEnd, domainMax)\n\n if (tAxis === \"x\") {\n const rawX0 = scales.time(clampedBinStart)\n const rawX1 = scales.time(clampedBinEnd)\n const x0 = Math.min(rawX0, rawX1) + gap / 2\n const x1 = Math.max(rawX0, rawX1) - gap / 2\n const yBot = scales.value(segBase)\n const yTop = scales.value(segTop)\n const ry = Math.min(yBot, yTop)\n const rh = Math.abs(yBot - yTop)\n ctx.fillStyle = theme.hoverFill\n ctx.fillRect(x0, ry, x1 - x0, rh)\n ctx.strokeStyle = theme.hoverStroke\n ctx.lineWidth = 1\n ctx.setLineDash([])\n ctx.strokeRect(x0, ry, x1 - x0, rh)\n } else {\n const rawY0 = scales.time(clampedBinStart)\n const rawY1 = scales.time(clampedBinEnd)\n const y0 = Math.min(rawY0, rawY1) + gap / 2\n const y1 = Math.max(rawY0, rawY1) - gap / 2\n const xLeft = scales.value(segBase)\n const xRight = scales.value(segTop)\n const rx = Math.min(xLeft, xRight)\n const rw = Math.abs(xRight - xLeft)\n ctx.fillStyle = theme.hoverFill\n ctx.fillRect(rx, y0, rw, y1 - y0)\n ctx.strokeStyle = theme.hoverStroke\n ctx.lineWidth = 1\n ctx.setLineDash([])\n ctx.strokeRect(rx, y0, rw, y1 - y0)\n }\n }\n }\n\n // Draw crosshair after chart data so it renders on top\n if (hoverAnnotation && hoverRef.current) {\n const config: HoverAnnotationConfig =\n typeof hoverAnnotation === \"object\" ? hoverAnnotation : {}\n drawCrosshair(\n ctx,\n hoverRef.current,\n adjustedWidth,\n adjustedHeight,\n config,\n lineStyle.stroke || \"#007bff\",\n theme\n )\n }\n\n const wasDirty = dirtyRef.current\n dirtyRef.current = false\n\n // Trigger React re-render so SVG annotations recompute positions\n // using the scales we just stored in scalesRef.\n // Only do this when data actually changed (wasDirty) to avoid\n // setAnnotationFrame → re-render → effect → scheduleRender → loop.\n if (wasDirty && annotations && annotations.length > 0 && svgAnnotationRules) {\n setAnnotationFrame(f => f + 1)\n }\n }\n\n // Initial render and cleanup\n useEffect(() => {\n scheduleRender()\n return () => {\n if (rafRef.current) {\n cancelAnimationFrame(rafRef.current)\n }\n }\n }, [scheduleRender])\n\n // Re-render canvas when visual props change\n useEffect(() => {\n dirtyRef.current = true\n scheduleRender()\n }, [arrowOfTime, chartType, adjustedWidth, adjustedHeight, showAxes, background, lineStyle, scheduleRender])\n\n // Compute annotation elements during React render using latest scales\n const renderedAnnotations = React.useMemo(() => {\n if (!annotations || annotations.length === 0 || !svgAnnotationRules) {\n return null\n }\n const scales = scalesRef.current\n const timeAxis = getTimeAxis(arrowOfTime)\n return annotations\n .map((annotation, i) =>\n svgAnnotationRules(annotation, i, {\n scales,\n timeAxis,\n width: adjustedWidth,\n height: adjustedHeight\n })\n )\n .filter(Boolean)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [annotations, svgAnnotationRules, arrowOfTime, adjustedWidth, adjustedHeight, annotationFrame])\n\n const hasAnnotations = renderedAnnotations && renderedAnnotations.length > 0\n\n // Tooltip positioning: anchor at the hovered point, flip if near edges\n const tooltipElement = hoverAnnotation && hoverPoint ? (\n <div\n className=\"realtime-frame-tooltip\"\n style={{\n position: \"absolute\",\n left: margin.left + hoverPoint.x,\n top: margin.top + hoverPoint.y,\n transform: `translate(${\n hoverPoint.x > adjustedWidth * 0.7 ? \"calc(-100% - 12px)\" : \"12px\"\n }, ${\n hoverPoint.y < adjustedHeight * 0.3 ? \"4px\" : \"calc(-100% - 4px)\"\n })`,\n pointerEvents: \"none\",\n zIndex: 1\n }}\n >\n {tooltipContent\n ? tooltipContent(hoverPoint)\n : <DefaultTooltip hover={hoverPoint} formatTime={tickFormatTime} />}\n </div>\n ) : null\n\n return (\n <div\n className={`realtime-frame${className ? ` ${className}` : \"\"}`}\n style={{\n position: \"relative\",\n width: size[0],\n height: size[1]\n }}\n onMouseMove={hoverAnnotation ? onMouseMove : undefined}\n onMouseLeave={hoverAnnotation ? onMouseLeave : undefined}\n >\n <canvas\n ref={canvasRef}\n style={{\n position: \"absolute\",\n left: 0,\n top: 0\n }}\n />\n {hasAnnotations && (\n <svg\n width={size[0]}\n height={size[1]}\n style={{\n position: \"absolute\",\n top: 0,\n left: 0,\n pointerEvents: \"none\"\n }}\n >\n <g transform={`translate(${margin.left},${margin.top})`}>\n {renderedAnnotations}\n </g>\n </svg>\n )}\n {tooltipElement}\n </div>\n )\n }\n)\n\nexport default RealtimeFrame\n","import * as React from \"react\"\nimport { useRef, useEffect, useImperativeHandle, forwardRef } from \"react\"\nimport RealtimeFrame from \"../../realtime/RealtimeFrame\"\nimport type {\n ArrowOfTime,\n WindowMode,\n LineStyle,\n HoverAnnotationConfig,\n HoverData,\n RealtimeFrameHandle,\n AnnotationContext\n} from \"../../realtime/types\"\nimport type { ReactNode } from \"react\"\n\nexport interface RealtimeLineChartProps {\n /** Chart dimensions as [width, height] */\n size?: [number, number]\n /** Chart margins */\n margin?: { top?: number; right?: number; bottom?: number; left?: number }\n /** CSS class name */\n className?: string\n /** Direction time flows */\n arrowOfTime?: ArrowOfTime\n /** Data retention strategy */\n windowMode?: WindowMode\n /** Ring buffer capacity */\n windowSize?: number\n /** Controlled data array */\n data?: Record<string, any>[]\n /** Time value accessor */\n timeAccessor?: string | ((d: Record<string, any>) => number)\n /** Value accessor */\n valueAccessor?: string | ((d: Record<string, any>) => number)\n /** Fixed time domain */\n timeExtent?: [number, number]\n /** Fixed value domain */\n valueExtent?: [number, number]\n /** Extent padding factor */\n extentPadding?: number\n /** Line color */\n stroke?: string\n /** Line width */\n strokeWidth?: number\n /** Dash pattern (e.g. \"4,2\") */\n strokeDasharray?: string\n /** Show canvas-drawn axes */\n showAxes?: boolean\n /** Background fill color */\n background?: string\n /** Enable hover interaction */\n enableHover?: boolean | HoverAnnotationConfig\n /** Custom tooltip renderer */\n tooltipContent?: (d: HoverData) => ReactNode\n /** Callback on hover */\n onHover?: (d: HoverData | null) => void\n /** Annotation objects */\n annotations?: Record<string, any>[]\n /** SVG annotation render function */\n svgAnnotationRules?: (annotation: Record<string, any>, index: number, context: AnnotationContext) => ReactNode\n /** Custom formatter for time axis ticks */\n tickFormatTime?: (value: number) => string\n /** Custom formatter for value axis ticks */\n tickFormatValue?: (value: number) => string\n}\n\n/**\n * RealtimeLineChart - Simplified wrapper for streaming line charts.\n *\n * Wraps RealtimeFrame with `chartType=\"line\"` and exposes stroke/strokeWidth\n * as top-level props instead of requiring a `lineStyle` object.\n *\n * @example\n * ```tsx\n * const ref = useRef<RealtimeFrameHandle>(null)\n *\n * <RealtimeLineChart\n * ref={ref}\n * stroke=\"#007bff\"\n * strokeWidth={2}\n * windowSize={200}\n * enableHover\n * />\n * ```\n */\nexport const RealtimeLineChart = forwardRef<RealtimeFrameHandle, RealtimeLineChartProps>(\n function RealtimeLineChart(props, ref) {\n const {\n size = [500, 300],\n margin,\n className,\n arrowOfTime = \"right\",\n windowMode = \"sliding\",\n windowSize = 200,\n data,\n timeAccessor,\n valueAccessor,\n timeExtent,\n valueExtent,\n extentPadding,\n stroke = \"#007bff\",\n strokeWidth = 2,\n strokeDasharray,\n showAxes = true,\n background,\n enableHover,\n tooltipContent,\n onHover,\n annotations,\n svgAnnotationRules,\n tickFormatTime,\n tickFormatValue\n } = props\n\n const frameRef = useRef<RealtimeFrameHandle>(null)\n\n useImperativeHandle(ref, () => ({\n push: (point) => frameRef.current?.push(point),\n pushMany: (points) => frameRef.current?.pushMany(points),\n clear: () => frameRef.current?.clear(),\n getData: () => frameRef.current?.getData() ?? []\n }))\n\n const lineStyle: LineStyle = { stroke, strokeWidth, strokeDasharray }\n\n return (\n <RealtimeFrame\n ref={frameRef}\n chartType=\"line\"\n size={size}\n margin={margin}\n className={className}\n arrowOfTime={arrowOfTime}\n windowMode={windowMode}\n windowSize={windowSize}\n data={data}\n timeAccessor={timeAccessor}\n valueAccessor={valueAccessor}\n timeExtent={timeExtent}\n valueExtent={valueExtent}\n extentPadding={extentPadding}\n lineStyle={lineStyle}\n showAxes={showAxes}\n background={background}\n hoverAnnotation={enableHover}\n tooltipContent={tooltipContent}\n customHoverBehavior={onHover}\n annotations={annotations}\n svgAnnotationRules={svgAnnotationRules}\n tickFormatTime={tickFormatTime}\n tickFormatValue={tickFormatValue}\n />\n )\n }\n)\n","import * as React from \"react\"\nimport { useRef, useImperativeHandle, forwardRef } from \"react\"\nimport RealtimeFrame from \"../../realtime/RealtimeFrame\"\nimport type {\n ArrowOfTime,\n WindowMode,\n BarStyle,\n HoverAnnotationConfig,\n HoverData,\n RealtimeFrameHandle,\n AnnotationContext\n} from \"../../realtime/types\"\nimport type { ReactNode } from \"react\"\n\nexport interface RealtimeBarChartProps {\n /** Time interval for binning */\n binSize: number\n /** Chart dimensions as [width, height] */\n size?: [number, number]\n /** Chart margins */\n margin?: { top?: number; right?: number; bottom?: number; left?: number }\n /** CSS class name */\n className?: string\n /** Direction time flows */\n arrowOfTime?: ArrowOfTime\n /** Data retention strategy */\n windowMode?: WindowMode\n /** Ring buffer capacity */\n windowSize?: number\n /** Controlled data array */\n data?: Record<string, any>[]\n /** Time value accessor */\n timeAccessor?: string | ((d: Record<string, any>) => number)\n /** Value accessor */\n valueAccessor?: string | ((d: Record<string, any>) => number)\n /** Fixed time domain */\n timeExtent?: [number, number]\n /** Fixed value domain */\n valueExtent?: [number, number]\n /** Extent padding factor */\n extentPadding?: number\n /**\n * Category accessor for stacked bars.\n * When provided, bars are stacked by category within each bin.\n */\n categoryAccessor?: string | ((d: Record<string, any>) => string)\n /**\n * Category-to-color map for stacked bars.\n * Keys also determine stack order (listed keys first, then alphabetical).\n */\n colors?: Record<string, string>\n /** Bar fill color (non-stacked mode) */\n fill?: string\n /** Bar stroke color */\n stroke?: string\n /** Bar stroke width */\n strokeWidth?: number\n /** Gap between bars in pixels */\n gap?: number\n /** Show canvas-drawn axes */\n showAxes?: boolean\n /** Background fill color */\n background?: string\n /** Enable hover interaction */\n enableHover?: boolean | HoverAnnotationConfig\n /** Custom tooltip renderer */\n tooltipContent?: (d: HoverData) => ReactNode\n /** Callback on hover */\n onHover?: (d: HoverData | null) => void\n /** Annotation objects */\n annotations?: Record<string, any>[]\n /** SVG annotation render function */\n svgAnnotationRules?: (annotation: Record<string, any>, index: number, context: AnnotationContext) => ReactNode\n /** Custom formatter for time axis ticks */\n tickFormatTime?: (value: number) => string\n /** Custom formatter for value axis ticks */\n tickFormatValue?: (value: number) => string\n}\n\n/**\n * RealtimeBarChart - Simplified wrapper for streaming temporal histograms.\n *\n * Wraps RealtimeFrame with `chartType=\"bar\"` and exposes bar styling as\n * top-level props. Supports both simple and stacked (categorical) modes.\n *\n * Edge bins that only partially fall within the visible time window are\n * rendered at proportionally narrower widths (Datadog-style).\n *\n * @example\n * ```tsx\n * // Simple histogram\n * <RealtimeBarChart\n * ref={ref}\n * binSize={20}\n * fill=\"#007bff\"\n * enableHover\n * />\n *\n * // Stacked by category\n * <RealtimeBarChart\n * ref={ref}\n * binSize={25}\n * categoryAccessor=\"category\"\n * colors={{ errors: \"#dc3545\", warnings: \"#fd7e14\", info: \"#007bff\" }}\n * enableHover\n * />\n * ```\n */\nexport const RealtimeBarChart = forwardRef<RealtimeFrameHandle, RealtimeBarChartProps>(\n function RealtimeBarChart(props, ref) {\n const {\n binSize,\n size = [500, 300],\n margin,\n className,\n arrowOfTime = \"right\",\n windowMode = \"sliding\",\n windowSize = 200,\n data,\n timeAccessor,\n valueAccessor,\n timeExtent,\n valueExtent,\n extentPadding,\n categoryAccessor,\n colors,\n fill,\n stroke,\n strokeWidth,\n gap,\n showAxes = true,\n background,\n enableHover,\n tooltipContent,\n onHover,\n annotations,\n svgAnnotationRules,\n tickFormatTime,\n tickFormatValue\n } = props\n\n const frameRef = useRef<RealtimeFrameHandle>(null)\n\n useImperativeHandle(ref, () => ({\n push: (point) => frameRef.current?.push(point),\n pushMany: (points) => frameRef.current?.pushMany(points),\n clear: () => frameRef.current?.clear(),\n getData: () => frameRef.current?.getData() ?? []\n }))\n\n const barStyle: BarStyle = {}\n if (fill != null) barStyle.fill = fill\n if (stroke != null) barStyle.stroke = stroke\n if (strokeWidth != null) barStyle.strokeWidth = strokeWidth\n if (gap != null) barStyle.gap = gap\n\n return (\n <RealtimeFrame\n ref={frameRef}\n chartType=\"bar\"\n size={size}\n margin={margin}\n className={className}\n arrowOfTime={arrowOfTime}\n windowMode={windowMode}\n windowSize={windowSize}\n data={data}\n timeAccessor={timeAccessor}\n valueAccessor={valueAccessor}\n timeExtent={timeExtent}\n valueExtent={valueExtent}\n extentPadding={extentPadding}\n binSize={binSize}\n categoryAccessor={categoryAccessor}\n barColors={colors}\n barStyle={barStyle}\n showAxes={showAxes}\n background={background}\n hoverAnnotation={enableHover}\n tooltipContent={tooltipContent}\n customHoverBehavior={onHover}\n annotations={annotations}\n svgAnnotationRules={svgAnnotationRules}\n tickFormatTime={tickFormatTime}\n tickFormatValue={tickFormatValue}\n />\n )\n }\n)\n","import * as React from \"react\"\nimport { useRef, useImperativeHandle, forwardRef } from \"react\"\nimport RealtimeFrame from \"../../realtime/RealtimeFrame\"\nimport type {\n ArrowOfTime,\n WindowMode,\n SwarmStyle,\n HoverAnnotationConfig,\n HoverData,\n RealtimeFrameHandle,\n AnnotationContext\n} from \"../../realtime/types\"\nimport type { ReactNode } from \"react\"\n\nexport interface RealtimeSwarmChartProps {\n /** Chart dimensions as [width, height] */\n size?: [number, number]\n /** Chart margins */\n margin?: { top?: number; right?: number; bottom?: number; left?: number }\n /** CSS class name */\n className?: string\n /** Direction time flows */\n arrowOfTime?: ArrowOfTime\n /** Data retention strategy */\n windowMode?: WindowMode\n /** Ring buffer capacity */\n windowSize?: number\n /** Controlled data array */\n data?: Record<string, any>[]\n /** Time value accessor */\n timeAccessor?: string | ((d: Record<string, any>) => number)\n /** Value accessor */\n valueAccessor?: string | ((d: Record<string, any>) => number)\n /** Fixed time domain */\n timeExtent?: [number, number]\n /** Fixed value domain */\n valueExtent?: [number, number]\n /** Extent padding factor */\n extentPadding?: number\n /** Category accessor for color-coding dots */\n categoryAccessor?: string | ((d: Record<string, any>) => string)\n /** Category-to-color map */\n colors?: Record<string, string>\n /** Dot radius */\n radius?: number\n /** Dot fill color (when no categoryAccessor) */\n fill?: string\n /** Dot opacity */\n opacity?: number\n /** Dot stroke color */\n stroke?: string\n /** Dot stroke width */\n strokeWidth?: number\n /** Show canvas-drawn axes */\n showAxes?: boolean\n /** Background fill color */\n background?: string\n /** Enable hover interaction */\n enableHover?: boolean | HoverAnnotationConfig\n /** Custom tooltip renderer */\n tooltipContent?: (d: HoverData) => ReactNode\n /** Callback on hover */\n onHover?: (d: HoverData | null) => void\n /** Annotation objects (including threshold coloring) */\n annotations?: Record<string, any>[]\n /** SVG annotation render function */\n svgAnnotationRules?: (annotation: Record<string, any>, index: number, context: AnnotationContext) => ReactNode\n /** Custom formatter for time axis ticks */\n tickFormatTime?: (value: number) => string\n /** Custom formatter for value axis ticks */\n tickFormatValue?: (value: number) => string\n}\n\n/**\n * RealtimeSwarmChart - Simplified wrapper for streaming dot/swarm charts.\n *\n * Wraps RealtimeFrame with `chartType=\"swarm\"` and exposes dot styling as\n * top-level props. Each data point renders as an individual dot at its\n * (time, value) coordinates.\n *\n * Supports threshold coloring via annotations to recolor dots that cross\n * value boundaries.\n *\n * @example\n * ```tsx\n * <RealtimeSwarmChart\n * ref={ref}\n * radius={4}\n * opacity={0.8}\n * categoryAccessor=\"sensor\"\n * colors={{ sensor1: \"#007bff\", sensor2: \"#28a745\" }}\n * />\n * ```\n */\nexport const RealtimeSwarmChart = forwardRef<RealtimeFrameHandle, RealtimeSwarmChartProps>(\n function RealtimeSwarmChart(props, ref) {\n const {\n size = [500, 300],\n margin,\n className,\n arrowOfTime = \"right\",\n windowMode = \"sliding\",\n windowSize = 200,\n data,\n timeAccessor,\n valueAccessor,\n timeExtent,\n valueExtent,\n extentPadding,\n categoryAccessor,\n colors,\n radius,\n fill,\n opacity,\n stroke,\n strokeWidth,\n showAxes = true,\n background,\n enableHover,\n tooltipContent,\n onHover,\n annotations,\n svgAnnotationRules,\n tickFormatTime,\n tickFormatValue\n } = props\n\n const frameRef = useRef<RealtimeFrameHandle>(null)\n\n useImperativeHandle(ref, () => ({\n push: (point) => frameRef.current?.push(point),\n pushMany: (points) => frameRef.current?.pushMany(points),\n clear: () => frameRef.current?.clear(),\n getData: () => frameRef.current?.getData() ?? []\n }))\n\n const swarmStyle: SwarmStyle = {}\n if (radius != null) swarmStyle.radius = radius\n if (fill != null) swarmStyle.fill = fill\n if (opacity != null) swarmStyle.opacity = opacity\n if (stroke != null) swarmStyle.stroke = stroke\n if (strokeWidth != null) swarmStyle.strokeWidth = strokeWidth\n\n return (\n <RealtimeFrame\n ref={frameRef}\n chartType=\"swarm\"\n size={size}\n margin={margin}\n className={className}\n arrowOfTime={arrowOfTime}\n windowMode={windowMode}\n windowSize={windowSize}\n data={data}\n timeAccessor={timeAccessor}\n valueAccessor={valueAccessor}\n timeExtent={timeExtent}\n valueExtent={valueExtent}\n extentPadding={extentPadding}\n categoryAccessor={categoryAccessor}\n barColors={colors}\n swarmStyle={swarmStyle}\n showAxes={showAxes}\n background={background}\n hoverAnnotation={enableHover}\n tooltipContent={tooltipContent}\n customHoverBehavior={onHover}\n annotations={annotations}\n svgAnnotationRules={svgAnnotationRules}\n tickFormatTime={tickFormatTime}\n tickFormatValue={tickFormatValue}\n />\n )\n }\n)\n","import * as React from \"react\"\nimport { useRef, useImperativeHandle, forwardRef } from \"react\"\nimport RealtimeFrame from \"../../realtime/RealtimeFrame\"\nimport type {\n ArrowOfTime,\n WindowMode,\n WaterfallStyle,\n HoverAnnotationConfig,\n HoverData,\n RealtimeFrameHandle,\n AnnotationContext\n} from \"../../realtime/types\"\nimport type { ReactNode } from \"react\"\n\nexport interface RealtimeWaterfallChartProps {\n /** Chart dimensions as [width, height] */\n size?: [number, number]\n /** Chart margins */\n margin?: { top?: number; right?: number; bottom?: number; left?: number }\n /** CSS class name */\n className?: string\n /** Direction time flows */\n arrowOfTime?: ArrowOfTime\n /** Data retention strategy */\n windowMode?: WindowMode\n /** Ring buffer capacity */\n windowSize?: number\n /** Controlled data array */\n data?: Record<string, any>[]\n /** Time value accessor */\n timeAccessor?: string | ((d: Record<string, any>) => number)\n /** Value accessor (positive = gain, negative = loss) */\n valueAccessor?: string | ((d: Record<string, any>) => number)\n /** Fixed time domain */\n timeExtent?: [number, number]\n /** Fixed value domain */\n valueExtent?: [number, number]\n /** Extent padding factor */\n extentPadding?: number\n /** Color for positive (gain) bars */\n positiveColor?: string\n /** Color for negative (loss) bars */\n negativeColor?: string\n /** Connector line stroke color (omit to hide connectors) */\n connectorStroke?: string\n /** Connector line width */\n connectorWidth?: number\n /** Gap between bars in pixels */\n gap?: number\n /** Bar stroke color */\n stroke?: string\n /** Bar stroke width */\n strokeWidth?: number\n /** Show canvas-drawn axes */\n showAxes?: boolean\n /** Background fill color */\n background?: string\n /** Enable hover interaction */\n enableHover?: boolean | HoverAnnotationConfig\n /** Custom tooltip renderer */\n tooltipContent?: (d: HoverData) => ReactNode\n /** Callback on hover */\n onHover?: (d: HoverData | null) => void\n /** Annotation objects */\n annotations?: Record<string, any>[]\n /** SVG annotation render function */\n svgAnnotationRules?: (annotation: Record<string, any>, index: number, context: AnnotationContext) => ReactNode\n /** Custom formatter for time axis ticks */\n tickFormatTime?: (value: number) => string\n /** Custom formatter for value axis ticks */\n tickFormatValue?: (value: number) => string\n}\n\n/**\n * RealtimeWaterfallChart - Simplified wrapper for streaming waterfall charts.\n *\n * Wraps RealtimeFrame with `chartType=\"waterfall\"` and exposes waterfall styling\n * as top-level props. Visualizes cumulative deltas as connected bars rising and\n * falling from a running baseline.\n *\n * @example\n * ```tsx\n * <RealtimeWaterfallChart\n * ref={ref}\n * positiveColor=\"#28a745\"\n * negativeColor=\"#dc3545\"\n * connectorStroke=\"#999\"\n * windowSize={300}\n * />\n * ```\n */\nexport const RealtimeWaterfallChart = forwardRef<RealtimeFrameHandle, RealtimeWaterfallChartProps>(\n function RealtimeWaterfallChart(props, ref) {\n const {\n size = [500, 300],\n margin,\n className,\n arrowOfTime = \"right\",\n windowMode = \"sliding\",\n windowSize = 200,\n data,\n timeAccessor,\n valueAccessor,\n timeExtent,\n valueExtent,\n extentPadding,\n positiveColor,\n negativeColor,\n connectorStroke,\n connectorWidth,\n gap,\n stroke,\n strokeWidth,\n showAxes = true,\n background,\n enableHover,\n tooltipContent,\n onHover,\n annotations,\n svgAnnotationRules,\n tickFormatTime,\n tickFormatValue\n } = props\n\n const frameRef = useRef<RealtimeFrameHandle>(null)\n\n useImperativeHandle(ref, () => ({\n push: (point) => frameRef.current?.push(point),\n pushMany: (points) => frameRef.current?.pushMany(points),\n clear: () => frameRef.current?.clear(),\n getData: () => frameRef.current?.getData() ?? []\n }))\n\n const waterfallStyle: WaterfallStyle = {}\n if (positiveColor != null) waterfallStyle.positiveColor = positiveColor\n if (negativeColor != null) waterfallStyle.negativeColor = negativeColor\n if (connectorStroke != null) waterfallStyle.connectorStroke = connectorStroke\n if (connectorWidth != null) waterfallStyle.connectorWidth = connectorWidth\n if (gap != null) waterfallStyle.gap = gap\n if (stroke != null) waterfallStyle.stroke = stroke\n if (strokeWidth != null) waterfallStyle.strokeWidth = strokeWidth\n\n return (\n <RealtimeFrame\n ref={frameRef}\n chartType=\"waterfall\"\n size={size}\n margin={margin}\n className={className}\n arrowOfTime={arrowOfTime}\n windowMode={windowMode}\n windowSize={windowSize}\n data={data}\n timeAccessor={timeAccessor}\n valueAccessor={valueAccessor}\n timeExtent={timeExtent}\n valueExtent={valueExtent}\n extentPadding={extentPadding}\n waterfallStyle={waterfallStyle}\n showAxes={showAxes}\n background={background}\n hoverAnnotation={enableHover}\n tooltipContent={tooltipContent}\n customHoverBehavior={onHover}\n annotations={annotations}\n svgAnnotationRules={svgAnnotationRules}\n tickFormatTime={tickFormatTime}\n tickFormatValue={tickFormatValue}\n />\n )\n }\n)\n"],"names":["React","Annotation","createBrush","d3Extent","this","emptyObjectReturnFn","twoPI","shapeBounds","formatValue","blankArray","extent","projectedCoordinateNames","defaultProps","annotationTypeStrings","svgHighlightRule","svgEncloseRule","htmlFrameHoverRule","svgRectEncloseRule","xScale","yScale","curvature","glyphD","d","defaultTooltipStyle","resolveAccessor","CURVE_MAP","resolveColor","DEFAULT_PALETTE"],"mappings":"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"}