@fusedashlabs/widgets 0.2.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (592) hide show
  1. package/CHANGELOG.md +94 -17
  2. package/README.md +24 -26
  3. package/dist/components/area-chart/element/ui9000-area-chart.d.ts +1 -1
  4. package/dist/components/area-grouped-bar-chart/element/ui9000-area-grouped-bar-chart.d.ts +1 -1
  5. package/dist/components/area-grouped-bar-chart/lib/normalize.js +3 -3
  6. package/dist/components/area-grouped-bar-chart/lib/normalize.js.map +1 -1
  7. package/dist/components/bar-chart/element/ui9000-bar-chart.d.ts +1 -1
  8. package/dist/components/bias-variance-tradeoff-chart/element/styles.d.ts +7 -0
  9. package/dist/components/bias-variance-tradeoff-chart/element/styles.d.ts.map +1 -0
  10. package/dist/components/bias-variance-tradeoff-chart/element/styles.js +13 -0
  11. package/dist/components/bias-variance-tradeoff-chart/element/styles.js.map +1 -0
  12. package/dist/components/bias-variance-tradeoff-chart/element/ui9000-bias-variance-tradeoff-chart.d.ts +27 -0
  13. package/dist/components/bias-variance-tradeoff-chart/element/ui9000-bias-variance-tradeoff-chart.d.ts.map +1 -0
  14. package/dist/components/bias-variance-tradeoff-chart/element/ui9000-bias-variance-tradeoff-chart.js +173 -0
  15. package/dist/components/bias-variance-tradeoff-chart/element/ui9000-bias-variance-tradeoff-chart.js.map +1 -0
  16. package/dist/components/bias-variance-tradeoff-chart/index.d.ts +5 -0
  17. package/dist/components/bias-variance-tradeoff-chart/index.d.ts.map +1 -0
  18. package/dist/components/bias-variance-tradeoff-chart/index.js +19 -0
  19. package/dist/components/bias-variance-tradeoff-chart/lib/domain.d.ts +8 -0
  20. package/dist/components/bias-variance-tradeoff-chart/lib/domain.d.ts.map +1 -0
  21. package/dist/components/bias-variance-tradeoff-chart/lib/domain.js +37 -0
  22. package/dist/components/bias-variance-tradeoff-chart/lib/domain.js.map +1 -0
  23. package/dist/components/bias-variance-tradeoff-chart/lib/format.d.ts +3 -0
  24. package/dist/components/bias-variance-tradeoff-chart/lib/format.d.ts.map +1 -0
  25. package/dist/components/bias-variance-tradeoff-chart/lib/format.js +9 -0
  26. package/dist/components/bias-variance-tradeoff-chart/lib/format.js.map +1 -0
  27. package/dist/components/bias-variance-tradeoff-chart/lib/index.d.ts +5 -0
  28. package/dist/components/bias-variance-tradeoff-chart/lib/index.d.ts.map +1 -0
  29. package/dist/components/bias-variance-tradeoff-chart/lib/normalize.d.ts +4 -0
  30. package/dist/components/bias-variance-tradeoff-chart/lib/normalize.d.ts.map +1 -0
  31. package/dist/components/bias-variance-tradeoff-chart/lib/normalize.js +135 -0
  32. package/dist/components/bias-variance-tradeoff-chart/lib/normalize.js.map +1 -0
  33. package/dist/components/bias-variance-tradeoff-chart/lib/types.d.ts +47 -0
  34. package/dist/components/bias-variance-tradeoff-chart/lib/types.d.ts.map +1 -0
  35. package/dist/components/bias-variance-tradeoff-chart/metadata.json.d.ts +41 -0
  36. package/dist/components/bias-variance-tradeoff-chart/metadata.json.js +42 -0
  37. package/dist/components/bias-variance-tradeoff-chart/metadata.json.js.map +1 -0
  38. package/dist/components/bias-variance-tradeoff-chart/render/draw.d.ts +31 -0
  39. package/dist/components/bias-variance-tradeoff-chart/render/draw.d.ts.map +1 -0
  40. package/dist/components/bias-variance-tradeoff-chart/render/draw.js +203 -0
  41. package/dist/components/bias-variance-tradeoff-chart/render/draw.js.map +1 -0
  42. package/dist/components/bias-variance-tradeoff-chart/render/index.d.ts +2 -0
  43. package/dist/components/bias-variance-tradeoff-chart/render/index.d.ts.map +1 -0
  44. package/dist/components/box-plot-chart/element/ui9000-box-plot-chart.d.ts +1 -1
  45. package/dist/components/bubble-chart/element/ui9000-bubble-chart.d.ts +1 -1
  46. package/dist/components/chart-renderer/element/ui9000-chart-renderer.d.ts +1 -0
  47. package/dist/components/chart-renderer/element/ui9000-chart-renderer.d.ts.map +1 -1
  48. package/dist/components/chart-renderer/element/ui9000-chart-renderer.js +12 -1
  49. package/dist/components/chart-renderer/element/ui9000-chart-renderer.js.map +1 -1
  50. package/dist/components/chart-renderer/lib/registry.d.ts.map +1 -1
  51. package/dist/components/chart-renderer/lib/registry.js +29 -4
  52. package/dist/components/chart-renderer/lib/registry.js.map +1 -1
  53. package/dist/components/chart-renderer/lib/types.d.ts +5 -0
  54. package/dist/components/chart-renderer/lib/types.d.ts.map +1 -1
  55. package/dist/components/donut-chart/element/ui9000-donut-chart.d.ts +1 -1
  56. package/dist/components/donut-chart/element/ui9000-donut-chart.js +1 -1
  57. package/dist/components/donut-chart/element/ui9000-donut-chart.js.map +1 -1
  58. package/dist/components/gini-impurity-entropy-chart/element/styles.d.ts +2 -0
  59. package/dist/components/gini-impurity-entropy-chart/element/styles.d.ts.map +1 -0
  60. package/dist/components/{donut-group-chart → gini-impurity-entropy-chart}/element/styles.js +17 -11
  61. package/dist/components/gini-impurity-entropy-chart/element/styles.js.map +1 -0
  62. package/dist/components/gini-impurity-entropy-chart/element/ui9000-gini-impurity-entropy-chart.d.ts +36 -0
  63. package/dist/components/gini-impurity-entropy-chart/element/ui9000-gini-impurity-entropy-chart.d.ts.map +1 -0
  64. package/dist/components/gini-impurity-entropy-chart/element/ui9000-gini-impurity-entropy-chart.js +186 -0
  65. package/dist/components/gini-impurity-entropy-chart/element/ui9000-gini-impurity-entropy-chart.js.map +1 -0
  66. package/dist/components/gini-impurity-entropy-chart/index.d.ts +5 -0
  67. package/dist/components/gini-impurity-entropy-chart/index.d.ts.map +1 -0
  68. package/dist/components/gini-impurity-entropy-chart/index.js +32 -0
  69. package/dist/components/gini-impurity-entropy-chart/index.js.map +1 -0
  70. package/dist/components/gini-impurity-entropy-chart/lib/domain.d.ts +9 -0
  71. package/dist/components/gini-impurity-entropy-chart/lib/domain.d.ts.map +1 -0
  72. package/dist/components/gini-impurity-entropy-chart/lib/domain.js +32 -0
  73. package/dist/components/gini-impurity-entropy-chart/lib/domain.js.map +1 -0
  74. package/dist/components/gini-impurity-entropy-chart/lib/format.d.ts +10 -0
  75. package/dist/components/gini-impurity-entropy-chart/lib/format.d.ts.map +1 -0
  76. package/dist/components/gini-impurity-entropy-chart/lib/format.js +22 -0
  77. package/dist/components/gini-impurity-entropy-chart/lib/format.js.map +1 -0
  78. package/dist/components/gini-impurity-entropy-chart/lib/index.d.ts +7 -0
  79. package/dist/components/gini-impurity-entropy-chart/lib/index.d.ts.map +1 -0
  80. package/dist/components/gini-impurity-entropy-chart/lib/normalize.d.ts +7 -0
  81. package/dist/components/gini-impurity-entropy-chart/lib/normalize.d.ts.map +1 -0
  82. package/dist/components/gini-impurity-entropy-chart/lib/normalize.js +117 -0
  83. package/dist/components/gini-impurity-entropy-chart/lib/normalize.js.map +1 -0
  84. package/dist/components/gini-impurity-entropy-chart/lib/overlays.d.ts +19 -0
  85. package/dist/components/gini-impurity-entropy-chart/lib/overlays.d.ts.map +1 -0
  86. package/dist/components/gini-impurity-entropy-chart/lib/overlays.js +63 -0
  87. package/dist/components/gini-impurity-entropy-chart/lib/overlays.js.map +1 -0
  88. package/dist/components/gini-impurity-entropy-chart/lib/series.d.ts +12 -0
  89. package/dist/components/gini-impurity-entropy-chart/lib/series.d.ts.map +1 -0
  90. package/dist/components/gini-impurity-entropy-chart/lib/series.js +45 -0
  91. package/dist/components/gini-impurity-entropy-chart/lib/series.js.map +1 -0
  92. package/dist/components/gini-impurity-entropy-chart/lib/types.d.ts +83 -0
  93. package/dist/components/gini-impurity-entropy-chart/lib/types.d.ts.map +1 -0
  94. package/dist/components/gini-impurity-entropy-chart/lib/types.js +19 -0
  95. package/dist/components/gini-impurity-entropy-chart/lib/types.js.map +1 -0
  96. package/dist/components/gini-impurity-entropy-chart/metadata.json.d.ts +115 -0
  97. package/dist/components/gini-impurity-entropy-chart/metadata.json.js +42 -0
  98. package/dist/components/gini-impurity-entropy-chart/metadata.json.js.map +1 -0
  99. package/dist/components/gini-impurity-entropy-chart/render/draw.d.ts +40 -0
  100. package/dist/components/gini-impurity-entropy-chart/render/draw.d.ts.map +1 -0
  101. package/dist/components/gini-impurity-entropy-chart/render/draw.js +160 -0
  102. package/dist/components/gini-impurity-entropy-chart/render/draw.js.map +1 -0
  103. package/dist/components/gini-impurity-entropy-chart/render/index.d.ts +2 -0
  104. package/dist/components/gini-impurity-entropy-chart/render/index.d.ts.map +1 -0
  105. package/dist/components/histogram-chart/element/ui9000-histogram-chart.d.ts +1 -1
  106. package/dist/components/kpi-widget/element/ui9000-kpi-widget.d.ts +1 -1
  107. package/dist/components/kpi-widget/element/ui9000-kpi-widget.js +1 -1
  108. package/dist/components/line-chart/element/ui9000-line-chart.d.ts +1 -1
  109. package/dist/components/lollipop/element/styles.d.ts.map +1 -1
  110. package/dist/components/lollipop/element/styles.js +19 -1
  111. package/dist/components/lollipop/element/styles.js.map +1 -1
  112. package/dist/components/lollipop/element/ui9000-lollipop.d.ts +7 -2
  113. package/dist/components/lollipop/element/ui9000-lollipop.d.ts.map +1 -1
  114. package/dist/components/lollipop/element/ui9000-lollipop.js +68 -7
  115. package/dist/components/lollipop/element/ui9000-lollipop.js.map +1 -1
  116. package/dist/components/lollipop/index.d.ts +1 -1
  117. package/dist/components/lollipop/index.d.ts.map +1 -1
  118. package/dist/components/lollipop/index.js +2 -0
  119. package/dist/components/lollipop/index.js.map +1 -1
  120. package/dist/components/lollipop/lib/domain.d.ts +16 -1
  121. package/dist/components/lollipop/lib/domain.d.ts.map +1 -1
  122. package/dist/components/lollipop/lib/domain.js +56 -1
  123. package/dist/components/lollipop/lib/domain.js.map +1 -1
  124. package/dist/components/lollipop/lib/index.d.ts +3 -2
  125. package/dist/components/lollipop/lib/index.d.ts.map +1 -1
  126. package/dist/components/lollipop/lib/layout.d.ts +16 -0
  127. package/dist/components/lollipop/lib/layout.d.ts.map +1 -0
  128. package/dist/components/lollipop/lib/layout.js +16 -0
  129. package/dist/components/lollipop/lib/layout.js.map +1 -0
  130. package/dist/components/lollipop/lib/types.d.ts +5 -0
  131. package/dist/components/lollipop/lib/types.d.ts.map +1 -1
  132. package/dist/components/lollipop/metadata.json.d.ts +10 -0
  133. package/dist/components/lollipop/metadata.json.js +4 -1
  134. package/dist/components/lollipop/metadata.json.js.map +1 -1
  135. package/dist/components/lollipop/render/draw.d.ts +8 -1
  136. package/dist/components/lollipop/render/draw.d.ts.map +1 -1
  137. package/dist/components/lollipop/render/draw.js +155 -84
  138. package/dist/components/lollipop/render/draw.js.map +1 -1
  139. package/dist/components/map-chart/element/styles.d.ts +2 -0
  140. package/dist/components/map-chart/element/styles.d.ts.map +1 -0
  141. package/dist/components/map-chart/element/styles.js +372 -0
  142. package/dist/components/map-chart/element/styles.js.map +1 -0
  143. package/dist/components/map-chart/element/ui9000-map-chart.d.ts +54 -0
  144. package/dist/components/map-chart/element/ui9000-map-chart.d.ts.map +1 -0
  145. package/dist/components/map-chart/element/ui9000-map-chart.js +539 -0
  146. package/dist/components/map-chart/element/ui9000-map-chart.js.map +1 -0
  147. package/dist/components/map-chart/index.d.ts +5 -0
  148. package/dist/components/map-chart/index.d.ts.map +1 -0
  149. package/dist/components/map-chart/index.js +29 -0
  150. package/dist/components/map-chart/index.js.map +1 -0
  151. package/dist/components/map-chart/lib/constants.d.ts +34 -0
  152. package/dist/components/map-chart/lib/constants.d.ts.map +1 -0
  153. package/dist/components/map-chart/lib/constants.js +122 -0
  154. package/dist/components/map-chart/lib/constants.js.map +1 -0
  155. package/dist/components/map-chart/lib/domain.d.ts +12 -0
  156. package/dist/components/map-chart/lib/domain.d.ts.map +1 -0
  157. package/dist/components/map-chart/lib/domain.js +105 -0
  158. package/dist/components/map-chart/lib/domain.js.map +1 -0
  159. package/dist/components/map-chart/lib/format.d.ts +8 -0
  160. package/dist/components/map-chart/lib/format.d.ts.map +1 -0
  161. package/dist/components/map-chart/lib/format.js +45 -0
  162. package/dist/components/map-chart/lib/format.js.map +1 -0
  163. package/dist/components/map-chart/lib/geo-index.d.ts +7 -0
  164. package/dist/components/map-chart/lib/geo-index.d.ts.map +1 -0
  165. package/dist/components/map-chart/lib/geo-index.js +200 -0
  166. package/dist/components/map-chart/lib/geo-index.js.map +1 -0
  167. package/dist/components/map-chart/lib/geojson.d.ts +5 -0
  168. package/dist/components/map-chart/lib/geojson.d.ts.map +1 -0
  169. package/dist/components/map-chart/lib/geojson.js +47 -0
  170. package/dist/components/map-chart/lib/geojson.js.map +1 -0
  171. package/dist/components/map-chart/lib/index.d.ts +13 -0
  172. package/dist/components/map-chart/lib/index.d.ts.map +1 -0
  173. package/dist/components/map-chart/lib/join.d.ts +7 -0
  174. package/dist/components/map-chart/lib/join.d.ts.map +1 -0
  175. package/dist/components/map-chart/lib/join.js +156 -0
  176. package/dist/components/map-chart/lib/join.js.map +1 -0
  177. package/dist/components/map-chart/lib/legend.d.ts +45 -0
  178. package/dist/components/map-chart/lib/legend.d.ts.map +1 -0
  179. package/dist/components/map-chart/lib/legend.js +108 -0
  180. package/dist/components/map-chart/lib/legend.js.map +1 -0
  181. package/dist/components/map-chart/lib/normalize.d.ts +3 -0
  182. package/dist/components/map-chart/lib/normalize.d.ts.map +1 -0
  183. package/dist/components/map-chart/lib/normalize.js +177 -0
  184. package/dist/components/map-chart/lib/normalize.js.map +1 -0
  185. package/dist/components/map-chart/lib/pmtiles.d.ts +41 -0
  186. package/dist/components/map-chart/lib/pmtiles.d.ts.map +1 -0
  187. package/dist/components/map-chart/lib/pmtiles.js +112 -0
  188. package/dist/components/map-chart/lib/pmtiles.js.map +1 -0
  189. package/dist/components/map-chart/lib/types.d.ts +128 -0
  190. package/dist/components/map-chart/lib/types.d.ts.map +1 -0
  191. package/dist/components/map-chart/metadata.json.d.ts +83 -0
  192. package/dist/components/map-chart/metadata.json.js +42 -0
  193. package/dist/components/map-chart/metadata.json.js.map +1 -0
  194. package/dist/components/map-chart/render/draw.d.ts +24 -0
  195. package/dist/components/map-chart/render/draw.d.ts.map +1 -0
  196. package/dist/components/map-chart/render/draw.js +455 -0
  197. package/dist/components/map-chart/render/draw.js.map +1 -0
  198. package/dist/components/map-chart/render/index.d.ts +2 -0
  199. package/dist/components/map-chart/render/index.d.ts.map +1 -0
  200. package/dist/components/matrix-chart/element/styles.d.ts +2 -0
  201. package/dist/components/matrix-chart/element/styles.d.ts.map +1 -0
  202. package/dist/components/matrix-chart/element/styles.js +97 -0
  203. package/dist/components/matrix-chart/element/styles.js.map +1 -0
  204. package/dist/components/matrix-chart/element/ui9000-matrix-chart.d.ts +39 -0
  205. package/dist/components/matrix-chart/element/ui9000-matrix-chart.d.ts.map +1 -0
  206. package/dist/components/matrix-chart/element/ui9000-matrix-chart.js +238 -0
  207. package/dist/components/matrix-chart/element/ui9000-matrix-chart.js.map +1 -0
  208. package/dist/components/matrix-chart/index.d.ts +5 -0
  209. package/dist/components/matrix-chart/index.d.ts.map +1 -0
  210. package/dist/components/matrix-chart/index.js +20 -0
  211. package/dist/components/matrix-chart/index.js.map +1 -0
  212. package/dist/components/matrix-chart/lib/domain.d.ts +7 -0
  213. package/dist/components/matrix-chart/lib/domain.d.ts.map +1 -0
  214. package/dist/components/matrix-chart/lib/domain.js +58 -0
  215. package/dist/components/matrix-chart/lib/domain.js.map +1 -0
  216. package/dist/components/matrix-chart/lib/format.d.ts +5 -0
  217. package/dist/components/matrix-chart/lib/format.d.ts.map +1 -0
  218. package/dist/components/matrix-chart/lib/format.js +16 -0
  219. package/dist/components/matrix-chart/lib/format.js.map +1 -0
  220. package/dist/components/matrix-chart/lib/index.d.ts +5 -0
  221. package/dist/components/matrix-chart/lib/index.d.ts.map +1 -0
  222. package/dist/components/matrix-chart/lib/normalize.d.ts +5 -0
  223. package/dist/components/matrix-chart/lib/normalize.d.ts.map +1 -0
  224. package/dist/components/matrix-chart/lib/normalize.js +165 -0
  225. package/dist/components/matrix-chart/lib/normalize.js.map +1 -0
  226. package/dist/components/matrix-chart/lib/types.d.ts +33 -0
  227. package/dist/components/matrix-chart/lib/types.d.ts.map +1 -0
  228. package/dist/components/matrix-chart/metadata.json.d.ts +110 -0
  229. package/dist/components/matrix-chart/metadata.json.js +42 -0
  230. package/dist/components/matrix-chart/metadata.json.js.map +1 -0
  231. package/dist/components/matrix-chart/render/draw.d.ts +63 -0
  232. package/dist/components/matrix-chart/render/draw.d.ts.map +1 -0
  233. package/dist/components/matrix-chart/render/draw.js +225 -0
  234. package/dist/components/matrix-chart/render/draw.js.map +1 -0
  235. package/dist/components/matrix-chart/render/index.d.ts +2 -0
  236. package/dist/components/matrix-chart/render/index.d.ts.map +1 -0
  237. package/dist/components/network-graph/element/styles.d.ts +2 -0
  238. package/dist/components/network-graph/element/styles.d.ts.map +1 -0
  239. package/dist/components/network-graph/element/styles.js +272 -0
  240. package/dist/components/network-graph/element/styles.js.map +1 -0
  241. package/dist/components/network-graph/element/ui9000-network-graph.d.ts +47 -0
  242. package/dist/components/network-graph/element/ui9000-network-graph.d.ts.map +1 -0
  243. package/dist/components/network-graph/element/ui9000-network-graph.js +307 -0
  244. package/dist/components/network-graph/element/ui9000-network-graph.js.map +1 -0
  245. package/dist/components/network-graph/index.d.ts +5 -0
  246. package/dist/components/network-graph/index.d.ts.map +1 -0
  247. package/dist/components/network-graph/index.js +37 -0
  248. package/dist/components/network-graph/index.js.map +1 -0
  249. package/dist/components/network-graph/lib/domain.d.ts +96 -0
  250. package/dist/components/network-graph/lib/domain.d.ts.map +1 -0
  251. package/dist/components/network-graph/lib/domain.js +211 -0
  252. package/dist/components/network-graph/lib/domain.js.map +1 -0
  253. package/dist/components/network-graph/lib/format.d.ts +7 -0
  254. package/dist/components/network-graph/lib/format.d.ts.map +1 -0
  255. package/dist/components/network-graph/lib/format.js +29 -0
  256. package/dist/components/network-graph/lib/format.js.map +1 -0
  257. package/dist/components/network-graph/lib/index.d.ts +6 -0
  258. package/dist/components/network-graph/lib/index.d.ts.map +1 -0
  259. package/dist/components/network-graph/lib/legend.d.ts +15 -0
  260. package/dist/components/network-graph/lib/legend.d.ts.map +1 -0
  261. package/dist/components/network-graph/lib/legend.js +35 -0
  262. package/dist/components/network-graph/lib/legend.js.map +1 -0
  263. package/dist/components/network-graph/lib/normalize.d.ts +10 -0
  264. package/dist/components/network-graph/lib/normalize.d.ts.map +1 -0
  265. package/dist/components/network-graph/lib/normalize.js +140 -0
  266. package/dist/components/network-graph/lib/normalize.js.map +1 -0
  267. package/dist/components/network-graph/lib/types.d.ts +56 -0
  268. package/dist/components/network-graph/lib/types.d.ts.map +1 -0
  269. package/dist/components/network-graph/metadata.json.d.ts +91 -0
  270. package/dist/components/network-graph/metadata.json.js +42 -0
  271. package/dist/components/network-graph/metadata.json.js.map +1 -0
  272. package/dist/components/network-graph/render/draw.d.ts +49 -0
  273. package/dist/components/network-graph/render/draw.d.ts.map +1 -0
  274. package/dist/components/network-graph/render/draw.js +493 -0
  275. package/dist/components/network-graph/render/draw.js.map +1 -0
  276. package/dist/components/network-graph/render/index.d.ts +2 -0
  277. package/dist/components/network-graph/render/index.d.ts.map +1 -0
  278. package/dist/components/parallel-coordinates-chart/element/styles.d.ts +2 -0
  279. package/dist/components/parallel-coordinates-chart/element/styles.d.ts.map +1 -0
  280. package/dist/components/parallel-coordinates-chart/element/styles.js +71 -0
  281. package/dist/components/parallel-coordinates-chart/element/styles.js.map +1 -0
  282. package/dist/components/parallel-coordinates-chart/element/ui9000-parallel-coordinates-chart.d.ts +33 -0
  283. package/dist/components/parallel-coordinates-chart/element/ui9000-parallel-coordinates-chart.d.ts.map +1 -0
  284. package/dist/components/parallel-coordinates-chart/element/ui9000-parallel-coordinates-chart.js +182 -0
  285. package/dist/components/parallel-coordinates-chart/element/ui9000-parallel-coordinates-chart.js.map +1 -0
  286. package/dist/components/parallel-coordinates-chart/index.d.ts +5 -0
  287. package/dist/components/parallel-coordinates-chart/index.d.ts.map +1 -0
  288. package/dist/components/parallel-coordinates-chart/index.js +23 -0
  289. package/dist/components/parallel-coordinates-chart/index.js.map +1 -0
  290. package/dist/components/parallel-coordinates-chart/lib/domain.d.ts +14 -0
  291. package/dist/components/parallel-coordinates-chart/lib/domain.d.ts.map +1 -0
  292. package/dist/components/parallel-coordinates-chart/lib/domain.js +28 -0
  293. package/dist/components/parallel-coordinates-chart/lib/domain.js.map +1 -0
  294. package/dist/components/parallel-coordinates-chart/lib/format.d.ts +12 -0
  295. package/dist/components/parallel-coordinates-chart/lib/format.d.ts.map +1 -0
  296. package/dist/components/parallel-coordinates-chart/lib/format.js +18 -0
  297. package/dist/components/parallel-coordinates-chart/lib/format.js.map +1 -0
  298. package/dist/components/parallel-coordinates-chart/lib/index.d.ts +5 -0
  299. package/dist/components/parallel-coordinates-chart/lib/index.d.ts.map +1 -0
  300. package/dist/components/parallel-coordinates-chart/lib/normalize.d.ts +23 -0
  301. package/dist/components/parallel-coordinates-chart/lib/normalize.d.ts.map +1 -0
  302. package/dist/components/parallel-coordinates-chart/lib/normalize.js +156 -0
  303. package/dist/components/parallel-coordinates-chart/lib/normalize.js.map +1 -0
  304. package/dist/components/parallel-coordinates-chart/lib/types.d.ts +48 -0
  305. package/dist/components/parallel-coordinates-chart/lib/types.d.ts.map +1 -0
  306. package/dist/components/parallel-coordinates-chart/metadata.json.d.ts +103 -0
  307. package/dist/components/parallel-coordinates-chart/metadata.json.js +45 -0
  308. package/dist/components/parallel-coordinates-chart/render/draw.d.ts +30 -0
  309. package/dist/components/parallel-coordinates-chart/render/draw.d.ts.map +1 -0
  310. package/dist/components/parallel-coordinates-chart/render/draw.js +160 -0
  311. package/dist/components/parallel-coordinates-chart/render/draw.js.map +1 -0
  312. package/dist/components/parallel-coordinates-chart/render/index.d.ts +2 -0
  313. package/dist/components/parallel-coordinates-chart/render/index.d.ts.map +1 -0
  314. package/dist/components/pie-chart/element/styles.d.ts.map +1 -1
  315. package/dist/components/pie-chart/element/styles.js +34 -1
  316. package/dist/components/pie-chart/element/styles.js.map +1 -1
  317. package/dist/components/pie-chart/element/ui9000-pie-chart.d.ts +1 -3
  318. package/dist/components/pie-chart/element/ui9000-pie-chart.d.ts.map +1 -1
  319. package/dist/components/pie-chart/element/ui9000-pie-chart.js +2 -8
  320. package/dist/components/pie-chart/element/ui9000-pie-chart.js.map +1 -1
  321. package/dist/components/pie-chart/metadata.json.d.ts +1 -7
  322. package/dist/components/pie-chart/metadata.json.js +2 -2
  323. package/dist/components/polar-area-chart/element/styles.d.ts +2 -0
  324. package/dist/components/polar-area-chart/element/styles.d.ts.map +1 -0
  325. package/dist/components/polar-area-chart/element/styles.js +48 -0
  326. package/dist/components/polar-area-chart/element/styles.js.map +1 -0
  327. package/dist/components/polar-area-chart/element/ui9000-polar-area-chart.d.ts +29 -0
  328. package/dist/components/polar-area-chart/element/ui9000-polar-area-chart.d.ts.map +1 -0
  329. package/dist/components/polar-area-chart/element/ui9000-polar-area-chart.js +168 -0
  330. package/dist/components/polar-area-chart/element/ui9000-polar-area-chart.js.map +1 -0
  331. package/dist/components/polar-area-chart/index.d.ts +5 -0
  332. package/dist/components/polar-area-chart/index.d.ts.map +1 -0
  333. package/dist/components/polar-area-chart/index.js +19 -0
  334. package/dist/components/polar-area-chart/index.js.map +1 -0
  335. package/dist/components/polar-area-chart/lib/domain.d.ts +33 -0
  336. package/dist/components/polar-area-chart/lib/domain.d.ts.map +1 -0
  337. package/dist/components/polar-area-chart/lib/domain.js +67 -0
  338. package/dist/components/polar-area-chart/lib/domain.js.map +1 -0
  339. package/dist/components/polar-area-chart/lib/index.d.ts +4 -0
  340. package/dist/components/polar-area-chart/lib/index.d.ts.map +1 -0
  341. package/dist/components/polar-area-chart/lib/normalize.d.ts +4 -0
  342. package/dist/components/polar-area-chart/lib/normalize.d.ts.map +1 -0
  343. package/dist/components/polar-area-chart/lib/normalize.js +183 -0
  344. package/dist/components/polar-area-chart/lib/normalize.js.map +1 -0
  345. package/dist/components/polar-area-chart/lib/types.d.ts +48 -0
  346. package/dist/components/polar-area-chart/lib/types.d.ts.map +1 -0
  347. package/dist/components/polar-area-chart/metadata.json.d.ts +79 -0
  348. package/dist/components/polar-area-chart/metadata.json.js +42 -0
  349. package/dist/components/polar-area-chart/metadata.json.js.map +1 -0
  350. package/dist/components/polar-area-chart/render/draw.d.ts +25 -0
  351. package/dist/components/polar-area-chart/render/draw.d.ts.map +1 -0
  352. package/dist/components/polar-area-chart/render/draw.js +127 -0
  353. package/dist/components/polar-area-chart/render/draw.js.map +1 -0
  354. package/dist/components/polar-area-chart/render/index.d.ts +2 -0
  355. package/dist/components/polar-area-chart/render/index.d.ts.map +1 -0
  356. package/dist/components/punchcard-chart/element/ui9000-punchcard-chart.d.ts +1 -1
  357. package/dist/components/punchcard-chart/metadata.json.d.ts +1 -1
  358. package/dist/components/punchcard-chart/metadata.json.js +1 -1
  359. package/dist/components/radar-chart/element/ui9000-radar-chart.d.ts +1 -1
  360. package/dist/components/radial-bar-chart/element/styles.d.ts +2 -0
  361. package/dist/components/radial-bar-chart/element/styles.d.ts.map +1 -0
  362. package/dist/components/radial-bar-chart/element/styles.js +53 -0
  363. package/dist/components/radial-bar-chart/element/styles.js.map +1 -0
  364. package/dist/components/radial-bar-chart/element/ui9000-radial-bar-chart.d.ts +35 -0
  365. package/dist/components/radial-bar-chart/element/ui9000-radial-bar-chart.d.ts.map +1 -0
  366. package/dist/components/radial-bar-chart/element/ui9000-radial-bar-chart.js +174 -0
  367. package/dist/components/radial-bar-chart/element/ui9000-radial-bar-chart.js.map +1 -0
  368. package/dist/components/radial-bar-chart/index.d.ts +5 -0
  369. package/dist/components/radial-bar-chart/index.d.ts.map +1 -0
  370. package/dist/components/radial-bar-chart/index.js +21 -0
  371. package/dist/components/radial-bar-chart/index.js.map +1 -0
  372. package/dist/components/radial-bar-chart/lib/domain.d.ts +47 -0
  373. package/dist/components/radial-bar-chart/lib/domain.d.ts.map +1 -0
  374. package/dist/components/radial-bar-chart/lib/domain.js +50 -0
  375. package/dist/components/radial-bar-chart/lib/domain.js.map +1 -0
  376. package/dist/components/radial-bar-chart/lib/format.d.ts +6 -0
  377. package/dist/components/radial-bar-chart/lib/format.d.ts.map +1 -0
  378. package/dist/components/radial-bar-chart/lib/format.js +12 -0
  379. package/dist/components/radial-bar-chart/lib/format.js.map +1 -0
  380. package/dist/components/radial-bar-chart/lib/index.d.ts +5 -0
  381. package/dist/components/radial-bar-chart/lib/index.d.ts.map +1 -0
  382. package/dist/components/radial-bar-chart/lib/normalize.d.ts +4 -0
  383. package/dist/components/radial-bar-chart/lib/normalize.d.ts.map +1 -0
  384. package/dist/components/radial-bar-chart/lib/normalize.js +92 -0
  385. package/dist/components/radial-bar-chart/lib/normalize.js.map +1 -0
  386. package/dist/components/radial-bar-chart/lib/types.d.ts +34 -0
  387. package/dist/components/radial-bar-chart/lib/types.d.ts.map +1 -0
  388. package/dist/components/radial-bar-chart/metadata.json.d.ts +62 -0
  389. package/dist/components/radial-bar-chart/metadata.json.js +42 -0
  390. package/dist/components/radial-bar-chart/metadata.json.js.map +1 -0
  391. package/dist/components/radial-bar-chart/render/draw.d.ts +29 -0
  392. package/dist/components/radial-bar-chart/render/draw.d.ts.map +1 -0
  393. package/dist/components/radial-bar-chart/render/draw.js +92 -0
  394. package/dist/components/radial-bar-chart/render/draw.js.map +1 -0
  395. package/dist/components/radial-bar-chart/render/index.d.ts +2 -0
  396. package/dist/components/radial-bar-chart/render/index.d.ts.map +1 -0
  397. package/dist/components/sankey-chart/element/styles.d.ts.map +1 -1
  398. package/dist/components/sankey-chart/element/styles.js +7 -27
  399. package/dist/components/sankey-chart/element/styles.js.map +1 -1
  400. package/dist/components/sankey-chart/element/ui9000-sankey-chart.d.ts +6 -6
  401. package/dist/components/sankey-chart/element/ui9000-sankey-chart.d.ts.map +1 -1
  402. package/dist/components/sankey-chart/element/ui9000-sankey-chart.js +39 -36
  403. package/dist/components/sankey-chart/element/ui9000-sankey-chart.js.map +1 -1
  404. package/dist/components/sankey-chart/index.js +4 -2
  405. package/dist/components/sankey-chart/index.js.map +1 -1
  406. package/dist/components/sankey-chart/lib/domain.d.ts +2 -2
  407. package/dist/components/sankey-chart/lib/domain.d.ts.map +1 -1
  408. package/dist/components/sankey-chart/lib/domain.js +1 -13
  409. package/dist/components/sankey-chart/lib/domain.js.map +1 -1
  410. package/dist/components/sankey-chart/lib/format.d.ts +1 -2
  411. package/dist/components/sankey-chart/lib/format.d.ts.map +1 -1
  412. package/dist/components/sankey-chart/lib/format.js +3 -7
  413. package/dist/components/sankey-chart/lib/format.js.map +1 -1
  414. package/dist/components/scatter-plot-chart/element/ui9000-scatter-plot.d.ts +1 -1
  415. package/dist/components/scatter-sparkline-chart/element/ui9000-scatter-sparkline-chart.d.ts +1 -1
  416. package/dist/components/spark-area-chart/element/ui9000-spark-area-chart.d.ts +1 -1
  417. package/dist/components/spark-line-chart/element/ui9000-spark-line-chart.d.ts +1 -1
  418. package/dist/components/step-line-chart/element/ui9000-step-line-chart.d.ts +1 -1
  419. package/dist/components/treemap-chart/element/styles.d.ts +2 -0
  420. package/dist/components/treemap-chart/element/styles.d.ts.map +1 -0
  421. package/dist/components/treemap-chart/element/styles.js +141 -0
  422. package/dist/components/treemap-chart/element/styles.js.map +1 -0
  423. package/dist/components/treemap-chart/element/ui9000-treemap-chart.d.ts +35 -0
  424. package/dist/components/treemap-chart/element/ui9000-treemap-chart.d.ts.map +1 -0
  425. package/dist/components/treemap-chart/element/ui9000-treemap-chart.js +177 -0
  426. package/dist/components/treemap-chart/element/ui9000-treemap-chart.js.map +1 -0
  427. package/dist/components/treemap-chart/index.d.ts +5 -0
  428. package/dist/components/treemap-chart/index.d.ts.map +1 -0
  429. package/dist/components/treemap-chart/index.js +22 -0
  430. package/dist/components/treemap-chart/index.js.map +1 -0
  431. package/dist/components/treemap-chart/lib/color.d.ts +25 -0
  432. package/dist/components/treemap-chart/lib/color.d.ts.map +1 -0
  433. package/dist/components/treemap-chart/lib/color.js +67 -0
  434. package/dist/components/treemap-chart/lib/color.js.map +1 -0
  435. package/dist/components/treemap-chart/lib/format.d.ts +7 -0
  436. package/dist/components/treemap-chart/lib/format.d.ts.map +1 -0
  437. package/dist/components/treemap-chart/lib/format.js +9 -0
  438. package/dist/components/treemap-chart/lib/format.js.map +1 -0
  439. package/dist/components/treemap-chart/lib/index.d.ts +6 -0
  440. package/dist/components/treemap-chart/lib/index.d.ts.map +1 -0
  441. package/dist/components/treemap-chart/lib/layout.d.ts +18 -0
  442. package/dist/components/treemap-chart/lib/layout.d.ts.map +1 -0
  443. package/dist/components/treemap-chart/lib/layout.js +31 -0
  444. package/dist/components/treemap-chart/lib/layout.js.map +1 -0
  445. package/dist/components/treemap-chart/lib/normalize.d.ts +4 -0
  446. package/dist/components/treemap-chart/lib/normalize.d.ts.map +1 -0
  447. package/dist/components/treemap-chart/lib/normalize.js +182 -0
  448. package/dist/components/treemap-chart/lib/normalize.js.map +1 -0
  449. package/dist/components/treemap-chart/lib/types.d.ts +63 -0
  450. package/dist/components/treemap-chart/lib/types.d.ts.map +1 -0
  451. package/dist/components/treemap-chart/metadata.json.d.ts +126 -0
  452. package/dist/components/treemap-chart/metadata.json.js +45 -0
  453. package/dist/components/treemap-chart/metadata.json.js.map +1 -0
  454. package/dist/components/treemap-chart/render/draw.d.ts +24 -0
  455. package/dist/components/treemap-chart/render/draw.d.ts.map +1 -0
  456. package/dist/components/treemap-chart/render/draw.js +124 -0
  457. package/dist/components/treemap-chart/render/draw.js.map +1 -0
  458. package/dist/components/treemap-chart/render/index.d.ts +2 -0
  459. package/dist/components/treemap-chart/render/index.d.ts.map +1 -0
  460. package/dist/components/violin-chart/element/ui9000-violin-chart.d.ts +1 -1
  461. package/dist/components/waterfall-chart/element/ui9000-waterfall-chart.d.ts +1 -1
  462. package/dist/element/chart-legend-render.d.ts +5 -0
  463. package/dist/element/chart-legend-render.d.ts.map +1 -1
  464. package/dist/element/chart-legend-render.js +19 -1
  465. package/dist/element/chart-legend-render.js.map +1 -1
  466. package/dist/element/chart-shell-styles.d.ts.map +1 -1
  467. package/dist/element/chart-shell-styles.js +35 -0
  468. package/dist/element/chart-shell-styles.js.map +1 -1
  469. package/dist/element/ui9000-chart-base.d.ts +2 -2
  470. package/dist/index.d.ts +20 -4
  471. package/dist/index.d.ts.map +1 -1
  472. package/dist/index.js +178 -47
  473. package/dist/index.js.map +1 -1
  474. package/dist/lazy/bias-variance-tradeoff-chart.d.ts +4 -0
  475. package/dist/lazy/bias-variance-tradeoff-chart.d.ts.map +1 -0
  476. package/dist/lazy/bias-variance-tradeoff-chart.js +5 -0
  477. package/dist/lazy/bias-variance-tradeoff-chart.js.map +1 -0
  478. package/dist/lazy/gini-impurity-entropy-chart.d.ts +4 -0
  479. package/dist/lazy/gini-impurity-entropy-chart.d.ts.map +1 -0
  480. package/dist/lazy/gini-impurity-entropy-chart.js +5 -0
  481. package/dist/lazy/gini-impurity-entropy-chart.js.map +1 -0
  482. package/dist/lazy/index.d.ts +10 -2
  483. package/dist/lazy/index.d.ts.map +1 -1
  484. package/dist/lazy/index.js +72 -8
  485. package/dist/lazy/index.js.map +1 -1
  486. package/dist/lazy/map-chart.d.ts +4 -0
  487. package/dist/lazy/map-chart.d.ts.map +1 -0
  488. package/dist/lazy/map-chart.js +5 -0
  489. package/dist/lazy/map-chart.js.map +1 -0
  490. package/dist/lazy/matrix-chart.d.ts +4 -0
  491. package/dist/lazy/matrix-chart.d.ts.map +1 -0
  492. package/dist/lazy/matrix-chart.js +5 -0
  493. package/dist/lazy/matrix-chart.js.map +1 -0
  494. package/dist/lazy/network-graph.d.ts +4 -0
  495. package/dist/lazy/network-graph.d.ts.map +1 -0
  496. package/dist/lazy/network-graph.js +5 -0
  497. package/dist/lazy/network-graph.js.map +1 -0
  498. package/dist/lazy/parallel-coordinates-chart.d.ts +4 -0
  499. package/dist/lazy/parallel-coordinates-chart.d.ts.map +1 -0
  500. package/dist/lazy/parallel-coordinates-chart.js +5 -0
  501. package/dist/lazy/parallel-coordinates-chart.js.map +1 -0
  502. package/dist/lazy/polar-area-chart.d.ts +4 -0
  503. package/dist/lazy/polar-area-chart.d.ts.map +1 -0
  504. package/dist/lazy/polar-area-chart.js +5 -0
  505. package/dist/lazy/polar-area-chart.js.map +1 -0
  506. package/dist/lazy/radial-bar-chart.d.ts +4 -0
  507. package/dist/lazy/radial-bar-chart.d.ts.map +1 -0
  508. package/dist/lazy/radial-bar-chart.js +5 -0
  509. package/dist/lazy/radial-bar-chart.js.map +1 -0
  510. package/dist/lazy/treemap-chart.d.ts +4 -0
  511. package/dist/lazy/treemap-chart.d.ts.map +1 -0
  512. package/dist/lazy/treemap-chart.js +5 -0
  513. package/dist/lazy/treemap-chart.js.map +1 -0
  514. package/dist/node_modules/lit-html/directive.js.map +1 -0
  515. package/dist/node_modules/lit-html/directives/style-map.js.map +1 -0
  516. package/dist/node_modules/lit-html/lit-html.js.map +1 -0
  517. package/dist/utils/axis-units.d.ts +15 -0
  518. package/dist/utils/axis-units.d.ts.map +1 -0
  519. package/dist/utils/axis-units.js +27 -0
  520. package/dist/utils/axis-units.js.map +1 -0
  521. package/dist/utils/breakpoints.d.ts +7 -0
  522. package/dist/utils/breakpoints.d.ts.map +1 -0
  523. package/dist/utils/breakpoints.js +17 -0
  524. package/dist/utils/breakpoints.js.map +1 -0
  525. package/dist/utils/chart-helpers.d.ts +25 -6
  526. package/dist/utils/chart-helpers.d.ts.map +1 -1
  527. package/dist/utils/chart-helpers.js +70 -15
  528. package/dist/utils/chart-helpers.js.map +1 -1
  529. package/dist/utils/format-text.d.ts +22 -0
  530. package/dist/utils/format-text.d.ts.map +1 -0
  531. package/dist/utils/format-text.js +33 -0
  532. package/dist/utils/format-text.js.map +1 -0
  533. package/dist/utils/fuse-palette.d.ts +12 -0
  534. package/dist/utils/fuse-palette.d.ts.map +1 -1
  535. package/dist/utils/fuse-palette.js +23 -1
  536. package/dist/utils/fuse-palette.js.map +1 -1
  537. package/dist/utils/fuse-widget.d.ts +13 -4
  538. package/dist/utils/fuse-widget.d.ts.map +1 -1
  539. package/dist/utils/fuse-widget.js.map +1 -1
  540. package/dist/utils/fusedash-visual.d.ts +208 -52
  541. package/dist/utils/fusedash-visual.d.ts.map +1 -1
  542. package/dist/utils/fusedash-visual.js +162 -30
  543. package/dist/utils/fusedash-visual.js.map +1 -1
  544. package/package.json +91 -12
  545. package/dist/components/donut-group-chart/element/styles.d.ts +0 -2
  546. package/dist/components/donut-group-chart/element/styles.d.ts.map +0 -1
  547. package/dist/components/donut-group-chart/element/styles.js.map +0 -1
  548. package/dist/components/donut-group-chart/element/ui9000-donut-group-chart.d.ts +0 -34
  549. package/dist/components/donut-group-chart/element/ui9000-donut-group-chart.d.ts.map +0 -1
  550. package/dist/components/donut-group-chart/element/ui9000-donut-group-chart.js +0 -169
  551. package/dist/components/donut-group-chart/element/ui9000-donut-group-chart.js.map +0 -1
  552. package/dist/components/donut-group-chart/index.d.ts +0 -5
  553. package/dist/components/donut-group-chart/index.d.ts.map +0 -1
  554. package/dist/components/donut-group-chart/index.js +0 -23
  555. package/dist/components/donut-group-chart/lib/domain.d.ts +0 -39
  556. package/dist/components/donut-group-chart/lib/domain.d.ts.map +0 -1
  557. package/dist/components/donut-group-chart/lib/domain.js +0 -51
  558. package/dist/components/donut-group-chart/lib/domain.js.map +0 -1
  559. package/dist/components/donut-group-chart/lib/format.d.ts +0 -7
  560. package/dist/components/donut-group-chart/lib/format.d.ts.map +0 -1
  561. package/dist/components/donut-group-chart/lib/format.js +0 -21
  562. package/dist/components/donut-group-chart/lib/format.js.map +0 -1
  563. package/dist/components/donut-group-chart/lib/index.d.ts +0 -5
  564. package/dist/components/donut-group-chart/lib/index.d.ts.map +0 -1
  565. package/dist/components/donut-group-chart/lib/normalize.d.ts +0 -14
  566. package/dist/components/donut-group-chart/lib/normalize.d.ts.map +0 -1
  567. package/dist/components/donut-group-chart/lib/normalize.js +0 -98
  568. package/dist/components/donut-group-chart/lib/normalize.js.map +0 -1
  569. package/dist/components/donut-group-chart/lib/types.d.ts +0 -49
  570. package/dist/components/donut-group-chart/lib/types.d.ts.map +0 -1
  571. package/dist/components/donut-group-chart/metadata.json.d.ts +0 -113
  572. package/dist/components/donut-group-chart/metadata.json.js +0 -45
  573. package/dist/components/donut-group-chart/render/draw.d.ts +0 -44
  574. package/dist/components/donut-group-chart/render/draw.d.ts.map +0 -1
  575. package/dist/components/donut-group-chart/render/draw.js +0 -194
  576. package/dist/components/donut-group-chart/render/draw.js.map +0 -1
  577. package/dist/components/donut-group-chart/render/index.d.ts +0 -2
  578. package/dist/components/donut-group-chart/render/index.d.ts.map +0 -1
  579. package/dist/components/donut-group-chart/tests/fixtures.d.ts +0 -33
  580. package/dist/components/donut-group-chart/tests/fixtures.d.ts.map +0 -1
  581. package/dist/lazy/donut-group-chart.d.ts +0 -4
  582. package/dist/lazy/donut-group-chart.d.ts.map +0 -1
  583. package/dist/lazy/donut-group-chart.js +0 -5
  584. package/dist/lazy/donut-group-chart.js.map +0 -1
  585. package/dist/node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/directive.js.map +0 -1
  586. package/dist/node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/directives/style-map.js.map +0 -1
  587. package/dist/node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/lit-html.js.map +0 -1
  588. /package/dist/components/{donut-group-chart → bias-variance-tradeoff-chart}/index.js.map +0 -0
  589. /package/dist/components/{donut-group-chart → parallel-coordinates-chart}/metadata.json.js.map +0 -0
  590. /package/dist/node_modules/{.pnpm/lit-html@3.3.3/node_modules/lit-html → lit-html}/directive.js +0 -0
  591. /package/dist/node_modules/{.pnpm/lit-html@3.3.3/node_modules/lit-html → lit-html}/directives/style-map.js +0 -0
  592. /package/dist/node_modules/{.pnpm/lit-html@3.3.3/node_modules/lit-html → lit-html}/lit-html.js +0 -0
@@ -9,6 +9,8 @@ export declare function getRadarDimensions(container: HTMLElement): ChartDimensi
9
9
  export declare function getLollipopDimensions(container: HTMLElement): ChartDimensions;
10
10
  /** FuseDash PunchcardChart frame */
11
11
  export declare function getPunchcardDimensions(container: HTMLElement): ChartDimensions;
12
+ /** FuseDash MatrixChart frame */
13
+ export declare function getMatrixDimensions(container: HTMLElement): ChartDimensions;
12
14
  /** FuseDash StepLineChart frame */
13
15
  export declare function getStepLineDimensions(container: HTMLElement): ChartDimensions;
14
16
  /** FuseDash SparkLineChart frame */
@@ -19,30 +21,47 @@ export declare function getSparkLineDimensions(container: HTMLElement): ChartDim
19
21
  * the whole SVG, which is what the fixed-size chat host needs.
20
22
  */
21
23
  export declare function getBarChartDimensions(container: HTMLElement, scale?: WidgetScale): ChartDimensions;
22
- /**
23
- * FuseDash DonutGroupChart frame. `scale` stands in for the Redux
24
- * `getWidgetScale` factor: it loosens or tightens the gutter around the row of
25
- * donuts rather than zooming the whole SVG.
26
- */
27
- export declare function getDonutGroupDimensions(container: HTMLElement, scale?: WidgetScale): ChartDimensions;
28
24
  /** FuseDash BoxPlotChart frame */
29
25
  export declare function getBoxPlotDimensions(container: HTMLElement): ChartDimensions;
30
26
  /** FuseDash ViolinChart frame — margins differ by orientation. */
31
27
  export declare function getViolinDimensions(container: HTMLElement, orientation?: 'vertical' | 'horizontal'): ChartDimensions;
32
28
  /** FuseDash HistogramChart frame */
33
29
  export declare function getHistogramDimensions(container: HTMLElement): ChartDimensions;
30
+ /**
31
+ * FuseDash ParallelCoordinatesChart frame. Horizontal stacks one 72px band per
32
+ * dimension and scrolls; vertical fits the container and keeps a bottom gutter.
33
+ */
34
+ export declare function getParallelCoordinatesDimensions(container: HTMLElement, orientation?: 'horizontal' | 'vertical'): ChartDimensions;
34
35
  /** FuseDash WaterfallChart frame — margins differ by orientation. */
35
36
  export declare function getWaterfallDimensions(container: HTMLElement, orientation?: 'vertical' | 'horizontal'): ChartDimensions;
36
37
  /** FuseDash ScatterPlot frame */
37
38
  export declare function getScatterPlotDimensions(container: HTMLElement): ChartDimensions;
39
+ /** FuseDash BiasVarianceTradeoffChart frame */
40
+ export declare function getBiasVarianceDimensions(container: HTMLElement): ChartDimensions;
38
41
  /** FuseDash BubbleChart frame — top/right inset for max bubble radius. */
39
42
  export declare function getBubbleChartDimensions(container: HTMLElement): ChartDimensions;
43
+ /**
44
+ * FuseDash RadialBarChart frame. `scale` stands in for the Redux
45
+ * `getWidgetScale` factor: a looser frame leaves less room for the circle,
46
+ * which is how the fixed-size chat host resizes the rings.
47
+ */
48
+ export declare function getRadialBarDimensions(container: HTMLElement, scale?: WidgetScale): ChartDimensions;
40
49
  /** FuseDash PieChart frame — square plot area, zero SVG margin */
41
50
  export declare function getPieDimensions(container: HTMLElement): ChartDimensions;
51
+ /**
52
+ * FuseDash PolarAreaChart frame. `scale` stands in for the Redux
53
+ * `getWidgetScale` factor: it loosens or tightens the gutter around the disc
54
+ * rather than zooming the whole SVG.
55
+ */
56
+ export declare function getPolarAreaDimensions(container: HTMLElement, scale?: WidgetScale): ChartDimensions;
57
+ /** FuseDash Treemap frame — tiles fill the body, there is no axis gutter. */
58
+ export declare function getTreemapDimensions(container: HTMLElement): ChartDimensions;
42
59
  /** FuseDash AreaChart frame (same as LineChart new design) */
43
60
  export declare function getAreaChartDimensions(container: HTMLElement): ChartDimensions;
44
61
  /** FuseDash AreaGroupedBarChart frame */
45
62
  export declare function getAreaGroupedBarChartDimensions(container: HTMLElement): ChartDimensions;
63
+ /** FuseDash GiniImpurityEntropyChart frame */
64
+ export declare function getGiniImpurityEntropyDimensions(container: HTMLElement): ChartDimensions;
46
65
  /** FuseDash Sankey frame — the layout insets itself, so there is no margin. */
47
66
  export declare function getSankeyDimensions(container: HTMLElement): {
48
67
  width: number;
@@ -1 +1 @@
1
- {"version":3,"file":"chart-helpers.d.ts","sourceRoot":"","sources":["../../src/utils/chart-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAItE,wBAAgB,aAAa,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,CAOnE;AAED,wBAAgB,aAAa,CAC3B,SAAS,EAAE,WAAW,EACtB,KAAK,GAAE,WAAuB,GAC7B,eAAe,CASjB;AAED,0CAA0C;AAC1C,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,WAAW,GAAG,eAAe,CAM9E;AAED,gCAAgC;AAChC,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,WAAW,GAAG,eAAe,CAM1E;AAED,8BAA8B;AAC9B,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,WAAW,GAAG,eAAe,CAM7E;AAED,oCAAoC;AACpC,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,WAAW,GAAG,eAAe,CAM9E;AAED,mCAAmC;AACnC,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,WAAW,GAAG,eAAe,CAM7E;AAED,oCAAoC;AACpC,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,WAAW,GAAG,eAAe,CAM9E;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,WAAW,EACtB,KAAK,GAAE,WAAuB,GAC7B,eAAe,CAajB;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,WAAW,EACtB,KAAK,GAAE,WAAuB,GAC7B,eAAe,CAajB;AAED,kCAAkC;AAClC,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,WAAW,GAAG,eAAe,CAM5E;AAED,kEAAkE;AAClE,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,WAAW,EACtB,WAAW,GAAE,UAAU,GAAG,YAAyB,GAClD,eAAe,CAUjB;AAED,oCAAoC;AACpC,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,WAAW,GAAG,eAAe,CAM9E;AAED,qEAAqE;AACrE,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,WAAW,EACtB,WAAW,GAAE,UAAU,GAAG,YAA2B,GACpD,eAAe,CAUjB;AAED,iCAAiC;AACjC,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,WAAW,GAAG,eAAe,CAMhF;AAED,0EAA0E;AAC1E,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,WAAW,GAAG,eAAe,CAahF;AAED,kEAAkE;AAClE,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,WAAW,GAAG,eAAe,CAMxE;AAED,8DAA8D;AAC9D,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,WAAW,GAAG,eAAe,CAE9E;AAED,yCAAyC;AACzC,wBAAgB,gCAAgC,CAAC,SAAS,EAAE,WAAW,GAAG,eAAe,CAMxF;AAED,+EAA+E;AAC/E,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,WAAW,GAAG;IAC3D,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAKA;AAED,8CAA8C;AAC9C,eAAO,MAAM,YAAY,mJAAiB,CAAC"}
1
+ {"version":3,"file":"chart-helpers.d.ts","sourceRoot":"","sources":["../../src/utils/chart-helpers.ts"],"names":[],"mappings":"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"}
@@ -36,6 +36,13 @@ function getPunchcardDimensions(container) {
36
36
  margin: { ...FD.punchcardMargin }
37
37
  };
38
38
  }
39
+ function getMatrixDimensions(container) {
40
+ return {
41
+ width: container.clientWidth || 400,
42
+ height: container.clientHeight || 300,
43
+ margin: { ...FD.matrixMargin }
44
+ };
45
+ }
39
46
  function getStepLineDimensions(container) {
40
47
  return {
41
48
  width: container.clientWidth || 400,
@@ -64,20 +71,6 @@ function getBarChartDimensions(container, scale = "default") {
64
71
  }
65
72
  };
66
73
  }
67
- function getDonutGroupDimensions(container, scale = "default") {
68
- const delta = SCALE_PADDING[scale] - SCALE_PADDING.default;
69
- const base = FD.donutMargin;
70
- return {
71
- width: container.clientWidth || 400,
72
- height: container.clientHeight || 300,
73
- margin: {
74
- top: Math.max(base.top + delta, 0),
75
- right: Math.max(base.right + delta, 0),
76
- bottom: Math.max(base.bottom + delta, 0),
77
- left: Math.max(base.left + delta, 0)
78
- }
79
- };
80
- }
81
74
  function getBoxPlotDimensions(container) {
82
75
  return {
83
76
  width: container.clientWidth || 400,
@@ -101,6 +94,13 @@ function getHistogramDimensions(container) {
101
94
  margin: { ...FD.histogramMargin }
102
95
  };
103
96
  }
97
+ function getParallelCoordinatesDimensions(container, orientation = "horizontal") {
98
+ return {
99
+ width: container.clientWidth || 400,
100
+ height: container.clientHeight || 300,
101
+ margin: orientation === "vertical" ? { ...FD.parallelVerticalMargin } : { ...FD.parallelMargin }
102
+ };
103
+ }
104
104
  function getWaterfallDimensions(container, orientation = "horizontal") {
105
105
  return {
106
106
  width: container.clientWidth || 400,
@@ -117,6 +117,13 @@ function getScatterPlotDimensions(container) {
117
117
  margin: { ...FD.scatterMargin }
118
118
  };
119
119
  }
120
+ function getBiasVarianceDimensions(container) {
121
+ return {
122
+ width: container.clientWidth || 400,
123
+ height: container.clientHeight || 300,
124
+ margin: { ...FD.biasVarianceMargin }
125
+ };
126
+ }
120
127
  function getBubbleChartDimensions(container) {
121
128
  const inset = FD.bubbleMaxRadius / 2 + 1;
122
129
  const base = FD.bubbleBaseMargin;
@@ -131,6 +138,20 @@ function getBubbleChartDimensions(container) {
131
138
  }
132
139
  };
133
140
  }
141
+ function getRadialBarDimensions(container, scale = "default") {
142
+ const delta = SCALE_PADDING[scale] - SCALE_PADDING.default;
143
+ const base = FD.radialBarMargin;
144
+ return {
145
+ width: container.clientWidth || 400,
146
+ height: container.clientHeight || 300,
147
+ margin: {
148
+ top: Math.max(base.top + delta, 0),
149
+ right: Math.max(base.right + delta, 0),
150
+ bottom: Math.max(base.bottom + delta, 0),
151
+ left: Math.max(base.left + delta, 0)
152
+ }
153
+ };
154
+ }
134
155
  function getPieDimensions(container) {
135
156
  return {
136
157
  width: container.clientWidth || 400,
@@ -138,6 +159,27 @@ function getPieDimensions(container) {
138
159
  margin: { ...FD.pieMargin }
139
160
  };
140
161
  }
162
+ function getPolarAreaDimensions(container, scale = "default") {
163
+ const delta = SCALE_PADDING[scale] - SCALE_PADDING.default;
164
+ const base = FD.polarAreaMargin;
165
+ return {
166
+ width: container.clientWidth || 400,
167
+ height: container.clientHeight || 300,
168
+ margin: {
169
+ top: Math.max(base.top + delta, 0),
170
+ right: Math.max(base.right + delta, 0),
171
+ bottom: Math.max(base.bottom + delta, 0),
172
+ left: Math.max(base.left + delta, 0)
173
+ }
174
+ };
175
+ }
176
+ function getTreemapDimensions(container) {
177
+ return {
178
+ width: container.clientWidth || 400,
179
+ height: container.clientHeight || 300,
180
+ margin: { ...FD.treemapMargin }
181
+ };
182
+ }
141
183
  function getAreaChartDimensions(container) {
142
184
  return getLineChartDimensions(container);
143
185
  }
@@ -148,6 +190,13 @@ function getAreaGroupedBarChartDimensions(container) {
148
190
  margin: { ...FD.areaGroupedBarMargin }
149
191
  };
150
192
  }
193
+ function getGiniImpurityEntropyDimensions(container) {
194
+ return {
195
+ width: container.clientWidth || 400,
196
+ height: container.clientHeight || 300,
197
+ margin: { ...FD.giniMargin }
198
+ };
199
+ }
151
200
  function getSankeyDimensions(container) {
152
201
  return {
153
202
  width: container.clientWidth || 400,
@@ -158,19 +207,25 @@ export {
158
207
  getAreaChartDimensions,
159
208
  getAreaGroupedBarChartDimensions,
160
209
  getBarChartDimensions,
210
+ getBiasVarianceDimensions,
161
211
  getBoxPlotDimensions,
162
212
  getBubbleChartDimensions,
163
- getDonutGroupDimensions,
213
+ getGiniImpurityEntropyDimensions,
164
214
  getHistogramDimensions,
165
215
  getLineChartDimensions,
166
216
  getLollipopDimensions,
217
+ getMatrixDimensions,
218
+ getParallelCoordinatesDimensions,
167
219
  getPieDimensions,
220
+ getPolarAreaDimensions,
168
221
  getPunchcardDimensions,
169
222
  getRadarDimensions,
223
+ getRadialBarDimensions,
170
224
  getSankeyDimensions,
171
225
  getScatterPlotDimensions,
172
226
  getSparkLineDimensions,
173
227
  getStepLineDimensions,
228
+ getTreemapDimensions,
174
229
  getViolinDimensions,
175
230
  getWaterfallDimensions,
176
231
  parseJsonAttr
@@ -1 +1 @@
1
- {"version":3,"file":"chart-helpers.js","sources":["../../src/utils/chart-helpers.ts"],"sourcesContent":["import type { ChartDimensions, WidgetScale } from '../types/index.js';\nimport { SCALE_PADDING } from '../types/index.js';\nimport { FD } from './fusedash-visual.js';\n\nexport function parseJsonAttr<T>(raw: string | null, fallback: T): T {\n if (!raw) return fallback;\n try {\n return JSON.parse(raw) as T;\n } catch {\n return fallback;\n }\n}\n\nexport function getDimensions(\n container: HTMLElement,\n scale: WidgetScale = 'default',\n): ChartDimensions {\n const padding = SCALE_PADDING[scale];\n const width = container.clientWidth || 400;\n const height = container.clientHeight || 300;\n return {\n width,\n height,\n margin: { top: padding, right: padding, bottom: padding + 16, left: padding + 32 },\n };\n}\n\n/** FuseDash LineChart new-design frame */\nexport function getLineChartDimensions(container: HTMLElement): ChartDimensions {\n return {\n width: container.clientWidth || 400,\n height: container.clientHeight || 300,\n margin: { ...FD.lineMargin },\n };\n}\n\n/** FuseDash RadarChart frame */\nexport function getRadarDimensions(container: HTMLElement): ChartDimensions {\n return {\n width: container.clientWidth || 400,\n height: container.clientHeight || 300,\n margin: { ...FD.radarMargin },\n };\n}\n\n/** FuseDash Lollipop frame */\nexport function getLollipopDimensions(container: HTMLElement): ChartDimensions {\n return {\n width: container.clientWidth || 400,\n height: container.clientHeight || 300,\n margin: { ...FD.lollipopMargin },\n };\n}\n\n/** FuseDash PunchcardChart frame */\nexport function getPunchcardDimensions(container: HTMLElement): ChartDimensions {\n return {\n width: container.clientWidth || 400,\n height: container.clientHeight || 300,\n margin: { ...FD.punchcardMargin },\n };\n}\n\n/** FuseDash StepLineChart frame */\nexport function getStepLineDimensions(container: HTMLElement): ChartDimensions {\n return {\n width: container.clientWidth || 400,\n height: container.clientHeight || 300,\n margin: { ...FD.stepLineMargin },\n };\n}\n\n/** FuseDash SparkLineChart frame */\nexport function getSparkLineDimensions(container: HTMLElement): ChartDimensions {\n return {\n width: container.clientWidth || 400,\n height: container.clientHeight || 300,\n margin: { ...FD.sparkLineMargin },\n };\n}\n\n/**\n * FuseDash Barchart frame. `scale` stands in for the Redux `getWidgetScale`\n * factor: it tightens or loosens the frame around the plot rather than zooming\n * the whole SVG, which is what the fixed-size chat host needs.\n */\nexport function getBarChartDimensions(\n container: HTMLElement,\n scale: WidgetScale = 'default',\n): ChartDimensions {\n const delta = SCALE_PADDING[scale] - SCALE_PADDING.default;\n const base = FD.barMargin;\n return {\n width: container.clientWidth || 400,\n height: container.clientHeight || 300,\n margin: {\n top: Math.max(base.top + delta, 0),\n right: base.right,\n bottom: Math.max(base.bottom + delta, 8),\n left: Math.max(base.left + delta, 24),\n },\n };\n}\n\n/**\n * FuseDash DonutGroupChart frame. `scale` stands in for the Redux\n * `getWidgetScale` factor: it loosens or tightens the gutter around the row of\n * donuts rather than zooming the whole SVG.\n */\nexport function getDonutGroupDimensions(\n container: HTMLElement,\n scale: WidgetScale = 'default',\n): ChartDimensions {\n const delta = SCALE_PADDING[scale] - SCALE_PADDING.default;\n const base = FD.donutMargin;\n return {\n width: container.clientWidth || 400,\n height: container.clientHeight || 300,\n margin: {\n top: Math.max(base.top + delta, 0),\n right: Math.max(base.right + delta, 0),\n bottom: Math.max(base.bottom + delta, 0),\n left: Math.max(base.left + delta, 0),\n },\n };\n}\n\n/** FuseDash BoxPlotChart frame */\nexport function getBoxPlotDimensions(container: HTMLElement): ChartDimensions {\n return {\n width: container.clientWidth || 400,\n height: container.clientHeight || 300,\n margin: { ...FD.boxPlotMargin },\n };\n}\n\n/** FuseDash ViolinChart frame — margins differ by orientation. */\nexport function getViolinDimensions(\n container: HTMLElement,\n orientation: 'vertical' | 'horizontal' = 'vertical',\n): ChartDimensions {\n return {\n width: container.clientWidth || 400,\n height: container.clientHeight || 300,\n margin: {\n ...(orientation === 'horizontal'\n ? FD.violinHorizontalMargin\n : FD.violinVerticalMargin),\n },\n };\n}\n\n/** FuseDash HistogramChart frame */\nexport function getHistogramDimensions(container: HTMLElement): ChartDimensions {\n return {\n width: container.clientWidth || 400,\n height: container.clientHeight || 300,\n margin: { ...FD.histogramMargin },\n };\n}\n\n/** FuseDash WaterfallChart frame — margins differ by orientation. */\nexport function getWaterfallDimensions(\n container: HTMLElement,\n orientation: 'vertical' | 'horizontal' = 'horizontal',\n): ChartDimensions {\n return {\n width: container.clientWidth || 400,\n height: container.clientHeight || 300,\n margin: {\n ...(orientation === 'vertical'\n ? FD.waterfallVerticalMargin\n : FD.waterfallHorizontalMargin),\n },\n };\n}\n\n/** FuseDash ScatterPlot frame */\nexport function getScatterPlotDimensions(container: HTMLElement): ChartDimensions {\n return {\n width: container.clientWidth || 400,\n height: container.clientHeight || 300,\n margin: { ...FD.scatterMargin },\n };\n}\n\n/** FuseDash BubbleChart frame — top/right inset for max bubble radius. */\nexport function getBubbleChartDimensions(container: HTMLElement): ChartDimensions {\n const inset = FD.bubbleMaxRadius / 2 + 1;\n const base = FD.bubbleBaseMargin;\n return {\n width: container.clientWidth || 400,\n height: container.clientHeight || 300,\n margin: {\n top: base.top + inset,\n right: base.right + inset,\n bottom: base.bottom,\n left: base.left,\n },\n };\n}\n\n/** FuseDash PieChart frame — square plot area, zero SVG margin */\nexport function getPieDimensions(container: HTMLElement): ChartDimensions {\n return {\n width: container.clientWidth || 400,\n height: container.clientHeight || 300,\n margin: { ...FD.pieMargin },\n };\n}\n\n/** FuseDash AreaChart frame (same as LineChart new design) */\nexport function getAreaChartDimensions(container: HTMLElement): ChartDimensions {\n return getLineChartDimensions(container);\n}\n\n/** FuseDash AreaGroupedBarChart frame */\nexport function getAreaGroupedBarChartDimensions(container: HTMLElement): ChartDimensions {\n return {\n width: container.clientWidth || 400,\n height: container.clientHeight || 300,\n margin: { ...FD.areaGroupedBarMargin },\n };\n}\n\n/** FuseDash Sankey frame — the layout insets itself, so there is no margin. */\nexport function getSankeyDimensions(container: HTMLElement): {\n width: number;\n height: number;\n} {\n return {\n width: container.clientWidth || 400,\n height: container.clientHeight || 300,\n };\n}\n\n/** FuseDash Qualitative2Colors1 (+ extras) */\nexport const CHART_COLORS = [...FD.series];\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chart-helpers.js","sources":["../../src/utils/chart-helpers.ts"],"sourcesContent":["import type { ChartDimensions, WidgetScale } from '../types/index.js';\nimport { SCALE_PADDING } from '../types/index.js';\nimport { FD } from './fusedash-visual.js';\n\nexport function parseJsonAttr<T>(raw: string | null, fallback: T): T {\n if (!raw) return fallback;\n try {\n return JSON.parse(raw) as T;\n } catch {\n return fallback;\n }\n}\n\nexport function getDimensions(\n container: HTMLElement,\n scale: WidgetScale = 'default',\n): ChartDimensions {\n const padding = SCALE_PADDING[scale];\n const width = container.clientWidth || 400;\n const height = container.clientHeight || 300;\n return {\n width,\n height,\n margin: { top: padding, right: padding, bottom: padding + 16, left: padding + 32 },\n };\n}\n\n/** FuseDash LineChart new-design frame */\nexport function getLineChartDimensions(container: HTMLElement): ChartDimensions {\n return {\n width: container.clientWidth || 400,\n height: container.clientHeight || 300,\n margin: { ...FD.lineMargin },\n };\n}\n\n/** FuseDash RadarChart frame */\nexport function getRadarDimensions(container: HTMLElement): ChartDimensions {\n return {\n width: container.clientWidth || 400,\n height: container.clientHeight || 300,\n margin: { ...FD.radarMargin },\n };\n}\n\n/** FuseDash Lollipop frame */\nexport function getLollipopDimensions(container: HTMLElement): ChartDimensions {\n return {\n width: container.clientWidth || 400,\n height: container.clientHeight || 300,\n margin: { ...FD.lollipopMargin },\n };\n}\n\n/** FuseDash PunchcardChart frame */\nexport function getPunchcardDimensions(container: HTMLElement): ChartDimensions {\n return {\n width: container.clientWidth || 400,\n height: container.clientHeight || 300,\n margin: { ...FD.punchcardMargin },\n };\n}\n\n/** FuseDash MatrixChart frame */\nexport function getMatrixDimensions(container: HTMLElement): ChartDimensions {\n return {\n width: container.clientWidth || 400,\n height: container.clientHeight || 300,\n margin: { ...FD.matrixMargin },\n };\n}\n\n/** FuseDash StepLineChart frame */\nexport function getStepLineDimensions(container: HTMLElement): ChartDimensions {\n return {\n width: container.clientWidth || 400,\n height: container.clientHeight || 300,\n margin: { ...FD.stepLineMargin },\n };\n}\n\n/** FuseDash SparkLineChart frame */\nexport function getSparkLineDimensions(container: HTMLElement): ChartDimensions {\n return {\n width: container.clientWidth || 400,\n height: container.clientHeight || 300,\n margin: { ...FD.sparkLineMargin },\n };\n}\n\n/**\n * FuseDash Barchart frame. `scale` stands in for the Redux `getWidgetScale`\n * factor: it tightens or loosens the frame around the plot rather than zooming\n * the whole SVG, which is what the fixed-size chat host needs.\n */\nexport function getBarChartDimensions(\n container: HTMLElement,\n scale: WidgetScale = 'default',\n): ChartDimensions {\n const delta = SCALE_PADDING[scale] - SCALE_PADDING.default;\n const base = FD.barMargin;\n return {\n width: container.clientWidth || 400,\n height: container.clientHeight || 300,\n margin: {\n top: Math.max(base.top + delta, 0),\n right: base.right,\n bottom: Math.max(base.bottom + delta, 8),\n left: Math.max(base.left + delta, 24),\n },\n };\n}\n\n/** FuseDash BoxPlotChart frame */\nexport function getBoxPlotDimensions(container: HTMLElement): ChartDimensions {\n return {\n width: container.clientWidth || 400,\n height: container.clientHeight || 300,\n margin: { ...FD.boxPlotMargin },\n };\n}\n\n/** FuseDash ViolinChart frame — margins differ by orientation. */\nexport function getViolinDimensions(\n container: HTMLElement,\n orientation: 'vertical' | 'horizontal' = 'vertical',\n): ChartDimensions {\n return {\n width: container.clientWidth || 400,\n height: container.clientHeight || 300,\n margin: {\n ...(orientation === 'horizontal'\n ? FD.violinHorizontalMargin\n : FD.violinVerticalMargin),\n },\n };\n}\n\n/** FuseDash HistogramChart frame */\nexport function getHistogramDimensions(container: HTMLElement): ChartDimensions {\n return {\n width: container.clientWidth || 400,\n height: container.clientHeight || 300,\n margin: { ...FD.histogramMargin },\n };\n}\n\n/**\n * FuseDash ParallelCoordinatesChart frame. Horizontal stacks one 72px band per\n * dimension and scrolls; vertical fits the container and keeps a bottom gutter.\n */\nexport function getParallelCoordinatesDimensions(\n container: HTMLElement,\n orientation: 'horizontal' | 'vertical' = 'horizontal',\n): ChartDimensions {\n return {\n width: container.clientWidth || 400,\n height: container.clientHeight || 300,\n margin:\n orientation === 'vertical'\n ? { ...FD.parallelVerticalMargin }\n : { ...FD.parallelMargin },\n };\n}\n\n/** FuseDash WaterfallChart frame — margins differ by orientation. */\nexport function getWaterfallDimensions(\n container: HTMLElement,\n orientation: 'vertical' | 'horizontal' = 'horizontal',\n): ChartDimensions {\n return {\n width: container.clientWidth || 400,\n height: container.clientHeight || 300,\n margin: {\n ...(orientation === 'vertical'\n ? FD.waterfallVerticalMargin\n : FD.waterfallHorizontalMargin),\n },\n };\n}\n\n/** FuseDash ScatterPlot frame */\nexport function getScatterPlotDimensions(container: HTMLElement): ChartDimensions {\n return {\n width: container.clientWidth || 400,\n height: container.clientHeight || 300,\n margin: { ...FD.scatterMargin },\n };\n}\n\n/** FuseDash BiasVarianceTradeoffChart frame */\nexport function getBiasVarianceDimensions(container: HTMLElement): ChartDimensions {\n return {\n width: container.clientWidth || 400,\n height: container.clientHeight || 300,\n margin: { ...FD.biasVarianceMargin },\n };\n}\n\n/** FuseDash BubbleChart frame — top/right inset for max bubble radius. */\nexport function getBubbleChartDimensions(container: HTMLElement): ChartDimensions {\n const inset = FD.bubbleMaxRadius / 2 + 1;\n const base = FD.bubbleBaseMargin;\n return {\n width: container.clientWidth || 400,\n height: container.clientHeight || 300,\n margin: {\n top: base.top + inset,\n right: base.right + inset,\n bottom: base.bottom,\n left: base.left,\n },\n };\n}\n\n/**\n * FuseDash RadialBarChart frame. `scale` stands in for the Redux\n * `getWidgetScale` factor: a looser frame leaves less room for the circle,\n * which is how the fixed-size chat host resizes the rings.\n */\nexport function getRadialBarDimensions(\n container: HTMLElement,\n scale: WidgetScale = 'default',\n): ChartDimensions {\n const delta = SCALE_PADDING[scale] - SCALE_PADDING.default;\n const base = FD.radialBarMargin;\n return {\n width: container.clientWidth || 400,\n height: container.clientHeight || 300,\n margin: {\n top: Math.max(base.top + delta, 0),\n right: Math.max(base.right + delta, 0),\n bottom: Math.max(base.bottom + delta, 0),\n left: Math.max(base.left + delta, 0),\n },\n };\n}\n\n/** FuseDash PieChart frame — square plot area, zero SVG margin */\nexport function getPieDimensions(container: HTMLElement): ChartDimensions {\n return {\n width: container.clientWidth || 400,\n height: container.clientHeight || 300,\n margin: { ...FD.pieMargin },\n };\n}\n\n/**\n * FuseDash PolarAreaChart frame. `scale` stands in for the Redux\n * `getWidgetScale` factor: it loosens or tightens the gutter around the disc\n * rather than zooming the whole SVG.\n */\nexport function getPolarAreaDimensions(\n container: HTMLElement,\n scale: WidgetScale = 'default',\n): ChartDimensions {\n const delta = SCALE_PADDING[scale] - SCALE_PADDING.default;\n const base = FD.polarAreaMargin;\n return {\n width: container.clientWidth || 400,\n height: container.clientHeight || 300,\n margin: {\n top: Math.max(base.top + delta, 0),\n right: Math.max(base.right + delta, 0),\n bottom: Math.max(base.bottom + delta, 0),\n left: Math.max(base.left + delta, 0),\n },\n };\n}\n\n/** FuseDash Treemap frame — tiles fill the body, there is no axis gutter. */\nexport function getTreemapDimensions(container: HTMLElement): ChartDimensions {\n return {\n width: container.clientWidth || 400,\n height: container.clientHeight || 300,\n margin: { ...FD.treemapMargin },\n };\n}\n\n/** FuseDash AreaChart frame (same as LineChart new design) */\nexport function getAreaChartDimensions(container: HTMLElement): ChartDimensions {\n return getLineChartDimensions(container);\n}\n\n/** FuseDash AreaGroupedBarChart frame */\nexport function getAreaGroupedBarChartDimensions(container: HTMLElement): ChartDimensions {\n return {\n width: container.clientWidth || 400,\n height: container.clientHeight || 300,\n margin: { ...FD.areaGroupedBarMargin },\n };\n}\n\n/** FuseDash GiniImpurityEntropyChart frame */\nexport function getGiniImpurityEntropyDimensions(\n container: HTMLElement,\n): ChartDimensions {\n return {\n width: container.clientWidth || 400,\n height: container.clientHeight || 300,\n margin: { ...FD.giniMargin },\n };\n}\n\n/** FuseDash Sankey frame — the layout insets itself, so there is no margin. */\nexport function getSankeyDimensions(container: HTMLElement): {\n width: number;\n height: number;\n} {\n return {\n width: container.clientWidth || 400,\n height: container.clientHeight || 300,\n };\n}\n\n/** FuseDash Qualitative2Colors1 (+ extras) */\nexport const CHART_COLORS = [...FD.series];\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /** Text/number formatting shared with the client `Widgets/utils` helpers. */
2
+ /** Mirrors client `formatNumber` (Intl, up to 3 decimals). */
3
+ export declare function formatFuseNumber(value: number): string;
4
+ /**
5
+ * Mirrors client `formatCapitalizedWordsText` — group / series keys become
6
+ * legend and tooltip labels (`bias_squared` → `Bias Squared`).
7
+ */
8
+ export declare function formatCapitalizedWords(text?: string): string;
9
+ /**
10
+ * Mirrors client `formatCapitalizedText` — only the first word is capitalized
11
+ * (`County__created` → `County created`), used for field-name captions.
12
+ */
13
+ export declare function formatCapitalizedText(text?: string): string;
14
+ export type FuseAxisDetail = {
15
+ label?: string;
16
+ measure_unit?: string;
17
+ measure_unit_type?: string;
18
+ measure_unit_symbol?: string;
19
+ };
20
+ /** Mirrors client `formatValueWithUnit` (currency prefix, percentage / plain suffix). */
21
+ export declare function formatValueWithUnit(value: string, detail?: FuseAxisDetail | null): string;
22
+ //# sourceMappingURL=format-text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-text.d.ts","sourceRoot":"","sources":["../../src/utils/format-text.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAE7E,8DAA8D;AAC9D,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGtD;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAQ5D;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAK3D;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,yFAAyF;AACzF,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,cAAc,GAAG,IAAI,GAC7B,MAAM,CAcR"}
@@ -0,0 +1,33 @@
1
+ function formatFuseNumber(value) {
2
+ if (!Number.isFinite(value)) return "";
3
+ return Intl.NumberFormat("en-US", { maximumFractionDigits: 3 }).format(value);
4
+ }
5
+ function formatCapitalizedWords(text) {
6
+ if (!text) return "";
7
+ if (!Number.isNaN(Number(text))) return text;
8
+ return text.replace(/[_-]/g, " ").split(" ").map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()).join(" ");
9
+ }
10
+ function formatCapitalizedText(text) {
11
+ if (!text) return "";
12
+ if (!Number.isNaN(Number(text))) return text;
13
+ const spaced = text.replace(/[_-]/g, " ");
14
+ return spaced.charAt(0).toUpperCase() + spaced.slice(1).toLowerCase();
15
+ }
16
+ function formatValueWithUnit(value, detail) {
17
+ if (!detail) return value;
18
+ const { measure_unit_type: type, measure_unit_symbol: symbol, measure_unit: unit } = detail;
19
+ if (type === "currency") return `${(symbol == null ? void 0 : symbol.trim()) ?? ""}${value}`;
20
+ if (type === "percentage") {
21
+ const suffix2 = (symbol ?? unit ?? "").trim();
22
+ return suffix2 ? `${value} ${suffix2}` : value;
23
+ }
24
+ const suffix = (unit == null ? void 0 : unit.trim()) ?? "";
25
+ return suffix ? `${value} ${suffix}` : value;
26
+ }
27
+ export {
28
+ formatCapitalizedText,
29
+ formatCapitalizedWords,
30
+ formatFuseNumber,
31
+ formatValueWithUnit
32
+ };
33
+ //# sourceMappingURL=format-text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-text.js","sources":["../../src/utils/format-text.ts"],"sourcesContent":["/** Text/number formatting shared with the client `Widgets/utils` helpers. */\n\n/** Mirrors client `formatNumber` (Intl, up to 3 decimals). */\nexport function formatFuseNumber(value: number): string {\n if (!Number.isFinite(value)) return '';\n return Intl.NumberFormat('en-US', { maximumFractionDigits: 3 }).format(value);\n}\n\n/**\n * Mirrors client `formatCapitalizedWordsText` — group / series keys become\n * legend and tooltip labels (`bias_squared` → `Bias Squared`).\n */\nexport function formatCapitalizedWords(text?: string): string {\n if (!text) return '';\n if (!Number.isNaN(Number(text))) return text;\n return text\n .replace(/[_-]/g, ' ')\n .split(' ')\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n .join(' ');\n}\n\n/**\n * Mirrors client `formatCapitalizedText` — only the first word is capitalized\n * (`County__created` → `County created`), used for field-name captions.\n */\nexport function formatCapitalizedText(text?: string): string {\n if (!text) return '';\n if (!Number.isNaN(Number(text))) return text;\n const spaced = text.replace(/[_-]/g, ' ');\n return spaced.charAt(0).toUpperCase() + spaced.slice(1).toLowerCase();\n}\n\nexport type FuseAxisDetail = {\n label?: string;\n measure_unit?: string;\n measure_unit_type?: string;\n measure_unit_symbol?: string;\n};\n\n/** Mirrors client `formatValueWithUnit` (currency prefix, percentage / plain suffix). */\nexport function formatValueWithUnit(\n value: string,\n detail?: FuseAxisDetail | null,\n): string {\n if (!detail) return value;\n\n const { measure_unit_type: type, measure_unit_symbol: symbol, measure_unit: unit } = detail;\n\n if (type === 'currency') return `${symbol?.trim() ?? ''}${value}`;\n\n if (type === 'percentage') {\n const suffix = (symbol ?? unit ?? '').trim();\n return suffix ? `${value} ${suffix}` : value;\n }\n\n const suffix = unit?.trim() ?? '';\n return suffix ? `${value} ${suffix}` : value;\n}\n"],"names":["suffix"],"mappings":"AAGO,SAAS,iBAAiB,OAAuB;AACtD,MAAI,CAAC,OAAO,SAAS,KAAK,EAAG,QAAO;AACpC,SAAO,KAAK,aAAa,SAAS,EAAE,uBAAuB,EAAA,CAAG,EAAE,OAAO,KAAK;AAC9E;AAMO,SAAS,uBAAuB,MAAuB;AAC5D,MAAI,CAAC,KAAM,QAAO;AAClB,MAAI,CAAC,OAAO,MAAM,OAAO,IAAI,CAAC,EAAG,QAAO;AACxC,SAAO,KACJ,QAAQ,SAAS,GAAG,EACpB,MAAM,GAAG,EACT,IAAI,CAAC,SAAS,KAAK,OAAO,CAAC,EAAE,gBAAgB,KAAK,MAAM,CAAC,EAAE,YAAA,CAAa,EACxE,KAAK,GAAG;AACb;AAMO,SAAS,sBAAsB,MAAuB;AAC3D,MAAI,CAAC,KAAM,QAAO;AAClB,MAAI,CAAC,OAAO,MAAM,OAAO,IAAI,CAAC,EAAG,QAAO;AACxC,QAAM,SAAS,KAAK,QAAQ,SAAS,GAAG;AACxC,SAAO,OAAO,OAAO,CAAC,EAAE,gBAAgB,OAAO,MAAM,CAAC,EAAE,YAAA;AAC1D;AAUO,SAAS,oBACd,OACA,QACQ;AACR,MAAI,CAAC,OAAQ,QAAO;AAEpB,QAAM,EAAE,mBAAmB,MAAM,qBAAqB,QAAQ,cAAc,SAAS;AAErF,MAAI,SAAS,WAAY,QAAO,IAAG,iCAAQ,WAAU,EAAE,GAAG,KAAK;AAE/D,MAAI,SAAS,cAAc;AACzB,UAAMA,WAAU,UAAU,QAAQ,IAAI,KAAA;AACtC,WAAOA,UAAS,GAAG,KAAK,IAAIA,OAAM,KAAK;AAAA,EACzC;AAEA,QAAM,UAAS,6BAAM,WAAU;AAC/B,SAAO,SAAS,GAAG,KAAK,IAAI,MAAM,KAAK;AACzC;"}
@@ -56,4 +56,16 @@ export declare function generateBubbleColorRanges(values: number[], ranges?: num
56
56
  export declare const bubbleRadiusForValue: typeof punchcardRadiusForValue;
57
57
  /** Scale discrete band radii when plot is shorter than FuseDash default height. */
58
58
  export declare function punchcardScaledRadius(value: number, ranges: PunchcardColorRange[], layoutMaxR: number): number;
59
+ export type SequentialColorRange = {
60
+ color: string;
61
+ start: number;
62
+ end: number;
63
+ };
64
+ /**
65
+ * Mirrors client `generateColorRanges` (MatrixChart / palette legend):
66
+ * a quantile ladder over the distinct values, one band per palette color.
67
+ */
68
+ export declare function generateSequentialColorRanges(values: number[], variations?: string[], ranges?: number[] | null): SequentialColorRange[];
69
+ /** Client `getColor`: first band containing the value, else the lowest band. */
70
+ export declare function sequentialColorForValue(value: number, ranges: SequentialColorRange[]): string | null;
59
71
  //# sourceMappingURL=fuse-palette.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fuse-palette.d.ts","sourceRoot":"","sources":["../../src/utils/fuse-palette.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,mBAAmB,GAAG;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAAC;AAE5E,eAAO,MAAM,aAAa,EAAE,MAAM,EAA2B,CAAC;AAE9D,eAAO,MAAM,aAAa,EAAE,MAAM,EAKjC,CAAC;AAEF,kCAAkC;AAClC,eAAO,MAAM,cAAc,EAAE,MAAM,EAalC,CAAC;AAEF,4DAA4D;AAC5D,eAAO,MAAM,YAAY,EAAE,MAAM,EAQhC,CAAC;AAEF,uDAAuD;AACvD,eAAO,MAAM,eAAe,sCAAuC,CAAC;AAEpE,kDAAkD;AAClD,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAC9C,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAC7C,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAC7C,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAC1C,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAE7C,8EAA8E;AAC9E,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAAE,EACpB,QAAQ,SAAK,GACZ,MAAM,CAOR;AAED,4CAA4C;AAC5C,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAExC,oFAAoF;AACpF,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACb,MAAM,CAKR;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,eAAe,EAAE,MAAM,EACvB,WAAW,SAAI,GACd,MAAM,EAAE,CAKV;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,mBAAmB,EAAE,GAAG,IAAI,GAAG,SAAS,EACpD,GAAG,EAAE,MAAM,EACX,WAAW,SAAI,GACd,MAAM,CAaR;AAED,gEAAgE;AAChE,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EAAE,EACd,UAAU,CAAC,EAAE,mBAAmB,EAAE,GAAG,IAAI,GACxC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAMrB;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,yEAAyE;AACzE,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EAAE,EAChB,SAAS,SAAI,GACZ,MAAM,EAAE,CAmBV;AAED,kEAAkE;AAClE,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,MAAM,EAAE,EAChB,UAAU,GAAE,MAAM,EAAiB,GAClC,mBAAmB,EAAE,CAuBvB;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,mBAAmB,EAAE,GAC5B,MAAM,CAKR;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,mBAAmB,EAAE,GAC5B,MAAM,CAKR;AAED,yFAAyF;AACzF,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,MAAM,EAAE,EAChB,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,GACvB,mBAAmB,EAAE,CAmBvB;AAED,yEAAyE;AACzE,eAAO,MAAM,oBAAoB,gCAA0B,CAAC;AAE5D,mFAAmF;AACnF,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,mBAAmB,EAAE,EAC7B,UAAU,EAAE,MAAM,GACjB,MAAM,CAQR"}
1
+ {"version":3,"file":"fuse-palette.d.ts","sourceRoot":"","sources":["../../src/utils/fuse-palette.ts"],"names":[],"mappings":"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"}
@@ -132,6 +132,26 @@ function punchcardScaledRadius(value, ranges, layoutMaxR) {
132
132
  Math.min(layoutMaxR, raw * Math.min(1, scale))
133
133
  );
134
134
  }
135
+ function generateSequentialColorRanges(values, variations = SEQUENTIAL_1, ranges) {
136
+ if (!variations.length || !values.length) return [];
137
+ const sortedValues = [...new Set(values)].sort((a, b) => a - b);
138
+ const steps = generateBreakPoints(sortedValues);
139
+ const count = Math.min(steps.length, variations.length);
140
+ const out = [];
141
+ for (let i = 0; i < count; i += 1) {
142
+ out.push({
143
+ color: variations[i],
144
+ start: Number(steps[i]),
145
+ end: i === count - 1 ? sortedValues[sortedValues.length - 1] : Number(steps[i + 1])
146
+ });
147
+ }
148
+ return out;
149
+ }
150
+ function sequentialColorForValue(value, ranges) {
151
+ if (!ranges.length) return null;
152
+ const range = ranges.find((r) => value >= r.start && value <= r.end);
153
+ return (range == null ? void 0 : range.color) ?? ranges[0].color;
154
+ }
135
155
  export {
136
156
  PUNCHCARD_BOTTOM_MARGIN,
137
157
  PUNCHCARD_LABEL_GUTTER_PAD,
@@ -147,12 +167,14 @@ export {
147
167
  generateBreakPoints,
148
168
  generateBubbleColorRanges,
149
169
  generatePunchcardColorRanges,
170
+ generateSequentialColorRanges,
150
171
  pickQualitativePalette,
151
172
  punchcardColorForValue,
152
173
  punchcardLayoutMaxRadius,
153
174
  punchcardLeftGutter,
154
175
  punchcardRadiusForValue,
155
176
  punchcardScaledRadius,
156
- resolveFormattingColor
177
+ resolveFormattingColor,
178
+ sequentialColorForValue
157
179
  };
158
180
  //# sourceMappingURL=fuse-palette.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fuse-palette.js","sources":["../../src/utils/fuse-palette.ts"],"sourcesContent":["/**\n * FuseDash palette resolution — mirrors\n * `client/.../getQualitativePalette` + `getCurrentColor` + SequentialColors1.\n */\n\nexport type FuseFormattingEntry = { key?: string; color?: string | number };\n\nexport const QUALITATIVE_2: string[] = ['#473DD9', '#36C4A5'];\n\nexport const QUALITATIVE_4: string[] = [\n '#473DD9',\n '#36C4A5',\n '#FF8C47',\n '#56546D',\n];\n\n/** Qualitative12Colors.default */\nexport const QUALITATIVE_12: string[] = [\n '#473DD9',\n '#938CFF',\n '#36C4A5',\n '#ADF4E5',\n '#BDBCC8',\n '#56546D',\n '#FF8C47',\n '#FFCEB0',\n '#FF4781',\n '#FFB0C9',\n '#47B0FF',\n '#B0DDFF',\n];\n\n/** SequentialColors1.default — punchcard magnitude bands */\nexport const SEQUENTIAL_1: string[] = [\n '#D6D3FF',\n '#B5B0FF',\n '#938CFF',\n '#7369FF',\n '#5448FF',\n '#473DD9',\n '#3C33B5',\n];\n\n/** FuseDash punchcard discrete radii per color band */\nexport const PUNCHCARD_RADII = [5, 10, 14, 17, 20, 24, 26] as const;\n\n/** Client PunchcardChart bubble + frame tokens */\nexport const PUNCHCARD_MAX_BUBBLE_RADIUS = 30;\nexport const PUNCHCARD_MIN_BUBBLE_RADIUS = 8;\nexport const PUNCHCARD_MIN_LABEL_RADIUS = 16;\nexport const PUNCHCARD_BOTTOM_MARGIN = 21;\nexport const PUNCHCARD_LABEL_GUTTER_PAD = 10;\n\n/** Tight left gutter from longest Y category (years ≈ 40px, not fixed 80). */\nexport function punchcardLeftGutter(\n categories: string[],\n fontSize = 11,\n): number {\n const longest = categories.reduce(\n (max, c) => Math.max(max, String(c).length),\n 0,\n );\n const chars = Math.max(longest, 3);\n return Math.ceil(chars * fontSize * 0.6) + PUNCHCARD_LABEL_GUTTER_PAD + 8;\n}\n\n/** @deprecated Use punchcardLeftGutter() */\nexport const PUNCHCARD_LEFT_MARGIN = 80;\n\n/** Max bubble radius that fits the plot without clipping (FuseDash range inset). */\nexport function punchcardLayoutMaxRadius(\n plotWidth: number,\n plotHeight: number,\n xCount: number,\n yCount: number,\n): number {\n if (xCount <= 0 || yCount <= 0) return PUNCHCARD_MAX_BUBBLE_RADIUS;\n const byX = plotWidth / xCount / 2;\n const byY = plotHeight / yCount / 2;\n return Math.min(PUNCHCARD_MAX_BUBBLE_RADIUS, byX, byY);\n}\n\n/**\n * Client rule: formatting.length ≤2 → Q2, 3–4 → Q4, >4 → Q12.\n * Falls back to seriesCount when formatting is empty.\n */\nexport function pickQualitativePalette(\n formattingCount: number,\n seriesCount = 1,\n): string[] {\n const n = formattingCount > 0 ? formattingCount : seriesCount;\n if (n > 4) return QUALITATIVE_12;\n if (n > 2) return QUALITATIVE_4;\n return QUALITATIVE_2;\n}\n\n/**\n * Resolve hex for a formatting key (group / category / \"default\").\n * Color indices are 1-based strings matching palette `key`.\n */\nexport function resolveFormattingColor(\n formatting: FuseFormattingEntry[] | null | undefined,\n key: string,\n seriesCount = 1,\n): string {\n const colors = formatting?.length\n ? formatting\n : [{ key: 'default', color: '1' }];\n const palette = pickQualitativePalette(colors.length, seriesCount);\n const entry = colors.find((item) => String(item.key) === String(key));\n const raw = entry?.color ?? colors[0]?.color ?? 1;\n const colorIndex = Number(raw);\n const idx = Number.isFinite(colorIndex) ? colorIndex : 1;\n // Client: find by key string first, else cycle (colorIndex - 1) % length\n const direct = palette[idx - 1];\n if (direct) return direct;\n return palette[(((idx - 1) % palette.length) + palette.length) % palette.length];\n}\n\n/** Apply qualitative colors onto a list of series/group ids. */\nexport function colorMapForKeys(\n keys: string[],\n formatting?: FuseFormattingEntry[] | null,\n): Map<string, string> {\n const map = new Map<string, string>();\n for (const key of keys) {\n map.set(key, resolveFormattingColor(formatting, key, keys.length));\n }\n return map;\n}\n\nexport type PunchcardColorRange = {\n color: string;\n radius: number;\n start: number;\n end: number;\n};\n\n/** Mirrors client `generateBreakPoints` (quantile ladder, default 7). */\nexport function generateBreakPoints(\n values: number[],\n numBreaks = 7,\n): number[] {\n const sorted = values\n .map((v) => (typeof v === 'number' ? v : Number(v)))\n .filter((v) => Number.isFinite(v))\n .slice()\n .sort((a, b) => a - b);\n if (!sorted.length || numBreaks < 2) return [];\n\n const breakPoints: number[] = [];\n for (let i = 0; i < numBreaks; i++) {\n const quantilePosition = (i / (numBreaks - 1)) * (sorted.length - 1);\n const lowerIndex = Math.max(0, Math.floor(quantilePosition));\n const upperIndex = Math.min(sorted.length - 1, Math.ceil(quantilePosition));\n const weight = quantilePosition - lowerIndex;\n breakPoints.push(\n sorted[lowerIndex] * (1 - weight) + sorted[upperIndex] * weight,\n );\n }\n return breakPoints;\n}\n\n/** Mirrors client `generateColorRanges` for punchcard bubbles. */\nexport function generatePunchcardColorRanges(\n values: number[],\n variations: string[] = SEQUENTIAL_1,\n): PunchcardColorRange[] {\n if (!variations.length || !values.length) return [];\n\n const sortedValues = [...new Set(values.map(Math.abs))].sort((a, b) => a - b);\n const steps = generateBreakPoints(sortedValues);\n if (!steps.length) return [];\n\n return steps.map((_step, i) => ({\n color: variations[i] ?? variations[variations.length - 1] ?? '#473DD9',\n radius: PUNCHCARD_RADII[i] ?? PUNCHCARD_RADII[PUNCHCARD_RADII.length - 1],\n start:\n -Math.ceil(\n i === steps.length - 1\n ? sortedValues[sortedValues.length - 1]\n : steps[i + 1],\n ) - 1,\n end:\n Math.ceil(\n i === steps.length - 1\n ? sortedValues[sortedValues.length - 1]\n : steps[i + 1],\n ) + 1,\n }));\n}\n\nexport function punchcardColorForValue(\n value: number,\n ranges: PunchcardColorRange[],\n): string {\n if (!ranges.length) return SEQUENTIAL_1[0];\n if (!value) return ranges[0].color;\n const range = ranges.find((r) => value >= r.start && value <= r.end);\n return range?.color ?? ranges[0].color;\n}\n\nexport function punchcardRadiusForValue(\n value: number,\n ranges: PunchcardColorRange[],\n): number {\n if (!ranges.length) return 5;\n const abs = Math.abs(value);\n const range = ranges.find((r) => abs >= r.start && abs <= r.end);\n return range?.radius ?? 5;\n}\n\n/** Mirrors client BubbleChart `generateColorRanges` — transparent bands, radius-only. */\nexport function generateBubbleColorRanges(\n values: number[],\n ranges?: number[] | null,\n): PunchcardColorRange[] {\n if (!values.length) return [];\n\n const absValues = [...new Set(values.map(Math.abs))].sort((a, b) => a - b);\n const absCount = absValues.length;\n const steps = ranges?.length ? ranges : generateBreakPoints(absValues);\n if (!steps.length) return [];\n\n return steps.map((step, i) => ({\n color: 'transparent',\n radius: PUNCHCARD_RADII[i] ?? PUNCHCARD_RADII[PUNCHCARD_RADII.length - 1],\n start: step,\n end:\n i === steps.length - 1\n ? absCount > 0\n ? absValues[absCount - 1]\n : 0\n : steps[i + 1],\n }));\n}\n\n/** Alias — bubble radii use the same abs(y) band lookup as punchcard. */\nexport const bubbleRadiusForValue = punchcardRadiusForValue;\n\n/** Scale discrete band radii when plot is shorter than FuseDash default height. */\nexport function punchcardScaledRadius(\n value: number,\n ranges: PunchcardColorRange[],\n layoutMaxR: number,\n): number {\n const raw = punchcardRadiusForValue(value, ranges);\n const bandMax = Math.max(...ranges.map((r) => r.radius), PUNCHCARD_MIN_BUBBLE_RADIUS);\n const scale = layoutMaxR / Math.max(bandMax, PUNCHCARD_MIN_BUBBLE_RADIUS);\n return Math.max(\n PUNCHCARD_MIN_BUBBLE_RADIUS,\n Math.min(layoutMaxR, raw * Math.min(1, scale)),\n );\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fuse-palette.js","sources":["../../src/utils/fuse-palette.ts"],"sourcesContent":["/**\n * FuseDash palette resolution — mirrors\n * `client/.../getQualitativePalette` + `getCurrentColor` + SequentialColors1.\n */\n\nexport type FuseFormattingEntry = { key?: string; color?: string | number };\n\nexport const QUALITATIVE_2: string[] = ['#473DD9', '#36C4A5'];\n\nexport const QUALITATIVE_4: string[] = [\n '#473DD9',\n '#36C4A5',\n '#FF8C47',\n '#56546D',\n];\n\n/** Qualitative12Colors.default */\nexport const QUALITATIVE_12: string[] = [\n '#473DD9',\n '#938CFF',\n '#36C4A5',\n '#ADF4E5',\n '#BDBCC8',\n '#56546D',\n '#FF8C47',\n '#FFCEB0',\n '#FF4781',\n '#FFB0C9',\n '#47B0FF',\n '#B0DDFF',\n];\n\n/** SequentialColors1.default — punchcard magnitude bands */\nexport const SEQUENTIAL_1: string[] = [\n '#D6D3FF',\n '#B5B0FF',\n '#938CFF',\n '#7369FF',\n '#5448FF',\n '#473DD9',\n '#3C33B5',\n];\n\n/** FuseDash punchcard discrete radii per color band */\nexport const PUNCHCARD_RADII = [5, 10, 14, 17, 20, 24, 26] as const;\n\n/** Client PunchcardChart bubble + frame tokens */\nexport const PUNCHCARD_MAX_BUBBLE_RADIUS = 30;\nexport const PUNCHCARD_MIN_BUBBLE_RADIUS = 8;\nexport const PUNCHCARD_MIN_LABEL_RADIUS = 16;\nexport const PUNCHCARD_BOTTOM_MARGIN = 21;\nexport const PUNCHCARD_LABEL_GUTTER_PAD = 10;\n\n/** Tight left gutter from longest Y category (years ≈ 40px, not fixed 80). */\nexport function punchcardLeftGutter(\n categories: string[],\n fontSize = 11,\n): number {\n const longest = categories.reduce(\n (max, c) => Math.max(max, String(c).length),\n 0,\n );\n const chars = Math.max(longest, 3);\n return Math.ceil(chars * fontSize * 0.6) + PUNCHCARD_LABEL_GUTTER_PAD + 8;\n}\n\n/** @deprecated Use punchcardLeftGutter() */\nexport const PUNCHCARD_LEFT_MARGIN = 80;\n\n/** Max bubble radius that fits the plot without clipping (FuseDash range inset). */\nexport function punchcardLayoutMaxRadius(\n plotWidth: number,\n plotHeight: number,\n xCount: number,\n yCount: number,\n): number {\n if (xCount <= 0 || yCount <= 0) return PUNCHCARD_MAX_BUBBLE_RADIUS;\n const byX = plotWidth / xCount / 2;\n const byY = plotHeight / yCount / 2;\n return Math.min(PUNCHCARD_MAX_BUBBLE_RADIUS, byX, byY);\n}\n\n/**\n * Client rule: formatting.length ≤2 → Q2, 3–4 → Q4, >4 → Q12.\n * Falls back to seriesCount when formatting is empty.\n */\nexport function pickQualitativePalette(\n formattingCount: number,\n seriesCount = 1,\n): string[] {\n const n = formattingCount > 0 ? formattingCount : seriesCount;\n if (n > 4) return QUALITATIVE_12;\n if (n > 2) return QUALITATIVE_4;\n return QUALITATIVE_2;\n}\n\n/**\n * Resolve hex for a formatting key (group / category / \"default\").\n * Color indices are 1-based strings matching palette `key`.\n */\nexport function resolveFormattingColor(\n formatting: FuseFormattingEntry[] | null | undefined,\n key: string,\n seriesCount = 1,\n): string {\n const colors = formatting?.length\n ? formatting\n : [{ key: 'default', color: '1' }];\n const palette = pickQualitativePalette(colors.length, seriesCount);\n const entry = colors.find((item) => String(item.key) === String(key));\n const raw = entry?.color ?? colors[0]?.color ?? 1;\n const colorIndex = Number(raw);\n const idx = Number.isFinite(colorIndex) ? colorIndex : 1;\n // Client: find by key string first, else cycle (colorIndex - 1) % length\n const direct = palette[idx - 1];\n if (direct) return direct;\n return palette[(((idx - 1) % palette.length) + palette.length) % palette.length];\n}\n\n/** Apply qualitative colors onto a list of series/group ids. */\nexport function colorMapForKeys(\n keys: string[],\n formatting?: FuseFormattingEntry[] | null,\n): Map<string, string> {\n const map = new Map<string, string>();\n for (const key of keys) {\n map.set(key, resolveFormattingColor(formatting, key, keys.length));\n }\n return map;\n}\n\nexport type PunchcardColorRange = {\n color: string;\n radius: number;\n start: number;\n end: number;\n};\n\n/** Mirrors client `generateBreakPoints` (quantile ladder, default 7). */\nexport function generateBreakPoints(\n values: number[],\n numBreaks = 7,\n): number[] {\n const sorted = values\n .map((v) => (typeof v === 'number' ? v : Number(v)))\n .filter((v) => Number.isFinite(v))\n .slice()\n .sort((a, b) => a - b);\n if (!sorted.length || numBreaks < 2) return [];\n\n const breakPoints: number[] = [];\n for (let i = 0; i < numBreaks; i++) {\n const quantilePosition = (i / (numBreaks - 1)) * (sorted.length - 1);\n const lowerIndex = Math.max(0, Math.floor(quantilePosition));\n const upperIndex = Math.min(sorted.length - 1, Math.ceil(quantilePosition));\n const weight = quantilePosition - lowerIndex;\n breakPoints.push(\n sorted[lowerIndex] * (1 - weight) + sorted[upperIndex] * weight,\n );\n }\n return breakPoints;\n}\n\n/** Mirrors client `generateColorRanges` for punchcard bubbles. */\nexport function generatePunchcardColorRanges(\n values: number[],\n variations: string[] = SEQUENTIAL_1,\n): PunchcardColorRange[] {\n if (!variations.length || !values.length) return [];\n\n const sortedValues = [...new Set(values.map(Math.abs))].sort((a, b) => a - b);\n const steps = generateBreakPoints(sortedValues);\n if (!steps.length) return [];\n\n return steps.map((_step, i) => ({\n color: variations[i] ?? variations[variations.length - 1] ?? '#473DD9',\n radius: PUNCHCARD_RADII[i] ?? PUNCHCARD_RADII[PUNCHCARD_RADII.length - 1],\n start:\n -Math.ceil(\n i === steps.length - 1\n ? sortedValues[sortedValues.length - 1]\n : steps[i + 1],\n ) - 1,\n end:\n Math.ceil(\n i === steps.length - 1\n ? sortedValues[sortedValues.length - 1]\n : steps[i + 1],\n ) + 1,\n }));\n}\n\nexport function punchcardColorForValue(\n value: number,\n ranges: PunchcardColorRange[],\n): string {\n if (!ranges.length) return SEQUENTIAL_1[0];\n if (!value) return ranges[0].color;\n const range = ranges.find((r) => value >= r.start && value <= r.end);\n return range?.color ?? ranges[0].color;\n}\n\nexport function punchcardRadiusForValue(\n value: number,\n ranges: PunchcardColorRange[],\n): number {\n if (!ranges.length) return 5;\n const abs = Math.abs(value);\n const range = ranges.find((r) => abs >= r.start && abs <= r.end);\n return range?.radius ?? 5;\n}\n\n/** Mirrors client BubbleChart `generateColorRanges` — transparent bands, radius-only. */\nexport function generateBubbleColorRanges(\n values: number[],\n ranges?: number[] | null,\n): PunchcardColorRange[] {\n if (!values.length) return [];\n\n const absValues = [...new Set(values.map(Math.abs))].sort((a, b) => a - b);\n const absCount = absValues.length;\n const steps = ranges?.length ? ranges : generateBreakPoints(absValues);\n if (!steps.length) return [];\n\n return steps.map((step, i) => ({\n color: 'transparent',\n radius: PUNCHCARD_RADII[i] ?? PUNCHCARD_RADII[PUNCHCARD_RADII.length - 1],\n start: step,\n end:\n i === steps.length - 1\n ? absCount > 0\n ? absValues[absCount - 1]\n : 0\n : steps[i + 1],\n }));\n}\n\n/** Alias — bubble radii use the same abs(y) band lookup as punchcard. */\nexport const bubbleRadiusForValue = punchcardRadiusForValue;\n\n/** Scale discrete band radii when plot is shorter than FuseDash default height. */\nexport function punchcardScaledRadius(\n value: number,\n ranges: PunchcardColorRange[],\n layoutMaxR: number,\n): number {\n const raw = punchcardRadiusForValue(value, ranges);\n const bandMax = Math.max(...ranges.map((r) => r.radius), PUNCHCARD_MIN_BUBBLE_RADIUS);\n const scale = layoutMaxR / Math.max(bandMax, PUNCHCARD_MIN_BUBBLE_RADIUS);\n return Math.max(\n PUNCHCARD_MIN_BUBBLE_RADIUS,\n Math.min(layoutMaxR, raw * Math.min(1, scale)),\n );\n}\n\nexport type SequentialColorRange = {\n color: string;\n start: number;\n end: number;\n};\n\n/**\n * Mirrors client `generateColorRanges` (MatrixChart / palette legend):\n * a quantile ladder over the distinct values, one band per palette color.\n */\nexport function generateSequentialColorRanges(\n values: number[],\n variations: string[] = SEQUENTIAL_1,\n ranges?: number[] | null,\n): SequentialColorRange[] {\n if (!variations.length || !values.length) return [];\n\n const sortedValues = [...new Set(values)].sort((a, b) => a - b);\n const steps = ranges?.length ? ranges : generateBreakPoints(sortedValues);\n const count = Math.min(steps.length, variations.length);\n\n const out: SequentialColorRange[] = [];\n for (let i = 0; i < count; i += 1) {\n out.push({\n color: variations[i],\n start: Number(steps[i]),\n end:\n i === count - 1\n ? sortedValues[sortedValues.length - 1]\n : Number(steps[i + 1]),\n });\n }\n return out;\n}\n\n/** Client `getColor`: first band containing the value, else the lowest band. */\nexport function sequentialColorForValue(\n value: number,\n ranges: SequentialColorRange[],\n): string | null {\n if (!ranges.length) return null;\n const range = ranges.find((r) => value >= r.start && value <= r.end);\n return range?.color ?? ranges[0].color;\n}\n"],"names":[],"mappings":"AAOO,MAAM,gBAA0B,CAAC,WAAW,SAAS;AAErD,MAAM,gBAA0B;AAAA,EACrC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAGO,MAAM,iBAA2B;AAAA,EACtC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAGO,MAAM,eAAyB;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAGO,MAAM,kBAAkB,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE;AAGlD,MAAM,8BAA8B;AACpC,MAAM,8BAA8B;AACpC,MAAM,6BAA6B;AACnC,MAAM,0BAA0B;AAChC,MAAM,6BAA6B;AAGnC,SAAS,oBACd,YACA,WAAW,IACH;AACR,QAAM,UAAU,WAAW;AAAA,IACzB,CAAC,KAAK,MAAM,KAAK,IAAI,KAAK,OAAO,CAAC,EAAE,MAAM;AAAA,IAC1C;AAAA,EAAA;AAEF,QAAM,QAAQ,KAAK,IAAI,SAAS,CAAC;AACjC,SAAO,KAAK,KAAK,QAAQ,WAAW,GAAG,IAAI,6BAA6B;AAC1E;AAMO,SAAS,yBACd,WACA,YACA,QACA,QACQ;AACR,MAAI,UAAU,KAAK,UAAU,EAAG,QAAO;AACvC,QAAM,MAAM,YAAY,SAAS;AACjC,QAAM,MAAM,aAAa,SAAS;AAClC,SAAO,KAAK,IAAI,6BAA6B,KAAK,GAAG;AACvD;AAMO,SAAS,uBACd,iBACA,cAAc,GACJ;AACV,QAAM,IAAI,kBAAkB,IAAI,kBAAkB;AAClD,MAAI,IAAI,EAAG,QAAO;AAClB,MAAI,IAAI,EAAG,QAAO;AAClB,SAAO;AACT;AAMO,SAAS,uBACd,YACA,KACA,cAAc,GACN;AAjGH;AAkGL,QAAM,UAAS,yCAAY,UACvB,aACA,CAAC,EAAE,KAAK,WAAW,OAAO,KAAK;AACnC,QAAM,UAAU,uBAAuB,OAAO,QAAQ,WAAW;AACjE,QAAM,QAAQ,OAAO,KAAK,CAAC,SAAS,OAAO,KAAK,GAAG,MAAM,OAAO,GAAG,CAAC;AACpE,QAAM,OAAM,+BAAO,YAAS,YAAO,CAAC,MAAR,mBAAW,UAAS;AAChD,QAAM,aAAa,OAAO,GAAG;AAC7B,QAAM,MAAM,OAAO,SAAS,UAAU,IAAI,aAAa;AAEvD,QAAM,SAAS,QAAQ,MAAM,CAAC;AAC9B,MAAI,OAAQ,QAAO;AACnB,SAAO,UAAW,MAAM,KAAK,QAAQ,SAAU,QAAQ,UAAU,QAAQ,MAAM;AACjF;AAsBO,SAAS,oBACd,QACA,YAAY,GACF;AACV,QAAM,SAAS,OACZ,IAAI,CAAC,MAAO,OAAO,MAAM,WAAW,IAAI,OAAO,CAAC,CAAE,EAClD,OAAO,CAAC,MAAM,OAAO,SAAS,CAAC,CAAC,EAChC,QACA,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC;AACvB,MAAI,CAAC,OAAO,UAAU,YAAY,UAAU,CAAA;AAE5C,QAAM,cAAwB,CAAA;AAC9B,WAAS,IAAI,GAAG,IAAI,WAAW,KAAK;AAClC,UAAM,mBAAoB,KAAK,YAAY,MAAO,OAAO,SAAS;AAClE,UAAM,aAAa,KAAK,IAAI,GAAG,KAAK,MAAM,gBAAgB,CAAC;AAC3D,UAAM,aAAa,KAAK,IAAI,OAAO,SAAS,GAAG,KAAK,KAAK,gBAAgB,CAAC;AAC1E,UAAM,SAAS,mBAAmB;AAClC,gBAAY;AAAA,MACV,OAAO,UAAU,KAAK,IAAI,UAAU,OAAO,UAAU,IAAI;AAAA,IAAA;AAAA,EAE7D;AACA,SAAO;AACT;AAGO,SAAS,6BACd,QACA,aAAuB,cACA;AACvB,MAAI,CAAC,WAAW,UAAU,CAAC,OAAO,eAAe,CAAA;AAEjD,QAAM,eAAe,CAAC,GAAG,IAAI,IAAI,OAAO,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC;AAC5E,QAAM,QAAQ,oBAAoB,YAAY;AAC9C,MAAI,CAAC,MAAM,OAAQ,QAAO,CAAA;AAE1B,SAAO,MAAM,IAAI,CAAC,OAAO,OAAO;AAAA,IAC9B,OAAO,WAAW,CAAC,KAAK,WAAW,WAAW,SAAS,CAAC,KAAK;AAAA,IAC7D,QAAQ,gBAAgB,CAAC,KAAK,gBAAgB,gBAAgB,SAAS,CAAC;AAAA,IACxE,OACE,CAAC,KAAK;AAAA,MACJ,MAAM,MAAM,SAAS,IACjB,aAAa,aAAa,SAAS,CAAC,IACpC,MAAM,IAAI,CAAC;AAAA,IAAA,IACb;AAAA,IACN,KACE,KAAK;AAAA,MACH,MAAM,MAAM,SAAS,IACjB,aAAa,aAAa,SAAS,CAAC,IACpC,MAAM,IAAI,CAAC;AAAA,IAAA,IACb;AAAA,EAAA,EACN;AACJ;AAEO,SAAS,uBACd,OACA,QACQ;AACR,MAAI,CAAC,OAAO,OAAQ,QAAO,aAAa,CAAC;AACzC,MAAI,CAAC,MAAO,QAAO,OAAO,CAAC,EAAE;AAC7B,QAAM,QAAQ,OAAO,KAAK,CAAC,MAAM,SAAS,EAAE,SAAS,SAAS,EAAE,GAAG;AACnE,UAAO,+BAAO,UAAS,OAAO,CAAC,EAAE;AACnC;AAEO,SAAS,wBACd,OACA,QACQ;AACR,MAAI,CAAC,OAAO,OAAQ,QAAO;AAC3B,QAAM,MAAM,KAAK,IAAI,KAAK;AAC1B,QAAM,QAAQ,OAAO,KAAK,CAAC,MAAM,OAAO,EAAE,SAAS,OAAO,EAAE,GAAG;AAC/D,UAAO,+BAAO,WAAU;AAC1B;AAGO,SAAS,0BACd,QACA,QACuB;AACvB,MAAI,CAAC,OAAO,OAAQ,QAAO,CAAA;AAE3B,QAAM,YAAY,CAAC,GAAG,IAAI,IAAI,OAAO,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC;AACzE,QAAM,WAAW,UAAU;AAC3B,QAAM,SAAQ,iCAAQ,UAAS,SAAS,oBAAoB,SAAS;AACrE,MAAI,CAAC,MAAM,OAAQ,QAAO,CAAA;AAE1B,SAAO,MAAM,IAAI,CAAC,MAAM,OAAO;AAAA,IAC7B,OAAO;AAAA,IACP,QAAQ,gBAAgB,CAAC,KAAK,gBAAgB,gBAAgB,SAAS,CAAC;AAAA,IACxE,OAAO;AAAA,IACP,KACE,MAAM,MAAM,SAAS,IACjB,WAAW,IACT,UAAU,WAAW,CAAC,IACtB,IACF,MAAM,IAAI,CAAC;AAAA,EAAA,EACjB;AACJ;AAGO,MAAM,uBAAuB;AAG7B,SAAS,sBACd,OACA,QACA,YACQ;AACR,QAAM,MAAM,wBAAwB,OAAO,MAAM;AACjD,QAAM,UAAU,KAAK,IAAI,GAAG,OAAO,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,2BAA2B;AACpF,QAAM,QAAQ,aAAa,KAAK,IAAI,SAAS,2BAA2B;AACxE,SAAO,KAAK;AAAA,IACV;AAAA,IACA,KAAK,IAAI,YAAY,MAAM,KAAK,IAAI,GAAG,KAAK,CAAC;AAAA,EAAA;AAEjD;AAYO,SAAS,8BACd,QACA,aAAuB,cACvB,QACwB;AACxB,MAAI,CAAC,WAAW,UAAU,CAAC,OAAO,eAAe,CAAA;AAEjD,QAAM,eAAe,CAAC,GAAG,IAAI,IAAI,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC;AAC9D,QAAM,QAAkC,oBAAoB,YAAY;AACxE,QAAM,QAAQ,KAAK,IAAI,MAAM,QAAQ,WAAW,MAAM;AAEtD,QAAM,MAA8B,CAAA;AACpC,WAAS,IAAI,GAAG,IAAI,OAAO,KAAK,GAAG;AACjC,QAAI,KAAK;AAAA,MACP,OAAO,WAAW,CAAC;AAAA,MACnB,OAAO,OAAO,MAAM,CAAC,CAAC;AAAA,MACtB,KACE,MAAM,QAAQ,IACV,aAAa,aAAa,SAAS,CAAC,IACpC,OAAO,MAAM,IAAI,CAAC,CAAC;AAAA,IAAA,CAC1B;AAAA,EACH;AACA,SAAO;AACT;AAGO,SAAS,wBACd,OACA,QACe;AACf,MAAI,CAAC,OAAO,OAAQ,QAAO;AAC3B,QAAM,QAAQ,OAAO,KAAK,CAAC,MAAM,SAAS,EAAE,SAAS,SAAS,EAAE,GAAG;AACnE,UAAO,+BAAO,UAAS,OAAO,CAAC,EAAE;AACnC;"}
@@ -1,10 +1,17 @@
1
+ import { AxisDetail } from './axis-units.js';
1
2
  import { FuseFormattingEntry } from './fuse-palette.js';
3
+ import { FuseAxisDetail } from './format-text.js';
4
+ export type { FuseAxisDetail };
2
5
  export type FuseWidgetLike = {
3
6
  chartType?: string;
4
7
  stacked?: boolean;
5
8
  xAxe?: string | string[] | null;
6
9
  yAxe?: string | string[] | null;
7
10
  groupBy?: string | string[] | null;
11
+ /** Treemap nests this second dimension inside each `groupBy` card */
12
+ subgroup?: string | null;
13
+ /** Treemap / KPI measured column — takes precedence over `yAxe` */
14
+ metric?: string | string[] | null;
8
15
  uniqueValues?: Record<string, string[]> | null;
9
16
  orientation?: string | null;
10
17
  formatting?: FuseFormattingEntry[] | null;
@@ -12,10 +19,12 @@ export type FuseWidgetLike = {
12
19
  key?: string;
13
20
  shape?: string;
14
21
  }> | null;
15
- axisDetails?: Record<string, {
16
- label?: string;
17
- measure_unit_symbol?: string;
18
- }> | null;
22
+ axisDetails?: Record<string, AxisDetail> | null;
23
+ /** Widget palette overrides — `range` pins the treemap color break points */
24
+ palette?: {
25
+ paletteId?: string;
26
+ range?: number[];
27
+ } | null;
19
28
  data?: unknown;
20
29
  };
21
30
  export declare function firstField(value: string | string[] | null | undefined): string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"fuse-widget.d.ts","sourceRoot":"","sources":["../../src/utils/fuse-widget.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE7D,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC;IAChC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC;IACnC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC;IAC/C,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,CAAC,EAAE,mBAAmB,EAAE,GAAG,IAAI,CAAC;IAC1C,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI,CAAC;IACzD,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,mBAAmB,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI,CAAC;IACtF,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,wBAAgB,UAAU,CACxB,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,GAAG,SAAS,GAC1C,MAAM,GAAG,SAAS,CAOpB;AAED,2EAA2E;AAC3E,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAI3E;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS,CAK5E;AAED,wBAAgB,MAAM,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAKxE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAI7D;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,EAC1B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,GAAG,SAAS,EACzD,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC3B,MAAM,EAAE,CAsBV;AAED,4DAA4D;AAC5D,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,cAAc,GACrB,MAAM,EAAE,GAAG,SAAS,CAItB"}
1
+ {"version":3,"file":"fuse-widget.d.ts","sourceRoot":"","sources":["../../src/utils/fuse-widget.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,YAAY,EAAE,cAAc,EAAE,CAAC;AAE/B,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC;IAChC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC;IACnC,qEAAqE;IACrE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,mEAAmE;IACnE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC;IAC/C,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,CAAC,EAAE,mBAAmB,EAAE,GAAG,IAAI,CAAC;IAC1C,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI,CAAC;IACzD,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,IAAI,CAAC;IAChD,6EAA6E;IAC7E,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,IAAI,CAAC;IAC1D,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,wBAAgB,UAAU,CACxB,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,GAAG,SAAS,GAC1C,MAAM,GAAG,SAAS,CAOpB;AAED,2EAA2E;AAC3E,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAI3E;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS,CAK5E;AAED,wBAAgB,MAAM,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAKxE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAI7D;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,EAC1B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,GAAG,SAAS,EACzD,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC3B,MAAM,EAAE,CAsBV;AAED,4DAA4D;AAC5D,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,cAAc,GACrB,MAAM,EAAE,GAAG,SAAS,CAItB"}
@@ -1 +1 @@
1
- {"version":3,"file":"fuse-widget.js","sources":["../../src/utils/fuse-widget.ts"],"sourcesContent":["/**\n * Shared helpers for FuseDash WidgetItem-shaped payloads from\n * `client/apps/charts/src/app/constants/default*.ts`.\n */\n\nimport type { FuseFormattingEntry } from './fuse-palette.js';\n\nexport type FuseWidgetLike = {\n chartType?: string;\n stacked?: boolean;\n xAxe?: string | string[] | null;\n yAxe?: string | string[] | null;\n groupBy?: string | string[] | null;\n uniqueValues?: Record<string, string[]> | null;\n orientation?: string | null;\n formatting?: FuseFormattingEntry[] | null;\n markers?: Array<{ key?: string; shape?: string }> | null;\n axisDetails?: Record<string, { label?: string; measure_unit_symbol?: string }> | null;\n data?: unknown;\n};\n\nexport function firstField(\n value: string | string[] | null | undefined,\n): string | undefined {\n if (Array.isArray(value)) {\n const v = value[0];\n return v != null && String(v) !== '' ? String(v) : undefined;\n }\n if (value == null || value === '') return undefined;\n return String(value);\n}\n\n/** True when payload looks like a FuseDash widget (`data` rows + axes). */\nexport function isFuseWidgetPayload(input: unknown): input is FuseWidgetLike {\n if (!input || typeof input !== 'object' || Array.isArray(input)) return false;\n const o = input as FuseWidgetLike;\n return Array.isArray(o.data);\n}\n\n/**\n * Categorical key for punchcard Y / grouping — mirrors client PunchcardChart:\n * `groupBy?.[0] ?? Object.keys(uniqueValues)[0]`.\n */\nexport function resolveGroupByKey(widget: FuseWidgetLike): string | undefined {\n const fromGroup = firstField(widget.groupBy ?? undefined);\n if (fromGroup) return fromGroup;\n const keys = widget.uniqueValues ? Object.keys(widget.uniqueValues) : [];\n return keys[0];\n}\n\nexport function rowsOf(widget: FuseWidgetLike): Record<string, unknown>[] {\n if (!Array.isArray(widget.data)) return [];\n return widget.data.filter(\n (r): r is Record<string, unknown> => !!r && typeof r === 'object' && !Array.isArray(r),\n );\n}\n\nexport function filterTruthyValues(values: string[]): string[] {\n return values.filter(\n (v) => v != null && v !== '' && v !== 'null' && v !== 'undefined',\n );\n}\n\n/**\n * Order categorical keys by FuseDash `uniqueValues[fieldKey]`, keeping any\n * extra data keys at the end in first-seen order.\n */\nexport function resolveUniqueValuesOrder(\n dataKeys: Iterable<string>,\n uniqueValues: Record<string, string[]> | null | undefined,\n fieldKey: string | undefined,\n): string[] {\n const dataSet = new Set(dataKeys);\n const fromUv =\n fieldKey && uniqueValues?.[fieldKey]?.length\n ? filterTruthyValues(uniqueValues[fieldKey].map(String))\n : null;\n if (fromUv?.length) {\n const ordered = fromUv.filter((k) => dataSet.has(k));\n for (const k of dataSet) {\n if (!ordered.includes(k)) ordered.push(k);\n }\n return ordered;\n }\n const seen = new Set<string>();\n const out: string[] = [];\n for (const k of dataKeys) {\n if (!seen.has(k)) {\n seen.add(k);\n out.push(k);\n }\n }\n return out;\n}\n\n/** Categorical x-axis order from a FuseDash widget mock. */\nexport function xDomainHintFromWidget(\n widget: FuseWidgetLike,\n): string[] | undefined {\n const xKey = firstField(widget.xAxe ?? undefined);\n if (!xKey || !widget.uniqueValues?.[xKey]?.length) return undefined;\n return filterTruthyValues(widget.uniqueValues[xKey].map(String));\n}\n"],"names":[],"mappings":"AAqBO,SAAS,WACd,OACoB;AACpB,MAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,UAAM,IAAI,MAAM,CAAC;AACjB,WAAO,KAAK,QAAQ,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,IAAI;AAAA,EACrD;AACA,MAAI,SAAS,QAAQ,UAAU,GAAI,QAAO;AAC1C,SAAO,OAAO,KAAK;AACrB;AAGO,SAAS,oBAAoB,OAAyC;AAC3E,MAAI,CAAC,SAAS,OAAO,UAAU,YAAY,MAAM,QAAQ,KAAK,EAAG,QAAO;AACxE,QAAM,IAAI;AACV,SAAO,MAAM,QAAQ,EAAE,IAAI;AAC7B;AAMO,SAAS,kBAAkB,QAA4C;AAC5E,QAAM,YAAY,WAAW,OAAO,WAAW,MAAS;AACxD,MAAI,UAAW,QAAO;AACtB,QAAM,OAAO,OAAO,eAAe,OAAO,KAAK,OAAO,YAAY,IAAI,CAAA;AACtE,SAAO,KAAK,CAAC;AACf;AAEO,SAAS,OAAO,QAAmD;AACxE,MAAI,CAAC,MAAM,QAAQ,OAAO,IAAI,UAAU,CAAA;AACxC,SAAO,OAAO,KAAK;AAAA,IACjB,CAAC,MAAoC,CAAC,CAAC,KAAK,OAAO,MAAM,YAAY,CAAC,MAAM,QAAQ,CAAC;AAAA,EAAA;AAEzF;AAEO,SAAS,mBAAmB,QAA4B;AAC7D,SAAO,OAAO;AAAA,IACZ,CAAC,MAAM,KAAK,QAAQ,MAAM,MAAM,MAAM,UAAU,MAAM;AAAA,EAAA;AAE1D;AAMO,SAAS,yBACd,UACA,cACA,UACU;AAlDL;AAmDL,QAAM,UAAU,IAAI,IAAI,QAAQ;AAChC,QAAM,SACJ,cAAY,kDAAe,cAAf,mBAA0B,UAClC,mBAAmB,aAAa,QAAQ,EAAE,IAAI,MAAM,CAAC,IACrD;AACN,MAAI,iCAAQ,QAAQ;AAClB,UAAM,UAAU,OAAO,OAAO,CAAC,MAAM,QAAQ,IAAI,CAAC,CAAC;AACnD,eAAW,KAAK,SAAS;AACvB,UAAI,CAAC,QAAQ,SAAS,CAAC,EAAG,SAAQ,KAAK,CAAC;AAAA,IAC1C;AACA,WAAO;AAAA,EACT;AACA,QAAM,2BAAW,IAAA;AACjB,QAAM,MAAgB,CAAA;AACtB,aAAW,KAAK,UAAU;AACxB,QAAI,CAAC,KAAK,IAAI,CAAC,GAAG;AAChB,WAAK,IAAI,CAAC;AACV,UAAI,KAAK,CAAC;AAAA,IACZ;AAAA,EACF;AACA,SAAO;AACT;AAGO,SAAS,sBACd,QACsB;AA7EjB;AA8EL,QAAM,OAAO,WAAW,OAAO,QAAQ,MAAS;AAChD,MAAI,CAAC,QAAQ,GAAC,kBAAO,iBAAP,mBAAsB,UAAtB,mBAA6B,QAAQ,QAAO;AAC1D,SAAO,mBAAmB,OAAO,aAAa,IAAI,EAAE,IAAI,MAAM,CAAC;AACjE;"}
1
+ {"version":3,"file":"fuse-widget.js","sources":["../../src/utils/fuse-widget.ts"],"sourcesContent":["/**\n * Shared helpers for FuseDash WidgetItem-shaped payloads from\n * `client/apps/charts/src/app/constants/default*.ts`.\n */\n\nimport type { AxisDetail } from './axis-units.js';\nimport type { FuseFormattingEntry } from './fuse-palette.js';\nimport type { FuseAxisDetail } from './format-text.js';\n\nexport type { FuseAxisDetail };\n\nexport type FuseWidgetLike = {\n chartType?: string;\n stacked?: boolean;\n xAxe?: string | string[] | null;\n yAxe?: string | string[] | null;\n groupBy?: string | string[] | null;\n /** Treemap nests this second dimension inside each `groupBy` card */\n subgroup?: string | null;\n /** Treemap / KPI measured column — takes precedence over `yAxe` */\n metric?: string | string[] | null;\n uniqueValues?: Record<string, string[]> | null;\n orientation?: string | null;\n formatting?: FuseFormattingEntry[] | null;\n markers?: Array<{ key?: string; shape?: string }> | null;\n axisDetails?: Record<string, AxisDetail> | null;\n /** Widget palette overrides — `range` pins the treemap color break points */\n palette?: { paletteId?: string; range?: number[] } | null;\n data?: unknown;\n};\n\nexport function firstField(\n value: string | string[] | null | undefined,\n): string | undefined {\n if (Array.isArray(value)) {\n const v = value[0];\n return v != null && String(v) !== '' ? String(v) : undefined;\n }\n if (value == null || value === '') return undefined;\n return String(value);\n}\n\n/** True when payload looks like a FuseDash widget (`data` rows + axes). */\nexport function isFuseWidgetPayload(input: unknown): input is FuseWidgetLike {\n if (!input || typeof input !== 'object' || Array.isArray(input)) return false;\n const o = input as FuseWidgetLike;\n return Array.isArray(o.data);\n}\n\n/**\n * Categorical key for punchcard Y / grouping — mirrors client PunchcardChart:\n * `groupBy?.[0] ?? Object.keys(uniqueValues)[0]`.\n */\nexport function resolveGroupByKey(widget: FuseWidgetLike): string | undefined {\n const fromGroup = firstField(widget.groupBy ?? undefined);\n if (fromGroup) return fromGroup;\n const keys = widget.uniqueValues ? Object.keys(widget.uniqueValues) : [];\n return keys[0];\n}\n\nexport function rowsOf(widget: FuseWidgetLike): Record<string, unknown>[] {\n if (!Array.isArray(widget.data)) return [];\n return widget.data.filter(\n (r): r is Record<string, unknown> => !!r && typeof r === 'object' && !Array.isArray(r),\n );\n}\n\nexport function filterTruthyValues(values: string[]): string[] {\n return values.filter(\n (v) => v != null && v !== '' && v !== 'null' && v !== 'undefined',\n );\n}\n\n/**\n * Order categorical keys by FuseDash `uniqueValues[fieldKey]`, keeping any\n * extra data keys at the end in first-seen order.\n */\nexport function resolveUniqueValuesOrder(\n dataKeys: Iterable<string>,\n uniqueValues: Record<string, string[]> | null | undefined,\n fieldKey: string | undefined,\n): string[] {\n const dataSet = new Set(dataKeys);\n const fromUv =\n fieldKey && uniqueValues?.[fieldKey]?.length\n ? filterTruthyValues(uniqueValues[fieldKey].map(String))\n : null;\n if (fromUv?.length) {\n const ordered = fromUv.filter((k) => dataSet.has(k));\n for (const k of dataSet) {\n if (!ordered.includes(k)) ordered.push(k);\n }\n return ordered;\n }\n const seen = new Set<string>();\n const out: string[] = [];\n for (const k of dataKeys) {\n if (!seen.has(k)) {\n seen.add(k);\n out.push(k);\n }\n }\n return out;\n}\n\n/** Categorical x-axis order from a FuseDash widget mock. */\nexport function xDomainHintFromWidget(\n widget: FuseWidgetLike,\n): string[] | undefined {\n const xKey = firstField(widget.xAxe ?? undefined);\n if (!xKey || !widget.uniqueValues?.[xKey]?.length) return undefined;\n return filterTruthyValues(widget.uniqueValues[xKey].map(String));\n}\n"],"names":[],"mappings":"AA+BO,SAAS,WACd,OACoB;AACpB,MAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,UAAM,IAAI,MAAM,CAAC;AACjB,WAAO,KAAK,QAAQ,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,IAAI;AAAA,EACrD;AACA,MAAI,SAAS,QAAQ,UAAU,GAAI,QAAO;AAC1C,SAAO,OAAO,KAAK;AACrB;AAGO,SAAS,oBAAoB,OAAyC;AAC3E,MAAI,CAAC,SAAS,OAAO,UAAU,YAAY,MAAM,QAAQ,KAAK,EAAG,QAAO;AACxE,QAAM,IAAI;AACV,SAAO,MAAM,QAAQ,EAAE,IAAI;AAC7B;AAMO,SAAS,kBAAkB,QAA4C;AAC5E,QAAM,YAAY,WAAW,OAAO,WAAW,MAAS;AACxD,MAAI,UAAW,QAAO;AACtB,QAAM,OAAO,OAAO,eAAe,OAAO,KAAK,OAAO,YAAY,IAAI,CAAA;AACtE,SAAO,KAAK,CAAC;AACf;AAEO,SAAS,OAAO,QAAmD;AACxE,MAAI,CAAC,MAAM,QAAQ,OAAO,IAAI,UAAU,CAAA;AACxC,SAAO,OAAO,KAAK;AAAA,IACjB,CAAC,MAAoC,CAAC,CAAC,KAAK,OAAO,MAAM,YAAY,CAAC,MAAM,QAAQ,CAAC;AAAA,EAAA;AAEzF;AAEO,SAAS,mBAAmB,QAA4B;AAC7D,SAAO,OAAO;AAAA,IACZ,CAAC,MAAM,KAAK,QAAQ,MAAM,MAAM,MAAM,UAAU,MAAM;AAAA,EAAA;AAE1D;AAMO,SAAS,yBACd,UACA,cACA,UACU;AAlDL;AAmDL,QAAM,UAAU,IAAI,IAAI,QAAQ;AAChC,QAAM,SACJ,cAAY,kDAAe,cAAf,mBAA0B,UAClC,mBAAmB,aAAa,QAAQ,EAAE,IAAI,MAAM,CAAC,IACrD;AACN,MAAI,iCAAQ,QAAQ;AAClB,UAAM,UAAU,OAAO,OAAO,CAAC,MAAM,QAAQ,IAAI,CAAC,CAAC;AACnD,eAAW,KAAK,SAAS;AACvB,UAAI,CAAC,QAAQ,SAAS,CAAC,EAAG,SAAQ,KAAK,CAAC;AAAA,IAC1C;AACA,WAAO;AAAA,EACT;AACA,QAAM,2BAAW,IAAA;AACjB,QAAM,MAAgB,CAAA;AACtB,aAAW,KAAK,UAAU;AACxB,QAAI,CAAC,KAAK,IAAI,CAAC,GAAG;AAChB,WAAK,IAAI,CAAC;AACV,UAAI,KAAK,CAAC;AAAA,IACZ;AAAA,EACF;AACA,SAAO;AACT;AAGO,SAAS,sBACd,QACsB;AA7EjB;AA8EL,QAAM,OAAO,WAAW,OAAO,QAAQ,MAAS;AAChD,MAAI,CAAC,QAAQ,GAAC,kBAAO,iBAAP,mBAAsB,UAAtB,mBAA6B,QAAQ,QAAO;AAC1D,SAAO,mBAAmB,OAAO,aAAa,IAAI,EAAE,IAAI,MAAM,CAAC;AACjE;"}