@unovis/ts 1.1.1-beta.7 → 1.1.1-beta.9

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 (710) hide show
  1. package/components/area/config.d.ts +25 -0
  2. package/components/area/config.js +16 -0
  3. package/components/area/config.js.map +1 -0
  4. package/components/area/index.d.ts +19 -0
  5. package/components/area/index.js +102 -0
  6. package/components/area/index.js.map +1 -0
  7. package/components/area/style.d.ts +3 -0
  8. package/{src/components/area/style.ts → components/area/style.js} +10 -9
  9. package/components/area/style.js.map +1 -0
  10. package/components/area/types.d.ts +6 -0
  11. package/components/axis/config.d.ts +71 -0
  12. package/components/axis/config.js +32 -0
  13. package/components/axis/config.js.map +1 -0
  14. package/components/axis/index.d.ts +44 -0
  15. package/components/axis/index.js +305 -0
  16. package/components/axis/index.js.map +1 -0
  17. package/components/axis/style.d.ts +9 -0
  18. package/{src/components/axis/style.ts → components/axis/style.js} +22 -27
  19. package/components/axis/style.js.map +1 -0
  20. package/components/axis/types.d.ts +4 -0
  21. package/components/axis/types.js +8 -0
  22. package/components/axis/types.js.map +1 -0
  23. package/components/brush/config.d.ts +42 -0
  24. package/components/brush/config.js +24 -0
  25. package/components/brush/config.js.map +1 -0
  26. package/components/brush/index.d.ts +28 -0
  27. package/components/brush/index.js +199 -0
  28. package/components/brush/index.js.map +1 -0
  29. package/components/brush/style.d.ts +5 -0
  30. package/{src/components/brush/style.ts → components/brush/style.js} +14 -15
  31. package/components/brush/style.js.map +1 -0
  32. package/components/brush/types.d.ts +7 -0
  33. package/components/brush/types.js +8 -0
  34. package/components/brush/types.js.map +1 -0
  35. package/components/bullet-legend/config.d.ts +34 -0
  36. package/components/bullet-legend/config.js +16 -0
  37. package/components/bullet-legend/config.js.map +1 -0
  38. package/components/bullet-legend/index.d.ts +19 -0
  39. package/components/bullet-legend/index.js +79 -0
  40. package/components/bullet-legend/index.js.map +1 -0
  41. package/components/bullet-legend/style.d.ts +6 -0
  42. package/{src/components/bullet-legend/style.ts → components/bullet-legend/style.js} +16 -18
  43. package/components/bullet-legend/style.js.map +1 -0
  44. package/components/bullet-legend/types.d.ts +7 -0
  45. package/components/bullet-legend/types.js +2 -0
  46. package/components/bullet-legend/types.js.map +1 -0
  47. package/components/chord-diagram/config.d.ts +44 -0
  48. package/components/chord-diagram/config.js +25 -0
  49. package/components/chord-diagram/config.js.map +1 -0
  50. package/components/chord-diagram/index.d.ts +42 -0
  51. package/components/chord-diagram/index.js +305 -0
  52. package/components/chord-diagram/index.js.map +1 -0
  53. package/components/chord-diagram/modules/label.d.ts +8 -0
  54. package/components/chord-diagram/modules/label.js +115 -0
  55. package/components/chord-diagram/modules/label.js.map +1 -0
  56. package/components/chord-diagram/modules/link.d.ts +21 -0
  57. package/components/chord-diagram/modules/link.js +63 -0
  58. package/components/chord-diagram/modules/link.js.map +1 -0
  59. package/components/chord-diagram/modules/node.d.ts +17 -0
  60. package/components/chord-diagram/modules/node.js +52 -0
  61. package/components/chord-diagram/modules/node.js.map +1 -0
  62. package/components/chord-diagram/style.d.ts +13 -0
  63. package/{src/components/chord-diagram/style.ts → components/chord-diagram/style.js} +30 -39
  64. package/components/chord-diagram/style.js.map +1 -0
  65. package/components/chord-diagram/types.d.ts +58 -0
  66. package/components/chord-diagram/types.js +8 -0
  67. package/components/chord-diagram/types.js.map +1 -0
  68. package/components/crosshair/config.d.ts +43 -0
  69. package/components/crosshair/config.js +19 -0
  70. package/components/crosshair/config.js.map +1 -0
  71. package/components/crosshair/index.d.ts +35 -0
  72. package/components/crosshair/index.js +183 -0
  73. package/components/crosshair/index.js.map +1 -0
  74. package/components/crosshair/style.d.ts +4 -0
  75. package/{src/components/crosshair/style.ts → components/crosshair/style.js} +12 -12
  76. package/components/crosshair/style.js.map +1 -0
  77. package/components/crosshair/types.d.ts +13 -0
  78. package/components/crosshair/types.js +2 -0
  79. package/components/crosshair/types.js.map +1 -0
  80. package/components/donut/config.d.ts +59 -0
  81. package/components/donut/config.js +28 -0
  82. package/components/donut/config.js.map +1 -0
  83. package/components/donut/index.d.ts +21 -0
  84. package/components/donut/index.js +107 -0
  85. package/components/donut/index.js.map +1 -0
  86. package/components/donut/modules/arc.d.ts +10 -0
  87. package/components/donut/modules/arc.js +59 -0
  88. package/components/donut/modules/arc.js.map +1 -0
  89. package/components/donut/style.d.ts +7 -0
  90. package/{src/components/donut/style.ts → components/donut/style.js} +18 -20
  91. package/components/donut/style.js.map +1 -0
  92. package/components/donut/types.d.ts +20 -0
  93. package/components/flow-legend/config.d.ts +29 -0
  94. package/components/flow-legend/config.js +18 -0
  95. package/components/flow-legend/config.js.map +1 -0
  96. package/components/flow-legend/index.d.ts +16 -0
  97. package/components/flow-legend/index.js +75 -0
  98. package/components/flow-legend/index.js.map +1 -0
  99. package/components/flow-legend/style.d.ts +8 -0
  100. package/{src/components/flow-legend/style.ts → components/flow-legend/style.js} +21 -25
  101. package/components/flow-legend/style.js.map +1 -0
  102. package/components/flow-legend/types.d.ts +9 -0
  103. package/components/flow-legend/types.js +8 -0
  104. package/components/flow-legend/types.js.map +1 -0
  105. package/components/free-brush/config.d.ts +45 -0
  106. package/components/free-brush/config.js +24 -0
  107. package/components/free-brush/config.js.map +1 -0
  108. package/components/free-brush/index.d.ts +20 -0
  109. package/components/free-brush/index.js +192 -0
  110. package/components/free-brush/index.js.map +1 -0
  111. package/components/free-brush/style.d.ts +4 -0
  112. package/{src/components/free-brush/style.ts → components/free-brush/style.js} +12 -12
  113. package/components/free-brush/style.js.map +1 -0
  114. package/components/free-brush/types.d.ts +7 -0
  115. package/components/free-brush/types.js +9 -0
  116. package/components/free-brush/types.js.map +1 -0
  117. package/components/graph/config.d.ts +238 -0
  118. package/components/graph/config.js +84 -0
  119. package/components/graph/config.js.map +1 -0
  120. package/components/graph/index.d.ts +126 -0
  121. package/components/graph/index.js +656 -0
  122. package/components/graph/index.js.map +1 -0
  123. package/components/graph/modules/layout-helpers.d.ts +21 -0
  124. package/components/graph/modules/layout-helpers.js +69 -0
  125. package/components/graph/modules/layout-helpers.js.map +1 -0
  126. package/components/graph/modules/layout.d.ts +10 -0
  127. package/components/graph/modules/layout.js +399 -0
  128. package/components/graph/modules/layout.js.map +1 -0
  129. package/components/graph/modules/link/helper.d.ts +25 -0
  130. package/components/graph/modules/link/helper.js +74 -0
  131. package/components/graph/modules/link/helper.js.map +1 -0
  132. package/components/graph/modules/link/index.d.ts +11 -0
  133. package/components/graph/modules/link/index.js +212 -0
  134. package/components/graph/modules/link/index.js.map +1 -0
  135. package/components/graph/modules/link/style.d.ts +15 -0
  136. package/{src/components/graph/modules/link/style.ts → components/graph/modules/link/style.js} +34 -45
  137. package/components/graph/modules/link/style.js.map +1 -0
  138. package/components/graph/modules/node/helper.d.ts +21 -0
  139. package/components/graph/modules/node/helper.js +126 -0
  140. package/components/graph/modules/node/helper.js.map +1 -0
  141. package/components/graph/modules/node/index.d.ts +11 -0
  142. package/components/graph/modules/node/index.js +252 -0
  143. package/components/graph/modules/node/index.js.map +1 -0
  144. package/components/graph/modules/node/style.d.ts +24 -0
  145. package/{src/components/graph/modules/node/style.ts → components/graph/modules/node/style.js} +52 -72
  146. package/components/graph/modules/node/style.js.map +1 -0
  147. package/components/graph/modules/panel/helper.d.ts +18 -0
  148. package/components/graph/modules/panel/helper.js +111 -0
  149. package/components/graph/modules/panel/helper.js.map +1 -0
  150. package/components/graph/modules/panel/index.d.ts +7 -0
  151. package/components/graph/modules/panel/index.js +98 -0
  152. package/components/graph/modules/panel/index.js.map +1 -0
  153. package/components/graph/modules/panel/style.d.ts +14 -0
  154. package/{src/components/graph/modules/panel/style.ts → components/graph/modules/panel/style.js} +32 -42
  155. package/components/graph/modules/panel/style.js.map +1 -0
  156. package/components/graph/modules/shape.d.ts +6 -0
  157. package/components/graph/modules/shape.js +80 -0
  158. package/components/graph/modules/shape.js.map +1 -0
  159. package/components/graph/modules/zoom-levels.d.ts +6 -0
  160. package/components/graph/modules/zoom-levels.js +10 -0
  161. package/components/graph/modules/zoom-levels.js.map +1 -0
  162. package/components/graph/style.d.ts +6 -0
  163. package/components/graph/style.js +66 -0
  164. package/components/graph/style.js.map +1 -0
  165. package/components/graph/types.d.ts +125 -0
  166. package/components/graph/types.js +30 -0
  167. package/components/graph/types.js.map +1 -0
  168. package/components/grouped-bar/config.d.ts +36 -0
  169. package/components/grouped-bar/config.js +20 -0
  170. package/components/grouped-bar/config.js.map +1 -0
  171. package/components/grouped-bar/index.d.ts +32 -0
  172. package/components/grouped-bar/index.js +249 -0
  173. package/components/grouped-bar/index.js.map +1 -0
  174. package/components/grouped-bar/style.d.ts +5 -0
  175. package/{src/components/grouped-bar/style.ts → components/grouped-bar/style.js} +14 -15
  176. package/components/grouped-bar/style.js.map +1 -0
  177. package/components/leaflet-flow-map/config.d.ts +46 -0
  178. package/components/leaflet-flow-map/config.js +25 -0
  179. package/components/leaflet-flow-map/config.js.map +1 -0
  180. package/components/leaflet-flow-map/index.d.ts +52 -0
  181. package/components/leaflet-flow-map/index.js +220 -0
  182. package/components/leaflet-flow-map/index.js.map +1 -0
  183. package/components/leaflet-flow-map/renderer-utils.d.ts +5 -0
  184. package/components/leaflet-flow-map/renderer-utils.js +15 -0
  185. package/components/leaflet-flow-map/renderer-utils.js.map +1 -0
  186. package/components/leaflet-flow-map/renderer.d.ts +26 -0
  187. package/components/leaflet-flow-map/renderer.js +117 -0
  188. package/components/leaflet-flow-map/renderer.js.map +1 -0
  189. package/components/leaflet-flow-map/shaders.d.ts +2 -0
  190. package/{src/components/leaflet-flow-map/shaders.ts → components/leaflet-flow-map/shaders.js} +7 -4
  191. package/components/leaflet-flow-map/shaders.js.map +1 -0
  192. package/components/leaflet-flow-map/types.d.ts +23 -0
  193. package/components/leaflet-map/config.d.ts +193 -0
  194. package/components/leaflet-map/config.js +71 -0
  195. package/components/leaflet-map/config.js.map +1 -0
  196. package/components/leaflet-map/index.d.ts +130 -0
  197. package/components/leaflet-map/index.js +690 -0
  198. package/components/leaflet-map/index.js.map +1 -0
  199. package/components/leaflet-map/leaflet.css.js +5 -0
  200. package/components/leaflet-map/leaflet.css.js.map +1 -0
  201. package/components/leaflet-map/modules/clusterBackground.d.ts +5 -0
  202. package/components/leaflet-map/modules/clusterBackground.js +27 -0
  203. package/components/leaflet-map/modules/clusterBackground.js.map +1 -0
  204. package/components/leaflet-map/modules/donut.d.ts +3 -0
  205. package/components/leaflet-map/modules/donut.js +25 -0
  206. package/components/leaflet-map/modules/donut.js.map +1 -0
  207. package/components/leaflet-map/modules/map.d.ts +14 -0
  208. package/components/leaflet-map/modules/map.js +154 -0
  209. package/components/leaflet-map/modules/map.js.map +1 -0
  210. package/components/leaflet-map/modules/node.d.ts +9 -0
  211. package/components/leaflet-map/modules/node.js +162 -0
  212. package/components/leaflet-map/modules/node.js.map +1 -0
  213. package/components/leaflet-map/modules/selectionRing.d.ts +7 -0
  214. package/components/leaflet-map/modules/selectionRing.js +41 -0
  215. package/components/leaflet-map/modules/selectionRing.js.map +1 -0
  216. package/components/leaflet-map/modules/utils.d.ts +50 -0
  217. package/components/leaflet-map/modules/utils.js +210 -0
  218. package/components/leaflet-map/modules/utils.js.map +1 -0
  219. package/{src/components → components}/leaflet-map/renderer/leaflet-maplibre-gl.js +78 -76
  220. package/components/leaflet-map/renderer/leaflet-maplibre-gl.js.map +1 -0
  221. package/components/leaflet-map/renderer/map-style.d.ts +4 -0
  222. package/components/leaflet-map/renderer/map-style.js +15 -0
  223. package/components/leaflet-map/renderer/map-style.js.map +1 -0
  224. package/components/leaflet-map/renderer/mapboxgl/mapboxgl-dark-theme.json.js +40 -0
  225. package/components/leaflet-map/renderer/mapboxgl/mapboxgl-dark-theme.json.js.map +1 -0
  226. package/components/leaflet-map/renderer/mapboxgl/mapboxgl-light-theme.json.js +40 -0
  227. package/components/leaflet-map/renderer/mapboxgl/mapboxgl-light-theme.json.js.map +1 -0
  228. package/components/leaflet-map/renderer/mapboxgl/mapboxgl-settings.json.js +4981 -0
  229. package/components/leaflet-map/renderer/mapboxgl/mapboxgl-settings.json.js.map +1 -0
  230. package/components/leaflet-map/renderer/mapboxgl-layer.d.ts +8 -0
  231. package/components/leaflet-map/renderer/mapboxgl-layer.js +27 -0
  232. package/components/leaflet-map/renderer/mapboxgl-layer.js.map +1 -0
  233. package/components/leaflet-map/renderer/mapboxgl-utils.d.ts +4 -0
  234. package/components/leaflet-map/renderer/mapboxgl-utils.js +39 -0
  235. package/components/leaflet-map/renderer/mapboxgl-utils.js.map +1 -0
  236. package/{src/components → components}/leaflet-map/renderer/maplibre-gl.css.js +4 -2
  237. package/components/leaflet-map/renderer/maplibre-gl.css.js.map +1 -0
  238. package/components/leaflet-map/style.d.ts +52 -0
  239. package/components/leaflet-map/style.js +183 -0
  240. package/components/leaflet-map/style.js.map +1 -0
  241. package/components/leaflet-map/types.d.ts +75 -0
  242. package/components/leaflet-map/types.js +15 -0
  243. package/components/leaflet-map/types.js.map +1 -0
  244. package/components/line/config.d.ts +30 -0
  245. package/components/line/config.js +17 -0
  246. package/components/line/config.js.map +1 -0
  247. package/components/line/index.d.ts +27 -0
  248. package/components/line/index.js +152 -0
  249. package/components/line/index.js.map +1 -0
  250. package/components/line/style.d.ts +6 -0
  251. package/{src/components/line/style.ts → components/line/style.js} +16 -18
  252. package/components/line/style.js.map +1 -0
  253. package/components/line/types.d.ts +12 -0
  254. package/components/nested-donut/config.d.ts +59 -0
  255. package/components/nested-donut/config.js +19 -0
  256. package/components/nested-donut/config.js.map +1 -0
  257. package/components/nested-donut/index.d.ts +38 -0
  258. package/components/nested-donut/index.js +133 -0
  259. package/components/nested-donut/index.js.map +1 -0
  260. package/components/nested-donut/modules/arc.d.ts +17 -0
  261. package/components/nested-donut/modules/arc.js +50 -0
  262. package/components/nested-donut/modules/arc.js.map +1 -0
  263. package/components/nested-donut/modules/label.d.ts +7 -0
  264. package/components/nested-donut/modules/label.js +34 -0
  265. package/components/nested-donut/modules/label.js.map +1 -0
  266. package/components/nested-donut/style.d.ts +26 -0
  267. package/components/nested-donut/style.js +70 -0
  268. package/components/nested-donut/style.js.map +1 -0
  269. package/components/nested-donut/types.d.ts +24 -0
  270. package/components/nested-donut/types.js +11 -0
  271. package/components/nested-donut/types.js.map +1 -0
  272. package/components/sankey/config.d.ts +162 -0
  273. package/components/sankey/config.js +65 -0
  274. package/components/sankey/config.js.map +1 -0
  275. package/components/sankey/index.d.ts +59 -0
  276. package/components/sankey/index.js +306 -0
  277. package/components/sankey/index.js.map +1 -0
  278. package/components/sankey/modules/label.d.ts +23 -0
  279. package/components/sankey/modules/label.js +168 -0
  280. package/components/sankey/modules/label.js.map +1 -0
  281. package/components/sankey/modules/link.d.ts +14 -0
  282. package/components/sankey/modules/link.js +108 -0
  283. package/components/sankey/modules/link.js.map +1 -0
  284. package/components/sankey/modules/node.d.ts +10 -0
  285. package/components/sankey/modules/node.js +156 -0
  286. package/components/sankey/modules/node.js.map +1 -0
  287. package/components/sankey/style.d.ts +20 -0
  288. package/{src/components/sankey/style.ts → components/sankey/style.js} +44 -60
  289. package/components/sankey/style.js.map +1 -0
  290. package/components/sankey/types.d.ts +84 -0
  291. package/components/sankey/types.js +34 -0
  292. package/components/sankey/types.js.map +1 -0
  293. package/components/scatter/config.d.ts +44 -0
  294. package/components/scatter/config.js +23 -0
  295. package/components/scatter/config.js.map +1 -0
  296. package/components/scatter/index.d.ts +28 -0
  297. package/components/scatter/index.js +167 -0
  298. package/components/scatter/index.js.map +1 -0
  299. package/components/scatter/modules/point.d.ts +7 -0
  300. package/components/scatter/modules/point.js +86 -0
  301. package/components/scatter/modules/point.js.map +1 -0
  302. package/components/scatter/modules/utils.d.ts +11 -0
  303. package/components/scatter/modules/utils.js +112 -0
  304. package/components/scatter/modules/utils.js.map +1 -0
  305. package/components/scatter/style.d.ts +5 -0
  306. package/{src/components/scatter/style.ts → components/scatter/style.js} +14 -15
  307. package/components/scatter/style.js.map +1 -0
  308. package/components/scatter/types.d.ts +19 -0
  309. package/components/stacked-bar/config.d.ts +38 -0
  310. package/components/stacked-bar/config.js +20 -0
  311. package/components/stacked-bar/config.js.map +1 -0
  312. package/components/stacked-bar/index.d.ts +28 -0
  313. package/components/stacked-bar/index.js +208 -0
  314. package/components/stacked-bar/index.js.map +1 -0
  315. package/components/stacked-bar/style.d.ts +5 -0
  316. package/{src/components/stacked-bar/style.ts → components/stacked-bar/style.js} +14 -15
  317. package/components/stacked-bar/style.js.map +1 -0
  318. package/components/stacked-bar/types.d.ts +5 -0
  319. package/components/timeline/config.d.ts +43 -0
  320. package/components/timeline/config.js +24 -0
  321. package/components/timeline/config.js.map +1 -0
  322. package/components/timeline/index.d.ts +41 -0
  323. package/components/timeline/index.js +244 -0
  324. package/components/timeline/index.js.map +1 -0
  325. package/components/timeline/style.d.ts +13 -0
  326. package/{src/components/timeline/style.ts → components/timeline/style.js} +30 -39
  327. package/components/timeline/style.js.map +1 -0
  328. package/components/tooltip/config.d.ts +68 -0
  329. package/components/tooltip/config.js +20 -0
  330. package/components/tooltip/config.js.map +1 -0
  331. package/components/tooltip/index.d.ts +36 -0
  332. package/components/tooltip/index.js +184 -0
  333. package/components/tooltip/index.js.map +1 -0
  334. package/{src/components → components}/tooltip/style.js +14 -11
  335. package/components/tooltip/style.js.map +1 -0
  336. package/components/topojson-map/config.d.ts +99 -0
  337. package/components/topojson-map/config.js +42 -0
  338. package/components/topojson-map/config.js.map +1 -0
  339. package/components/topojson-map/index.d.ts +52 -0
  340. package/components/topojson-map/index.js +355 -0
  341. package/components/topojson-map/index.js.map +1 -0
  342. package/components/topojson-map/style.d.ts +11 -0
  343. package/{src/components/topojson-map/style.ts → components/topojson-map/style.js} +26 -33
  344. package/components/topojson-map/style.js.map +1 -0
  345. package/components/topojson-map/types.d.ts +78 -0
  346. package/components/topojson-map/types.js +80 -0
  347. package/components/topojson-map/types.js.map +1 -0
  348. package/components/topojson-map/utils.d.ts +3 -0
  349. package/components/topojson-map/utils.js +30 -0
  350. package/components/topojson-map/utils.js.map +1 -0
  351. package/components/vis-controls/config.d.ts +12 -0
  352. package/components/vis-controls/config.js +13 -0
  353. package/components/vis-controls/config.js.map +1 -0
  354. package/components/vis-controls/index.d.ts +14 -0
  355. package/components/vis-controls/index.js +52 -0
  356. package/components/vis-controls/index.js.map +1 -0
  357. package/components/vis-controls/style.d.ts +11 -0
  358. package/{src/components/vis-controls/style.ts → components/vis-controls/style.js} +27 -34
  359. package/components/vis-controls/style.js.map +1 -0
  360. package/components/vis-controls/types.d.ts +13 -0
  361. package/components/vis-controls/types.js +8 -0
  362. package/components/vis-controls/types.js.map +1 -0
  363. package/components/xy-labels/config.d.ts +48 -0
  364. package/components/xy-labels/config.js +25 -0
  365. package/components/xy-labels/config.js.map +1 -0
  366. package/components/xy-labels/index.d.ts +15 -0
  367. package/components/xy-labels/index.js +87 -0
  368. package/components/xy-labels/index.js.map +1 -0
  369. package/components/xy-labels/modules/label.d.ts +9 -0
  370. package/components/xy-labels/modules/label.js +107 -0
  371. package/components/xy-labels/modules/label.js.map +1 -0
  372. package/components/xy-labels/style.d.ts +5 -0
  373. package/{src/components/xy-labels/style.ts → components/xy-labels/style.js} +14 -15
  374. package/components/xy-labels/style.js.map +1 -0
  375. package/components/xy-labels/types.d.ts +23 -0
  376. package/components/xy-labels/types.js +9 -0
  377. package/components/xy-labels/types.js.map +1 -0
  378. package/components.d.ts +51 -0
  379. package/components.js +29 -0
  380. package/components.js.map +1 -0
  381. package/containers/single-container/config.d.ts +12 -0
  382. package/containers/single-container/config.js +12 -0
  383. package/containers/single-container/config.js.map +1 -0
  384. package/containers/single-container/index.d.ts +19 -0
  385. package/containers/single-container/index.js +128 -0
  386. package/containers/single-container/index.js.map +1 -0
  387. package/containers/xy-container/config.d.ts +99 -0
  388. package/containers/xy-container/config.js +30 -0
  389. package/containers/xy-container/config.js.map +1 -0
  390. package/containers/xy-container/index.d.ts +34 -0
  391. package/containers/xy-container/index.js +330 -0
  392. package/containers/xy-container/index.js.map +1 -0
  393. package/containers.d.ts +6 -0
  394. package/containers.js +4 -0
  395. package/containers.js.map +1 -0
  396. package/core/component/config.d.ts +58 -0
  397. package/core/component/config.js +14 -0
  398. package/core/component/config.js.map +1 -0
  399. package/core/component/index.d.ts +43 -0
  400. package/core/component/index.js +118 -0
  401. package/core/component/index.js.map +1 -0
  402. package/core/component/types.d.ts +2 -0
  403. package/core/component/types.js +2 -0
  404. package/core/component/types.js.map +1 -0
  405. package/core/config/index.d.ts +3 -0
  406. package/core/config/index.js +16 -0
  407. package/core/config/index.js.map +1 -0
  408. package/core/container/config.d.ts +48 -0
  409. package/core/container/config.js +29 -0
  410. package/core/container/config.js.map +1 -0
  411. package/core/container/index.d.ts +26 -0
  412. package/core/container/index.js +106 -0
  413. package/core/container/index.js.map +1 -0
  414. package/core/xy-component/config.d.ts +38 -0
  415. package/core/xy-component/config.js +20 -0
  416. package/core/xy-component/config.js.map +1 -0
  417. package/core/xy-component/index.d.ts +27 -0
  418. package/core/xy-component/index.js +74 -0
  419. package/core/xy-component/index.js.map +1 -0
  420. package/data-models/core.d.ts +6 -0
  421. package/data-models/core.js +14 -0
  422. package/data-models/core.js.map +1 -0
  423. package/data-models/graph.d.ts +24 -0
  424. package/data-models/graph.js +107 -0
  425. package/data-models/graph.js.map +1 -0
  426. package/data-models/map-graph.d.ts +21 -0
  427. package/data-models/map-graph.js +62 -0
  428. package/data-models/map-graph.js.map +1 -0
  429. package/data-models/map.d.ts +5 -0
  430. package/data-models/map.js +12 -0
  431. package/data-models/map.js.map +1 -0
  432. package/data-models/series.d.ts +6 -0
  433. package/data-models/series.js +19 -0
  434. package/data-models/series.js.map +1 -0
  435. package/index.d.ts +7 -0
  436. package/index.js +55 -0
  437. package/index.js.map +1 -0
  438. package/maps/china-provinces.json.js +140373 -0
  439. package/maps/fr-regions.json.js +14162 -0
  440. package/maps/germany-regions.json.js +35760 -0
  441. package/maps/ind-regions.json.js +290584 -0
  442. package/maps/uk-regions.json.js +96233 -0
  443. package/maps/us-counties.json.js +206318 -0
  444. package/maps/us-states.json.js +16345 -0
  445. package/maps/world-110m-alpha.json.js +251366 -0
  446. package/maps/world-simple.json.js +89428 -0
  447. package/maps/world-simplest.json.js +28175 -0
  448. package/maps.d.ts +60 -0
  449. package/maps.js +23 -0
  450. package/package.json +1 -1
  451. package/styles/colors.d.ts +7 -0
  452. package/styles/colors.js +24 -0
  453. package/styles/colors.js.map +1 -0
  454. package/styles/index.d.ts +7 -0
  455. package/styles/index.js +38 -0
  456. package/styles/index.js.map +1 -0
  457. package/styles/sizes.d.ts +2 -0
  458. package/{src/styles/sizes.ts → styles/sizes.js} +8 -6
  459. package/styles/sizes.js.map +1 -0
  460. package/types/accessor.d.ts +5 -0
  461. package/types/accessor.js +2 -0
  462. package/types/accessor.js.map +1 -0
  463. package/types/component.d.ts +13 -0
  464. package/types/component.js +14 -0
  465. package/types/component.js.map +1 -0
  466. package/types/curve.d.ts +40 -0
  467. package/types/curve.js +46 -0
  468. package/types/curve.js.map +1 -0
  469. package/types/data.d.ts +7 -0
  470. package/types/data.js +2 -0
  471. package/types/data.js.map +1 -0
  472. package/types/direction.d.ts +6 -0
  473. package/types/direction.js +10 -0
  474. package/types/direction.js.map +1 -0
  475. package/types/graph.d.ts +35 -0
  476. package/types/graph.js +2 -0
  477. package/types/graph.js.map +1 -0
  478. package/types/map.d.ts +4 -0
  479. package/types/map.js +2 -0
  480. package/types/map.js.map +1 -0
  481. package/types/misc.d.ts +8 -0
  482. package/types/position.d.ts +20 -0
  483. package/types/position.js +27 -0
  484. package/types/position.js.map +1 -0
  485. package/types/scale.d.ts +23 -0
  486. package/types/scale.js +27 -0
  487. package/types/scale.js.map +1 -0
  488. package/types/shape.d.ts +7 -0
  489. package/types/shape.js +11 -0
  490. package/types/shape.js.map +1 -0
  491. package/types/spacing.d.ts +6 -0
  492. package/types/spacing.js +2 -0
  493. package/types/spacing.js.map +1 -0
  494. package/types/svg.d.ts +18 -0
  495. package/types/svg.js +22 -0
  496. package/types/svg.js.map +1 -0
  497. package/types/symbol.d.ts +18 -0
  498. package/types/symbol.js +24 -0
  499. package/types/symbol.js.map +1 -0
  500. package/types/text.d.ts +47 -0
  501. package/types/text.js +26 -0
  502. package/types/text.js.map +1 -0
  503. package/types.d.ts +27 -0
  504. package/types.js +30 -0
  505. package/types.js.map +1 -0
  506. package/utils/color.d.ts +10 -0
  507. package/utils/color.js +32 -0
  508. package/utils/color.js.map +1 -0
  509. package/utils/d3.d.ts +3 -0
  510. package/utils/d3.js +16 -0
  511. package/utils/d3.js.map +1 -0
  512. package/utils/data.d.ts +45 -0
  513. package/utils/data.js +274 -0
  514. package/utils/data.js.map +1 -0
  515. package/utils/html.d.ts +1 -0
  516. package/utils/html.js +16 -0
  517. package/utils/html.js.map +1 -0
  518. package/utils/map.d.ts +2 -0
  519. package/utils/map.js +20 -0
  520. package/utils/map.js.map +1 -0
  521. package/utils/misc.d.ts +9 -0
  522. package/utils/misc.js +47 -0
  523. package/utils/misc.js.map +1 -0
  524. package/utils/path.d.ts +23 -0
  525. package/utils/path.js +144 -0
  526. package/utils/path.js.map +1 -0
  527. package/utils/scale.d.ts +1 -0
  528. package/utils/style.d.ts +6 -0
  529. package/utils/style.js +24 -0
  530. package/utils/style.js.map +1 -0
  531. package/utils/svg.d.ts +3 -0
  532. package/utils/text.d.ts +139 -0
  533. package/utils/text.js +443 -0
  534. package/utils/text.js.map +1 -0
  535. package/utils/type.d.ts +5 -0
  536. package/declaration.d.ts +0 -1
  537. package/index.ts +0 -1
  538. package/licences.txt +0 -43
  539. package/maps.ts +0 -1
  540. package/rollup.config.js +0 -71
  541. package/rules/ts-getter-setter.js +0 -35
  542. package/src/components/area/config.ts +0 -29
  543. package/src/components/area/index.ts +0 -133
  544. package/src/components/area/types.ts +0 -2
  545. package/src/components/axis/config.ts +0 -76
  546. package/src/components/axis/index.ts +0 -363
  547. package/src/components/axis/types.ts +0 -4
  548. package/src/components/brush/config.ts +0 -51
  549. package/src/components/brush/index.ts +0 -233
  550. package/src/components/brush/types.ts +0 -8
  551. package/src/components/bullet-legend/config.ts +0 -38
  552. package/src/components/bullet-legend/index.ts +0 -104
  553. package/src/components/bullet-legend/types.ts +0 -7
  554. package/src/components/chord-diagram/config.ts +0 -53
  555. package/src/components/chord-diagram/index.ts +0 -401
  556. package/src/components/chord-diagram/modules/label.ts +0 -155
  557. package/src/components/chord-diagram/modules/link.ts +0 -91
  558. package/src/components/chord-diagram/modules/node.ts +0 -80
  559. package/src/components/chord-diagram/types.ts +0 -68
  560. package/src/components/crosshair/config.ts +0 -48
  561. package/src/components/crosshair/index.ts +0 -220
  562. package/src/components/crosshair/types.ts +0 -15
  563. package/src/components/donut/config.ts +0 -65
  564. package/src/components/donut/index.ts +0 -148
  565. package/src/components/donut/modules/arc.ts +0 -86
  566. package/src/components/donut/types.ts +0 -17
  567. package/src/components/flow-legend/config.ts +0 -31
  568. package/src/components/flow-legend/index.ts +0 -103
  569. package/src/components/flow-legend/types.ts +0 -10
  570. package/src/components/free-brush/config.ts +0 -54
  571. package/src/components/free-brush/index.ts +0 -207
  572. package/src/components/free-brush/types.ts +0 -8
  573. package/src/components/graph/config.ts +0 -280
  574. package/src/components/graph/index.ts +0 -809
  575. package/src/components/graph/modules/layout-helpers.ts +0 -96
  576. package/src/components/graph/modules/layout.ts +0 -502
  577. package/src/components/graph/modules/link/helper.ts +0 -105
  578. package/src/components/graph/modules/link/index.ts +0 -302
  579. package/src/components/graph/modules/node/helper.ts +0 -162
  580. package/src/components/graph/modules/node/index.ts +0 -343
  581. package/src/components/graph/modules/panel/helper.ts +0 -160
  582. package/src/components/graph/modules/panel/index.ts +0 -137
  583. package/src/components/graph/modules/shape.ts +0 -108
  584. package/src/components/graph/modules/zoom-levels.ts +0 -6
  585. package/src/components/graph/style.ts +0 -72
  586. package/src/components/graph/types.ts +0 -152
  587. package/src/components/grouped-bar/config.ts +0 -40
  588. package/src/components/grouped-bar/index.ts +0 -325
  589. package/src/components/leaflet-flow-map/config.ts +0 -60
  590. package/src/components/leaflet-flow-map/index.ts +0 -279
  591. package/src/components/leaflet-flow-map/renderer-utils.ts +0 -14
  592. package/src/components/leaflet-flow-map/renderer.ts +0 -146
  593. package/src/components/leaflet-flow-map/types.ts +0 -18
  594. package/src/components/leaflet-map/config.ts +0 -234
  595. package/src/components/leaflet-map/index.ts +0 -808
  596. package/src/components/leaflet-map/leaflet.css +0 -625
  597. package/src/components/leaflet-map/modules/clusterBackground.ts +0 -34
  598. package/src/components/leaflet-map/modules/donut.ts +0 -37
  599. package/src/components/leaflet-map/modules/map.ts +0 -178
  600. package/src/components/leaflet-map/modules/node.ts +0 -208
  601. package/src/components/leaflet-map/modules/selectionRing.ts +0 -63
  602. package/src/components/leaflet-map/modules/utils.ts +0 -290
  603. package/src/components/leaflet-map/renderer/map-style.ts +0 -24
  604. package/src/components/leaflet-map/renderer/mapboxgl/mapboxgl-dark-theme.json +0 -35
  605. package/src/components/leaflet-map/renderer/mapboxgl/mapboxgl-light-theme.json +0 -35
  606. package/src/components/leaflet-map/renderer/mapboxgl/mapboxgl-settings.json +0 -2185
  607. package/src/components/leaflet-map/renderer/mapboxgl-layer.ts +0 -43
  608. package/src/components/leaflet-map/renderer/mapboxgl-utils.ts +0 -40
  609. package/src/components/leaflet-map/style.ts +0 -217
  610. package/src/components/leaflet-map/types.ts +0 -75
  611. package/src/components/line/config.ts +0 -34
  612. package/src/components/line/index.ts +0 -188
  613. package/src/components/line/types.ts +0 -3
  614. package/src/components/nested-donut/config.ts +0 -75
  615. package/src/components/nested-donut/index.ts +0 -176
  616. package/src/components/nested-donut/modules/arc.ts +0 -78
  617. package/src/components/nested-donut/modules/label.ts +0 -63
  618. package/src/components/nested-donut/style.ts +0 -82
  619. package/src/components/nested-donut/types.ts +0 -29
  620. package/src/components/sankey/config.ts +0 -195
  621. package/src/components/sankey/index.ts +0 -387
  622. package/src/components/sankey/modules/label.ts +0 -228
  623. package/src/components/sankey/modules/link.ts +0 -141
  624. package/src/components/sankey/modules/node.ts +0 -221
  625. package/src/components/sankey/types.ts +0 -95
  626. package/src/components/scatter/config.ts +0 -49
  627. package/src/components/scatter/index.ts +0 -220
  628. package/src/components/scatter/modules/point.ts +0 -123
  629. package/src/components/scatter/modules/utils.ts +0 -150
  630. package/src/components/scatter/types.ts +0 -21
  631. package/src/components/stacked-bar/config.ts +0 -42
  632. package/src/components/stacked-bar/index.ts +0 -267
  633. package/src/components/stacked-bar/types.ts +0 -5
  634. package/src/components/timeline/config.ts +0 -49
  635. package/src/components/timeline/index.ts +0 -302
  636. package/src/components/tooltip/config.ts +0 -69
  637. package/src/components/tooltip/index.ts +0 -220
  638. package/src/components/topojson-map/config.ts +0 -124
  639. package/src/components/topojson-map/index.ts +0 -436
  640. package/src/components/topojson-map/types.ts +0 -123
  641. package/src/components/topojson-map/utils.ts +0 -29
  642. package/src/components/vis-controls/config.ts +0 -16
  643. package/src/components/vis-controls/index.ts +0 -68
  644. package/src/components/vis-controls/types.ts +0 -14
  645. package/src/components/xy-labels/config.ts +0 -56
  646. package/src/components/xy-labels/index.ts +0 -109
  647. package/src/components/xy-labels/modules/label.ts +0 -140
  648. package/src/components/xy-labels/types.ts +0 -26
  649. package/src/components.ts +0 -56
  650. package/src/containers/single-container/config.ts +0 -15
  651. package/src/containers/single-container/index.ts +0 -150
  652. package/src/containers/xy-container/config.ts +0 -112
  653. package/src/containers/xy-container/index.ts +0 -407
  654. package/src/containers.ts +0 -6
  655. package/src/core/component/config.ts +0 -61
  656. package/src/core/component/index.ts +0 -154
  657. package/src/core/component/types.ts +0 -9
  658. package/src/core/config/index.ts +0 -12
  659. package/src/core/container/config.ts +0 -56
  660. package/src/core/container/index.ts +0 -136
  661. package/src/core/xy-component/config.ts +0 -46
  662. package/src/core/xy-component/index.ts +0 -90
  663. package/src/data-models/core.ts +0 -15
  664. package/src/data-models/graph.ts +0 -138
  665. package/src/data-models/map-graph.ts +0 -72
  666. package/src/data-models/map.ts +0 -18
  667. package/src/data-models/series.ts +0 -16
  668. package/src/index.ts +0 -7
  669. package/src/maps/china-provinces.json +0 -1
  670. package/src/maps/fr-regions.json +0 -1
  671. package/src/maps/germany-regions.json +0 -1
  672. package/src/maps/ind-regions.json +0 -1
  673. package/src/maps/uk-regions.json +0 -1
  674. package/src/maps/us-counties.json +0 -1
  675. package/src/maps/us-states.json +0 -1
  676. package/src/maps/world-110m-alpha.json +0 -1
  677. package/src/maps/world-simple.json +0 -1
  678. package/src/maps/world-simplest.json +0 -1
  679. package/src/maps.ts +0 -34
  680. package/src/styles/colors.ts +0 -28
  681. package/src/styles/index.ts +0 -38
  682. package/src/types/accessor.ts +0 -5
  683. package/src/types/component.ts +0 -15
  684. package/src/types/curve.ts +0 -62
  685. package/src/types/data.ts +0 -5
  686. package/src/types/direction.ts +0 -6
  687. package/src/types/graph.ts +0 -40
  688. package/src/types/map.ts +0 -5
  689. package/src/types/misc.ts +0 -10
  690. package/src/types/position.ts +0 -23
  691. package/src/types/scale.ts +0 -47
  692. package/src/types/shape.ts +0 -7
  693. package/src/types/spacing.ts +0 -6
  694. package/src/types/svg.ts +0 -32
  695. package/src/types/symbol.ts +0 -21
  696. package/src/types/text.ts +0 -71
  697. package/src/types.ts +0 -31
  698. package/src/utils/color.ts +0 -41
  699. package/src/utils/d3.ts +0 -15
  700. package/src/utils/data.ts +0 -328
  701. package/src/utils/html.ts +0 -13
  702. package/src/utils/map.ts +0 -29
  703. package/src/utils/misc.ts +0 -54
  704. package/src/utils/path.ts +0 -196
  705. package/src/utils/scale.ts +0 -1
  706. package/src/utils/style.ts +0 -37
  707. package/src/utils/svg.ts +0 -49
  708. package/src/utils/text.ts +0 -529
  709. package/src/utils/type.ts +0 -9
  710. package/tsconfig.json +0 -29
@@ -1,809 +0,0 @@
1
- import { min, max } from 'd3-array'
2
- import { Transition } from 'd3-transition'
3
- import { select, Selection, pointer } from 'd3-selection'
4
- import { zoom, zoomTransform, zoomIdentity, ZoomTransform, D3ZoomEvent, ZoomBehavior } from 'd3-zoom'
5
- import { drag, D3DragEvent } from 'd3-drag'
6
- import { interval, Timer } from 'd3-timer'
7
-
8
- // Core
9
- import { ComponentCore } from 'core/component'
10
- import { GraphDataModel } from 'data-models/graph'
11
-
12
- // Types
13
- import { GraphInputLink, GraphInputNode } from 'types/graph'
14
- import { Spacing } from 'types/spacing'
15
-
16
- // Utils
17
- import { isNumber, clamp, clean, unique, shallowDiff, isFunction, getBoolean } from 'utils/data'
18
- import { stringToHtmlId } from 'utils/misc'
19
- import { smartTransition } from 'utils/d3'
20
-
21
- // Local Types
22
- import { GraphNode, GraphLink, GraphLayoutType, GraphLinkArrowStyle, GraphPanel } from './types'
23
-
24
- // Config
25
- import { GraphConfig, GraphConfigInterface } from './config'
26
-
27
- // Styles
28
- import * as generalSelectors from './style'
29
- import * as nodeSelectors from './modules/node/style'
30
- import * as linkSelectors from './modules/link/style'
31
- import * as panelSelectors from './modules/panel/style'
32
-
33
- // Modules
34
- import { createNodes, updateNodes, removeNodes, zoomNodesThrottled, zoomNodes, updateSelectedNodes } from './modules/node'
35
- import { getMaxNodeSize, getNodeSize, getX, getY } from './modules/node/helper'
36
- import { createLinks, updateLinks, removeLinks, zoomLinksThrottled, zoomLinks, animateLinkFlow, updateSelectedLinks } from './modules/link'
37
- import { LINK_MARKER_WIDTH, LINK_MARKER_HEIGHT, getDoubleArrowPath, getArrowPath, getLinkColor, getLinkArrow } from './modules/link/helper'
38
- import { createPanels, updatePanels, removePanels } from './modules/panel'
39
- import { setPanelForNodes, updatePanelBBoxSize, updatePanelNumNodes, initPanels } from './modules/panel/helper'
40
- import { applyLayoutCircular, applyLayoutParallel, applyLayoutDagre, applyLayoutConcentric, applyLayoutForce, applyELKLayout } from './modules/layout'
41
-
42
- export class Graph<
43
- N extends GraphInputNode,
44
- L extends GraphInputLink,
45
- > extends ComponentCore<
46
- {nodes: N[]; links?: L[]},
47
- GraphConfig<N, L>,
48
- GraphConfigInterface<N, L>
49
- > {
50
- static selectors = {
51
- root: generalSelectors.root,
52
- background: generalSelectors.background,
53
- node: nodeSelectors.gNode,
54
- nodeShape: nodeSelectors.node,
55
- nodeGauge: nodeSelectors.nodeGauge,
56
- nodeSideLabel: nodeSelectors.sideLabelGroup,
57
- nodeLabel: nodeSelectors.label,
58
- link: linkSelectors.gLink,
59
- linkLine: linkSelectors.link,
60
- panel: panelSelectors.gPanel,
61
- panelRect: panelSelectors.panel,
62
- panelSelection: panelSelectors.panelSelection,
63
- panelLabel: panelSelectors.label,
64
- panelLabelText: panelSelectors.labelText,
65
- panelSideIcon: panelSelectors.sideIconGroup,
66
- panelSideIconShape: panelSelectors.sideIconShape,
67
- panelSideIconSymbol: panelSelectors.sideIconSymbol,
68
- }
69
-
70
- static nodeSelectors = nodeSelectors
71
- g: Selection<SVGGElement, unknown, null, undefined>
72
- config: GraphConfig<N, L> = new GraphConfig()
73
- datamodel: GraphDataModel<N, L, GraphNode<N, L>, GraphLink<N, L>> = new GraphDataModel()
74
- private _selectedNode: GraphNode<N>
75
- private _selectedLink: GraphLink<N, L>
76
-
77
- private _graphGroup: Selection<SVGGElement, unknown, SVGGElement, undefined>
78
- private _panelsGroup: Selection<SVGGElement, unknown, SVGGElement, undefined>
79
- private _linksGroup: Selection<SVGGElement, unknown, SVGGElement, undefined>
80
- private _nodesGroup: Selection<SVGGElement, unknown, SVGGElement, undefined>
81
- private _timer: Timer
82
-
83
- private _isFirstRender = true
84
- private _prevWidth: number
85
- private _prevHeight: number
86
- private _shouldRecalculateLayout = false
87
-
88
- private _shouldFitLayout: boolean
89
- private _shouldSetPanels = false
90
- private _panels: GraphPanel[]
91
-
92
- private _defs: Selection<SVGDefsElement, unknown, SVGGElement, undefined>
93
- private _backgroundRect: Selection<SVGRectElement, unknown, SVGGElement, undefined>
94
- private _zoomBehavior: ZoomBehavior<SVGGElement, unknown>
95
- private _isAutoFitDisabled = false
96
- private _scale: number
97
- private _initialTransform
98
- private _isDragging = false
99
-
100
- events = {
101
- [Graph.selectors.background]: {
102
- click: this._onBackgroundClick.bind(this),
103
- },
104
- [Graph.selectors.node]: {
105
- click: this._onNodeClick.bind(this),
106
- mouseover: this._onNodeMouseOver.bind(this),
107
- mouseout: this._onNodeMouseOut.bind(this),
108
- },
109
- [Graph.selectors.link]: {
110
- click: this._onLinkClick.bind(this),
111
- mouseover: this._onLinkMouseOver.bind(this),
112
- mouseout: this._onLinkMouseOut.bind(this),
113
- },
114
- }
115
-
116
- public get selectedNode (): GraphNode<N> {
117
- return this._selectedNode
118
- }
119
-
120
- public get selectedLink (): GraphLink<N, L> {
121
- return this._selectedLink
122
- }
123
-
124
- constructor (config?: GraphConfigInterface<N, L>) {
125
- super()
126
- if (config) this.config.init(config)
127
-
128
- this._backgroundRect = this.g.append('rect').attr('class', generalSelectors.background)
129
- this._graphGroup = this.g.append('g').attr('class', generalSelectors.graphGroup)
130
-
131
- this._zoomBehavior = zoom<SVGGElement, unknown>()
132
- .scaleExtent(this.config.zoomScaleExtent)
133
- .on('zoom', (e: D3ZoomEvent<SVGGElement, unknown>) => this._onZoom(e.transform, e))
134
-
135
- this._panelsGroup = this._graphGroup.append('g').attr('class', panelSelectors.panels)
136
- this._linksGroup = this._graphGroup.append('g').attr('class', linkSelectors.links)
137
- this._nodesGroup = this._graphGroup.append('g').attr('class', nodeSelectors.nodes)
138
-
139
- this._defs = this._graphGroup.append('defs')
140
-
141
- this._getMarkerId = this._getMarkerId.bind(this)
142
- }
143
-
144
- setData (data: {nodes: N[]; links?: L[]}): void {
145
- const { config } = this
146
-
147
- this.datamodel.nodeSort = config.nodeSort
148
- this.datamodel.data = data
149
- this._shouldRecalculateLayout = true
150
- if (config.layoutAutofit) this._shouldFitLayout = true
151
- this._shouldSetPanels = true
152
-
153
- this._addSVGDefs()
154
- }
155
-
156
- setConfig (config: GraphConfigInterface<N, L>): void {
157
- this._shouldFitLayout = this._shouldFitLayout || this.config.layoutType !== config.layoutType
158
- this._shouldRecalculateLayout = this._shouldRecalculateLayout || this._shouldLayoutRecalculate(config)
159
-
160
- super.setConfig(config)
161
- this._shouldSetPanels = true
162
- }
163
-
164
- get bleed (): Spacing {
165
- const extraPadding = 50 // Extra padding to take into account labels and selection outlines
166
- return { top: extraPadding, bottom: extraPadding, left: extraPadding, right: extraPadding }
167
- }
168
-
169
- _render (customDuration?: number): void {
170
- const { config: { disableZoom, duration, layoutAutofit, panels }, datamodel } = this
171
- if (!datamodel.nodes && !datamodel.links) return
172
- const animDuration = isNumber(customDuration) ? customDuration : duration
173
-
174
- this._backgroundRect
175
- .attr('width', this._width)
176
- .attr('height', this._height)
177
- .attr('opacity', 0)
178
-
179
- if ((this._prevWidth !== this._width || this._prevHeight !== this._height) && layoutAutofit) {
180
- // Fit layout on resize
181
- this._shouldFitLayout = true
182
- this._prevWidth = this._width
183
- this._prevHeight = this._height
184
- }
185
-
186
- // Apply layout and render
187
- this._calculateLayout().then((isFirstRender) => {
188
- // If the component has been destroyed while the layout calculation
189
- // was in progress, we cancel the render
190
- if (this.isDestroyed()) return
191
-
192
- if (this._shouldSetPanels) {
193
- smartTransition(this._panelsGroup, duration / 2)
194
- .style('opacity', panels?.length ? 1 : 0)
195
-
196
- this._panels = initPanels(panels)
197
- setPanelForNodes(this._panels, datamodel.nodes, this.config)
198
- this._shouldSetPanels = false
199
- }
200
-
201
- if (isFirstRender) {
202
- this._fit()
203
- this._shouldFitLayout = false
204
- } else if (this._shouldFitLayout && !this._isAutoFitDisabled) {
205
- this._fit(duration)
206
- this._shouldFitLayout = false
207
- }
208
-
209
- // Draw
210
- this._drawNodes(animDuration)
211
- this._drawLinks(animDuration)
212
-
213
- // Select Links / Nodes
214
- this._resetSelection()
215
- if (this.config.selectedNodeId) {
216
- const selectedNode = datamodel.nodes.find(node => node.id === this.config.selectedNodeId)
217
- this._selectNode(selectedNode)
218
- }
219
-
220
- if (this.config.selectedLinkId) {
221
- const selectedLink = datamodel.links.find(link => link.id === this.config.selectedLinkId)
222
- this._selectLink(selectedLink)
223
- }
224
-
225
- // Link flow animation timer
226
- if (!this._timer) {
227
- const refreshRateMs = 35
228
- this._timer = interval(this._onLinkFlowTimerFrame.bind(this), refreshRateMs)
229
- }
230
-
231
- // Zoom
232
- if (disableZoom) this.g.on('.zoom', null)
233
- else this.g.call(this._zoomBehavior).on('dblclick.zoom', null)
234
-
235
- if (!this._isFirstRender && !disableZoom) {
236
- const transform = zoomTransform(this.g.node())
237
- this._onZoom(transform)
238
- }
239
-
240
- // While the graph is animating we disable pointer events on the graph group
241
- if (animDuration) { this._graphGroup.attr('pointer-events', 'none') }
242
- smartTransition(this._graphGroup, animDuration)
243
- .on('end interrupt', () => {
244
- this._graphGroup.attr('pointer-events', null)
245
- })
246
-
247
- // We need to set up events and attributes again because the rendering might have been delayed by the layout
248
- // calculation and they were not set up properly (see the render function of `ComponentCore`)
249
- this._setUpComponentEventsThrottled()
250
- this._setCustomAttributesThrottled()
251
- })
252
-
253
-
254
- this._isFirstRender = false
255
- }
256
-
257
- private _drawNodes (duration: number): void {
258
- const { config, datamodel } = this
259
-
260
- const nodes: GraphNode<N>[] = datamodel.nodes
261
- const nodeGroups = this._nodesGroup
262
- .selectAll<SVGGElement, GraphNode<N>>(`.${nodeSelectors.gNode}:not(.${nodeSelectors.gNodeExit})`)
263
- .data(nodes, d => String(d._id))
264
-
265
- const nodeGroupsEnter = nodeGroups.enter().append('g')
266
- .attr('class', nodeSelectors.gNode)
267
- .call(createNodes, config, duration)
268
-
269
- const nodeGroupsMerged = nodeGroups.merge(nodeGroupsEnter)
270
- const nodeUpdateSelection = updateNodes(nodeGroupsMerged, config, duration, this._scale)
271
- this._drawPanels(nodeUpdateSelection, duration)
272
-
273
- const nodesGroupExit = nodeGroups.exit<GraphNode<N>>()
274
- nodesGroupExit
275
- .classed(nodeSelectors.gNodeExit, true)
276
- .call(removeNodes, config, duration)
277
-
278
- // eslint-disable-next-line @typescript-eslint/no-this-alias
279
- const thisRef = this
280
- if (!config.disableDrag) {
281
- const dragBehaviour = drag<SVGGElement, GraphNode<N>>()
282
- .on('start', function (event, d) { thisRef._onDragStarted(d, event, select(this)) })
283
- .on('drag', function (event, d) { thisRef._onDragged(d, event, nodeGroupsMerged) })
284
- .on('end', function (event, d) { thisRef._onDragEnded(d, event, select(this)) })
285
- nodeGroupsMerged.call(dragBehaviour)
286
- } else {
287
- nodeGroupsMerged.on('.drag', null)
288
- }
289
- }
290
-
291
- private _drawLinks (duration: number): void {
292
- const { config, datamodel: { links } } = this
293
-
294
- const linkGroups = this._linksGroup
295
- .selectAll<SVGGElement, GraphLink<N, L>>(`.${linkSelectors.gLink}`)
296
- .data(links, (d: GraphLink<N, L>) => String(d._id))
297
-
298
- const linkGroupsEnter = linkGroups.enter().append('g')
299
- .attr('class', linkSelectors.gLink)
300
- .call(createLinks, config, duration)
301
-
302
- const linkGroupsMerged = linkGroups.merge(linkGroupsEnter)
303
- linkGroupsMerged.call(updateLinks, config, duration, this._scale, this._getMarkerId)
304
-
305
- const linkGroupsExit = linkGroups.exit<GraphLink<N, L>>()
306
- linkGroupsExit
307
- .attr('class', linkSelectors.gLinkExit)
308
- .call(removeLinks, config, duration)
309
- }
310
-
311
- private _drawPanels (
312
- nodeUpdateSelection: Selection<SVGGElement, GraphNode<N>, SVGGElement, unknown> | Transition<SVGGElement, GraphNode<N>, SVGGElement, unknown>,
313
- duration: number
314
- ): void {
315
- const { config } = this
316
- if (!this._panels) return
317
-
318
- const selection = ((nodeUpdateSelection as Transition<SVGGElement, GraphNode<N>, SVGGElement, unknown>).duration)
319
- ? (nodeUpdateSelection as Transition<SVGGElement, GraphNode<N>, SVGGElement, unknown>).selection()
320
- : nodeUpdateSelection as Selection<SVGGElement, GraphNode<N>, SVGGElement, unknown>
321
-
322
- updatePanelNumNodes(selection, this._panels, config)
323
- updatePanelBBoxSize(selection, this._panels, config)
324
- const panelData = this._panels.filter(p => p._numNodes)
325
- const panelGroup = this._panelsGroup
326
- .selectAll<SVGGElement, GraphPanel>(`.${panelSelectors.gPanel}`)
327
- .data(panelData, p => p.label)
328
-
329
- const panelGroupExit = panelGroup.exit<GraphPanel<N, L>>()
330
- panelGroupExit.call(removePanels, config, duration)
331
-
332
- const panelGroupEnter = panelGroup.enter().append('g')
333
- .attr('class', panelSelectors.gPanel)
334
- .call(createPanels, selection)
335
- const panelGroupMerged = panelGroup.merge(panelGroupEnter)
336
-
337
- this._updatePanels(panelGroupMerged, duration)
338
- }
339
-
340
- private _updatePanels (panelToUpdate: Selection<SVGGElement, GraphPanel, SVGGElement, unknown>, duration: number): void {
341
- const { config } = this
342
- if (!this._panels) return
343
-
344
- panelToUpdate.call(updatePanels, config, duration)
345
- }
346
-
347
- private async _calculateLayout (): Promise<boolean> {
348
- const { config, datamodel } = this
349
-
350
- const firstRender = this._isFirstRender
351
- if (this._shouldRecalculateLayout) {
352
- switch (config.layoutType) {
353
- case GraphLayoutType.Parallel:
354
- applyLayoutParallel(datamodel, config, this._width, this._height)
355
- break
356
- case GraphLayoutType.ParallelHorizontal:
357
- applyLayoutParallel(datamodel, config, this._width, this._height, 'horizontal')
358
- break
359
- case GraphLayoutType.Dagre:
360
- await applyLayoutDagre(datamodel, config, this._width)
361
- break
362
- case GraphLayoutType.Force:
363
- await applyLayoutForce(datamodel, config, this._width)
364
- break
365
- case GraphLayoutType.Concentric:
366
- applyLayoutConcentric(datamodel, config, this._width, this._height)
367
- break
368
- case GraphLayoutType.Elk:
369
- await applyELKLayout(datamodel, config, this._width)
370
- break
371
- case GraphLayoutType.Circular:
372
- default:
373
- applyLayoutCircular(datamodel, config, this._width, this._height)
374
- break
375
- }
376
-
377
- this._shouldRecalculateLayout = false
378
- }
379
-
380
- return firstRender
381
- }
382
-
383
- private _fit (duration = 0): void {
384
- const { datamodel: { nodes } } = this
385
- if (nodes?.length && this.g?.size()) {
386
- const transform = this._getTransform(nodes)
387
- smartTransition(this.g, duration)
388
- .call(this._zoomBehavior.transform, transform)
389
- this._onZoom(transform)
390
- } else {
391
- console.warn('Unovis | Graph: Node data is not defined. Check if the component has been initialized.')
392
- }
393
- }
394
-
395
- private _getTransform (nodes: GraphNode<N>[]): ZoomTransform {
396
- const { nodeSize, zoomScaleExtent } = this.config
397
- const { left, top, right, bottom } = this.bleed
398
-
399
- const maxNodeSize = getMaxNodeSize(nodes, nodeSize)
400
- const w = this._width
401
- const h = this._height
402
- const xExtent = [
403
- min(nodes, d => getX(d) - maxNodeSize / 2 - (max(d._panels?.map(p => p._padding.left)) || 0)),
404
- max(nodes, d => getX(d) + maxNodeSize / 2 + (max(d._panels?.map(p => p._padding.right)) || 0)),
405
- ]
406
- const yExtent = [
407
- min(nodes, d => getY(d) - maxNodeSize / 2 - (max(d._panels?.map(p => p._padding.top)) || 0)),
408
- max(nodes, d => getY(d) + maxNodeSize / 2 + (max(d._panels?.map(p => p._padding.bottom)) || 0)),
409
- ]
410
-
411
- const xScale = w / (xExtent[1] - xExtent[0] + left + right)
412
- const yScale = h / (yExtent[1] - yExtent[0] + top + bottom)
413
-
414
- const clampedScale = clamp(min([xScale, yScale]), zoomScaleExtent[0], zoomScaleExtent[1])
415
-
416
- const xCenter = (xExtent[1] + xExtent[0]) / 2
417
- const yCenter = (yExtent[1] + yExtent[0]) / 2
418
- const translateX = this._width / 2 - xCenter * clampedScale
419
- const translateY = this._height / 2 - yCenter * clampedScale
420
- const transform = zoomIdentity
421
- .translate(translateX, translateY)
422
- .scale(clampedScale)
423
-
424
- return transform
425
- }
426
-
427
- private _selectNode (node: GraphNode<N>): void {
428
- const { datamodel: { nodes, links } } = this
429
- if (!node) console.warn('Unovis | Graph: Select Node: Not found')
430
- this._selectedNode = node
431
-
432
- // Apply grey out
433
- // Grey out all nodes
434
- nodes.forEach(n => {
435
- n._state.selected = false
436
- n._state.greyout = true
437
- })
438
-
439
- // Grey out all links
440
- links.forEach(l => {
441
- l._state.greyout = true
442
- l._state.selected = false
443
- })
444
-
445
- // Highlight selected
446
- if (node) {
447
- node._state.selected = true
448
- node._state.greyout = false
449
-
450
- const connectedLinks = links.filter(l => (l.source === node) || (l.target === node))
451
- connectedLinks.forEach(l => {
452
- const source = l.source as GraphNode<N>
453
- const target = l.target as GraphNode<N>
454
- source._state.greyout = false
455
- target._state.greyout = false
456
- l._state.greyout = false
457
- })
458
- }
459
-
460
- this._updateSelectedElements()
461
- }
462
-
463
- private _selectLink (link: GraphLink<N, L>): void {
464
- const { datamodel: { nodes, links } } = this
465
- if (!link) console.warn('Unovis: Graph: Select Link: Not found')
466
- this._selectedLink = link
467
- const selectedLinkSource = link?.source as GraphNode<N>
468
- const selectedLinkTarget = link?.target as GraphNode<N>
469
-
470
- // Apply grey out
471
- nodes.forEach(n => {
472
- n._state.selected = false
473
- n._state.greyout = true
474
- if (selectedLinkTarget?._id === n._id || selectedLinkSource?._id === n._id) {
475
- link._state.greyout = false
476
- }
477
- })
478
-
479
- links.forEach(l => {
480
- l._state.greyout = true
481
- const source = l.source as GraphNode<N>
482
- const target = l.target as GraphNode<N>
483
- if ((source._id === selectedLinkSource?._id) && (target._id === selectedLinkTarget?._id)) {
484
- source._state.greyout = false
485
- target._state.greyout = false
486
- l._state.greyout = false
487
- }
488
- })
489
-
490
- links.forEach(l => {
491
- delete l._state.selected
492
- })
493
-
494
- if (link) link._state.selected = true
495
-
496
- this._updateSelectedElements()
497
- }
498
-
499
- private _resetSelection (): void {
500
- const { datamodel: { nodes, links } } = this
501
- this._selectedNode = undefined
502
- this._selectedLink = undefined
503
-
504
- // Disable Grayout
505
- nodes.forEach(n => {
506
- delete n._state.selected
507
- delete n._state.greyout
508
- })
509
- links.forEach(l => {
510
- delete l._state.greyout
511
- delete l._state.selected
512
- })
513
-
514
- this._updateSelectedElements()
515
- }
516
-
517
- private _updateSelectedElements (): void {
518
- const { config } = this
519
-
520
- const linkElements = this._linksGroup.selectAll<SVGGElement, GraphLink<N, L>>(`.${linkSelectors.gLink}`)
521
- linkElements.call(updateSelectedLinks, config, this._scale)
522
-
523
- const nodeElements = this._nodesGroup.selectAll<SVGGElement, GraphNode<N>>(`.${nodeSelectors.gNode}`)
524
- nodeElements.call(updateSelectedNodes, config)
525
-
526
- // this._drawPanels(nodeElements, 0)
527
- }
528
-
529
- private _onBackgroundClick (): void {
530
- this._resetSelection()
531
- }
532
-
533
- // eslint-disable-next-line @typescript-eslint/no-empty-function
534
- private _onNodeClick (d: GraphNode<N>): void {
535
- }
536
-
537
- // eslint-disable-next-line @typescript-eslint/no-empty-function
538
- private _onNodeMouseOut (d: GraphNode<N>): void {
539
- }
540
-
541
- // eslint-disable-next-line @typescript-eslint/no-empty-function
542
- private _onNodeMouseOver (d: GraphNode<N>): void {
543
- }
544
-
545
- // eslint-disable-next-line @typescript-eslint/no-empty-function
546
- private _onLinkClick (d: GraphLink<N, L>): void {
547
- }
548
-
549
- private _onLinkMouseOver (d: GraphLink<N, L>): void {
550
- if (this._isDragging) return
551
-
552
- d._state.hovered = true
553
- this._updateSelectedElements()
554
- }
555
-
556
- private _onLinkMouseOut (d: GraphLink<N, L>): void {
557
- if (this._isDragging) return
558
-
559
- delete d._state.hovered
560
- this._updateSelectedElements()
561
- }
562
-
563
- private _onLinkFlowTimerFrame (elapsed = 0): void {
564
- const { config: { linkFlow, linkFlowAnimDuration }, datamodel: { links } } = this
565
-
566
- const hasLinksWithFlow = links.some((d, i) => getBoolean(d, linkFlow, i))
567
- if (!hasLinksWithFlow) return
568
-
569
- const t = (elapsed % linkFlowAnimDuration) / linkFlowAnimDuration
570
- const linkElements = this._linksGroup.selectAll<SVGGElement, GraphLink<N, L>>(`.${linkSelectors.gLink}`)
571
-
572
- const linksToAnimate = linkElements.filter(d => !d._state.greyout)
573
- linksToAnimate.each(d => { d._state.flowAnimTime = t })
574
- animateLinkFlow(linksToAnimate, this.config, this._scale)
575
- }
576
-
577
- private _onZoom (t: ZoomTransform, event?: D3ZoomEvent<SVGGElement, unknown>): void {
578
- const { config, datamodel: { nodes } } = this
579
- const transform = t || event.transform
580
- this._scale = transform.k
581
- this._graphGroup.attr('transform', transform.toString())
582
- if (isFunction(config.onZoom)) config.onZoom(this._scale, config.zoomScaleExtent)
583
-
584
- if (!this._initialTransform) this._initialTransform = transform
585
-
586
- // If the event was triggered by a mouse interaction (pan or zoom) we don't
587
- // refit the layout after recalculation (e.g. on container resize)
588
- if (event?.sourceEvent) {
589
- const diff = Object.keys(transform).reduce((acc, prop) => {
590
- const val = transform[prop]
591
- const dVal = Math.abs(val - this._initialTransform[prop])
592
- return prop === 'k' ? 2 * dVal : dVal / 50
593
- }, 0)
594
-
595
- if (diff > config.layoutAutofitTolerance) this._isAutoFitDisabled = true
596
- else this._isAutoFitDisabled = false
597
- }
598
-
599
- this._nodesGroup.selectAll<SVGGElement, GraphNode<N, L>>(`.${nodeSelectors.gNode}`)
600
- .call(
601
- (nodes.length > config.zoomThrottledUpdateNodeThreshold ? zoomNodesThrottled : zoomNodes) as typeof zoomNodes,
602
- config,
603
- this._scale
604
- )
605
-
606
- this._linksGroup.selectAll<SVGGElement, GraphLink<N, L>>(`.${linkSelectors.gLink}`)
607
- .call(
608
- (nodes.length > config.zoomThrottledUpdateNodeThreshold ? zoomLinksThrottled : zoomLinks) as typeof zoomLinks,
609
- config,
610
- this._scale,
611
- this._getMarkerId
612
- )
613
- }
614
-
615
- private _onDragStarted (
616
- d: GraphNode<N>,
617
- event: D3DragEvent<SVGGElement, GraphNode<N>, unknown>,
618
- nodeSelection: Selection<SVGGElement, GraphNode<N>, SVGGElement, unknown>
619
- ): void {
620
- const { config } = this
621
- this._isDragging = true
622
- d._state.isDragged = true
623
- nodeSelection.call(updateNodes, config, 0, this._scale)
624
- }
625
-
626
- private _onDragged (
627
- d: GraphNode<N>,
628
- event: D3DragEvent<SVGGElement, GraphNode<N>, unknown>,
629
- allNodesSelection: Selection<SVGGElement, GraphNode<N>, SVGGElement, unknown>
630
- ): void {
631
- const { config } = this
632
- const transform = zoomTransform(this.g.node())
633
- const scale = transform.k
634
-
635
- // Prevent the node from being dragged offscreen or outside its panel
636
- const panels = this._panels?.filter(p => p.nodes.includes(d._id)) ?? []
637
- const nodeSizeValue = getNodeSize(d, config.nodeSize, d._index)
638
- const maxY = min([(this._height - transform.y) / scale, ...panels.map(p => p._y + p._height)]) - nodeSizeValue / 2
639
- const maxX = min([(this._width - transform.x) / scale, ...panels.map(p => p._x + p._width)]) - nodeSizeValue / 2
640
- const minY = max([-transform.y / scale, ...panels.map(p => p._y)]) + nodeSizeValue / 2
641
- const minX = max([-transform.x / scale, ...panels.map(p => p._x)]) + nodeSizeValue / 2
642
-
643
- let [x, y] = pointer(event, this._graphGroup.node())
644
- if (y < minY) y = minY
645
- else if (y > maxY) y = maxY
646
- if (x < minX) x = minX
647
- else if (x > maxX) x = maxX
648
-
649
- // Snap to Layout
650
- if (Math.sqrt(Math.pow(x - d.x, 2) + Math.pow(y - d.y, 2)) < 15) {
651
- x = d.x
652
- y = d.y
653
- }
654
-
655
- // Assign coordinates
656
- d._state.fx = x
657
- d._state.fy = y
658
- if (d._state.fx === d.x) delete d._state.fx
659
- if (d._state.fy === d.y) delete d._state.fy
660
-
661
- // Update affected DOM elements
662
- const nodeSelection = this._nodesGroup.selectAll<SVGGElement, GraphNode<N>>(`.${nodeSelectors.gNode}`)
663
- const nodeToUpdate = nodeSelection.filter((n: GraphNode<N>) => n._id === d._id)
664
- nodeToUpdate.call(updateNodes, config, 0, scale)
665
-
666
- const linkSelection = this._linksGroup.selectAll<SVGGElement, GraphLink<N, L>>(`.${linkSelectors.gLink}`)
667
- const linksToUpdate = linkSelection.filter((l: L) => {
668
- const source = l.source as GraphNode<N>
669
- const target = l.target as GraphNode<N>
670
- return source._id === d._id || target._id === d._id
671
- })
672
- linksToUpdate.call(updateLinks, config, 0, scale, this._getMarkerId)
673
- const linksToAnimate = linksToUpdate.filter(d => d._state.greyout)
674
- if (linksToAnimate.size()) animateLinkFlow(linksToAnimate, config, this._scale)
675
- }
676
-
677
- private _onDragEnded (
678
- d: GraphNode<N>,
679
- event: D3DragEvent<SVGGElement, GraphNode<N>, unknown>,
680
- nodeSelection: Selection<SVGGElement, GraphNode<N>, SVGGElement, unknown>
681
- ): void {
682
- const { config } = this
683
- this._isDragging = false
684
- d._state.isDragged = false
685
- nodeSelection.call(updateNodes, config, 0, this._scale)
686
- }
687
-
688
- private _shouldLayoutRecalculate (nextConfig: GraphConfigInterface<N, L>): boolean {
689
- const { config } = this
690
- if (config.layoutType !== nextConfig.layoutType) return true
691
- if (config.layoutNonConnectedAside !== nextConfig.layoutNonConnectedAside) return true
692
-
693
- if (config.layoutType === GraphLayoutType.Force) {
694
- const forceSettingsDiff = shallowDiff(config.forceLayoutSettings, nextConfig.forceLayoutSettings)
695
- if (Object.keys(forceSettingsDiff).length) return true
696
- }
697
-
698
- if (config.layoutType === GraphLayoutType.Dagre) {
699
- const dagreSettingsDiff = shallowDiff(config.dagreLayoutSettings, nextConfig.dagreLayoutSettings)
700
- if (Object.keys(dagreSettingsDiff).length) return true
701
- }
702
-
703
- if (
704
- config.layoutType === GraphLayoutType.Parallel ||
705
- config.layoutType === GraphLayoutType.ParallelHorizontal ||
706
- config.layoutType === GraphLayoutType.Concentric
707
- ) {
708
- if (config.layoutGroupOrder !== nextConfig.layoutGroupOrder) return true
709
- if (config.layoutParallelNodesPerColumn !== nextConfig.layoutParallelNodesPerColumn) return true
710
- if (config.layoutParallelSortConnectionsByGroup !== nextConfig.layoutParallelSortConnectionsByGroup) return true
711
- }
712
-
713
- return false
714
- }
715
-
716
- private _getMarkerId (d: GraphLink, color?: string, arrow?: GraphLinkArrowStyle): string {
717
- const { config } = this
718
- const c = color ?? getLinkColor(d, config)
719
- const a = arrow ?? getLinkArrow(d, this._scale, config)
720
- return a && c ? `${this.uid}-${stringToHtmlId(c)}-${a}` : null
721
- }
722
-
723
- private _addSVGDefs (): void {
724
- const { datamodel: { links } } = this
725
-
726
- // Clean up old defs
727
- this._defs.selectAll('*').remove()
728
-
729
- // Get all variations of link colors to create markers
730
- const linkColors = unique(clean(
731
- links.map(d => getLinkColor(d, this.config))
732
- ))
733
-
734
- this._defs.selectAll('marker')
735
- .data([
736
- ...linkColors.map(d => ({ color: d, arrow: GraphLinkArrowStyle.Single })), // Single-sided arrows
737
- ...linkColors.map(d => ({ color: d, arrow: GraphLinkArrowStyle.Double })), // Double-sided arrows
738
- ]).enter()
739
- .append('marker')
740
- .attr('id', d => this._getMarkerId(null, d.color, d.arrow))
741
- .attr('orient', 'auto')
742
- .attr('markerWidth', d => d.arrow === GraphLinkArrowStyle.Double ? LINK_MARKER_WIDTH * 2 : LINK_MARKER_WIDTH)
743
- .attr('markerHeight', d => d.arrow === GraphLinkArrowStyle.Double ? LINK_MARKER_HEIGHT * 2 : LINK_MARKER_HEIGHT)
744
- .attr('markerUnits', 'userSpaceOnUse')
745
- .attr('refX', LINK_MARKER_WIDTH - LINK_MARKER_HEIGHT / 2)
746
- .attr('refY', LINK_MARKER_HEIGHT - LINK_MARKER_HEIGHT / 2)
747
- .html(d => {
748
- return `
749
- <path
750
- d="${d.arrow === GraphLinkArrowStyle.Double ? getDoubleArrowPath() : getArrowPath()}"
751
- fill="${d.color ?? null}"
752
- />
753
- `
754
- })
755
- }
756
-
757
- public zoomIn (increment = 0.3): void {
758
- const scaleBy = 1 + increment
759
- smartTransition(this.g, this.config.duration / 2)
760
- .call(this._zoomBehavior.scaleBy, scaleBy)
761
- }
762
-
763
- public zoomOut (increment = 0.3): void {
764
- const scaleBy = 1 - increment
765
- smartTransition(this.g, this.config.duration / 2)
766
- .call(this._zoomBehavior.scaleBy, scaleBy)
767
- }
768
-
769
- public setZoom (zoomLevel: number): void {
770
- smartTransition(this.g, this.config.duration / 2)
771
- .call(this._zoomBehavior.scaleTo, zoomLevel)
772
- }
773
-
774
- public fitView (): void {
775
- this._fit(this.config.duration / 2)
776
- }
777
-
778
- /** Enable automatic fitting to container if it was disabled due to previous zoom / pan interactions */
779
- public resetAutofitState (): void {
780
- this._isAutoFitDisabled = false
781
- }
782
-
783
- /** Get current coordinates of the nodes as an array of { id: string; x: number; y: number } objects */
784
- public getNodesCoordinates (): { id: string; x: number; y: number }[] {
785
- const { datamodel: { nodes } } = this
786
- return nodes.map(n => ({
787
- id: n._id,
788
- x: n.x,
789
- y: n.y,
790
- }))
791
- }
792
-
793
- /** Get node coordinates by id as { id: string; x: number; y: number } */
794
- public getNodeCoordinatesById (id: string): { id: string; x: number; y: number } | undefined {
795
- const { datamodel: { nodes } } = this
796
- const node = nodes.find(n => n._id === id)
797
-
798
- if (!node) {
799
- console.warn(`Unovis | Graph: Node ${id} not found`)
800
- return undefined
801
- } else {
802
- return {
803
- id: node._id,
804
- x: node.x,
805
- y: node.y,
806
- }
807
- }
808
- }
809
- }