@fusedashlabs/widgets 0.5.0 → 0.6.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 (284) hide show
  1. package/CHANGELOG.md +21 -1
  2. package/README.md +10 -13
  3. package/dist/catalog/load.js +86 -82
  4. package/dist/catalog/load.js.map +1 -1
  5. package/dist/components/area-chart/element/ui9000-area-chart.d.ts +0 -1
  6. package/dist/components/area-chart/element/ui9000-area-chart.d.ts.map +1 -1
  7. package/dist/components/area-chart/element/ui9000-area-chart.js +10 -27
  8. package/dist/components/area-chart/element/ui9000-area-chart.js.map +1 -1
  9. package/dist/components/area-chart/index.js +1 -1
  10. package/dist/components/area-grouped-bar-chart/element/ui9000-area-grouped-bar-chart.d.ts +1 -2
  11. package/dist/components/area-grouped-bar-chart/element/ui9000-area-grouped-bar-chart.d.ts.map +1 -1
  12. package/dist/components/area-grouped-bar-chart/element/ui9000-area-grouped-bar-chart.js +11 -27
  13. package/dist/components/area-grouped-bar-chart/element/ui9000-area-grouped-bar-chart.js.map +1 -1
  14. package/dist/components/area-grouped-bar-chart/index.js +1 -1
  15. package/dist/components/bar-chart/element/styles.js +1 -1
  16. package/dist/components/bar-chart/element/styles.js.map +1 -1
  17. package/dist/components/bar-chart/element/ui9000-bar-chart.d.ts +0 -1
  18. package/dist/components/bar-chart/element/ui9000-bar-chart.d.ts.map +1 -1
  19. package/dist/components/bar-chart/element/ui9000-bar-chart.js +10 -30
  20. package/dist/components/bar-chart/element/ui9000-bar-chart.js.map +1 -1
  21. package/dist/components/bar-chart/index.js +3 -3
  22. package/dist/components/bar-chart/metadata.json.d.ts +6 -0
  23. package/dist/components/bar-chart/metadata.json.js +1 -1
  24. package/dist/components/bias-variance-tradeoff-chart/element/styles.js +3 -1
  25. package/dist/components/bias-variance-tradeoff-chart/element/styles.js.map +1 -1
  26. package/dist/components/bias-variance-tradeoff-chart/element/ui9000-bias-variance-tradeoff-chart.d.ts +0 -1
  27. package/dist/components/bias-variance-tradeoff-chart/element/ui9000-bias-variance-tradeoff-chart.d.ts.map +1 -1
  28. package/dist/components/bias-variance-tradeoff-chart/element/ui9000-bias-variance-tradeoff-chart.js +13 -36
  29. package/dist/components/bias-variance-tradeoff-chart/element/ui9000-bias-variance-tradeoff-chart.js.map +1 -1
  30. package/dist/components/bias-variance-tradeoff-chart/index.js +3 -3
  31. package/dist/components/box-plot-chart/element/ui9000-box-plot-chart.d.ts +0 -1
  32. package/dist/components/box-plot-chart/element/ui9000-box-plot-chart.d.ts.map +1 -1
  33. package/dist/components/box-plot-chart/element/ui9000-box-plot-chart.js +13 -35
  34. package/dist/components/box-plot-chart/element/ui9000-box-plot-chart.js.map +1 -1
  35. package/dist/components/box-plot-chart/index.js +2 -2
  36. package/dist/components/box-plot-chart/render/draw.js +1 -1
  37. package/dist/components/bubble-chart/element/ui9000-bubble-chart.d.ts +0 -1
  38. package/dist/components/bubble-chart/element/ui9000-bubble-chart.d.ts.map +1 -1
  39. package/dist/components/bubble-chart/element/ui9000-bubble-chart.js +7 -25
  40. package/dist/components/bubble-chart/element/ui9000-bubble-chart.js.map +1 -1
  41. package/dist/components/bubble-chart/index.js +1 -1
  42. package/dist/components/chart-renderer/element/styles.d.ts.map +1 -1
  43. package/dist/components/chart-renderer/element/styles.js +4 -0
  44. package/dist/components/chart-renderer/element/styles.js.map +1 -1
  45. package/dist/components/chart-renderer/element/ui9000-chart-renderer.d.ts +10 -0
  46. package/dist/components/chart-renderer/element/ui9000-chart-renderer.d.ts.map +1 -1
  47. package/dist/components/chart-renderer/element/ui9000-chart-renderer.js +40 -4
  48. package/dist/components/chart-renderer/element/ui9000-chart-renderer.js.map +1 -1
  49. package/dist/components/chart-renderer/index.js +1 -1
  50. package/dist/components/chart-renderer/lib/registry.d.ts.map +1 -1
  51. package/dist/components/chart-renderer/lib/registry.js +2 -0
  52. package/dist/components/chart-renderer/lib/registry.js.map +1 -1
  53. package/dist/components/custom-widget/element/ui9000-custom-widget.js +2 -2
  54. package/dist/components/custom-widget/index.js +1 -1
  55. package/dist/components/donut-chart/element/ui9000-donut-chart.d.ts +0 -1
  56. package/dist/components/donut-chart/element/ui9000-donut-chart.d.ts.map +1 -1
  57. package/dist/components/donut-chart/element/ui9000-donut-chart.js +11 -23
  58. package/dist/components/donut-chart/element/ui9000-donut-chart.js.map +1 -1
  59. package/dist/components/donut-chart/index.js +2 -2
  60. package/dist/components/gini-impurity-entropy-chart/element/ui9000-gini-impurity-entropy-chart.d.ts +0 -2
  61. package/dist/components/gini-impurity-entropy-chart/element/ui9000-gini-impurity-entropy-chart.d.ts.map +1 -1
  62. package/dist/components/gini-impurity-entropy-chart/element/ui9000-gini-impurity-entropy-chart.js +12 -35
  63. package/dist/components/gini-impurity-entropy-chart/element/ui9000-gini-impurity-entropy-chart.js.map +1 -1
  64. package/dist/components/gini-impurity-entropy-chart/index.js +5 -5
  65. package/dist/components/gini-impurity-entropy-chart/render/draw.js +1 -1
  66. package/dist/components/histogram-chart/element/ui9000-histogram-chart.d.ts +0 -1
  67. package/dist/components/histogram-chart/element/ui9000-histogram-chart.d.ts.map +1 -1
  68. package/dist/components/histogram-chart/element/ui9000-histogram-chart.js +10 -26
  69. package/dist/components/histogram-chart/element/ui9000-histogram-chart.js.map +1 -1
  70. package/dist/components/histogram-chart/index.js +2 -2
  71. package/dist/components/histogram-chart/lib/normalize.d.ts.map +1 -1
  72. package/dist/components/histogram-chart/lib/normalize.js +1 -3
  73. package/dist/components/histogram-chart/lib/normalize.js.map +1 -1
  74. package/dist/components/inspector/element/styles.d.ts +2 -0
  75. package/dist/components/inspector/element/styles.d.ts.map +1 -0
  76. package/dist/components/inspector/element/styles.js +98 -0
  77. package/dist/components/inspector/element/styles.js.map +1 -0
  78. package/dist/components/inspector/element/ui9000-inspector.d.ts +26 -0
  79. package/dist/components/inspector/element/ui9000-inspector.d.ts.map +1 -0
  80. package/dist/components/inspector/element/ui9000-inspector.js +142 -0
  81. package/dist/components/inspector/element/ui9000-inspector.js.map +1 -0
  82. package/dist/components/inspector/index.d.ts +4 -0
  83. package/dist/components/inspector/index.d.ts.map +1 -0
  84. package/dist/components/inspector/index.js +13 -0
  85. package/dist/components/inspector/index.js.map +1 -0
  86. package/dist/components/inspector/lib/index.d.ts +3 -0
  87. package/dist/components/inspector/lib/index.d.ts.map +1 -0
  88. package/dist/components/inspector/lib/normalize.d.ts +4 -0
  89. package/dist/components/inspector/lib/normalize.d.ts.map +1 -0
  90. package/dist/components/inspector/lib/normalize.js +95 -0
  91. package/dist/components/inspector/lib/normalize.js.map +1 -0
  92. package/dist/components/inspector/lib/types.d.ts +44 -0
  93. package/dist/components/inspector/lib/types.d.ts.map +1 -0
  94. package/dist/components/inspector/lib/types.js +5 -0
  95. package/dist/components/inspector/lib/types.js.map +1 -0
  96. package/dist/components/inspector/metadata.json.d.ts +43 -0
  97. package/dist/components/inspector/metadata.json.js +45 -0
  98. package/dist/components/inspector/metadata.json.js.map +1 -0
  99. package/dist/components/kpi-widget/element/ui9000-kpi-widget.js +2 -2
  100. package/dist/components/kpi-widget/index.js +3 -3
  101. package/dist/components/line-chart/element/ui9000-line-chart.d.ts +0 -1
  102. package/dist/components/line-chart/element/ui9000-line-chart.d.ts.map +1 -1
  103. package/dist/components/line-chart/element/ui9000-line-chart.js +6 -24
  104. package/dist/components/line-chart/element/ui9000-line-chart.js.map +1 -1
  105. package/dist/components/line-chart/index.js +2 -2
  106. package/dist/components/line-chart/render/draw.d.ts.map +1 -1
  107. package/dist/components/line-chart/render/draw.js +1 -1
  108. package/dist/components/line-chart/render/draw.js.map +1 -1
  109. package/dist/components/lollipop/element/ui9000-lollipop.d.ts +0 -1
  110. package/dist/components/lollipop/element/ui9000-lollipop.d.ts.map +1 -1
  111. package/dist/components/lollipop/element/ui9000-lollipop.js +7 -25
  112. package/dist/components/lollipop/element/ui9000-lollipop.js.map +1 -1
  113. package/dist/components/lollipop/index.js +2 -2
  114. package/dist/components/map-chart/element/ui9000-map-chart.d.ts +0 -1
  115. package/dist/components/map-chart/element/ui9000-map-chart.d.ts.map +1 -1
  116. package/dist/components/map-chart/element/ui9000-map-chart.js +16 -25
  117. package/dist/components/map-chart/element/ui9000-map-chart.js.map +1 -1
  118. package/dist/components/map-chart/index.js +4 -4
  119. package/dist/components/map-chart/lib/domain.js +1 -1
  120. package/dist/components/map-chart/lib/geo-index.d.ts.map +1 -1
  121. package/dist/components/map-chart/lib/geo-index.js +5 -0
  122. package/dist/components/map-chart/lib/geo-index.js.map +1 -1
  123. package/dist/components/matrix-chart/element/ui9000-matrix-chart.d.ts +1 -2
  124. package/dist/components/matrix-chart/element/ui9000-matrix-chart.d.ts.map +1 -1
  125. package/dist/components/matrix-chart/element/ui9000-matrix-chart.js +16 -26
  126. package/dist/components/matrix-chart/element/ui9000-matrix-chart.js.map +1 -1
  127. package/dist/components/matrix-chart/index.js +2 -2
  128. package/dist/components/network-graph/element/ui9000-network-graph.d.ts.map +1 -1
  129. package/dist/components/network-graph/element/ui9000-network-graph.js +5 -4
  130. package/dist/components/network-graph/element/ui9000-network-graph.js.map +1 -1
  131. package/dist/components/network-graph/index.js +3 -3
  132. package/dist/components/parallel-coordinates-chart/element/ui9000-parallel-coordinates-chart.d.ts +0 -1
  133. package/dist/components/parallel-coordinates-chart/element/ui9000-parallel-coordinates-chart.d.ts.map +1 -1
  134. package/dist/components/parallel-coordinates-chart/element/ui9000-parallel-coordinates-chart.js +7 -30
  135. package/dist/components/parallel-coordinates-chart/element/ui9000-parallel-coordinates-chart.js.map +1 -1
  136. package/dist/components/parallel-coordinates-chart/index.js +3 -3
  137. package/dist/components/partial-dependence-chart/element/ui9000-partial-dependence-chart.d.ts +0 -1
  138. package/dist/components/partial-dependence-chart/element/ui9000-partial-dependence-chart.d.ts.map +1 -1
  139. package/dist/components/partial-dependence-chart/element/ui9000-partial-dependence-chart.js +7 -23
  140. package/dist/components/partial-dependence-chart/element/ui9000-partial-dependence-chart.js.map +1 -1
  141. package/dist/components/partial-dependence-chart/index.js +2 -2
  142. package/dist/components/pie-chart/element/ui9000-pie-chart.d.ts +0 -1
  143. package/dist/components/pie-chart/element/ui9000-pie-chart.d.ts.map +1 -1
  144. package/dist/components/pie-chart/element/ui9000-pie-chart.js +11 -23
  145. package/dist/components/pie-chart/element/ui9000-pie-chart.js.map +1 -1
  146. package/dist/components/pie-chart/index.js +2 -2
  147. package/dist/components/pie-chart/lib/normalize.js +1 -1
  148. package/dist/components/polar-area-chart/element/ui9000-polar-area-chart.d.ts +0 -1
  149. package/dist/components/polar-area-chart/element/ui9000-polar-area-chart.d.ts.map +1 -1
  150. package/dist/components/polar-area-chart/element/ui9000-polar-area-chart.js +14 -23
  151. package/dist/components/polar-area-chart/element/ui9000-polar-area-chart.js.map +1 -1
  152. package/dist/components/polar-area-chart/index.js +1 -1
  153. package/dist/components/punchcard-chart/element/ui9000-punchcard-chart.d.ts +0 -1
  154. package/dist/components/punchcard-chart/element/ui9000-punchcard-chart.d.ts.map +1 -1
  155. package/dist/components/punchcard-chart/element/ui9000-punchcard-chart.js +6 -24
  156. package/dist/components/punchcard-chart/element/ui9000-punchcard-chart.js.map +1 -1
  157. package/dist/components/punchcard-chart/index.js +2 -2
  158. package/dist/components/punchcard-chart/render/draw.js +1 -1
  159. package/dist/components/radar-chart/element/ui9000-radar-chart.d.ts +0 -1
  160. package/dist/components/radar-chart/element/ui9000-radar-chart.d.ts.map +1 -1
  161. package/dist/components/radar-chart/element/ui9000-radar-chart.js +8 -25
  162. package/dist/components/radar-chart/element/ui9000-radar-chart.js.map +1 -1
  163. package/dist/components/radar-chart/index.js +2 -2
  164. package/dist/components/radial-bar-chart/element/ui9000-radial-bar-chart.d.ts +0 -1
  165. package/dist/components/radial-bar-chart/element/ui9000-radial-bar-chart.d.ts.map +1 -1
  166. package/dist/components/radial-bar-chart/element/ui9000-radial-bar-chart.js +14 -25
  167. package/dist/components/radial-bar-chart/element/ui9000-radial-bar-chart.js.map +1 -1
  168. package/dist/components/radial-bar-chart/index.js +3 -3
  169. package/dist/components/sankey-chart/element/ui9000-sankey-chart.d.ts +0 -3
  170. package/dist/components/sankey-chart/element/ui9000-sankey-chart.d.ts.map +1 -1
  171. package/dist/components/sankey-chart/element/ui9000-sankey-chart.js +19 -37
  172. package/dist/components/sankey-chart/element/ui9000-sankey-chart.js.map +1 -1
  173. package/dist/components/sankey-chart/index.js +3 -3
  174. package/dist/components/scatter-plot-chart/element/ui9000-scatter-plot.d.ts +0 -1
  175. package/dist/components/scatter-plot-chart/element/ui9000-scatter-plot.d.ts.map +1 -1
  176. package/dist/components/scatter-plot-chart/element/ui9000-scatter-plot.js +8 -23
  177. package/dist/components/scatter-plot-chart/element/ui9000-scatter-plot.js.map +1 -1
  178. package/dist/components/scatter-plot-chart/index.js +1 -1
  179. package/dist/components/scatter-sparkline-chart/element/ui9000-scatter-sparkline-chart.d.ts +0 -1
  180. package/dist/components/scatter-sparkline-chart/element/ui9000-scatter-sparkline-chart.d.ts.map +1 -1
  181. package/dist/components/scatter-sparkline-chart/element/ui9000-scatter-sparkline-chart.js +12 -50
  182. package/dist/components/scatter-sparkline-chart/element/ui9000-scatter-sparkline-chart.js.map +1 -1
  183. package/dist/components/scatter-sparkline-chart/index.js +3 -3
  184. package/dist/components/scatter-sparkline-chart/render/draw.js +1 -1
  185. package/dist/components/spark-area-chart/element/ui9000-spark-area-chart.d.ts +0 -1
  186. package/dist/components/spark-area-chart/element/ui9000-spark-area-chart.d.ts.map +1 -1
  187. package/dist/components/spark-area-chart/element/ui9000-spark-area-chart.js +10 -30
  188. package/dist/components/spark-area-chart/element/ui9000-spark-area-chart.js.map +1 -1
  189. package/dist/components/spark-area-chart/index.js +2 -2
  190. package/dist/components/spark-line-chart/element/ui9000-spark-line-chart.d.ts +0 -1
  191. package/dist/components/spark-line-chart/element/ui9000-spark-line-chart.d.ts.map +1 -1
  192. package/dist/components/spark-line-chart/element/ui9000-spark-line-chart.js +10 -30
  193. package/dist/components/spark-line-chart/element/ui9000-spark-line-chart.js.map +1 -1
  194. package/dist/components/spark-line-chart/index.js +2 -2
  195. package/dist/components/status-gauge-widget/element/styles.d.ts +7 -0
  196. package/dist/components/status-gauge-widget/element/styles.d.ts.map +1 -0
  197. package/dist/components/status-gauge-widget/element/styles.js +266 -0
  198. package/dist/components/status-gauge-widget/element/styles.js.map +1 -0
  199. package/dist/components/status-gauge-widget/element/ui9000-status-gauge-widget.d.ts +29 -0
  200. package/dist/components/status-gauge-widget/element/ui9000-status-gauge-widget.d.ts.map +1 -0
  201. package/dist/components/status-gauge-widget/element/ui9000-status-gauge-widget.js +154 -0
  202. package/dist/components/status-gauge-widget/element/ui9000-status-gauge-widget.js.map +1 -0
  203. package/dist/components/status-gauge-widget/index.d.ts +4 -0
  204. package/dist/components/status-gauge-widget/index.d.ts.map +1 -0
  205. package/dist/components/status-gauge-widget/index.js +12 -0
  206. package/dist/components/status-gauge-widget/index.js.map +1 -0
  207. package/dist/components/status-gauge-widget/lib/index.d.ts +3 -0
  208. package/dist/components/status-gauge-widget/lib/index.d.ts.map +1 -0
  209. package/dist/components/status-gauge-widget/lib/normalize.d.ts +8 -0
  210. package/dist/components/status-gauge-widget/lib/normalize.d.ts.map +1 -0
  211. package/dist/components/status-gauge-widget/lib/normalize.js +111 -0
  212. package/dist/components/status-gauge-widget/lib/normalize.js.map +1 -0
  213. package/dist/components/status-gauge-widget/lib/types.d.ts +56 -0
  214. package/dist/components/status-gauge-widget/lib/types.d.ts.map +1 -0
  215. package/dist/components/status-gauge-widget/metadata.json.d.ts +20 -0
  216. package/dist/components/status-gauge-widget/metadata.json.js +39 -0
  217. package/dist/components/status-gauge-widget/metadata.json.js.map +1 -0
  218. package/dist/components/status-gauge-widget/render/draw.d.ts +4 -0
  219. package/dist/components/status-gauge-widget/render/draw.d.ts.map +1 -0
  220. package/dist/components/status-gauge-widget/render/draw.js +60 -0
  221. package/dist/components/status-gauge-widget/render/draw.js.map +1 -0
  222. package/dist/components/step-line-chart/element/ui9000-step-line-chart.d.ts +0 -1
  223. package/dist/components/step-line-chart/element/ui9000-step-line-chart.d.ts.map +1 -1
  224. package/dist/components/step-line-chart/element/ui9000-step-line-chart.js +10 -30
  225. package/dist/components/step-line-chart/element/ui9000-step-line-chart.js.map +1 -1
  226. package/dist/components/step-line-chart/index.js +2 -2
  227. package/dist/components/treemap-chart/element/ui9000-treemap-chart.d.ts +0 -1
  228. package/dist/components/treemap-chart/element/ui9000-treemap-chart.d.ts.map +1 -1
  229. package/dist/components/treemap-chart/element/ui9000-treemap-chart.js +5 -24
  230. package/dist/components/treemap-chart/element/ui9000-treemap-chart.js.map +1 -1
  231. package/dist/components/treemap-chart/index.js +4 -4
  232. package/dist/components/violin-chart/element/ui9000-violin-chart.js +1 -1
  233. package/dist/components/violin-chart/index.js +2 -2
  234. package/dist/components/violin-chart/render/draw.js +1 -1
  235. package/dist/components/waterfall-chart/element/ui9000-waterfall-chart.d.ts +0 -1
  236. package/dist/components/waterfall-chart/element/ui9000-waterfall-chart.d.ts.map +1 -1
  237. package/dist/components/waterfall-chart/element/ui9000-waterfall-chart.js +11 -29
  238. package/dist/components/waterfall-chart/element/ui9000-waterfall-chart.js.map +1 -1
  239. package/dist/components/waterfall-chart/index.js +2 -2
  240. package/dist/element/chart-shell-render.d.ts +3 -0
  241. package/dist/element/chart-shell-render.d.ts.map +1 -1
  242. package/dist/element/chart-shell-render.js +80 -19
  243. package/dist/element/chart-shell-render.js.map +1 -1
  244. package/dist/element/chart-shell-styles.d.ts +5 -1
  245. package/dist/element/chart-shell-styles.d.ts.map +1 -1
  246. package/dist/element/chart-shell-styles.js +126 -7
  247. package/dist/element/chart-shell-styles.js.map +1 -1
  248. package/dist/element/chart-tooltip-portal.d.ts +29 -0
  249. package/dist/element/chart-tooltip-portal.d.ts.map +1 -0
  250. package/dist/element/chart-tooltip-portal.js +278 -0
  251. package/dist/element/chart-tooltip-portal.js.map +1 -0
  252. package/dist/element/header-icons.d.ts +18 -0
  253. package/dist/element/header-icons.d.ts.map +1 -0
  254. package/dist/element/header-icons.js +44 -0
  255. package/dist/element/header-icons.js.map +1 -0
  256. package/dist/element/ui9000-chart-base.d.ts +19 -0
  257. package/dist/element/ui9000-chart-base.d.ts.map +1 -1
  258. package/dist/element/ui9000-chart-base.js +34 -0
  259. package/dist/element/ui9000-chart-base.js.map +1 -1
  260. package/dist/element/widget-header.d.ts +35 -0
  261. package/dist/element/widget-header.d.ts.map +1 -0
  262. package/dist/element/widget-header.js +59 -0
  263. package/dist/element/widget-header.js.map +1 -0
  264. package/dist/index.d.ts +4 -1
  265. package/dist/index.d.ts.map +1 -1
  266. package/dist/index.js +74 -64
  267. package/dist/index.js.map +1 -1
  268. package/dist/lazy/index.d.ts +2 -1
  269. package/dist/lazy/index.d.ts.map +1 -1
  270. package/dist/lazy/index.js +8 -0
  271. package/dist/lazy/index.js.map +1 -1
  272. package/dist/lazy/status-gauge-widget.d.ts +4 -0
  273. package/dist/lazy/status-gauge-widget.d.ts.map +1 -0
  274. package/dist/lazy/status-gauge-widget.js +5 -0
  275. package/dist/lazy/status-gauge-widget.js.map +1 -0
  276. package/dist/utils/chart-shell.d.ts +1 -1
  277. package/dist/utils/chart-shell.d.ts.map +1 -1
  278. package/dist/utils/chart-shell.js +4 -6
  279. package/dist/utils/chart-shell.js.map +1 -1
  280. package/dist/utils/lit-draw.d.ts +1 -0
  281. package/dist/utils/lit-draw.d.ts.map +1 -1
  282. package/dist/utils/lit-draw.js +4 -1
  283. package/dist/utils/lit-draw.js.map +1 -1
  284. package/package.json +19 -3
@@ -1 +1 @@
1
- {"version":3,"file":"ui9000-box-plot-chart.js","sources":["../../../../src/components/box-plot-chart/element/ui9000-box-plot-chart.ts"],"sourcesContent":["import { html, nothing, type PropertyValues } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\n\nimport { chartShellStyles, Ui9000ChartElement } from '../../../element/ui9000-chart-base.js';\nimport { renderChartLegend } from '../../../element/chart-legend-render.js';\nimport { readThemeFromElement } from '../../../context/widget-context.js';\nimport { getBoxPlotDimensions, parseJsonAttr } from '../../../utils/chart-helpers.js';\nimport { swatchLegendEntries } from '../../../utils/chart-legend.js';\nimport { chartPropsChanged } from '../../../utils/lit-draw.js';\nimport { seriesColor as fdSeriesColor } from '../../../utils/fusedash-visual.js';\nimport {\n boxPlotMinCategorySpan,\n normalizeBoxPlotData,\n type BoxPlotBox,\n type BoxPlotBoxesPayload,\n type BoxPlotModel,\n type BoxPlotOrientation,\n type FuseDashBoxPlotPayload,\n} from '../lib/index.js';\nimport { renderBoxPlotChart } from '../render/draw.js';\nimport { boxPlotStyles } from './styles.js';\n\n@customElement('ui9000-box-plot-chart')\nexport class Ui9000BoxPlotChart extends Ui9000ChartElement {\n static override styles = [boxPlotStyles, chartShellStyles];\n\n @property({ type: String })\n orientation: BoxPlotOrientation = 'vertical';\n\n @property({ type: Boolean, attribute: 'show-grid' })\n showGrid = true;\n\n @property({ type: Boolean, attribute: 'show-legend' })\n showLegend = true;\n\n @property({ type: Boolean, attribute: 'show-tooltip' })\n showTooltip = true;\n\n @property({ type: String, attribute: 'x-label' })\n xLabel = '';\n\n @property({ type: String, attribute: 'y-label' })\n yLabel = '';\n\n @state()\n private _tooltip: {\n x: number;\n y: number;\n label: string;\n group?: string;\n q1: number;\n median: number;\n q3: number;\n min: number;\n max: number;\n } | null = null;\n\n @state()\n private _empty = false;\n\n @state()\n private _fixedXAxis = false;\n\n private _resizeObserver?: ResizeObserver;\n private _raf = 0;\n\n override connectedCallback(): void {\n super.connectedCallback();\n this._resizeObserver = new ResizeObserver(() => this.scheduleDraw());\n this._resizeObserver.observe(this);\n }\n\n override disconnectedCallback(): void {\n this._resizeObserver?.disconnect();\n cancelAnimationFrame(this._raf);\n super.disconnectedCallback();\n }\n\n override updated(changed: PropertyValues): void {\n if (chartPropsChanged(changed)) this.scheduleDraw();\n if (changed.has('_fixedXAxis')) {\n const body = this.shadowRoot?.querySelector('.chart-body');\n const scroll = this.shadowRoot?.querySelector('.chart-scroll');\n if (body instanceof HTMLElement) this._resizeObserver?.observe(body);\n if (scroll instanceof HTMLElement) this._resizeObserver?.observe(scroll);\n }\n }\n\n override firstUpdated(): void {\n const body = this.shadowRoot?.querySelector('.widget-body');\n const chartBody = this.shadowRoot?.querySelector('.chart-body');\n const scroll = this.shadowRoot?.querySelector('.chart-scroll');\n if (body instanceof HTMLElement) this._resizeObserver?.observe(body);\n if (chartBody instanceof HTMLElement) this._resizeObserver?.observe(chartBody);\n if (scroll instanceof HTMLElement) this._resizeObserver?.observe(scroll);\n }\n\n private scheduleDraw(): void {\n cancelAnimationFrame(this._raf);\n this._raf = requestAnimationFrame(() => this.draw());\n }\n\n private parseData(): BoxPlotModel {\n const raw = parseJsonAttr<\n BoxPlotBox[] | BoxPlotBoxesPayload | FuseDashBoxPlotPayload\n >(this.dataJson, []);\n const model = normalizeBoxPlotData(raw);\n if (this.orientation === 'horizontal' || this.orientation === 'vertical') {\n return { ...model, orientation: this.orientation };\n }\n return model;\n }\n\n private draw(): void {\n const chartBody = this.shadowRoot?.querySelector('.chart-body') as\n | HTMLElement\n | null;\n const scroll = this.shadowRoot?.querySelector('.chart-scroll') as\n | HTMLElement\n | null;\n const root = this.shadowRoot?.querySelector('.chart-root') as\n | HTMLElement\n | null;\n const xAxisRoot = this.shadowRoot?.querySelector('.chart-x-axis') as\n | HTMLElement\n | null;\n if (!chartBody || !scroll || !root) return;\n\n const model = this.parseData();\n this._empty = model.boxes.length === 0;\n if (this._empty) {\n root.replaceChildren();\n xAxisRoot?.replaceChildren();\n this._fixedXAxis = false;\n return;\n }\n\n const labels =\n model.categoryLabels?.length\n ? model.categoryLabels\n : [...new Set(model.boxes.map((b) => b.label))];\n const groupCount = model.groups.length || 1;\n const minPlotSpan = boxPlotMinCategorySpan(labels.length, groupCount);\n const { width, margin } = getBoxPlotDimensions(chartBody);\n const scrollViewportH = scroll.clientHeight || 300;\n const availPlotH = scrollViewportH - margin.top;\n const needsFixedXAxis =\n model.orientation === 'horizontal' && minPlotSpan > availPlotH + 1;\n this._fixedXAxis = needsFixedXAxis;\n\n const theme = readThemeFromElement(this);\n\n renderBoxPlotChart(root, {\n model,\n width,\n height: scrollViewportH,\n margin,\n theme,\n orientation: this.orientation,\n showGrid: this.showGrid,\n xAxisContainer: needsFixedXAxis ? xAxisRoot : null,\n xLabel: this.xLabel || undefined,\n yLabel: this.yLabel || undefined,\n ...this.axisLabelHandlers(),\n onBoxHover: this.showTooltip\n ? ({ box, event }) => {\n const rect = this.getBoundingClientRect();\n this._tooltip = {\n x: event.clientX - rect.left,\n y: event.clientY - rect.top,\n label: box.label,\n group: box.group,\n q1: box.q1,\n median: box.median,\n q3: box.q3,\n min: box.smallestNonOutlier,\n max: box.biggestNonOutlier,\n };\n }\n : undefined,\n onBoxLeave: this.showTooltip ? () => { this._tooltip = null; } : undefined,\n });\n\n if (xAxisRoot && !needsFixedXAxis) {\n xAxisRoot.replaceChildren();\n }\n }\n\n private renderLegend(model: BoxPlotModel) {\n if (!this.showLegend || model.groups.length <= 1) return nothing;\n const theme = readThemeFromElement(this);\n return renderChartLegend(\n swatchLegendEntries(model.groups, theme, (group, i) => {\n const sample = model.boxes.find((b) => (b.group ?? 'default') === group);\n return sample?.color ?? fdSeriesColor(i);\n }),\n );\n }\n\n override render() {\n const title = this.headerTitle();\n const model = this.parseData();\n return html`\n <div class=\"widget-shell\" part=\"shell\">\n ${this.renderShellHeader(title)}\n <div class=\"widget-body\">\n <div class=\"chart-body\" part=\"chart-body\">\n ${this.renderLegend(model)}\n <div class=\"chart-scroll\" part=\"scroll\">\n <div class=\"chart-root\" part=\"chart\" ?hidden=${this._empty}></div>\n </div>\n <div\n class=\"chart-x-axis\"\n part=\"x-axis\"\n ?hidden=${!this._fixedXAxis}\n ></div>\n </div>\n ${this._empty\n ? html`<div class=\"empty\" part=\"empty\">No data</div>`\n : nothing}\n ${this._tooltip\n ? html`<div\n class=\"tooltip\"\n part=\"tooltip\"\n style=\"left:${this._tooltip.x}px;top:${this._tooltip.y}px\"\n >\n <div class=\"name\">\n ${this._tooltip.group\n ? `${this._tooltip.group} · ${this._tooltip.label}`\n : this._tooltip.label}\n </div>\n <div>min: ${this._tooltip.min}</div>\n <div>25%: ${this._tooltip.q1}</div>\n <div>median: ${this._tooltip.median}</div>\n <div>75%: ${this._tooltip.q3}</div>\n <div>max: ${this._tooltip.max}</div>\n </div>`\n : nothing}\n ${this.renderShellLabelTooltip()}\n </div>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ui9000-box-plot-chart': Ui9000BoxPlotChart;\n }\n}\n\nexport function registerBoxPlotChart(): void {\n if (!customElements.get('ui9000-box-plot-chart')) {\n customElements.define('ui9000-box-plot-chart', Ui9000BoxPlotChart);\n }\n}\n\nregisterBoxPlotChart();\n"],"names":["fdSeriesColor"],"mappings":"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"}
1
+ {"version":3,"file":"ui9000-box-plot-chart.js","sources":["../../../../src/components/box-plot-chart/element/ui9000-box-plot-chart.ts"],"sourcesContent":["import { html, nothing, type PropertyValues } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\n\nimport { chartShellStyles, Ui9000ChartElement } from '../../../element/ui9000-chart-base.js';\nimport { renderChartLegend } from '../../../element/chart-legend-render.js';\nimport { readThemeFromElement } from '../../../context/widget-context.js';\nimport { getBoxPlotDimensions, parseJsonAttr } from '../../../utils/chart-helpers.js';\nimport { swatchLegendEntries } from '../../../utils/chart-legend.js';\nimport { chartPropsChanged } from '../../../utils/lit-draw.js';\nimport { seriesColor as fdSeriesColor } from '../../../utils/fusedash-visual.js';\nimport {\n boxPlotMinCategorySpan,\n normalizeBoxPlotData,\n type BoxPlotBox,\n type BoxPlotBoxesPayload,\n type BoxPlotModel,\n type BoxPlotOrientation,\n type FuseDashBoxPlotPayload,\n} from '../lib/index.js';\nimport { renderBoxPlotChart } from '../render/draw.js';\nimport { boxPlotStyles } from './styles.js';\n\n@customElement('ui9000-box-plot-chart')\nexport class Ui9000BoxPlotChart extends Ui9000ChartElement {\n static override styles = [boxPlotStyles, chartShellStyles];\n\n @property({ type: String })\n orientation: BoxPlotOrientation = 'vertical';\n\n @property({ type: Boolean, attribute: 'show-grid' })\n showGrid = true;\n\n @property({ type: Boolean, attribute: 'show-legend' })\n showLegend = true;\n\n @property({ type: Boolean, attribute: 'show-tooltip' })\n showTooltip = true;\n\n @property({ type: String, attribute: 'x-label' })\n xLabel = '';\n\n @property({ type: String, attribute: 'y-label' })\n yLabel = '';\n\n @state()\n private _empty = false;\n\n @state()\n private _fixedXAxis = false;\n\n private _resizeObserver?: ResizeObserver;\n private _raf = 0;\n\n override connectedCallback(): void {\n super.connectedCallback();\n this._resizeObserver = new ResizeObserver(() => this.scheduleDraw());\n this._resizeObserver.observe(this);\n }\n\n override disconnectedCallback(): void {\n this._resizeObserver?.disconnect();\n cancelAnimationFrame(this._raf);\n super.disconnectedCallback();\n }\n\n override updated(changed: PropertyValues): void {\n if (chartPropsChanged(changed)) this.scheduleDraw();\n if (changed.has('_fixedXAxis')) {\n const body = this.shadowRoot?.querySelector('.chart-body');\n const scroll = this.shadowRoot?.querySelector('.chart-scroll');\n if (body instanceof HTMLElement) this._resizeObserver?.observe(body);\n if (scroll instanceof HTMLElement) this._resizeObserver?.observe(scroll);\n }\n }\n\n override firstUpdated(): void {\n const body = this.shadowRoot?.querySelector('.widget-body');\n const chartBody = this.shadowRoot?.querySelector('.chart-body');\n const scroll = this.shadowRoot?.querySelector('.chart-scroll');\n if (body instanceof HTMLElement) this._resizeObserver?.observe(body);\n if (chartBody instanceof HTMLElement) this._resizeObserver?.observe(chartBody);\n if (scroll instanceof HTMLElement) this._resizeObserver?.observe(scroll);\n }\n\n private scheduleDraw(): void {\n cancelAnimationFrame(this._raf);\n this._raf = requestAnimationFrame(() => this.draw());\n }\n\n private parseData(): BoxPlotModel {\n const raw = parseJsonAttr<\n BoxPlotBox[] | BoxPlotBoxesPayload | FuseDashBoxPlotPayload\n >(this.dataJson, []);\n const model = normalizeBoxPlotData(raw);\n if (this.orientation === 'horizontal' || this.orientation === 'vertical') {\n return { ...model, orientation: this.orientation };\n }\n return model;\n }\n\n private draw(): void {\n const chartBody = this.shadowRoot?.querySelector('.chart-body') as\n | HTMLElement\n | null;\n const scroll = this.shadowRoot?.querySelector('.chart-scroll') as\n | HTMLElement\n | null;\n const root = this.shadowRoot?.querySelector('.chart-root') as\n | HTMLElement\n | null;\n const xAxisRoot = this.shadowRoot?.querySelector('.chart-x-axis') as\n | HTMLElement\n | null;\n if (!chartBody || !scroll || !root) return;\n\n const model = this.parseData();\n this._empty = model.boxes.length === 0;\n if (this._empty) {\n root.replaceChildren();\n xAxisRoot?.replaceChildren();\n this._fixedXAxis = false;\n return;\n }\n\n const labels =\n model.categoryLabels?.length\n ? model.categoryLabels\n : [...new Set(model.boxes.map((b) => b.label))];\n const groupCount = model.groups.length || 1;\n const minPlotSpan = boxPlotMinCategorySpan(labels.length, groupCount);\n const { width, margin } = getBoxPlotDimensions(chartBody);\n const scrollViewportH = scroll.clientHeight || 300;\n const availPlotH = scrollViewportH - margin.top;\n const needsFixedXAxis =\n model.orientation === 'horizontal' && minPlotSpan > availPlotH + 1;\n this._fixedXAxis = needsFixedXAxis;\n\n const theme = readThemeFromElement(this);\n\n renderBoxPlotChart(root, {\n model,\n width,\n height: scrollViewportH,\n margin,\n theme,\n orientation: this.orientation,\n showGrid: this.showGrid,\n xAxisContainer: needsFixedXAxis ? xAxisRoot : null,\n xLabel: this.xLabel || undefined,\n yLabel: this.yLabel || undefined,\n ...this.axisLabelHandlers(),\n onBoxHover: this.showTooltip\n ? ({ box, event }) => {\n this.openTooltip(event, {\n title: box.group ? `${box.group} · ${box.label}` : box.label,\n rows: [\n { label: 'min', value: String(box.smallestNonOutlier) },\n { label: '25%', value: String(box.q1) },\n { label: 'median', value: String(box.median) },\n { label: '75%', value: String(box.q3) },\n { label: 'max', value: String(box.biggestNonOutlier) },\n ],\n });\n }\n : undefined,\n onBoxLeave: this.showTooltip ? () => this.closeTooltip() : undefined,\n });\n\n if (xAxisRoot && !needsFixedXAxis) {\n xAxisRoot.replaceChildren();\n }\n }\n\n private renderLegend(model: BoxPlotModel) {\n if (!this.showLegend || model.groups.length <= 1) return nothing;\n const theme = readThemeFromElement(this);\n return renderChartLegend(\n swatchLegendEntries(model.groups, theme, (group, i) => {\n const sample = model.boxes.find((b) => (b.group ?? 'default') === group);\n return sample?.color ?? fdSeriesColor(i);\n }),\n );\n }\n\n override render() {\n const title = this.headerTitle();\n const model = this.parseData();\n return html`\n <div class=\"widget-shell\" part=\"shell\">\n ${this.renderShellHeader(title)}\n <div class=\"widget-body\">\n <div class=\"chart-body\" part=\"chart-body\">\n ${this.renderLegend(model)}\n <div class=\"chart-scroll\" part=\"scroll\">\n <div class=\"chart-root\" part=\"chart\" ?hidden=${this._empty}></div>\n </div>\n <div\n class=\"chart-x-axis\"\n part=\"x-axis\"\n ?hidden=${!this._fixedXAxis}\n ></div>\n </div>\n ${this._empty\n ? html`<div class=\"empty\" part=\"empty\">No data</div>`\n : nothing}\n ${this.renderShellLabelTooltip()}\n </div>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ui9000-box-plot-chart': Ui9000BoxPlotChart;\n }\n}\n\nexport function registerBoxPlotChart(): void {\n if (!customElements.get('ui9000-box-plot-chart')) {\n customElements.define('ui9000-box-plot-chart', Ui9000BoxPlotChart);\n }\n}\n\nregisterBoxPlotChart();\n"],"names":["fdSeriesColor"],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  import { registerBoxPlotChart } from "./element/ui9000-box-plot-chart.js";
2
2
  import { Ui9000BoxPlotChart } from "./element/ui9000-box-plot-chart.js";
3
3
  import { renderBoxPlotChart } from "./render/draw.js";
4
- import { default as default2 } from "./metadata.json.js";
4
+ import { normalizeBoxPlotData } from "./lib/normalize.js";
5
5
  import { boxPlotLinearDomain, collectLabels, collectValueExtent } from "./lib/domain.js";
6
6
  import { formatCompact } from "./lib/format.js";
7
- import { normalizeBoxPlotData } from "./lib/normalize.js";
7
+ import { default as default2 } from "./metadata.json.js";
8
8
  export {
9
9
  Ui9000BoxPlotChart,
10
10
  default2 as boxPlotChartMetadata,
@@ -3,8 +3,8 @@ import { scaleBand, scaleLinear } from "d3-scale";
3
3
  import { select } from "d3-selection";
4
4
  import { resolvePlotLeftMargin, decorateAxisLabels, applyLeftGutterYAxisLabels } from "../../../utils/axis-labels.js";
5
5
  import { FD, formatCompactNumber, calculateNumTicks, seriesColor } from "../../../utils/fusedash-visual.js";
6
- import { boxPlotMinCategorySpan, BIN_SIZE, boxPlotGroupSpan, BIN_BORDER_RADIUS } from "../lib/layout.js";
7
6
  import { collectLabels, boxPlotLinearDomain } from "../lib/domain.js";
7
+ import { boxPlotMinCategorySpan, BIN_SIZE, boxPlotGroupSpan, BIN_BORDER_RADIUS } from "../lib/layout.js";
8
8
  const OUTLIER_RADIUS = 3;
9
9
  const MEDIAN_STROKE = FD.axisLabelFill;
10
10
  const WHISKER_STROKE = FD.axisLabelFill;
@@ -7,7 +7,6 @@ export declare class Ui9000BubbleChart extends Ui9000ChartElement {
7
7
  showGrid: boolean;
8
8
  showLegend: boolean;
9
9
  showTooltip: boolean;
10
- private _tooltip;
11
10
  private _empty;
12
11
  private _resizeObserver?;
13
12
  private _raf;
@@ -1 +1 @@
1
- {"version":3,"file":"ui9000-bubble-chart.d.ts","sourceRoot":"","sources":["../../../../src/components/bubble-chart/element/ui9000-bubble-chart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAGzD,OAAO,EAAoB,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAG7F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAa3D,qBACa,iBAAkB,SAAQ,kBAAkB;IACvD,OAAgB,MAAM,4BAAyC;IAG/D,KAAK,EAAE,WAAW,CAAa;IAG/B,QAAQ,UAAQ;IAGhB,UAAU,UAAQ;IAGlB,WAAW,UAAQ;IAGnB,OAAO,CAAC,QAAQ,CAA0D;IAG1E,OAAO,CAAC,MAAM,CAAS;IAEvB,OAAO,CAAC,eAAe,CAAC,CAAiB;IACzC,OAAO,CAAC,IAAI,CAAK;IAER,iBAAiB,IAAI,IAAI;IAMzB,oBAAoB,IAAI,IAAI;IAM5B,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAI/C,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,IAAI;IA+CH,MAAM;CA4BhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,qBAAqB,EAAE,iBAAiB,CAAC;KAC1C;CACF;AAED,wBAAgB,mBAAmB,IAAI,IAAI,CAI1C"}
1
+ {"version":3,"file":"ui9000-bubble-chart.d.ts","sourceRoot":"","sources":["../../../../src/components/bubble-chart/element/ui9000-bubble-chart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAGzD,OAAO,EAAoB,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAG7F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAa3D,qBACa,iBAAkB,SAAQ,kBAAkB;IACvD,OAAgB,MAAM,4BAAyC;IAG/D,KAAK,EAAE,WAAW,CAAa;IAG/B,QAAQ,UAAQ;IAGhB,UAAU,UAAQ;IAGlB,WAAW,UAAQ;IAGnB,OAAO,CAAC,MAAM,CAAS;IAEvB,OAAO,CAAC,eAAe,CAAC,CAAiB;IACzC,OAAO,CAAC,IAAI,CAAK;IAER,iBAAiB,IAAI,IAAI;IAMzB,oBAAoB,IAAI,IAAI;IAM5B,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAI/C,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,IAAI;IA0CH,MAAM;CAmBhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,qBAAqB,EAAE,iBAAiB,CAAC;KAC1C;CACF;AAED,wBAAgB,mBAAmB,IAAI,IAAI,CAI1C"}
@@ -7,9 +7,9 @@ import { parseJsonAttr, getBubbleChartDimensions } from "../../../utils/chart-he
7
7
  import { swatchLegendEntries } from "../../../utils/chart-legend.js";
8
8
  import { formatCompactNumber } from "../../../utils/fusedash-visual.js";
9
9
  import { chartPropsChanged } from "../../../utils/lit-draw.js";
10
+ import { normalizeBubbleData } from "../lib/normalize.js";
10
11
  import { renderBubbleChart } from "../render/draw.js";
11
12
  import { bubbleChartStyles } from "./styles.js";
12
- import { normalizeBubbleData } from "../lib/normalize.js";
13
13
  import { chartShellStyles } from "../../../element/chart-shell-styles.js";
14
14
  var __defProp = Object.defineProperty;
15
15
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -28,7 +28,6 @@ let Ui9000BubbleChart = class extends Ui9000ChartElement {
28
28
  this.showGrid = true;
29
29
  this.showLegend = true;
30
30
  this.showTooltip = true;
31
- this._tooltip = null;
32
31
  this._empty = false;
33
32
  this._raf = 0;
34
33
  }
@@ -89,26 +88,19 @@ let Ui9000BubbleChart = class extends Ui9000ChartElement {
89
88
  showTooltip: this.showTooltip,
90
89
  onHover: this.showTooltip ? ({ point, event }) => {
91
90
  var _a2, _b, _c, _d, _e, _f;
92
- const rect = this.getBoundingClientRect();
93
91
  const xLabel = ((_b = (_a2 = model.axisDetails) == null ? void 0 : _a2[model.xField]) == null ? void 0 : _b.label) ?? model.xField;
94
92
  const yLabel = ((_d = (_c = model.axisDetails) == null ? void 0 : _c[model.yField]) == null ? void 0 : _d.label) ?? model.yField;
95
- const lines = [
96
- `${xLabel}: ${formatCompactNumber(point.x)}`,
97
- `${yLabel}: ${formatCompactNumber(point.y)}`
93
+ const rows = [
94
+ { label: xLabel, value: formatCompactNumber(point.x) },
95
+ { label: yLabel, value: formatCompactNumber(point.y) }
98
96
  ];
99
97
  if (model.groupField) {
100
98
  const groupLabel = ((_f = (_e = model.axisDetails) == null ? void 0 : _e[model.groupField]) == null ? void 0 : _f.label) ?? model.groupField;
101
- lines.push(`${groupLabel}: ${point.groupKey}`);
99
+ rows.push({ label: groupLabel, value: String(point.groupKey) });
102
100
  }
103
- this._tooltip = {
104
- x: event.clientX - rect.left,
105
- y: event.clientY - rect.top,
106
- lines
107
- };
101
+ this.openTooltip(event, { rows });
108
102
  } : void 0,
109
- onLeave: this.showTooltip ? () => {
110
- this._tooltip = null;
111
- } : void 0
103
+ onLeave: this.showTooltip ? () => this.closeTooltip() : void 0
112
104
  });
113
105
  }
114
106
  render() {
@@ -123,13 +115,6 @@ let Ui9000BubbleChart = class extends Ui9000ChartElement {
123
115
  ${this._empty ? html`<div class="empty" part="empty">
124
116
  Bubble chart requires two numeric fields. Pick numeric X and Y axes.
125
117
  </div>` : nothing}
126
- ${this._tooltip ? html`<div
127
- class="tooltip"
128
- part="tooltip"
129
- style="left:${this._tooltip.x}px;top:${this._tooltip.y}px"
130
- >
131
- ${this._tooltip.lines.map((line) => html`<div>${line}</div>`)}
132
- </div>` : nothing}
133
118
  ${this.renderShellLabelTooltip()}
134
119
  </div>
135
120
  </div>
@@ -149,9 +134,6 @@ __decorateClass([
149
134
  __decorateClass([
150
135
  property({ type: Boolean, attribute: "show-tooltip" })
151
136
  ], Ui9000BubbleChart.prototype, "showTooltip", 2);
152
- __decorateClass([
153
- state()
154
- ], Ui9000BubbleChart.prototype, "_tooltip", 2);
155
137
  __decorateClass([
156
138
  state()
157
139
  ], Ui9000BubbleChart.prototype, "_empty", 2);
@@ -1 +1 @@
1
- {"version":3,"file":"ui9000-bubble-chart.js","sources":["../../../../src/components/bubble-chart/element/ui9000-bubble-chart.ts"],"sourcesContent":["import { html, nothing, type PropertyValues } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\n\nimport { chartShellStyles, Ui9000ChartElement } from '../../../element/ui9000-chart-base.js';\nimport { renderChartLegend } from '../../../element/chart-legend-render.js';\nimport { readThemeFromElement } from '../../../context/widget-context.js';\nimport type { WidgetScale } from '../../../types/index.js';\nimport { getBubbleChartDimensions, parseJsonAttr } from '../../../utils/chart-helpers.js';\nimport { swatchLegendEntries } from '../../../utils/chart-legend.js';\nimport { formatCompactNumber } from '../../../utils/fusedash-visual.js';\nimport { chartPropsChanged } from '../../../utils/lit-draw.js';\nimport {\n normalizeBubbleData,\n type BubbleChartData,\n type BubbleModel,\n} from '../lib/index.js';\nimport { renderBubbleChart } from '../render/draw.js';\nimport { bubbleChartStyles } from './styles.js';\n\n@customElement('ui9000-bubble-chart')\nexport class Ui9000BubbleChart extends Ui9000ChartElement {\n static override styles = [bubbleChartStyles, chartShellStyles];\n\n @property({ type: String, attribute: 'scale' })\n scale: WidgetScale = 'default';\n\n @property({ type: Boolean, attribute: 'show-grid' })\n showGrid = true;\n\n @property({ type: Boolean, attribute: 'show-legend' })\n showLegend = true;\n\n @property({ type: Boolean, attribute: 'show-tooltip' })\n showTooltip = true;\n\n @state()\n private _tooltip: { x: number; y: number; lines: string[] } | null = null;\n\n @state()\n private _empty = false;\n\n private _resizeObserver?: ResizeObserver;\n private _raf = 0;\n\n override connectedCallback(): void {\n super.connectedCallback();\n this._resizeObserver = new ResizeObserver(() => this.scheduleDraw());\n this._resizeObserver.observe(this);\n }\n\n override disconnectedCallback(): void {\n this._resizeObserver?.disconnect();\n cancelAnimationFrame(this._raf);\n super.disconnectedCallback();\n }\n\n override updated(changed: PropertyValues): void {\n if (chartPropsChanged(changed)) this.scheduleDraw();\n }\n\n private scheduleDraw(): void {\n cancelAnimationFrame(this._raf);\n this._raf = requestAnimationFrame(() => this.draw());\n }\n\n private parseData(): BubbleModel {\n const raw = parseJsonAttr<BubbleChartData>(this.dataJson, null);\n return normalizeBubbleData(raw);\n }\n\n private renderLegend(model: BubbleModel) {\n if (!this.showLegend || model.groups.length <= 1) return nothing;\n const theme = readThemeFromElement(this);\n return renderChartLegend(\n swatchLegendEntries(\n model.groups.map((g) => g.label),\n theme,\n (_label, index) => model.groups[index]?.color ?? theme.primary,\n ),\n );\n }\n\n private draw(): void {\n const root = this.shadowRoot?.querySelector('.chart-root') as HTMLElement | null;\n if (!root) return;\n\n const model = this.parseData();\n this._empty = model.points.length === 0;\n if (this._empty) {\n root.replaceChildren();\n return;\n }\n\n const theme = readThemeFromElement(this);\n const { width, height, margin } = getBubbleChartDimensions(root);\n\n renderBubbleChart(root, {\n model,\n width,\n height,\n margin,\n theme,\n showGrid: this.showGrid,\n showTooltip: this.showTooltip,\n onHover: this.showTooltip\n ? ({ point, event }) => {\n const rect = this.getBoundingClientRect();\n const xLabel = model.axisDetails?.[model.xField]?.label ?? model.xField;\n const yLabel = model.axisDetails?.[model.yField]?.label ?? model.yField;\n const lines = [\n `${xLabel}: ${formatCompactNumber(point.x)}`,\n `${yLabel}: ${formatCompactNumber(point.y)}`,\n ];\n if (model.groupField) {\n const groupLabel =\n model.axisDetails?.[model.groupField]?.label ?? model.groupField;\n lines.push(`${groupLabel}: ${point.groupKey}`);\n }\n this._tooltip = {\n x: event.clientX - rect.left,\n y: event.clientY - rect.top,\n lines,\n };\n }\n : undefined,\n onLeave: this.showTooltip ? () => { this._tooltip = null; } : undefined,\n });\n }\n\n override render() {\n const title = this.headerTitle();\n const model = this._empty ? null : this.parseData();\n return html`\n <div class=\"widget-shell\" part=\"shell\">\n ${this.renderShellHeader(title)}\n <div class=\"widget-body\">\n ${model ? this.renderLegend(model) : nothing}\n <div class=\"chart-root\" part=\"chart\" ?hidden=${this._empty}></div>\n ${this._empty\n ? html`<div class=\"empty\" part=\"empty\">\n Bubble chart requires two numeric fields. Pick numeric X and Y axes.\n </div>`\n : nothing}\n ${this._tooltip\n ? html`<div\n class=\"tooltip\"\n part=\"tooltip\"\n style=\"left:${this._tooltip.x}px;top:${this._tooltip.y}px\"\n >\n ${this._tooltip.lines.map((line) => html`<div>${line}</div>`)}\n </div>`\n : nothing}\n ${this.renderShellLabelTooltip()}\n </div>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ui9000-bubble-chart': Ui9000BubbleChart;\n }\n}\n\nexport function registerBubbleChart(): void {\n if (!customElements.get('ui9000-bubble-chart')) {\n customElements.define('ui9000-bubble-chart', Ui9000BubbleChart);\n }\n}\n\nregisterBubbleChart();\n"],"names":["_a"],"mappings":"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"}
1
+ {"version":3,"file":"ui9000-bubble-chart.js","sources":["../../../../src/components/bubble-chart/element/ui9000-bubble-chart.ts"],"sourcesContent":["import { html, nothing, type PropertyValues } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\n\nimport { chartShellStyles, Ui9000ChartElement } from '../../../element/ui9000-chart-base.js';\nimport { renderChartLegend } from '../../../element/chart-legend-render.js';\nimport { readThemeFromElement } from '../../../context/widget-context.js';\nimport type { WidgetScale } from '../../../types/index.js';\nimport { getBubbleChartDimensions, parseJsonAttr } from '../../../utils/chart-helpers.js';\nimport { swatchLegendEntries } from '../../../utils/chart-legend.js';\nimport { formatCompactNumber } from '../../../utils/fusedash-visual.js';\nimport { chartPropsChanged } from '../../../utils/lit-draw.js';\nimport {\n normalizeBubbleData,\n type BubbleChartData,\n type BubbleModel,\n} from '../lib/index.js';\nimport { renderBubbleChart } from '../render/draw.js';\nimport { bubbleChartStyles } from './styles.js';\n\n@customElement('ui9000-bubble-chart')\nexport class Ui9000BubbleChart extends Ui9000ChartElement {\n static override styles = [bubbleChartStyles, chartShellStyles];\n\n @property({ type: String, attribute: 'scale' })\n scale: WidgetScale = 'default';\n\n @property({ type: Boolean, attribute: 'show-grid' })\n showGrid = true;\n\n @property({ type: Boolean, attribute: 'show-legend' })\n showLegend = true;\n\n @property({ type: Boolean, attribute: 'show-tooltip' })\n showTooltip = true;\n\n @state()\n private _empty = false;\n\n private _resizeObserver?: ResizeObserver;\n private _raf = 0;\n\n override connectedCallback(): void {\n super.connectedCallback();\n this._resizeObserver = new ResizeObserver(() => this.scheduleDraw());\n this._resizeObserver.observe(this);\n }\n\n override disconnectedCallback(): void {\n this._resizeObserver?.disconnect();\n cancelAnimationFrame(this._raf);\n super.disconnectedCallback();\n }\n\n override updated(changed: PropertyValues): void {\n if (chartPropsChanged(changed)) this.scheduleDraw();\n }\n\n private scheduleDraw(): void {\n cancelAnimationFrame(this._raf);\n this._raf = requestAnimationFrame(() => this.draw());\n }\n\n private parseData(): BubbleModel {\n const raw = parseJsonAttr<BubbleChartData>(this.dataJson, null);\n return normalizeBubbleData(raw);\n }\n\n private renderLegend(model: BubbleModel) {\n if (!this.showLegend || model.groups.length <= 1) return nothing;\n const theme = readThemeFromElement(this);\n return renderChartLegend(\n swatchLegendEntries(\n model.groups.map((g) => g.label),\n theme,\n (_label, index) => model.groups[index]?.color ?? theme.primary,\n ),\n );\n }\n\n private draw(): void {\n const root = this.shadowRoot?.querySelector('.chart-root') as HTMLElement | null;\n if (!root) return;\n\n const model = this.parseData();\n this._empty = model.points.length === 0;\n if (this._empty) {\n root.replaceChildren();\n return;\n }\n\n const theme = readThemeFromElement(this);\n const { width, height, margin } = getBubbleChartDimensions(root);\n\n renderBubbleChart(root, {\n model,\n width,\n height,\n margin,\n theme,\n showGrid: this.showGrid,\n showTooltip: this.showTooltip,\n onHover: this.showTooltip\n ? ({ point, event }) => {\n const xLabel = model.axisDetails?.[model.xField]?.label ?? model.xField;\n const yLabel = model.axisDetails?.[model.yField]?.label ?? model.yField;\n const rows = [\n { label: xLabel, value: formatCompactNumber(point.x) },\n { label: yLabel, value: formatCompactNumber(point.y) },\n ];\n if (model.groupField) {\n const groupLabel =\n model.axisDetails?.[model.groupField]?.label ?? model.groupField;\n rows.push({ label: groupLabel, value: String(point.groupKey) });\n }\n this.openTooltip(event, { rows });\n }\n : undefined,\n onLeave: this.showTooltip ? () => this.closeTooltip() : undefined,\n });\n }\n\n override render() {\n const title = this.headerTitle();\n const model = this._empty ? null : this.parseData();\n return html`\n <div class=\"widget-shell\" part=\"shell\">\n ${this.renderShellHeader(title)}\n <div class=\"widget-body\">\n ${model ? this.renderLegend(model) : nothing}\n <div class=\"chart-root\" part=\"chart\" ?hidden=${this._empty}></div>\n ${this._empty\n ? html`<div class=\"empty\" part=\"empty\">\n Bubble chart requires two numeric fields. Pick numeric X and Y axes.\n </div>`\n : nothing}\n ${this.renderShellLabelTooltip()}\n </div>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ui9000-bubble-chart': Ui9000BubbleChart;\n }\n}\n\nexport function registerBubbleChart(): void {\n if (!customElements.get('ui9000-bubble-chart')) {\n customElements.define('ui9000-bubble-chart', Ui9000BubbleChart);\n }\n}\n\nregisterBubbleChart();\n"],"names":["_a"],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  import { registerBubbleChart } from "./element/ui9000-bubble-chart.js";
2
2
  import { Ui9000BubbleChart } from "./element/ui9000-bubble-chart.js";
3
3
  import { renderBubbleChart } from "./render/draw.js";
4
+ import { normalizeBubbleData } from "./lib/normalize.js";
4
5
  import { default as default2 } from "./metadata.json.js";
5
6
  import { bubbleRadiusForValue } from "../../utils/fuse-palette.js";
6
7
  import { bubbleXDomain, bubbleYDomain } from "./lib/domain.js";
7
- import { normalizeBubbleData } from "./lib/normalize.js";
8
8
  export {
9
9
  Ui9000BubbleChart,
10
10
  default2 as bubbleChartMetadata,
@@ -1 +1 @@
1
- {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../src/components/chart-renderer/element/styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,mBAAmB,yBAoC/B,CAAC"}
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../src/components/chart-renderer/element/styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,mBAAmB,yBAwC/B,CAAC"}
@@ -17,6 +17,10 @@ const chartRendererStyles = css`
17
17
  height: 100%;
18
18
  min-height: inherit;
19
19
  }
20
+ .host[hidden],
21
+ .empty[hidden] {
22
+ display: none !important;
23
+ }
20
24
  .empty {
21
25
  display: grid;
22
26
  place-items: center;
@@ -1 +1 @@
1
- {"version":3,"file":"styles.js","sources":["../../../../src/components/chart-renderer/element/styles.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const chartRendererStyles = css`\n :host {\n display: block;\n position: relative;\n width: 100%;\n height: 100%;\n min-height: var(--ui9000-host-min-height, 220px);\n box-sizing: border-box;\n }\n :host([embedded]) {\n min-height: 0;\n }\n .host {\n display: block;\n width: 100%;\n height: 100%;\n min-height: inherit;\n }\n .empty {\n display: grid;\n place-items: center;\n height: 100%;\n min-height: inherit;\n padding: 1rem;\n text-align: center;\n color: var(--ui9000-color-text-muted, #6b7280);\n font-family: var(--ui9000-font-family, system-ui, sans-serif);\n font-size: 0.875rem;\n line-height: 1.4;\n }\n .empty strong {\n display: block;\n margin-bottom: 0.25rem;\n color: var(--ui9000-color-text, #111827);\n font-weight: 600;\n }\n`;\n"],"names":[],"mappings":";AAEO,MAAM,sBAAsB;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;"}
1
+ {"version":3,"file":"styles.js","sources":["../../../../src/components/chart-renderer/element/styles.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const chartRendererStyles = css`\n :host {\n display: block;\n position: relative;\n width: 100%;\n height: 100%;\n min-height: var(--ui9000-host-min-height, 220px);\n box-sizing: border-box;\n }\n :host([embedded]) {\n min-height: 0;\n }\n .host {\n display: block;\n width: 100%;\n height: 100%;\n min-height: inherit;\n }\n .host[hidden],\n .empty[hidden] {\n display: none !important;\n }\n .empty {\n display: grid;\n place-items: center;\n height: 100%;\n min-height: inherit;\n padding: 1rem;\n text-align: center;\n color: var(--ui9000-color-text-muted, #6b7280);\n font-family: var(--ui9000-font-family, system-ui, sans-serif);\n font-size: 0.875rem;\n line-height: 1.4;\n }\n .empty strong {\n display: block;\n margin-bottom: 0.25rem;\n color: var(--ui9000-color-text, #111827);\n font-weight: 600;\n }\n`;\n"],"names":[],"mappings":";AAEO,MAAM,sBAAsB;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;"}
@@ -1,14 +1,24 @@
1
+ import { WidgetHeaderHandlers } from '../../../element/widget-header.js';
1
2
  export declare class Ui9000ChartRenderer extends HTMLElement {
2
3
  static get observedAttributes(): string[];
3
4
  private _host;
4
5
  private _empty;
5
6
  private _mountToken;
7
+ private _headerHandlers;
8
+ get headerHandlers(): WidgetHeaderHandlers;
9
+ set headerHandlers(value: WidgetHeaderHandlers);
6
10
  connectedCallback(): void;
7
11
  attributeChangedCallback(): void;
12
+ /** In-memory payload. Not mirrored to the `data` attribute — Storybook's HTML source pass splits quotes there and JSON.parse then fails at column 2. */
13
+ private _widgetJson;
8
14
  private get dataJson();
15
+ get widgetJson(): string;
16
+ set widgetJson(value: string);
9
17
  private get chartTypeAttr();
10
18
  private get scale();
11
19
  private applyBoolProp;
20
+ private applyHeaderVariant;
21
+ private applyHeaderHandlers;
12
22
  private copyHostAttr;
13
23
  private boolAttr;
14
24
  private showEmpty;
@@ -1 +1 @@
1
- {"version":3,"file":"ui9000-chart-renderer.d.ts","sourceRoot":"","sources":["../../../../src/components/chart-renderer/element/ui9000-chart-renderer.ts"],"names":[],"mappings":"AAsBA,qBAAa,mBAAoB,SAAQ,WAAW;IAClD,MAAM,KAAK,kBAAkB,IAAI,MAAM,EAAE,CAexC;IAED,OAAO,CAAC,KAAK,CAA+B;IAC5C,OAAO,CAAC,MAAM,CAA+B;IAC7C,OAAO,CAAC,WAAW,CAAK;IAExB,iBAAiB,IAAI,IAAI;IAqBzB,wBAAwB,IAAI,IAAI;IAIhC,OAAO,KAAK,QAAQ,GAEnB;IAED,OAAO,KAAK,aAAa,GAExB;IAED,OAAO,KAAK,KAAK,GAEhB;IAED,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,QAAQ;IAKhB,OAAO,CAAC,SAAS;YAgBH,UAAU;CAgGzB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,uBAAuB,EAAE,mBAAmB,CAAC;KAC9C;CACF;AAED,wBAAgB,qBAAqB,IAAI,IAAI,CAI5C"}
1
+ {"version":3,"file":"ui9000-chart-renderer.d.ts","sourceRoot":"","sources":["../../../../src/components/chart-renderer/element/ui9000-chart-renderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAuB9E,qBAAa,mBAAoB,SAAQ,WAAW;IAClD,MAAM,KAAK,kBAAkB,IAAI,MAAM,EAAE,CAgBxC;IAED,OAAO,CAAC,KAAK,CAA+B;IAC5C,OAAO,CAAC,MAAM,CAA+B;IAC7C,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,eAAe,CAA4B;IAEnD,IAAI,cAAc,IAAI,oBAAoB,CAEzC;IAED,IAAI,cAAc,CAAC,KAAK,EAAE,oBAAoB,EAI7C;IAED,iBAAiB,IAAI,IAAI;IAqBzB,wBAAwB,IAAI,IAAI;IAIhC,wJAAwJ;IACxJ,OAAO,CAAC,WAAW,CAAuB;IAE1C,OAAO,KAAK,QAAQ,GAEnB;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,IAAI,UAAU,CAAC,KAAK,EAAE,MAAM,EAK3B;IAED,OAAO,KAAK,aAAa,GAExB;IAED,OAAO,KAAK,KAAK,GAEhB;IAED,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,mBAAmB;IAM3B,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,QAAQ;IAKhB,OAAO,CAAC,SAAS;YAgBH,UAAU;CAsGzB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,uBAAuB,EAAE,mBAAmB,CAAC;KAC9C;CACF;AAED,wBAAgB,qBAAqB,IAAI,IAAI,CAI5C"}
@@ -1,8 +1,8 @@
1
1
  import { loadChart } from "../../../lazy/index.js";
2
2
  import { parseJsonAttr } from "../../../utils/chart-helpers.js";
3
- import { chartRendererStyles } from "./styles.js";
4
- import { resolveWidgetChartType } from "../lib/resolve-chart-type.js";
5
3
  import { resolveChartTarget } from "../lib/registry.js";
4
+ import { resolveWidgetChartType } from "../lib/resolve-chart-type.js";
5
+ import { chartRendererStyles } from "./styles.js";
6
6
  function applyTargetAttrs(el, attrs) {
7
7
  if (!attrs) return;
8
8
  for (const [key, value] of Object.entries(attrs)) {
@@ -20,6 +20,8 @@ class Ui9000ChartRenderer extends HTMLElement {
20
20
  this._host = null;
21
21
  this._empty = null;
22
22
  this._mountToken = 0;
23
+ this._headerHandlers = {};
24
+ this._widgetJson = null;
23
25
  }
24
26
  static get observedAttributes() {
25
27
  return [
@@ -30,6 +32,7 @@ class Ui9000ChartRenderer extends HTMLElement {
30
32
  "show-legend",
31
33
  "show-tooltip",
32
34
  "show-header",
35
+ "header-variant",
33
36
  "embedded",
34
37
  "chart-title",
35
38
  "mapbox-token",
@@ -37,6 +40,15 @@ class Ui9000ChartRenderer extends HTMLElement {
37
40
  "pmtiles-base-url"
38
41
  ];
39
42
  }
43
+ get headerHandlers() {
44
+ return this._headerHandlers;
45
+ }
46
+ set headerHandlers(value) {
47
+ var _a;
48
+ this._headerHandlers = value ?? {};
49
+ const chart = (_a = this._host) == null ? void 0 : _a.firstElementChild;
50
+ if (chart instanceof HTMLElement) this.applyHeaderHandlers(chart);
51
+ }
40
52
  connectedCallback() {
41
53
  if (this._host) return;
42
54
  const root = this.attachShadow({ mode: "open" });
@@ -58,7 +70,16 @@ class Ui9000ChartRenderer extends HTMLElement {
58
70
  if (this._host) void this.mountChart();
59
71
  }
60
72
  get dataJson() {
61
- return this.getAttribute("data") ?? "{}";
73
+ return this._widgetJson ?? this.getAttribute("data") ?? "{}";
74
+ }
75
+ get widgetJson() {
76
+ return this.dataJson;
77
+ }
78
+ set widgetJson(value) {
79
+ const next = value && value.trim() ? value : "{}";
80
+ if (next === this._widgetJson) return;
81
+ this._widgetJson = next;
82
+ if (this._host) void this.mountChart();
62
83
  }
63
84
  get chartTypeAttr() {
64
85
  return this.getAttribute("chart-type") ?? "";
@@ -71,6 +92,15 @@ class Ui9000ChartRenderer extends HTMLElement {
71
92
  const on = this.getAttribute(attr) !== "false";
72
93
  el[prop] = on;
73
94
  }
95
+ applyHeaderVariant(el) {
96
+ const variant = this.getAttribute("header-variant");
97
+ if (variant === "dash" || variant === "chat") el.setAttribute("header-variant", variant);
98
+ else el.removeAttribute("header-variant");
99
+ }
100
+ applyHeaderHandlers(el) {
101
+ if (!("headerHandlers" in el)) return;
102
+ el.headerHandlers = this._headerHandlers;
103
+ }
74
104
  copyHostAttr(el, name) {
75
105
  const value = this.getAttribute(name);
76
106
  if (value) el.setAttribute(name, value);
@@ -128,13 +158,18 @@ class Ui9000ChartRenderer extends HTMLElement {
128
158
  el = document.createElement(target.tag);
129
159
  }
130
160
  if (!el) return;
131
- el.setAttribute("data", this.dataJson);
161
+ const payload = this.dataJson;
162
+ const dataProp = el;
163
+ if ("dataJson" in el) dataProp.dataJson = payload;
164
+ else el.setAttribute("data", payload);
132
165
  el.setAttribute("scale", this.scale);
133
166
  if (title) el.setAttribute("chart-title", title);
134
167
  else el.removeAttribute("chart-title");
135
168
  if (this.getAttribute("show-header") === "false")
136
169
  el.setAttribute("show-header", "false");
137
170
  else el.removeAttribute("show-header");
171
+ this.applyHeaderVariant(el);
172
+ this.applyHeaderHandlers(el);
138
173
  const showGrid = this.boolAttr("show-grid");
139
174
  const showLegend = this.boolAttr("show-legend");
140
175
  const showTooltip = this.boolAttr("show-tooltip");
@@ -173,6 +208,7 @@ class Ui9000ChartRenderer extends HTMLElement {
173
208
  this._host.replaceChildren();
174
209
  this._host.appendChild(el);
175
210
  }
211
+ this._empty.replaceChildren();
176
212
  this._empty.hidden = true;
177
213
  this._host.hidden = false;
178
214
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ui9000-chart-renderer.js","sources":["../../../../src/components/chart-renderer/element/ui9000-chart-renderer.ts"],"sourcesContent":["import { loadChart } from '../../../lazy/index.js';\nimport type { WidgetScale } from '../../../types/index.js';\nimport { parseJsonAttr } from '../../../utils/chart-helpers.js';\nimport {\n resolveChartTarget,\n resolveWidgetChartType,\n type ChartTargetAttrs,\n} from '../lib/index.js';\nimport { chartRendererStyles } from './styles.js';\n\nfunction applyTargetAttrs(el: HTMLElement, attrs?: ChartTargetAttrs): void {\n if (!attrs) return;\n for (const [key, value] of Object.entries(attrs)) {\n if (typeof value === 'boolean') {\n if (value) el.setAttribute(key, '');\n else el.removeAttribute(key);\n } else {\n el.setAttribute(key, String(value));\n }\n }\n}\n\nexport class Ui9000ChartRenderer extends HTMLElement {\n static get observedAttributes(): string[] {\n return [\n 'data',\n 'chart-type',\n 'scale',\n 'show-grid',\n 'show-legend',\n 'show-tooltip',\n 'show-header',\n 'embedded',\n 'chart-title',\n 'mapbox-token',\n 'geojson-base-url',\n 'pmtiles-base-url',\n ];\n }\n\n private _host: HTMLDivElement | null = null;\n private _empty: HTMLDivElement | null = null;\n private _mountToken = 0;\n\n connectedCallback(): void {\n if (this._host) return;\n const root = this.attachShadow({ mode: 'open' });\n const style = document.createElement('style');\n style.textContent = chartRendererStyles.cssText;\n root.appendChild(style);\n\n this._host = document.createElement('div');\n this._host.className = 'host';\n this._host.part = 'chart';\n root.appendChild(this._host);\n\n this._empty = document.createElement('div');\n this._empty.className = 'empty';\n this._empty.part = 'empty';\n this._empty.hidden = true;\n root.appendChild(this._empty);\n\n void this.mountChart();\n }\n\n attributeChangedCallback(): void {\n if (this._host) void this.mountChart();\n }\n\n private get dataJson(): string {\n return this.getAttribute('data') ?? '{}';\n }\n\n private get chartTypeAttr(): string {\n return this.getAttribute('chart-type') ?? '';\n }\n\n private get scale(): WidgetScale {\n return (this.getAttribute('scale') as WidgetScale) || 'default';\n }\n\n private applyBoolProp(el: HTMLElement, attr: string, prop: string): void {\n if (!this.hasAttribute(attr)) return;\n const on = this.getAttribute(attr) !== 'false';\n (el as unknown as Record<string, unknown>)[prop] = on;\n }\n\n private copyHostAttr(el: HTMLElement, name: string): void {\n const value = this.getAttribute(name);\n if (value) el.setAttribute(name, value);\n else el.removeAttribute(name);\n }\n\n private boolAttr(name: string): boolean | undefined {\n if (!this.hasAttribute(name)) return undefined;\n return this.getAttribute(name) !== 'false';\n }\n\n private showEmpty(message: string, detail?: string): void {\n if (!this._empty || !this._host) return;\n this._host.replaceChildren();\n this._host.hidden = true;\n this._empty.hidden = false;\n this._empty.replaceChildren();\n const strong = document.createElement('strong');\n strong.textContent = message;\n this._empty.appendChild(strong);\n if (detail) {\n const p = document.createElement('span');\n p.textContent = detail;\n this._empty.appendChild(p);\n }\n }\n\n private async mountChart(): Promise<void> {\n if (!this._host || !this._empty) return;\n const token = ++this._mountToken;\n\n const chartType = resolveWidgetChartType(this.dataJson, this.chartTypeAttr);\n if (!chartType) {\n this.showEmpty('No chart type', 'Pass chart-type or a widget payload with chartType.');\n return;\n }\n\n const target = resolveChartTarget(chartType);\n if (!target) {\n this.showEmpty(\n 'Unsupported chart type',\n `\"${chartType}\" is not available in @ui9000/widgets yet.`,\n );\n return;\n }\n\n try {\n await loadChart(target.kind);\n } catch {\n if (token !== this._mountToken) return;\n this.showEmpty('Failed to load chart', target.kind);\n return;\n }\n\n if (token !== this._mountToken) return;\n\n const widget = parseJsonAttr<{ name?: string } | null>(this.dataJson, null);\n const title =\n this.getAttribute('show-header') === 'false'\n ? ''\n : this.getAttribute('chart-title')?.trim() ||\n (widget && typeof widget === 'object' ? widget.name?.trim() : '') ||\n '';\n\n let el = this._host.firstElementChild as HTMLElement | null;\n const reuse = !!el && el.tagName.toLowerCase() === target.tag;\n if (!reuse) {\n el = document.createElement(target.tag);\n }\n if (!el) return;\n\n el.setAttribute('data', this.dataJson);\n el.setAttribute('scale', this.scale);\n if (title) el.setAttribute('chart-title', title);\n else el.removeAttribute('chart-title');\n if (this.getAttribute('show-header') === 'false')\n el.setAttribute('show-header', 'false');\n else el.removeAttribute('show-header');\n\n const showGrid = this.boolAttr('show-grid');\n const showLegend = this.boolAttr('show-legend');\n const showTooltip = this.boolAttr('show-tooltip');\n if (showGrid !== undefined) {\n if (showGrid) el.setAttribute('show-grid', '');\n else el.setAttribute('show-grid', 'false');\n }\n if (showLegend !== undefined) {\n if (showLegend) el.setAttribute('show-legend', '');\n else el.setAttribute('show-legend', 'false');\n }\n if (showTooltip !== undefined) {\n if (showTooltip) el.setAttribute('show-tooltip', '');\n else el.setAttribute('show-tooltip', 'false');\n }\n this.applyBoolProp(el, 'show-header', 'showHeader');\n this.applyBoolProp(el, 'show-grid', 'showGrid');\n this.applyBoolProp(el, 'show-legend', 'showLegend');\n this.applyBoolProp(el, 'show-tooltip', 'showTooltip');\n\n applyTargetAttrs(el, target.attrs);\n this.copyHostAttr(el, 'mapbox-token');\n this.copyHostAttr(el, 'geojson-base-url');\n this.copyHostAttr(el, 'pmtiles-base-url');\n el.style.display = 'block';\n el.style.width = '100%';\n el.style.height = '100%';\n if (this.hasAttribute('embedded')) {\n el.setAttribute('embedded', '');\n el.style.minHeight = '0';\n el.style.setProperty('--ui9000-host-min-height', '0');\n el.style.setProperty('--ui9000-plot-min-height', '0');\n } else {\n el.removeAttribute('embedded');\n }\n\n if (!reuse) {\n this._host.replaceChildren();\n this._host.appendChild(el);\n }\n\n this._empty.hidden = true;\n this._host.hidden = false;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ui9000-chart-renderer': Ui9000ChartRenderer;\n }\n}\n\nexport function registerChartRenderer(): void {\n if (!customElements.get('ui9000-chart-renderer')) {\n customElements.define('ui9000-chart-renderer', Ui9000ChartRenderer);\n }\n}\n\nregisterChartRenderer();\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ui9000-chart-renderer.js","sources":["../../../../src/components/chart-renderer/element/ui9000-chart-renderer.ts"],"sourcesContent":["import type { WidgetHeaderHandlers } from '../../../element/widget-header.js';\nimport { loadChart } from '../../../lazy/index.js';\nimport type { WidgetScale } from '../../../types/index.js';\nimport { parseJsonAttr } from '../../../utils/chart-helpers.js';\nimport {\n resolveChartTarget,\n resolveWidgetChartType,\n type ChartTargetAttrs,\n} from '../lib/index.js';\nimport { chartRendererStyles } from './styles.js';\n\nfunction applyTargetAttrs(el: HTMLElement, attrs?: ChartTargetAttrs): void {\n if (!attrs) return;\n for (const [key, value] of Object.entries(attrs)) {\n if (typeof value === 'boolean') {\n if (value) el.setAttribute(key, '');\n else el.removeAttribute(key);\n } else {\n el.setAttribute(key, String(value));\n }\n }\n}\n\nexport class Ui9000ChartRenderer extends HTMLElement {\n static get observedAttributes(): string[] {\n return [\n 'data',\n 'chart-type',\n 'scale',\n 'show-grid',\n 'show-legend',\n 'show-tooltip',\n 'show-header',\n 'header-variant',\n 'embedded',\n 'chart-title',\n 'mapbox-token',\n 'geojson-base-url',\n 'pmtiles-base-url',\n ];\n }\n\n private _host: HTMLDivElement | null = null;\n private _empty: HTMLDivElement | null = null;\n private _mountToken = 0;\n private _headerHandlers: WidgetHeaderHandlers = {};\n\n get headerHandlers(): WidgetHeaderHandlers {\n return this._headerHandlers;\n }\n\n set headerHandlers(value: WidgetHeaderHandlers) {\n this._headerHandlers = value ?? {};\n const chart = this._host?.firstElementChild;\n if (chart instanceof HTMLElement) this.applyHeaderHandlers(chart);\n }\n\n connectedCallback(): void {\n if (this._host) return;\n const root = this.attachShadow({ mode: 'open' });\n const style = document.createElement('style');\n style.textContent = chartRendererStyles.cssText;\n root.appendChild(style);\n\n this._host = document.createElement('div');\n this._host.className = 'host';\n this._host.part = 'chart';\n root.appendChild(this._host);\n\n this._empty = document.createElement('div');\n this._empty.className = 'empty';\n this._empty.part = 'empty';\n this._empty.hidden = true;\n root.appendChild(this._empty);\n\n void this.mountChart();\n }\n\n attributeChangedCallback(): void {\n if (this._host) void this.mountChart();\n }\n\n /** In-memory payload. Not mirrored to the `data` attribute — Storybook's HTML source pass splits quotes there and JSON.parse then fails at column 2. */\n private _widgetJson: string | null = null;\n\n private get dataJson(): string {\n return this._widgetJson ?? this.getAttribute('data') ?? '{}';\n }\n\n get widgetJson(): string {\n return this.dataJson;\n }\n\n set widgetJson(value: string) {\n const next = value && value.trim() ? value : '{}';\n if (next === this._widgetJson) return;\n this._widgetJson = next;\n if (this._host) void this.mountChart();\n }\n\n private get chartTypeAttr(): string {\n return this.getAttribute('chart-type') ?? '';\n }\n\n private get scale(): WidgetScale {\n return (this.getAttribute('scale') as WidgetScale) || 'default';\n }\n\n private applyBoolProp(el: HTMLElement, attr: string, prop: string): void {\n if (!this.hasAttribute(attr)) return;\n const on = this.getAttribute(attr) !== 'false';\n (el as unknown as Record<string, unknown>)[prop] = on;\n }\n\n private applyHeaderVariant(el: HTMLElement): void {\n const variant = this.getAttribute('header-variant');\n if (variant === 'dash' || variant === 'chat') el.setAttribute('header-variant', variant);\n else el.removeAttribute('header-variant');\n }\n\n private applyHeaderHandlers(el: HTMLElement): void {\n if (!('headerHandlers' in el)) return;\n (el as HTMLElement & { headerHandlers: WidgetHeaderHandlers }).headerHandlers =\n this._headerHandlers;\n }\n\n private copyHostAttr(el: HTMLElement, name: string): void {\n const value = this.getAttribute(name);\n if (value) el.setAttribute(name, value);\n else el.removeAttribute(name);\n }\n\n private boolAttr(name: string): boolean | undefined {\n if (!this.hasAttribute(name)) return undefined;\n return this.getAttribute(name) !== 'false';\n }\n\n private showEmpty(message: string, detail?: string): void {\n if (!this._empty || !this._host) return;\n this._host.replaceChildren();\n this._host.hidden = true;\n this._empty.hidden = false;\n this._empty.replaceChildren();\n const strong = document.createElement('strong');\n strong.textContent = message;\n this._empty.appendChild(strong);\n if (detail) {\n const p = document.createElement('span');\n p.textContent = detail;\n this._empty.appendChild(p);\n }\n }\n\n private async mountChart(): Promise<void> {\n if (!this._host || !this._empty) return;\n const token = ++this._mountToken;\n\n const chartType = resolveWidgetChartType(this.dataJson, this.chartTypeAttr);\n if (!chartType) {\n this.showEmpty('No chart type', 'Pass chart-type or a widget payload with chartType.');\n return;\n }\n\n const target = resolveChartTarget(chartType);\n if (!target) {\n this.showEmpty(\n 'Unsupported chart type',\n `\"${chartType}\" is not available in @ui9000/widgets yet.`,\n );\n return;\n }\n\n try {\n await loadChart(target.kind);\n } catch {\n if (token !== this._mountToken) return;\n this.showEmpty('Failed to load chart', target.kind);\n return;\n }\n\n if (token !== this._mountToken) return;\n\n const widget = parseJsonAttr<{ name?: string } | null>(this.dataJson, null);\n const title =\n this.getAttribute('show-header') === 'false'\n ? ''\n : this.getAttribute('chart-title')?.trim() ||\n (widget && typeof widget === 'object' ? widget.name?.trim() : '') ||\n '';\n\n let el = this._host.firstElementChild as HTMLElement | null;\n const reuse = !!el && el.tagName.toLowerCase() === target.tag;\n if (!reuse) {\n el = document.createElement(target.tag);\n }\n if (!el) return;\n\n const payload = this.dataJson;\n const dataProp = el as HTMLElement & { dataJson?: string };\n if ('dataJson' in el) dataProp.dataJson = payload;\n else el.setAttribute('data', payload);\n el.setAttribute('scale', this.scale);\n if (title) el.setAttribute('chart-title', title);\n else el.removeAttribute('chart-title');\n if (this.getAttribute('show-header') === 'false')\n el.setAttribute('show-header', 'false');\n else el.removeAttribute('show-header');\n this.applyHeaderVariant(el);\n this.applyHeaderHandlers(el);\n\n const showGrid = this.boolAttr('show-grid');\n const showLegend = this.boolAttr('show-legend');\n const showTooltip = this.boolAttr('show-tooltip');\n if (showGrid !== undefined) {\n if (showGrid) el.setAttribute('show-grid', '');\n else el.setAttribute('show-grid', 'false');\n }\n if (showLegend !== undefined) {\n if (showLegend) el.setAttribute('show-legend', '');\n else el.setAttribute('show-legend', 'false');\n }\n if (showTooltip !== undefined) {\n if (showTooltip) el.setAttribute('show-tooltip', '');\n else el.setAttribute('show-tooltip', 'false');\n }\n this.applyBoolProp(el, 'show-header', 'showHeader');\n this.applyBoolProp(el, 'show-grid', 'showGrid');\n this.applyBoolProp(el, 'show-legend', 'showLegend');\n this.applyBoolProp(el, 'show-tooltip', 'showTooltip');\n\n applyTargetAttrs(el, target.attrs);\n this.copyHostAttr(el, 'mapbox-token');\n this.copyHostAttr(el, 'geojson-base-url');\n this.copyHostAttr(el, 'pmtiles-base-url');\n el.style.display = 'block';\n el.style.width = '100%';\n el.style.height = '100%';\n if (this.hasAttribute('embedded')) {\n el.setAttribute('embedded', '');\n el.style.minHeight = '0';\n el.style.setProperty('--ui9000-host-min-height', '0');\n el.style.setProperty('--ui9000-plot-min-height', '0');\n } else {\n el.removeAttribute('embedded');\n }\n\n if (!reuse) {\n this._host.replaceChildren();\n this._host.appendChild(el);\n }\n\n this._empty.replaceChildren();\n this._empty.hidden = true;\n this._host.hidden = false;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ui9000-chart-renderer': Ui9000ChartRenderer;\n }\n}\n\nexport function registerChartRenderer(): void {\n if (!customElements.get('ui9000-chart-renderer')) {\n customElements.define('ui9000-chart-renderer', Ui9000ChartRenderer);\n }\n}\n\nregisterChartRenderer();\n"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import { registerChartRenderer } from "./element/ui9000-chart-renderer.js";
2
2
  import { Ui9000ChartRenderer } from "./element/ui9000-chart-renderer.js";
3
- import { default as default2 } from "./metadata.json.js";
4
3
  import { CHART_TYPE_ALIASES, SUPPORTED_CHART_TYPES, canRenderChartType, resolveChartTarget, resolveRegistryKey } from "./lib/registry.js";
5
4
  import { resolveWidgetChartType } from "./lib/resolve-chart-type.js";
5
+ import { default as default2 } from "./metadata.json.js";
6
6
  export {
7
7
  CHART_TYPE_ALIASES,
8
8
  SUPPORTED_CHART_TYPES,
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../../src/components/chart-renderer/lib/registry.ts"],"names":[],"mappings":"AAgCA,OAAO,KAAK,EAAqB,WAAW,EAAoB,MAAM,YAAY,CAAC;AAEnF,6FAA6F;AAC7F,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAgB/D,CAAC;AA+EF,eAAO,MAAM,qBAAqB,mBAA8C,CAAC;AAEjF,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,CAI3F;AAED,+EAA+E;AAC/E,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,WAAW,GAAG,IAAI,CAI3F;AAMD,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,CAIhF"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../../src/components/chart-renderer/lib/registry.ts"],"names":[],"mappings":"AAiCA,OAAO,KAAK,EAAqB,WAAW,EAAoB,MAAM,YAAY,CAAC;AAEnF,6FAA6F;AAC7F,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAgB/D,CAAC;AAgFF,eAAO,MAAM,qBAAqB,mBAA8C,CAAC;AAEjF,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,CAI3F;AAED,+EAA+E;AAC/E,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,WAAW,GAAG,IAAI,CAI3F;AAMD,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,CAIhF"}
@@ -8,6 +8,7 @@ import donutMeta from "../../donut-chart/metadata.json.js";
8
8
  import giniImpurityEntropyMeta from "../../gini-impurity-entropy-chart/metadata.json.js";
9
9
  import histogramMeta from "../../histogram-chart/metadata.json.js";
10
10
  import kpiMeta from "../../kpi-widget/metadata.json.js";
11
+ import statusGaugeMeta from "../../status-gauge-widget/metadata.json.js";
11
12
  import lineMeta from "../../line-chart/metadata.json.js";
12
13
  import lollipopMeta from "../../lollipop/metadata.json.js";
13
14
  import mapChartMeta from "../../map-chart/metadata.json.js";
@@ -57,6 +58,7 @@ const METADATA = [
57
58
  giniImpurityEntropyMeta,
58
59
  histogramMeta,
59
60
  kpiMeta,
61
+ statusGaugeMeta,
60
62
  lineMeta,
61
63
  lollipopMeta,
62
64
  mapChartMeta,
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sources":["../../../../src/components/chart-renderer/lib/registry.ts"],"sourcesContent":["import type { ChartKind } from '../../../lazy/index.js';\nimport areaChartMeta from '../../area-chart/metadata.json';\nimport areaGroupedBarMeta from '../../area-grouped-bar-chart/metadata.json';\nimport barChartMeta from '../../bar-chart/metadata.json';\nimport biasVarianceTradeoffMeta from '../../bias-variance-tradeoff-chart/metadata.json';\nimport boxPlotMeta from '../../box-plot-chart/metadata.json';\nimport bubbleMeta from '../../bubble-chart/metadata.json';\nimport donutMeta from '../../donut-chart/metadata.json';\nimport giniImpurityEntropyMeta from '../../gini-impurity-entropy-chart/metadata.json';\nimport histogramMeta from '../../histogram-chart/metadata.json';\nimport kpiMeta from '../../kpi-widget/metadata.json';\nimport lineMeta from '../../line-chart/metadata.json';\nimport lollipopMeta from '../../lollipop/metadata.json';\nimport mapChartMeta from '../../map-chart/metadata.json';\nimport matrixMeta from '../../matrix-chart/metadata.json';\nimport networkGraphMeta from '../../network-graph/metadata.json';\nimport parallelCoordinatesMeta from '../../parallel-coordinates-chart/metadata.json';\nimport pieMeta from '../../pie-chart/metadata.json';\nimport polarAreaMeta from '../../polar-area-chart/metadata.json';\nimport punchcardMeta from '../../punchcard-chart/metadata.json';\nimport radarMeta from '../../radar-chart/metadata.json';\nimport radialBarMeta from '../../radial-bar-chart/metadata.json';\nimport sankeyMeta from '../../sankey-chart/metadata.json';\nimport scatterPlotMeta from '../../scatter-plot-chart/metadata.json';\nimport scatterSparklineMeta from '../../scatter-sparkline-chart/metadata.json';\nimport sparkAreaMeta from '../../spark-area-chart/metadata.json';\nimport sparkLineMeta from '../../spark-line-chart/metadata.json';\nimport stepLineMeta from '../../step-line-chart/metadata.json';\nimport treemapMeta from '../../treemap-chart/metadata.json';\nimport violinMeta from '../../violin-chart/metadata.json';\nimport waterfallMeta from '../../waterfall-chart/metadata.json';\nimport partialDependenceMeta from '../../partial-dependence-chart/metadata.json';\nimport type { ChartMetadataLike, ChartTarget, ChartTargetAttrs } from './types.js';\n\n/** FuseDash variant / legacy chartType → registry key (mirrors client chartTypeRegistry). */\nexport const CHART_TYPE_ALIASES: Readonly<Record<string, string>> = {\n barGroupedChart: 'barGrouped',\n barStackedChart: 'barStacked',\n cumulativeBarChart: 'cumulativeBar',\n barHorizontalChart: 'barHorizontal',\n barHorizontalGroupedChart: 'barHorizontalGrouped',\n barHorizontalStackedChart: 'barHorizontalStacked',\n lollipopGroupedChart: 'lollipopGroupedChart',\n lollipopStackedChart: 'lollipopStackedChart',\n lineGroupedChart: 'lineGroupedChart',\n areaStackedChart: 'areaStackedChart',\n qqPlot: 'qqPlot',\n radarChartGrouped: 'radarGroupedChart',\n /** Client charts mock / MCP spelling */\n rocPlotChart: 'rocCurveChart',\n UniversalMap: 'mapChart',\n};\n\nconst METADATA: ChartMetadataLike[] = [\n areaChartMeta,\n areaGroupedBarMeta,\n barChartMeta,\n biasVarianceTradeoffMeta,\n boxPlotMeta,\n bubbleMeta,\n donutMeta,\n giniImpurityEntropyMeta,\n histogramMeta,\n kpiMeta,\n lineMeta,\n lollipopMeta,\n mapChartMeta,\n matrixMeta,\n networkGraphMeta,\n parallelCoordinatesMeta,\n pieMeta,\n polarAreaMeta,\n punchcardMeta,\n radarMeta,\n radialBarMeta,\n sankeyMeta,\n scatterPlotMeta,\n scatterSparklineMeta,\n sparkAreaMeta,\n sparkLineMeta,\n stepLineMeta,\n treemapMeta,\n violinMeta,\n waterfallMeta,\n partialDependenceMeta,\n];\n\nfunction toDomAttr(camelKey: string): string {\n return camelKey.replace(/[A-Z]/g, (m) => `-${m.toLowerCase()}`);\n}\n\nfunction attrsFromMap(raw?: Record<string, unknown>): ChartTargetAttrs | undefined {\n if (!raw) return undefined;\n const out: ChartTargetAttrs = {};\n for (const [key, value] of Object.entries(raw)) {\n if (typeof value === 'string' || typeof value === 'boolean' || typeof value === 'number') {\n out[toDomAttr(key)] = value;\n }\n }\n return Object.keys(out).length ? out : undefined;\n}\n\nfunction entriesFromMeta(meta: ChartMetadataLike): Record<string, ChartTarget> {\n const kind = meta.id as ChartKind;\n const out: Record<string, ChartTarget> = {};\n for (const chartType of meta.chartTypeKeys ?? []) {\n out[chartType] = {\n kind,\n tag: meta.tag,\n attrs: attrsFromMap(meta.chartTypeMap?.[chartType]),\n };\n }\n return out;\n}\n\nconst REGISTRY: Record<string, ChartTarget> = METADATA.reduce(\n (acc, meta) => Object.assign(acc, entriesFromMeta(meta)),\n {} as Record<string, ChartTarget>,\n);\n\n/** KS / ROC overlays map to step-line `graf-type`. */\nREGISTRY.ksPlotChart = {\n ...REGISTRY.ksPlotChart,\n attrs: { 'graf-type': 'curve' },\n};\nREGISTRY.rocCurveChart = {\n ...REGISTRY.rocCurveChart,\n attrs: { 'graf-type': 'line' },\n};\n\nexport const SUPPORTED_CHART_TYPES = Object.freeze(Object.keys(REGISTRY).sort());\n\nexport function resolveRegistryKey(chartType: string | undefined | null): string | undefined {\n if (!chartType?.trim()) return undefined;\n const trimmed = chartType.trim();\n return CHART_TYPE_ALIASES[trimmed] ?? trimmed;\n}\n\n/** Resolve FuseDash chartType → lazy ChartKind + host tag + optional attrs. */\nexport function resolveChartTarget(chartType: string | undefined | null): ChartTarget | null {\n const key = resolveRegistryKey(chartType);\n if (!key) return null;\n return REGISTRY[key] ?? null;\n}\n\nconst HOST_NOT_READY = new Set(\n METADATA.filter((meta) => meta.usageConditions?.hostReady === false).map((meta) => meta.id),\n);\n\nexport function canRenderChartType(chartType: string | undefined | null): boolean {\n const target = resolveChartTarget(chartType);\n if (!target) return false;\n return !HOST_NOT_READY.has(target.kind);\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmCO,MAAM,qBAAuD;AAAA,EAClE,iBAAiB;AAAA,EACjB,iBAAiB;AAAA,EACjB,oBAAoB;AAAA,EACpB,oBAAoB;AAAA,EACpB,2BAA2B;AAAA,EAC3B,2BAA2B;AAAA,EAC3B,sBAAsB;AAAA,EACtB,sBAAsB;AAAA,EACtB,kBAAkB;AAAA,EAClB,kBAAkB;AAAA,EAClB,QAAQ;AAAA,EACR,mBAAmB;AAAA;AAAA,EAEnB,cAAc;AAAA,EACd,cAAc;AAChB;AAEA,MAAM,WAAgC;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,SAAS,UAAU,UAA0B;AAC3C,SAAO,SAAS,QAAQ,UAAU,CAAC,MAAM,IAAI,EAAE,YAAA,CAAa,EAAE;AAChE;AAEA,SAAS,aAAa,KAA6D;AACjF,MAAI,CAAC,IAAK,QAAO;AACjB,QAAM,MAAwB,CAAA;AAC9B,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,GAAG,GAAG;AAC9C,QAAI,OAAO,UAAU,YAAY,OAAO,UAAU,aAAa,OAAO,UAAU,UAAU;AACxF,UAAI,UAAU,GAAG,CAAC,IAAI;AAAA,IACxB;AAAA,EACF;AACA,SAAO,OAAO,KAAK,GAAG,EAAE,SAAS,MAAM;AACzC;AAEA,SAAS,gBAAgB,MAAsD;;AAC7E,QAAM,OAAO,KAAK;AAClB,QAAM,MAAmC,CAAA;AACzC,aAAW,aAAa,KAAK,iBAAiB,CAAA,GAAI;AAChD,QAAI,SAAS,IAAI;AAAA,MACf;AAAA,MACA,KAAK,KAAK;AAAA,MACV,OAAO,cAAa,UAAK,iBAAL,mBAAoB,UAAU;AAAA,IAAA;AAAA,EAEtD;AACA,SAAO;AACT;AAEA,MAAM,WAAwC,SAAS;AAAA,EACrD,CAAC,KAAK,SAAS,OAAO,OAAO,KAAK,gBAAgB,IAAI,CAAC;AAAA,EACvD,CAAA;AACF;AAGA,SAAS,cAAc;AAAA,EACrB,GAAG,SAAS;AAAA,EACZ,OAAO,EAAE,aAAa,QAAA;AACxB;AACA,SAAS,gBAAgB;AAAA,EACvB,GAAG,SAAS;AAAA,EACZ,OAAO,EAAE,aAAa,OAAA;AACxB;AAEO,MAAM,wBAAwB,OAAO,OAAO,OAAO,KAAK,QAAQ,EAAE,MAAM;AAExE,SAAS,mBAAmB,WAA0D;AAC3F,MAAI,EAAC,uCAAW,QAAQ,QAAO;AAC/B,QAAM,UAAU,UAAU,KAAA;AAC1B,SAAO,mBAAmB,OAAO,KAAK;AACxC;AAGO,SAAS,mBAAmB,WAA0D;AAC3F,QAAM,MAAM,mBAAmB,SAAS;AACxC,MAAI,CAAC,IAAK,QAAO;AACjB,SAAO,SAAS,GAAG,KAAK;AAC1B;AAEA,MAAM,iBAAiB,IAAI;AAAA,EACzB,SAAS,OAAO,CAAC,SAAA;;AAAS,uBAAK,oBAAL,mBAAsB,eAAc;AAAA,GAAK,EAAE,IAAI,CAAC,SAAS,KAAK,EAAE;AAC5F;AAEO,SAAS,mBAAmB,WAA+C;AAChF,QAAM,SAAS,mBAAmB,SAAS;AAC3C,MAAI,CAAC,OAAQ,QAAO;AACpB,SAAO,CAAC,eAAe,IAAI,OAAO,IAAI;AACxC;"}
1
+ {"version":3,"file":"registry.js","sources":["../../../../src/components/chart-renderer/lib/registry.ts"],"sourcesContent":["import type { ChartKind } from '../../../lazy/index.js';\nimport areaChartMeta from '../../area-chart/metadata.json';\nimport areaGroupedBarMeta from '../../area-grouped-bar-chart/metadata.json';\nimport barChartMeta from '../../bar-chart/metadata.json';\nimport biasVarianceTradeoffMeta from '../../bias-variance-tradeoff-chart/metadata.json';\nimport boxPlotMeta from '../../box-plot-chart/metadata.json';\nimport bubbleMeta from '../../bubble-chart/metadata.json';\nimport donutMeta from '../../donut-chart/metadata.json';\nimport giniImpurityEntropyMeta from '../../gini-impurity-entropy-chart/metadata.json';\nimport histogramMeta from '../../histogram-chart/metadata.json';\nimport kpiMeta from '../../kpi-widget/metadata.json';\nimport statusGaugeMeta from '../../status-gauge-widget/metadata.json';\nimport lineMeta from '../../line-chart/metadata.json';\nimport lollipopMeta from '../../lollipop/metadata.json';\nimport mapChartMeta from '../../map-chart/metadata.json';\nimport matrixMeta from '../../matrix-chart/metadata.json';\nimport networkGraphMeta from '../../network-graph/metadata.json';\nimport parallelCoordinatesMeta from '../../parallel-coordinates-chart/metadata.json';\nimport pieMeta from '../../pie-chart/metadata.json';\nimport polarAreaMeta from '../../polar-area-chart/metadata.json';\nimport punchcardMeta from '../../punchcard-chart/metadata.json';\nimport radarMeta from '../../radar-chart/metadata.json';\nimport radialBarMeta from '../../radial-bar-chart/metadata.json';\nimport sankeyMeta from '../../sankey-chart/metadata.json';\nimport scatterPlotMeta from '../../scatter-plot-chart/metadata.json';\nimport scatterSparklineMeta from '../../scatter-sparkline-chart/metadata.json';\nimport sparkAreaMeta from '../../spark-area-chart/metadata.json';\nimport sparkLineMeta from '../../spark-line-chart/metadata.json';\nimport stepLineMeta from '../../step-line-chart/metadata.json';\nimport treemapMeta from '../../treemap-chart/metadata.json';\nimport violinMeta from '../../violin-chart/metadata.json';\nimport waterfallMeta from '../../waterfall-chart/metadata.json';\nimport partialDependenceMeta from '../../partial-dependence-chart/metadata.json';\nimport type { ChartMetadataLike, ChartTarget, ChartTargetAttrs } from './types.js';\n\n/** FuseDash variant / legacy chartType → registry key (mirrors client chartTypeRegistry). */\nexport const CHART_TYPE_ALIASES: Readonly<Record<string, string>> = {\n barGroupedChart: 'barGrouped',\n barStackedChart: 'barStacked',\n cumulativeBarChart: 'cumulativeBar',\n barHorizontalChart: 'barHorizontal',\n barHorizontalGroupedChart: 'barHorizontalGrouped',\n barHorizontalStackedChart: 'barHorizontalStacked',\n lollipopGroupedChart: 'lollipopGroupedChart',\n lollipopStackedChart: 'lollipopStackedChart',\n lineGroupedChart: 'lineGroupedChart',\n areaStackedChart: 'areaStackedChart',\n qqPlot: 'qqPlot',\n radarChartGrouped: 'radarGroupedChart',\n /** Client charts mock / MCP spelling */\n rocPlotChart: 'rocCurveChart',\n UniversalMap: 'mapChart',\n};\n\nconst METADATA: ChartMetadataLike[] = [\n areaChartMeta,\n areaGroupedBarMeta,\n barChartMeta,\n biasVarianceTradeoffMeta,\n boxPlotMeta,\n bubbleMeta,\n donutMeta,\n giniImpurityEntropyMeta,\n histogramMeta,\n kpiMeta,\n statusGaugeMeta,\n lineMeta,\n lollipopMeta,\n mapChartMeta,\n matrixMeta,\n networkGraphMeta,\n parallelCoordinatesMeta,\n pieMeta,\n polarAreaMeta,\n punchcardMeta,\n radarMeta,\n radialBarMeta,\n sankeyMeta,\n scatterPlotMeta,\n scatterSparklineMeta,\n sparkAreaMeta,\n sparkLineMeta,\n stepLineMeta,\n treemapMeta,\n violinMeta,\n waterfallMeta,\n partialDependenceMeta,\n];\n\nfunction toDomAttr(camelKey: string): string {\n return camelKey.replace(/[A-Z]/g, (m) => `-${m.toLowerCase()}`);\n}\n\nfunction attrsFromMap(raw?: Record<string, unknown>): ChartTargetAttrs | undefined {\n if (!raw) return undefined;\n const out: ChartTargetAttrs = {};\n for (const [key, value] of Object.entries(raw)) {\n if (typeof value === 'string' || typeof value === 'boolean' || typeof value === 'number') {\n out[toDomAttr(key)] = value;\n }\n }\n return Object.keys(out).length ? out : undefined;\n}\n\nfunction entriesFromMeta(meta: ChartMetadataLike): Record<string, ChartTarget> {\n const kind = meta.id as ChartKind;\n const out: Record<string, ChartTarget> = {};\n for (const chartType of meta.chartTypeKeys ?? []) {\n out[chartType] = {\n kind,\n tag: meta.tag,\n attrs: attrsFromMap(meta.chartTypeMap?.[chartType]),\n };\n }\n return out;\n}\n\nconst REGISTRY: Record<string, ChartTarget> = METADATA.reduce(\n (acc, meta) => Object.assign(acc, entriesFromMeta(meta)),\n {} as Record<string, ChartTarget>,\n);\n\n/** KS / ROC overlays map to step-line `graf-type`. */\nREGISTRY.ksPlotChart = {\n ...REGISTRY.ksPlotChart,\n attrs: { 'graf-type': 'curve' },\n};\nREGISTRY.rocCurveChart = {\n ...REGISTRY.rocCurveChart,\n attrs: { 'graf-type': 'line' },\n};\n\nexport const SUPPORTED_CHART_TYPES = Object.freeze(Object.keys(REGISTRY).sort());\n\nexport function resolveRegistryKey(chartType: string | undefined | null): string | undefined {\n if (!chartType?.trim()) return undefined;\n const trimmed = chartType.trim();\n return CHART_TYPE_ALIASES[trimmed] ?? trimmed;\n}\n\n/** Resolve FuseDash chartType → lazy ChartKind + host tag + optional attrs. */\nexport function resolveChartTarget(chartType: string | undefined | null): ChartTarget | null {\n const key = resolveRegistryKey(chartType);\n if (!key) return null;\n return REGISTRY[key] ?? null;\n}\n\nconst HOST_NOT_READY = new Set(\n METADATA.filter((meta) => meta.usageConditions?.hostReady === false).map((meta) => meta.id),\n);\n\nexport function canRenderChartType(chartType: string | undefined | null): boolean {\n const target = resolveChartTarget(chartType);\n if (!target) return false;\n return !HOST_NOT_READY.has(target.kind);\n}\n"],"names":[],"mappings":"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"}
@@ -4,9 +4,9 @@ import { styleMap } from "lit/directives/style-map.js";
4
4
  import { Ui9000ChartElement } from "../../../element/ui9000-chart-base.js";
5
5
  import { loadChart } from "../../../lazy/index.js";
6
6
  import { parseJsonAttr } from "../../../utils/chart-helpers.js";
7
- import { customWidgetStyles } from "./styles.js";
8
- import { normalizeCustomWidget } from "../lib/normalize.js";
9
7
  import { paneFlexDirection } from "../lib/layout.js";
8
+ import { normalizeCustomWidget } from "../lib/normalize.js";
9
+ import { customWidgetStyles } from "./styles.js";
10
10
  import { chartShellStyles } from "../../../element/chart-shell-styles.js";
11
11
  var __defProp = Object.defineProperty;
12
12
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -1,8 +1,8 @@
1
1
  import { registerCustomWidget } from "./element/ui9000-custom-widget.js";
2
2
  import { Ui9000CustomWidget } from "./element/ui9000-custom-widget.js";
3
- import { default as default2 } from "./metadata.json.js";
4
3
  import { KPI_ROW_HEIGHT, MAX_PANES, PANE_GAP, paneFlexDirection } from "./lib/layout.js";
5
4
  import { isContentChartType, normalizeCustomWidget } from "./lib/normalize.js";
5
+ import { default as default2 } from "./metadata.json.js";
6
6
  import { normalizeTableModel } from "../table/lib/table.js";
7
7
  export {
8
8
  KPI_ROW_HEIGHT,
@@ -6,7 +6,6 @@ export declare class Ui9000DonutChart extends Ui9000ChartElement {
6
6
  scale: WidgetScale;
7
7
  showLegend: boolean;
8
8
  showTooltip: boolean;
9
- private _tooltip;
10
9
  private _empty;
11
10
  private _legendSlices;
12
11
  private _resizeObserver?;
@@ -1 +1 @@
1
- {"version":3,"file":"ui9000-donut-chart.d.ts","sourceRoot":"","sources":["../../../../src/components/donut-chart/element/ui9000-donut-chart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAGzD,OAAO,EAAoB,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAG7F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAgB3D,qBACa,gBAAiB,SAAQ,kBAAkB;IACtD,OAAgB,MAAM,4BAAwC;IAG9D,KAAK,EAAE,WAAW,CAAa;IAG/B,UAAU,UAAQ;IAGlB,WAAW,UAAQ;IAGnB,OAAO,CAAC,QAAQ,CAKA;IAGhB,OAAO,CAAC,MAAM,CAAS;IAGvB,OAAO,CAAC,aAAa,CAAyB;IAE9C,OAAO,CAAC,eAAe,CAAC,CAAiB;IACzC,OAAO,CAAC,IAAI,CAAK;IAER,iBAAiB,IAAI,IAAI;IAMzB,oBAAoB,IAAI,IAAI;IAM5B,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAI/C,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,YAAY;IAcpB,OAAO,CAAC,IAAI;IAmDH,MAAM;CA0BhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,oBAAoB,EAAE,gBAAgB,CAAC;KACxC;CACF;AAED,wBAAgB,kBAAkB,IAAI,IAAI,CAIzC"}
1
+ {"version":3,"file":"ui9000-donut-chart.d.ts","sourceRoot":"","sources":["../../../../src/components/donut-chart/element/ui9000-donut-chart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAGzD,OAAO,EAAoB,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAG7F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAgB3D,qBACa,gBAAiB,SAAQ,kBAAkB;IACtD,OAAgB,MAAM,4BAAwC;IAG9D,KAAK,EAAE,WAAW,CAAa;IAG/B,UAAU,UAAQ;IAGlB,WAAW,UAAQ;IAGnB,OAAO,CAAC,MAAM,CAAS;IAGvB,OAAO,CAAC,aAAa,CAAyB;IAE9C,OAAO,CAAC,eAAe,CAAC,CAAiB;IACzC,OAAO,CAAC,IAAI,CAAK;IAER,iBAAiB,IAAI,IAAI;IAMzB,oBAAoB,IAAI,IAAI;IAM5B,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAI/C,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,YAAY;IAcpB,OAAO,CAAC,IAAI;IAqDH,MAAM;CAgBhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,oBAAoB,EAAE,gBAAgB,CAAC;KACxC;CACF;AAED,wBAAgB,kBAAkB,IAAI,IAAI,CAIzC"}