semiotic 2.0.3 → 3.0.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (508) hide show
  1. package/CLAUDE.md +828 -0
  2. package/README.md +215 -37
  3. package/ai/cli.js +48 -0
  4. package/ai/dist/ai/componentRegistry.js +45 -0
  5. package/ai/dist/ai/mcp-server.js +99 -0
  6. package/ai/dist/ai/renderHOCToSVG.js +77 -0
  7. package/ai/dist/src/components/Annotation.js +358 -0
  8. package/ai/dist/src/components/AnnotationLayer/AnnotationLayer.js +369 -0
  9. package/ai/dist/src/components/Axis/Axis.js +374 -0
  10. package/ai/dist/src/components/Axis/axisTitle.js +14 -0
  11. package/ai/dist/src/components/Axis/index.js +7 -0
  12. package/ai/dist/src/components/Axis/summaryGraphic.js +37 -0
  13. package/ai/dist/src/components/Brush.js +84 -0
  14. package/ai/dist/src/components/ChartErrorBoundary.js +91 -0
  15. package/ai/dist/src/components/DividedLine.js +65 -0
  16. package/ai/dist/src/components/Legend.js +140 -0
  17. package/ai/dist/src/components/LinkedCharts.js +95 -0
  18. package/ai/dist/src/components/ThemeProvider.js +79 -0
  19. package/ai/dist/src/components/Tooltip/Tooltip.js +309 -0
  20. package/ai/dist/src/components/TooltipPositioner/index.js +132 -0
  21. package/ai/dist/src/components/annotationLayerBehavior/annotationHandling.js +73 -0
  22. package/ai/dist/src/components/annotationLayerBehavior/d3labeler.js +254 -0
  23. package/ai/dist/src/components/annotationRules/baseRules.js +150 -0
  24. package/ai/dist/src/components/annotationRules/networkframeRules.js +196 -0
  25. package/ai/dist/src/components/annotationRules/xyframeRules.js +297 -0
  26. package/ai/dist/src/components/batchWork.js +35 -0
  27. package/ai/dist/src/components/charts/index.js +109 -0
  28. package/ai/dist/src/components/charts/network/ChordDiagram.js +142 -0
  29. package/ai/dist/src/components/charts/network/CirclePack.js +108 -0
  30. package/ai/dist/src/components/charts/network/ForceDirectedGraph.js +121 -0
  31. package/ai/dist/src/components/charts/network/SankeyDiagram.js +155 -0
  32. package/ai/dist/src/components/charts/network/TreeDiagram.js +110 -0
  33. package/ai/dist/src/components/charts/network/Treemap.js +106 -0
  34. package/ai/dist/src/components/charts/ordinal/BarChart.js +156 -0
  35. package/ai/dist/src/components/charts/ordinal/BoxPlot.js +139 -0
  36. package/ai/dist/src/components/charts/ordinal/DonutChart.js +130 -0
  37. package/ai/dist/src/components/charts/ordinal/DotPlot.js +126 -0
  38. package/ai/dist/src/components/charts/ordinal/GroupedBarChart.js +129 -0
  39. package/ai/dist/src/components/charts/ordinal/Histogram.js +132 -0
  40. package/ai/dist/src/components/charts/ordinal/PieChart.js +128 -0
  41. package/ai/dist/src/components/charts/ordinal/RidgelinePlot.js +130 -0
  42. package/ai/dist/src/components/charts/ordinal/StackedBarChart.js +130 -0
  43. package/ai/dist/src/components/charts/ordinal/SwarmPlot.js +147 -0
  44. package/ai/dist/src/components/charts/ordinal/ViolinPlot.js +138 -0
  45. package/ai/dist/src/components/charts/realtime/RealtimeHeatmap.js +79 -0
  46. package/ai/dist/src/components/charts/realtime/RealtimeHistogram.js +114 -0
  47. package/ai/dist/src/components/charts/realtime/RealtimeLineChart.js +93 -0
  48. package/ai/dist/src/components/charts/realtime/RealtimeSwarmChart.js +105 -0
  49. package/ai/dist/src/components/charts/realtime/RealtimeWaterfallChart.js +106 -0
  50. package/ai/dist/src/components/charts/shared/ChartError.js +72 -0
  51. package/ai/dist/src/components/charts/shared/colorUtils.js +138 -0
  52. package/ai/dist/src/components/charts/shared/formatUtils.js +213 -0
  53. package/ai/dist/src/components/charts/shared/hooks.js +49 -0
  54. package/ai/dist/src/components/charts/shared/legendUtils.js +57 -0
  55. package/ai/dist/src/components/charts/shared/selectionUtils.js +67 -0
  56. package/ai/dist/src/components/charts/shared/tooltipUtils.js +79 -0
  57. package/ai/dist/src/components/charts/shared/types.js +2 -0
  58. package/ai/dist/src/components/charts/shared/validateChartData.js +82 -0
  59. package/ai/dist/src/components/charts/shared/validateProps.js +736 -0
  60. package/ai/dist/src/components/charts/xy/AreaChart.js +230 -0
  61. package/ai/dist/src/components/charts/xy/BubbleChart.js +251 -0
  62. package/ai/dist/src/components/charts/xy/Heatmap.js +235 -0
  63. package/ai/dist/src/components/charts/xy/LineChart.js +307 -0
  64. package/ai/dist/src/components/charts/xy/MinimapChart.js +298 -0
  65. package/ai/dist/src/components/charts/xy/Scatterplot.js +172 -0
  66. package/ai/dist/src/components/charts/xy/ScatterplotMatrix.js +426 -0
  67. package/ai/dist/src/components/charts/xy/StackedAreaChart.js +231 -0
  68. package/ai/dist/src/components/constants/coordinateNames.js +11 -0
  69. package/ai/dist/src/components/constants/frame_props.js +251 -0
  70. package/ai/dist/src/components/data/dataFunctions.js +487 -0
  71. package/ai/dist/src/components/data/multiAccessorUtils.js +14 -0
  72. package/ai/dist/src/components/data/transforms.js +143 -0
  73. package/ai/dist/src/components/data/unflowedFunctions.js +5 -0
  74. package/ai/dist/src/components/export/exportChart.js +121 -0
  75. package/ai/dist/src/components/generic_utilities/functions.js +5 -0
  76. package/ai/dist/src/components/geometry/areaDrawing.js +312 -0
  77. package/ai/dist/src/components/geometry/contourLayout.js +73 -0
  78. package/ai/dist/src/components/geometry/hexbinLayout.js +163 -0
  79. package/ai/dist/src/components/geometry/lineDrawing.js +356 -0
  80. package/ai/dist/src/components/geometry/sankeyLinks.js +331 -0
  81. package/ai/dist/src/components/geometry/summaryLayouts.js +136 -0
  82. package/ai/dist/src/components/index.js +18 -0
  83. package/ai/dist/src/components/processing/InteractionItems.js +223 -0
  84. package/ai/dist/src/components/processing/hierarchyUtils.js +104 -0
  85. package/ai/dist/src/components/processing/layouts/chordLayout.js +58 -0
  86. package/ai/dist/src/components/processing/layouts/forceLayout.js +142 -0
  87. package/ai/dist/src/components/processing/layouts/hierarchyLayout.js +31 -0
  88. package/ai/dist/src/components/processing/layouts/index.js +32 -0
  89. package/ai/dist/src/components/processing/layouts/sankeyLayout.js +96 -0
  90. package/ai/dist/src/components/processing/layouts/simpleLayouts.js +34 -0
  91. package/ai/dist/src/components/processing/layouts/types.js +2 -0
  92. package/ai/dist/src/components/processing/networkDefaults.js +39 -0
  93. package/ai/dist/src/components/realtime/BinAccumulator.js +36 -0
  94. package/ai/dist/src/components/realtime/IncrementalExtent.js +55 -0
  95. package/ai/dist/src/components/realtime/RingBuffer.js +104 -0
  96. package/ai/dist/src/components/realtime/renderers/barRenderer.js +133 -0
  97. package/ai/dist/src/components/realtime/renderers/candlestickRenderer.js +7 -0
  98. package/ai/dist/src/components/realtime/renderers/lineRenderer.js +164 -0
  99. package/ai/dist/src/components/realtime/renderers/swarmRenderer.js +91 -0
  100. package/ai/dist/src/components/realtime/renderers/types.js +2 -0
  101. package/ai/dist/src/components/realtime/renderers/waterfallRenderer.js +163 -0
  102. package/ai/dist/src/components/realtime/types.js +2 -0
  103. package/ai/dist/src/components/semiotic-ai.js +89 -0
  104. package/ai/dist/src/components/semiotic-data.js +12 -0
  105. package/ai/dist/src/components/semiotic-network.js +38 -0
  106. package/ai/dist/src/components/semiotic-ordinal.js +28 -0
  107. package/ai/dist/src/components/semiotic-realtime.js +30 -0
  108. package/ai/dist/src/components/semiotic-server.js +8 -0
  109. package/ai/dist/src/components/semiotic-xy.js +35 -0
  110. package/ai/dist/src/components/semiotic.js +109 -0
  111. package/ai/dist/src/components/server/renderToStaticSVG.js +594 -0
  112. package/ai/dist/src/components/store/SelectionStore.js +91 -0
  113. package/ai/dist/src/components/store/ThemeStore.js +78 -0
  114. package/ai/dist/src/components/store/TooltipStore.js +13 -0
  115. package/ai/dist/src/components/store/createStore.js +81 -0
  116. package/ai/dist/src/components/store/useSelection.js +133 -0
  117. package/ai/dist/src/components/stream/CanvasHitTester.js +164 -0
  118. package/ai/dist/src/components/stream/DataSourceAdapter.js +99 -0
  119. package/ai/dist/src/components/stream/MarginalGraphics.js +266 -0
  120. package/ai/dist/src/components/stream/NetworkCanvasHitTester.js +228 -0
  121. package/ai/dist/src/components/stream/NetworkPipelineStore.js +498 -0
  122. package/ai/dist/src/components/stream/NetworkSVGOverlay.js +70 -0
  123. package/ai/dist/src/components/stream/NetworkSceneGraph.js +38 -0
  124. package/ai/dist/src/components/stream/OrdinalCanvasHitTester.js +146 -0
  125. package/ai/dist/src/components/stream/OrdinalPipelineStore.js +786 -0
  126. package/ai/dist/src/components/stream/OrdinalSVGOverlay.js +130 -0
  127. package/ai/dist/src/components/stream/ParticlePool.js +174 -0
  128. package/ai/dist/src/components/stream/PipelineStore.js +1243 -0
  129. package/ai/dist/src/components/stream/SVGOverlay.js +129 -0
  130. package/ai/dist/src/components/stream/SceneGraph.js +132 -0
  131. package/ai/dist/src/components/stream/StreamNetworkFrame.js +561 -0
  132. package/ai/dist/src/components/stream/StreamOrdinalFrame.js +492 -0
  133. package/ai/dist/src/components/stream/StreamXYFrame.js +590 -0
  134. package/ai/dist/src/components/stream/accessorUtils.js +20 -0
  135. package/ai/dist/src/components/stream/index.js +32 -0
  136. package/ai/dist/src/components/stream/layouts/chordLayoutPlugin.js +352 -0
  137. package/ai/dist/src/components/stream/layouts/forceLayoutPlugin.js +230 -0
  138. package/ai/dist/src/components/stream/layouts/hierarchyLayoutPlugin.js +568 -0
  139. package/ai/dist/src/components/stream/layouts/index.js +28 -0
  140. package/ai/dist/src/components/stream/layouts/sankeyLayoutPlugin.js +245 -0
  141. package/ai/dist/src/components/stream/networkTypes.js +17 -0
  142. package/ai/dist/src/components/stream/ordinalSceneBuilders/barScene.js +126 -0
  143. package/ai/dist/src/components/stream/ordinalSceneBuilders/connectorScene.js +62 -0
  144. package/ai/dist/src/components/stream/ordinalSceneBuilders/pieScene.js +33 -0
  145. package/ai/dist/src/components/stream/ordinalSceneBuilders/pointScene.js +63 -0
  146. package/ai/dist/src/components/stream/ordinalSceneBuilders/statisticalScene.js +278 -0
  147. package/ai/dist/src/components/stream/ordinalSceneBuilders/timelineScene.js +30 -0
  148. package/ai/dist/src/components/stream/ordinalSceneBuilders/types.js +2 -0
  149. package/ai/dist/src/components/stream/ordinalTypes.js +2 -0
  150. package/ai/dist/src/components/stream/renderers/areaCanvasRenderer.js +48 -0
  151. package/ai/dist/src/components/stream/renderers/barCanvasRenderer.js +70 -0
  152. package/ai/dist/src/components/stream/renderers/boxplotCanvasRenderer.js +75 -0
  153. package/ai/dist/src/components/stream/renderers/candlestickCanvasRenderer.js +28 -0
  154. package/ai/dist/src/components/stream/renderers/connectorCanvasRenderer.js +47 -0
  155. package/ai/dist/src/components/stream/renderers/heatmapCanvasRenderer.js +31 -0
  156. package/ai/dist/src/components/stream/renderers/lineCanvasRenderer.js +140 -0
  157. package/ai/dist/src/components/stream/renderers/networkArcRenderer.js +38 -0
  158. package/ai/dist/src/components/stream/renderers/networkCircleRenderer.js +37 -0
  159. package/ai/dist/src/components/stream/renderers/networkEdgeRenderer.js +102 -0
  160. package/ai/dist/src/components/stream/renderers/networkParticleRenderer.js +63 -0
  161. package/ai/dist/src/components/stream/renderers/networkRectRenderer.js +35 -0
  162. package/ai/dist/src/components/stream/renderers/pointCanvasRenderer.js +38 -0
  163. package/ai/dist/src/components/stream/renderers/swarmCanvasRenderer.js +10 -0
  164. package/ai/dist/src/components/stream/renderers/types.js +2 -0
  165. package/ai/dist/src/components/stream/renderers/violinCanvasRenderer.js +47 -0
  166. package/ai/dist/src/components/stream/renderers/waterfallCanvasRenderer.js +38 -0
  167. package/ai/dist/src/components/stream/renderers/wedgeCanvasRenderer.js +33 -0
  168. package/ai/dist/src/components/stream/types.js +2 -0
  169. package/ai/dist/src/components/types/annotationTypes.js +2 -0
  170. package/ai/dist/src/components/types/canvasTypes.js +2 -0
  171. package/ai/dist/src/components/types/generalTypes.js +2 -0
  172. package/ai/dist/src/components/types/interactionTypes.js +2 -0
  173. package/ai/dist/src/components/types/legendTypes.js +2 -0
  174. package/ai/dist/src/components/types/networkTypes.js +2 -0
  175. package/ai/dist/src/components/types/ordinalTypes.js +2 -0
  176. package/ai/dist/src/components/types/xyTypes.js +2 -0
  177. package/ai/dist/src/components/useBoundingRect.js +24 -0
  178. package/ai/dist/src/components/visualizationLayerBehavior/axis.js +301 -0
  179. package/ai/dist/src/components/visualizationLayerBehavior/general.js +435 -0
  180. package/ai/dist/src/setupTests.js +4 -0
  181. package/ai/examples.md +489 -0
  182. package/ai/schema.json +1338 -0
  183. package/ai/system-prompt.md +41 -0
  184. package/dist/AnnotationLayer/AnnotationLayer.d.ts +0 -1
  185. package/dist/Axis/axisTitle.d.ts +3 -3
  186. package/dist/Axis/summaryGraphic.d.ts +1 -1
  187. package/dist/ChartErrorBoundary.d.ts +39 -0
  188. package/dist/LinkedCharts.d.ts +42 -0
  189. package/dist/ThemeProvider.d.ts +12 -0
  190. package/dist/Tooltip/Tooltip.d.ts +141 -0
  191. package/dist/TooltipPositioner/index.d.ts +1 -1
  192. package/dist/annotationLayerBehavior/annotationHandling.d.ts +2 -2
  193. package/dist/annotationRules/networkframeRules.d.ts +2 -2
  194. package/dist/annotationRules/xyframeRules.d.ts +2 -2
  195. package/dist/batchWork.d.ts +1 -1
  196. package/dist/charts/index.d.ts +74 -0
  197. package/dist/charts/network/ChordDiagram.d.ts +36 -0
  198. package/dist/charts/network/CirclePack.d.ts +32 -0
  199. package/dist/charts/network/ForceDirectedGraph.d.ts +38 -0
  200. package/dist/charts/network/SankeyDiagram.d.ts +38 -0
  201. package/dist/charts/network/TreeDiagram.d.ts +34 -0
  202. package/dist/charts/network/Treemap.d.ts +33 -0
  203. package/dist/charts/ordinal/BarChart.d.ts +32 -0
  204. package/dist/charts/ordinal/BoxPlot.d.ts +27 -0
  205. package/dist/charts/ordinal/DonutChart.d.ts +23 -0
  206. package/dist/charts/ordinal/DotPlot.d.ts +27 -0
  207. package/dist/charts/ordinal/GroupedBarChart.d.ts +26 -0
  208. package/dist/charts/ordinal/Histogram.d.ts +26 -0
  209. package/dist/charts/ordinal/PieChart.d.ts +21 -0
  210. package/dist/charts/ordinal/RidgelinePlot.d.ts +34 -0
  211. package/dist/charts/ordinal/StackedBarChart.d.ts +27 -0
  212. package/dist/charts/ordinal/SwarmPlot.d.ts +29 -0
  213. package/dist/charts/ordinal/ViolinPlot.d.ts +28 -0
  214. package/dist/charts/realtime/RealtimeHeatmap.d.ts +95 -0
  215. package/dist/charts/realtime/RealtimeHistogram.d.ts +119 -0
  216. package/dist/charts/realtime/RealtimeLineChart.d.ts +98 -0
  217. package/dist/charts/realtime/RealtimeSwarmChart.d.ts +100 -0
  218. package/dist/charts/realtime/RealtimeWaterfallChart.d.ts +97 -0
  219. package/dist/charts/shared/ChartError.d.ts +19 -0
  220. package/dist/charts/shared/colorUtils.d.ts +62 -0
  221. package/dist/charts/shared/formatUtils.d.ts +94 -0
  222. package/dist/charts/shared/hooks.d.ts +20 -0
  223. package/dist/charts/shared/legendUtils.d.ts +32 -0
  224. package/dist/charts/shared/selectionUtils.d.ts +51 -0
  225. package/dist/charts/shared/tooltipUtils.d.ts +18 -0
  226. package/dist/charts/shared/types.d.ts +97 -0
  227. package/dist/charts/shared/validateChartData.d.ts +41 -0
  228. package/dist/charts/shared/validateProps.d.ts +18 -0
  229. package/dist/charts/xy/AreaChart.d.ts +130 -0
  230. package/dist/charts/xy/BubbleChart.d.ts +164 -0
  231. package/dist/charts/xy/Heatmap.d.ts +156 -0
  232. package/dist/charts/xy/LineChart.d.ts +196 -0
  233. package/dist/charts/xy/MinimapChart.d.ts +73 -0
  234. package/dist/charts/xy/Scatterplot.d.ts +55 -0
  235. package/dist/charts/xy/ScatterplotMatrix.d.ts +71 -0
  236. package/dist/charts/xy/StackedAreaChart.d.ts +134 -0
  237. package/dist/constants/frame_props.d.ts +9 -0
  238. package/dist/data/dataFunctions.d.ts +10 -11
  239. package/dist/data/transforms.d.ts +45 -0
  240. package/dist/export/exportChart.d.ts +16 -0
  241. package/dist/{svg → geometry}/areaDrawing.d.ts +3 -13
  242. package/dist/geometry/contourLayout.d.ts +6 -0
  243. package/dist/geometry/hexbinLayout.d.ts +7 -0
  244. package/dist/{svg → geometry}/lineDrawing.d.ts +7 -35
  245. package/dist/geometry/sankeyLinks.d.ts +2 -0
  246. package/dist/geometry/summaryLayouts.d.ts +45 -0
  247. package/dist/index.d.ts +1 -125
  248. package/dist/network.js +7495 -0
  249. package/dist/network.js.map +1 -0
  250. package/dist/network.min.js +1 -0
  251. package/dist/network.module.js +7458 -0
  252. package/dist/network.module.js.map +1 -0
  253. package/dist/network.module.min.js +1 -0
  254. package/dist/ordinal.js +6497 -0
  255. package/dist/ordinal.js.map +1 -0
  256. package/dist/ordinal.min.js +1 -0
  257. package/dist/ordinal.module.js +6465 -0
  258. package/dist/ordinal.module.js.map +1 -0
  259. package/dist/ordinal.module.min.js +1 -0
  260. package/dist/processing/InteractionItems.d.ts +5 -4
  261. package/dist/processing/hierarchyUtils.d.ts +16 -0
  262. package/dist/processing/layouts/chordLayout.d.ts +2 -0
  263. package/dist/processing/layouts/forceLayout.d.ts +3 -0
  264. package/dist/processing/layouts/hierarchyLayout.d.ts +10 -0
  265. package/dist/processing/layouts/index.d.ts +8 -0
  266. package/dist/processing/layouts/sankeyLayout.d.ts +8 -0
  267. package/dist/processing/layouts/simpleLayouts.d.ts +7 -0
  268. package/dist/processing/layouts/types.d.ts +17 -0
  269. package/dist/processing/networkDefaults.d.ts +36 -0
  270. package/dist/realtime/BinAccumulator.d.ts +8 -0
  271. package/dist/realtime/IncrementalExtent.d.ts +13 -0
  272. package/dist/realtime/RingBuffer.d.ts +19 -0
  273. package/dist/realtime/renderers/barRenderer.d.ts +2 -0
  274. package/dist/realtime/renderers/candlestickRenderer.d.ts +2 -0
  275. package/dist/realtime/renderers/lineRenderer.d.ts +2 -0
  276. package/dist/realtime/renderers/swarmRenderer.d.ts +2 -0
  277. package/dist/realtime/renderers/types.d.ts +9 -0
  278. package/dist/realtime/renderers/waterfallRenderer.d.ts +3 -0
  279. package/dist/realtime/types.d.ts +113 -0
  280. package/dist/realtime.js +7072 -0
  281. package/dist/realtime.js.map +1 -0
  282. package/dist/realtime.min.js +1 -0
  283. package/dist/realtime.module.js +7043 -0
  284. package/dist/realtime.module.js.map +1 -0
  285. package/dist/realtime.module.min.js +1 -0
  286. package/dist/semiotic-ai.d.ts +36 -0
  287. package/dist/semiotic-ai.js +13323 -0
  288. package/dist/semiotic-ai.js.map +1 -0
  289. package/dist/semiotic-ai.min.js +1 -0
  290. package/dist/semiotic-ai.module.js +13264 -0
  291. package/dist/semiotic-ai.module.js.map +1 -0
  292. package/dist/semiotic-ai.module.min.js +1 -0
  293. package/dist/semiotic-data.d.ts +5 -0
  294. package/dist/semiotic-data.js +141 -0
  295. package/dist/semiotic-data.js.map +1 -0
  296. package/dist/semiotic-data.min.js +1 -0
  297. package/dist/semiotic-data.module.js +136 -0
  298. package/dist/semiotic-data.module.js.map +1 -0
  299. package/dist/semiotic-data.module.min.js +1 -0
  300. package/dist/semiotic-network.d.ts +23 -0
  301. package/dist/semiotic-ordinal.d.ts +19 -0
  302. package/dist/semiotic-realtime.d.ts +22 -0
  303. package/dist/semiotic-server.d.ts +1 -0
  304. package/dist/semiotic-xy.d.ts +21 -0
  305. package/dist/semiotic.d.ts +41 -28
  306. package/dist/semiotic.js +16257 -13130
  307. package/dist/semiotic.js.map +1 -0
  308. package/dist/semiotic.min.js +1 -0
  309. package/dist/semiotic.module.js +16198 -13100
  310. package/dist/semiotic.module.js.map +1 -0
  311. package/dist/semiotic.module.min.js +1 -0
  312. package/dist/server/renderToStaticSVG.d.ts +9 -0
  313. package/dist/server.js +5191 -0
  314. package/dist/server.js.map +1 -0
  315. package/dist/server.min.js +1 -0
  316. package/dist/server.module.js +5166 -0
  317. package/dist/server.module.js.map +1 -0
  318. package/dist/server.module.min.js +1 -0
  319. package/dist/store/SelectionStore.d.ts +29 -0
  320. package/dist/store/ThemeStore.d.ts +26 -0
  321. package/dist/store/useSelection.d.ts +66 -0
  322. package/dist/stream/CanvasHitTester.d.ts +18 -0
  323. package/dist/stream/DataSourceAdapter.d.ts +32 -0
  324. package/dist/stream/MarginalGraphics.d.ts +19 -0
  325. package/dist/stream/NetworkCanvasHitTester.d.ts +14 -0
  326. package/dist/stream/NetworkPipelineStore.d.ts +74 -0
  327. package/dist/stream/NetworkSVGOverlay.d.ts +40 -0
  328. package/dist/stream/NetworkSceneGraph.d.ts +14 -0
  329. package/dist/stream/OrdinalCanvasHitTester.d.ts +9 -0
  330. package/dist/stream/OrdinalPipelineStore.d.ts +65 -0
  331. package/dist/stream/OrdinalSVGOverlay.d.ts +34 -0
  332. package/dist/stream/ParticlePool.d.ts +28 -0
  333. package/dist/stream/PipelineStore.d.ts +161 -0
  334. package/dist/stream/SVGOverlay.d.ts +37 -0
  335. package/dist/stream/SceneGraph.d.ts +16 -0
  336. package/dist/stream/StreamNetworkFrame.d.ts +4 -0
  337. package/dist/stream/StreamOrdinalFrame.d.ts +4 -0
  338. package/dist/stream/StreamXYFrame.d.ts +4 -0
  339. package/dist/stream/accessorUtils.d.ts +2 -0
  340. package/dist/stream/index.d.ts +16 -0
  341. package/dist/stream/layouts/chordLayoutPlugin.d.ts +8 -0
  342. package/dist/stream/layouts/forceLayoutPlugin.d.ts +9 -0
  343. package/dist/stream/layouts/hierarchyLayoutPlugin.d.ts +17 -0
  344. package/dist/stream/layouts/index.d.ts +11 -0
  345. package/dist/stream/layouts/sankeyLayoutPlugin.d.ts +8 -0
  346. package/dist/stream/networkTypes.d.ts +346 -0
  347. package/dist/stream/ordinalSceneBuilders/barScene.d.ts +4 -0
  348. package/dist/stream/ordinalSceneBuilders/connectorScene.d.ts +3 -0
  349. package/dist/stream/ordinalSceneBuilders/pieScene.d.ts +3 -0
  350. package/dist/stream/ordinalSceneBuilders/pointScene.d.ts +4 -0
  351. package/dist/stream/ordinalSceneBuilders/statisticalScene.d.ts +6 -0
  352. package/dist/stream/ordinalSceneBuilders/timelineScene.d.ts +3 -0
  353. package/dist/stream/ordinalSceneBuilders/types.d.ts +21 -0
  354. package/dist/stream/ordinalTypes.d.ts +225 -0
  355. package/dist/stream/renderers/areaCanvasRenderer.d.ts +7 -0
  356. package/dist/stream/renderers/barCanvasRenderer.d.ts +7 -0
  357. package/dist/stream/renderers/boxplotCanvasRenderer.d.ts +2 -0
  358. package/dist/stream/renderers/candlestickCanvasRenderer.d.ts +2 -0
  359. package/dist/stream/renderers/connectorCanvasRenderer.d.ts +2 -0
  360. package/dist/stream/renderers/heatmapCanvasRenderer.d.ts +6 -0
  361. package/dist/stream/renderers/lineCanvasRenderer.d.ts +8 -0
  362. package/dist/stream/renderers/networkArcRenderer.d.ts +5 -0
  363. package/dist/stream/renderers/networkCircleRenderer.d.ts +5 -0
  364. package/dist/stream/renderers/networkEdgeRenderer.d.ts +10 -0
  365. package/dist/stream/renderers/networkParticleRenderer.d.ts +11 -0
  366. package/dist/stream/renderers/networkRectRenderer.d.ts +5 -0
  367. package/dist/stream/renderers/pointCanvasRenderer.d.ts +7 -0
  368. package/dist/stream/renderers/swarmCanvasRenderer.d.ts +7 -0
  369. package/dist/stream/renderers/types.d.ts +7 -0
  370. package/dist/stream/renderers/violinCanvasRenderer.d.ts +2 -0
  371. package/dist/stream/renderers/waterfallCanvasRenderer.d.ts +8 -0
  372. package/dist/stream/renderers/wedgeCanvasRenderer.d.ts +2 -0
  373. package/dist/stream/types.d.ts +307 -0
  374. package/dist/types/annotationTypes.d.ts +13 -18
  375. package/dist/types/canvasTypes.d.ts +1 -1
  376. package/dist/types/generalTypes.d.ts +41 -36
  377. package/dist/types/interactionTypes.d.ts +7 -9
  378. package/dist/types/legendTypes.d.ts +2 -2
  379. package/dist/types/networkTypes.d.ts +40 -30
  380. package/dist/types/ordinalTypes.d.ts +27 -18
  381. package/dist/types/xyTypes.d.ts +1 -95
  382. package/dist/visualizationLayerBehavior/axis.d.ts +3 -5
  383. package/dist/visualizationLayerBehavior/general.d.ts +8 -12
  384. package/dist/xy.js +6993 -0
  385. package/dist/xy.js.map +1 -0
  386. package/dist/xy.min.js +1 -0
  387. package/dist/xy.module.js +6957 -0
  388. package/dist/xy.module.js.map +1 -0
  389. package/dist/xy.module.min.js +1 -0
  390. package/package.json +123 -67
  391. package/dist/AnnotationLayer/helpers.d.ts +0 -6
  392. package/dist/AnnotationLayer/index.d.ts +0 -2
  393. package/dist/FacetController.d.ts +0 -12
  394. package/dist/Frame.d.ts +0 -2
  395. package/dist/InteractionLayer.d.ts +0 -3
  396. package/dist/Mark/Mark.d.ts +0 -3
  397. package/dist/Mark/Mark.types.d.ts +0 -10
  398. package/dist/Mark/constants/markTransition.d.ts +0 -10
  399. package/dist/Mark/markBehavior/drawing.d.ts +0 -13
  400. package/dist/MiniMap.d.ts +0 -14
  401. package/dist/MinimapXYFrame.d.ts +0 -10
  402. package/dist/NetworkFrame.d.ts +0 -4
  403. package/dist/OrdinalFrame.d.ts +0 -4
  404. package/dist/ResponsiveFrame.d.ts +0 -22
  405. package/dist/ResponsiveMinimapXYFrame.d.ts +0 -6
  406. package/dist/ResponsiveNetworkFrame.d.ts +0 -6
  407. package/dist/ResponsiveOrdinalFrame.d.ts +0 -6
  408. package/dist/ResponsiveXYFrame.d.ts +0 -6
  409. package/dist/SpanOrDiv.d.ts +0 -10
  410. package/dist/SparkFrame.d.ts +0 -14
  411. package/dist/SparkNetworkFrame.d.ts +0 -5
  412. package/dist/SparkOrdinalFrame.d.ts +0 -5
  413. package/dist/SparkXYFrame.d.ts +0 -5
  414. package/dist/VisualizationLayer.d.ts +0 -33
  415. package/dist/XYFrame.d.ts +0 -4
  416. package/dist/annotationRules/orframeRules.d.ts +0 -105
  417. package/dist/components/Annotation.d.ts +0 -3
  418. package/dist/components/AnnotationLayer/AnnotationLayer.d.ts +0 -26
  419. package/dist/components/Axis/Axis.d.ts +0 -7
  420. package/dist/components/Axis/axisTitle.d.ts +0 -10
  421. package/dist/components/Axis/index.d.ts +0 -2
  422. package/dist/components/Axis/summaryGraphic.d.ts +0 -17
  423. package/dist/components/Brush.d.ts +0 -12
  424. package/dist/components/DividedLine.d.ts +0 -16
  425. package/dist/components/FacetController.d.ts +0 -12
  426. package/dist/components/Frame.d.ts +0 -2
  427. package/dist/components/InteractionLayer.d.ts +0 -3
  428. package/dist/components/Legend.d.ts +0 -3
  429. package/dist/components/Mark/Mark.d.ts +0 -3
  430. package/dist/components/Mark/Mark.types.d.ts +0 -10
  431. package/dist/components/Mark/markBehavior/drawing.d.ts +0 -13
  432. package/dist/components/MiniMap.d.ts +0 -14
  433. package/dist/components/MinimapXYFrame.d.ts +0 -10
  434. package/dist/components/NetworkFrame.d.ts +0 -4
  435. package/dist/components/OrdinalFrame.d.ts +0 -4
  436. package/dist/components/ResponsiveFrame.d.ts +0 -22
  437. package/dist/components/ResponsiveMinimapXYFrame.d.ts +0 -6
  438. package/dist/components/ResponsiveNetworkFrame.d.ts +0 -6
  439. package/dist/components/ResponsiveOrdinalFrame.d.ts +0 -6
  440. package/dist/components/ResponsiveXYFrame.d.ts +0 -6
  441. package/dist/components/SpanOrDiv.d.ts +0 -10
  442. package/dist/components/SparkFrame.d.ts +0 -14
  443. package/dist/components/SparkNetworkFrame.d.ts +0 -5
  444. package/dist/components/SparkOrdinalFrame.d.ts +0 -5
  445. package/dist/components/SparkXYFrame.d.ts +0 -5
  446. package/dist/components/TooltipPositioner/index.d.ts +0 -7
  447. package/dist/components/VisualizationLayer.d.ts +0 -33
  448. package/dist/components/XYFrame.d.ts +0 -4
  449. package/dist/components/annotationLayerBehavior/annotationHandling.d.ts +0 -19
  450. package/dist/components/annotationLayerBehavior/d3labeler.d.ts +0 -9
  451. package/dist/components/annotationRules/baseRules.d.ts +0 -25
  452. package/dist/components/annotationRules/networkframeRules.d.ts +0 -48
  453. package/dist/components/annotationRules/orframeRules.d.ts +0 -105
  454. package/dist/components/annotationRules/xyframeRules.d.ts +0 -117
  455. package/dist/components/batchWork.d.ts +0 -6
  456. package/dist/components/constants/coordinateNames.d.ts +0 -8
  457. package/dist/components/constants/frame_props.d.ts +0 -4
  458. package/dist/components/constants/jsx.d.ts +0 -19
  459. package/dist/components/data/dataFunctions.d.ts +0 -46
  460. package/dist/components/data/multiAccessorUtils.d.ts +0 -1
  461. package/dist/components/data/unflowedFunctions.d.ts +0 -1
  462. package/dist/components/generic_utilities/functions.d.ts +0 -1
  463. package/dist/components/index.d.ts +0 -125
  464. package/dist/components/interactionLayerBehavior/InteractionCanvas.d.ts +0 -20
  465. package/dist/components/processing/InteractionItems.d.ts +0 -12
  466. package/dist/components/processing/network.d.ts +0 -114
  467. package/dist/components/processing/ordinal.d.ts +0 -102
  468. package/dist/components/processing/xyDrawing.d.ts +0 -135
  469. package/dist/components/semiotic.d.ts +0 -35
  470. package/dist/components/store/TooltipStore.d.ts +0 -2
  471. package/dist/components/store/createStore.d.ts +0 -1
  472. package/dist/components/svg/SvgHelper.d.ts +0 -37
  473. package/dist/components/svg/areaDrawing.d.ts +0 -31
  474. package/dist/components/svg/ckmeans.d.ts +0 -69
  475. package/dist/components/svg/frameFunctions.d.ts +0 -119
  476. package/dist/components/svg/lineDrawing.d.ts +0 -99
  477. package/dist/components/svg/networkDrawing.d.ts +0 -134
  478. package/dist/components/svg/pieceDrawing.d.ts +0 -13
  479. package/dist/components/svg/pieceLayouts.d.ts +0 -71
  480. package/dist/components/svg/summaryLayouts.d.ts +0 -74
  481. package/dist/components/types/annotationTypes.d.ts +0 -140
  482. package/dist/components/types/canvasTypes.d.ts +0 -9
  483. package/dist/components/types/generalTypes.d.ts +0 -236
  484. package/dist/components/types/interactionTypes.d.ts +0 -74
  485. package/dist/components/types/legendTypes.d.ts +0 -20
  486. package/dist/components/types/networkTypes.d.ts +0 -165
  487. package/dist/components/types/ordinalTypes.d.ts +0 -103
  488. package/dist/components/types/xyTypes.d.ts +0 -118
  489. package/dist/components/useBoundingRect.d.ts +0 -2
  490. package/dist/components/useDerivedStateFromProps.d.ts +0 -1
  491. package/dist/components/useLegacyUnmountCallback.d.ts +0 -1
  492. package/dist/components/visualizationLayerBehavior/axis.d.ts +0 -38
  493. package/dist/components/visualizationLayerBehavior/general.d.ts +0 -84
  494. package/dist/constants/jsx.d.ts +0 -19
  495. package/dist/interactionLayerBehavior/InteractionCanvas.d.ts +0 -20
  496. package/dist/processing/network.d.ts +0 -114
  497. package/dist/processing/ordinal.d.ts +0 -102
  498. package/dist/processing/xyDrawing.d.ts +0 -135
  499. package/dist/setupTests.d.ts +0 -1
  500. package/dist/svg/SvgHelper.d.ts +0 -37
  501. package/dist/svg/ckmeans.d.ts +0 -69
  502. package/dist/svg/frameFunctions.d.ts +0 -119
  503. package/dist/svg/networkDrawing.d.ts +0 -134
  504. package/dist/svg/pieceDrawing.d.ts +0 -13
  505. package/dist/svg/pieceLayouts.d.ts +0 -71
  506. package/dist/svg/summaryLayouts.d.ts +0 -74
  507. package/dist/useDerivedStateFromProps.d.ts +0 -1
  508. package/dist/useLegacyUnmountCallback.d.ts +0 -1
@@ -0,0 +1,356 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.dividedLine = exports.bumpChart = exports.cumulativeLine = exports.lineChart = exports.stackedArea = exports.differenceLine = exports.projectLineData = exports.projectSummaryData = void 0;
4
+ exports.funnelize = funnelize;
5
+ const d3_array_1 = require("d3-array");
6
+ const datesForUnique = (d) => (d instanceof Date ? d.getTime() : d);
7
+ const projectSummaryData = ({ data, summaryDataAccessor, xAccessor, yAccessor }) => {
8
+ const projectedData = [];
9
+ summaryDataAccessor.forEach((actualSummaryAccessor) => {
10
+ xAccessor.forEach((actualXAccessor) => {
11
+ yAccessor.forEach((actualYAccessor) => {
12
+ const projection = (d) => actualSummaryAccessor(d).map((p, q) => [
13
+ actualXAccessor(p, q),
14
+ actualYAccessor(p, q)
15
+ ]);
16
+ data.forEach((d) => {
17
+ projectedData.push({
18
+ ...d,
19
+ _baseData: actualSummaryAccessor(d),
20
+ _xyfCoordinates: projection(d)
21
+ });
22
+ });
23
+ });
24
+ });
25
+ });
26
+ return projectedData;
27
+ };
28
+ exports.projectSummaryData = projectSummaryData;
29
+ const projectLineData = ({ data, lineDataAccessor, xProp, xPropTop, xPropBottom, yProp, yPropTop, yPropBottom, xAccessor, yAccessor }) => {
30
+ if (!Array.isArray(data)) {
31
+ data = [data];
32
+ }
33
+ const projectedLine = [];
34
+ lineDataAccessor.forEach((actualLineAccessor, lineIndex) => {
35
+ xAccessor.forEach((actualXAccessor, xIndex) => {
36
+ yAccessor.forEach((actualYAccessor, yIndex) => {
37
+ data.forEach((d) => {
38
+ const originalLineData = { ...d, xIndex, yIndex, lineIndex };
39
+ originalLineData.data = actualLineAccessor(d).map((p, q) => {
40
+ const originalCoords = { data: p };
41
+ originalCoords[xProp] = actualXAccessor(p, q);
42
+ originalCoords[xPropTop] = originalCoords[xProp];
43
+ originalCoords[xPropBottom] = originalCoords[xProp];
44
+ originalCoords[yProp] = actualYAccessor(p, q);
45
+ originalCoords[yPropTop] = originalCoords[yProp];
46
+ originalCoords[yPropBottom] = originalCoords[yProp];
47
+ return originalCoords;
48
+ });
49
+ originalLineData.key = originalLineData.key || projectedLine.length;
50
+ projectedLine.push(originalLineData);
51
+ });
52
+ });
53
+ });
54
+ });
55
+ return projectedLine;
56
+ };
57
+ exports.projectLineData = projectLineData;
58
+ const differenceLine = ({ data, yProp, yPropTop, yPropBottom }) => {
59
+ data.forEach((l, i) => {
60
+ l.data.forEach((point, q) => {
61
+ const otherLine = i === 0 ? 1 : 0;
62
+ if (point[yProp] > data[otherLine].data[q][yProp]) {
63
+ point[yPropBottom] = data[otherLine].data[q][yProp];
64
+ point[yPropTop] = point[yProp];
65
+ }
66
+ else {
67
+ point[yPropTop] = point[yProp];
68
+ point[yPropBottom] = point[yProp];
69
+ }
70
+ });
71
+ });
72
+ return data;
73
+ };
74
+ exports.differenceLine = differenceLine;
75
+ const stackedArea = ({ type = "stackedarea", data, xProp, yProp, yPropMiddle, sort, yPropTop, yPropBottom }) => {
76
+ const valueMap = new Map();
77
+ const lineSums = data.map(() => 0);
78
+ let lineIndex = 0;
79
+ for (const line of data) {
80
+ /*
81
+ After we calculate this, we then sort the lines (and the value used for the sorting is in this for loop)
82
+ So, we need to know their original index order in order to use the naively populated coordinate array in valueMap
83
+ Otherwise the coordinates in the map will be in different order than the sorted order of the lines
84
+ */
85
+ line.__lineIndex = lineIndex;
86
+ for (const coord of line.data) {
87
+ const coordX = datesForUnique(coord[xProp]);
88
+ lineSums[lineIndex] += coord[yProp];
89
+ if (!valueMap.has(coordX)) {
90
+ valueMap.set(coordX, []);
91
+ }
92
+ valueMap.get(coordX)[lineIndex] = coord;
93
+ }
94
+ lineIndex++;
95
+ }
96
+ let stackSort = (a, b) => lineSums[b.key] - lineSums[a.key];
97
+ if (type === "stackedpercent-invert" || type === "stackedarea-invert") {
98
+ stackSort = (a, b) => lineSums[a.key] - lineSums[b.key];
99
+ }
100
+ sort = sort === undefined ? stackSort : sort;
101
+ if (sort !== null) {
102
+ data = data.sort(sort);
103
+ }
104
+ const lineIndexSortLookup = data.map((line) => line.__lineIndex);
105
+ for (const [, coordsAtX] of valueMap) {
106
+ let negativeOffset = 0;
107
+ let positiveOffset = 0;
108
+ const positiveStepTotal = (0, d3_array_1.sum)(coordsAtX, (d) => d?.[yProp] > 0 ? d[yProp] : 0);
109
+ const negativeStepTotal = (0, d3_array_1.sum)(coordsAtX, (d) => d?.[yProp] < 0 ? d[yProp] : 0);
110
+ for (const newIndex of lineIndexSortLookup) {
111
+ const l = coordsAtX[newIndex];
112
+ if (l) {
113
+ if (l[yProp] < 0) {
114
+ if (type === "linepercent" ||
115
+ type === "stackedpercent" ||
116
+ type === "stackedpercent-invert") {
117
+ const percent = l[yProp] / negativeStepTotal;
118
+ l.percent = percent;
119
+ if (type === "linepercent") {
120
+ l[yPropBottom] =
121
+ l[yPropBottom] =
122
+ l[yPropTop] =
123
+ l[yPropMiddle] =
124
+ percent;
125
+ }
126
+ else {
127
+ const adjustment = negativeStepTotal >= 0 ? 0 : percent;
128
+ l[yPropBottom] =
129
+ negativeStepTotal === 0
130
+ ? 0
131
+ : -(negativeOffset / negativeStepTotal);
132
+ l[yPropTop] = l[yPropBottom] - adjustment;
133
+ l[yPropMiddle] = l[yPropBottom] - adjustment / 2;
134
+ }
135
+ }
136
+ else {
137
+ l[yPropBottom] = negativeOffset;
138
+ l[yPropTop] = negativeOffset + l[yProp];
139
+ l[yPropMiddle] = negativeOffset + l[yProp] / 2;
140
+ }
141
+ negativeOffset += l[yProp];
142
+ }
143
+ else {
144
+ if (type === "linepercent" ||
145
+ type === "stackedpercent" ||
146
+ type === "stackedpercent-invert") {
147
+ const percent = l[yProp] / positiveStepTotal;
148
+ l.percent = percent;
149
+ if (type === "linepercent") {
150
+ l[yPropBottom] = l[yPropTop] = l[yPropMiddle] = percent;
151
+ }
152
+ else {
153
+ const adjustment = positiveStepTotal <= 0 ? 0 : percent;
154
+ l[yPropBottom] =
155
+ positiveStepTotal === 0 ? 0 : positiveOffset / positiveStepTotal;
156
+ l[yPropTop] = l[yPropBottom] + adjustment;
157
+ l[yPropMiddle] = l[yPropBottom] + adjustment / 2;
158
+ }
159
+ }
160
+ else {
161
+ l[yPropBottom] = positiveOffset;
162
+ l[yPropTop] = positiveOffset + l[yProp];
163
+ l[yPropMiddle] = positiveOffset + l[yProp] / 2;
164
+ }
165
+ positiveOffset += l[yProp];
166
+ }
167
+ }
168
+ }
169
+ }
170
+ return data;
171
+ };
172
+ exports.stackedArea = stackedArea;
173
+ const lineChart = ({ data, y1, x1, yPropTop, yPropMiddle, yPropBottom, xPropTop, xPropMiddle, xPropBottom }) => {
174
+ if (y1) {
175
+ for (const line of data) {
176
+ for (const point of line.data) {
177
+ point[yPropBottom] = y1(point);
178
+ // Use top position for hover so overlapping-area hover points
179
+ // align with the visible line rather than compressing toward the baseline.
180
+ point[yPropMiddle] = point[yPropTop];
181
+ }
182
+ }
183
+ }
184
+ if (x1) {
185
+ for (const line of data) {
186
+ for (const point of line.data) {
187
+ point[xPropBottom] = x1(point);
188
+ point[xPropMiddle] = (point[xPropBottom] + point[xPropTop]) / 2;
189
+ }
190
+ }
191
+ }
192
+ return data;
193
+ };
194
+ exports.lineChart = lineChart;
195
+ const cumulativeLine = ({ data, y1, yPropTop, yPropMiddle, yPropBottom, type = "cumulative" }) => {
196
+ for (const line of data) {
197
+ let cumulativeValue = 0;
198
+ const dataArray = type === "cumulative-reverse" ? line.data.reverse() : line.data;
199
+ for (const point of dataArray) {
200
+ cumulativeValue += point[yPropTop];
201
+ point[yPropBottom] =
202
+ point[yPropTop] =
203
+ point[yPropMiddle] =
204
+ cumulativeValue;
205
+ if (y1) {
206
+ point[yPropBottom] = y1(point);
207
+ point[yPropMiddle] = point[yPropBottom] + point[yPropTop] / 2;
208
+ }
209
+ }
210
+ }
211
+ return data;
212
+ };
213
+ exports.cumulativeLine = cumulativeLine;
214
+ const bumpChart = ({ type = "bumpline", data, xProp, yProp, yPropMiddle, yPropTop, yPropBottom }) => {
215
+ const uniqXValues = new Map();
216
+ for (const line of data) {
217
+ for (const point of line.data) {
218
+ const xValue = datesForUnique(point[xProp]);
219
+ if (!uniqXValues.has(xValue)) {
220
+ uniqXValues.set(xValue, []);
221
+ }
222
+ uniqXValues.get(xValue).push(point);
223
+ }
224
+ }
225
+ let bumpSort = (a, b) => {
226
+ if (a[yProp] > b[yProp]) {
227
+ return 1;
228
+ }
229
+ if (a[yProp] < b[yProp]) {
230
+ return -1;
231
+ }
232
+ return -1;
233
+ };
234
+ if (type === "bumparea-invert" || type === "bumpline-invert") {
235
+ bumpSort = (a, b) => {
236
+ if (a[yProp] < b[yProp]) {
237
+ return 1;
238
+ }
239
+ if (a[yProp] > b[yProp]) {
240
+ return -1;
241
+ }
242
+ return -1;
243
+ };
244
+ }
245
+ for (const [, pointsAtXArray] of uniqXValues) {
246
+ let negativeOffset = 0;
247
+ let positiveOffset = 0;
248
+ pointsAtXArray.sort(bumpSort);
249
+ let rank = 1;
250
+ for (const point of pointsAtXArray) {
251
+ point._XYFrameRank;
252
+ if (type === "bumparea" || type === "bumparea-invert") {
253
+ if (point[yProp] < 0) {
254
+ point[yPropTop] = negativeOffset + point[yProp];
255
+ point[yPropMiddle] = negativeOffset + point[yProp] / 2;
256
+ point[yPropBottom] = negativeOffset;
257
+ negativeOffset += point[yProp];
258
+ }
259
+ else {
260
+ point[yPropTop] = positiveOffset + point[yProp];
261
+ point[yPropMiddle] = positiveOffset + point[yProp] / 2;
262
+ point[yPropBottom] = positiveOffset;
263
+ positiveOffset += point[yProp];
264
+ }
265
+ }
266
+ else {
267
+ point[yProp] = rank;
268
+ point[yPropTop] = rank;
269
+ point[yPropBottom] = rank;
270
+ }
271
+ rank++;
272
+ }
273
+ }
274
+ return data;
275
+ };
276
+ exports.bumpChart = bumpChart;
277
+ const dividedLine = (parameters, points, searchIterations = 10) => {
278
+ let currentParameters = parameters(points[0], 0);
279
+ let currentPointsArray = [];
280
+ const dividedLinesData = [
281
+ { key: currentParameters, points: currentPointsArray }
282
+ ];
283
+ points.forEach((point, pointI) => {
284
+ const newParameters = parameters(point, pointI);
285
+ let matchingParams = newParameters === currentParameters;
286
+ const stringNewParams = JSON.stringify(newParameters);
287
+ const stringCurrentParams = JSON.stringify(currentParameters);
288
+ if (typeof currentParameters === "object") {
289
+ matchingParams = stringNewParams === stringCurrentParams;
290
+ }
291
+ if (matchingParams) {
292
+ currentPointsArray.push(point);
293
+ }
294
+ else {
295
+ const lastPoint = currentPointsArray[currentPointsArray.length - 1];
296
+ let pointA = lastPoint;
297
+ let pointB = point;
298
+ let stringBParams = stringNewParams;
299
+ let x = 0;
300
+ while (x < searchIterations && stringNewParams === stringBParams) {
301
+ const keys = Object.keys(pointA);
302
+ const findPoints = simpleSearchFunction({
303
+ pointA,
304
+ pointB,
305
+ currentParameters,
306
+ parameters,
307
+ keys
308
+ });
309
+ pointA = findPoints[0];
310
+ pointB = findPoints[1];
311
+ stringBParams = JSON.stringify(parameters(pointB));
312
+ x++;
313
+ }
314
+ currentPointsArray.push(pointB);
315
+ currentPointsArray = [pointB, point];
316
+ dividedLinesData.push({ key: newParameters, points: currentPointsArray });
317
+ currentParameters = newParameters;
318
+ }
319
+ });
320
+ return dividedLinesData;
321
+ };
322
+ exports.dividedLine = dividedLine;
323
+ function simpleSearchFunction({ pointA, pointB, currentParameters, parameters, keys }) {
324
+ const betweenPoint = {};
325
+ keys.forEach((key) => {
326
+ betweenPoint[key] =
327
+ typeof pointA[key] === "number"
328
+ ? (pointA[key] + pointB[key]) / 2
329
+ : undefined;
330
+ });
331
+ const stringBetween = JSON.stringify(parameters(betweenPoint));
332
+ const stringCurrent = JSON.stringify(currentParameters);
333
+ if (stringBetween === stringCurrent) {
334
+ return [betweenPoint, pointB];
335
+ }
336
+ return [pointA, betweenPoint];
337
+ }
338
+ function funnelize({ data, steps, key }) {
339
+ const funnelData = [];
340
+ if (!Array.isArray(data)) {
341
+ data = [data];
342
+ }
343
+ if (!steps) {
344
+ steps = data.map((d) => Object.keys(d)).reduce((a, b) => a.concat(b), []);
345
+ }
346
+ data.forEach((datum, i) => {
347
+ const datumKey = key ? datum[key] : i;
348
+ steps.forEach((step) => {
349
+ const funnelDatum = { funnelKey: datumKey, stepName: "", stepValue: 0 };
350
+ funnelDatum.stepName = step;
351
+ funnelDatum.stepValue = datum[step] ? datum[step] : 0;
352
+ funnelData.push(funnelDatum);
353
+ });
354
+ });
355
+ return funnelData;
356
+ }
@@ -0,0 +1,331 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.areaLink = void 0;
4
+ exports.circularAreaLink = circularAreaLink;
5
+ const d3_interpolate_1 = require("d3-interpolate");
6
+ const d3_shape_1 = require("d3-shape");
7
+ const dedupeRibbonPoints = (weight = 1) => (p, c) => {
8
+ const l = p[p.length - 1];
9
+ if (!l ||
10
+ Math.round(l.x / weight) !== Math.round(c.x / weight) ||
11
+ Math.round(l.y / weight) !== Math.round(c.y / weight)) {
12
+ p.push(c);
13
+ }
14
+ return p;
15
+ };
16
+ function linearRibbon() {
17
+ const _lineConstructor = (0, d3_shape_1.line)();
18
+ let _xAccessor = function (d) {
19
+ return d.x;
20
+ };
21
+ let _yAccessor = function (d) {
22
+ return d.y;
23
+ };
24
+ let _rAccessor = function (d) {
25
+ return d.r;
26
+ };
27
+ let _interpolator = d3_shape_1.curveLinearClosed;
28
+ function _ribbon(pathData) {
29
+ if (pathData.multiple) {
30
+ const original_r = _rAccessor;
31
+ const parallelTotal = pathData.multiple.reduce((p, c) => p + c.weight, 0);
32
+ _rAccessor = () => parallelTotal;
33
+ const totalPoints = buildRibbon(pathData.points);
34
+ let currentPoints = totalPoints
35
+ .filter((d) => d.direction === "forward")
36
+ .reduce(dedupeRibbonPoints(), []);
37
+ const allRibbons = [];
38
+ pathData.multiple.forEach((siblingPath, siblingI) => {
39
+ _rAccessor = () => siblingPath.weight;
40
+ const currentRibbon = buildRibbon(currentPoints);
41
+ allRibbons.push(currentRibbon);
42
+ const nextSibling = pathData.multiple[siblingI + 1];
43
+ if (nextSibling) {
44
+ const currentLeftSide = currentRibbon
45
+ .reverse()
46
+ .filter((d) => d.direction === "back")
47
+ .reduce(dedupeRibbonPoints(), []);
48
+ _rAccessor = () => nextSibling.weight;
49
+ const leftHandInflatedRibbon = buildRibbon(currentLeftSide);
50
+ currentPoints = leftHandInflatedRibbon
51
+ .reverse()
52
+ .filter((d) => d.direction === "back")
53
+ .reduce(dedupeRibbonPoints(), []);
54
+ }
55
+ });
56
+ _rAccessor = original_r;
57
+ return allRibbons.map((d) => _lineConstructor.x(_xAccessor).y(_yAccessor).curve(_interpolator)(d));
58
+ }
59
+ const bothPoints = buildRibbon(pathData).reduce(dedupeRibbonPoints(), []);
60
+ return _lineConstructor.x(_xAccessor).y(_yAccessor).curve(_interpolator)(bothPoints);
61
+ }
62
+ _ribbon.x = function (_value) {
63
+ if (!arguments.length)
64
+ return _xAccessor;
65
+ _xAccessor = _value;
66
+ return _ribbon;
67
+ };
68
+ _ribbon.y = function (_value) {
69
+ if (!arguments.length)
70
+ return _yAccessor;
71
+ _yAccessor = _value;
72
+ return _ribbon;
73
+ };
74
+ _ribbon.r = function (_value) {
75
+ if (!arguments.length)
76
+ return _rAccessor;
77
+ _rAccessor = _value;
78
+ return _ribbon;
79
+ };
80
+ _ribbon.interpolate = function (_value) {
81
+ if (!arguments.length)
82
+ return _interpolator;
83
+ _interpolator = _value;
84
+ return _ribbon;
85
+ };
86
+ return _ribbon;
87
+ function offsetEdge(d) {
88
+ const diffX = _yAccessor(d.target) - _yAccessor(d.source);
89
+ const diffY = _xAccessor(d.target) - _xAccessor(d.source);
90
+ const angle0 = Math.atan2(diffY, diffX) + Math.PI / 2;
91
+ const angle1 = angle0 + Math.PI * 0.5;
92
+ const angle2 = angle0 + Math.PI * 0.5;
93
+ const x1 = _xAccessor(d.source) + _rAccessor(d.source) * Math.cos(angle1);
94
+ const y1 = _yAccessor(d.source) - _rAccessor(d.source) * Math.sin(angle1);
95
+ const x2 = _xAccessor(d.target) + _rAccessor(d.target) * Math.cos(angle2);
96
+ const y2 = _yAccessor(d.target) - _rAccessor(d.target) * Math.sin(angle2);
97
+ return { x1: x1, y1: y1, x2: x2, y2: y2 };
98
+ }
99
+ function buildRibbon(points) {
100
+ const bothCode = [];
101
+ let x = 0;
102
+ let transformedPoints = { x1: 0, y1: 0, x2: 0, y2: 0 };
103
+ while (x < points.length) {
104
+ if (x !== points.length - 1) {
105
+ transformedPoints = offsetEdge({
106
+ source: points[x],
107
+ target: points[x + 1]
108
+ });
109
+ const p1 = {
110
+ x: transformedPoints.x1,
111
+ y: transformedPoints.y1,
112
+ direction: "forward"
113
+ };
114
+ const p2 = {
115
+ x: transformedPoints.x2,
116
+ y: transformedPoints.y2,
117
+ direction: "forward"
118
+ };
119
+ bothCode.push(p1, p2);
120
+ if (bothCode.length > 3) {
121
+ const l = bothCode.length - 1;
122
+ const lineA = { a: bothCode[l - 3], b: bothCode[l - 2] };
123
+ const lineB = { a: bothCode[l - 1], b: bothCode[l] };
124
+ const intersect = findIntersect(lineA.a.x, lineA.a.y, lineA.b.x, lineA.b.y, lineB.a.x, lineB.a.y, lineB.b.x, lineB.b.y);
125
+ if (intersect.found === true) {
126
+ lineA.b.x = intersect.x;
127
+ lineA.b.y = intersect.y;
128
+ lineB.a.x = intersect.x;
129
+ lineB.a.y = intersect.y;
130
+ }
131
+ }
132
+ }
133
+ x++;
134
+ }
135
+ x--;
136
+ //Back
137
+ while (x >= 0) {
138
+ if (x !== 0) {
139
+ transformedPoints = offsetEdge({
140
+ source: points[x],
141
+ target: points[x - 1]
142
+ });
143
+ const p1 = {
144
+ x: transformedPoints.x1,
145
+ y: transformedPoints.y1,
146
+ direction: "back"
147
+ };
148
+ const p2 = {
149
+ x: transformedPoints.x2,
150
+ y: transformedPoints.y2,
151
+ direction: "back"
152
+ };
153
+ bothCode.push(p1, p2);
154
+ if (bothCode.length > 3) {
155
+ const l = bothCode.length - 1;
156
+ const lineA = { a: bothCode[l - 3], b: bothCode[l - 2] };
157
+ const lineB = { a: bothCode[l - 1], b: bothCode[l] };
158
+ const intersect = findIntersect(lineA.a.x, lineA.a.y, lineA.b.x, lineA.b.y, lineB.a.x, lineB.a.y, lineB.b.x, lineB.b.y);
159
+ if (intersect.found === true) {
160
+ lineA.b.x = intersect.x;
161
+ lineA.b.y = intersect.y;
162
+ lineB.a.x = intersect.x;
163
+ lineB.a.y = intersect.y;
164
+ }
165
+ }
166
+ }
167
+ x--;
168
+ }
169
+ return bothCode;
170
+ }
171
+ function findIntersect(l1x1, l1y1, l1x2, l1y2, l2x1, l2y1, l2x2, l2y2) {
172
+ let a, b;
173
+ const result = {
174
+ x: null,
175
+ y: null,
176
+ found: false
177
+ };
178
+ const d = (l2y2 - l2y1) * (l1x2 - l1x1) - (l2x2 - l2x1) * (l1y2 - l1y1);
179
+ if (d === 0) {
180
+ return result;
181
+ }
182
+ a = l1y1 - l2y1;
183
+ b = l1x1 - l2x1;
184
+ const n1 = (l2x2 - l2x1) * a - (l2y2 - l2y1) * b;
185
+ const n2 = (l1x2 - l1x1) * a - (l1y2 - l1y1) * b;
186
+ a = n1 / d;
187
+ b = n2 / d;
188
+ result.x = l1x1 + a * (l1x2 - l1x1);
189
+ result.y = l1y1 + a * (l1y2 - l1y1);
190
+ if (a > 0 && a < 1 && b > 0 && b < 1) {
191
+ result.found = true;
192
+ }
193
+ return result;
194
+ }
195
+ }
196
+ const curvature = 0.5;
197
+ const ribbonLink = (d) => {
198
+ const diff = d.direction === "down"
199
+ ? Math.abs(d.target.y - d.source.y)
200
+ : Math.abs(d.source.x - d.target.x);
201
+ // const halfWidth = d.width / 2
202
+ const testCoordinates = d.direction === "down"
203
+ ? [
204
+ {
205
+ x: d.y0,
206
+ y: d.source.y
207
+ },
208
+ {
209
+ x: d.y0,
210
+ y: d.source.y + diff / 3
211
+ },
212
+ {
213
+ x: d.y1,
214
+ y: d.target.y - diff / 3
215
+ },
216
+ {
217
+ x: d.y1,
218
+ y: d.target.y
219
+ }
220
+ ]
221
+ : [
222
+ {
223
+ x: d.source.x0,
224
+ y: d.y0
225
+ },
226
+ {
227
+ x: d.source.x0 + diff / 3,
228
+ y: d.y0
229
+ },
230
+ {
231
+ x: d.target.x0 - diff / 3,
232
+ y: d.y1
233
+ },
234
+ {
235
+ x: d.target.x0,
236
+ y: d.y1
237
+ }
238
+ ];
239
+ const linkGenerator = linearRibbon();
240
+ linkGenerator.x((d) => d.x);
241
+ linkGenerator.y((d) => d.y);
242
+ linkGenerator.r(() => d.sankeyWidth / 2);
243
+ return linkGenerator(testCoordinates);
244
+ };
245
+ const areaLink = (d) => {
246
+ let x0, x1, x2, x3, y0, y1, xi, y2, y3;
247
+ if (d.direction === "down") {
248
+ x0 = d.y0 - d.sankeyWidth / 2;
249
+ x1 = d.y1 - d.sankeyWidth / 2;
250
+ x2 = d.y1 + d.sankeyWidth / 2;
251
+ x3 = d.y0 + d.sankeyWidth / 2;
252
+ y0 = d.source.y1;
253
+ y1 = d.target.y0;
254
+ xi = (0, d3_interpolate_1.interpolateNumber)(y0, y1);
255
+ y2 = xi(curvature);
256
+ y3 = xi(1 - curvature);
257
+ return `M${x0},${y0}C${x0},${y2} ${x1},${y3} ${x1},${y1}L${x2},${y1}C${x2},${y3} ${x3},${y2} ${x3},${y0}Z`;
258
+ }
259
+ ;
260
+ (x0 = d.source.x1), // eslint-disable-line no-sequences
261
+ (x1 = d.target.x0),
262
+ (xi = (0, d3_interpolate_1.interpolateNumber)(x0, x1)),
263
+ (x2 = xi(curvature)),
264
+ (x3 = xi(1 - curvature)),
265
+ (y0 = d.y0 - d.sankeyWidth / 2),
266
+ (y1 = d.y1 - d.sankeyWidth / 2),
267
+ (y2 = d.y1 + d.sankeyWidth / 2),
268
+ (y3 = d.y0 + d.sankeyWidth / 2);
269
+ return `M${x0},${y0}C${x2},${y0} ${x3},${y1} ${x1},${y1}L${x1},${y2}C${x3},${y2} ${x2},${y3} ${x0},${y3}Z`;
270
+ };
271
+ exports.areaLink = areaLink;
272
+ function circularAreaLink(link) {
273
+ const linkGenerator = linearRibbon();
274
+ linkGenerator.x((d) => d.x);
275
+ linkGenerator.y((d) => d.y);
276
+ linkGenerator.r(() => link.sankeyWidth / 2);
277
+ const xyForLink = link.direction === "down"
278
+ ? [
279
+ {
280
+ x: link.circularPathData.sourceY,
281
+ y: link.circularPathData.sourceX
282
+ },
283
+ {
284
+ x: link.circularPathData.sourceY,
285
+ y: link.circularPathData.leftFullExtent
286
+ },
287
+ {
288
+ x: link.circularPathData.verticalFullExtent,
289
+ y: link.circularPathData.leftFullExtent
290
+ },
291
+ {
292
+ x: link.circularPathData.verticalFullExtent,
293
+ y: link.circularPathData.rightFullExtent
294
+ },
295
+ {
296
+ x: link.circularPathData.targetY,
297
+ y: link.circularPathData.rightFullExtent
298
+ },
299
+ {
300
+ x: link.circularPathData.targetY,
301
+ y: link.circularPathData.targetX
302
+ }
303
+ ]
304
+ : [
305
+ {
306
+ x: link.circularPathData.sourceX,
307
+ y: link.circularPathData.sourceY
308
+ },
309
+ {
310
+ x: link.circularPathData.leftFullExtent,
311
+ y: link.circularPathData.sourceY
312
+ },
313
+ {
314
+ x: link.circularPathData.leftFullExtent,
315
+ y: link.circularPathData.verticalFullExtent
316
+ },
317
+ {
318
+ x: link.circularPathData.rightFullExtent,
319
+ y: link.circularPathData.verticalFullExtent
320
+ },
321
+ {
322
+ x: link.circularPathData.rightFullExtent,
323
+ y: link.circularPathData.targetY
324
+ },
325
+ {
326
+ x: link.circularPathData.targetX,
327
+ y: link.circularPathData.targetY
328
+ }
329
+ ];
330
+ return linkGenerator(xyForLink);
331
+ }