@unovis/ts 1.1.1-beta.6 → 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 -47
  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 -443
  709. package/utils/text.js.map +0 -1
  710. package/utils/type.d.ts +0 -5
@@ -0,0 +1,80 @@
1
+ import { Selection } from 'd3-selection'
2
+ import { Transition } from 'd3-transition'
3
+ import { interpolate } from 'd3-interpolate'
4
+ import { Arc } from 'd3-shape'
5
+
6
+ // Utils
7
+ import { getColor } from 'utils/color'
8
+ import { smartTransition } from 'utils/d3'
9
+
10
+ // Local Types
11
+ import { ChordInputNode, ChordInputLink, ChordNode } from '../types'
12
+
13
+ // Config
14
+ import { ChordDiagramConfig } from '../config'
15
+
16
+ type AnimState = { x0: number; x1: number; y0: number; y1: number }
17
+ export interface ArcNode extends SVGElement {
18
+ _animState?: AnimState;
19
+ }
20
+
21
+ export function createNode<N extends ChordInputNode, L extends ChordInputLink> (
22
+ selection: Selection<SVGPathElement, ChordNode<N>, SVGGElement, unknown>
23
+ ): void {
24
+ selection
25
+ .style('opacity', 0)
26
+ .each((d, i, els) => {
27
+ const arcNode: ArcNode = els[i]
28
+ const angleCenter = (d.x0 + d.x1) / 2
29
+ const angleHalfWidth = (d.x1 - d.x0) / 2
30
+ arcNode._animState = {
31
+ x0: angleCenter - angleHalfWidth * 0.8,
32
+ x1: angleCenter + angleHalfWidth * 0.8,
33
+ y0: d.y0,
34
+ y1: d.y1,
35
+ }
36
+ })
37
+ }
38
+
39
+ export function updateNode<N extends ChordInputNode, L extends ChordInputLink> (
40
+ selection: Selection<SVGPathElement, ChordNode<N>, SVGGElement, unknown>,
41
+ config: ChordDiagramConfig<N, L>,
42
+ arcGen: Arc<unknown, AnimState>,
43
+ duration: number
44
+ ): void {
45
+ const nodeColor = (d: ChordNode<N>): string => getColor(d.data, config.nodeColor, d.height)
46
+
47
+ selection
48
+ .attr('id', d => d.uid)
49
+ .style('transition', `fill ${duration}ms`) // Animate color with CSS because we're using CSS-variables
50
+ .style('fill', nodeColor)
51
+ .style('stroke', nodeColor)
52
+
53
+ if (duration) {
54
+ const transition = smartTransition(selection, duration)
55
+ .style('opacity', 1) as Transition<SVGPathElement, ChordNode<N>, SVGGElement, ChordNode<N>>
56
+
57
+ transition.attrTween('d', (d, i, els) => {
58
+ const arcNode: ArcNode = els[i]
59
+ const nextAnimState = { x0: d.x0, x1: d.x1, y0: d.y0, y1: d.y1 }
60
+ const datum = interpolate(arcNode._animState, nextAnimState)
61
+
62
+ return (t: number): string => {
63
+ arcNode._animState = datum(t)
64
+ return arcGen(arcNode._animState)
65
+ }
66
+ })
67
+ } else {
68
+ selection.attr('d', d => arcGen(d))
69
+ .style('opacity', 1)
70
+ }
71
+ }
72
+
73
+ export function removeNode<N extends ChordInputNode> (
74
+ selection: Selection<SVGPathElement, unknown, SVGGElement, unknown>,
75
+ duration: number
76
+ ): void {
77
+ smartTransition(selection, duration)
78
+ .style('opacity', 0)
79
+ .remove()
80
+ }
@@ -1,9 +1,10 @@
1
- import { css, injectGlobal } from '@emotion/css';
1
+ import { css, injectGlobal } from '@emotion/css'
2
2
 
3
- const root = css `
3
+ export const root = css`
4
4
  label: chord-diagram-component;
5
- `;
6
- const variables = injectGlobal `
5
+ `
6
+
7
+ export const variables = injectGlobal`
7
8
  :root {
8
9
  --vis-chord-diagram-link-fill-color: #cad5f6;
9
10
  --vis-chord-diagram-link-stroke-color: #777777;
@@ -19,17 +20,21 @@ const variables = injectGlobal `
19
20
  body.theme-dark ${`.${root}`} {
20
21
  --vis-chord-diagram-link-fill-color: var(--vis-dark-chord-diagram-link-fill-color);
21
22
  }
22
- `;
23
- const nodes = css `
23
+ `
24
+
25
+ export const nodes = css`
24
26
  label: nodes;
25
- `;
26
- const links = css `
27
+ `
28
+
29
+ export const links = css`
27
30
  label: links;
28
- `;
29
- const labels = css `
31
+ `
32
+
33
+ export const labels = css`
30
34
  label: labels;
31
- `;
32
- const node = css `
35
+ `
36
+
37
+ export const node = css`
33
38
  label: node;
34
39
  stroke-width: 0;
35
40
  fill: var(--vis-color-main);
@@ -38,16 +43,19 @@ const node = css `
38
43
  &:hover {
39
44
  stroke-width: 2;
40
45
  }
41
- `;
42
- const hoveredNode = css `
46
+ `
47
+
48
+ export const hoveredNode = css`
43
49
  label: hovered;
44
50
  fill-opacity: 1;
45
51
  stroke-width: 1.5;
46
- `;
47
- const gLabel = css `
52
+ `
53
+
54
+ export const gLabel = css`
48
55
  label: group-label;
49
- `;
50
- const label = css `
56
+ `
57
+
58
+ export const label = css`
51
59
  label: label;
52
60
 
53
61
  dominant-baseline: middle;
@@ -57,11 +65,13 @@ const label = css `
57
65
  > textPath {
58
66
  dominant-baseline: central;
59
67
  }
60
- `;
61
- const labelExit = css `
68
+ `
69
+
70
+ export const labelExit = css`
62
71
  label: label-exit;
63
- `;
64
- const link = css `
72
+ `
73
+
74
+ export const link = css`
65
75
  label: link;
66
76
 
67
77
  fill: var(--vis-chord-diagram-link-fill-color);
@@ -72,18 +82,17 @@ const link = css `
72
82
  &:hover {
73
83
  fill-opacity: 1;
74
84
  }
75
- `;
76
- const hoveredLink = css `
85
+ `
86
+
87
+ export const hoveredLink = css`
77
88
  label: hovered;
78
89
  fill-opacity: 0.9;
79
- `;
80
- const transparent = css `
90
+ `
91
+
92
+ export const transparent = css`
81
93
  fill-opacity: 0.25;
82
94
 
83
95
  text {
84
96
  fill-opacity: 1;
85
97
  }
86
- `;
87
-
88
- export { gLabel, hoveredLink, hoveredNode, label, labelExit, labels, link, links, node, nodes, root, transparent, variables };
89
- //# sourceMappingURL=style.js.map
98
+ `
@@ -0,0 +1,68 @@
1
+ import { HierarchyRectangularNode } from 'd3-hierarchy'
2
+ import { GraphLinkCore, GraphNodeCore } from 'types'
3
+
4
+ // Node data flow in the component:
5
+ // Input data (N extends ChordInputNode, L extends ChordInputLink)
6
+ // => GraphNodeCore<N>[] (we reference it only in a few places when it's needed, to make the code easier to read)
7
+ // => ChordHierarchyNode (nested object representing node hierarchy)
8
+ // => ChordNode[] and ChordLeafNode[] (HierarchyRectangularNode[] from D3 partition)
9
+
10
+ export interface ChordInputNode {
11
+ id?: string;
12
+ }
13
+
14
+ export interface ChordInputLink {
15
+ id?: string;
16
+ source: number | string | ChordInputNode;
17
+ target: number | string | ChordInputNode;
18
+ }
19
+
20
+ export type ChordDiagramData<
21
+ N extends ChordInputNode,
22
+ L extends ChordInputLink,
23
+ > = {
24
+ nodes: N[];
25
+ links?: L[];
26
+ }
27
+
28
+ export interface ChordHierarchyNode<N> {
29
+ key: string;
30
+ values: (ChordHierarchyNode<N> | N)[];
31
+ depth?: number;
32
+ height?: number;
33
+ value?: number;
34
+ ancestors?: string[];
35
+ }
36
+
37
+ export type ChordNodeState = {
38
+ _state: {
39
+ hovered?: boolean;
40
+ value?: number;
41
+ };
42
+ _prevX1?: number;
43
+ }
44
+
45
+ export type ChordNodeCore<N> = HierarchyRectangularNode<N> & ChordNodeState & {
46
+ data: N;
47
+ uid: string; // Unique id for textPath href
48
+ }
49
+
50
+ export type ChordNodeDatum<N> = ChordHierarchyNode<N> | N;
51
+ export type ChordNode<N extends ChordInputNode> = ChordNodeCore<ChordNodeDatum<N>>
52
+ export type ChordLeafNode<N extends ChordInputNode> = ChordNodeCore<GraphNodeCore<N, ChordInputLink>>
53
+
54
+ export type ChordRibbonPoint = { x0: number; x1: number; y0: number; y1: number; a0: number; a1: number; r: number }
55
+ export interface ChordRibbon<N extends ChordInputNode> {
56
+ source: ChordLeafNode<N>;
57
+ target: ChordLeafNode<N>;
58
+ points: ChordRibbonPoint[];
59
+ data: GraphLinkCore<N, ChordInputLink>;
60
+ _state: {
61
+ hovered?: boolean;
62
+ };
63
+ }
64
+
65
+ export enum ChordLabelAlignment {
66
+ Along = 'along',
67
+ Perpendicular = 'perpendicular',
68
+ }
@@ -0,0 +1,48 @@
1
+ import { XYComponentConfigInterface, XYComponentConfig } from 'core/xy-component/config'
2
+ import { Tooltip } from 'components/tooltip'
3
+
4
+ // Types
5
+ import { NumericAccessor } from 'types/accessor'
6
+ import { ContinuousScale } from 'types/scale'
7
+ import { CrosshairCircle } from './types'
8
+
9
+ // We extend partial XY config interface because x and y properties are optional for Crosshair
10
+ export interface CrosshairConfigInterface<Datum> extends Partial<XYComponentConfigInterface<Datum>> {
11
+ /** Separate array of accessors for stacked components (eg StackedBar, Area). Default: `undefined` */
12
+ yStacked?: NumericAccessor<Datum>[];
13
+ /** Baseline accessor function for stacked values, useful with stacked areas. Default: `null` */
14
+ baseline?: NumericAccessor<Datum>;
15
+ /** An instance of the Tooltip component to be used with Crosshair. Default: `undefined` */
16
+ tooltip?: Tooltip | undefined;
17
+ /** Tooltip template accessor. The function is supposed to return either a valid HTML string or an HTMLElement. Default: `d => ''` */
18
+ template?: (data: Datum, x: number | Date) => string | HTMLElement;
19
+ /** Hide Crosshair when the corresponding element is far from mouse pointer. Default: `true` */
20
+ hideWhenFarFromPointer?: boolean;
21
+ /** Distance in pixels to check in the hideWhenFarFromPointer condition. Default: `100` */
22
+ hideWhenFarFromPointerDistance?: number;
23
+ /** Snap to the nearest data point.
24
+ * If disabled, the tooltip template will receive only the horizontal position of the crosshair and you'll be responsible
25
+ * for getting the underlying data records and crosshair circles (see the `getCircles` configuration option).
26
+ * Default: `true`
27
+ */
28
+ snapToData?: boolean;
29
+ /** Custom function for setting up the crosshair circles, usually needed when `snapToData` is set to `false`.
30
+ * The function receives the horizontal position of the crosshair (in the data space, not in pixels), the data array
31
+ * and the `yScale` instance to help you calculate the correct vertical position of the circles.
32
+ * It has to return an array of the CrosshairCircle objects: `{ y: number; color: string; opacity?: number }[]`.
33
+ * Default: `undefined`
34
+ */
35
+ getCircles?: (x: number, data: Datum[], yScale: ContinuousScale) => CrosshairCircle[];
36
+ }
37
+
38
+ export class CrosshairConfig<Datum> extends XYComponentConfig<Datum> implements CrosshairConfigInterface<Datum> {
39
+ yStacked = undefined
40
+ baseline = null
41
+ duration = 100
42
+ tooltip: Tooltip = undefined
43
+ template: ((data: Datum, x: number | Date) => string | HTMLElement) = (d: Datum): string => ''
44
+ hideWhenFarFromPointer = true
45
+ hideWhenFarFromPointerDistance = 100
46
+ snapToData = true
47
+ getCircles = undefined
48
+ }
@@ -0,0 +1,220 @@
1
+ import { Selection, pointer } from 'd3-selection'
2
+ import { easeLinear } from 'd3-ease'
3
+
4
+ // Core
5
+ import { XYComponentCore } from 'core/xy-component'
6
+ import { Tooltip } from 'components/tooltip'
7
+
8
+ // Utils
9
+ import { isNumber, isArray, getNumber, clamp, getStackedValues, getNearest, isFunction } from 'utils/data'
10
+ import { smartTransition } from 'utils/d3'
11
+ import { getColor } from 'utils/color'
12
+
13
+ // Local Types
14
+ import { CrosshairAccessors, CrosshairCircle } from './types'
15
+
16
+ // Config
17
+ import { CrosshairConfig, CrosshairConfigInterface } from './config'
18
+
19
+ // Styles
20
+ import * as s from './style'
21
+
22
+ export class Crosshair<Datum> extends XYComponentCore<Datum, CrosshairConfig<Datum>, CrosshairConfigInterface<Datum>> {
23
+ static selectors = s
24
+ clippable = true // Don't apply clipping path to this component. See XYContainer
25
+ config: CrosshairConfig<Datum> = new CrosshairConfig()
26
+ container: Selection<SVGSVGElement, any, SVGSVGElement, any>
27
+ line: Selection<SVGLineElement, any, SVGElement, any>
28
+ x = 0
29
+ datum: Datum
30
+ datumIndex: number
31
+ show = false
32
+ private _animFrameId: number = null
33
+
34
+ /** Tooltip component to be used by Crosshair if not provided by the config.
35
+ * This property is supposed to be set externally by a container component like XYContainer. */
36
+ public tooltip: Tooltip
37
+
38
+ /** Accessors passed externally (e.g. from XYContainer) */
39
+ private _accessors: CrosshairAccessors<Datum> = {
40
+ x: undefined,
41
+ y: undefined,
42
+ yStacked: undefined,
43
+ baseline: undefined,
44
+ }
45
+
46
+ public set accessors (accessors: CrosshairAccessors<Datum>) { this._accessors = accessors }
47
+ public get accessors (): CrosshairAccessors<Datum> {
48
+ const { config } = this
49
+
50
+ const hasConfig = !!(config.x || config.y || config.yStacked)
51
+ const x = hasConfig ? config.x : this._accessors.x
52
+ const yAcc = hasConfig ? config.y : this._accessors.y
53
+ const y = yAcc ? (isArray(yAcc) ? yAcc : [yAcc]) : undefined
54
+ const yStacked = hasConfig ? config.yStacked : this._accessors.yStacked
55
+ const baseline = config.baseline ?? this._accessors.baseline
56
+
57
+ return { x, y, yStacked, baseline }
58
+ }
59
+
60
+ constructor (config?: CrosshairConfigInterface<Datum>) {
61
+ super()
62
+ if (config) this.config.init(config)
63
+
64
+ this.g.style('opacity', this.show ? 1 : 0)
65
+ this.line = this.g.append('line')
66
+ .attr('class', s.line)
67
+ }
68
+
69
+ setContainer (containerSvg: Selection<SVGSVGElement, unknown, SVGSVGElement, unknown>): void {
70
+ // Set up mousemove event for Crosshair
71
+ this.container = containerSvg
72
+ this.container.on('mousemove.crosshair', this._onMouseMove.bind(this))
73
+ this.container.on('mouseout.crosshair', this._onMouseOut.bind(this))
74
+ }
75
+
76
+ _render (customDuration?: number): void {
77
+ const { config } = this
78
+ if (config.snapToData && !this.datum) return
79
+ const duration = isNumber(customDuration) ? customDuration : config.duration
80
+
81
+ smartTransition(this.g, duration)
82
+ .style('opacity', this.show ? 1 : 0)
83
+
84
+ this.line
85
+ .attr('y1', 0)
86
+ .attr('y1', this._height)
87
+
88
+ smartTransition(this.line, duration, easeLinear)
89
+ .attr('x1', this.x)
90
+ .attr('x2', this.x)
91
+
92
+ const circleData = this.getCircleData()
93
+ const circles = this.g
94
+ .selectAll<SVGCircleElement, CrosshairCircle>('circle')
95
+ .data(circleData, (d, i) => d.id ?? i)
96
+
97
+ const circlesEnter = circles.enter()
98
+ .append('circle')
99
+ .attr('class', s.circle)
100
+ .attr('r', 0)
101
+ .attr('cx', this.x)
102
+ .attr('cy', d => d.y)
103
+ .style('fill', d => d.color)
104
+
105
+ smartTransition(circlesEnter.merge(circles), duration, easeLinear)
106
+ .attr('cx', this.x)
107
+ .attr('cy', d => d.y)
108
+ .attr('r', 4)
109
+ .style('opacity', d => d.opacity)
110
+ .style('fill', d => d.color)
111
+
112
+ circles.exit().remove()
113
+ }
114
+
115
+ hide (): void {
116
+ this._onMouseOut()
117
+ }
118
+
119
+ _onMouseMove (event: MouseEvent): void {
120
+ const { config, datamodel, element } = this
121
+ if (!this.accessors.x && datamodel.data?.length) {
122
+ console.warn('Unovis | Crosshair: X accessor function has not been configured. Please check if it\'s present in the configuration object')
123
+ }
124
+ const [x] = pointer(event, element)
125
+ const xRange = this.xScale.range()
126
+
127
+ if (config.snapToData) {
128
+ if (!this.accessors.y && !this.accessors.yStacked && datamodel.data?.length) {
129
+ console.warn('Unovis | Crosshair: Y accessors have not been configured. Please check if they\'re present in the configuration object')
130
+ }
131
+ const scaleX = this.xScale
132
+ const valueX = scaleX.invert(x) as number
133
+
134
+ this.datum = getNearest(datamodel.data, valueX, this.accessors.x)
135
+ this.datumIndex = datamodel.data.indexOf(this.datum)
136
+ if (!this.datum) return
137
+
138
+ this.x = clamp(Math.round(scaleX(getNumber(this.datum, this.accessors.x, this.datumIndex))), 0, this._width)
139
+
140
+ // Show the crosshair only if it's in the chart range and not far from mouse pointer (if configured)
141
+ this.show = (this.x >= 0) && (this.x <= this._width) && (!config.hideWhenFarFromPointer || (Math.abs(this.x - x) < config.hideWhenFarFromPointerDistance))
142
+ } else {
143
+ const tolerance = 2 // Show the crosshair when it is at least 2 pixels close to the chart area
144
+ this.x = clamp(x, xRange[0], xRange[1])
145
+ this.show = (x >= (xRange[0] - tolerance)) && (x <= (xRange[1] + tolerance))
146
+ }
147
+
148
+ window.cancelAnimationFrame(this._animFrameId)
149
+ this._animFrameId = window.requestAnimationFrame(() => {
150
+ this._render()
151
+ })
152
+
153
+ if (this.show) this._showTooltip(event)
154
+ else this._hideTooltip()
155
+ }
156
+
157
+ _onMouseOut (): void {
158
+ this.show = false
159
+
160
+ window.cancelAnimationFrame(this._animFrameId)
161
+ this._animFrameId = window.requestAnimationFrame(() => {
162
+ this._render()
163
+ })
164
+ this._hideTooltip()
165
+ }
166
+
167
+ _showTooltip (event: MouseEvent): void {
168
+ const { config } = this
169
+ const tooltip = config.tooltip ?? this.tooltip
170
+ if (!tooltip) return
171
+
172
+ const container = tooltip.getContainer() || this.container.node()
173
+ const [x, y] = tooltip.isContainerBody() ? [event.clientX, event.clientY] : pointer(event, container)
174
+ const content = config.template(this.datum, this.xScale.invert(this.x))
175
+ if (content) tooltip.show(content, { x, y })
176
+ }
177
+
178
+ _hideTooltip (): void {
179
+ const { config } = this
180
+ const tooltip = config.tooltip ?? this.tooltip
181
+ tooltip?.hide()
182
+ }
183
+
184
+ // We don't want Crosshair to be be taken in to account in domain calculations
185
+ getYDataExtent (): number[] {
186
+ return [undefined, undefined]
187
+ }
188
+
189
+ private getCircleData (): CrosshairCircle[] {
190
+ const { config, datamodel: { data } } = this
191
+
192
+ if (isFunction(config.getCircles)) return config.getCircles(this.xScale.invert(this.x), data, this.yScale)
193
+
194
+ if (config.snapToData && this.datum) {
195
+ const yAccessors = this.accessors.y ?? []
196
+ const yStackedAccessors = this.accessors.yStacked ?? []
197
+ const baselineValue = getNumber(this.datum, this.accessors.baseline, this.datumIndex) || 0
198
+ const stackedValues: CrosshairCircle[] = getStackedValues(this.datum, this.datumIndex, ...yStackedAccessors)
199
+ .map((value, index, arr) => ({
200
+ y: this.yScale(value + baselineValue),
201
+ opacity: getNumber(this.datum, yStackedAccessors[index]) ? 1 : 0,
202
+ color: getColor(this.datum, config.color, index),
203
+ }))
204
+
205
+ const regularValues: CrosshairCircle[] = yAccessors
206
+ .map((a, index) => {
207
+ const value = getNumber(this.datum, a)
208
+ return {
209
+ y: this.yScale(value),
210
+ opacity: value ? 1 : 0,
211
+ color: getColor(this.datum, config.color, stackedValues.length + index),
212
+ }
213
+ })
214
+
215
+ return stackedValues.concat(regularValues)
216
+ }
217
+
218
+ return []
219
+ }
220
+ }
@@ -1,25 +1,25 @@
1
- import { injectGlobal, css } from '@emotion/css';
1
+ import { css, injectGlobal } from '@emotion/css'
2
2
 
3
- const globalStyles = injectGlobal `
3
+ export const globalStyles = injectGlobal`
4
4
  :root {
5
5
  --vis-crosshair-line-stroke-color: #888;
6
6
  --vis-crosshair-circle-stroke-color: #fff;
7
7
  }
8
- `;
9
- const root = css `
8
+ `
9
+
10
+ export const root = css`
10
11
  label: crosshair-component;
11
- `;
12
- const line = css `
12
+ `
13
+
14
+ export const line = css`
13
15
  stroke: var(--vis-crosshair-line-stroke-color);
14
16
  stroke-opacity: 1;
15
17
  pointer-events: none;
16
- `;
17
- const circle = css `
18
+ `
19
+
20
+ export const circle = css`
18
21
  stroke: var(--vis-crosshair-circle-stroke-color);
19
22
  stroke-width: 1;
20
23
  stroke-opacity: 0.75;
21
24
  pointer-events: none;
22
- `;
23
-
24
- export { circle, globalStyles, line, root };
25
- //# sourceMappingURL=style.js.map
25
+ `
@@ -0,0 +1,15 @@
1
+ import { NumericAccessor } from 'types/accessor'
2
+
3
+ export type CrosshairCircle = {
4
+ y: number;
5
+ color: string;
6
+ opacity?: number;
7
+ id?: string;
8
+ }
9
+
10
+ export type CrosshairAccessors<Datum> = {
11
+ x: NumericAccessor<Datum> | undefined;
12
+ y: NumericAccessor<Datum>[] | undefined;
13
+ yStacked: NumericAccessor<Datum>[] | undefined;
14
+ baseline: NumericAccessor<Datum> | undefined;
15
+ }
@@ -0,0 +1,65 @@
1
+ // Core
2
+ import { ComponentConfigInterface, ComponentConfig } from 'core/component/config'
3
+
4
+ // Types
5
+ import { ColorAccessor, NumericAccessor } from 'types/accessor'
6
+
7
+ export interface DonutConfigInterface<Datum> extends ComponentConfigInterface {
8
+ /** Accessor function for getting the unique data record id. Used for more persistent data updates. Default: `(d, i) => d.id ?? i` */
9
+ id?: ((d: Datum, i: number, ...any) => string | number);
10
+ /** Value accessor function. Default: `undefined` */
11
+ value: NumericAccessor<Datum>;
12
+ /** Diagram angle range. Default: `[0, 2 * Math.PI]` */
13
+ angleRange?: [number, number];
14
+ /** Pad angle. Default: `0` */
15
+ padAngle?: number;
16
+ /** Custom sort function. Default: `undefined` */
17
+ sortFunction?: (a: Datum, b: Datum) => number;
18
+ /** Corner Radius. Default: `0` */
19
+ cornerRadius?: number;
20
+ /** Color accessor function. Default: `undefined` */
21
+ color?: ColorAccessor<Datum>;
22
+ /** Explicitly set the donut outer radius. Default: `undefined` */
23
+ radius?: number;
24
+ /** Arc width in pixels. Set to `0` if you want to have a pie chart. Default: `20` */
25
+ arcWidth?: number;
26
+ /** Central label accessor function or text. Default: `undefined` */
27
+ centralLabel?: string;
28
+ /** Central sub-label accessor function or text. Default: `undefined` */
29
+ centralSubLabel?: string;
30
+ /** Enables wrapping for the sub-label. Default: `true` */
31
+ centralSubLabelWrap?: boolean;
32
+ /** When true, the component will display empty segments (the ones that have `0` values) as tiny slices.
33
+ * Default: `false`
34
+ */
35
+ showEmptySegments?: boolean;
36
+ /** Angular size for empty segments in radians. Default: `0.5 * Math.PI / 180` */
37
+ emptySegmentAngle?: number;
38
+ /** Show donut background. The color is configurable via
39
+ * the `--vis-donut-background-color` and `--vis-dark-donut-background-color` CSS variables.
40
+ * Default: `true`
41
+ */
42
+ showBackground?: boolean;
43
+ /** Background angle range. When undefined, the value will be taken from `angleRange`. Default: `undefined` */
44
+ backgroundAngleRange?: [number, number];
45
+ }
46
+
47
+ export class DonutConfig<Datum> extends ComponentConfig implements DonutConfigInterface<Datum> {
48
+ // eslint-disable-next-line dot-notation
49
+ id = (d: Datum, i: number): string | number => d['id'] ?? i
50
+ value = undefined
51
+ angleRange: [number, number] = [0, 2 * Math.PI]
52
+ padAngle = 0
53
+ sortFunction = undefined
54
+ cornerRadius = 0
55
+ color = undefined
56
+ radius = undefined
57
+ arcWidth = 20
58
+ centralLabel = undefined
59
+ centralSubLabel = undefined
60
+ centralSubLabelWrap = true
61
+ showEmptySegments = false
62
+ emptySegmentAngle = 0.5 * Math.PI / 180
63
+ showBackground = true
64
+ backgroundAngleRange = undefined
65
+ }