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

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/declaration.d.ts +1 -0
  2. package/index.ts +1 -0
  3. package/licences.txt +43 -0
  4. package/maps.ts +1 -0
  5. package/package.json +1 -1
  6. package/rollup.config.js +71 -0
  7. package/rules/ts-getter-setter.js +35 -0
  8. package/src/components/area/config.ts +29 -0
  9. package/src/components/area/index.ts +133 -0
  10. package/{components/area/style.js → src/components/area/style.ts} +9 -10
  11. package/src/components/area/types.ts +2 -0
  12. package/src/components/axis/config.ts +76 -0
  13. package/src/components/axis/index.ts +363 -0
  14. package/{components/axis/style.js → src/components/axis/style.ts} +27 -22
  15. package/src/components/axis/types.ts +4 -0
  16. package/src/components/brush/config.ts +51 -0
  17. package/src/components/brush/index.ts +233 -0
  18. package/{components/brush/style.js → src/components/brush/style.ts} +15 -14
  19. package/src/components/brush/types.ts +8 -0
  20. package/src/components/bullet-legend/config.ts +38 -0
  21. package/src/components/bullet-legend/index.ts +104 -0
  22. package/{components/bullet-legend/style.js → src/components/bullet-legend/style.ts} +18 -16
  23. package/src/components/bullet-legend/types.ts +7 -0
  24. package/src/components/chord-diagram/config.ts +53 -0
  25. package/src/components/chord-diagram/index.ts +401 -0
  26. package/src/components/chord-diagram/modules/label.ts +155 -0
  27. package/src/components/chord-diagram/modules/link.ts +91 -0
  28. package/src/components/chord-diagram/modules/node.ts +80 -0
  29. package/{components/chord-diagram/style.js → src/components/chord-diagram/style.ts} +39 -30
  30. package/src/components/chord-diagram/types.ts +68 -0
  31. package/src/components/crosshair/config.ts +48 -0
  32. package/src/components/crosshair/index.ts +220 -0
  33. package/{components/crosshair/style.js → src/components/crosshair/style.ts} +12 -12
  34. package/src/components/crosshair/types.ts +15 -0
  35. package/src/components/donut/config.ts +65 -0
  36. package/src/components/donut/index.ts +148 -0
  37. package/src/components/donut/modules/arc.ts +86 -0
  38. package/{components/donut/style.js → src/components/donut/style.ts} +20 -18
  39. package/src/components/donut/types.ts +17 -0
  40. package/src/components/flow-legend/config.ts +31 -0
  41. package/src/components/flow-legend/index.ts +103 -0
  42. package/{components/flow-legend/style.js → src/components/flow-legend/style.ts} +25 -21
  43. package/src/components/flow-legend/types.ts +10 -0
  44. package/src/components/free-brush/config.ts +54 -0
  45. package/src/components/free-brush/index.ts +207 -0
  46. package/{components/free-brush/style.js → src/components/free-brush/style.ts} +12 -12
  47. package/src/components/free-brush/types.ts +8 -0
  48. package/src/components/graph/config.ts +280 -0
  49. package/src/components/graph/index.ts +809 -0
  50. package/src/components/graph/modules/layout-helpers.ts +96 -0
  51. package/src/components/graph/modules/layout.ts +502 -0
  52. package/src/components/graph/modules/link/helper.ts +105 -0
  53. package/src/components/graph/modules/link/index.ts +302 -0
  54. package/{components/graph/modules/link/style.js → src/components/graph/modules/link/style.ts} +45 -34
  55. package/src/components/graph/modules/node/helper.ts +162 -0
  56. package/src/components/graph/modules/node/index.ts +343 -0
  57. package/{components/graph/modules/node/style.js → src/components/graph/modules/node/style.ts} +72 -52
  58. package/src/components/graph/modules/panel/helper.ts +160 -0
  59. package/src/components/graph/modules/panel/index.ts +137 -0
  60. package/{components/graph/modules/panel/style.js → src/components/graph/modules/panel/style.ts} +42 -32
  61. package/src/components/graph/modules/shape.ts +108 -0
  62. package/src/components/graph/modules/zoom-levels.ts +6 -0
  63. package/src/components/graph/style.ts +72 -0
  64. package/src/components/graph/types.ts +152 -0
  65. package/src/components/grouped-bar/config.ts +40 -0
  66. package/src/components/grouped-bar/index.ts +325 -0
  67. package/{components/grouped-bar/style.js → src/components/grouped-bar/style.ts} +15 -14
  68. package/src/components/leaflet-flow-map/config.ts +60 -0
  69. package/src/components/leaflet-flow-map/index.ts +279 -0
  70. package/src/components/leaflet-flow-map/renderer-utils.ts +14 -0
  71. package/src/components/leaflet-flow-map/renderer.ts +146 -0
  72. package/{components/leaflet-flow-map/shaders.js → src/components/leaflet-flow-map/shaders.ts} +4 -7
  73. package/src/components/leaflet-flow-map/types.ts +18 -0
  74. package/src/components/leaflet-map/config.ts +234 -0
  75. package/src/components/leaflet-map/index.ts +808 -0
  76. package/src/components/leaflet-map/leaflet.css +625 -0
  77. package/src/components/leaflet-map/modules/clusterBackground.ts +34 -0
  78. package/src/components/leaflet-map/modules/donut.ts +37 -0
  79. package/src/components/leaflet-map/modules/map.ts +178 -0
  80. package/src/components/leaflet-map/modules/node.ts +208 -0
  81. package/src/components/leaflet-map/modules/selectionRing.ts +63 -0
  82. package/src/components/leaflet-map/modules/utils.ts +290 -0
  83. package/{components → src/components}/leaflet-map/renderer/leaflet-maplibre-gl.js +76 -78
  84. package/src/components/leaflet-map/renderer/map-style.ts +24 -0
  85. package/src/components/leaflet-map/renderer/mapboxgl/mapboxgl-dark-theme.json +35 -0
  86. package/src/components/leaflet-map/renderer/mapboxgl/mapboxgl-light-theme.json +35 -0
  87. package/src/components/leaflet-map/renderer/mapboxgl/mapboxgl-settings.json +2185 -0
  88. package/src/components/leaflet-map/renderer/mapboxgl-layer.ts +43 -0
  89. package/src/components/leaflet-map/renderer/mapboxgl-utils.ts +40 -0
  90. package/{components → src/components}/leaflet-map/renderer/maplibre-gl.css.js +2 -4
  91. package/src/components/leaflet-map/style.ts +217 -0
  92. package/src/components/leaflet-map/types.ts +75 -0
  93. package/src/components/line/config.ts +34 -0
  94. package/src/components/line/index.ts +188 -0
  95. package/{components/line/style.js → src/components/line/style.ts} +18 -16
  96. package/src/components/line/types.ts +3 -0
  97. package/src/components/nested-donut/config.ts +75 -0
  98. package/src/components/nested-donut/index.ts +176 -0
  99. package/src/components/nested-donut/modules/arc.ts +78 -0
  100. package/src/components/nested-donut/modules/label.ts +63 -0
  101. package/src/components/nested-donut/style.ts +82 -0
  102. package/src/components/nested-donut/types.ts +29 -0
  103. package/src/components/sankey/config.ts +195 -0
  104. package/src/components/sankey/index.ts +387 -0
  105. package/src/components/sankey/modules/label.ts +228 -0
  106. package/src/components/sankey/modules/link.ts +141 -0
  107. package/src/components/sankey/modules/node.ts +221 -0
  108. package/{components/sankey/style.js → src/components/sankey/style.ts} +60 -44
  109. package/src/components/sankey/types.ts +95 -0
  110. package/src/components/scatter/config.ts +49 -0
  111. package/src/components/scatter/index.ts +220 -0
  112. package/src/components/scatter/modules/point.ts +123 -0
  113. package/src/components/scatter/modules/utils.ts +150 -0
  114. package/{components/scatter/style.js → src/components/scatter/style.ts} +15 -14
  115. package/src/components/scatter/types.ts +21 -0
  116. package/src/components/stacked-bar/config.ts +42 -0
  117. package/src/components/stacked-bar/index.ts +267 -0
  118. package/{components/stacked-bar/style.js → src/components/stacked-bar/style.ts} +15 -14
  119. package/src/components/stacked-bar/types.ts +5 -0
  120. package/src/components/timeline/config.ts +49 -0
  121. package/src/components/timeline/index.ts +302 -0
  122. package/{components/timeline/style.js → src/components/timeline/style.ts} +39 -30
  123. package/src/components/tooltip/config.ts +69 -0
  124. package/src/components/tooltip/index.ts +220 -0
  125. package/{components → src/components}/tooltip/style.js +11 -14
  126. package/src/components/topojson-map/config.ts +124 -0
  127. package/src/components/topojson-map/index.ts +436 -0
  128. package/{components/topojson-map/style.js → src/components/topojson-map/style.ts} +33 -26
  129. package/src/components/topojson-map/types.ts +123 -0
  130. package/src/components/topojson-map/utils.ts +29 -0
  131. package/src/components/vis-controls/config.ts +16 -0
  132. package/src/components/vis-controls/index.ts +68 -0
  133. package/{components/vis-controls/style.js → src/components/vis-controls/style.ts} +34 -27
  134. package/src/components/vis-controls/types.ts +14 -0
  135. package/src/components/xy-labels/config.ts +56 -0
  136. package/src/components/xy-labels/index.ts +109 -0
  137. package/src/components/xy-labels/modules/label.ts +140 -0
  138. package/{components/xy-labels/style.js → src/components/xy-labels/style.ts} +15 -14
  139. package/src/components/xy-labels/types.ts +26 -0
  140. package/src/components.ts +56 -0
  141. package/src/containers/single-container/config.ts +15 -0
  142. package/src/containers/single-container/index.ts +150 -0
  143. package/src/containers/xy-container/config.ts +112 -0
  144. package/src/containers/xy-container/index.ts +407 -0
  145. package/src/containers.ts +6 -0
  146. package/src/core/component/config.ts +61 -0
  147. package/src/core/component/index.ts +154 -0
  148. package/src/core/component/types.ts +9 -0
  149. package/src/core/config/index.ts +12 -0
  150. package/src/core/container/config.ts +56 -0
  151. package/src/core/container/index.ts +136 -0
  152. package/src/core/xy-component/config.ts +46 -0
  153. package/src/core/xy-component/index.ts +90 -0
  154. package/src/data-models/core.ts +15 -0
  155. package/src/data-models/graph.ts +138 -0
  156. package/src/data-models/map-graph.ts +72 -0
  157. package/src/data-models/map.ts +18 -0
  158. package/src/data-models/series.ts +16 -0
  159. package/src/index.ts +7 -0
  160. package/src/maps/china-provinces.json +1 -0
  161. package/src/maps/fr-regions.json +1 -0
  162. package/src/maps/germany-regions.json +1 -0
  163. package/src/maps/ind-regions.json +1 -0
  164. package/src/maps/uk-regions.json +1 -0
  165. package/src/maps/us-counties.json +1 -0
  166. package/src/maps/us-states.json +1 -0
  167. package/src/maps/world-110m-alpha.json +1 -0
  168. package/src/maps/world-simple.json +1 -0
  169. package/src/maps/world-simplest.json +1 -0
  170. package/src/maps.ts +34 -0
  171. package/src/styles/colors.ts +28 -0
  172. package/src/styles/index.ts +38 -0
  173. package/{styles/sizes.js → src/styles/sizes.ts} +6 -8
  174. package/src/types/accessor.ts +5 -0
  175. package/src/types/component.ts +15 -0
  176. package/src/types/curve.ts +62 -0
  177. package/src/types/data.ts +5 -0
  178. package/src/types/direction.ts +6 -0
  179. package/src/types/graph.ts +40 -0
  180. package/src/types/map.ts +5 -0
  181. package/src/types/misc.ts +10 -0
  182. package/src/types/position.ts +23 -0
  183. package/src/types/scale.ts +47 -0
  184. package/src/types/shape.ts +7 -0
  185. package/src/types/spacing.ts +6 -0
  186. package/src/types/svg.ts +32 -0
  187. package/src/types/symbol.ts +21 -0
  188. package/src/types/text.ts +71 -0
  189. package/src/types.ts +31 -0
  190. package/src/utils/color.ts +41 -0
  191. package/src/utils/d3.ts +15 -0
  192. package/src/utils/data.ts +328 -0
  193. package/src/utils/html.ts +13 -0
  194. package/src/utils/map.ts +29 -0
  195. package/src/utils/misc.ts +54 -0
  196. package/src/utils/path.ts +196 -0
  197. package/src/utils/scale.ts +1 -0
  198. package/src/utils/style.ts +37 -0
  199. package/src/utils/svg.ts +49 -0
  200. package/src/utils/text.ts +529 -0
  201. package/src/utils/type.ts +9 -0
  202. package/tsconfig.json +29 -0
  203. package/components/area/config.d.ts +0 -25
  204. package/components/area/config.js +0 -16
  205. package/components/area/config.js.map +0 -1
  206. package/components/area/index.d.ts +0 -19
  207. package/components/area/index.js +0 -102
  208. package/components/area/index.js.map +0 -1
  209. package/components/area/style.d.ts +0 -3
  210. package/components/area/style.js.map +0 -1
  211. package/components/area/types.d.ts +0 -6
  212. package/components/axis/config.d.ts +0 -71
  213. package/components/axis/config.js +0 -32
  214. package/components/axis/config.js.map +0 -1
  215. package/components/axis/index.d.ts +0 -44
  216. package/components/axis/index.js +0 -305
  217. package/components/axis/index.js.map +0 -1
  218. package/components/axis/style.d.ts +0 -9
  219. package/components/axis/style.js.map +0 -1
  220. package/components/axis/types.d.ts +0 -4
  221. package/components/axis/types.js +0 -8
  222. package/components/axis/types.js.map +0 -1
  223. package/components/brush/config.d.ts +0 -42
  224. package/components/brush/config.js +0 -24
  225. package/components/brush/config.js.map +0 -1
  226. package/components/brush/index.d.ts +0 -28
  227. package/components/brush/index.js +0 -199
  228. package/components/brush/index.js.map +0 -1
  229. package/components/brush/style.d.ts +0 -5
  230. package/components/brush/style.js.map +0 -1
  231. package/components/brush/types.d.ts +0 -7
  232. package/components/brush/types.js +0 -8
  233. package/components/brush/types.js.map +0 -1
  234. package/components/bullet-legend/config.d.ts +0 -34
  235. package/components/bullet-legend/config.js +0 -16
  236. package/components/bullet-legend/config.js.map +0 -1
  237. package/components/bullet-legend/index.d.ts +0 -19
  238. package/components/bullet-legend/index.js +0 -79
  239. package/components/bullet-legend/index.js.map +0 -1
  240. package/components/bullet-legend/style.d.ts +0 -6
  241. package/components/bullet-legend/style.js.map +0 -1
  242. package/components/bullet-legend/types.d.ts +0 -7
  243. package/components/bullet-legend/types.js +0 -2
  244. package/components/bullet-legend/types.js.map +0 -1
  245. package/components/chord-diagram/config.d.ts +0 -44
  246. package/components/chord-diagram/config.js +0 -25
  247. package/components/chord-diagram/config.js.map +0 -1
  248. package/components/chord-diagram/index.d.ts +0 -42
  249. package/components/chord-diagram/index.js +0 -305
  250. package/components/chord-diagram/index.js.map +0 -1
  251. package/components/chord-diagram/modules/label.d.ts +0 -8
  252. package/components/chord-diagram/modules/label.js +0 -115
  253. package/components/chord-diagram/modules/label.js.map +0 -1
  254. package/components/chord-diagram/modules/link.d.ts +0 -21
  255. package/components/chord-diagram/modules/link.js +0 -63
  256. package/components/chord-diagram/modules/link.js.map +0 -1
  257. package/components/chord-diagram/modules/node.d.ts +0 -17
  258. package/components/chord-diagram/modules/node.js +0 -52
  259. package/components/chord-diagram/modules/node.js.map +0 -1
  260. package/components/chord-diagram/style.d.ts +0 -13
  261. package/components/chord-diagram/style.js.map +0 -1
  262. package/components/chord-diagram/types.d.ts +0 -58
  263. package/components/chord-diagram/types.js +0 -8
  264. package/components/chord-diagram/types.js.map +0 -1
  265. package/components/crosshair/config.d.ts +0 -43
  266. package/components/crosshair/config.js +0 -19
  267. package/components/crosshair/config.js.map +0 -1
  268. package/components/crosshair/index.d.ts +0 -35
  269. package/components/crosshair/index.js +0 -183
  270. package/components/crosshair/index.js.map +0 -1
  271. package/components/crosshair/style.d.ts +0 -4
  272. package/components/crosshair/style.js.map +0 -1
  273. package/components/crosshair/types.d.ts +0 -13
  274. package/components/crosshair/types.js +0 -2
  275. package/components/crosshair/types.js.map +0 -1
  276. package/components/donut/config.d.ts +0 -59
  277. package/components/donut/config.js +0 -28
  278. package/components/donut/config.js.map +0 -1
  279. package/components/donut/index.d.ts +0 -21
  280. package/components/donut/index.js +0 -107
  281. package/components/donut/index.js.map +0 -1
  282. package/components/donut/modules/arc.d.ts +0 -10
  283. package/components/donut/modules/arc.js +0 -59
  284. package/components/donut/modules/arc.js.map +0 -1
  285. package/components/donut/style.d.ts +0 -7
  286. package/components/donut/style.js.map +0 -1
  287. package/components/donut/types.d.ts +0 -20
  288. package/components/flow-legend/config.d.ts +0 -29
  289. package/components/flow-legend/config.js +0 -18
  290. package/components/flow-legend/config.js.map +0 -1
  291. package/components/flow-legend/index.d.ts +0 -16
  292. package/components/flow-legend/index.js +0 -75
  293. package/components/flow-legend/index.js.map +0 -1
  294. package/components/flow-legend/style.d.ts +0 -8
  295. package/components/flow-legend/style.js.map +0 -1
  296. package/components/flow-legend/types.d.ts +0 -9
  297. package/components/flow-legend/types.js +0 -8
  298. package/components/flow-legend/types.js.map +0 -1
  299. package/components/free-brush/config.d.ts +0 -45
  300. package/components/free-brush/config.js +0 -24
  301. package/components/free-brush/config.js.map +0 -1
  302. package/components/free-brush/index.d.ts +0 -20
  303. package/components/free-brush/index.js +0 -192
  304. package/components/free-brush/index.js.map +0 -1
  305. package/components/free-brush/style.d.ts +0 -4
  306. package/components/free-brush/style.js.map +0 -1
  307. package/components/free-brush/types.d.ts +0 -7
  308. package/components/free-brush/types.js +0 -9
  309. package/components/free-brush/types.js.map +0 -1
  310. package/components/graph/config.d.ts +0 -238
  311. package/components/graph/config.js +0 -84
  312. package/components/graph/config.js.map +0 -1
  313. package/components/graph/index.d.ts +0 -126
  314. package/components/graph/index.js +0 -656
  315. package/components/graph/index.js.map +0 -1
  316. package/components/graph/modules/layout-helpers.d.ts +0 -21
  317. package/components/graph/modules/layout-helpers.js +0 -69
  318. package/components/graph/modules/layout-helpers.js.map +0 -1
  319. package/components/graph/modules/layout.d.ts +0 -10
  320. package/components/graph/modules/layout.js +0 -399
  321. package/components/graph/modules/layout.js.map +0 -1
  322. package/components/graph/modules/link/helper.d.ts +0 -25
  323. package/components/graph/modules/link/helper.js +0 -74
  324. package/components/graph/modules/link/helper.js.map +0 -1
  325. package/components/graph/modules/link/index.d.ts +0 -11
  326. package/components/graph/modules/link/index.js +0 -212
  327. package/components/graph/modules/link/index.js.map +0 -1
  328. package/components/graph/modules/link/style.d.ts +0 -15
  329. package/components/graph/modules/link/style.js.map +0 -1
  330. package/components/graph/modules/node/helper.d.ts +0 -21
  331. package/components/graph/modules/node/helper.js +0 -126
  332. package/components/graph/modules/node/helper.js.map +0 -1
  333. package/components/graph/modules/node/index.d.ts +0 -11
  334. package/components/graph/modules/node/index.js +0 -252
  335. package/components/graph/modules/node/index.js.map +0 -1
  336. package/components/graph/modules/node/style.d.ts +0 -24
  337. package/components/graph/modules/node/style.js.map +0 -1
  338. package/components/graph/modules/panel/helper.d.ts +0 -18
  339. package/components/graph/modules/panel/helper.js +0 -111
  340. package/components/graph/modules/panel/helper.js.map +0 -1
  341. package/components/graph/modules/panel/index.d.ts +0 -7
  342. package/components/graph/modules/panel/index.js +0 -98
  343. package/components/graph/modules/panel/index.js.map +0 -1
  344. package/components/graph/modules/panel/style.d.ts +0 -14
  345. package/components/graph/modules/panel/style.js.map +0 -1
  346. package/components/graph/modules/shape.d.ts +0 -6
  347. package/components/graph/modules/shape.js +0 -80
  348. package/components/graph/modules/shape.js.map +0 -1
  349. package/components/graph/modules/zoom-levels.d.ts +0 -6
  350. package/components/graph/modules/zoom-levels.js +0 -10
  351. package/components/graph/modules/zoom-levels.js.map +0 -1
  352. package/components/graph/style.d.ts +0 -6
  353. package/components/graph/style.js +0 -66
  354. package/components/graph/style.js.map +0 -1
  355. package/components/graph/types.d.ts +0 -125
  356. package/components/graph/types.js +0 -30
  357. package/components/graph/types.js.map +0 -1
  358. package/components/grouped-bar/config.d.ts +0 -36
  359. package/components/grouped-bar/config.js +0 -20
  360. package/components/grouped-bar/config.js.map +0 -1
  361. package/components/grouped-bar/index.d.ts +0 -32
  362. package/components/grouped-bar/index.js +0 -249
  363. package/components/grouped-bar/index.js.map +0 -1
  364. package/components/grouped-bar/style.d.ts +0 -5
  365. package/components/grouped-bar/style.js.map +0 -1
  366. package/components/leaflet-flow-map/config.d.ts +0 -46
  367. package/components/leaflet-flow-map/config.js +0 -25
  368. package/components/leaflet-flow-map/config.js.map +0 -1
  369. package/components/leaflet-flow-map/index.d.ts +0 -52
  370. package/components/leaflet-flow-map/index.js +0 -220
  371. package/components/leaflet-flow-map/index.js.map +0 -1
  372. package/components/leaflet-flow-map/renderer-utils.d.ts +0 -5
  373. package/components/leaflet-flow-map/renderer-utils.js +0 -15
  374. package/components/leaflet-flow-map/renderer-utils.js.map +0 -1
  375. package/components/leaflet-flow-map/renderer.d.ts +0 -26
  376. package/components/leaflet-flow-map/renderer.js +0 -117
  377. package/components/leaflet-flow-map/renderer.js.map +0 -1
  378. package/components/leaflet-flow-map/shaders.d.ts +0 -2
  379. package/components/leaflet-flow-map/shaders.js.map +0 -1
  380. package/components/leaflet-flow-map/types.d.ts +0 -23
  381. package/components/leaflet-map/config.d.ts +0 -193
  382. package/components/leaflet-map/config.js +0 -71
  383. package/components/leaflet-map/config.js.map +0 -1
  384. package/components/leaflet-map/index.d.ts +0 -130
  385. package/components/leaflet-map/index.js +0 -690
  386. package/components/leaflet-map/index.js.map +0 -1
  387. package/components/leaflet-map/leaflet.css.js +0 -5
  388. package/components/leaflet-map/leaflet.css.js.map +0 -1
  389. package/components/leaflet-map/modules/clusterBackground.d.ts +0 -5
  390. package/components/leaflet-map/modules/clusterBackground.js +0 -27
  391. package/components/leaflet-map/modules/clusterBackground.js.map +0 -1
  392. package/components/leaflet-map/modules/donut.d.ts +0 -3
  393. package/components/leaflet-map/modules/donut.js +0 -25
  394. package/components/leaflet-map/modules/donut.js.map +0 -1
  395. package/components/leaflet-map/modules/map.d.ts +0 -14
  396. package/components/leaflet-map/modules/map.js +0 -154
  397. package/components/leaflet-map/modules/map.js.map +0 -1
  398. package/components/leaflet-map/modules/node.d.ts +0 -9
  399. package/components/leaflet-map/modules/node.js +0 -162
  400. package/components/leaflet-map/modules/node.js.map +0 -1
  401. package/components/leaflet-map/modules/selectionRing.d.ts +0 -7
  402. package/components/leaflet-map/modules/selectionRing.js +0 -41
  403. package/components/leaflet-map/modules/selectionRing.js.map +0 -1
  404. package/components/leaflet-map/modules/utils.d.ts +0 -50
  405. package/components/leaflet-map/modules/utils.js +0 -210
  406. package/components/leaflet-map/modules/utils.js.map +0 -1
  407. package/components/leaflet-map/renderer/leaflet-maplibre-gl.js.map +0 -1
  408. package/components/leaflet-map/renderer/map-style.d.ts +0 -4
  409. package/components/leaflet-map/renderer/map-style.js +0 -15
  410. package/components/leaflet-map/renderer/map-style.js.map +0 -1
  411. package/components/leaflet-map/renderer/mapboxgl/mapboxgl-dark-theme.json.js +0 -40
  412. package/components/leaflet-map/renderer/mapboxgl/mapboxgl-dark-theme.json.js.map +0 -1
  413. package/components/leaflet-map/renderer/mapboxgl/mapboxgl-light-theme.json.js +0 -40
  414. package/components/leaflet-map/renderer/mapboxgl/mapboxgl-light-theme.json.js.map +0 -1
  415. package/components/leaflet-map/renderer/mapboxgl/mapboxgl-settings.json.js +0 -4981
  416. package/components/leaflet-map/renderer/mapboxgl/mapboxgl-settings.json.js.map +0 -1
  417. package/components/leaflet-map/renderer/mapboxgl-layer.d.ts +0 -8
  418. package/components/leaflet-map/renderer/mapboxgl-layer.js +0 -27
  419. package/components/leaflet-map/renderer/mapboxgl-layer.js.map +0 -1
  420. package/components/leaflet-map/renderer/mapboxgl-utils.d.ts +0 -4
  421. package/components/leaflet-map/renderer/mapboxgl-utils.js +0 -39
  422. package/components/leaflet-map/renderer/mapboxgl-utils.js.map +0 -1
  423. package/components/leaflet-map/renderer/maplibre-gl.css.js.map +0 -1
  424. package/components/leaflet-map/style.d.ts +0 -52
  425. package/components/leaflet-map/style.js +0 -183
  426. package/components/leaflet-map/style.js.map +0 -1
  427. package/components/leaflet-map/types.d.ts +0 -75
  428. package/components/leaflet-map/types.js +0 -15
  429. package/components/leaflet-map/types.js.map +0 -1
  430. package/components/line/config.d.ts +0 -30
  431. package/components/line/config.js +0 -17
  432. package/components/line/config.js.map +0 -1
  433. package/components/line/index.d.ts +0 -27
  434. package/components/line/index.js +0 -152
  435. package/components/line/index.js.map +0 -1
  436. package/components/line/style.d.ts +0 -6
  437. package/components/line/style.js.map +0 -1
  438. package/components/line/types.d.ts +0 -12
  439. package/components/nested-donut/config.d.ts +0 -59
  440. package/components/nested-donut/config.js +0 -19
  441. package/components/nested-donut/config.js.map +0 -1
  442. package/components/nested-donut/index.d.ts +0 -38
  443. package/components/nested-donut/index.js +0 -133
  444. package/components/nested-donut/index.js.map +0 -1
  445. package/components/nested-donut/modules/arc.d.ts +0 -17
  446. package/components/nested-donut/modules/arc.js +0 -50
  447. package/components/nested-donut/modules/arc.js.map +0 -1
  448. package/components/nested-donut/modules/label.d.ts +0 -7
  449. package/components/nested-donut/modules/label.js +0 -34
  450. package/components/nested-donut/modules/label.js.map +0 -1
  451. package/components/nested-donut/style.d.ts +0 -26
  452. package/components/nested-donut/style.js +0 -70
  453. package/components/nested-donut/style.js.map +0 -1
  454. package/components/nested-donut/types.d.ts +0 -24
  455. package/components/nested-donut/types.js +0 -11
  456. package/components/nested-donut/types.js.map +0 -1
  457. package/components/sankey/config.d.ts +0 -162
  458. package/components/sankey/config.js +0 -65
  459. package/components/sankey/config.js.map +0 -1
  460. package/components/sankey/index.d.ts +0 -59
  461. package/components/sankey/index.js +0 -306
  462. package/components/sankey/index.js.map +0 -1
  463. package/components/sankey/modules/label.d.ts +0 -23
  464. package/components/sankey/modules/label.js +0 -168
  465. package/components/sankey/modules/label.js.map +0 -1
  466. package/components/sankey/modules/link.d.ts +0 -14
  467. package/components/sankey/modules/link.js +0 -108
  468. package/components/sankey/modules/link.js.map +0 -1
  469. package/components/sankey/modules/node.d.ts +0 -10
  470. package/components/sankey/modules/node.js +0 -156
  471. package/components/sankey/modules/node.js.map +0 -1
  472. package/components/sankey/style.d.ts +0 -20
  473. package/components/sankey/style.js.map +0 -1
  474. package/components/sankey/types.d.ts +0 -84
  475. package/components/sankey/types.js +0 -34
  476. package/components/sankey/types.js.map +0 -1
  477. package/components/scatter/config.d.ts +0 -44
  478. package/components/scatter/config.js +0 -23
  479. package/components/scatter/config.js.map +0 -1
  480. package/components/scatter/index.d.ts +0 -28
  481. package/components/scatter/index.js +0 -167
  482. package/components/scatter/index.js.map +0 -1
  483. package/components/scatter/modules/point.d.ts +0 -7
  484. package/components/scatter/modules/point.js +0 -86
  485. package/components/scatter/modules/point.js.map +0 -1
  486. package/components/scatter/modules/utils.d.ts +0 -11
  487. package/components/scatter/modules/utils.js +0 -112
  488. package/components/scatter/modules/utils.js.map +0 -1
  489. package/components/scatter/style.d.ts +0 -5
  490. package/components/scatter/style.js.map +0 -1
  491. package/components/scatter/types.d.ts +0 -19
  492. package/components/stacked-bar/config.d.ts +0 -38
  493. package/components/stacked-bar/config.js +0 -20
  494. package/components/stacked-bar/config.js.map +0 -1
  495. package/components/stacked-bar/index.d.ts +0 -28
  496. package/components/stacked-bar/index.js +0 -208
  497. package/components/stacked-bar/index.js.map +0 -1
  498. package/components/stacked-bar/style.d.ts +0 -5
  499. package/components/stacked-bar/style.js.map +0 -1
  500. package/components/stacked-bar/types.d.ts +0 -5
  501. package/components/timeline/config.d.ts +0 -43
  502. package/components/timeline/config.js +0 -24
  503. package/components/timeline/config.js.map +0 -1
  504. package/components/timeline/index.d.ts +0 -41
  505. package/components/timeline/index.js +0 -244
  506. package/components/timeline/index.js.map +0 -1
  507. package/components/timeline/style.d.ts +0 -13
  508. package/components/timeline/style.js.map +0 -1
  509. package/components/tooltip/config.d.ts +0 -68
  510. package/components/tooltip/config.js +0 -20
  511. package/components/tooltip/config.js.map +0 -1
  512. package/components/tooltip/index.d.ts +0 -36
  513. package/components/tooltip/index.js +0 -184
  514. package/components/tooltip/index.js.map +0 -1
  515. package/components/tooltip/style.js.map +0 -1
  516. package/components/topojson-map/config.d.ts +0 -99
  517. package/components/topojson-map/config.js +0 -42
  518. package/components/topojson-map/config.js.map +0 -1
  519. package/components/topojson-map/index.d.ts +0 -52
  520. package/components/topojson-map/index.js +0 -355
  521. package/components/topojson-map/index.js.map +0 -1
  522. package/components/topojson-map/style.d.ts +0 -11
  523. package/components/topojson-map/style.js.map +0 -1
  524. package/components/topojson-map/types.d.ts +0 -78
  525. package/components/topojson-map/types.js +0 -80
  526. package/components/topojson-map/types.js.map +0 -1
  527. package/components/topojson-map/utils.d.ts +0 -3
  528. package/components/topojson-map/utils.js +0 -30
  529. package/components/topojson-map/utils.js.map +0 -1
  530. package/components/vis-controls/config.d.ts +0 -12
  531. package/components/vis-controls/config.js +0 -13
  532. package/components/vis-controls/config.js.map +0 -1
  533. package/components/vis-controls/index.d.ts +0 -14
  534. package/components/vis-controls/index.js +0 -52
  535. package/components/vis-controls/index.js.map +0 -1
  536. package/components/vis-controls/style.d.ts +0 -11
  537. package/components/vis-controls/style.js.map +0 -1
  538. package/components/vis-controls/types.d.ts +0 -13
  539. package/components/vis-controls/types.js +0 -8
  540. package/components/vis-controls/types.js.map +0 -1
  541. package/components/xy-labels/config.d.ts +0 -48
  542. package/components/xy-labels/config.js +0 -25
  543. package/components/xy-labels/config.js.map +0 -1
  544. package/components/xy-labels/index.d.ts +0 -15
  545. package/components/xy-labels/index.js +0 -87
  546. package/components/xy-labels/index.js.map +0 -1
  547. package/components/xy-labels/modules/label.d.ts +0 -9
  548. package/components/xy-labels/modules/label.js +0 -107
  549. package/components/xy-labels/modules/label.js.map +0 -1
  550. package/components/xy-labels/style.d.ts +0 -5
  551. package/components/xy-labels/style.js.map +0 -1
  552. package/components/xy-labels/types.d.ts +0 -23
  553. package/components/xy-labels/types.js +0 -9
  554. package/components/xy-labels/types.js.map +0 -1
  555. package/components.d.ts +0 -51
  556. package/components.js +0 -29
  557. package/components.js.map +0 -1
  558. package/containers/single-container/config.d.ts +0 -12
  559. package/containers/single-container/config.js +0 -12
  560. package/containers/single-container/config.js.map +0 -1
  561. package/containers/single-container/index.d.ts +0 -19
  562. package/containers/single-container/index.js +0 -128
  563. package/containers/single-container/index.js.map +0 -1
  564. package/containers/xy-container/config.d.ts +0 -99
  565. package/containers/xy-container/config.js +0 -30
  566. package/containers/xy-container/config.js.map +0 -1
  567. package/containers/xy-container/index.d.ts +0 -34
  568. package/containers/xy-container/index.js +0 -330
  569. package/containers/xy-container/index.js.map +0 -1
  570. package/containers.d.ts +0 -6
  571. package/containers.js +0 -4
  572. package/containers.js.map +0 -1
  573. package/core/component/config.d.ts +0 -58
  574. package/core/component/config.js +0 -14
  575. package/core/component/config.js.map +0 -1
  576. package/core/component/index.d.ts +0 -43
  577. package/core/component/index.js +0 -118
  578. package/core/component/index.js.map +0 -1
  579. package/core/component/types.d.ts +0 -2
  580. package/core/component/types.js +0 -2
  581. package/core/component/types.js.map +0 -1
  582. package/core/config/index.d.ts +0 -3
  583. package/core/config/index.js +0 -16
  584. package/core/config/index.js.map +0 -1
  585. package/core/container/config.d.ts +0 -48
  586. package/core/container/config.js +0 -29
  587. package/core/container/config.js.map +0 -1
  588. package/core/container/index.d.ts +0 -26
  589. package/core/container/index.js +0 -105
  590. package/core/container/index.js.map +0 -1
  591. package/core/xy-component/config.d.ts +0 -38
  592. package/core/xy-component/config.js +0 -20
  593. package/core/xy-component/config.js.map +0 -1
  594. package/core/xy-component/index.d.ts +0 -27
  595. package/core/xy-component/index.js +0 -74
  596. package/core/xy-component/index.js.map +0 -1
  597. package/data-models/core.d.ts +0 -6
  598. package/data-models/core.js +0 -14
  599. package/data-models/core.js.map +0 -1
  600. package/data-models/graph.d.ts +0 -24
  601. package/data-models/graph.js +0 -107
  602. package/data-models/graph.js.map +0 -1
  603. package/data-models/map-graph.d.ts +0 -21
  604. package/data-models/map-graph.js +0 -62
  605. package/data-models/map-graph.js.map +0 -1
  606. package/data-models/map.d.ts +0 -5
  607. package/data-models/map.js +0 -12
  608. package/data-models/map.js.map +0 -1
  609. package/data-models/series.d.ts +0 -6
  610. package/data-models/series.js +0 -19
  611. package/data-models/series.js.map +0 -1
  612. package/index.d.ts +0 -7
  613. package/index.js +0 -55
  614. package/index.js.map +0 -1
  615. package/maps/china-provinces.json.js +0 -140373
  616. package/maps/fr-regions.json.js +0 -14162
  617. package/maps/germany-regions.json.js +0 -35760
  618. package/maps/ind-regions.json.js +0 -290584
  619. package/maps/uk-regions.json.js +0 -96233
  620. package/maps/us-counties.json.js +0 -206318
  621. package/maps/us-states.json.js +0 -16345
  622. package/maps/world-110m-alpha.json.js +0 -251366
  623. package/maps/world-simple.json.js +0 -89428
  624. package/maps/world-simplest.json.js +0 -28175
  625. package/maps.d.ts +0 -60
  626. package/maps.js +0 -23
  627. package/styles/colors.d.ts +0 -7
  628. package/styles/colors.js +0 -24
  629. package/styles/colors.js.map +0 -1
  630. package/styles/index.d.ts +0 -7
  631. package/styles/index.js +0 -38
  632. package/styles/index.js.map +0 -1
  633. package/styles/sizes.d.ts +0 -2
  634. package/styles/sizes.js.map +0 -1
  635. package/types/accessor.d.ts +0 -5
  636. package/types/accessor.js +0 -2
  637. package/types/accessor.js.map +0 -1
  638. package/types/component.d.ts +0 -13
  639. package/types/component.js +0 -14
  640. package/types/component.js.map +0 -1
  641. package/types/curve.d.ts +0 -40
  642. package/types/curve.js +0 -46
  643. package/types/curve.js.map +0 -1
  644. package/types/data.d.ts +0 -7
  645. package/types/data.js +0 -2
  646. package/types/data.js.map +0 -1
  647. package/types/direction.d.ts +0 -6
  648. package/types/direction.js +0 -10
  649. package/types/direction.js.map +0 -1
  650. package/types/graph.d.ts +0 -35
  651. package/types/graph.js +0 -2
  652. package/types/graph.js.map +0 -1
  653. package/types/map.d.ts +0 -4
  654. package/types/map.js +0 -2
  655. package/types/map.js.map +0 -1
  656. package/types/misc.d.ts +0 -8
  657. package/types/position.d.ts +0 -20
  658. package/types/position.js +0 -27
  659. package/types/position.js.map +0 -1
  660. package/types/scale.d.ts +0 -23
  661. package/types/scale.js +0 -27
  662. package/types/scale.js.map +0 -1
  663. package/types/shape.d.ts +0 -7
  664. package/types/shape.js +0 -11
  665. package/types/shape.js.map +0 -1
  666. package/types/spacing.d.ts +0 -6
  667. package/types/spacing.js +0 -2
  668. package/types/spacing.js.map +0 -1
  669. package/types/svg.d.ts +0 -18
  670. package/types/svg.js +0 -22
  671. package/types/svg.js.map +0 -1
  672. package/types/symbol.d.ts +0 -18
  673. package/types/symbol.js +0 -24
  674. package/types/symbol.js.map +0 -1
  675. package/types/text.d.ts +0 -46
  676. package/types/text.js +0 -26
  677. package/types/text.js.map +0 -1
  678. package/types.d.ts +0 -27
  679. package/types.js +0 -30
  680. package/types.js.map +0 -1
  681. package/utils/color.d.ts +0 -10
  682. package/utils/color.js +0 -32
  683. package/utils/color.js.map +0 -1
  684. package/utils/d3.d.ts +0 -3
  685. package/utils/d3.js +0 -16
  686. package/utils/d3.js.map +0 -1
  687. package/utils/data.d.ts +0 -45
  688. package/utils/data.js +0 -274
  689. package/utils/data.js.map +0 -1
  690. package/utils/html.d.ts +0 -1
  691. package/utils/html.js +0 -16
  692. package/utils/html.js.map +0 -1
  693. package/utils/map.d.ts +0 -2
  694. package/utils/map.js +0 -20
  695. package/utils/map.js.map +0 -1
  696. package/utils/misc.d.ts +0 -9
  697. package/utils/misc.js +0 -47
  698. package/utils/misc.js.map +0 -1
  699. package/utils/path.d.ts +0 -23
  700. package/utils/path.js +0 -144
  701. package/utils/path.js.map +0 -1
  702. package/utils/scale.d.ts +0 -1
  703. package/utils/style.d.ts +0 -6
  704. package/utils/style.js +0 -24
  705. package/utils/style.js.map +0 -1
  706. package/utils/svg.d.ts +0 -3
  707. package/utils/text.d.ts +0 -139
  708. package/utils/text.js +0 -417
  709. package/utils/text.js.map +0 -1
  710. package/utils/type.d.ts +0 -5
@@ -0,0 +1,141 @@
1
+ import { Selection } from 'd3-selection'
2
+ import { Transition } from 'd3-transition'
3
+ import { interpolateNumber } from 'd3-interpolate'
4
+
5
+ // Utils
6
+ import { getColor } from 'utils/color'
7
+ import { getString } from 'utils/data'
8
+ import { smartTransition } from 'utils/d3'
9
+
10
+ // Local Types
11
+ import { SankeyInputLink, SankeyInputNode, SankeyLink } from '../types'
12
+
13
+ // Config
14
+ import { SankeyConfig } from '../config'
15
+
16
+ // Styles
17
+ import * as s from '../style'
18
+
19
+ export type LinkPathOptions = {
20
+ x0: number;
21
+ x1: number;
22
+ y0: number;
23
+ y1: number;
24
+ width: number;
25
+ }
26
+
27
+ export function linkPath ({ x0, x1, y0, y1, width }: LinkPathOptions): string {
28
+ const top0 = y0 - width / 2
29
+ const top1 = y1 - width / 2
30
+ const bottom0 = y0 + width / 2
31
+ const bottom1 = y1 + width / 2
32
+ const centerX = (x0 + x1) / 2
33
+
34
+ return `
35
+ M ${x0}, ${top0}
36
+
37
+ C ${centerX}, ${top0}
38
+ ${centerX}, ${top1}
39
+ ${x1}, ${top1}
40
+
41
+ L ${x1}, ${bottom1}
42
+
43
+ C ${centerX}, ${bottom1}
44
+ ${centerX}, ${bottom0}
45
+ ${x0}, ${bottom0}
46
+ z
47
+ `
48
+ }
49
+
50
+ export function createLinks<N extends SankeyInputNode, L extends SankeyInputLink> (
51
+ sel: Selection<SVGGElement, SankeyLink<N, L>, SVGGElement, unknown>
52
+ ): void {
53
+ sel.append('path').attr('class', s.linkPath)
54
+ .attr('d', (d: SankeyLink<N, L>, i, el) => {
55
+ // eslint-disable-next-line dot-notation
56
+ el[i]['_animState'] = {
57
+ x0: d.source.x1,
58
+ x1: d.target.x0,
59
+ y0: d.y0,
60
+ y1: d.y1,
61
+ width: Math.max(1, d.width),
62
+ }
63
+ // eslint-disable-next-line dot-notation
64
+ return linkPath(el[i]['_animState'])
65
+ })
66
+ sel.append('path').attr('class', s.linkSelectionHelper)
67
+ sel.style('opacity', 0)
68
+ }
69
+
70
+ export function updateLinks<N extends SankeyInputNode, L extends SankeyInputLink> (
71
+ sel: Selection<SVGGElement, SankeyLink<N, L>, SVGGElement, unknown>,
72
+ config: SankeyConfig<N, L>,
73
+ duration: number
74
+ ): void {
75
+ smartTransition(sel, duration)
76
+ .style('opacity', (d: SankeyLink<N, L>) => d._state.greyout ? 0.2 : 1)
77
+
78
+ const linkSelection = sel.select<SVGPathElement>(`.${s.linkPath}`)
79
+ .style('cursor', (d: SankeyLink<N, L>) => getString(d, config.linkCursor))
80
+
81
+ const selectionTransition = smartTransition(linkSelection, duration)
82
+ .style('fill', (link: SankeyLink<N, L>) => getColor(link, config.linkColor))
83
+
84
+ if (duration) {
85
+ (selectionTransition as Transition<SVGPathElement, SankeyLink<N, L>, SVGGElement, unknown>)
86
+ .attrTween('d', (d: SankeyLink<N, L>, i, el) => {
87
+ // eslint-disable-next-line dot-notation
88
+ const previous = el[i]['_animState']
89
+ const next = {
90
+ x0: d.source.x1,
91
+ x1: d.target.x0,
92
+ y0: d.y0,
93
+ y1: d.y1,
94
+ width: Math.max(1, d.width),
95
+ }
96
+ const interpolator = {
97
+ x0: interpolateNumber(previous.x0, next.x0),
98
+ x1: interpolateNumber(previous.x1, next.x1),
99
+ y0: interpolateNumber(previous.y0, next.y0),
100
+ y1: interpolateNumber(previous.y1, next.y1),
101
+ width: interpolateNumber(previous.width, next.width),
102
+ }
103
+ // eslint-disable-next-line dot-notation
104
+ el[i]['_animState'] = next
105
+
106
+ return function (t: number) {
107
+ return linkPath({
108
+ x0: interpolator.x0(t),
109
+ x1: interpolator.x1(t),
110
+ y0: interpolator.y0(t),
111
+ y1: interpolator.y1(t),
112
+ width: interpolator.width(t),
113
+ })
114
+ }
115
+ })
116
+ } else {
117
+ linkSelection.attr('d', (d: SankeyLink<N, L>) => linkPath({
118
+ x0: d.source.x1,
119
+ x1: d.target.x0,
120
+ y0: d.y0,
121
+ y1: d.y1,
122
+ width: Math.max(1, d.width),
123
+ }))
124
+ }
125
+
126
+ sel.select(`.${s.linkSelectionHelper}`)
127
+ .attr('d', (d: SankeyLink<N, L>) => linkPath({
128
+ x0: d.source.x1,
129
+ x1: d.target.x0,
130
+ y0: d.y0,
131
+ y1: d.y1,
132
+ width: Math.max(10, d.width),
133
+ }))
134
+ .style('cursor', d => getString(d, config.linkCursor))
135
+ }
136
+
137
+ export function removeLinks<N extends SankeyInputNode, L extends SankeyInputLink> (
138
+ sel: Selection<SVGGElement, SankeyLink<N, L>, SVGGElement, unknown>
139
+ ): void {
140
+ sel.remove()
141
+ }
@@ -0,0 +1,221 @@
1
+ import { select, Selection } from 'd3-selection'
2
+
3
+ // Utils
4
+ import { getColor } from 'utils/color'
5
+ import { getString } from 'utils/data'
6
+ import { smartTransition } from 'utils/d3'
7
+
8
+ // Types
9
+ import { Spacing } from 'types/spacing'
10
+
11
+ // Local Types
12
+ import { SankeyEnterTransitionType, SankeyExitTransitionType, SankeyInputLink, SankeyInputNode, SankeyNode, SankeyNodeAlign } from '../types'
13
+
14
+ // Config
15
+ import { SankeyConfig } from '../config'
16
+
17
+ // Helpers
18
+ import { renderLabel } from './label'
19
+
20
+ // Styles
21
+ import * as s from '../style'
22
+
23
+ export function createNodes<N extends SankeyInputNode, L extends SankeyInputLink> (
24
+ sel: Selection<SVGGElement, SankeyNode<N, L>, SVGGElement, unknown>,
25
+ config: SankeyConfig<N, L>,
26
+ width: number,
27
+ bleed: Spacing
28
+ ): void {
29
+ const { enterTransitionType } = config
30
+
31
+ // Node
32
+ sel.append('rect')
33
+ .attr('class', s.node)
34
+ .attr('width', config.nodeWidth)
35
+ .attr('height', d => d.y1 - d.y0)
36
+ .style('fill', node => getColor(node, config.nodeColor))
37
+
38
+ // Labels
39
+ const labelGroup = sel.append('g').attr('class', s.labelGroup)
40
+ labelGroup.append('path').attr('class', s.labelBackground)
41
+ labelGroup.append('text').attr('class', s.label)
42
+ labelGroup.append('text').attr('class', s.sublabel)
43
+
44
+ // Node icon
45
+ sel.append('text').attr('class', s.nodeIcon)
46
+ .attr('text-anchor', 'middle')
47
+ .attr('dy', '0.5px')
48
+
49
+ sel
50
+ .attr('transform', d => {
51
+ const x = (enterTransitionType === SankeyEnterTransitionType.FromAncestor && d.targetLinks?.[0]) ? d.targetLinks[0].source.x0 : d.x0
52
+ return `translate(${sel.size() === 1 ? width * 0.5 - bleed.left : x}, ${d.y0})`
53
+ })
54
+ .style('opacity', 0)
55
+ }
56
+
57
+ function getNodeXPos<N extends SankeyInputNode, L extends SankeyInputLink> (
58
+ d: SankeyNode<N, L>,
59
+ config: SankeyConfig<N, L>,
60
+ width: number,
61
+ bleed: Spacing,
62
+ hasLinks: boolean
63
+ ): number {
64
+ if (hasLinks) return d.x0
65
+
66
+ switch (config.nodeAlign) {
67
+ case SankeyNodeAlign.Left: return d.x0
68
+ case SankeyNodeAlign.Right: return width - bleed.right
69
+ case SankeyNodeAlign.Center:
70
+ case SankeyNodeAlign.Justify:
71
+ default: return width * 0.5 - bleed.left
72
+ }
73
+ }
74
+
75
+ export function updateNodes<N extends SankeyInputNode, L extends SankeyInputLink> (
76
+ sel: Selection<SVGGElement, SankeyNode<N, L>, SVGGElement, unknown>,
77
+ config: SankeyConfig<N, L>,
78
+ width: number,
79
+ bleed: Spacing,
80
+ hasLinks: boolean,
81
+ duration: number
82
+ ): void {
83
+ smartTransition(sel, duration)
84
+ .attr('transform', d => `translate(${getNodeXPos(d, config, width, bleed, hasLinks)},${d.y0})`)
85
+ .style('opacity', d => d._state.greyout ? 0.2 : 1)
86
+
87
+ // Node
88
+ smartTransition(sel.select(`.${s.node}`), duration)
89
+ .attr('width', config.nodeWidth)
90
+ .attr('height', (d: SankeyNode<N, L>) => d.y1 - d.y0)
91
+ .style('cursor', (d: SankeyNode<N, L>) => getString(d, config.nodeCursor))
92
+ .style('fill', (d: SankeyNode<N, L>) => getColor(d, config.nodeColor))
93
+
94
+ // Label Rendering
95
+ // eslint-disable-next-line @typescript-eslint/no-use-before-define
96
+ renderNodeLabels(sel, config, width, duration)
97
+
98
+ // Node Icon
99
+ const nodeIcon = sel.select(`.${s.nodeIcon}`)
100
+ if (config.nodeIcon) {
101
+ nodeIcon
102
+ .attr('visibility', null)
103
+ .attr('text-anchor', 'middle')
104
+ .attr('alignment-baseline', 'middle')
105
+ .style('stroke', (d: SankeyNode<N, L>) => getColor(d, config.nodeIconColor))
106
+ .style('fill', (d: SankeyNode<N, L>) => getColor(d, config.nodeIconColor))
107
+ .style('font-size', (d: SankeyNode<N, L>) => {
108
+ const nodeHeight = d.y1 - d.y0
109
+ return nodeHeight < s.SANKEY_ICON_SIZE ? `${nodeHeight * 0.65}px` : null
110
+ })
111
+ .html(config.nodeIcon)
112
+
113
+ smartTransition(nodeIcon, duration)
114
+ .attr('x', config.nodeWidth / 2)
115
+ .attr('y', (d: SankeyNode<N, L>) => (d.y1 - d.y0) / 2)
116
+ } else {
117
+ nodeIcon
118
+ .attr('visibility', 'hidden')
119
+ }
120
+ }
121
+
122
+ export function renderNodeLabels<N extends SankeyInputNode, L extends SankeyInputLink> (
123
+ sel: Selection<SVGGElement, SankeyNode<N, L>, SVGGElement, unknown>,
124
+ config: SankeyConfig<N, L>,
125
+ width: number,
126
+ duration: number,
127
+ enforceNodeVisibility?: SankeyNode<N, L>
128
+ ): void {
129
+ // Label Rendering
130
+ const labelGroupSelection: Selection<SVGGElement, SankeyNode<N, L>, SVGGElement, any> = sel.select(`.${s.labelGroup}`)
131
+ const labelGroupEls = labelGroupSelection.nodes() || []
132
+
133
+ // After rendering Label return a BBox so we can do intersection detection and hide some of tem
134
+ const labelGroupBBoxes = labelGroupEls.map(g => {
135
+ const gSelection: Selection<SVGGElement, SankeyNode<N, L>, SVGGElement, any> = select(g)
136
+ const datum = gSelection.datum()
137
+ return renderLabel(gSelection, datum, config, width, duration, enforceNodeVisibility === datum)
138
+ })
139
+
140
+ if (config.labelVisibility) {
141
+ for (const b of labelGroupBBoxes) {
142
+ const datum = b.selection.datum() as SankeyNode<N, L>
143
+ const box = { x: b.x, y: b.y, width: b.width, height: b.height }
144
+ b.hidden = !config.labelVisibility(datum, box, enforceNodeVisibility === datum)
145
+ }
146
+ } else {
147
+ // Detect intersecting labels
148
+ const maxLayer = Math.max(...labelGroupBBoxes.map(b => b.layer))
149
+ for (let layer = 0; layer <= maxLayer; layer += 1) {
150
+ const boxes = labelGroupBBoxes.filter(b => (b.layer === layer))
151
+ boxes.sort((a, b) => a.y - b.y)
152
+
153
+ let lastVisibleIdx = 0
154
+ for (let i = 1; i < boxes.length; i += 1) {
155
+ const b0 = boxes[lastVisibleIdx]
156
+ const b1 = boxes[i]
157
+
158
+ const shouldBeHidden = b1.y < (b0.y + b0.height)
159
+ if (shouldBeHidden) {
160
+ if (b1.selection.datum() === enforceNodeVisibility) b0.hidden = true // If the hovered node should be hidden, hide the previous one instead
161
+ else b1.hidden = true
162
+ }
163
+
164
+ if (!b1.hidden) lastVisibleIdx = i
165
+ }
166
+ }
167
+ }
168
+
169
+ // Hide intersecting labels
170
+ for (const b of labelGroupBBoxes) {
171
+ b.selection.classed(s.hidden, b.hidden)
172
+ }
173
+ }
174
+
175
+ export function removeNodes<N extends SankeyInputNode, L extends SankeyInputLink> (
176
+ selection: Selection<SVGGElement, SankeyNode<N, L>, SVGGElement, unknown>,
177
+ config: SankeyConfig<N, L>,
178
+ duration: number
179
+ ): void {
180
+ const { exitTransitionType } = config
181
+
182
+ selection.each((d, i, els) => {
183
+ const node = select(els[i])
184
+ const transition = smartTransition(node, duration)
185
+ if ((exitTransitionType === SankeyExitTransitionType.ToAncestor) && d.targetLinks?.[0]) {
186
+ transition.attr('transform', `translate(${d.targetLinks[0].source.x0},${d.y0})`)
187
+ }
188
+
189
+ transition
190
+ .style('opacity', 0)
191
+ .remove()
192
+ })
193
+ }
194
+
195
+ export function onNodeMouseOver<N extends SankeyInputNode, L extends SankeyInputLink> (
196
+ d: SankeyNode<N, L>,
197
+ nodeSelection: Selection<SVGGElement, SankeyNode<N, L>, SVGGElement, unknown>,
198
+ config: SankeyConfig<N, L>,
199
+ width: number
200
+ ): void {
201
+ const labelGroup = nodeSelection.raise()
202
+ .select<SVGGElement>(`.${s.labelGroup}`)
203
+
204
+ if ((config.labelExpandTrimmedOnHover && labelGroup.classed(s.labelTrimmed)) || labelGroup.classed(s.hidden)) {
205
+ renderLabel(labelGroup, d, config, width, 0, true)
206
+ }
207
+ labelGroup.classed(s.forceShow, true)
208
+ }
209
+
210
+ export function onNodeMouseOut<N extends SankeyInputNode, L extends SankeyInputLink> (
211
+ d: SankeyNode<N, L>,
212
+ nodeSelection: Selection<SVGGElement, SankeyNode<N, L>, SVGGElement, unknown>,
213
+ config: SankeyConfig<N, L>,
214
+ width: number
215
+ ): void {
216
+ const labelGroup = nodeSelection.select<SVGGElement>(`.${s.labelGroup}`)
217
+ if (config.labelExpandTrimmedOnHover || labelGroup.classed(s.hidden)) {
218
+ renderLabel(labelGroup, d, config, width, 0)
219
+ }
220
+ labelGroup.classed(s.forceShow, false)
221
+ }
@@ -1,11 +1,13 @@
1
- import { css, injectGlobal } from '@emotion/css';
2
- import { UNOVIS_ICON_FONT_FAMILY_DEFAULT } from '../../styles/index.js';
1
+ import { css, injectGlobal } from '@emotion/css'
2
+ import { UNOVIS_ICON_FONT_FAMILY_DEFAULT } from 'styles/index'
3
3
 
4
- const SANKEY_ICON_SIZE = 22;
5
- const root = css `
4
+ export const SANKEY_ICON_SIZE = 22
5
+
6
+ export const root = css`
6
7
  label: sankey-component;
7
- `;
8
- const variables = injectGlobal `
8
+ `
9
+
10
+ export const variables = injectGlobal`
9
11
  :root {
10
12
  /* Links */
11
13
  --vis-sankey-link-cursor: default;
@@ -57,14 +59,17 @@ const variables = injectGlobal `
57
59
  --vis-sankey-node-label-background-stroke-color: var(--vis-dark-sankey-label-background-stroke-color);
58
60
  --vis-sankey-icon-color: var(--vis-dark-sankey-icon-color);
59
61
  }
60
- `;
61
- const links = css `
62
+ `
63
+
64
+ export const links = css`
62
65
  label: links;
63
- `;
64
- const nodes = css `
66
+ `
67
+
68
+ export const nodes = css`
65
69
  label: nodes;
66
- `;
67
- const link = css `
70
+ `
71
+
72
+ export const link = css`
68
73
  label: link;
69
74
 
70
75
  path {
@@ -78,22 +83,27 @@ const link = css `
78
83
  fill-opacity: var(--vis-sankey-link-hover-opacity);
79
84
  }
80
85
  }
81
- `;
82
- const linkPath = css `
86
+ `
87
+
88
+ export const linkPath = css`
83
89
  label: visible;
84
- `;
85
- const linkSelectionHelper = css `
90
+ `
91
+
92
+ export const linkSelectionHelper = css`
86
93
  label: transparent;
87
94
  opacity: 0;
88
- `;
89
- const labelGroup = css `
95
+ `
96
+
97
+ export const labelGroup = css`
90
98
  label: label-group;
91
99
  cursor: var(--vis-sankey-node-label-cursor);
92
- `;
93
- const labelTrimmed = css `
100
+ `
101
+
102
+ export const labelTrimmed = css`
94
103
  label: label-trimmed;
95
- `;
96
- const label = css `
104
+ `
105
+
106
+ export const label = css`
97
107
  label: label;
98
108
  dominant-baseline: hanging;
99
109
 
@@ -106,8 +116,9 @@ const label = css `
106
116
  font-family: var(--vis-sankey-label-font-family, var(--vis-font-family));
107
117
  dominant-baseline: hanging;
108
118
  }
109
- `;
110
- const sublabel = css `
119
+ `
120
+
121
+ export const sublabel = css`
111
122
  label: sub-label;
112
123
  dominant-baseline: hanging;
113
124
 
@@ -119,25 +130,30 @@ const sublabel = css `
119
130
  font-weight: var(--vis-sankey-node-sublabel-font-weight);
120
131
  dominant-baseline: hanging;
121
132
  }
122
- `;
123
- const labelBackground = css `
133
+ `
134
+
135
+ export const labelBackground = css`
124
136
  label: label-background;
125
137
  stroke: var(--vis-sankey-node-label-background-stroke-color);
126
138
  fill: var(--vis-sankey-node-label-background-fill-color);
127
139
  opacity: var(--vis-sankey-node-label-background-opacity);
128
- `;
129
- const hidden = css `
140
+ `
141
+
142
+ export const hidden = css`
130
143
  label: hidden;
131
144
  visibility: hidden;
132
- `;
133
- const forceShow = css `
145
+ `
146
+
147
+ export const forceShow = css`
134
148
  label: forceShow;
135
149
  visibility: visible;
136
- `;
137
- const nodeGroup = css `
150
+ `
151
+
152
+ export const nodeGroup = css`
138
153
  label: node-group;
139
- `;
140
- const node = css `
154
+ `
155
+
156
+ export const node = css`
141
157
  label: node;
142
158
 
143
159
  cursor: var(--vis-sankey-node-cursor);
@@ -147,8 +163,9 @@ const node = css `
147
163
  &:hover {
148
164
  opacity: var(--vis-sankey-node-hover-opacity);
149
165
  }
150
- `;
151
- const nodeIcon = css `
166
+ `
167
+
168
+ export const nodeIcon = css`
152
169
  label: icon;
153
170
 
154
171
  font-family: var(--vis-sankey-icon-font-family);
@@ -159,13 +176,12 @@ const nodeIcon = css `
159
176
  stroke-opacity: var(--vis-sankey-icon-stroke-opacity);
160
177
  user-select: none;
161
178
  pointer-events: none;
162
- `;
163
- const nodeExit = css `
179
+ `
180
+
181
+ export const nodeExit = css`
164
182
  label: node-exit;
165
- `;
166
- const background = css `
167
- label: background;
168
- `;
183
+ `
169
184
 
170
- export { SANKEY_ICON_SIZE, background, forceShow, hidden, label, labelBackground, labelGroup, labelTrimmed, link, linkPath, linkSelectionHelper, links, node, nodeExit, nodeGroup, nodeIcon, nodes, root, sublabel, variables };
171
- //# sourceMappingURL=style.js.map
185
+ export const background = css`
186
+ label: background;
187
+ `
@@ -0,0 +1,95 @@
1
+ /* eslint-disable no-use-before-define */
2
+ import { sankeyLeft, sankeyRight, sankeyCenter, sankeyJustify } from 'd3-sankey'
3
+ import { GraphInputLink, GraphLinkCore, GraphNodeCore } from 'types/graph'
4
+ import { GraphInputNode } from '../../types'
5
+
6
+ export type SankeyInputNode = GraphInputNode
7
+
8
+ export type SankeyInputLink = GraphInputLink
9
+
10
+ export type SankeyNode<N extends SankeyInputNode, L extends SankeyInputLink> = GraphNodeCore<N, L> & {
11
+ id: string;
12
+ /** the node’s value; this is the sum of link.value for the node’s incoming links, or node.fixedValue if defined */
13
+ value: number;
14
+ /** */
15
+ fixedValue?: number;
16
+ /** the node’s zero-based column index, corresponding to its horizontal position */
17
+ layer: number;
18
+ /** */
19
+ isConnected: boolean;
20
+ /** the array of incoming links which have this node as their source */
21
+ sourceLinks?: SankeyLink<N, L>[];
22
+ /** the array of outgoing links which have this node as their target */
23
+ targetLinks: SankeyLink<N, L>[];
24
+ /** the node’s zero-based index within the array of nodes */
25
+ index: number;
26
+ /** the node’s zero-based graph depth, derived from the graph topology */
27
+ depth: number;
28
+ /** node.height - the node’s zero-based graph height, derived from the graph topology */
29
+ height: number;
30
+ /** the node’s minimum horizontal position, derived from node.depth */
31
+ x0: number;
32
+ /** the node’s maximum horizontal position (node.x0 + sankey.nodeWidth) */
33
+ x1: number;
34
+ /** the node’s minimum vertical position */
35
+ y0: number;
36
+ /** the node’s maximum vertical position (node.y1 - node.y0 is proportional to node.value) */
37
+ y1: number;
38
+ /** calculated node width */
39
+ width: number;
40
+ /** internal ui state */
41
+ _state?: {
42
+ greyout?: boolean;
43
+ /* Pre-calculated node height value in pixels that will be used to manually generate the layout when data has no links */
44
+ precalculatedHeight?: number;
45
+ };
46
+ }
47
+
48
+ export type SankeyLink<N extends SankeyInputNode, L extends SankeyInputLink> = GraphLinkCore<N, L> & {
49
+ value: number;
50
+ /** the link’s source node */
51
+ source: SankeyNode<N, L>;
52
+ /** the link’s target node */
53
+ target: SankeyNode<N, L>;
54
+ /** the link’s vertical starting position (at source node) */
55
+ y0: number;
56
+ /** the link’s vertical end position (at target node) */
57
+ y1: number;
58
+ /** the link’s width (proportional to link.value) */
59
+ width: number;
60
+ /** the zero-based index of link within the array of links */
61
+ index: number;
62
+ /** internal ui state */
63
+ _state?: {
64
+ greyout?: boolean;
65
+ };
66
+ }
67
+
68
+ export enum SankeySubLabelPlacement {
69
+ Inline = 'inline',
70
+ Below = 'below',
71
+ }
72
+
73
+ export enum SankeyNodeAlign {
74
+ Left = 'left',
75
+ Right = 'right',
76
+ Center = 'center',
77
+ Justify = 'justify',
78
+ }
79
+
80
+ export const SankeyLayout = {
81
+ [SankeyNodeAlign.Left]: sankeyLeft,
82
+ [SankeyNodeAlign.Right]: sankeyRight,
83
+ [SankeyNodeAlign.Center]: sankeyCenter,
84
+ [SankeyNodeAlign.Justify]: sankeyJustify,
85
+ }
86
+
87
+ export enum SankeyExitTransitionType {
88
+ Default = 'default',
89
+ ToAncestor = 'to ancestor',
90
+ }
91
+
92
+ export enum SankeyEnterTransitionType {
93
+ Default = 'default',
94
+ FromAncestor = 'from ancestor',
95
+ }
@@ -0,0 +1,49 @@
1
+ import { ScalePower } from 'd3-scale'
2
+ // Core
3
+ import { XYComponentConfigInterface, XYComponentConfig } from 'core/xy-component/config'
4
+
5
+ // Types
6
+ import { Scale, ContinuousScale } from 'types/scale'
7
+ import { SymbolType } from 'types/symbol'
8
+ import { ColorAccessor, GenericAccessor, NumericAccessor, StringAccessor } from 'types/accessor'
9
+ import { Position } from 'types/position'
10
+
11
+ export interface ScatterConfigInterface<Datum> extends XYComponentConfigInterface<Datum> {
12
+ /**
13
+ * Size of the scatter plot marker (e.g. diameter if `SymbolType.Circle` is used for `shape`) in pixels.
14
+ * Can be a constant value or an accessor function. But if `sizeRange` is set, then the values will be treated
15
+ * as an input to `sizeScale`, and the resulting size will be different.
16
+ * Default: `10`
17
+ */
18
+ size?: NumericAccessor<Datum>;
19
+ /** Size scale to be used if the `sizeRange` was set. Default: `Scale.scaleSqrt()` */
20
+ sizeScale?: ContinuousScale;
21
+ /** Size range in the format of `[number, number]` to rescale the input values. Default: `undefined` */
22
+ sizeRange?: [number, number];
23
+ /** Shape of the scatter point. Accessor function or constant value: `SymbolType.Circle`, `SymbolType.Cross`, `SymbolType.Diamond`, `SymbolType.Square`,
24
+ * `SymbolType.Star`, `SymbolType.Triangle` or `SymbolType.Wye`.
25
+ * Default: `SymbolType.Circle` */
26
+ shape?: ((d: Datum, i?: number, ...any) => (SymbolType | string)) | SymbolType | string;
27
+ /** Label accessor function or string. Default: `undefined` */
28
+ label?: StringAccessor<Datum>;
29
+ /** Label color. Default: `undefined` */
30
+ labelColor?: ColorAccessor<Datum>;
31
+ /** Optional point cursor. Default: `null` */
32
+ cursor?: StringAccessor<Datum>;
33
+ /** Point color brightness ratio for switching between dark and light text label color. Default: `0.65` */
34
+ labelTextBrightnessRatio?: number;
35
+ /** Label position. Default: `Position.Bottom` */
36
+ labelPosition?: GenericAccessor<Position | string, Datum>;
37
+ }
38
+
39
+ export class ScatterConfig<Datum> extends XYComponentConfig<Datum> implements ScatterConfigInterface<Datum> {
40
+ size = 10
41
+ sizeScale: ScalePower<number, number> = Scale.scaleSqrt()
42
+ sizeRange = undefined
43
+ shape = SymbolType.Circle
44
+ label = undefined
45
+ labelColor = undefined
46
+ labelPosition = Position.Bottom
47
+ cursor = null
48
+ labelTextBrightnessRatio = 0.65
49
+ }