@fusedashlabs/widgets 0.3.1 → 0.4.0

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 (342) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/README.md +1 -1
  3. package/dist/components/chart-renderer/element/ui9000-chart-renderer.d.ts +1 -0
  4. package/dist/components/chart-renderer/element/ui9000-chart-renderer.d.ts.map +1 -1
  5. package/dist/components/chart-renderer/element/ui9000-chart-renderer.js +12 -1
  6. package/dist/components/chart-renderer/element/ui9000-chart-renderer.js.map +1 -1
  7. package/dist/components/chart-renderer/lib/registry.d.ts.map +1 -1
  8. package/dist/components/chart-renderer/lib/registry.js +17 -4
  9. package/dist/components/chart-renderer/lib/registry.js.map +1 -1
  10. package/dist/components/chart-renderer/lib/types.d.ts +5 -0
  11. package/dist/components/chart-renderer/lib/types.d.ts.map +1 -1
  12. package/dist/components/donut-chart/element/ui9000-donut-chart.js +1 -1
  13. package/dist/components/donut-chart/element/ui9000-donut-chart.js.map +1 -1
  14. package/dist/components/lollipop/element/styles.d.ts.map +1 -1
  15. package/dist/components/lollipop/element/styles.js +19 -1
  16. package/dist/components/lollipop/element/styles.js.map +1 -1
  17. package/dist/components/lollipop/element/ui9000-lollipop.d.ts +6 -1
  18. package/dist/components/lollipop/element/ui9000-lollipop.d.ts.map +1 -1
  19. package/dist/components/lollipop/element/ui9000-lollipop.js +68 -7
  20. package/dist/components/lollipop/element/ui9000-lollipop.js.map +1 -1
  21. package/dist/components/lollipop/index.d.ts +1 -1
  22. package/dist/components/lollipop/index.d.ts.map +1 -1
  23. package/dist/components/lollipop/index.js +2 -0
  24. package/dist/components/lollipop/index.js.map +1 -1
  25. package/dist/components/lollipop/lib/domain.d.ts +16 -1
  26. package/dist/components/lollipop/lib/domain.d.ts.map +1 -1
  27. package/dist/components/lollipop/lib/domain.js +56 -1
  28. package/dist/components/lollipop/lib/domain.js.map +1 -1
  29. package/dist/components/lollipop/lib/index.d.ts +3 -2
  30. package/dist/components/lollipop/lib/index.d.ts.map +1 -1
  31. package/dist/components/lollipop/lib/layout.d.ts +16 -0
  32. package/dist/components/lollipop/lib/layout.d.ts.map +1 -0
  33. package/dist/components/lollipop/lib/layout.js +16 -0
  34. package/dist/components/lollipop/lib/layout.js.map +1 -0
  35. package/dist/components/lollipop/lib/types.d.ts +5 -0
  36. package/dist/components/lollipop/lib/types.d.ts.map +1 -1
  37. package/dist/components/lollipop/metadata.json.d.ts +10 -0
  38. package/dist/components/lollipop/metadata.json.js +4 -1
  39. package/dist/components/lollipop/metadata.json.js.map +1 -1
  40. package/dist/components/lollipop/render/draw.d.ts +8 -1
  41. package/dist/components/lollipop/render/draw.d.ts.map +1 -1
  42. package/dist/components/lollipop/render/draw.js +155 -84
  43. package/dist/components/lollipop/render/draw.js.map +1 -1
  44. package/dist/components/map-chart/element/styles.d.ts +2 -0
  45. package/dist/components/map-chart/element/styles.d.ts.map +1 -0
  46. package/dist/components/map-chart/element/styles.js +372 -0
  47. package/dist/components/map-chart/element/styles.js.map +1 -0
  48. package/dist/components/map-chart/element/ui9000-map-chart.d.ts +54 -0
  49. package/dist/components/map-chart/element/ui9000-map-chart.d.ts.map +1 -0
  50. package/dist/components/map-chart/element/ui9000-map-chart.js +539 -0
  51. package/dist/components/map-chart/element/ui9000-map-chart.js.map +1 -0
  52. package/dist/components/map-chart/index.d.ts +5 -0
  53. package/dist/components/map-chart/index.d.ts.map +1 -0
  54. package/dist/components/map-chart/index.js +29 -0
  55. package/dist/components/map-chart/index.js.map +1 -0
  56. package/dist/components/map-chart/lib/constants.d.ts +34 -0
  57. package/dist/components/map-chart/lib/constants.d.ts.map +1 -0
  58. package/dist/components/map-chart/lib/constants.js +122 -0
  59. package/dist/components/map-chart/lib/constants.js.map +1 -0
  60. package/dist/components/map-chart/lib/domain.d.ts +12 -0
  61. package/dist/components/map-chart/lib/domain.d.ts.map +1 -0
  62. package/dist/components/map-chart/lib/domain.js +105 -0
  63. package/dist/components/map-chart/lib/domain.js.map +1 -0
  64. package/dist/components/map-chart/lib/format.d.ts +8 -0
  65. package/dist/components/map-chart/lib/format.d.ts.map +1 -0
  66. package/dist/components/map-chart/lib/format.js +45 -0
  67. package/dist/components/map-chart/lib/format.js.map +1 -0
  68. package/dist/components/map-chart/lib/geo-index.d.ts +7 -0
  69. package/dist/components/map-chart/lib/geo-index.d.ts.map +1 -0
  70. package/dist/components/map-chart/lib/geo-index.js +200 -0
  71. package/dist/components/map-chart/lib/geo-index.js.map +1 -0
  72. package/dist/components/map-chart/lib/geojson.d.ts +5 -0
  73. package/dist/components/map-chart/lib/geojson.d.ts.map +1 -0
  74. package/dist/components/map-chart/lib/geojson.js +47 -0
  75. package/dist/components/map-chart/lib/geojson.js.map +1 -0
  76. package/dist/components/map-chart/lib/index.d.ts +13 -0
  77. package/dist/components/map-chart/lib/index.d.ts.map +1 -0
  78. package/dist/components/map-chart/lib/join.d.ts +7 -0
  79. package/dist/components/map-chart/lib/join.d.ts.map +1 -0
  80. package/dist/components/map-chart/lib/join.js +156 -0
  81. package/dist/components/map-chart/lib/join.js.map +1 -0
  82. package/dist/components/map-chart/lib/legend.d.ts +45 -0
  83. package/dist/components/map-chart/lib/legend.d.ts.map +1 -0
  84. package/dist/components/map-chart/lib/legend.js +108 -0
  85. package/dist/components/map-chart/lib/legend.js.map +1 -0
  86. package/dist/components/map-chart/lib/normalize.d.ts +3 -0
  87. package/dist/components/map-chart/lib/normalize.d.ts.map +1 -0
  88. package/dist/components/map-chart/lib/normalize.js +177 -0
  89. package/dist/components/map-chart/lib/normalize.js.map +1 -0
  90. package/dist/components/map-chart/lib/pmtiles.d.ts +41 -0
  91. package/dist/components/map-chart/lib/pmtiles.d.ts.map +1 -0
  92. package/dist/components/map-chart/lib/pmtiles.js +112 -0
  93. package/dist/components/map-chart/lib/pmtiles.js.map +1 -0
  94. package/dist/components/map-chart/lib/types.d.ts +128 -0
  95. package/dist/components/map-chart/lib/types.d.ts.map +1 -0
  96. package/dist/components/map-chart/metadata.json.d.ts +83 -0
  97. package/dist/components/map-chart/metadata.json.js +42 -0
  98. package/dist/components/map-chart/metadata.json.js.map +1 -0
  99. package/dist/components/map-chart/render/draw.d.ts +24 -0
  100. package/dist/components/map-chart/render/draw.d.ts.map +1 -0
  101. package/dist/components/map-chart/render/draw.js +455 -0
  102. package/dist/components/map-chart/render/draw.js.map +1 -0
  103. package/dist/components/map-chart/render/index.d.ts +2 -0
  104. package/dist/components/map-chart/render/index.d.ts.map +1 -0
  105. package/dist/components/matrix-chart/element/styles.d.ts +2 -0
  106. package/dist/components/matrix-chart/element/styles.d.ts.map +1 -0
  107. package/dist/components/matrix-chart/element/styles.js +97 -0
  108. package/dist/components/matrix-chart/element/styles.js.map +1 -0
  109. package/dist/components/matrix-chart/element/ui9000-matrix-chart.d.ts +39 -0
  110. package/dist/components/matrix-chart/element/ui9000-matrix-chart.d.ts.map +1 -0
  111. package/dist/components/matrix-chart/element/ui9000-matrix-chart.js +238 -0
  112. package/dist/components/matrix-chart/element/ui9000-matrix-chart.js.map +1 -0
  113. package/dist/components/matrix-chart/index.d.ts +5 -0
  114. package/dist/components/matrix-chart/index.d.ts.map +1 -0
  115. package/dist/components/matrix-chart/index.js +20 -0
  116. package/dist/components/matrix-chart/lib/domain.d.ts +7 -0
  117. package/dist/components/matrix-chart/lib/domain.d.ts.map +1 -0
  118. package/dist/components/matrix-chart/lib/domain.js +58 -0
  119. package/dist/components/matrix-chart/lib/domain.js.map +1 -0
  120. package/dist/components/matrix-chart/lib/format.d.ts +5 -0
  121. package/dist/components/matrix-chart/lib/format.d.ts.map +1 -0
  122. package/dist/components/matrix-chart/lib/format.js +16 -0
  123. package/dist/components/matrix-chart/lib/format.js.map +1 -0
  124. package/dist/components/matrix-chart/lib/index.d.ts +5 -0
  125. package/dist/components/matrix-chart/lib/index.d.ts.map +1 -0
  126. package/dist/components/matrix-chart/lib/normalize.d.ts +5 -0
  127. package/dist/components/matrix-chart/lib/normalize.d.ts.map +1 -0
  128. package/dist/components/matrix-chart/lib/normalize.js +165 -0
  129. package/dist/components/matrix-chart/lib/normalize.js.map +1 -0
  130. package/dist/components/matrix-chart/lib/types.d.ts +33 -0
  131. package/dist/components/matrix-chart/lib/types.d.ts.map +1 -0
  132. package/dist/components/matrix-chart/metadata.json.d.ts +110 -0
  133. package/dist/components/matrix-chart/metadata.json.js +42 -0
  134. package/dist/components/matrix-chart/metadata.json.js.map +1 -0
  135. package/dist/components/matrix-chart/render/draw.d.ts +63 -0
  136. package/dist/components/matrix-chart/render/draw.d.ts.map +1 -0
  137. package/dist/components/matrix-chart/render/draw.js +225 -0
  138. package/dist/components/matrix-chart/render/draw.js.map +1 -0
  139. package/dist/components/matrix-chart/render/index.d.ts +2 -0
  140. package/dist/components/matrix-chart/render/index.d.ts.map +1 -0
  141. package/dist/components/network-graph/element/styles.d.ts.map +1 -1
  142. package/dist/components/network-graph/element/styles.js +177 -57
  143. package/dist/components/network-graph/element/styles.js.map +1 -1
  144. package/dist/components/network-graph/element/ui9000-network-graph.d.ts +4 -0
  145. package/dist/components/network-graph/element/ui9000-network-graph.d.ts.map +1 -1
  146. package/dist/components/network-graph/element/ui9000-network-graph.js +116 -39
  147. package/dist/components/network-graph/element/ui9000-network-graph.js.map +1 -1
  148. package/dist/components/network-graph/lib/domain.d.ts +2 -2
  149. package/dist/components/network-graph/lib/domain.js.map +1 -1
  150. package/dist/components/network-graph/lib/index.d.ts +1 -0
  151. package/dist/components/network-graph/lib/index.d.ts.map +1 -1
  152. package/dist/components/network-graph/lib/legend.d.ts +15 -0
  153. package/dist/components/network-graph/lib/legend.d.ts.map +1 -0
  154. package/dist/components/network-graph/lib/legend.js +35 -0
  155. package/dist/components/network-graph/lib/legend.js.map +1 -0
  156. package/dist/components/network-graph/render/draw.d.ts +4 -1
  157. package/dist/components/network-graph/render/draw.d.ts.map +1 -1
  158. package/dist/components/network-graph/render/draw.js +34 -9
  159. package/dist/components/network-graph/render/draw.js.map +1 -1
  160. package/dist/components/pie-chart/element/styles.d.ts.map +1 -1
  161. package/dist/components/pie-chart/element/styles.js +34 -1
  162. package/dist/components/pie-chart/element/styles.js.map +1 -1
  163. package/dist/components/pie-chart/element/ui9000-pie-chart.d.ts +0 -2
  164. package/dist/components/pie-chart/element/ui9000-pie-chart.d.ts.map +1 -1
  165. package/dist/components/pie-chart/element/ui9000-pie-chart.js +2 -8
  166. package/dist/components/pie-chart/element/ui9000-pie-chart.js.map +1 -1
  167. package/dist/components/pie-chart/metadata.json.d.ts +1 -7
  168. package/dist/components/pie-chart/metadata.json.js +2 -2
  169. package/dist/components/polar-area-chart/element/styles.d.ts +1 -1
  170. package/dist/components/polar-area-chart/element/styles.d.ts.map +1 -1
  171. package/dist/components/{donut-group-chart → polar-area-chart}/element/styles.js +9 -27
  172. package/dist/components/polar-area-chart/element/styles.js.map +1 -0
  173. package/dist/components/polar-area-chart/element/ui9000-polar-area-chart.d.ts.map +1 -1
  174. package/dist/components/polar-area-chart/element/ui9000-polar-area-chart.js +4 -3
  175. package/dist/components/polar-area-chart/element/ui9000-polar-area-chart.js.map +1 -1
  176. package/dist/components/polar-area-chart/index.d.ts +1 -1
  177. package/dist/components/polar-area-chart/index.d.ts.map +1 -1
  178. package/dist/components/polar-area-chart/index.js +2 -1
  179. package/dist/components/polar-area-chart/lib/domain.d.ts +8 -0
  180. package/dist/components/polar-area-chart/lib/domain.d.ts.map +1 -1
  181. package/dist/components/polar-area-chart/lib/domain.js +20 -0
  182. package/dist/components/polar-area-chart/lib/domain.js.map +1 -1
  183. package/dist/components/polar-area-chart/lib/index.d.ts +1 -1
  184. package/dist/components/polar-area-chart/lib/index.d.ts.map +1 -1
  185. package/dist/components/polar-area-chart/lib/normalize.d.ts.map +1 -1
  186. package/dist/components/polar-area-chart/lib/normalize.js +72 -6
  187. package/dist/components/polar-area-chart/lib/normalize.js.map +1 -1
  188. package/dist/components/polar-area-chart/lib/types.d.ts +6 -1
  189. package/dist/components/polar-area-chart/lib/types.d.ts.map +1 -1
  190. package/dist/components/polar-area-chart/metadata.json.d.ts +1 -1
  191. package/dist/components/polar-area-chart/metadata.json.js +1 -1
  192. package/dist/components/polar-area-chart/render/draw.d.ts.map +1 -1
  193. package/dist/components/polar-area-chart/render/draw.js +2 -2
  194. package/dist/components/polar-area-chart/render/draw.js.map +1 -1
  195. package/dist/components/punchcard-chart/metadata.json.d.ts +1 -1
  196. package/dist/components/punchcard-chart/metadata.json.js +1 -1
  197. package/dist/components/sankey-chart/element/styles.d.ts.map +1 -1
  198. package/dist/components/sankey-chart/element/styles.js +7 -27
  199. package/dist/components/sankey-chart/element/styles.js.map +1 -1
  200. package/dist/components/sankey-chart/element/ui9000-sankey-chart.d.ts +5 -5
  201. package/dist/components/sankey-chart/element/ui9000-sankey-chart.d.ts.map +1 -1
  202. package/dist/components/sankey-chart/element/ui9000-sankey-chart.js +37 -35
  203. package/dist/components/sankey-chart/element/ui9000-sankey-chart.js.map +1 -1
  204. package/dist/components/treemap-chart/element/styles.d.ts +2 -0
  205. package/dist/components/treemap-chart/element/styles.d.ts.map +1 -0
  206. package/dist/components/treemap-chart/element/styles.js +141 -0
  207. package/dist/components/treemap-chart/element/styles.js.map +1 -0
  208. package/dist/components/treemap-chart/element/ui9000-treemap-chart.d.ts +35 -0
  209. package/dist/components/treemap-chart/element/ui9000-treemap-chart.d.ts.map +1 -0
  210. package/dist/components/treemap-chart/element/ui9000-treemap-chart.js +177 -0
  211. package/dist/components/treemap-chart/element/ui9000-treemap-chart.js.map +1 -0
  212. package/dist/components/treemap-chart/index.d.ts +5 -0
  213. package/dist/components/treemap-chart/index.d.ts.map +1 -0
  214. package/dist/components/treemap-chart/index.js +22 -0
  215. package/dist/components/treemap-chart/index.js.map +1 -0
  216. package/dist/components/treemap-chart/lib/color.d.ts +25 -0
  217. package/dist/components/treemap-chart/lib/color.d.ts.map +1 -0
  218. package/dist/components/treemap-chart/lib/color.js +67 -0
  219. package/dist/components/treemap-chart/lib/color.js.map +1 -0
  220. package/dist/components/treemap-chart/lib/format.d.ts +7 -0
  221. package/dist/components/treemap-chart/lib/format.d.ts.map +1 -0
  222. package/dist/components/treemap-chart/lib/format.js +9 -0
  223. package/dist/components/treemap-chart/lib/format.js.map +1 -0
  224. package/dist/components/treemap-chart/lib/index.d.ts +6 -0
  225. package/dist/components/treemap-chart/lib/index.d.ts.map +1 -0
  226. package/dist/components/treemap-chart/lib/layout.d.ts +18 -0
  227. package/dist/components/treemap-chart/lib/layout.d.ts.map +1 -0
  228. package/dist/components/treemap-chart/lib/layout.js +31 -0
  229. package/dist/components/treemap-chart/lib/layout.js.map +1 -0
  230. package/dist/components/treemap-chart/lib/normalize.d.ts +4 -0
  231. package/dist/components/treemap-chart/lib/normalize.d.ts.map +1 -0
  232. package/dist/components/treemap-chart/lib/normalize.js +182 -0
  233. package/dist/components/treemap-chart/lib/normalize.js.map +1 -0
  234. package/dist/components/treemap-chart/lib/types.d.ts +63 -0
  235. package/dist/components/treemap-chart/lib/types.d.ts.map +1 -0
  236. package/dist/components/treemap-chart/metadata.json.d.ts +126 -0
  237. package/dist/components/treemap-chart/metadata.json.js +45 -0
  238. package/dist/components/treemap-chart/render/draw.d.ts +24 -0
  239. package/dist/components/treemap-chart/render/draw.d.ts.map +1 -0
  240. package/dist/components/treemap-chart/render/draw.js +124 -0
  241. package/dist/components/treemap-chart/render/draw.js.map +1 -0
  242. package/dist/components/treemap-chart/render/index.d.ts +2 -0
  243. package/dist/components/treemap-chart/render/index.d.ts.map +1 -0
  244. package/dist/element/chart-legend-render.d.ts +5 -0
  245. package/dist/element/chart-legend-render.d.ts.map +1 -1
  246. package/dist/element/chart-legend-render.js +19 -1
  247. package/dist/element/chart-legend-render.js.map +1 -1
  248. package/dist/element/chart-shell-styles.d.ts.map +1 -1
  249. package/dist/element/chart-shell-styles.js +35 -0
  250. package/dist/element/chart-shell-styles.js.map +1 -1
  251. package/dist/index.d.ts +8 -4
  252. package/dist/index.d.ts.map +1 -1
  253. package/dist/index.js +73 -39
  254. package/dist/index.js.map +1 -1
  255. package/dist/lazy/index.d.ts +4 -2
  256. package/dist/lazy/index.d.ts.map +1 -1
  257. package/dist/lazy/index.js +24 -8
  258. package/dist/lazy/index.js.map +1 -1
  259. package/dist/lazy/map-chart.d.ts +4 -0
  260. package/dist/lazy/map-chart.d.ts.map +1 -0
  261. package/dist/lazy/map-chart.js +5 -0
  262. package/dist/lazy/map-chart.js.map +1 -0
  263. package/dist/lazy/matrix-chart.d.ts +4 -0
  264. package/dist/lazy/matrix-chart.d.ts.map +1 -0
  265. package/dist/lazy/matrix-chart.js +5 -0
  266. package/dist/lazy/matrix-chart.js.map +1 -0
  267. package/dist/lazy/treemap-chart.d.ts +4 -0
  268. package/dist/lazy/treemap-chart.d.ts.map +1 -0
  269. package/dist/lazy/treemap-chart.js +5 -0
  270. package/dist/lazy/treemap-chart.js.map +1 -0
  271. package/dist/node_modules/lit-html/directive.js +28 -0
  272. package/dist/node_modules/lit-html/directive.js.map +1 -0
  273. package/dist/node_modules/lit-html/directives/style-map.js +37 -0
  274. package/dist/node_modules/lit-html/directives/style-map.js.map +1 -0
  275. package/dist/node_modules/lit-html/lit-html.js +231 -0
  276. package/dist/node_modules/lit-html/lit-html.js.map +1 -0
  277. package/dist/utils/axis-units.d.ts +15 -0
  278. package/dist/utils/axis-units.d.ts.map +1 -0
  279. package/dist/utils/axis-units.js +27 -0
  280. package/dist/utils/axis-units.js.map +1 -0
  281. package/dist/utils/chart-helpers.d.ts +4 -6
  282. package/dist/utils/chart-helpers.d.ts.map +1 -1
  283. package/dist/utils/chart-helpers.js +16 -15
  284. package/dist/utils/chart-helpers.js.map +1 -1
  285. package/dist/utils/format-text.d.ts +5 -0
  286. package/dist/utils/format-text.d.ts.map +1 -1
  287. package/dist/utils/format-text.js +7 -0
  288. package/dist/utils/format-text.js.map +1 -1
  289. package/dist/utils/fuse-palette.d.ts +12 -0
  290. package/dist/utils/fuse-palette.d.ts.map +1 -1
  291. package/dist/utils/fuse-palette.js +23 -1
  292. package/dist/utils/fuse-palette.js.map +1 -1
  293. package/dist/utils/fuse-widget.d.ts +13 -4
  294. package/dist/utils/fuse-widget.d.ts.map +1 -1
  295. package/dist/utils/fuse-widget.js.map +1 -1
  296. package/dist/utils/fusedash-visual.d.ts +65 -52
  297. package/dist/utils/fusedash-visual.d.ts.map +1 -1
  298. package/dist/utils/fusedash-visual.js +48 -29
  299. package/dist/utils/fusedash-visual.js.map +1 -1
  300. package/package.json +38 -11
  301. package/dist/components/donut-group-chart/element/styles.d.ts +0 -2
  302. package/dist/components/donut-group-chart/element/styles.d.ts.map +0 -1
  303. package/dist/components/donut-group-chart/element/styles.js.map +0 -1
  304. package/dist/components/donut-group-chart/element/ui9000-donut-group-chart.d.ts +0 -34
  305. package/dist/components/donut-group-chart/element/ui9000-donut-group-chart.d.ts.map +0 -1
  306. package/dist/components/donut-group-chart/element/ui9000-donut-group-chart.js +0 -169
  307. package/dist/components/donut-group-chart/element/ui9000-donut-group-chart.js.map +0 -1
  308. package/dist/components/donut-group-chart/index.d.ts +0 -5
  309. package/dist/components/donut-group-chart/index.d.ts.map +0 -1
  310. package/dist/components/donut-group-chart/index.js +0 -23
  311. package/dist/components/donut-group-chart/lib/domain.d.ts +0 -39
  312. package/dist/components/donut-group-chart/lib/domain.d.ts.map +0 -1
  313. package/dist/components/donut-group-chart/lib/domain.js +0 -51
  314. package/dist/components/donut-group-chart/lib/domain.js.map +0 -1
  315. package/dist/components/donut-group-chart/lib/format.d.ts +0 -7
  316. package/dist/components/donut-group-chart/lib/format.d.ts.map +0 -1
  317. package/dist/components/donut-group-chart/lib/format.js +0 -21
  318. package/dist/components/donut-group-chart/lib/format.js.map +0 -1
  319. package/dist/components/donut-group-chart/lib/index.d.ts +0 -5
  320. package/dist/components/donut-group-chart/lib/index.d.ts.map +0 -1
  321. package/dist/components/donut-group-chart/lib/normalize.d.ts +0 -14
  322. package/dist/components/donut-group-chart/lib/normalize.d.ts.map +0 -1
  323. package/dist/components/donut-group-chart/lib/normalize.js +0 -98
  324. package/dist/components/donut-group-chart/lib/normalize.js.map +0 -1
  325. package/dist/components/donut-group-chart/lib/types.d.ts +0 -49
  326. package/dist/components/donut-group-chart/lib/types.d.ts.map +0 -1
  327. package/dist/components/donut-group-chart/metadata.json.d.ts +0 -113
  328. package/dist/components/donut-group-chart/metadata.json.js +0 -45
  329. package/dist/components/donut-group-chart/render/draw.d.ts +0 -44
  330. package/dist/components/donut-group-chart/render/draw.d.ts.map +0 -1
  331. package/dist/components/donut-group-chart/render/draw.js +0 -194
  332. package/dist/components/donut-group-chart/render/draw.js.map +0 -1
  333. package/dist/components/donut-group-chart/render/index.d.ts +0 -2
  334. package/dist/components/donut-group-chart/render/index.d.ts.map +0 -1
  335. package/dist/components/donut-group-chart/tests/fixtures.d.ts +0 -33
  336. package/dist/components/donut-group-chart/tests/fixtures.d.ts.map +0 -1
  337. package/dist/lazy/donut-group-chart.d.ts +0 -4
  338. package/dist/lazy/donut-group-chart.d.ts.map +0 -1
  339. package/dist/lazy/donut-group-chart.js +0 -5
  340. package/dist/lazy/donut-group-chart.js.map +0 -1
  341. /package/dist/components/{donut-group-chart → matrix-chart}/index.js.map +0 -0
  342. /package/dist/components/{donut-group-chart → treemap-chart}/metadata.json.js.map +0 -0
@@ -0,0 +1,455 @@
1
+ import { MAP_STYLES, MAPBOX_CSS_HREF, sanitizeKey, UNMATCHED_FILL, BUBBLE_RADIUS_STEPS } from "../lib/constants.js";
2
+ import { collectionBBox } from "../lib/domain.js";
3
+ import { hexToRgba, darkenColor } from "../lib/format.js";
4
+ import { getRegionIdFromFeatureProperties } from "../lib/geo-index.js";
5
+ import { orderedLayers } from "../lib/join.js";
6
+ import { defaultLayerSlider, featuresForYear, featuresInSliderRange } from "../lib/legend.js";
7
+ import { choroplethPmtilesSource, toPmtilesFillLayer, toPmtilesStrokeLayer, pmtilesIdExpression } from "../lib/pmtiles.js";
8
+ const controllers = /* @__PURE__ */ new WeakMap();
9
+ function stopMapChart(container) {
10
+ var _a;
11
+ (_a = controllers.get(container)) == null ? void 0 : _a.destroy();
12
+ controllers.delete(container);
13
+ }
14
+ function resizeMapChart(container) {
15
+ const ctl = controllers.get(container);
16
+ if (!ctl) return false;
17
+ ctl.resize();
18
+ return true;
19
+ }
20
+ async function renderMapChart(container, options) {
21
+ stopMapChart(container);
22
+ container.replaceChildren();
23
+ injectCss(container);
24
+ if (!options.token) return null;
25
+ let mapbox;
26
+ try {
27
+ mapbox = await import("mapbox-gl");
28
+ } catch {
29
+ return null;
30
+ }
31
+ const root = document.createElement("div");
32
+ root.setAttribute("part", "map");
33
+ root.style.cssText = "width:100%;height:100%;min-height:inherit;";
34
+ container.append(root);
35
+ mapbox.default.accessToken = options.token;
36
+ const map = new mapbox.default.Map({
37
+ container: root,
38
+ style: options.model.terrain ? MAP_STYLES.terrain : options.mode === "dark" ? MAP_STYLES.dark : MAP_STYLES.light,
39
+ center: [0, 20],
40
+ zoom: 1.4,
41
+ attributionControl: true,
42
+ preserveDrawingBuffer: true
43
+ });
44
+ let destroyed = false;
45
+ const layers = orderedLayers(options.model.layers.filter((l) => l.features.length > 0));
46
+ const hover = options.showTooltip === false ? void 0 : options.onHover;
47
+ const live = [];
48
+ let legend = {
49
+ activeLayerIds: options.activeLayerIds ?? layers.map((layer) => layer.layerId),
50
+ sliders: options.sliders ?? {},
51
+ year: options.year
52
+ };
53
+ const applyLayers = () => {
54
+ if (destroyed) return;
55
+ live.length = 0;
56
+ for (const layer of layers) {
57
+ if (layer.visualisationType === "choropleth") {
58
+ live.push(addChoropleth(map, layer, hover, options.mode, options.pmtilesBaseUrl));
59
+ } else if (layer.visualisationType === "bubbles") {
60
+ live.push(addCircles(map, layer, "bubbles", hover));
61
+ } else if (layer.visualisationType === "markers") {
62
+ live.push(addCircles(map, layer, "markers", hover));
63
+ } else {
64
+ live.push(addSpikes(map, layer, hover));
65
+ }
66
+ }
67
+ applyLegendState(map, live, legend.activeLayerIds, legend.sliders, legend.year);
68
+ fit(map, layers);
69
+ };
70
+ map.once("load", applyLayers);
71
+ if (map.isStyleLoaded() && map.loaded()) applyLayers();
72
+ const controller = {
73
+ resize: () => {
74
+ try {
75
+ map.resize();
76
+ } catch {
77
+ }
78
+ },
79
+ destroy: () => {
80
+ destroyed = true;
81
+ try {
82
+ map.remove();
83
+ } catch {
84
+ }
85
+ container.replaceChildren();
86
+ },
87
+ setYear: (year) => {
88
+ legend = { ...legend, year };
89
+ if (destroyed) return;
90
+ try {
91
+ if (!map.isStyleLoaded()) return;
92
+ applyLegendState(map, live, legend.activeLayerIds, legend.sliders, legend.year);
93
+ } catch {
94
+ }
95
+ },
96
+ applyLegend: (activeLayerIds, sliders) => {
97
+ legend = { ...legend, activeLayerIds, sliders };
98
+ if (destroyed) return;
99
+ try {
100
+ if (!map.isStyleLoaded()) return;
101
+ applyLegendState(map, live, activeLayerIds, sliders, legend.year);
102
+ } catch {
103
+ }
104
+ }
105
+ };
106
+ controllers.set(container, controller);
107
+ return controller;
108
+ }
109
+ function injectCss(container) {
110
+ const root = container.getRootNode();
111
+ const host = root instanceof ShadowRoot ? root : document.head;
112
+ if (host.querySelector("#ui9000-mapbox-css")) return;
113
+ const link = document.createElement("link");
114
+ link.id = "ui9000-mapbox-css";
115
+ link.rel = "stylesheet";
116
+ link.href = MAPBOX_CSS_HREF;
117
+ host.append(link);
118
+ }
119
+ function addChoropleth(map, layer, onHover, mode, pmtilesBaseUrl) {
120
+ var _a, _b;
121
+ const queryKey = sanitizeKey(layer.layerId);
122
+ const sourceId = `${layer.mapType}-${queryKey}`;
123
+ const fillId = `${sourceId}-fill-layer`;
124
+ const strokeId = `${sourceId}-selected-stroke-layer`;
125
+ const fillColor = choroplethFillColor(layer, mode);
126
+ const inRangeIds = Object.keys(layer.colorById);
127
+ const pmtiles = choroplethPmtilesSource(layer.mapType, layer.features, pmtilesBaseUrl);
128
+ const fillSpec = {
129
+ id: fillId,
130
+ type: "fill",
131
+ source: sourceId,
132
+ paint: {
133
+ "fill-color": fillColor,
134
+ "fill-opacity": 1
135
+ }
136
+ };
137
+ const strokeSpec = {
138
+ id: strokeId,
139
+ type: "line",
140
+ source: sourceId,
141
+ paint: {
142
+ "line-color": "#000000",
143
+ "line-width": 0,
144
+ "line-opacity": 0
145
+ }
146
+ };
147
+ if (pmtiles) {
148
+ if (!map.getSource(sourceId)) {
149
+ map.addSource(sourceId, {
150
+ type: "vector",
151
+ provider: "pmtiles",
152
+ url: pmtiles.url
153
+ });
154
+ }
155
+ addLayerMaybeBefore(
156
+ map,
157
+ toPmtilesFillLayer(fillSpec, pmtiles.config, inRangeIds)
158
+ );
159
+ if (!map.getLayer(strokeId)) {
160
+ map.addLayer(toPmtilesStrokeLayer(strokeSpec, pmtiles.config));
161
+ }
162
+ const idExpr = pmtilesIdExpression(pmtiles.config);
163
+ bindHover(map, fillId, layer, onHover, (id) => {
164
+ map.setPaintProperty(strokeId, "line-width", ["case", ["==", idExpr, id ?? ""], 2, 0]);
165
+ map.setPaintProperty(strokeId, "line-opacity", ["case", ["==", idExpr, id ?? ""], 1, 0]);
166
+ });
167
+ return {
168
+ layerId: layer.layerId,
169
+ visualisationType: "choropleth",
170
+ sourceId,
171
+ paintIds: [fillId, strokeId],
172
+ fillId,
173
+ yearKey: layer.yearKey,
174
+ features: layer.features,
175
+ colorRanges: layer.colorRanges,
176
+ pmtilesConfig: pmtiles.config
177
+ };
178
+ }
179
+ const collection = {
180
+ type: "FeatureCollection",
181
+ features: layer.features
182
+ };
183
+ if (!map.getSource(sourceId)) {
184
+ map.addSource(sourceId, { type: "geojson", data: collection });
185
+ } else {
186
+ (_b = (_a = map.getSource(sourceId)) == null ? void 0 : _a.setData) == null ? void 0 : _b.call(_a, collection);
187
+ }
188
+ addLayerMaybeBefore(map, fillSpec);
189
+ if (!map.getLayer(strokeId)) {
190
+ map.addLayer(strokeSpec);
191
+ }
192
+ bindHover(map, fillId, layer, onHover, (id) => {
193
+ map.setPaintProperty(strokeId, "line-width", ["case", ["==", ["get", "id"], id ?? ""], 2, 0]);
194
+ map.setPaintProperty(strokeId, "line-opacity", ["case", ["==", ["get", "id"], id ?? ""], 1, 0]);
195
+ });
196
+ return {
197
+ layerId: layer.layerId,
198
+ visualisationType: "choropleth",
199
+ sourceId,
200
+ paintIds: [fillId, strokeId],
201
+ fillId,
202
+ yearKey: layer.yearKey,
203
+ features: layer.features,
204
+ colorRanges: layer.colorRanges
205
+ };
206
+ }
207
+ function choroplethFillColor(layer, mode) {
208
+ const fillColor = ["match", ["get", "id"]];
209
+ for (const [id, color] of Object.entries(layer.colorById)) {
210
+ fillColor.push(id, mode === "dark" ? hexToRgba(darkenColor(rgbaToHex(color), 0.3), 1) : color);
211
+ }
212
+ fillColor.push(UNMATCHED_FILL);
213
+ return fillColor.length > 3 ? fillColor : UNMATCHED_FILL;
214
+ }
215
+ function addLayerMaybeBefore(map, layer) {
216
+ if (map.getLayer(String(layer.id))) return;
217
+ try {
218
+ map.addLayer(layer, "road");
219
+ } catch {
220
+ map.addLayer(layer);
221
+ }
222
+ }
223
+ function addCircles(map, layer, kind, onHover) {
224
+ var _a, _b;
225
+ const queryKey = sanitizeKey(layer.layerId);
226
+ const sourceId = kind === "bubbles" ? `bubbles-${queryKey}` : `scatterplot-${queryKey}`;
227
+ const layerId = kind === "bubbles" ? `bubble-layer-${queryKey}` : `scatterplot-layer-${queryKey}`;
228
+ const collection = { type: "FeatureCollection", features: layer.features };
229
+ if (!map.getSource(sourceId)) {
230
+ map.addSource(sourceId, { type: "geojson", data: collection });
231
+ } else {
232
+ (_b = (_a = map.getSource(sourceId)) == null ? void 0 : _a.setData) == null ? void 0 : _b.call(_a, collection);
233
+ }
234
+ const radius = kind === "markers" ? 4 : bubbleRadiusExpression(layer);
235
+ if (!map.getLayer(layerId)) {
236
+ map.addLayer({
237
+ id: layerId,
238
+ type: "circle",
239
+ source: sourceId,
240
+ paint: {
241
+ "circle-radius": radius,
242
+ "circle-color": layer.fillColor,
243
+ "circle-opacity": kind === "bubbles" ? 0.6 : 0.8,
244
+ "circle-stroke-width": 1,
245
+ "circle-stroke-color": kind === "markers" ? "#fff" : layer.fillColor
246
+ }
247
+ });
248
+ }
249
+ bindHover(map, layerId, layer, onHover);
250
+ return {
251
+ layerId: layer.layerId,
252
+ visualisationType: kind,
253
+ sourceId,
254
+ paintIds: [layerId],
255
+ yearKey: layer.yearKey,
256
+ features: layer.features,
257
+ colorRanges: layer.colorRanges
258
+ };
259
+ }
260
+ function addSpikes(map, layer, onHover) {
261
+ var _a, _b, _c, _d;
262
+ const queryKey = sanitizeKey(layer.layerId);
263
+ const sourceId = `spikes-${queryKey}`;
264
+ const layerId = `svg-spikes-layer-${queryKey}`;
265
+ const collection = { type: "FeatureCollection", features: layer.features };
266
+ for (const feature of layer.features) {
267
+ const iconName = (_a = feature.properties) == null ? void 0 : _a.iconName;
268
+ const svg = (_b = feature.properties) == null ? void 0 : _b.svgContent;
269
+ if (typeof iconName !== "string" || typeof svg !== "string") continue;
270
+ void loadSpikeIcon(map, iconName, svg);
271
+ }
272
+ if (!map.getSource(sourceId)) {
273
+ map.addSource(sourceId, { type: "geojson", data: collection });
274
+ } else {
275
+ (_d = (_c = map.getSource(sourceId)) == null ? void 0 : _c.setData) == null ? void 0 : _d.call(_c, collection);
276
+ }
277
+ if (!map.getLayer(layerId)) {
278
+ map.addLayer({
279
+ id: layerId,
280
+ type: "symbol",
281
+ source: sourceId,
282
+ layout: {
283
+ visibility: "visible",
284
+ "icon-image": ["get", "iconName"],
285
+ "icon-size": 0.9,
286
+ "icon-allow-overlap": true,
287
+ "icon-ignore-placement": true,
288
+ "icon-anchor": "bottom"
289
+ },
290
+ paint: { "icon-opacity": 1 }
291
+ });
292
+ }
293
+ bindHover(map, layerId, layer, onHover);
294
+ return {
295
+ layerId: layer.layerId,
296
+ visualisationType: "spike",
297
+ sourceId,
298
+ paintIds: [layerId],
299
+ yearKey: layer.yearKey,
300
+ features: layer.features,
301
+ colorRanges: layer.colorRanges
302
+ };
303
+ }
304
+ function applyLegendState(map, live, activeLayerIds, sliders, year) {
305
+ var _a, _b;
306
+ const active = new Set(activeLayerIds);
307
+ for (const layer of live) {
308
+ const visible = active.has(layer.layerId);
309
+ for (const paintId of layer.paintIds) {
310
+ if (!map.getLayer(paintId)) continue;
311
+ try {
312
+ map.setLayoutProperty(paintId, "visibility", visible ? "visible" : "none");
313
+ } catch {
314
+ }
315
+ }
316
+ if (!visible) continue;
317
+ const slider = sliders[layer.layerId] ?? defaultLayerSlider(layer.colorRanges.length);
318
+ const inYear = featuresForYear(layer.features, year, layer.yearKey);
319
+ const filtered = featuresInSliderRange(inYear, layer.colorRanges, slider);
320
+ if (layer.visualisationType === "choropleth" && layer.pmtilesConfig && layer.fillId) {
321
+ const ids = [
322
+ ...new Set(
323
+ filtered.map((feature) => {
324
+ var _a2;
325
+ return (_a2 = feature.properties) == null ? void 0 : _a2.id;
326
+ }).filter((id) => typeof id === "string" && id.length > 0)
327
+ )
328
+ ];
329
+ const filter = ids.length > 0 ? ["in", pmtilesIdExpression(layer.pmtilesConfig), ["literal", ids]] : ["==", 1, 0];
330
+ try {
331
+ map.setFilter(layer.fillId, filter);
332
+ } catch {
333
+ }
334
+ continue;
335
+ }
336
+ try {
337
+ (_b = (_a = map.getSource(layer.sourceId)) == null ? void 0 : _a.setData) == null ? void 0 : _b.call(_a, { type: "FeatureCollection", features: filtered });
338
+ } catch {
339
+ }
340
+ }
341
+ }
342
+ function bubbleRadiusExpression(layer) {
343
+ const ranges = [...layer.colorRanges].sort((a, b) => a.start - b.start);
344
+ if (!ranges.length) return BUBBLE_RADIUS_STEPS[0];
345
+ const expr = [
346
+ "step",
347
+ ["coalesce", ["to-number", ["get", "value"]], ranges[0].start],
348
+ BUBBLE_RADIUS_STEPS[0]
349
+ ];
350
+ for (let i = 1; i < Math.min(ranges.length, BUBBLE_RADIUS_STEPS.length); i++) {
351
+ expr.push(ranges[i].start, BUBBLE_RADIUS_STEPS[i]);
352
+ }
353
+ return expr.length < 4 ? BUBBLE_RADIUS_STEPS[0] : expr;
354
+ }
355
+ function bindHover(map, layerId, layer, onHover, onId) {
356
+ if (!onHover) return;
357
+ const read = (properties) => {
358
+ if (!properties) return null;
359
+ const regionId = String(
360
+ getRegionIdFromFeatureProperties(properties, layer.mapType) ?? properties.id ?? properties.regionId ?? ""
361
+ );
362
+ if (!regionId) return null;
363
+ const feature = layer.features.find(
364
+ (f) => {
365
+ var _a, _b;
366
+ return String(((_a = f.properties) == null ? void 0 : _a.id) ?? ((_b = f.properties) == null ? void 0 : _b.regionId)) === regionId;
367
+ }
368
+ );
369
+ const props = (feature == null ? void 0 : feature.properties) ?? properties;
370
+ const value = Number(props.value ?? 0);
371
+ const regionName = String(props.regionName ?? props.name ?? regionId);
372
+ return {
373
+ regionId,
374
+ regionName,
375
+ value,
376
+ valueKey: layer.valueKey,
377
+ layerName: layer.layerName,
378
+ lngLat: { lng: 0, lat: 0 }
379
+ };
380
+ };
381
+ map.on(
382
+ "mousemove",
383
+ layerId,
384
+ (e) => {
385
+ const feature = map.queryRenderedFeatures(e.point, { layers: [layerId] })[0];
386
+ const entry = read(feature == null ? void 0 : feature.properties);
387
+ if (!entry) {
388
+ onId == null ? void 0 : onId(null);
389
+ onHover(null);
390
+ return;
391
+ }
392
+ if (e.lngLat) entry.lngLat = e.lngLat;
393
+ if (e.point) entry.point = e.point;
394
+ onId == null ? void 0 : onId(entry.regionId);
395
+ onHover(entry);
396
+ }
397
+ );
398
+ map.on("mouseleave", layerId, () => {
399
+ onId == null ? void 0 : onId(null);
400
+ onHover(null);
401
+ });
402
+ }
403
+ function fit(map, layers) {
404
+ const features = layers.flatMap((l) => l.features);
405
+ const box = collectionBBox(features);
406
+ if (!box) return;
407
+ try {
408
+ map.fitBounds(
409
+ [
410
+ [box[0], box[1]],
411
+ [box[2], box[3]]
412
+ ],
413
+ { padding: 64, duration: 750 }
414
+ );
415
+ } catch {
416
+ }
417
+ }
418
+ function loadSpikeIcon(map, iconName, svgContent) {
419
+ const svgDataUrl = `data:image/svg+xml;charset=utf-8,${encodeURIComponent(svgContent)}`;
420
+ const img = new Image();
421
+ img.onload = () => {
422
+ const canvas = document.createElement("canvas");
423
+ const ctx = canvas.getContext("2d");
424
+ if (!ctx) return;
425
+ const pixelRatio = 2;
426
+ canvas.width = (img.width || 30) * pixelRatio;
427
+ canvas.height = (img.height || 30) * pixelRatio;
428
+ ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);
429
+ ctx.drawImage(img, 0, 0, img.width || 30, img.height || 30);
430
+ const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
431
+ if (map.hasImage(iconName)) {
432
+ try {
433
+ map.removeImage(iconName);
434
+ } catch {
435
+ }
436
+ }
437
+ try {
438
+ map.addImage(iconName, imageData, { pixelRatio: 2 });
439
+ } catch {
440
+ }
441
+ };
442
+ img.src = svgDataUrl;
443
+ }
444
+ function rgbaToHex(color) {
445
+ const match = color.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)/);
446
+ if (!match) return color.startsWith("#") ? color : "#473DD9";
447
+ const hex = (n) => Number(n).toString(16).padStart(2, "0");
448
+ return `#${hex(match[1])}${hex(match[2])}${hex(match[3])}`;
449
+ }
450
+ export {
451
+ renderMapChart,
452
+ resizeMapChart,
453
+ stopMapChart
454
+ };
455
+ //# sourceMappingURL=draw.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draw.js","sources":["../../../../src/components/map-chart/render/draw.ts"],"sourcesContent":["import {\n BUBBLE_RADIUS_STEPS,\n MAP_STYLES,\n MAPBOX_CSS_HREF,\n UNMATCHED_FILL,\n sanitizeKey,\n type MapVisualisation,\n} from '../lib/constants.js';\nimport { collectionBBox } from '../lib/domain.js';\nimport { darkenColor, hexToRgba } from '../lib/format.js';\nimport { getRegionIdFromFeatureProperties } from '../lib/geo-index.js';\nimport { orderedLayers } from '../lib/join.js';\nimport {\n defaultLayerSlider,\n featuresForYear,\n featuresInSliderRange,\n type LayerSlider,\n} from '../lib/legend.js';\nimport {\n choroplethPmtilesSource,\n pmtilesIdExpression,\n toPmtilesFillLayer,\n toPmtilesStrokeLayer,\n type PmtilesLayerConfig,\n} from '../lib/pmtiles.js';\nimport type { ColorRange, GeoJsonFeature, MapHoverEntry, MapLayerModel, MapModel } from '../lib/types.js';\n\nexport type MapMode = 'light' | 'dark';\n\nexport type RenderMapChartOptions = {\n model: MapModel;\n token: string;\n mode?: MapMode;\n showTooltip?: boolean;\n pmtilesBaseUrl?: string;\n activeLayerIds?: string[];\n sliders?: Record<string, LayerSlider>;\n year?: string;\n onHover?: (entry: MapHoverEntry | null) => void;\n};\n\nexport type MapChartController = {\n resize: () => void;\n destroy: () => void;\n setYear: (year: string | undefined) => void;\n applyLegend: (activeLayerIds: string[], sliders: Record<string, LayerSlider>) => void;\n};\n\ntype LiveMapLayer = {\n layerId: string;\n visualisationType: MapVisualisation;\n sourceId: string;\n paintIds: string[];\n fillId?: string;\n yearKey: string;\n features: GeoJsonFeature[];\n colorRanges: ColorRange[];\n pmtilesConfig?: PmtilesLayerConfig;\n};\n\ntype MapboxMap = {\n addSource: (id: string, source: Record<string, unknown>) => void;\n addLayer: (layer: Record<string, unknown>, before?: string) => void;\n addImage: (id: string, image: ImageData, options?: { pixelRatio?: number }) => void;\n getSource: (id: string) => { setData?: (data: unknown) => void } | undefined;\n getLayer: (id: string) => unknown;\n hasImage: (id: string) => boolean;\n removeImage: (id: string) => void;\n setPaintProperty: (id: string, name: string, value: unknown) => void;\n setLayoutProperty: (id: string, name: string, value: unknown) => void;\n setFilter: (id: string, filter: unknown) => void;\n fitBounds: (\n bounds: [[number, number], [number, number]],\n options?: { padding?: number; duration?: number },\n ) => void;\n resize: () => void;\n remove: () => void;\n loaded: () => boolean;\n isStyleLoaded: () => boolean;\n on: (event: string, layerOrHandler: unknown, handler?: unknown) => void;\n off: (event: string, layerOrHandler: unknown, handler?: unknown) => void;\n once: (event: string, handler: () => void) => void;\n queryRenderedFeatures: (\n point: unknown,\n options?: { layers?: string[] },\n ) => Array<{ properties?: Record<string, unknown>; geometry?: { coordinates?: unknown } }>;\n};\n\ntype MapboxModule = {\n default: {\n accessToken: string;\n Map: new (options: Record<string, unknown>) => MapboxMap;\n };\n};\n\nconst controllers = new WeakMap<HTMLElement, MapChartController>();\n\nexport function stopMapChart(container: HTMLElement): void {\n controllers.get(container)?.destroy();\n controllers.delete(container);\n}\n\nexport function resizeMapChart(container: HTMLElement): boolean {\n const ctl = controllers.get(container);\n if (!ctl) return false;\n ctl.resize();\n return true;\n}\n\nexport async function renderMapChart(\n container: HTMLElement,\n options: RenderMapChartOptions,\n): Promise<MapChartController | null> {\n stopMapChart(container);\n container.replaceChildren();\n injectCss(container);\n\n if (!options.token) return null;\n\n let mapbox: MapboxModule;\n try {\n mapbox = (await import('mapbox-gl')) as unknown as MapboxModule;\n } catch {\n return null;\n }\n\n const root = document.createElement('div');\n root.setAttribute('part', 'map');\n root.style.cssText = 'width:100%;height:100%;min-height:inherit;';\n container.append(root);\n\n mapbox.default.accessToken = options.token;\n const map = new mapbox.default.Map({\n container: root,\n style: options.model.terrain\n ? MAP_STYLES.terrain\n : options.mode === 'dark'\n ? MAP_STYLES.dark\n : MAP_STYLES.light,\n center: [0, 20],\n zoom: 1.4,\n attributionControl: true,\n preserveDrawingBuffer: true,\n });\n\n let destroyed = false;\n const layers = orderedLayers(options.model.layers.filter((l) => l.features.length > 0));\n const hover = options.showTooltip === false ? undefined : options.onHover;\n const live: LiveMapLayer[] = [];\n let legend = {\n activeLayerIds: options.activeLayerIds ?? layers.map((layer) => layer.layerId),\n sliders: options.sliders ?? {},\n year: options.year,\n };\n\n const applyLayers = (): void => {\n if (destroyed) return;\n live.length = 0;\n for (const layer of layers) {\n if (layer.visualisationType === 'choropleth') {\n live.push(addChoropleth(map, layer, hover, options.mode, options.pmtilesBaseUrl));\n } else if (layer.visualisationType === 'bubbles') {\n live.push(addCircles(map, layer, 'bubbles', hover));\n } else if (layer.visualisationType === 'markers') {\n live.push(addCircles(map, layer, 'markers', hover));\n } else {\n live.push(addSpikes(map, layer, hover));\n }\n }\n applyLegendState(map, live, legend.activeLayerIds, legend.sliders, legend.year);\n fit(map, layers);\n };\n\n map.once('load', applyLayers);\n if (map.isStyleLoaded() && map.loaded()) applyLayers();\n\n const controller: MapChartController = {\n resize: () => {\n try {\n map.resize();\n } catch {\n /* map already gone */\n }\n },\n destroy: () => {\n destroyed = true;\n try {\n map.remove();\n } catch {\n /* ignore */\n }\n container.replaceChildren();\n },\n setYear: (year) => {\n legend = { ...legend, year };\n if (destroyed) return;\n try {\n if (!map.isStyleLoaded()) return;\n applyLegendState(map, live, legend.activeLayerIds, legend.sliders, legend.year);\n } catch {\n /* style not ready */\n }\n },\n applyLegend: (activeLayerIds, sliders) => {\n legend = { ...legend, activeLayerIds, sliders };\n if (destroyed) return;\n try {\n if (!map.isStyleLoaded()) return;\n applyLegendState(map, live, activeLayerIds, sliders, legend.year);\n } catch {\n /* style not ready */\n }\n },\n };\n controllers.set(container, controller);\n return controller;\n}\n\nfunction injectCss(container: HTMLElement): void {\n const root = container.getRootNode();\n const host = root instanceof ShadowRoot ? root : document.head;\n if (host.querySelector('#ui9000-mapbox-css')) return;\n const link = document.createElement('link');\n link.id = 'ui9000-mapbox-css';\n link.rel = 'stylesheet';\n link.href = MAPBOX_CSS_HREF;\n host.append(link);\n}\n\nfunction addChoropleth(\n map: MapboxMap,\n layer: MapLayerModel,\n onHover: RenderMapChartOptions['onHover'],\n mode?: MapMode,\n pmtilesBaseUrl?: string,\n): LiveMapLayer {\n const queryKey = sanitizeKey(layer.layerId);\n const sourceId = `${layer.mapType}-${queryKey}`;\n const fillId = `${sourceId}-fill-layer`;\n const strokeId = `${sourceId}-selected-stroke-layer`;\n const fillColor = choroplethFillColor(layer, mode);\n const inRangeIds = Object.keys(layer.colorById);\n const pmtiles = choroplethPmtilesSource(layer.mapType, layer.features, pmtilesBaseUrl);\n\n const fillSpec: Record<string, unknown> = {\n id: fillId,\n type: 'fill',\n source: sourceId,\n paint: {\n 'fill-color': fillColor,\n 'fill-opacity': 1,\n },\n };\n const strokeSpec: Record<string, unknown> = {\n id: strokeId,\n type: 'line',\n source: sourceId,\n paint: {\n 'line-color': '#000000',\n 'line-width': 0,\n 'line-opacity': 0,\n },\n };\n\n if (pmtiles) {\n if (!map.getSource(sourceId)) {\n map.addSource(sourceId, {\n type: 'vector',\n provider: 'pmtiles',\n url: pmtiles.url,\n });\n }\n addLayerMaybeBefore(\n map,\n toPmtilesFillLayer(fillSpec, pmtiles.config, inRangeIds),\n );\n if (!map.getLayer(strokeId)) {\n map.addLayer(toPmtilesStrokeLayer(strokeSpec, pmtiles.config));\n }\n const idExpr = pmtilesIdExpression(pmtiles.config);\n bindHover(map, fillId, layer, onHover, (id) => {\n map.setPaintProperty(strokeId, 'line-width', ['case', ['==', idExpr, id ?? ''], 2, 0]);\n map.setPaintProperty(strokeId, 'line-opacity', ['case', ['==', idExpr, id ?? ''], 1, 0]);\n });\n return {\n layerId: layer.layerId,\n visualisationType: 'choropleth',\n sourceId,\n paintIds: [fillId, strokeId],\n fillId,\n yearKey: layer.yearKey,\n features: layer.features,\n colorRanges: layer.colorRanges,\n pmtilesConfig: pmtiles.config,\n };\n }\n\n const collection = {\n type: 'FeatureCollection',\n features: layer.features,\n };\n if (!map.getSource(sourceId)) {\n map.addSource(sourceId, { type: 'geojson', data: collection });\n } else {\n map.getSource(sourceId)?.setData?.(collection);\n }\n\n addLayerMaybeBefore(map, fillSpec);\n if (!map.getLayer(strokeId)) {\n map.addLayer(strokeSpec);\n }\n\n bindHover(map, fillId, layer, onHover, (id) => {\n map.setPaintProperty(strokeId, 'line-width', ['case', ['==', ['get', 'id'], id ?? ''], 2, 0]);\n map.setPaintProperty(strokeId, 'line-opacity', ['case', ['==', ['get', 'id'], id ?? ''], 1, 0]);\n });\n return {\n layerId: layer.layerId,\n visualisationType: 'choropleth',\n sourceId,\n paintIds: [fillId, strokeId],\n fillId,\n yearKey: layer.yearKey,\n features: layer.features,\n colorRanges: layer.colorRanges,\n };\n}\n\nfunction choroplethFillColor(layer: MapLayerModel, mode?: MapMode): unknown {\n const fillColor: unknown[] = ['match', ['get', 'id']];\n for (const [id, color] of Object.entries(layer.colorById)) {\n fillColor.push(id, mode === 'dark' ? hexToRgba(darkenColor(rgbaToHex(color), 0.3), 1) : color);\n }\n fillColor.push(UNMATCHED_FILL);\n return fillColor.length > 3 ? fillColor : UNMATCHED_FILL;\n}\n\nfunction addLayerMaybeBefore(map: MapboxMap, layer: Record<string, unknown>): void {\n if (map.getLayer(String(layer.id))) return;\n try {\n map.addLayer(layer, 'road');\n } catch {\n map.addLayer(layer);\n }\n}\n\nfunction addCircles(\n map: MapboxMap,\n layer: MapLayerModel,\n kind: 'bubbles' | 'markers',\n onHover: RenderMapChartOptions['onHover'],\n): LiveMapLayer {\n const queryKey = sanitizeKey(layer.layerId);\n const sourceId = kind === 'bubbles' ? `bubbles-${queryKey}` : `scatterplot-${queryKey}`;\n const layerId = kind === 'bubbles' ? `bubble-layer-${queryKey}` : `scatterplot-layer-${queryKey}`;\n const collection = { type: 'FeatureCollection', features: layer.features };\n\n if (!map.getSource(sourceId)) {\n map.addSource(sourceId, { type: 'geojson', data: collection });\n } else {\n map.getSource(sourceId)?.setData?.(collection);\n }\n\n const radius =\n kind === 'markers'\n ? 4\n : bubbleRadiusExpression(layer);\n\n if (!map.getLayer(layerId)) {\n map.addLayer({\n id: layerId,\n type: 'circle',\n source: sourceId,\n paint: {\n 'circle-radius': radius,\n 'circle-color': layer.fillColor,\n 'circle-opacity': kind === 'bubbles' ? 0.6 : 0.8,\n 'circle-stroke-width': 1,\n 'circle-stroke-color': kind === 'markers' ? '#fff' : layer.fillColor,\n },\n });\n }\n\n bindHover(map, layerId, layer, onHover);\n return {\n layerId: layer.layerId,\n visualisationType: kind,\n sourceId,\n paintIds: [layerId],\n yearKey: layer.yearKey,\n features: layer.features,\n colorRanges: layer.colorRanges,\n };\n}\n\nfunction addSpikes(\n map: MapboxMap,\n layer: MapLayerModel,\n onHover: RenderMapChartOptions['onHover'],\n): LiveMapLayer {\n const queryKey = sanitizeKey(layer.layerId);\n const sourceId = `spikes-${queryKey}`;\n const layerId = `svg-spikes-layer-${queryKey}`;\n const collection = { type: 'FeatureCollection', features: layer.features };\n\n for (const feature of layer.features) {\n const iconName = feature.properties?.iconName;\n const svg = feature.properties?.svgContent;\n if (typeof iconName !== 'string' || typeof svg !== 'string') continue;\n void loadSpikeIcon(map, iconName, svg);\n }\n\n if (!map.getSource(sourceId)) {\n map.addSource(sourceId, { type: 'geojson', data: collection });\n } else {\n map.getSource(sourceId)?.setData?.(collection);\n }\n\n if (!map.getLayer(layerId)) {\n map.addLayer({\n id: layerId,\n type: 'symbol',\n source: sourceId,\n layout: {\n visibility: 'visible',\n 'icon-image': ['get', 'iconName'],\n 'icon-size': 0.9,\n 'icon-allow-overlap': true,\n 'icon-ignore-placement': true,\n 'icon-anchor': 'bottom',\n },\n paint: { 'icon-opacity': 1 },\n });\n }\n\n bindHover(map, layerId, layer, onHover);\n return {\n layerId: layer.layerId,\n visualisationType: 'spike',\n sourceId,\n paintIds: [layerId],\n yearKey: layer.yearKey,\n features: layer.features,\n colorRanges: layer.colorRanges,\n };\n}\n\nfunction applyLegendState(\n map: MapboxMap,\n live: LiveMapLayer[],\n activeLayerIds: string[],\n sliders: Record<string, LayerSlider>,\n year?: string,\n): void {\n const active = new Set(activeLayerIds);\n for (const layer of live) {\n const visible = active.has(layer.layerId);\n for (const paintId of layer.paintIds) {\n if (!map.getLayer(paintId)) continue;\n try {\n map.setLayoutProperty(paintId, 'visibility', visible ? 'visible' : 'none');\n } catch {\n /* layer not ready */\n }\n }\n if (!visible) continue;\n const slider = sliders[layer.layerId] ?? defaultLayerSlider(layer.colorRanges.length);\n const inYear = featuresForYear(layer.features, year, layer.yearKey);\n const filtered = featuresInSliderRange(inYear, layer.colorRanges, slider);\n if (layer.visualisationType === 'choropleth' && layer.pmtilesConfig && layer.fillId) {\n const ids = [\n ...new Set(\n filtered\n .map((feature) => feature.properties?.id)\n .filter((id): id is string => typeof id === 'string' && id.length > 0),\n ),\n ];\n const filter =\n ids.length > 0\n ? ['in', pmtilesIdExpression(layer.pmtilesConfig), ['literal', ids]]\n : ['==', 1, 0];\n try {\n map.setFilter(layer.fillId, filter);\n } catch {\n /* ignore */\n }\n continue;\n }\n try {\n map.getSource(layer.sourceId)?.setData?.({ type: 'FeatureCollection', features: filtered });\n } catch {\n /* source gone */\n }\n }\n}\n\nfunction bubbleRadiusExpression(layer: MapLayerModel): unknown {\n const ranges = [...layer.colorRanges].sort((a, b) => a.start - b.start);\n if (!ranges.length) return BUBBLE_RADIUS_STEPS[0];\n const expr: unknown[] = [\n 'step',\n ['coalesce', ['to-number', ['get', 'value']], ranges[0].start],\n BUBBLE_RADIUS_STEPS[0],\n ];\n for (let i = 1; i < Math.min(ranges.length, BUBBLE_RADIUS_STEPS.length); i++) {\n expr.push(ranges[i].start, BUBBLE_RADIUS_STEPS[i]);\n }\n return expr.length < 4 ? BUBBLE_RADIUS_STEPS[0] : expr;\n}\n\nfunction bindHover(\n map: MapboxMap,\n layerId: string,\n layer: MapLayerModel,\n onHover: RenderMapChartOptions['onHover'],\n onId?: (id: string | null) => void,\n): void {\n if (!onHover) return;\n\n const read = (properties: Record<string, unknown> | undefined): MapHoverEntry | null => {\n if (!properties) return null;\n const regionId = String(\n getRegionIdFromFeatureProperties(properties, layer.mapType) ??\n properties.id ??\n properties.regionId ??\n '',\n );\n if (!regionId) return null;\n const feature = layer.features.find(\n (f) => String(f.properties?.id ?? f.properties?.regionId) === regionId,\n );\n const props = feature?.properties ?? properties;\n const value = Number(props.value ?? 0);\n const regionName = String(props.regionName ?? props.name ?? regionId);\n return {\n regionId,\n regionName,\n value,\n valueKey: layer.valueKey,\n layerName: layer.layerName,\n lngLat: { lng: 0, lat: 0 },\n };\n };\n\n map.on(\n 'mousemove',\n layerId,\n (e: {\n point?: { x: number; y: number };\n lngLat?: { lng: number; lat: number };\n }) => {\n const feature = map.queryRenderedFeatures(e.point, { layers: [layerId] })[0];\n const entry = read(feature?.properties);\n if (!entry) {\n onId?.(null);\n onHover(null);\n return;\n }\n if (e.lngLat) entry.lngLat = e.lngLat;\n if (e.point) entry.point = e.point;\n onId?.(entry.regionId);\n onHover(entry);\n },\n );\n map.on('mouseleave', layerId, () => {\n onId?.(null);\n onHover(null);\n });\n}\n\nfunction fit(map: MapboxMap, layers: MapLayerModel[]): void {\n const features = layers.flatMap((l) => l.features);\n const box = collectionBBox(features);\n if (!box) return;\n try {\n map.fitBounds(\n [\n [box[0], box[1]],\n [box[2], box[3]],\n ],\n { padding: 64, duration: 750 },\n );\n } catch {\n /* empty bounds */\n }\n}\n\nfunction loadSpikeIcon(map: MapboxMap, iconName: string, svgContent: string): void {\n const svgDataUrl = `data:image/svg+xml;charset=utf-8,${encodeURIComponent(svgContent)}`;\n const img = new Image();\n img.onload = () => {\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n if (!ctx) return;\n const pixelRatio = 2;\n canvas.width = (img.width || 30) * pixelRatio;\n canvas.height = (img.height || 30) * pixelRatio;\n ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n ctx.drawImage(img, 0, 0, img.width || 30, img.height || 30);\n const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);\n if (map.hasImage(iconName)) {\n try {\n map.removeImage(iconName);\n } catch {\n /* ignore */\n }\n }\n try {\n map.addImage(iconName, imageData, { pixelRatio: 2 });\n } catch {\n /* already exists */\n }\n };\n img.src = svgDataUrl;\n}\n\nfunction rgbaToHex(color: string): string {\n const match = color.match(/rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)/);\n if (!match) return color.startsWith('#') ? color : '#473DD9';\n const hex = (n: string) => Number(n).toString(16).padStart(2, '0');\n return `#${hex(match[1])}${hex(match[2])}${hex(match[3])}`;\n}\n"],"names":["_a"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { renderMapChart, resizeMapChart, stopMapChart, type MapChartController, type MapMode, type RenderMapChartOptions, } from './draw.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/map-chart/render/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,cAAc,EACd,YAAY,EACZ,KAAK,kBAAkB,EACvB,KAAK,OAAO,EACZ,KAAK,qBAAqB,GAC3B,MAAM,WAAW,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const matrixStyles: import('lit').CSSResult;
2
+ //# sourceMappingURL=styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../src/components/matrix-chart/element/styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY,yBA2FxB,CAAC"}
@@ -0,0 +1,97 @@
1
+ import { css } from "lit";
2
+ const matrixStyles = css`
3
+ :host {
4
+ display: block;
5
+ position: relative;
6
+ width: 100%;
7
+ height: 100%;
8
+ min-height: 320px;
9
+ color: var(--ui9000-color-text, #111827);
10
+ font-family: var(--ui9000-font-family, system-ui, sans-serif);
11
+ box-sizing: border-box;
12
+ }
13
+ .chart-body {
14
+ flex: 1;
15
+ min-height: 0;
16
+ display: flex;
17
+ flex-direction: column;
18
+ }
19
+ .chart-top-axis {
20
+ flex-shrink: 0;
21
+ width: 100%;
22
+ overflow: hidden;
23
+ }
24
+ .chart-scroll {
25
+ flex: 1;
26
+ min-height: 0;
27
+ overflow-y: auto;
28
+ overflow-x: hidden;
29
+ position: relative;
30
+ }
31
+ .chart-root {
32
+ width: 100%;
33
+ min-height: inherit;
34
+ }
35
+ .chart-root svg .matrix-cell {
36
+ cursor: default;
37
+ }
38
+ .chart-root[data-hoverable] svg .matrix-cell:hover {
39
+ stroke: var(--ui9000-color-text, #111827);
40
+ stroke-width: 1.5px;
41
+ }
42
+ .palette-legend {
43
+ display: flex;
44
+ align-items: center;
45
+ gap: 8px;
46
+ flex-shrink: 0;
47
+ padding: 8px 0 12px;
48
+ font-size: 12px;
49
+ line-height: 1.2;
50
+ color: var(--ui9000-color-text-muted, #6c7584);
51
+ }
52
+ .palette-swatches {
53
+ display: flex;
54
+ align-items: center;
55
+ }
56
+ .palette-swatch {
57
+ width: 14px;
58
+ height: 8px;
59
+ }
60
+ .palette-swatch:first-child {
61
+ border-top-left-radius: 8px;
62
+ border-bottom-left-radius: 8px;
63
+ }
64
+ .palette-swatch:last-child {
65
+ border-top-right-radius: 8px;
66
+ border-bottom-right-radius: 8px;
67
+ }
68
+ .tooltip {
69
+ position: absolute;
70
+ pointer-events: none;
71
+ z-index: 2;
72
+ padding: 6px 10px;
73
+ border-radius: 6px;
74
+ font-size: 12px;
75
+ line-height: 1.35;
76
+ background: var(--ui9000-color-text, #111827);
77
+ color: #fff;
78
+ box-shadow: 0 4px 12px rgb(0 0 0 / 18%);
79
+ transform: translate(-50%, calc(-100% - 10px));
80
+ white-space: nowrap;
81
+ }
82
+ .tooltip .name {
83
+ font-weight: 600;
84
+ }
85
+ .empty {
86
+ display: grid;
87
+ place-items: center;
88
+ height: 100%;
89
+ min-height: inherit;
90
+ color: var(--ui9000-color-text-muted, #6b7280);
91
+ font-size: 0.875rem;
92
+ }
93
+ `;
94
+ export {
95
+ matrixStyles
96
+ };
97
+ //# sourceMappingURL=styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.js","sources":["../../../../src/components/matrix-chart/element/styles.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const matrixStyles = css`\n :host {\n display: block;\n position: relative;\n width: 100%;\n height: 100%;\n min-height: 320px;\n color: var(--ui9000-color-text, #111827);\n font-family: var(--ui9000-font-family, system-ui, sans-serif);\n box-sizing: border-box;\n }\n .chart-body {\n flex: 1;\n min-height: 0;\n display: flex;\n flex-direction: column;\n }\n .chart-top-axis {\n flex-shrink: 0;\n width: 100%;\n overflow: hidden;\n }\n .chart-scroll {\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n overflow-x: hidden;\n position: relative;\n }\n .chart-root {\n width: 100%;\n min-height: inherit;\n }\n .chart-root svg .matrix-cell {\n cursor: default;\n }\n .chart-root[data-hoverable] svg .matrix-cell:hover {\n stroke: var(--ui9000-color-text, #111827);\n stroke-width: 1.5px;\n }\n .palette-legend {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-shrink: 0;\n padding: 8px 0 12px;\n font-size: 12px;\n line-height: 1.2;\n color: var(--ui9000-color-text-muted, #6c7584);\n }\n .palette-swatches {\n display: flex;\n align-items: center;\n }\n .palette-swatch {\n width: 14px;\n height: 8px;\n }\n .palette-swatch:first-child {\n border-top-left-radius: 8px;\n border-bottom-left-radius: 8px;\n }\n .palette-swatch:last-child {\n border-top-right-radius: 8px;\n border-bottom-right-radius: 8px;\n }\n .tooltip {\n position: absolute;\n pointer-events: none;\n z-index: 2;\n padding: 6px 10px;\n border-radius: 6px;\n font-size: 12px;\n line-height: 1.35;\n background: var(--ui9000-color-text, #111827);\n color: #fff;\n box-shadow: 0 4px 12px rgb(0 0 0 / 18%);\n transform: translate(-50%, calc(-100% - 10px));\n white-space: nowrap;\n }\n .tooltip .name {\n font-weight: 600;\n }\n .empty {\n display: grid;\n place-items: center;\n height: 100%;\n min-height: inherit;\n color: var(--ui9000-color-text-muted, #6b7280);\n font-size: 0.875rem;\n }\n`;\n"],"names":[],"mappings":";AAEO,MAAM,eAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
@@ -0,0 +1,39 @@
1
+ import { PropertyValues } from 'lit';
2
+ import { Ui9000ChartElement } from '../../../element/ui9000-chart-base.js';
3
+ export declare class Ui9000MatrixChart extends Ui9000ChartElement {
4
+ static styles: import('lit').CSSResult[];
5
+ showLegend: boolean;
6
+ showTooltip: boolean;
7
+ private _tooltip;
8
+ private _empty;
9
+ private _pinnedTopAxis;
10
+ private _resizeObserver?;
11
+ private _raf;
12
+ private _drawnSignature;
13
+ private _drawnModel;
14
+ private _modelJson;
15
+ private _model;
16
+ connectedCallback(): void;
17
+ disconnectedCallback(): void;
18
+ firstUpdated(): void;
19
+ updated(changed: PropertyValues): void;
20
+ private scheduleDraw;
21
+ /** Normalizing a dense grid is not free — only redo it when `data` changes. */
22
+ private parseData;
23
+ private draw;
24
+ /**
25
+ * Client tooltip: the row field and its value, then the measure — each
26
+ * carrying the unit declared for that field in `axisDetails`.
27
+ */
28
+ private tooltipRows;
29
+ /** FuseDash `ChartLegend legendType="palette"` — Low → High swatch ramp. */
30
+ private renderPaletteLegend;
31
+ render(): import('lit-html').TemplateResult<1>;
32
+ }
33
+ declare global {
34
+ interface HTMLElementTagNameMap {
35
+ 'ui9000-matrix-chart': Ui9000MatrixChart;
36
+ }
37
+ }
38
+ export declare function registerMatrixChart(): void;
39
+ //# sourceMappingURL=ui9000-matrix-chart.d.ts.map