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,771 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.calculateNetworkFrame = exports.nodesEdgesFromHierarchy = void 0;
37
+ const React = __importStar(require("react"));
38
+ const d3_scale_1 = require("d3-scale");
39
+ const d3_array_1 = require("d3-array");
40
+ const pieceDrawing_1 = require("../svg/pieceDrawing");
41
+ const networkDrawing_1 = require("../svg/networkDrawing");
42
+ const d3_hierarchy_1 = require("d3-hierarchy");
43
+ const networkDefaults_1 = require("./networkDefaults");
44
+ const networkLayoutHelpers_1 = require("./networkLayoutHelpers");
45
+ const hierarchyLayout_1 = require("./layouts/hierarchyLayout");
46
+ const hierarchyUtils_1 = require("./hierarchyUtils");
47
+ var hierarchyUtils_2 = require("./hierarchyUtils");
48
+ Object.defineProperty(exports, "nodesEdgesFromHierarchy", { enumerable: true, get: function () { return hierarchyUtils_2.nodesEdgesFromHierarchy; } });
49
+ const calculateNetworkFrame = (currentProps, prevState, cache, layoutMap) => {
50
+ const { graph, nodes = Array.isArray(graph) || typeof graph === "function"
51
+ ? networkDefaults_1.emptyArray
52
+ : (graph && graph.nodes) || networkDefaults_1.emptyArray, edges = typeof graph === "function"
53
+ ? networkDefaults_1.emptyArray
54
+ : Array.isArray(graph)
55
+ ? graph
56
+ : (graph && graph.edges) || networkDefaults_1.emptyArray, networkType, size, nodeStyle, nodeClass, canvasNodes, edgeStyle, edgeClass, canvasEdges, nodeRenderMode, edgeRenderMode, nodeLabels, title: baseTitle, margin: baseMargin, hoverAnnotation, customNodeIcon: baseCustomNodeIcon, customEdgeIcon: baseCustomEdgeIcon, filterRenderedNodes } = currentProps;
57
+ let { edgeType } = currentProps;
58
+ let networkSettings;
59
+ const nodeHierarchicalIDFill = {};
60
+ let networkSettingsKeys = ["type"];
61
+ if (typeof networkType === "string") {
62
+ networkSettings = {
63
+ type: networkType,
64
+ ...networkDefaults_1.baseNetworkSettings,
65
+ graphSettings: networkDefaults_1.baseGraphSettings
66
+ };
67
+ }
68
+ else {
69
+ if (networkType)
70
+ networkSettingsKeys = Object.keys(networkType);
71
+ networkSettings = {
72
+ type: "force",
73
+ ...networkDefaults_1.baseNetworkSettings,
74
+ ...networkType,
75
+ graphSettings: networkDefaults_1.baseGraphSettings
76
+ };
77
+ }
78
+ if (networkSettings.projection === "vertical" &&
79
+ networkSettings.type === "sankey") {
80
+ networkSettings.direction = "down";
81
+ }
82
+ networkSettingsKeys.push("height", "width");
83
+ const title = typeof baseTitle === "object" &&
84
+ !React.isValidElement(baseTitle) &&
85
+ baseTitle !== null
86
+ ? baseTitle
87
+ : { title: baseTitle, orient: "top" };
88
+ const { margin, adjustedPosition, adjustedSize } = cache.marginCalc(baseMargin, title, size);
89
+ networkSettings.graphSettings.nodes = nodes;
90
+ networkSettings.graphSettings.edges = edges;
91
+ networkSettings.graphSettings.filterRenderedNodes = filterRenderedNodes;
92
+ let { edgeHash, nodeHash } = networkSettings.graphSettings;
93
+ const createPointLayer = networkSettings.type === "treemap" ||
94
+ networkSettings.type === "partition" ||
95
+ networkSettings.type === "sankey";
96
+ const cachedAccessors = cache.accessorConversions(currentProps.nodeIDAccessor, currentProps.sourceAccessor, currentProps.targetAccessor, currentProps.nodeSizeAccessor, currentProps.edgeWidthAccessor);
97
+ const nodeIDAccessor = cachedAccessors.nodeIDAccessor;
98
+ const sourceAccessor = cachedAccessors.sourceAccessor;
99
+ const targetAccessor = cachedAccessors.targetAccessor;
100
+ const nodeSizeAccessor = cachedAccessors.nodeSizeAccessor;
101
+ const edgeWidthAccessor = cachedAccessors.edgeWidthAccessor;
102
+ const { nodeStyleFn, nodeClassFn, nodeRenderModeFn, nodeCanvasRenderFn } = cache.nodeStyleFns(nodeStyle, nodeClass, nodeRenderMode, canvasNodes);
103
+ let { projectedNodes, projectedEdges } = prevState;
104
+ const isHierarchical = typeof networkSettings.type === "string" &&
105
+ hierarchyLayout_1.hierarchicalTypeHash[networkSettings.type];
106
+ const changedData = !prevState.projectedNodes ||
107
+ !prevState.projectedEdges ||
108
+ prevState.graphSettings.nodes !== nodes ||
109
+ prevState.graphSettings.edges !== edges ||
110
+ isHierarchical ||
111
+ prevState.graphSettings.filterRenderedNodes !== filterRenderedNodes;
112
+ if (networkSettings.type === "dagre") {
113
+ const dagreGraph = graph;
114
+ const dagreNodeMap = new Map();
115
+ projectedNodes = dagreGraph.nodes().map((n) => {
116
+ const baseNode = dagreGraph.node(n);
117
+ const dagreNode = {
118
+ ...baseNode,
119
+ x0: baseNode.x - baseNode.width / 2,
120
+ x1: baseNode.x + baseNode.width / 2,
121
+ y0: baseNode.y - baseNode.height / 2,
122
+ y1: baseNode.y + baseNode.height / 2,
123
+ id: n,
124
+ shapeNode: true,
125
+ sourceLinks: [],
126
+ targetLinks: []
127
+ };
128
+ dagreNodeMap.set(n, dagreNode);
129
+ return dagreNode;
130
+ });
131
+ projectedEdges = dagreGraph.edges().map((e) => {
132
+ const dagreEdge = dagreGraph.edge(e);
133
+ const baseEdge = {
134
+ ...dagreEdge,
135
+ points: dagreEdge.points.map((d) => ({ ...d }))
136
+ };
137
+ baseEdge.source = projectedNodes.find((p) => p.id === e.v);
138
+ baseEdge.target = projectedNodes.find((p) => p.id === e.w);
139
+ baseEdge.points.unshift({ x: baseEdge.source.x, y: baseEdge.source.y });
140
+ baseEdge.points.push({ x: baseEdge.target.x, y: baseEdge.target.y });
141
+ dagreNodeMap.get(e.v).targetLinks.push(baseEdge);
142
+ dagreNodeMap.get(e.w).sourceLinks.push(baseEdge);
143
+ return baseEdge;
144
+ });
145
+ }
146
+ else if (changedData) {
147
+ const previousNodes = projectedNodes;
148
+ edgeHash = new Map();
149
+ nodeHash = new Map();
150
+ networkSettings.graphSettings.edgeHash = edgeHash;
151
+ networkSettings.graphSettings.nodeHash = nodeHash;
152
+ projectedNodes = [];
153
+ projectedEdges = [];
154
+ const fixFunction = typeof networkSettings.fixExistingNodes === "function"
155
+ ? networkSettings.fixExistingNodes
156
+ : networkSettings.fixExistingNodes
157
+ ? () => true
158
+ : false;
159
+ nodes.forEach((node) => {
160
+ const projectedNode = { ...node };
161
+ const id = nodeIDAccessor(projectedNode);
162
+ const existingNode = previousNodes.find((prevNode) => prevNode.id === id);
163
+ const equivalentOldNode = existingNode || { x: undefined, y: undefined };
164
+ nodeHash.set(id, projectedNode);
165
+ nodeHash.set(node, projectedNode);
166
+ projectedNodes.push(projectedNode);
167
+ projectedNode.id = id;
168
+ projectedNode.inDegree = 0;
169
+ projectedNode.outDegree = 0;
170
+ projectedNode.degree = 0;
171
+ projectedNode.x = equivalentOldNode.x;
172
+ projectedNode.y = equivalentOldNode.y;
173
+ if (existingNode && fixFunction && fixFunction(existingNode)) {
174
+ projectedNode.fx = existingNode.x;
175
+ projectedNode.fy = existingNode.y;
176
+ }
177
+ });
178
+ let operationalEdges = edges;
179
+ let baseEdges = edges;
180
+ if (isHierarchical && Array.isArray(edges)) {
181
+ const createdHierarchicalData = (0, networkDrawing_1.softStack)(edges, nodes, sourceAccessor, targetAccessor, nodeIDAccessor);
182
+ if (createdHierarchicalData.isHierarchical) {
183
+ baseEdges = createdHierarchicalData.hierarchy;
184
+ projectedNodes = [];
185
+ }
186
+ else {
187
+ console.error("You've sent an edge list that is not strictly hierarchical (there are nodes with multiple parents) defaulting to force-directed network layout");
188
+ networkSettings.type = "force";
189
+ }
190
+ }
191
+ if (!Array.isArray(baseEdges)) {
192
+ networkSettings.hierarchicalNetwork = true;
193
+ const rootNode = (0, d3_hierarchy_1.hierarchy)(baseEdges, networkSettings.hierarchyChildren);
194
+ rootNode.sum(networkSettings.hierarchySum || ((d) => d.value));
195
+ if (isHierarchical) {
196
+ const layout = networkSettings.layout || isHierarchical;
197
+ const hierarchicalLayout = layout();
198
+ const networkSettingKeys = Object.keys(networkSettings);
199
+ if ((networkSettings.type === "dendrogram" ||
200
+ networkSettings.type === "tree" ||
201
+ networkSettings.type === "cluster") &&
202
+ hierarchicalLayout.separation) {
203
+ hierarchicalLayout.separation((a, b) => (nodeSizeAccessor({ ...a, ...a.data }) || 1) +
204
+ (networkSettings.nodePadding || 0) +
205
+ (nodeSizeAccessor({ ...b, ...b.data }) || 1));
206
+ }
207
+ networkSettingKeys.forEach((key) => {
208
+ if (hierarchicalLayout[key]) {
209
+ hierarchicalLayout[key](networkSettings[key]);
210
+ }
211
+ });
212
+ const layoutSize = networkSettings.projection === "horizontal" && isHierarchical
213
+ ? [adjustedSize[1], adjustedSize[0]]
214
+ : adjustedSize;
215
+ if (!networkSettings.nodeSize && hierarchicalLayout.size) {
216
+ hierarchicalLayout.size(layoutSize);
217
+ }
218
+ hierarchicalLayout(rootNode);
219
+ }
220
+ operationalEdges = (0, hierarchyUtils_1.nodesEdgesFromHierarchy)(rootNode, nodeIDAccessor).edges;
221
+ }
222
+ networkDefaults_1.baseNodeProps.shapeNode = createPointLayer;
223
+ if (Array.isArray(operationalEdges)) {
224
+ operationalEdges.forEach((edge) => {
225
+ const source = sourceAccessor(edge);
226
+ const target = targetAccessor(edge);
227
+ const sourceTarget = [source, target];
228
+ sourceTarget.forEach((nodeDirection) => {
229
+ if (!nodeHash.get(nodeDirection)) {
230
+ const nodeObject = typeof nodeDirection === "object"
231
+ ? {
232
+ ...networkDefaults_1.baseNodeProps,
233
+ ...nodeDirection
234
+ }
235
+ : {
236
+ ...networkDefaults_1.baseNodeProps,
237
+ id: nodeDirection,
238
+ createdByFrame: true
239
+ };
240
+ const nodeIDValue = nodeObject.id || nodeIDAccessor(nodeObject);
241
+ nodeHierarchicalIDFill[nodeIDValue]
242
+ ? (nodeHierarchicalIDFill[nodeIDValue] += 1)
243
+ : (nodeHierarchicalIDFill[nodeIDValue] = 1);
244
+ if (!nodeObject.id) {
245
+ const nodeSuffix = nodeHierarchicalIDFill[nodeIDValue] === 1
246
+ ? ""
247
+ : `-${nodeHierarchicalIDFill[nodeIDValue]}`;
248
+ nodeObject.id = `${nodeIDValue}${nodeSuffix}`;
249
+ }
250
+ nodeHash.set(nodeDirection, nodeObject);
251
+ projectedNodes.push(nodeObject);
252
+ }
253
+ });
254
+ const edgeWeight = edge.weight || 1;
255
+ const sourceNode = nodeHash.get(source);
256
+ const targetNode = nodeHash.get(target);
257
+ targetNode.inDegree += edgeWeight;
258
+ sourceNode.outDegree += edgeWeight;
259
+ targetNode.degree += edgeWeight;
260
+ sourceNode.degree += edgeWeight;
261
+ const edgeKey = `${nodeIDAccessor(sourceNode) || source}|${nodeIDAccessor(targetNode) || target}`;
262
+ const newEdge = Object.assign({}, edge, {
263
+ source: nodeHash.get(source),
264
+ target: nodeHash.get(target)
265
+ });
266
+ edgeHash.set(edgeKey, newEdge);
267
+ projectedEdges.push(newEdge);
268
+ if (networkSettings.type === "matrix") {
269
+ projectedEdges.push({
270
+ ...newEdge,
271
+ source: newEdge.target,
272
+ target: newEdge.source
273
+ });
274
+ }
275
+ });
276
+ }
277
+ }
278
+ else {
279
+ edgeHash = new Map();
280
+ networkSettings.graphSettings.edgeHash = edgeHash;
281
+ projectedEdges.forEach((edge) => {
282
+ const edgeSource = typeof edge.source === "string"
283
+ ? edge.source
284
+ : nodeIDAccessor(edge.source);
285
+ const edgeTarget = typeof edge.target === "string"
286
+ ? edge.target
287
+ : nodeIDAccessor(edge.target);
288
+ const edgeKey = `${edgeSource}|${edgeTarget}`;
289
+ edgeHash.set(edgeKey, edge);
290
+ });
291
+ }
292
+ const customNodeIcon = (0, networkLayoutHelpers_1.determineNodeIcon)(baseCustomNodeIcon, networkSettings, adjustedSize, projectedNodes);
293
+ const customEdgeIcon = (0, networkLayoutHelpers_1.determineEdgeIcon)({
294
+ baseCustomEdgeIcon,
295
+ networkSettings,
296
+ size: adjustedSize,
297
+ nodes: projectedNodes,
298
+ graph
299
+ });
300
+ networkSettings.width = size[0];
301
+ networkSettings.height = size[1];
302
+ let networkSettingsChanged = false;
303
+ networkSettingsKeys.forEach((key) => {
304
+ if (key !== "edgeType" &&
305
+ key !== "graphSettings" &&
306
+ networkSettings[key] !== prevState.graphSettings[key]) {
307
+ networkSettingsChanged = true;
308
+ }
309
+ });
310
+ //Support bubble chart with circle pack and with force
311
+ if (networkSettings.type === "sankey") {
312
+ edgeType = (d) => d.circular
313
+ ? (0, networkDrawing_1.circularAreaLink)(d)
314
+ : edgeType === "angled"
315
+ ? (0, networkDrawing_1.ribbonLink)(d)
316
+ : (0, networkDrawing_1.areaLink)(d);
317
+ }
318
+ else if (isHierarchical) {
319
+ projectedNodes.forEach((node) => {
320
+ if (createPointLayer) {
321
+ node.x = (node.x0 + node.x1) / 2;
322
+ node.y = (node.y0 + node.y1) / 2;
323
+ }
324
+ if (typeof networkSettings.type === "string" &&
325
+ networkLayoutHelpers_1.hierarchicalProjectable[networkSettings.type] &&
326
+ networkSettings.projection === "horizontal") {
327
+ const ox = node.x;
328
+ node.x = node.y;
329
+ node.y = ox;
330
+ if (createPointLayer) {
331
+ const ox0 = node.x0;
332
+ const ox1 = node.x1;
333
+ node.x0 = node.y0;
334
+ node.x1 = node.y1;
335
+ node.y0 = ox0;
336
+ node.y1 = ox1;
337
+ }
338
+ }
339
+ else if (typeof networkSettings.type === "string" &&
340
+ networkLayoutHelpers_1.radialProjectable[networkSettings.type] &&
341
+ networkSettings.projection === "radial") {
342
+ const radialPoint = node.depth === 0
343
+ ? [adjustedSize[0] / 2, adjustedSize[1] / 2]
344
+ : (0, pieceDrawing_1.pointOnArcAtAngle)([adjustedSize[0] / 2, adjustedSize[1] / 2], node.x / adjustedSize[0], node.y / 2);
345
+ node.x = radialPoint[0];
346
+ node.y = radialPoint[1];
347
+ }
348
+ else {
349
+ node.x = node.x;
350
+ node.y = node.y;
351
+ if (createPointLayer) {
352
+ node.x0 = node.x0;
353
+ node.x1 = node.x1;
354
+ node.y0 = node.y0;
355
+ node.y1 = node.y1;
356
+ }
357
+ }
358
+ });
359
+ }
360
+ if (networkSettings.type !== "static" &&
361
+ (changedData || networkSettingsChanged)) {
362
+ let components = [
363
+ {
364
+ componentNodes: projectedNodes,
365
+ componentEdges: projectedEdges
366
+ }
367
+ ];
368
+ const layoutType = typeof networkSettings.type === "string" ? networkSettings.type : "custom";
369
+ const handler = layoutMap?.[layoutType];
370
+ if (handler) {
371
+ const result = handler({
372
+ projectedNodes,
373
+ projectedEdges,
374
+ networkSettings,
375
+ adjustedSize,
376
+ edgeHash,
377
+ nodeIDAccessor,
378
+ edgeWidthAccessor,
379
+ nodeSizeAccessor,
380
+ size
381
+ });
382
+ projectedNodes = result.projectedNodes;
383
+ projectedEdges = result.projectedEdges;
384
+ if (result.components)
385
+ components = result.components;
386
+ }
387
+ else if (typeof networkSettings.type === "function") {
388
+ networkSettings.type({
389
+ nodes: projectedNodes,
390
+ edges: projectedEdges
391
+ });
392
+ }
393
+ else {
394
+ projectedNodes.forEach((node) => {
395
+ node.x = node.x === undefined ? (node.x0 + node.x1) / 2 : node.x;
396
+ node.y = node.y === undefined ? node.y0 : node.y;
397
+ });
398
+ }
399
+ prevState.graphSettings.nodes = currentProps.nodes;
400
+ prevState.graphSettings.edges = currentProps.edges;
401
+ }
402
+ //filter out user-defined nodes
403
+ projectedNodes = projectedNodes.filter(filterRenderedNodes);
404
+ projectedEdges = projectedEdges.filter((d) => projectedNodes.indexOf(d.target) !== -1 &&
405
+ projectedNodes.indexOf(d.source) !== -1);
406
+ if (networkSettings.direction === "flip") {
407
+ projectedNodes.forEach((node) => {
408
+ // const ox = node.x
409
+ // const oy = node.y
410
+ node.x = adjustedSize[0] - node.x;
411
+ node.y = adjustedSize[1] - node.y;
412
+ });
413
+ }
414
+ else if (networkSettings.direction === "up" ||
415
+ networkSettings.direction === "down") {
416
+ const mod = networkSettings.direction === "up"
417
+ ? (value) => adjustedSize[1] - value
418
+ : (value) => value;
419
+ projectedNodes.forEach((node) => {
420
+ const ox = node.x;
421
+ const ox0 = node.x0;
422
+ const ox1 = node.x1;
423
+ node.x = mod(node.y);
424
+ node.x0 = mod(node.y0);
425
+ node.x1 = mod(node.y1);
426
+ node.y = ox;
427
+ node.y0 = ox0;
428
+ node.y1 = ox1;
429
+ });
430
+ }
431
+ else if (networkSettings.direction === "left") {
432
+ projectedNodes.forEach((node) => {
433
+ node.x = adjustedSize[0] - node.x;
434
+ node.x0 = adjustedSize[0] - node.x0;
435
+ node.x1 = adjustedSize[0] - node.x1;
436
+ });
437
+ }
438
+ if (typeof networkSettings.zoom === "function") {
439
+ networkSettings.zoom(projectedNodes, projectedEdges, adjustedSize);
440
+ }
441
+ else if (networkSettings.zoom !== false &&
442
+ networkSettings.type !== "matrix" &&
443
+ networkSettings.type !== "chord" &&
444
+ networkSettings.type !== "sankey" &&
445
+ networkSettings.type !== "partition" &&
446
+ networkSettings.type !== "treemap" &&
447
+ networkSettings.type !== "circlepack" &&
448
+ networkSettings.type !== "dagre") {
449
+ // ZOOM SHOULD MAINTAIN ASPECT RATIO, ADD "stretch" to fill whole area
450
+ const xMin = (0, d3_array_1.min)(projectedNodes.map((p) => p.x - nodeSizeAccessor(p)));
451
+ const xMax = (0, d3_array_1.max)(projectedNodes.map((p) => p.x + nodeSizeAccessor(p)));
452
+ const yMin = (0, d3_array_1.min)(projectedNodes.map((p) => p.y - nodeSizeAccessor(p)));
453
+ const yMax = (0, d3_array_1.max)(projectedNodes.map((p) => p.y + nodeSizeAccessor(p)));
454
+ const xSize = Math.abs(xMax - xMin);
455
+ const ySize = Math.abs(yMax - yMin);
456
+ const networkAspectRatio = xSize / ySize;
457
+ const baseAspectRatio = adjustedSize[0] / adjustedSize[1];
458
+ let yMod, xMod;
459
+ if (networkSettings.zoom === "stretch") {
460
+ yMod = 0;
461
+ xMod = 0;
462
+ }
463
+ else if (xSize > ySize) {
464
+ if (networkAspectRatio > baseAspectRatio) {
465
+ xMod = 0;
466
+ yMod = (adjustedSize[1] - (adjustedSize[0] / xSize) * ySize) / 2;
467
+ }
468
+ else {
469
+ yMod = 0;
470
+ xMod = (adjustedSize[0] - (adjustedSize[1] / ySize) * xSize) / 2;
471
+ }
472
+ }
473
+ else {
474
+ if (networkAspectRatio > baseAspectRatio) {
475
+ xMod = 0;
476
+ yMod = (adjustedSize[1] - (adjustedSize[0] / xSize) * ySize) / 2;
477
+ }
478
+ else {
479
+ yMod = 0;
480
+ xMod = (adjustedSize[0] - (adjustedSize[1] / ySize) * xSize) / 2;
481
+ }
482
+ }
483
+ const projectionScaleX = (0, d3_scale_1.scaleLinear)()
484
+ .domain([xMin, xMax])
485
+ .range([xMod, adjustedSize[0] - xMod]);
486
+ const projectionScaleY = (0, d3_scale_1.scaleLinear)()
487
+ .domain([yMin, yMax])
488
+ .range([yMod, adjustedSize[1] - yMod]);
489
+ projectedNodes.forEach((node) => {
490
+ node.x = projectionScaleX(node.x);
491
+ node.y = projectionScaleY(node.y);
492
+ });
493
+ }
494
+ else if (networkSettings.zoom !== false &&
495
+ networkSettings.projection !== "radial" &&
496
+ (networkSettings.type === "partition" ||
497
+ networkSettings.type === "treemap" ||
498
+ networkSettings.type === "dagre")) {
499
+ const xMin = (0, d3_array_1.min)(projectedNodes.map((p) => p.x0));
500
+ const xMax = (0, d3_array_1.max)(projectedNodes.map((p) => p.x1));
501
+ const yMin = (0, d3_array_1.min)(projectedNodes.map((p) => p.y0));
502
+ const yMax = (0, d3_array_1.max)(projectedNodes.map((p) => p.y1));
503
+ const projectionScaleX = (0, d3_scale_1.scaleLinear)()
504
+ .domain([xMin, xMax])
505
+ .range([margin.left, adjustedSize[0] - margin.right]);
506
+ const projectionScaleY = (0, d3_scale_1.scaleLinear)()
507
+ .domain([yMin, yMax])
508
+ .range([margin.top, adjustedSize[1] - margin.bottom]);
509
+ projectedNodes.forEach((node) => {
510
+ node.x = projectionScaleX(node.x);
511
+ node.y = projectionScaleY(node.y);
512
+ node.x0 = projectionScaleX(node.x0);
513
+ node.y0 = projectionScaleY(node.y0);
514
+ node.x1 = projectionScaleX(node.x1);
515
+ node.y1 = projectionScaleY(node.y1);
516
+ node.zoomedHeight = node.y1 - node.y0;
517
+ node.zoomedWidth = node.x1 - node.x0;
518
+ });
519
+ projectedEdges.forEach((edge) => {
520
+ if (edge.points) {
521
+ edge.points.forEach((p) => {
522
+ p.x = projectionScaleX(p.x);
523
+ p.y = projectionScaleY(p.y);
524
+ });
525
+ }
526
+ });
527
+ }
528
+ else if (networkSettings.zoom !== false &&
529
+ networkSettings.type === "sankey" &&
530
+ projectedEdges.some((e) => e.circular)) {
531
+ const circularLinks = projectedEdges.filter((e) => e.circular);
532
+ const xMinEdge = (0, d3_array_1.min)(circularLinks, (e) => e.circularPathData.rightFullExtent - e.sankeyWidth / 2) || Infinity;
533
+ const xMaxEdge = (0, d3_array_1.max)(circularLinks, (e) => e.circularPathData.leftFullExtent + e.sankeyWidth / 2) || -Infinity;
534
+ const yMinEdge = (0, d3_array_1.min)(circularLinks, (e) => e.circularPathData.verticalFullExtent - e.sankeyWidth / 2) || Infinity;
535
+ const yMaxEdge = (0, d3_array_1.max)(circularLinks, (e) => e.circularPathData.verticalFullExtent + e.sankeyWidth / 2) || -Infinity;
536
+ const yMinNode = (0, d3_array_1.min)(projectedNodes, (node) => node.y0);
537
+ const yMaxNode = (0, d3_array_1.max)(projectedNodes, (node) => node.y1);
538
+ const xMinNode = (0, d3_array_1.min)(projectedNodes, (node) => node.x0);
539
+ const xMaxNode = (0, d3_array_1.max)(projectedNodes, (node) => node.x1);
540
+ const sankeyMinX = Math.min(xMinEdge, xMinNode);
541
+ const sankeyMaxX = Math.max(xMaxEdge, xMaxNode);
542
+ const sankeyMinY = Math.min(yMinEdge, yMinNode);
543
+ const sankeyMaxY = Math.max(yMaxEdge, yMaxNode);
544
+ const projectionScaleX = (0, d3_scale_1.scaleLinear)()
545
+ .domain([sankeyMinX, sankeyMaxX])
546
+ .range([0, adjustedSize[0]]);
547
+ const projectionScaleY = (0, d3_scale_1.scaleLinear)()
548
+ .domain([sankeyMinY, sankeyMaxY])
549
+ .range([0, adjustedSize[1]]);
550
+ const widthFactor = adjustedSize[1] / (sankeyMaxY - sankeyMinY);
551
+ for (const node of projectedNodes) {
552
+ node.x = projectionScaleX(node.x);
553
+ node.x0 = projectionScaleX(node.x0);
554
+ node.x1 = projectionScaleX(node.x1);
555
+ node.y = projectionScaleY(node.y);
556
+ node.y0 = projectionScaleY(node.y0);
557
+ node.y1 = projectionScaleY(node.y1);
558
+ node.width = node.x1 - node.x0;
559
+ node.height = node.y1 - node.y0;
560
+ }
561
+ for (const edge of projectedEdges) {
562
+ if (edge.circular) {
563
+ edge.circularPathData.sourceX = projectionScaleX(edge.circularPathData.sourceX);
564
+ edge.circularPathData.sourceY = projectionScaleY(edge.circularPathData.sourceY);
565
+ edge.circularPathData.leftFullExtent = projectionScaleX(edge.circularPathData.leftFullExtent);
566
+ edge.circularPathData.verticalFullExtent = projectionScaleY(edge.circularPathData.verticalFullExtent);
567
+ edge.circularPathData.rightFullExtent = projectionScaleX(edge.circularPathData.rightFullExtent);
568
+ edge.circularPathData.targetX = projectionScaleX(edge.circularPathData.targetX);
569
+ edge.circularPathData.targetY = projectionScaleY(edge.circularPathData.targetY);
570
+ }
571
+ else {
572
+ edge.y0 = projectionScaleY(edge.y0);
573
+ edge.y1 = projectionScaleY(edge.y1);
574
+ }
575
+ edge.sankeyWidth = edge.sankeyWidth * widthFactor;
576
+ }
577
+ }
578
+ projectedNodes.forEach((node) => {
579
+ node.nodeSize = nodeSizeAccessor(node);
580
+ });
581
+ projectedEdges.forEach((edge) => {
582
+ edge.width = edgeWidthAccessor(edge);
583
+ });
584
+ let legendSettings;
585
+ if (currentProps.legend) {
586
+ legendSettings = currentProps.legend;
587
+ if (!legendSettings.legendGroups) {
588
+ ///Something auto for networks
589
+ const legendGroups = [
590
+ {
591
+ styleFn: currentProps.nodeStyle,
592
+ type: "fill",
593
+ items: []
594
+ }
595
+ ];
596
+ legendSettings.legendGroups = legendGroups;
597
+ }
598
+ }
599
+ const cachedEdgeStyles = cache.edgeStyleFns(edgeStyle, edgeClass, edgeRenderMode, canvasEdges);
600
+ const networkFrameRender = {
601
+ edges: {
602
+ accessibleTransform: (data, i) => {
603
+ const edgeX = (data[i].source.x + data[i].target.x) / 2;
604
+ const edgeY = (data[i].source.y + data[i].target.y) / 2;
605
+ return { type: "frame-hover", ...data[i], x: edgeX, y: edgeY };
606
+ },
607
+ data: projectedEdges,
608
+ styleFn: cachedEdgeStyles.edgeStyleFn,
609
+ classFn: cachedEdgeStyles.edgeClassFn,
610
+ renderMode: cachedEdgeStyles.edgeRenderModeFn,
611
+ canvasRenderFn: cachedEdgeStyles.edgeCanvasRenderFn,
612
+ renderKeyFn: currentProps.edgeRenderKey
613
+ ? currentProps.edgeRenderKey
614
+ : (d) => d._NWFEdgeKey || d.key || `${d.source.id}-${d.target.id}`,
615
+ behavior: networkDrawing_1.drawEdges,
616
+ projection: networkSettings.projection,
617
+ type: edgeType,
618
+ customMark: customEdgeIcon,
619
+ networkSettings,
620
+ numberOfNodes: projectedNodes.length,
621
+ size: adjustedSize
622
+ },
623
+ nodes: {
624
+ accessibleTransform: (data, i) => ({
625
+ type: "frame-hover",
626
+ ...data[i],
627
+ ...(data[i].data || {})
628
+ }),
629
+ data: projectedNodes,
630
+ styleFn: nodeStyleFn,
631
+ classFn: nodeClassFn,
632
+ renderMode: nodeRenderModeFn,
633
+ canvasRenderFn: nodeCanvasRenderFn,
634
+ customMark: customNodeIcon,
635
+ behavior: networkDrawing_1.drawNodes,
636
+ renderKeyFn: currentProps.nodeRenderKey,
637
+ networkSettings
638
+ }
639
+ };
640
+ const nodeLabelAnnotations = [];
641
+ if (currentProps.nodeLabels && projectedNodes) {
642
+ projectedNodes.forEach((node, nodei) => {
643
+ const feasibleLabel = nodeLabels && nodeLabels !== true && nodeLabels(node);
644
+ if (nodeLabels === true || feasibleLabel) {
645
+ const actualLabel = networkSettings.projection === "radial" && node.depth !== 0
646
+ ? (0, networkDrawing_1.radialLabelGenerator)(node, nodei, nodeLabels === true ? nodeIDAccessor : nodeLabels, adjustedSize)
647
+ : nodeLabels === true
648
+ ? nodeIDAccessor(node, nodei)
649
+ : feasibleLabel;
650
+ let nodeLabel;
651
+ if (React.isValidElement(actualLabel)) {
652
+ nodeLabel = {
653
+ key: `node-label-${nodei}`,
654
+ type: "basic-node-label",
655
+ x: node.x,
656
+ y: node.y,
657
+ element: actualLabel
658
+ };
659
+ }
660
+ else {
661
+ nodeLabel = {
662
+ key: `node-label-${nodei}`,
663
+ className: "node-label",
664
+ dx: 0,
665
+ dy: 0,
666
+ x: node.x,
667
+ y: node.y,
668
+ color: "currentColor",
669
+ note: { label: actualLabel },
670
+ connector: { end: "none" },
671
+ type: "label",
672
+ subject: { radius: nodeSizeAccessor(node) + 2 }
673
+ };
674
+ }
675
+ nodeLabelAnnotations.push(nodeLabel);
676
+ }
677
+ });
678
+ }
679
+ let projectedXYPoints;
680
+ const overlay = [];
681
+ const areaBasedTypes = [
682
+ "circlepack",
683
+ "treemap",
684
+ "partition",
685
+ "chord"
686
+ // "matrix"
687
+ ];
688
+ if ((hoverAnnotation &&
689
+ areaBasedTypes.find((d) => d === networkSettings.type)) ||
690
+ hoverAnnotation === "area") {
691
+ if (hoverAnnotation !== "edge") {
692
+ const renderedNodeOverlays = projectedNodes.map((d, i) => ({
693
+ overlayData: d,
694
+ ...customNodeIcon({
695
+ d,
696
+ i,
697
+ transform: `translate(${d.x},${d.y})`,
698
+ styleFn: () => ({ opacity: 0 })
699
+ }).props
700
+ }));
701
+ overlay.push(...renderedNodeOverlays);
702
+ }
703
+ if (hoverAnnotation !== "node") {
704
+ projectedEdges.forEach((d, i) => {
705
+ const generatedIcon = customEdgeIcon({
706
+ d,
707
+ i,
708
+ transform: `translate(${d.x},${d.y})`,
709
+ styleFn: () => ({ opacity: 0 })
710
+ });
711
+ if (generatedIcon) {
712
+ overlay.push({
713
+ overlayData: {
714
+ ...d,
715
+ x: d.x === undefined ? (d.source.x + d.target.x) / 2 : d.x,
716
+ y: d.y === undefined ? (d.source.y + d.target.y) / 2 : d.y,
717
+ edge: true
718
+ },
719
+ ...generatedIcon.props
720
+ });
721
+ }
722
+ });
723
+ }
724
+ }
725
+ else if (hoverAnnotation === "edge" &&
726
+ typeof networkSettings.type === "string" &&
727
+ networkLayoutHelpers_1.edgePointHash[networkSettings.type]) {
728
+ projectedXYPoints = projectedEdges.map(networkLayoutHelpers_1.edgePointHash[networkSettings.type]);
729
+ }
730
+ else if (Array.isArray(hoverAnnotation) ||
731
+ hoverAnnotation === true ||
732
+ hoverAnnotation === "node") {
733
+ projectedXYPoints = projectedNodes;
734
+ if (changedData || networkSettingsChanged)
735
+ projectedXYPoints = [...projectedNodes];
736
+ }
737
+ else if (hoverAnnotation === "all" &&
738
+ typeof networkSettings.type === "string") {
739
+ projectedXYPoints = [
740
+ ...projectedEdges.map(networkLayoutHelpers_1.edgePointHash[networkSettings.type]),
741
+ ...projectedNodes
742
+ ];
743
+ }
744
+ return {
745
+ adjustedPosition: adjustedPosition,
746
+ adjustedSize: adjustedSize,
747
+ backgroundGraphics: currentProps.backgroundGraphics,
748
+ foregroundGraphics: currentProps.foregroundGraphics,
749
+ title,
750
+ renderNumber: prevState.renderNumber + 1,
751
+ projectedNodes,
752
+ projectedEdges,
753
+ projectedXYPoints,
754
+ overlay,
755
+ nodeIDAccessor,
756
+ sourceAccessor,
757
+ targetAccessor,
758
+ nodeSizeAccessor,
759
+ edgeWidthAccessor,
760
+ margin,
761
+ legendSettings,
762
+ networkFrameRender,
763
+ nodeLabelAnnotations,
764
+ graphSettings: {
765
+ ...networkSettings.graphSettings,
766
+ ...networkSettings
767
+ },
768
+ props: currentProps
769
+ };
770
+ };
771
+ exports.calculateNetworkFrame = calculateNetworkFrame;