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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (710) hide show
  1. package/components/area/config.d.ts +25 -0
  2. package/components/area/config.js +16 -0
  3. package/components/area/config.js.map +1 -0
  4. package/components/area/index.d.ts +19 -0
  5. package/components/area/index.js +102 -0
  6. package/components/area/index.js.map +1 -0
  7. package/components/area/style.d.ts +3 -0
  8. package/{src/components/area/style.ts → components/area/style.js} +10 -9
  9. package/components/area/style.js.map +1 -0
  10. package/components/area/types.d.ts +6 -0
  11. package/components/axis/config.d.ts +71 -0
  12. package/components/axis/config.js +32 -0
  13. package/components/axis/config.js.map +1 -0
  14. package/components/axis/index.d.ts +44 -0
  15. package/components/axis/index.js +305 -0
  16. package/components/axis/index.js.map +1 -0
  17. package/components/axis/style.d.ts +9 -0
  18. package/{src/components/axis/style.ts → components/axis/style.js} +22 -27
  19. package/components/axis/style.js.map +1 -0
  20. package/components/axis/types.d.ts +4 -0
  21. package/components/axis/types.js +8 -0
  22. package/components/axis/types.js.map +1 -0
  23. package/components/brush/config.d.ts +42 -0
  24. package/components/brush/config.js +24 -0
  25. package/components/brush/config.js.map +1 -0
  26. package/components/brush/index.d.ts +28 -0
  27. package/components/brush/index.js +199 -0
  28. package/components/brush/index.js.map +1 -0
  29. package/components/brush/style.d.ts +5 -0
  30. package/{src/components/brush/style.ts → components/brush/style.js} +14 -15
  31. package/components/brush/style.js.map +1 -0
  32. package/components/brush/types.d.ts +7 -0
  33. package/components/brush/types.js +8 -0
  34. package/components/brush/types.js.map +1 -0
  35. package/components/bullet-legend/config.d.ts +34 -0
  36. package/components/bullet-legend/config.js +16 -0
  37. package/components/bullet-legend/config.js.map +1 -0
  38. package/components/bullet-legend/index.d.ts +19 -0
  39. package/components/bullet-legend/index.js +79 -0
  40. package/components/bullet-legend/index.js.map +1 -0
  41. package/components/bullet-legend/style.d.ts +6 -0
  42. package/{src/components/bullet-legend/style.ts → components/bullet-legend/style.js} +16 -18
  43. package/components/bullet-legend/style.js.map +1 -0
  44. package/components/bullet-legend/types.d.ts +7 -0
  45. package/components/bullet-legend/types.js +2 -0
  46. package/components/bullet-legend/types.js.map +1 -0
  47. package/components/chord-diagram/config.d.ts +44 -0
  48. package/components/chord-diagram/config.js +25 -0
  49. package/components/chord-diagram/config.js.map +1 -0
  50. package/components/chord-diagram/index.d.ts +42 -0
  51. package/components/chord-diagram/index.js +305 -0
  52. package/components/chord-diagram/index.js.map +1 -0
  53. package/components/chord-diagram/modules/label.d.ts +8 -0
  54. package/components/chord-diagram/modules/label.js +115 -0
  55. package/components/chord-diagram/modules/label.js.map +1 -0
  56. package/components/chord-diagram/modules/link.d.ts +21 -0
  57. package/components/chord-diagram/modules/link.js +63 -0
  58. package/components/chord-diagram/modules/link.js.map +1 -0
  59. package/components/chord-diagram/modules/node.d.ts +17 -0
  60. package/components/chord-diagram/modules/node.js +52 -0
  61. package/components/chord-diagram/modules/node.js.map +1 -0
  62. package/components/chord-diagram/style.d.ts +13 -0
  63. package/{src/components/chord-diagram/style.ts → components/chord-diagram/style.js} +30 -39
  64. package/components/chord-diagram/style.js.map +1 -0
  65. package/components/chord-diagram/types.d.ts +58 -0
  66. package/components/chord-diagram/types.js +8 -0
  67. package/components/chord-diagram/types.js.map +1 -0
  68. package/components/crosshair/config.d.ts +43 -0
  69. package/components/crosshair/config.js +19 -0
  70. package/components/crosshair/config.js.map +1 -0
  71. package/components/crosshair/index.d.ts +35 -0
  72. package/components/crosshair/index.js +183 -0
  73. package/components/crosshair/index.js.map +1 -0
  74. package/components/crosshair/style.d.ts +4 -0
  75. package/{src/components/crosshair/style.ts → components/crosshair/style.js} +12 -12
  76. package/components/crosshair/style.js.map +1 -0
  77. package/components/crosshair/types.d.ts +13 -0
  78. package/components/crosshair/types.js +2 -0
  79. package/components/crosshair/types.js.map +1 -0
  80. package/components/donut/config.d.ts +59 -0
  81. package/components/donut/config.js +28 -0
  82. package/components/donut/config.js.map +1 -0
  83. package/components/donut/index.d.ts +21 -0
  84. package/components/donut/index.js +107 -0
  85. package/components/donut/index.js.map +1 -0
  86. package/components/donut/modules/arc.d.ts +10 -0
  87. package/components/donut/modules/arc.js +59 -0
  88. package/components/donut/modules/arc.js.map +1 -0
  89. package/components/donut/style.d.ts +7 -0
  90. package/{src/components/donut/style.ts → components/donut/style.js} +18 -20
  91. package/components/donut/style.js.map +1 -0
  92. package/components/donut/types.d.ts +20 -0
  93. package/components/flow-legend/config.d.ts +29 -0
  94. package/components/flow-legend/config.js +18 -0
  95. package/components/flow-legend/config.js.map +1 -0
  96. package/components/flow-legend/index.d.ts +16 -0
  97. package/components/flow-legend/index.js +75 -0
  98. package/components/flow-legend/index.js.map +1 -0
  99. package/components/flow-legend/style.d.ts +8 -0
  100. package/{src/components/flow-legend/style.ts → components/flow-legend/style.js} +21 -25
  101. package/components/flow-legend/style.js.map +1 -0
  102. package/components/flow-legend/types.d.ts +9 -0
  103. package/components/flow-legend/types.js +8 -0
  104. package/components/flow-legend/types.js.map +1 -0
  105. package/components/free-brush/config.d.ts +45 -0
  106. package/components/free-brush/config.js +24 -0
  107. package/components/free-brush/config.js.map +1 -0
  108. package/components/free-brush/index.d.ts +20 -0
  109. package/components/free-brush/index.js +192 -0
  110. package/components/free-brush/index.js.map +1 -0
  111. package/components/free-brush/style.d.ts +4 -0
  112. package/{src/components/free-brush/style.ts → components/free-brush/style.js} +12 -12
  113. package/components/free-brush/style.js.map +1 -0
  114. package/components/free-brush/types.d.ts +7 -0
  115. package/components/free-brush/types.js +9 -0
  116. package/components/free-brush/types.js.map +1 -0
  117. package/components/graph/config.d.ts +238 -0
  118. package/components/graph/config.js +84 -0
  119. package/components/graph/config.js.map +1 -0
  120. package/components/graph/index.d.ts +126 -0
  121. package/components/graph/index.js +656 -0
  122. package/components/graph/index.js.map +1 -0
  123. package/components/graph/modules/layout-helpers.d.ts +21 -0
  124. package/components/graph/modules/layout-helpers.js +69 -0
  125. package/components/graph/modules/layout-helpers.js.map +1 -0
  126. package/components/graph/modules/layout.d.ts +10 -0
  127. package/components/graph/modules/layout.js +399 -0
  128. package/components/graph/modules/layout.js.map +1 -0
  129. package/components/graph/modules/link/helper.d.ts +25 -0
  130. package/components/graph/modules/link/helper.js +74 -0
  131. package/components/graph/modules/link/helper.js.map +1 -0
  132. package/components/graph/modules/link/index.d.ts +11 -0
  133. package/components/graph/modules/link/index.js +212 -0
  134. package/components/graph/modules/link/index.js.map +1 -0
  135. package/components/graph/modules/link/style.d.ts +15 -0
  136. package/{src/components/graph/modules/link/style.ts → components/graph/modules/link/style.js} +34 -45
  137. package/components/graph/modules/link/style.js.map +1 -0
  138. package/components/graph/modules/node/helper.d.ts +21 -0
  139. package/components/graph/modules/node/helper.js +126 -0
  140. package/components/graph/modules/node/helper.js.map +1 -0
  141. package/components/graph/modules/node/index.d.ts +11 -0
  142. package/components/graph/modules/node/index.js +252 -0
  143. package/components/graph/modules/node/index.js.map +1 -0
  144. package/components/graph/modules/node/style.d.ts +24 -0
  145. package/{src/components/graph/modules/node/style.ts → components/graph/modules/node/style.js} +52 -72
  146. package/components/graph/modules/node/style.js.map +1 -0
  147. package/components/graph/modules/panel/helper.d.ts +18 -0
  148. package/components/graph/modules/panel/helper.js +111 -0
  149. package/components/graph/modules/panel/helper.js.map +1 -0
  150. package/components/graph/modules/panel/index.d.ts +7 -0
  151. package/components/graph/modules/panel/index.js +98 -0
  152. package/components/graph/modules/panel/index.js.map +1 -0
  153. package/components/graph/modules/panel/style.d.ts +14 -0
  154. package/{src/components/graph/modules/panel/style.ts → components/graph/modules/panel/style.js} +32 -42
  155. package/components/graph/modules/panel/style.js.map +1 -0
  156. package/components/graph/modules/shape.d.ts +6 -0
  157. package/components/graph/modules/shape.js +80 -0
  158. package/components/graph/modules/shape.js.map +1 -0
  159. package/components/graph/modules/zoom-levels.d.ts +6 -0
  160. package/components/graph/modules/zoom-levels.js +10 -0
  161. package/components/graph/modules/zoom-levels.js.map +1 -0
  162. package/components/graph/style.d.ts +6 -0
  163. package/components/graph/style.js +66 -0
  164. package/components/graph/style.js.map +1 -0
  165. package/components/graph/types.d.ts +125 -0
  166. package/components/graph/types.js +30 -0
  167. package/components/graph/types.js.map +1 -0
  168. package/components/grouped-bar/config.d.ts +36 -0
  169. package/components/grouped-bar/config.js +20 -0
  170. package/components/grouped-bar/config.js.map +1 -0
  171. package/components/grouped-bar/index.d.ts +32 -0
  172. package/components/grouped-bar/index.js +249 -0
  173. package/components/grouped-bar/index.js.map +1 -0
  174. package/components/grouped-bar/style.d.ts +5 -0
  175. package/{src/components/grouped-bar/style.ts → components/grouped-bar/style.js} +14 -15
  176. package/components/grouped-bar/style.js.map +1 -0
  177. package/components/leaflet-flow-map/config.d.ts +46 -0
  178. package/components/leaflet-flow-map/config.js +25 -0
  179. package/components/leaflet-flow-map/config.js.map +1 -0
  180. package/components/leaflet-flow-map/index.d.ts +52 -0
  181. package/components/leaflet-flow-map/index.js +220 -0
  182. package/components/leaflet-flow-map/index.js.map +1 -0
  183. package/components/leaflet-flow-map/renderer-utils.d.ts +5 -0
  184. package/components/leaflet-flow-map/renderer-utils.js +15 -0
  185. package/components/leaflet-flow-map/renderer-utils.js.map +1 -0
  186. package/components/leaflet-flow-map/renderer.d.ts +26 -0
  187. package/components/leaflet-flow-map/renderer.js +117 -0
  188. package/components/leaflet-flow-map/renderer.js.map +1 -0
  189. package/components/leaflet-flow-map/shaders.d.ts +2 -0
  190. package/{src/components/leaflet-flow-map/shaders.ts → components/leaflet-flow-map/shaders.js} +7 -4
  191. package/components/leaflet-flow-map/shaders.js.map +1 -0
  192. package/components/leaflet-flow-map/types.d.ts +23 -0
  193. package/components/leaflet-map/config.d.ts +193 -0
  194. package/components/leaflet-map/config.js +71 -0
  195. package/components/leaflet-map/config.js.map +1 -0
  196. package/components/leaflet-map/index.d.ts +130 -0
  197. package/components/leaflet-map/index.js +690 -0
  198. package/components/leaflet-map/index.js.map +1 -0
  199. package/components/leaflet-map/leaflet.css.js +5 -0
  200. package/components/leaflet-map/leaflet.css.js.map +1 -0
  201. package/components/leaflet-map/modules/clusterBackground.d.ts +5 -0
  202. package/components/leaflet-map/modules/clusterBackground.js +27 -0
  203. package/components/leaflet-map/modules/clusterBackground.js.map +1 -0
  204. package/components/leaflet-map/modules/donut.d.ts +3 -0
  205. package/components/leaflet-map/modules/donut.js +25 -0
  206. package/components/leaflet-map/modules/donut.js.map +1 -0
  207. package/components/leaflet-map/modules/map.d.ts +14 -0
  208. package/components/leaflet-map/modules/map.js +154 -0
  209. package/components/leaflet-map/modules/map.js.map +1 -0
  210. package/components/leaflet-map/modules/node.d.ts +9 -0
  211. package/components/leaflet-map/modules/node.js +162 -0
  212. package/components/leaflet-map/modules/node.js.map +1 -0
  213. package/components/leaflet-map/modules/selectionRing.d.ts +7 -0
  214. package/components/leaflet-map/modules/selectionRing.js +41 -0
  215. package/components/leaflet-map/modules/selectionRing.js.map +1 -0
  216. package/components/leaflet-map/modules/utils.d.ts +50 -0
  217. package/components/leaflet-map/modules/utils.js +210 -0
  218. package/components/leaflet-map/modules/utils.js.map +1 -0
  219. package/{src/components → components}/leaflet-map/renderer/leaflet-maplibre-gl.js +78 -76
  220. package/components/leaflet-map/renderer/leaflet-maplibre-gl.js.map +1 -0
  221. package/components/leaflet-map/renderer/map-style.d.ts +4 -0
  222. package/components/leaflet-map/renderer/map-style.js +15 -0
  223. package/components/leaflet-map/renderer/map-style.js.map +1 -0
  224. package/components/leaflet-map/renderer/mapboxgl/mapboxgl-dark-theme.json.js +40 -0
  225. package/components/leaflet-map/renderer/mapboxgl/mapboxgl-dark-theme.json.js.map +1 -0
  226. package/components/leaflet-map/renderer/mapboxgl/mapboxgl-light-theme.json.js +40 -0
  227. package/components/leaflet-map/renderer/mapboxgl/mapboxgl-light-theme.json.js.map +1 -0
  228. package/components/leaflet-map/renderer/mapboxgl/mapboxgl-settings.json.js +4981 -0
  229. package/components/leaflet-map/renderer/mapboxgl/mapboxgl-settings.json.js.map +1 -0
  230. package/components/leaflet-map/renderer/mapboxgl-layer.d.ts +8 -0
  231. package/components/leaflet-map/renderer/mapboxgl-layer.js +27 -0
  232. package/components/leaflet-map/renderer/mapboxgl-layer.js.map +1 -0
  233. package/components/leaflet-map/renderer/mapboxgl-utils.d.ts +4 -0
  234. package/components/leaflet-map/renderer/mapboxgl-utils.js +39 -0
  235. package/components/leaflet-map/renderer/mapboxgl-utils.js.map +1 -0
  236. package/{src/components → components}/leaflet-map/renderer/maplibre-gl.css.js +4 -2
  237. package/components/leaflet-map/renderer/maplibre-gl.css.js.map +1 -0
  238. package/components/leaflet-map/style.d.ts +52 -0
  239. package/components/leaflet-map/style.js +183 -0
  240. package/components/leaflet-map/style.js.map +1 -0
  241. package/components/leaflet-map/types.d.ts +75 -0
  242. package/components/leaflet-map/types.js +15 -0
  243. package/components/leaflet-map/types.js.map +1 -0
  244. package/components/line/config.d.ts +30 -0
  245. package/components/line/config.js +17 -0
  246. package/components/line/config.js.map +1 -0
  247. package/components/line/index.d.ts +27 -0
  248. package/components/line/index.js +152 -0
  249. package/components/line/index.js.map +1 -0
  250. package/components/line/style.d.ts +6 -0
  251. package/{src/components/line/style.ts → components/line/style.js} +16 -18
  252. package/components/line/style.js.map +1 -0
  253. package/components/line/types.d.ts +12 -0
  254. package/components/nested-donut/config.d.ts +59 -0
  255. package/components/nested-donut/config.js +19 -0
  256. package/components/nested-donut/config.js.map +1 -0
  257. package/components/nested-donut/index.d.ts +38 -0
  258. package/components/nested-donut/index.js +133 -0
  259. package/components/nested-donut/index.js.map +1 -0
  260. package/components/nested-donut/modules/arc.d.ts +17 -0
  261. package/components/nested-donut/modules/arc.js +50 -0
  262. package/components/nested-donut/modules/arc.js.map +1 -0
  263. package/components/nested-donut/modules/label.d.ts +7 -0
  264. package/components/nested-donut/modules/label.js +34 -0
  265. package/components/nested-donut/modules/label.js.map +1 -0
  266. package/components/nested-donut/style.d.ts +26 -0
  267. package/components/nested-donut/style.js +70 -0
  268. package/components/nested-donut/style.js.map +1 -0
  269. package/components/nested-donut/types.d.ts +24 -0
  270. package/components/nested-donut/types.js +11 -0
  271. package/components/nested-donut/types.js.map +1 -0
  272. package/components/sankey/config.d.ts +162 -0
  273. package/components/sankey/config.js +65 -0
  274. package/components/sankey/config.js.map +1 -0
  275. package/components/sankey/index.d.ts +59 -0
  276. package/components/sankey/index.js +306 -0
  277. package/components/sankey/index.js.map +1 -0
  278. package/components/sankey/modules/label.d.ts +23 -0
  279. package/components/sankey/modules/label.js +168 -0
  280. package/components/sankey/modules/label.js.map +1 -0
  281. package/components/sankey/modules/link.d.ts +14 -0
  282. package/components/sankey/modules/link.js +108 -0
  283. package/components/sankey/modules/link.js.map +1 -0
  284. package/components/sankey/modules/node.d.ts +10 -0
  285. package/components/sankey/modules/node.js +156 -0
  286. package/components/sankey/modules/node.js.map +1 -0
  287. package/components/sankey/style.d.ts +20 -0
  288. package/{src/components/sankey/style.ts → components/sankey/style.js} +44 -60
  289. package/components/sankey/style.js.map +1 -0
  290. package/components/sankey/types.d.ts +84 -0
  291. package/components/sankey/types.js +34 -0
  292. package/components/sankey/types.js.map +1 -0
  293. package/components/scatter/config.d.ts +44 -0
  294. package/components/scatter/config.js +23 -0
  295. package/components/scatter/config.js.map +1 -0
  296. package/components/scatter/index.d.ts +28 -0
  297. package/components/scatter/index.js +167 -0
  298. package/components/scatter/index.js.map +1 -0
  299. package/components/scatter/modules/point.d.ts +7 -0
  300. package/components/scatter/modules/point.js +86 -0
  301. package/components/scatter/modules/point.js.map +1 -0
  302. package/components/scatter/modules/utils.d.ts +11 -0
  303. package/components/scatter/modules/utils.js +112 -0
  304. package/components/scatter/modules/utils.js.map +1 -0
  305. package/components/scatter/style.d.ts +5 -0
  306. package/{src/components/scatter/style.ts → components/scatter/style.js} +14 -15
  307. package/components/scatter/style.js.map +1 -0
  308. package/components/scatter/types.d.ts +19 -0
  309. package/components/stacked-bar/config.d.ts +38 -0
  310. package/components/stacked-bar/config.js +20 -0
  311. package/components/stacked-bar/config.js.map +1 -0
  312. package/components/stacked-bar/index.d.ts +28 -0
  313. package/components/stacked-bar/index.js +208 -0
  314. package/components/stacked-bar/index.js.map +1 -0
  315. package/components/stacked-bar/style.d.ts +5 -0
  316. package/{src/components/stacked-bar/style.ts → components/stacked-bar/style.js} +14 -15
  317. package/components/stacked-bar/style.js.map +1 -0
  318. package/components/stacked-bar/types.d.ts +5 -0
  319. package/components/timeline/config.d.ts +43 -0
  320. package/components/timeline/config.js +24 -0
  321. package/components/timeline/config.js.map +1 -0
  322. package/components/timeline/index.d.ts +41 -0
  323. package/components/timeline/index.js +244 -0
  324. package/components/timeline/index.js.map +1 -0
  325. package/components/timeline/style.d.ts +13 -0
  326. package/{src/components/timeline/style.ts → components/timeline/style.js} +30 -39
  327. package/components/timeline/style.js.map +1 -0
  328. package/components/tooltip/config.d.ts +68 -0
  329. package/components/tooltip/config.js +20 -0
  330. package/components/tooltip/config.js.map +1 -0
  331. package/components/tooltip/index.d.ts +36 -0
  332. package/components/tooltip/index.js +184 -0
  333. package/components/tooltip/index.js.map +1 -0
  334. package/{src/components → components}/tooltip/style.js +14 -11
  335. package/components/tooltip/style.js.map +1 -0
  336. package/components/topojson-map/config.d.ts +99 -0
  337. package/components/topojson-map/config.js +42 -0
  338. package/components/topojson-map/config.js.map +1 -0
  339. package/components/topojson-map/index.d.ts +52 -0
  340. package/components/topojson-map/index.js +355 -0
  341. package/components/topojson-map/index.js.map +1 -0
  342. package/components/topojson-map/style.d.ts +11 -0
  343. package/{src/components/topojson-map/style.ts → components/topojson-map/style.js} +26 -33
  344. package/components/topojson-map/style.js.map +1 -0
  345. package/components/topojson-map/types.d.ts +78 -0
  346. package/components/topojson-map/types.js +80 -0
  347. package/components/topojson-map/types.js.map +1 -0
  348. package/components/topojson-map/utils.d.ts +3 -0
  349. package/components/topojson-map/utils.js +30 -0
  350. package/components/topojson-map/utils.js.map +1 -0
  351. package/components/vis-controls/config.d.ts +12 -0
  352. package/components/vis-controls/config.js +13 -0
  353. package/components/vis-controls/config.js.map +1 -0
  354. package/components/vis-controls/index.d.ts +14 -0
  355. package/components/vis-controls/index.js +52 -0
  356. package/components/vis-controls/index.js.map +1 -0
  357. package/components/vis-controls/style.d.ts +11 -0
  358. package/{src/components/vis-controls/style.ts → components/vis-controls/style.js} +27 -34
  359. package/components/vis-controls/style.js.map +1 -0
  360. package/components/vis-controls/types.d.ts +13 -0
  361. package/components/vis-controls/types.js +8 -0
  362. package/components/vis-controls/types.js.map +1 -0
  363. package/components/xy-labels/config.d.ts +48 -0
  364. package/components/xy-labels/config.js +25 -0
  365. package/components/xy-labels/config.js.map +1 -0
  366. package/components/xy-labels/index.d.ts +15 -0
  367. package/components/xy-labels/index.js +87 -0
  368. package/components/xy-labels/index.js.map +1 -0
  369. package/components/xy-labels/modules/label.d.ts +9 -0
  370. package/components/xy-labels/modules/label.js +107 -0
  371. package/components/xy-labels/modules/label.js.map +1 -0
  372. package/components/xy-labels/style.d.ts +5 -0
  373. package/{src/components/xy-labels/style.ts → components/xy-labels/style.js} +14 -15
  374. package/components/xy-labels/style.js.map +1 -0
  375. package/components/xy-labels/types.d.ts +23 -0
  376. package/components/xy-labels/types.js +9 -0
  377. package/components/xy-labels/types.js.map +1 -0
  378. package/components.d.ts +51 -0
  379. package/components.js +29 -0
  380. package/components.js.map +1 -0
  381. package/containers/single-container/config.d.ts +12 -0
  382. package/containers/single-container/config.js +12 -0
  383. package/containers/single-container/config.js.map +1 -0
  384. package/containers/single-container/index.d.ts +19 -0
  385. package/containers/single-container/index.js +128 -0
  386. package/containers/single-container/index.js.map +1 -0
  387. package/containers/xy-container/config.d.ts +99 -0
  388. package/containers/xy-container/config.js +30 -0
  389. package/containers/xy-container/config.js.map +1 -0
  390. package/containers/xy-container/index.d.ts +34 -0
  391. package/containers/xy-container/index.js +330 -0
  392. package/containers/xy-container/index.js.map +1 -0
  393. package/containers.d.ts +6 -0
  394. package/containers.js +4 -0
  395. package/containers.js.map +1 -0
  396. package/core/component/config.d.ts +58 -0
  397. package/core/component/config.js +14 -0
  398. package/core/component/config.js.map +1 -0
  399. package/core/component/index.d.ts +43 -0
  400. package/core/component/index.js +118 -0
  401. package/core/component/index.js.map +1 -0
  402. package/core/component/types.d.ts +2 -0
  403. package/core/component/types.js +2 -0
  404. package/core/component/types.js.map +1 -0
  405. package/core/config/index.d.ts +3 -0
  406. package/core/config/index.js +16 -0
  407. package/core/config/index.js.map +1 -0
  408. package/core/container/config.d.ts +48 -0
  409. package/core/container/config.js +29 -0
  410. package/core/container/config.js.map +1 -0
  411. package/core/container/index.d.ts +26 -0
  412. package/core/container/index.js +106 -0
  413. package/core/container/index.js.map +1 -0
  414. package/core/xy-component/config.d.ts +38 -0
  415. package/core/xy-component/config.js +20 -0
  416. package/core/xy-component/config.js.map +1 -0
  417. package/core/xy-component/index.d.ts +27 -0
  418. package/core/xy-component/index.js +74 -0
  419. package/core/xy-component/index.js.map +1 -0
  420. package/data-models/core.d.ts +6 -0
  421. package/data-models/core.js +14 -0
  422. package/data-models/core.js.map +1 -0
  423. package/data-models/graph.d.ts +24 -0
  424. package/data-models/graph.js +107 -0
  425. package/data-models/graph.js.map +1 -0
  426. package/data-models/map-graph.d.ts +21 -0
  427. package/data-models/map-graph.js +62 -0
  428. package/data-models/map-graph.js.map +1 -0
  429. package/data-models/map.d.ts +5 -0
  430. package/data-models/map.js +12 -0
  431. package/data-models/map.js.map +1 -0
  432. package/data-models/series.d.ts +6 -0
  433. package/data-models/series.js +19 -0
  434. package/data-models/series.js.map +1 -0
  435. package/index.d.ts +7 -0
  436. package/index.js +55 -0
  437. package/index.js.map +1 -0
  438. package/maps/china-provinces.json.js +140373 -0
  439. package/maps/fr-regions.json.js +14162 -0
  440. package/maps/germany-regions.json.js +35760 -0
  441. package/maps/ind-regions.json.js +290584 -0
  442. package/maps/uk-regions.json.js +96233 -0
  443. package/maps/us-counties.json.js +206318 -0
  444. package/maps/us-states.json.js +16345 -0
  445. package/maps/world-110m-alpha.json.js +251366 -0
  446. package/maps/world-simple.json.js +89428 -0
  447. package/maps/world-simplest.json.js +28175 -0
  448. package/maps.d.ts +60 -0
  449. package/maps.js +23 -0
  450. package/package.json +1 -1
  451. package/styles/colors.d.ts +7 -0
  452. package/styles/colors.js +24 -0
  453. package/styles/colors.js.map +1 -0
  454. package/styles/index.d.ts +7 -0
  455. package/styles/index.js +38 -0
  456. package/styles/index.js.map +1 -0
  457. package/styles/sizes.d.ts +2 -0
  458. package/{src/styles/sizes.ts → styles/sizes.js} +8 -6
  459. package/styles/sizes.js.map +1 -0
  460. package/types/accessor.d.ts +5 -0
  461. package/types/accessor.js +2 -0
  462. package/types/accessor.js.map +1 -0
  463. package/types/component.d.ts +13 -0
  464. package/types/component.js +14 -0
  465. package/types/component.js.map +1 -0
  466. package/types/curve.d.ts +40 -0
  467. package/types/curve.js +46 -0
  468. package/types/curve.js.map +1 -0
  469. package/types/data.d.ts +7 -0
  470. package/types/data.js +2 -0
  471. package/types/data.js.map +1 -0
  472. package/types/direction.d.ts +6 -0
  473. package/types/direction.js +10 -0
  474. package/types/direction.js.map +1 -0
  475. package/types/graph.d.ts +35 -0
  476. package/types/graph.js +2 -0
  477. package/types/graph.js.map +1 -0
  478. package/types/map.d.ts +4 -0
  479. package/types/map.js +2 -0
  480. package/types/map.js.map +1 -0
  481. package/types/misc.d.ts +8 -0
  482. package/types/position.d.ts +20 -0
  483. package/types/position.js +27 -0
  484. package/types/position.js.map +1 -0
  485. package/types/scale.d.ts +23 -0
  486. package/types/scale.js +27 -0
  487. package/types/scale.js.map +1 -0
  488. package/types/shape.d.ts +7 -0
  489. package/types/shape.js +11 -0
  490. package/types/shape.js.map +1 -0
  491. package/types/spacing.d.ts +6 -0
  492. package/types/spacing.js +2 -0
  493. package/types/spacing.js.map +1 -0
  494. package/types/svg.d.ts +18 -0
  495. package/types/svg.js +22 -0
  496. package/types/svg.js.map +1 -0
  497. package/types/symbol.d.ts +18 -0
  498. package/types/symbol.js +24 -0
  499. package/types/symbol.js.map +1 -0
  500. package/types/text.d.ts +47 -0
  501. package/types/text.js +26 -0
  502. package/types/text.js.map +1 -0
  503. package/types.d.ts +27 -0
  504. package/types.js +30 -0
  505. package/types.js.map +1 -0
  506. package/utils/color.d.ts +10 -0
  507. package/utils/color.js +32 -0
  508. package/utils/color.js.map +1 -0
  509. package/utils/d3.d.ts +3 -0
  510. package/utils/d3.js +16 -0
  511. package/utils/d3.js.map +1 -0
  512. package/utils/data.d.ts +45 -0
  513. package/utils/data.js +274 -0
  514. package/utils/data.js.map +1 -0
  515. package/utils/html.d.ts +1 -0
  516. package/utils/html.js +16 -0
  517. package/utils/html.js.map +1 -0
  518. package/utils/map.d.ts +2 -0
  519. package/utils/map.js +20 -0
  520. package/utils/map.js.map +1 -0
  521. package/utils/misc.d.ts +9 -0
  522. package/utils/misc.js +47 -0
  523. package/utils/misc.js.map +1 -0
  524. package/utils/path.d.ts +23 -0
  525. package/utils/path.js +144 -0
  526. package/utils/path.js.map +1 -0
  527. package/utils/scale.d.ts +1 -0
  528. package/utils/style.d.ts +6 -0
  529. package/utils/style.js +24 -0
  530. package/utils/style.js.map +1 -0
  531. package/utils/svg.d.ts +3 -0
  532. package/utils/text.d.ts +139 -0
  533. package/utils/text.js +443 -0
  534. package/utils/text.js.map +1 -0
  535. package/utils/type.d.ts +5 -0
  536. package/declaration.d.ts +0 -1
  537. package/index.ts +0 -1
  538. package/licences.txt +0 -43
  539. package/maps.ts +0 -1
  540. package/rollup.config.js +0 -71
  541. package/rules/ts-getter-setter.js +0 -35
  542. package/src/components/area/config.ts +0 -29
  543. package/src/components/area/index.ts +0 -133
  544. package/src/components/area/types.ts +0 -2
  545. package/src/components/axis/config.ts +0 -76
  546. package/src/components/axis/index.ts +0 -363
  547. package/src/components/axis/types.ts +0 -4
  548. package/src/components/brush/config.ts +0 -51
  549. package/src/components/brush/index.ts +0 -233
  550. package/src/components/brush/types.ts +0 -8
  551. package/src/components/bullet-legend/config.ts +0 -38
  552. package/src/components/bullet-legend/index.ts +0 -104
  553. package/src/components/bullet-legend/types.ts +0 -7
  554. package/src/components/chord-diagram/config.ts +0 -53
  555. package/src/components/chord-diagram/index.ts +0 -401
  556. package/src/components/chord-diagram/modules/label.ts +0 -155
  557. package/src/components/chord-diagram/modules/link.ts +0 -91
  558. package/src/components/chord-diagram/modules/node.ts +0 -80
  559. package/src/components/chord-diagram/types.ts +0 -68
  560. package/src/components/crosshair/config.ts +0 -48
  561. package/src/components/crosshair/index.ts +0 -220
  562. package/src/components/crosshair/types.ts +0 -15
  563. package/src/components/donut/config.ts +0 -65
  564. package/src/components/donut/index.ts +0 -148
  565. package/src/components/donut/modules/arc.ts +0 -86
  566. package/src/components/donut/types.ts +0 -17
  567. package/src/components/flow-legend/config.ts +0 -31
  568. package/src/components/flow-legend/index.ts +0 -103
  569. package/src/components/flow-legend/types.ts +0 -10
  570. package/src/components/free-brush/config.ts +0 -54
  571. package/src/components/free-brush/index.ts +0 -207
  572. package/src/components/free-brush/types.ts +0 -8
  573. package/src/components/graph/config.ts +0 -280
  574. package/src/components/graph/index.ts +0 -809
  575. package/src/components/graph/modules/layout-helpers.ts +0 -96
  576. package/src/components/graph/modules/layout.ts +0 -502
  577. package/src/components/graph/modules/link/helper.ts +0 -105
  578. package/src/components/graph/modules/link/index.ts +0 -302
  579. package/src/components/graph/modules/node/helper.ts +0 -162
  580. package/src/components/graph/modules/node/index.ts +0 -343
  581. package/src/components/graph/modules/panel/helper.ts +0 -160
  582. package/src/components/graph/modules/panel/index.ts +0 -137
  583. package/src/components/graph/modules/shape.ts +0 -108
  584. package/src/components/graph/modules/zoom-levels.ts +0 -6
  585. package/src/components/graph/style.ts +0 -72
  586. package/src/components/graph/types.ts +0 -152
  587. package/src/components/grouped-bar/config.ts +0 -40
  588. package/src/components/grouped-bar/index.ts +0 -325
  589. package/src/components/leaflet-flow-map/config.ts +0 -60
  590. package/src/components/leaflet-flow-map/index.ts +0 -279
  591. package/src/components/leaflet-flow-map/renderer-utils.ts +0 -14
  592. package/src/components/leaflet-flow-map/renderer.ts +0 -146
  593. package/src/components/leaflet-flow-map/types.ts +0 -18
  594. package/src/components/leaflet-map/config.ts +0 -234
  595. package/src/components/leaflet-map/index.ts +0 -808
  596. package/src/components/leaflet-map/leaflet.css +0 -625
  597. package/src/components/leaflet-map/modules/clusterBackground.ts +0 -34
  598. package/src/components/leaflet-map/modules/donut.ts +0 -37
  599. package/src/components/leaflet-map/modules/map.ts +0 -178
  600. package/src/components/leaflet-map/modules/node.ts +0 -208
  601. package/src/components/leaflet-map/modules/selectionRing.ts +0 -63
  602. package/src/components/leaflet-map/modules/utils.ts +0 -290
  603. package/src/components/leaflet-map/renderer/map-style.ts +0 -24
  604. package/src/components/leaflet-map/renderer/mapboxgl/mapboxgl-dark-theme.json +0 -35
  605. package/src/components/leaflet-map/renderer/mapboxgl/mapboxgl-light-theme.json +0 -35
  606. package/src/components/leaflet-map/renderer/mapboxgl/mapboxgl-settings.json +0 -2185
  607. package/src/components/leaflet-map/renderer/mapboxgl-layer.ts +0 -43
  608. package/src/components/leaflet-map/renderer/mapboxgl-utils.ts +0 -40
  609. package/src/components/leaflet-map/style.ts +0 -217
  610. package/src/components/leaflet-map/types.ts +0 -75
  611. package/src/components/line/config.ts +0 -34
  612. package/src/components/line/index.ts +0 -188
  613. package/src/components/line/types.ts +0 -3
  614. package/src/components/nested-donut/config.ts +0 -75
  615. package/src/components/nested-donut/index.ts +0 -176
  616. package/src/components/nested-donut/modules/arc.ts +0 -78
  617. package/src/components/nested-donut/modules/label.ts +0 -63
  618. package/src/components/nested-donut/style.ts +0 -82
  619. package/src/components/nested-donut/types.ts +0 -29
  620. package/src/components/sankey/config.ts +0 -195
  621. package/src/components/sankey/index.ts +0 -387
  622. package/src/components/sankey/modules/label.ts +0 -228
  623. package/src/components/sankey/modules/link.ts +0 -141
  624. package/src/components/sankey/modules/node.ts +0 -221
  625. package/src/components/sankey/types.ts +0 -95
  626. package/src/components/scatter/config.ts +0 -49
  627. package/src/components/scatter/index.ts +0 -220
  628. package/src/components/scatter/modules/point.ts +0 -123
  629. package/src/components/scatter/modules/utils.ts +0 -150
  630. package/src/components/scatter/types.ts +0 -21
  631. package/src/components/stacked-bar/config.ts +0 -42
  632. package/src/components/stacked-bar/index.ts +0 -267
  633. package/src/components/stacked-bar/types.ts +0 -5
  634. package/src/components/timeline/config.ts +0 -49
  635. package/src/components/timeline/index.ts +0 -302
  636. package/src/components/tooltip/config.ts +0 -69
  637. package/src/components/tooltip/index.ts +0 -220
  638. package/src/components/topojson-map/config.ts +0 -124
  639. package/src/components/topojson-map/index.ts +0 -436
  640. package/src/components/topojson-map/types.ts +0 -123
  641. package/src/components/topojson-map/utils.ts +0 -29
  642. package/src/components/vis-controls/config.ts +0 -16
  643. package/src/components/vis-controls/index.ts +0 -68
  644. package/src/components/vis-controls/types.ts +0 -14
  645. package/src/components/xy-labels/config.ts +0 -56
  646. package/src/components/xy-labels/index.ts +0 -109
  647. package/src/components/xy-labels/modules/label.ts +0 -140
  648. package/src/components/xy-labels/types.ts +0 -26
  649. package/src/components.ts +0 -56
  650. package/src/containers/single-container/config.ts +0 -15
  651. package/src/containers/single-container/index.ts +0 -150
  652. package/src/containers/xy-container/config.ts +0 -112
  653. package/src/containers/xy-container/index.ts +0 -407
  654. package/src/containers.ts +0 -6
  655. package/src/core/component/config.ts +0 -61
  656. package/src/core/component/index.ts +0 -154
  657. package/src/core/component/types.ts +0 -9
  658. package/src/core/config/index.ts +0 -12
  659. package/src/core/container/config.ts +0 -56
  660. package/src/core/container/index.ts +0 -136
  661. package/src/core/xy-component/config.ts +0 -46
  662. package/src/core/xy-component/index.ts +0 -90
  663. package/src/data-models/core.ts +0 -15
  664. package/src/data-models/graph.ts +0 -138
  665. package/src/data-models/map-graph.ts +0 -72
  666. package/src/data-models/map.ts +0 -18
  667. package/src/data-models/series.ts +0 -16
  668. package/src/index.ts +0 -7
  669. package/src/maps/china-provinces.json +0 -1
  670. package/src/maps/fr-regions.json +0 -1
  671. package/src/maps/germany-regions.json +0 -1
  672. package/src/maps/ind-regions.json +0 -1
  673. package/src/maps/uk-regions.json +0 -1
  674. package/src/maps/us-counties.json +0 -1
  675. package/src/maps/us-states.json +0 -1
  676. package/src/maps/world-110m-alpha.json +0 -1
  677. package/src/maps/world-simple.json +0 -1
  678. package/src/maps/world-simplest.json +0 -1
  679. package/src/maps.ts +0 -34
  680. package/src/styles/colors.ts +0 -28
  681. package/src/styles/index.ts +0 -38
  682. package/src/types/accessor.ts +0 -5
  683. package/src/types/component.ts +0 -15
  684. package/src/types/curve.ts +0 -62
  685. package/src/types/data.ts +0 -5
  686. package/src/types/direction.ts +0 -6
  687. package/src/types/graph.ts +0 -40
  688. package/src/types/map.ts +0 -5
  689. package/src/types/misc.ts +0 -10
  690. package/src/types/position.ts +0 -23
  691. package/src/types/scale.ts +0 -47
  692. package/src/types/shape.ts +0 -7
  693. package/src/types/spacing.ts +0 -6
  694. package/src/types/svg.ts +0 -32
  695. package/src/types/symbol.ts +0 -21
  696. package/src/types/text.ts +0 -71
  697. package/src/types.ts +0 -31
  698. package/src/utils/color.ts +0 -41
  699. package/src/utils/d3.ts +0 -15
  700. package/src/utils/data.ts +0 -328
  701. package/src/utils/html.ts +0 -13
  702. package/src/utils/map.ts +0 -29
  703. package/src/utils/misc.ts +0 -54
  704. package/src/utils/path.ts +0 -196
  705. package/src/utils/scale.ts +0 -1
  706. package/src/utils/style.ts +0 -37
  707. package/src/utils/svg.ts +0 -49
  708. package/src/utils/text.ts +0 -529
  709. package/src/utils/type.ts +0 -9
  710. package/tsconfig.json +0 -29
@@ -1,808 +0,0 @@
1
- import { select, Selection } from 'd3-selection'
2
- import { packSiblings } from 'd3-hierarchy'
3
- import type L from 'leaflet'
4
- import Supercluster, { ClusterFeature, PointFeature } from 'supercluster'
5
- import { ResizeObserver } from '@juggle/resize-observer'
6
- import { StyleSpecification } from 'maplibre-gl'
7
-
8
- // Core
9
- import { ComponentCore } from 'core/component'
10
-
11
- // Model
12
- import { MapDataModel } from 'data-models/map'
13
-
14
- // Types
15
- import { ComponentType } from 'types/component'
16
- import { GenericDataRecord } from 'types/data'
17
-
18
- // Utils
19
- import { clamp, isNil, getNumber, getString, isString } from 'utils/data'
20
- import { constraintMapViewThrottled } from './renderer/mapboxgl-utils'
21
- import {
22
- projectPoint,
23
- bBoxMerge,
24
- calculateClusterIndex,
25
- getNextZoomLevelOnClusterClick,
26
- findPointAndClusterByPointId,
27
- geoJsonPointToScreenPoint,
28
- getClusterRadius,
29
- getClustersAndPoints,
30
- getNodeRelativePosition,
31
- getPointRadius,
32
- shouldClusterExpand,
33
- } from './modules/utils'
34
-
35
- // Local Types
36
- import {
37
- Bounds,
38
- LeafletMapClusterDatum,
39
- LeafletMapPoint,
40
- LeafletMapPointDatum,
41
- LeafletMapRenderer,
42
- MapZoomState,
43
- PointExpandedClusterProperties,
44
- } from './types'
45
-
46
- // Config
47
- import { LeafletMapConfig, LeafletMapConfigInterface } from './config'
48
-
49
- // Styles
50
- import * as s from './style'
51
-
52
- // Modules
53
- import { initialMapCenter, initialMapZoom, setupMap, updateTopoJson } from './modules/map'
54
- import { collideLabels, createNodes, removeNodes, updateNodes } from './modules/node'
55
- import { createNodeSelectionRing, updateNodeSelectionRing } from './modules/selectionRing'
56
- import { createBackgroundNode, updateBackgroundNode } from './modules/clusterBackground'
57
-
58
- export class LeafletMap<Datum extends GenericDataRecord> extends ComponentCore<Datum[], LeafletMapConfig<Datum>, LeafletMapConfigInterface<Datum>> {
59
- static selectors = s
60
- static cssVariables = s.variables
61
- type = ComponentType.HTML
62
- element: HTMLElement
63
- config: LeafletMapConfig<Datum> = new LeafletMapConfig()
64
- datamodel: MapDataModel<Datum> = new MapDataModel()
65
- protected _container: HTMLElement
66
- protected _containerSelection: Selection<HTMLElement, unknown, null, undefined>
67
- public _onMapMoveEndInternal: (leaflet: L.Map) => void // Internal callback needed by Leaflet Flow Map
68
- private _map: {
69
- leaflet: L.Map;
70
- layer: L.Layer;
71
- svgOverlay: Selection<SVGSVGElement, unknown, null, undefined>;
72
- svgGroup: Selection<SVGGElement, unknown, SVGElement, undefined>;
73
- }
74
-
75
- private _clusterIndex: Supercluster<Datum>
76
- private _expandedCluster: { points: PointFeature<PointExpandedClusterProperties<Datum>>[]; cluster: LeafletMapPoint<Datum> } = null
77
- private _cancelBackgroundClick = false
78
- private _hasBeenMoved = false
79
- private _hasBeenZoomed = false
80
- private _isMoving = false
81
- private _isZooming = false
82
- private _eventInitiatedByComponent = false
83
- private _triggerBackgroundClick = false
84
- private _externallySelectedPoint: LeafletMapPoint<Datum> | PointFeature<Datum> | null = null
85
- private _zoomingToExternallySelectedPoint = false
86
- private _forceExpandCluster = false
87
- private _pointGroup: Selection<SVGGElement, unknown, SVGElement, undefined>
88
- private _pointSelectionRing: Selection<SVGGElement, unknown, SVGElement, undefined>
89
- private _clusterBackground: Selection<SVGGElement, unknown, SVGElement, undefined>
90
- private _clusterBackgroundRadius = 0
91
- private _selectedPoint: LeafletMapPoint<Datum> = null
92
- private _currentZoomLevel: number | null = null
93
- private _firstRender = true
94
- private _isDarkThemeActive = false
95
- private resizeObserver: ResizeObserver
96
- private themeObserver: MutationObserver
97
- private _renderDataAnimationFrameId: number | null = null
98
- private _flyToBoundsAnimationFrameId: number | null = null
99
- readonly _leafletInitializationPromise: Promise<L.Map>
100
-
101
- // eslint-disable-next-line @typescript-eslint/naming-convention
102
- static DEFAULT_CONTAINER_HEIGHT = 600
103
-
104
- events = {
105
- [LeafletMap.selectors.point]: {
106
- mouseup: this._onPointMouseUp.bind(this),
107
- mousedown: this._onPointMouseDown.bind(this),
108
- click: this._onPointClick.bind(this),
109
- },
110
- }
111
-
112
- constructor (container: HTMLElement, config?: LeafletMapConfigInterface<Datum>, data?: Datum[]) {
113
- super(ComponentType.HTML)
114
- this._container = container
115
- this._containerSelection = select(this._container)
116
-
117
- this._container.appendChild(this.element)
118
- this.g.attr('class', s.root)
119
-
120
- if (config) this.setConfig(config)
121
-
122
- if (!this._container.clientWidth) {
123
- console.warn('Unovis | Leaflet Map: The width of the container is not set. Setting to 100%.')
124
- this._containerSelection.style('width', '100%')
125
- }
126
-
127
- if (!this._container.clientHeight) {
128
- console.warn(`Unovis | Leaflet Map: The height of the container is not set. Setting to ${LeafletMap.DEFAULT_CONTAINER_HEIGHT}px.`)
129
- this._containerSelection.style('height', `${LeafletMap.DEFAULT_CONTAINER_HEIGHT}px`)
130
- }
131
-
132
- // Initialize map asynchronously
133
- this._leafletInitializationPromise = new Promise((resolve) => {
134
- setupMap(this.element, this.config).then(map => {
135
- // Apply the `s.map` class to `tilePane` to allow tooltip interactions
136
- select(map.leaflet.getPanes().tilePane).classed(s.map, true)
137
- if (config) this.setConfig(config)
138
-
139
- this._map = map
140
- this._map.leaflet.on('drag', this._onMapDragLeaflet.bind(this))
141
- this._map.leaflet.on('move', this._onMapMove.bind(this))
142
- this._map.leaflet.on('movestart', this._onMapMoveStart.bind(this))
143
- this._map.leaflet.on('moveend', this._onMapMoveEnd.bind(this))
144
- this._map.leaflet.on('zoom', this._onMapZoom.bind(this))
145
- this._map.leaflet.on('zoomstart', this._onMapZoomStart.bind(this))
146
- this._map.leaflet.on('zoomend', this._onMapZoomEnd.bind(this))
147
-
148
- // We need to handle background click in a special way to deal
149
- // with d3 svg overlay that might have smaller size than the map itself
150
- // (see this._onNodeMouseDown() and this this._onNodeMouseDown())
151
- this._map.leaflet.on('mousedown', () => {
152
- if (!this._cancelBackgroundClick) this._triggerBackgroundClick = true
153
- })
154
-
155
- this._map.leaflet.on('mouseup', (e) => {
156
- if (this._triggerBackgroundClick) {
157
- this._triggerBackgroundClick = false
158
- const originalEvent = (e as any).originalEvent
159
- this._onBackgroundClick(originalEvent.target, originalEvent)
160
- }
161
- })
162
-
163
- this._map.svgOverlay
164
- .attr('class', s.svgOverlay)
165
- .insert('rect', ':first-child')
166
- .attr('class', s.backgroundRect)
167
- .attr('width', '100%')
168
- .attr('height', '100%')
169
-
170
- this._pointGroup = this._map.svgGroup.append('g').attr('class', s.points)
171
- this._clusterBackground = this._pointGroup.append('g')
172
- .attr('class', s.clusterBackground)
173
- .call(createBackgroundNode)
174
- this._pointSelectionRing = this._pointGroup.append('g')
175
- .attr('class', s.pointSelectionRing)
176
- .call(createNodeSelectionRing)
177
-
178
- this._map.leaflet.setView(initialMapCenter, initialMapZoom)
179
-
180
- if (document.body.classList.contains('theme-dark') && config.styleDarkTheme) {
181
- this._isDarkThemeActive = true
182
- this.setTheme(config.styleDarkTheme)
183
- }
184
-
185
- this.config.onMapInitialized?.()
186
- resolve(this._map.leaflet)
187
- })
188
- })
189
-
190
-
191
- // Set data and render the map when it's ready
192
- this.setData(data ?? [])
193
-
194
- // When the container size changes we have to initiate map resize in order to update its dimensions
195
- this.resizeObserver = new ResizeObserver(() => {
196
- this._map?.leaflet?.invalidateSize()
197
- this.config.tooltip?.hide()
198
- })
199
- this.resizeObserver.observe(container)
200
-
201
- // If dark theme is enabled, update map's style when document body's class list changes
202
- if (this.config.styleDarkTheme) {
203
- this.themeObserver = new MutationObserver((mutations) => {
204
- mutations.forEach(change => {
205
- if (change.attributeName === 'class') {
206
- const isDarkTheme = (change.target as HTMLElement).classList.contains('theme-dark')
207
- if (this._isDarkThemeActive !== isDarkTheme) {
208
- this.setTheme(isDarkTheme ? this.config.styleDarkTheme : this.config.style)
209
- this._isDarkThemeActive = isDarkTheme
210
- }
211
- }
212
- })
213
- })
214
- this.themeObserver.observe(document.body, { attributes: true })
215
- }
216
- }
217
-
218
- setConfig (config: LeafletMapConfigInterface<Datum>): void {
219
- this.config = new LeafletMapConfig<Datum>().init(config)
220
-
221
- if (config.width) this._containerSelection.style('width', isString(config.width) ? config.width : `${config.width}px`)
222
- if (config.height) this._containerSelection.style('height', isString(config.height) ? config.height : `${config.height}px`)
223
-
224
- if (this._map && config.renderer === LeafletMapRenderer.MapLibre) {
225
- const layer = this._map.layer as any // Using any because the typings are not full
226
- const maplibreMap = layer.getMaplibreMap()
227
- if (maplibreMap.isStyleLoaded()) updateTopoJson(maplibreMap, this.config)
228
- }
229
-
230
- if (this.config.tooltip) {
231
- this.config.tooltip.setContainer(this._container)
232
- this.config.tooltip.setComponents([this])
233
- this.config.tooltip.update()
234
- }
235
- }
236
-
237
- setData (data: Datum[]): void {
238
- const { config, datamodel } = this
239
-
240
- const dataValid = data.filter(d => {
241
- const lat = getNumber(d, config.pointLatitude)
242
- const lon = getNumber(d, config.pointLongitude)
243
- const valid = isFinite(lat) && isFinite(lon)
244
-
245
- if (!valid) console.warn('Unovis | Leaflet Map: Invalid point coordinates', d)
246
- return valid
247
- })
248
-
249
- datamodel.data = dataValid
250
-
251
- // We use Supercluster for real-time node clustering
252
- this._clusterIndex = calculateClusterIndex<Datum>(dataValid, this.config)
253
-
254
- // If there was an expanded cluster, try to find its successor and expand it too
255
- if (this._expandedCluster && this._map.leaflet) {
256
- // Reset expanded cluster before calling `_getPointData()` to get data with all clusters collapsed
257
- const expandedCluster = this._expandedCluster
258
- this._resetExpandedCluster()
259
- const pointData = this._getPointData()
260
-
261
- const expandedClusterCenterPx = projectPoint(expandedCluster.cluster, this._map.leaflet)
262
- const expandedClusterRadiusPx = expandedCluster.cluster.radius
263
- const cluster = pointData.find((c) => {
264
- if (!c.isCluster) return false
265
- const pos = projectPoint(c, this._map.leaflet)
266
- const r = c.radius
267
- const distance = Math.sqrt((expandedClusterCenterPx.x - pos.x) ** 2 + (expandedClusterCenterPx.y - pos.y) ** 2)
268
- return distance < (expandedClusterRadiusPx + r)
269
- })
270
-
271
- if (cluster) this._expandCluster(cluster, true)
272
- }
273
-
274
- // Render
275
- this._leafletInitializationPromise.then(() => {
276
- this.render()
277
- })
278
- }
279
-
280
- setTheme (theme: StyleSpecification | string): void {
281
- const layer = this._map.layer as any // Using any because the typings are not full
282
- if (this.config.renderer === LeafletMapRenderer.MapLibre) {
283
- const maplibreMap = layer.getMaplibreMap()
284
- maplibreMap.setStyle?.(theme)
285
- updateTopoJson(maplibreMap, this.config)
286
- } else {
287
- if (typeof theme !== 'string') {
288
- console.warn('Unovis | Leaflet Map: Invalid style. Provide a URL string for raster rendering mode.')
289
- return
290
- }
291
- layer.setUrl(theme)
292
- }
293
- }
294
-
295
- // We redefine the ComponentCore render function to bind event to newly created elements in this._renderData(),
296
- // which is being called after almost every map interaction
297
- render (): void {
298
- const { config } = this
299
- if (!this._map) return
300
-
301
- this._renderData()
302
- if (this._firstRender) {
303
- if (config.initialBounds) this.fitToBounds(config.initialBounds)
304
- else if (config.fitViewOnInit) this.fitToPoints(0, config.fitViewPadding)
305
- } else {
306
- if (config.fitViewOnUpdate) this.fitToPoints(0, config.fitViewPadding)
307
- else if (config.fitBoundsOnUpdate) this.fitToBounds(config.fitBoundsOnUpdate)
308
- }
309
-
310
- this._firstRender = false
311
- }
312
-
313
- public getLeafletInstancePromise (): Promise<L.Map> {
314
- return this._leafletInitializationPromise
315
- }
316
-
317
- public fitToPoints (duration = this.config.flyToDuration, padding = this.config.fitViewPadding): void {
318
- const { config, datamodel, datamodel: { data } } = this
319
-
320
- if (!this._map || !this._map.leaflet) return
321
- if (!data?.length) return
322
- const bounds = datamodel.getDataLatLngBounds(config.pointLatitude, config.pointLongitude)
323
- this._flyToBoundsAnimationFrameId = requestAnimationFrame(() => this._flyToBounds(bounds, duration, padding))
324
- }
325
-
326
- public fitToBounds (bounds: Bounds, duration = this.config.flyToDuration, padding = this.config.fitViewPadding): void {
327
- const { northEast, southWest } = bounds
328
- if (isNil(northEast) || isNil(southWest)) return
329
- if (isNil(northEast.lat) || isNil(northEast.lng)) return
330
- if (isNil(southWest.lat) || isNil(southWest.lng)) return
331
- if (!this._map || !this._map.leaflet) return
332
- this._flyToBoundsAnimationFrameId = requestAnimationFrame(() => this._flyToBounds([
333
- [northEast.lat, southWest.lng],
334
- [southWest.lat, northEast.lng],
335
- ], duration, padding))
336
- }
337
-
338
- /* Select a point by id and optionally center the map view.
339
- * This method was designed to be used mainly with the `[LeafletMap.selectors.point]` click events
340
- * (when the user actually clicks on a point) and the specified point is inside one of the collapsed
341
- * clusters it won't be selected. You can use the `zoomToPointById` method to achieve that.
342
- */
343
- public selectPointById (id: string, centerView = false): void {
344
- const { config } = this
345
- const pointData = this._getPointData()
346
- const foundPoint = pointData.find(d => (d.properties as LeafletMapPointDatum<Datum>).id === id)
347
-
348
- if (!foundPoint) {
349
- console.warn(`Unovis | Leaflet Map: Node with id ${id} can not be found`)
350
- return
351
- }
352
-
353
- if ((foundPoint.properties as LeafletMapClusterDatum<Datum>)?.cluster) {
354
- console.warn('Unovis | Leaflet Map: Cluster can\'t be selected')
355
- return
356
- }
357
-
358
- this._selectedPoint = foundPoint
359
-
360
- const isPointInsideExpandedCluster = this._expandedCluster?.points?.find(d => getString(d.properties, config.pointId) === id)
361
- if (!isPointInsideExpandedCluster) this._resetExpandedCluster()
362
-
363
- if (centerView) {
364
- const coordinates = {
365
- lng: getNumber(foundPoint.properties as LeafletMapPointDatum<Datum>, config.pointLongitude),
366
- lat: getNumber(foundPoint.properties as LeafletMapPointDatum<Datum>, config.pointLatitude),
367
- }
368
-
369
- const zoomLevel = this._map.leaflet.getZoom()
370
- this._eventInitiatedByComponent = true
371
- this._map.leaflet.flyTo(coordinates, zoomLevel, { duration: 0 })
372
- } else {
373
- this._renderData()
374
- }
375
- }
376
-
377
- /* Get the id of the selected point */
378
- public getSelectedPointId (): string | number | undefined {
379
- return this._selectedPoint?.id
380
- }
381
-
382
- /* Unselect point if it was selected before */
383
- public unselectPoint (): void {
384
- this._selectedPoint = null
385
- this._externallySelectedPoint = null
386
- this.render()
387
- }
388
-
389
- /* Zoom to a point by id and optionally select it.
390
- * If the point is inside a cluster, it'll be automatically expanded to show the enclosed point.
391
- * You can also force set the zoom level by providing the `customZoomLevel` argument.
392
- */
393
- public zoomToPointById (id: string, selectPoint = false, customZoomLevel?: number): void {
394
- const { config, datamodel } = this
395
- if (!datamodel.data.length) {
396
- console.warn('Unovis | Leaflet Map: There are no points on the map')
397
- return
398
- }
399
- const dataBoundsAll = datamodel.getDataLatLngBounds(config.pointLatitude, config.pointLongitude)
400
- const bounds: [number, number, number, number] = [dataBoundsAll[0][1], dataBoundsAll[1][0], dataBoundsAll[1][1], dataBoundsAll[0][0]]
401
- const pointDataAll = this._getPointData(bounds)
402
-
403
- let foundPoint: LeafletMapPoint<Datum> | PointFeature<Datum> = pointDataAll
404
- .find((d: LeafletMapPoint<Datum>) => getString(d.properties as LeafletMapPointDatum<Datum>, config.pointId) === id)
405
-
406
- // If point was found and it's a cluster -> do nothing
407
- if ((foundPoint?.properties as LeafletMapClusterDatum<Datum>)?.cluster) {
408
- console.warn('Unovis | Leaflet Map: Cluster can\'t be zoomed in')
409
- return
410
- }
411
-
412
- // If point was not found -> search for it in all collapsed clusters
413
- if (!foundPoint) {
414
- const { point } = findPointAndClusterByPointId(pointDataAll, id, config.pointId)
415
- foundPoint = point
416
- }
417
-
418
- if (foundPoint) {
419
- // If point was found and it's inside an expanded cluster -> simply select it
420
- const isPointInsideExpandedCluster = this._expandedCluster?.points?.find(d => getString(d.properties, config.pointId) === id)
421
- if (isPointInsideExpandedCluster && selectPoint) {
422
- this._selectedPoint = foundPoint as LeafletMapPoint<Datum>
423
- this._renderData()
424
- return
425
- }
426
-
427
- // Else - trigger zoom
428
- this._externallySelectedPoint = foundPoint
429
- this._zoomingToExternallySelectedPoint = true
430
-
431
- this._forceExpandCluster = !isNil(customZoomLevel)
432
- if (selectPoint) this._selectedPoint = foundPoint as LeafletMapPoint<Datum>
433
-
434
- const zoomLevel = isNil(customZoomLevel) ? this._map.leaflet.getZoom() : customZoomLevel
435
- const pointDatum = foundPoint.properties as LeafletMapPointDatum<Datum>
436
- const coordinates = {
437
- lng: getNumber(pointDatum, config.pointLongitude),
438
- lat: getNumber(pointDatum, config.pointLatitude),
439
- }
440
- this._eventInitiatedByComponent = true
441
- this._map.leaflet.flyTo(coordinates, zoomLevel, { duration: 0 })
442
- } else {
443
- console.warn(`Unovis | Leaflet Map: Node with id ${id} can not be found`)
444
- }
445
- }
446
-
447
- public getNodeRelativePosition (node: LeafletMapPoint<Datum>): { x: number; y: number } {
448
- return getNodeRelativePosition(node, this._map.leaflet)
449
- }
450
-
451
- public hasBeenZoomed (): boolean {
452
- return this._hasBeenZoomed
453
- }
454
-
455
- public hasBeenMoved (): boolean {
456
- return this._hasBeenMoved
457
- }
458
-
459
- public isZooming (): boolean {
460
- return this._isZooming
461
- }
462
-
463
- public isMoving (): boolean {
464
- return this._isMoving
465
- }
466
-
467
- private _flyToBounds (bounds: [[number, number], [number, number]], durationMs: number, paddingPx?: [number, number]): void {
468
- this._eventInitiatedByComponent = true
469
- const duration = durationMs / 1000
470
- const padding: [number, number] | undefined = paddingPx ? [
471
- paddingPx[0] < this._container.clientWidth / 2 ? paddingPx[0] : this._container.clientWidth / 2,
472
- paddingPx[1] < this._container.clientHeight / 2 ? paddingPx[1] : this._container.clientHeight / 2,
473
- ] : undefined
474
- if (duration) {
475
- this._map.leaflet.flyToBounds(bounds, { duration, padding })
476
- } else {
477
- this._map.leaflet.fitBounds(bounds, { padding })
478
- }
479
- }
480
-
481
- private _renderData (mapMoveZoomUpdateOnly = false): void {
482
- const { config } = this
483
-
484
- const pointData = this._getPointData()
485
- const contentBBox = pointData.length ? bBoxMerge(pointData.map(d => d.bbox)) : { x: 0, y: 0, width: 0, height: 0 }
486
-
487
- // Set SVG size to match Leaflet transform
488
- const svgExtraPadding = 40 + this._clusterBackgroundRadius // We need it to fit point labels and expanded cluster background circle
489
- const dx = contentBBox.x - svgExtraPadding
490
- const dy = contentBBox.y - svgExtraPadding
491
- this._map.svgOverlay
492
- .attr('width', contentBBox.width + 2 * svgExtraPadding)
493
- .attr('height', contentBBox.height + 2 * svgExtraPadding)
494
- .style('left', `${dx}px`)
495
- .style('top', `${dy}px`)
496
-
497
- this._map.svgGroup
498
- .attr('transform', `translate(${-dx},${-dy})`)
499
-
500
- // Render content
501
- const points = this._pointGroup.selectAll<SVGGElement, LeafletMapPoint<Datum>>(`.${s.point}:not(.exit)`)
502
- .data(pointData, (d: LeafletMapPoint<Datum>, i) => `${d.id || d.geometry.coordinates.join('')}`)
503
-
504
- points.exit<LeafletMapPoint<Datum>>().classed('exit', true).call(removeNodes)
505
- const pointsEnter = points.enter().append('g').attr('class', s.point)
506
- .call(createNodes)
507
-
508
- const pointsMerged = points.merge(pointsEnter)
509
- pointsEnter.call(updateNodes, config, this._map.leaflet)
510
- points.call(updateNodes, config, this._map.leaflet, mapMoveZoomUpdateOnly)
511
- pointsMerged.call(collideLabels, this._map.leaflet)
512
-
513
- this._clusterBackground.call(updateBackgroundNode, this._expandedCluster, config, this._map.leaflet, this._clusterBackgroundRadius)
514
- if (this._expandedCluster && config.clusterBackground) {
515
- pointData.forEach((d, i) => { d._zIndex = (d.properties as LeafletMapPointDatum<Datum>)?.expandedClusterPoint ? 2 : 0 })
516
- this._pointGroup
517
- .selectAll<SVGGElement, LeafletMapPoint<Datum>>(`.${s.point}, .${s.clusterBackground}, .${s.pointSelectionRing}`)
518
- .sort((a: LeafletMapPoint<Datum>, b: LeafletMapPoint<Datum>) => a._zIndex - b._zIndex)
519
- }
520
-
521
- // Show selection border and hide it when the node
522
- // is out of visible box
523
- if (config.selectedPointId) {
524
- const foundPoint = pointData.find(d => getString(d.properties as LeafletMapPointDatum<Datum>, config.pointId) === config.selectedPointId)
525
- const { cluster } = findPointAndClusterByPointId(pointData, config.selectedPointId, config.pointId)
526
- if (foundPoint) this._selectedPoint = foundPoint
527
- else this._selectedPoint = cluster
528
- }
529
- this._pointSelectionRing.call(updateNodeSelectionRing, this._selectedPoint, pointData, config, this._map.leaflet)
530
-
531
- // Set up events and attributes for the rendered points
532
- this._setUpComponentEventsThrottled()
533
- this._setCustomAttributesThrottled()
534
-
535
- // Tooltip
536
- config.tooltip?.update()
537
- }
538
-
539
- private _zoomToExternallySelectedPoint (): void {
540
- const { config } = this
541
- if (!this._externallySelectedPoint) return
542
-
543
- const externallySelectedPointDatum = this._externallySelectedPoint.properties as LeafletMapPointDatum<Datum>
544
- const externallySelectedPointId = getString(externallySelectedPointDatum, config.pointId)
545
- const pointData = this._getPointData()
546
- const foundPoint: LeafletMapPoint<Datum> = pointData.find(
547
- d => getString(d.properties as Datum, config.pointId) === externallySelectedPointId
548
- )
549
-
550
- if (foundPoint) {
551
- this._zoomingToExternallySelectedPoint = false
552
- this._currentZoomLevel = null
553
- } else {
554
- const { cluster } = findPointAndClusterByPointId(pointData, externallySelectedPointId, config.pointId)
555
- if (!cluster) return
556
-
557
- const zoomLevel = this._map.leaflet.getZoom()
558
- // Expand cluster or fly further
559
- if (this._forceExpandCluster || shouldClusterExpand(cluster, zoomLevel, 8, 13)) {
560
- this._expandCluster(cluster)
561
- } else {
562
- const newZoomLevel = getNextZoomLevelOnClusterClick(zoomLevel)
563
- const coordinates = {
564
- lng: getNumber(externallySelectedPointDatum, config.pointLongitude),
565
- lat: getNumber(externallySelectedPointDatum, config.pointLatitude),
566
- }
567
- if (this._currentZoomLevel !== newZoomLevel) {
568
- this._currentZoomLevel = newZoomLevel
569
- this._eventInitiatedByComponent = true
570
- this._map.leaflet.flyTo(coordinates, newZoomLevel, { duration: 0 })
571
- }
572
- }
573
- }
574
- }
575
-
576
- private _expandCluster (clusterPoint: LeafletMapPoint<Datum>, preventRender?: boolean): void {
577
- const { config, config: { clusterBackground } } = this
578
- const padding = 1
579
-
580
- config.tooltip?.hide()
581
-
582
- this._forceExpandCluster = false
583
- if (clusterPoint) {
584
- const points: PointFeature<PointExpandedClusterProperties<Datum>>[] =
585
- clusterPoint.clusterIndex.getLeaves((clusterPoint.properties as LeafletMapClusterDatum<Datum>).cluster_id as number, Infinity)
586
- const packPoints: {x: number; y: number; r: number }[] = points.map(p => ({
587
- x: null,
588
- y: null,
589
- r: getPointRadius(p, config.pointRadius, this._map.leaflet.getZoom()) + padding,
590
- }))
591
- packSiblings(packPoints)
592
-
593
- points.forEach((p, i) => {
594
- p.properties.expandedClusterPoint = clusterPoint
595
- p.properties.r = packPoints[i].r
596
- p.properties.dx = packPoints[i].x
597
- p.properties.dy = packPoints[i].y
598
- })
599
-
600
- this._resetExpandedCluster()
601
- this._expandedCluster = {
602
- cluster: clusterPoint,
603
- points,
604
- }
605
-
606
- if (clusterBackground) this._clusterBackgroundRadius = getClusterRadius(this._expandedCluster)
607
-
608
- if (!preventRender) this._renderData()
609
- }
610
-
611
- this._zoomingToExternallySelectedPoint = false
612
- }
613
-
614
- private _resetExpandedCluster (): void {
615
- this._expandedCluster?.points?.forEach(d => { delete d.properties.expandedClusterPoint })
616
- this._expandedCluster = null
617
- }
618
-
619
- private _getPointData (customBounds?: [number, number, number, number]): LeafletMapPoint<Datum>[] {
620
- const { config, datamodel: { data } } = this
621
-
622
- if (!data || !this._clusterIndex) return []
623
-
624
- let geoJSONPoints: (ClusterFeature<LeafletMapClusterDatum<Datum>> | PointFeature<PointExpandedClusterProperties<Datum>>)[] =
625
- getClustersAndPoints<Datum>(this._clusterIndex, this._map.leaflet, customBounds)
626
-
627
- if (this._expandedCluster) {
628
- // Remove expanded cluster from the data
629
- geoJSONPoints = geoJSONPoints.filter(c => (c as ClusterFeature<LeafletMapClusterDatum<Datum>>).properties.cluster_id !== (this._expandedCluster.cluster.properties as LeafletMapClusterDatum<Datum>).cluster_id)
630
- // Add points from the expanded cluster
631
- geoJSONPoints = geoJSONPoints.concat(this._expandedCluster.points)
632
- }
633
-
634
- const pointData = geoJSONPoints
635
- // Todo: Remove explicitly set ClusterFeature<LeafletMapPointDatum<Datum>> type
636
- .map((d, i: number) => {
637
- return geoJsonPointToScreenPoint(d as ClusterFeature<LeafletMapPointDatum<Datum>>, i, this._map.leaflet, config)
638
- })
639
- // .sort((a, b) => getPointDisplayOrder(a, config.pointStatus, config.colorMap) - getPointDisplayOrder(b, config.pointStatus, config.colorMap))
640
-
641
- return pointData
642
- }
643
-
644
- private _getMapZoomState (): MapZoomState {
645
- const leafletBounds = this._map.leaflet.getBounds()
646
- const southWest = leafletBounds.getSouthWest()
647
- const northEast = leafletBounds.getNorthEast()
648
-
649
- return {
650
- mapCenter: this._map.leaflet.getCenter(),
651
- zoomLevel: this._map.leaflet.getZoom(),
652
- bounds: { southWest, northEast },
653
- userDriven: !this._eventInitiatedByComponent,
654
- }
655
- }
656
-
657
- private _onMapDragLeaflet (): void {
658
- this._cancelBackgroundClick = true
659
- }
660
-
661
- private _onMapMove (): void {
662
- const { config } = this
663
- if (!this._map) return
664
- this._hasBeenMoved = true
665
- this._renderDataAnimationFrameId = requestAnimationFrame(() => {
666
- this._renderData(true)
667
- })
668
- config.onMapMoveZoom?.(this._getMapZoomState())
669
- }
670
-
671
- private _onMapMoveStart (): void {
672
- const { config } = this
673
- if (!this._map) return
674
- this._isMoving = true
675
- config.onMapMoveStart?.(this._getMapZoomState())
676
- }
677
-
678
- private _onMapMoveEnd (): void {
679
- const { config } = this
680
- if (!this._map) return
681
- this._onMapMoveEndInternal?.(this._map.leaflet)
682
- config.onMapMoveEnd?.(this._getMapZoomState())
683
-
684
- constraintMapViewThrottled(this._map.leaflet)
685
- const events = this._map.layer.getEvents()
686
-
687
- if (events.zoomend) {
688
- const zoomEndEvent = events.zoomend.bind(this._map.layer)
689
- zoomEndEvent(null)
690
- }
691
-
692
- if (this._externallySelectedPoint || this._zoomingToExternallySelectedPoint) {
693
- this._zoomToExternallySelectedPoint()
694
- }
695
-
696
- this._isMoving = false
697
- this._eventInitiatedByComponent = false
698
- }
699
-
700
- private _onMapZoomStart (): void {
701
- const { config } = this
702
- if (!this._map) return
703
- this._isZooming = true
704
- config.onMapZoomStart?.(this._getMapZoomState())
705
- }
706
-
707
- private _onMapZoomEnd (): void {
708
- const { config } = this
709
- if (!this._map) return
710
- config.onMapZoomEnd?.(this._getMapZoomState())
711
- this._isZooming = false
712
- if (!this._isMoving) this._eventInitiatedByComponent = false
713
- }
714
-
715
- private _onMapZoom (): void {
716
- const { config } = this
717
- if (!this._map) return
718
- this._hasBeenZoomed = true
719
-
720
- if (!this._externallySelectedPoint) this._resetExpandedCluster()
721
- else if (!this._zoomingToExternallySelectedPoint) {
722
- this._externallySelectedPoint = null
723
- }
724
-
725
- config.tooltip?.hide()
726
- config.onMapMoveZoom?.(this._getMapZoomState())
727
- }
728
-
729
- private _onBackgroundClick (el: HTMLElement, event: MouseEvent): void {
730
- const { config } = this
731
-
732
- if (this._cancelBackgroundClick) {
733
- this._cancelBackgroundClick = false
734
- return
735
- }
736
-
737
- this._externallySelectedPoint = null
738
- this._resetExpandedCluster()
739
- this._renderData()
740
- config.onMapClick?.(this._getMapZoomState())
741
- }
742
-
743
- private _onPointClick (d: LeafletMapPoint<Datum>, event: MouseEvent): void {
744
- const { config: { flyToDuration, clusterExpandOnClick } } = this
745
- this._externallySelectedPoint = null
746
- event.stopPropagation()
747
-
748
- if ((d.properties as LeafletMapClusterDatum<Datum>).cluster) {
749
- const zoomLevel = this._map.leaflet.getZoom()
750
- const coordinates = { lng: d.geometry.coordinates[0], lat: d.geometry.coordinates[1] }
751
-
752
- if (clusterExpandOnClick && shouldClusterExpand(d, zoomLevel)) this._expandCluster(d)
753
- else {
754
- const newZoomLevel = getNextZoomLevelOnClusterClick(zoomLevel)
755
- this._eventInitiatedByComponent = true
756
- this._map.leaflet.flyTo(coordinates, newZoomLevel, { duration: flyToDuration / 1000 })
757
- }
758
- }
759
- }
760
-
761
- private _onPointMouseDown (d: LeafletMapPoint<Datum>, event: MouseEvent): void {
762
- this._cancelBackgroundClick = true
763
- }
764
-
765
- private _onPointMouseUp (d: LeafletMapPoint<Datum>, event: MouseEvent): void {
766
- this._cancelBackgroundClick = false
767
- }
768
-
769
- public zoomIn (increment = 1): void {
770
- if (!this._map?.leaflet) return
771
- this.setZoom(this._map.leaflet.getZoom() + increment)
772
- }
773
-
774
- public zoomOut (increment = 1): void {
775
- if (!this._map?.leaflet) return
776
- this.setZoom(this._map.leaflet.getZoom() - increment)
777
- }
778
-
779
- public setZoom (zoomLevel: number): void {
780
- const leaflet = this._map?.leaflet
781
- if (!leaflet) return
782
-
783
- this._eventInitiatedByComponent = true
784
- leaflet.flyTo(
785
- leaflet.getCenter(),
786
- clamp(zoomLevel, leaflet.getMinZoom(), leaflet.getMaxZoom()),
787
- { duration: this.config.zoomDuration / 1000 }
788
- )
789
- }
790
-
791
- public fitView (): void {
792
- this.fitToPoints()
793
- }
794
-
795
- public destroy (): void {
796
- constraintMapViewThrottled.cancel()
797
- cancelAnimationFrame(this._renderDataAnimationFrameId)
798
- cancelAnimationFrame(this._flyToBoundsAnimationFrameId)
799
- const map = this._map?.leaflet
800
- this._map = undefined
801
-
802
- map?.stop()
803
- map?.remove()
804
- this.g.remove()
805
- this.resizeObserver.disconnect()
806
- this.themeObserver?.disconnect()
807
- }
808
- }