@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
@@ -0,0 +1,67 @@
1
+ import { FD } from "../../../utils/fusedash-visual.js";
2
+ function polarLabelAnchor(labelAngle) {
3
+ if (Math.abs(labelAngle) === Math.PI / 2) return "middle";
4
+ return labelAngle < Math.PI / 2 && labelAngle > -Math.PI / 2 ? "start" : "end";
5
+ }
6
+ function polarSectorAngles(count) {
7
+ if (count <= 0) return [];
8
+ const slice = Math.PI * 2 / count;
9
+ return Array.from({ length: count }, (_v, i) => ({
10
+ startAngle: i * slice,
11
+ endAngle: (i + 1) * slice
12
+ }));
13
+ }
14
+ function polarGroupedSectorAngles(categories, sectors) {
15
+ if (!categories.length || !sectors.length) return [];
16
+ const slice = Math.PI * 2 / categories.length;
17
+ const countByCategory = /* @__PURE__ */ new Map();
18
+ const indexInCategory = /* @__PURE__ */ new Map();
19
+ for (const sector of sectors) {
20
+ const next = countByCategory.get(sector.key) ?? 0;
21
+ indexInCategory.set(sector, next);
22
+ countByCategory.set(sector.key, next + 1);
23
+ }
24
+ return sectors.map((sector) => {
25
+ const categoryIndex = Math.max(0, categories.indexOf(sector.key));
26
+ const members = countByCategory.get(sector.key) ?? 1;
27
+ const offset = indexInCategory.get(sector) ?? 0;
28
+ const inner = slice / members;
29
+ const base = categoryIndex * slice;
30
+ return { startAngle: base + offset * inner, endAngle: base + (offset + 1) * inner };
31
+ });
32
+ }
33
+ function polarRadialTicks(maxValue, steps) {
34
+ if (!Number.isFinite(maxValue) || maxValue <= 0 || steps <= 0) return [];
35
+ return Array.from({ length: steps }, (_v, i) => (i + 1) * maxValue / steps);
36
+ }
37
+ function polarMaxValue(sectors) {
38
+ let max = 0;
39
+ for (const sector of sectors) {
40
+ if (sector.value > max) max = sector.value;
41
+ }
42
+ return max;
43
+ }
44
+ function polarLabelGutter(categories, plotWidth) {
45
+ const longest = categories.reduce((max, c) => Math.max(max, String(c).length), 0);
46
+ const estimated = longest * FD.polarCategoryLabelSize * FD.polarLabelCharWidth;
47
+ const ceiling = Math.min(
48
+ FD.polarLabelGutterMax,
49
+ Math.max(0, plotWidth) * FD.polarLabelGutterMaxFraction
50
+ );
51
+ return Math.max(FD.polarLabelGutterMin, Math.min(estimated, ceiling));
52
+ }
53
+ function polarOuterRadius(plotWidth, plotHeight, labelGutter) {
54
+ const byWidth = plotWidth / 2 - labelGutter - FD.polarCategoryLabelOffset;
55
+ const byHeight = plotHeight / 2 - FD.polarCategoryLabelOffset - FD.polarCategoryLabelSize / 2;
56
+ return Math.max(0, Math.min(byWidth, byHeight));
57
+ }
58
+ export {
59
+ polarGroupedSectorAngles,
60
+ polarLabelAnchor,
61
+ polarLabelGutter,
62
+ polarMaxValue,
63
+ polarOuterRadius,
64
+ polarRadialTicks,
65
+ polarSectorAngles
66
+ };
67
+ //# sourceMappingURL=domain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domain.js","sources":["../../../../src/components/polar-area-chart/lib/domain.ts"],"sourcesContent":["import { FD } from '../../../utils/fusedash-visual.js';\nimport type { PolarAreaSector } from './types.js';\n\n/** Text anchor for a category label, mirroring the client's angle test. */\nexport function polarLabelAnchor(labelAngle: number): 'start' | 'middle' | 'end' {\n if (Math.abs(labelAngle) === Math.PI / 2) return 'middle';\n return labelAngle < Math.PI / 2 && labelAngle > -Math.PI / 2 ? 'start' : 'end';\n}\n\n/**\n * Sector angles — client `xScale = scaleLinear([0, n] → [0, 2π])` evaluated at\n * `i` and `i + 1`. Angle 0 is 12 o'clock (d3 `arc` convention).\n */\nexport function polarSectorAngles(\n count: number,\n): Array<{ startAngle: number; endAngle: number }> {\n if (count <= 0) return [];\n const slice = (Math.PI * 2) / count;\n return Array.from({ length: count }, (_v, i) => ({\n startAngle: i * slice,\n endAngle: (i + 1) * slice,\n }));\n}\n\n/**\n * Split each category's equal slice among the groups that have a value there.\n * Sector order must match `sectors` (category-major, then group order).\n */\nexport function polarGroupedSectorAngles(\n categories: string[],\n sectors: PolarAreaSector[],\n): Array<{ startAngle: number; endAngle: number }> {\n if (!categories.length || !sectors.length) return [];\n const slice = (Math.PI * 2) / categories.length;\n const countByCategory = new Map<string, number>();\n const indexInCategory = new Map<PolarAreaSector, number>();\n for (const sector of sectors) {\n const next = countByCategory.get(sector.key) ?? 0;\n indexInCategory.set(sector, next);\n countByCategory.set(sector.key, next + 1);\n }\n return sectors.map((sector) => {\n const categoryIndex = Math.max(0, categories.indexOf(sector.key));\n const members = countByCategory.get(sector.key) ?? 1;\n const offset = indexInCategory.get(sector) ?? 0;\n const inner = slice / members;\n const base = categoryIndex * slice;\n return { startAngle: base + offset * inner, endAngle: base + (offset + 1) * inner };\n });\n}\n\n/** Radial grid / tick values: `maxValue * step / steps` for step 1…steps. */\nexport function polarRadialTicks(maxValue: number, steps: number): number[] {\n if (!Number.isFinite(maxValue) || maxValue <= 0 || steps <= 0) return [];\n return Array.from({ length: steps }, (_v, i) => ((i + 1) * maxValue) / steps);\n}\n\nexport function polarMaxValue(sectors: PolarAreaSector[]): number {\n let max = 0;\n for (const sector of sectors) {\n if (sector.value > max) max = sector.value;\n }\n return max;\n}\n\n/**\n * Side room reserved for the category labels, measured off the longest one.\n * FuseDash sizes the disc from the raw box and lets long names run past the\n * SVG edge; chat widgets are far narrower, so — as with `punchcardLeftGutter`\n * and the bar-chart label gutter — the gutter is derived from the labels and\n * the disc shrinks into what is left.\n */\nexport function polarLabelGutter(categories: string[], plotWidth: number): number {\n const longest = categories.reduce((max, c) => Math.max(max, String(c).length), 0);\n const estimated = longest * FD.polarCategoryLabelSize * FD.polarLabelCharWidth;\n const ceiling = Math.min(\n FD.polarLabelGutterMax,\n Math.max(0, plotWidth) * FD.polarLabelGutterMaxFraction,\n );\n return Math.max(FD.polarLabelGutterMin, Math.min(estimated, ceiling));\n}\n\n/** Disc radius that leaves room for the labels ring on all four sides. */\nexport function polarOuterRadius(\n plotWidth: number,\n plotHeight: number,\n labelGutter: number,\n): number {\n const byWidth = plotWidth / 2 - labelGutter - FD.polarCategoryLabelOffset;\n const byHeight =\n plotHeight / 2 - FD.polarCategoryLabelOffset - FD.polarCategoryLabelSize / 2;\n return Math.max(0, Math.min(byWidth, byHeight));\n}\n"],"names":[],"mappings":";AAIO,SAAS,iBAAiB,YAAgD;AAC/E,MAAI,KAAK,IAAI,UAAU,MAAM,KAAK,KAAK,EAAG,QAAO;AACjD,SAAO,aAAa,KAAK,KAAK,KAAK,aAAa,CAAC,KAAK,KAAK,IAAI,UAAU;AAC3E;AAMO,SAAS,kBACd,OACiD;AACjD,MAAI,SAAS,EAAG,QAAO,CAAA;AACvB,QAAM,QAAS,KAAK,KAAK,IAAK;AAC9B,SAAO,MAAM,KAAK,EAAE,QAAQ,SAAS,CAAC,IAAI,OAAO;AAAA,IAC/C,YAAY,IAAI;AAAA,IAChB,WAAW,IAAI,KAAK;AAAA,EAAA,EACpB;AACJ;AAMO,SAAS,yBACd,YACA,SACiD;AACjD,MAAI,CAAC,WAAW,UAAU,CAAC,QAAQ,eAAe,CAAA;AAClD,QAAM,QAAS,KAAK,KAAK,IAAK,WAAW;AACzC,QAAM,sCAAsB,IAAA;AAC5B,QAAM,sCAAsB,IAAA;AAC5B,aAAW,UAAU,SAAS;AAC5B,UAAM,OAAO,gBAAgB,IAAI,OAAO,GAAG,KAAK;AAChD,oBAAgB,IAAI,QAAQ,IAAI;AAChC,oBAAgB,IAAI,OAAO,KAAK,OAAO,CAAC;AAAA,EAC1C;AACA,SAAO,QAAQ,IAAI,CAAC,WAAW;AAC7B,UAAM,gBAAgB,KAAK,IAAI,GAAG,WAAW,QAAQ,OAAO,GAAG,CAAC;AAChE,UAAM,UAAU,gBAAgB,IAAI,OAAO,GAAG,KAAK;AACnD,UAAM,SAAS,gBAAgB,IAAI,MAAM,KAAK;AAC9C,UAAM,QAAQ,QAAQ;AACtB,UAAM,OAAO,gBAAgB;AAC7B,WAAO,EAAE,YAAY,OAAO,SAAS,OAAO,UAAU,QAAQ,SAAS,KAAK,MAAA;AAAA,EAC9E,CAAC;AACH;AAGO,SAAS,iBAAiB,UAAkB,OAAyB;AAC1E,MAAI,CAAC,OAAO,SAAS,QAAQ,KAAK,YAAY,KAAK,SAAS,EAAG,QAAO,CAAA;AACtE,SAAO,MAAM,KAAK,EAAE,QAAQ,MAAA,GAAS,CAAC,IAAI,OAAQ,IAAI,KAAK,WAAY,KAAK;AAC9E;AAEO,SAAS,cAAc,SAAoC;AAChE,MAAI,MAAM;AACV,aAAW,UAAU,SAAS;AAC5B,QAAI,OAAO,QAAQ,IAAK,OAAM,OAAO;AAAA,EACvC;AACA,SAAO;AACT;AASO,SAAS,iBAAiB,YAAsB,WAA2B;AAChF,QAAM,UAAU,WAAW,OAAO,CAAC,KAAK,MAAM,KAAK,IAAI,KAAK,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC;AAChF,QAAM,YAAY,UAAU,GAAG,yBAAyB,GAAG;AAC3D,QAAM,UAAU,KAAK;AAAA,IACnB,GAAG;AAAA,IACH,KAAK,IAAI,GAAG,SAAS,IAAI,GAAG;AAAA,EAAA;AAE9B,SAAO,KAAK,IAAI,GAAG,qBAAqB,KAAK,IAAI,WAAW,OAAO,CAAC;AACtE;AAGO,SAAS,iBACd,WACA,YACA,aACQ;AACR,QAAM,UAAU,YAAY,IAAI,cAAc,GAAG;AACjD,QAAM,WACJ,aAAa,IAAI,GAAG,2BAA2B,GAAG,yBAAyB;AAC7E,SAAO,KAAK,IAAI,GAAG,KAAK,IAAI,SAAS,QAAQ,CAAC;AAChD;"}
@@ -0,0 +1,4 @@
1
+ export { normalizePolarAreaData } from './normalize.js';
2
+ export { polarLabelAnchor, polarLabelGutter, polarOuterRadius, polarMaxValue, polarRadialTicks, polarSectorAngles, polarGroupedSectorAngles, } from './domain.js';
3
+ export type { PolarAreaChartData, PolarAreaLabelValue, PolarAreaLegendEntry, PolarAreaModel, PolarAreaPoint, PolarAreaSector, } from './types.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/polar-area-chart/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACd,cAAc,EACd,eAAe,GAChB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { PolarAreaChartData, PolarAreaModel } from './types.js';
2
+ /** Normalize chat / FuseDash WidgetItem payloads into polar-area sectors. */
3
+ export declare function normalizePolarAreaData(input: PolarAreaChartData): PolarAreaModel;
4
+ //# sourceMappingURL=normalize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../../../src/components/polar-area-chart/lib/normalize.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EACV,kBAAkB,EAGlB,cAAc,EAGf,MAAM,YAAY,CAAC;AAgOpB,6EAA6E;AAC7E,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,kBAAkB,GAAG,cAAc,CAkBhF"}
@@ -0,0 +1,183 @@
1
+ import { pickQualitativePalette, resolveFormattingColor } from "../../../utils/fuse-palette.js";
2
+ import { isFuseWidgetPayload, firstField, rowsOf, resolveUniqueValuesOrder, filterTruthyValues } from "../../../utils/fuse-widget.js";
3
+ import { polarMaxValue } from "./domain.js";
4
+ import { resolveWidgetFormatting } from "../../../utils/chart-formatting/from-fuse-widget.js";
5
+ const EMPTY = { sectors: [], categories: [], legend: [], maxValue: 0 };
6
+ function isLabelValueArray(input) {
7
+ if (!Array.isArray(input) || input.length === 0) return false;
8
+ const first = input[0];
9
+ return first != null && typeof first === "object" && "label" in first && "value" in first;
10
+ }
11
+ function isPointsPayload(input) {
12
+ return !!input && typeof input === "object" && Array.isArray(input.points);
13
+ }
14
+ function legendKeysOf(widget) {
15
+ const uniqueValues = widget.uniqueValues ?? {};
16
+ const firstKey = Object.keys(uniqueValues)[0];
17
+ if (!firstKey) return [];
18
+ return filterTruthyValues((uniqueValues[firstKey] ?? []).map(String));
19
+ }
20
+ function buildLegend(keys, formatting) {
21
+ return keys.map((key) => ({
22
+ key,
23
+ label: key,
24
+ color: resolveFormattingColor(formatting, key, keys.length)
25
+ }));
26
+ }
27
+ function modelFromRows(rows, categories, legend, formatting) {
28
+ const colorByKey = new Map(legend.map((entry) => [entry.key, entry.color]));
29
+ const fallbackColor = resolveFormattingColor(formatting, "default", legend.length || 1);
30
+ const sectors = rows.map((row) => ({
31
+ key: row.key,
32
+ label: row.key,
33
+ value: row.value,
34
+ color: colorByKey.get(row.key) ?? fallbackColor
35
+ }));
36
+ return { sectors, categories, legend, maxValue: polarMaxValue(sectors) };
37
+ }
38
+ function categoriesOf(widget, xKey, dataKeys) {
39
+ var _a;
40
+ const fromUniqueValues = (((_a = widget.uniqueValues) == null ? void 0 : _a[xKey]) ?? []).map(String).filter((v) => dataKeys.includes(v));
41
+ return fromUniqueValues.length ? fromUniqueValues : dataKeys;
42
+ }
43
+ function fromGroupedFuseWidget(widget, xKey, yKey, groupBy) {
44
+ const parsed = [];
45
+ for (const row of rowsOf(widget)) {
46
+ const x = row[xKey];
47
+ const y = Number(row[yKey]);
48
+ const group = row[groupBy];
49
+ if (x == null || x === "" || group == null || group === "" || !Number.isFinite(y)) {
50
+ continue;
51
+ }
52
+ parsed.push({ key: String(x), group: String(group), value: y });
53
+ }
54
+ if (!parsed.length) return EMPTY;
55
+ const categories = categoriesOf(
56
+ widget,
57
+ xKey,
58
+ Array.from(new Set(parsed.map((row) => row.key)))
59
+ );
60
+ const groupKeys = resolveUniqueValuesOrder(
61
+ parsed.map((row) => row.group),
62
+ widget.uniqueValues,
63
+ groupBy
64
+ );
65
+ const formatting = resolveWidgetFormatting(widget);
66
+ const colorByGroup = new Map(
67
+ groupKeys.map((key) => [key, resolveFormattingColor(formatting, key, groupKeys.length)])
68
+ );
69
+ const totals = /* @__PURE__ */ new Map();
70
+ for (const row of parsed) {
71
+ const id = `${row.key}\0${row.group}`;
72
+ totals.set(id, (totals.get(id) ?? 0) + row.value);
73
+ }
74
+ const sectors = [];
75
+ for (const category of categories) {
76
+ for (const group of groupKeys) {
77
+ const value = totals.get(`${category}\0${group}`);
78
+ if (value == null) continue;
79
+ sectors.push({
80
+ key: category,
81
+ group,
82
+ label: category,
83
+ value,
84
+ color: colorByGroup.get(group) ?? resolveFormattingColor(formatting, group, groupKeys.length)
85
+ });
86
+ }
87
+ }
88
+ return {
89
+ sectors,
90
+ categories,
91
+ legend: buildLegend(groupKeys, formatting),
92
+ maxValue: polarMaxValue(sectors),
93
+ grouped: true,
94
+ xField: xKey,
95
+ yField: yKey,
96
+ groupField: groupBy,
97
+ axisDetails: widget.axisDetails ?? void 0
98
+ };
99
+ }
100
+ function fromFuseWidget(widget) {
101
+ var _a;
102
+ const xKey = firstField(widget.xAxe);
103
+ const yKey = firstField(widget.yAxe);
104
+ if (!xKey || !yKey) return EMPTY;
105
+ const groupBy = firstField(widget.groupBy);
106
+ if (groupBy) return fromGroupedFuseWidget(widget, xKey, yKey, groupBy);
107
+ const parsed = [];
108
+ for (const row of rowsOf(widget)) {
109
+ const x = row[xKey];
110
+ const y = Number(row[yKey]);
111
+ if (x == null || x === "" || !Number.isFinite(y)) continue;
112
+ parsed.push({ key: String(x), value: y });
113
+ }
114
+ if (!parsed.length) return EMPTY;
115
+ const categories = categoriesOf(
116
+ widget,
117
+ xKey,
118
+ Array.from(new Set(parsed.map((row) => row.key)))
119
+ );
120
+ const formatting = resolveWidgetFormatting(widget);
121
+ let rows = parsed;
122
+ if ((((_a = widget.formatting) == null ? void 0 : _a.length) ?? 0) > 1) {
123
+ const totals = /* @__PURE__ */ new Map();
124
+ for (const row of parsed) {
125
+ totals.set(row.key, (totals.get(row.key) ?? 0) + row.value);
126
+ }
127
+ rows = Array.from(totals, ([key, value]) => ({ key, value }));
128
+ }
129
+ const sorted = categories.flatMap(
130
+ (category) => rows.filter((row) => row.key === category)
131
+ );
132
+ const model = modelFromRows(
133
+ sorted,
134
+ categories,
135
+ buildLegend(legendKeysOf(widget), formatting),
136
+ formatting
137
+ );
138
+ return {
139
+ ...model,
140
+ xField: xKey,
141
+ yField: yKey,
142
+ axisDetails: widget.axisDetails ?? void 0
143
+ };
144
+ }
145
+ function fromLabelValue(input) {
146
+ const rows = input.map((row) => ({
147
+ key: String(row.label),
148
+ value: Number(row.value),
149
+ color: row.color
150
+ })).filter((row) => row.key && Number.isFinite(row.value));
151
+ if (!rows.length) return EMPTY;
152
+ const palette = pickQualitativePalette(0, rows.length);
153
+ const sectors = rows.map((row, index) => ({
154
+ key: row.key,
155
+ label: row.key,
156
+ value: row.value,
157
+ color: row.color ?? palette[index % palette.length]
158
+ }));
159
+ return {
160
+ sectors,
161
+ categories: sectors.map((sector) => sector.key),
162
+ legend: sectors.map(({ key, label, color }) => ({ key, label, color })),
163
+ maxValue: polarMaxValue(sectors)
164
+ };
165
+ }
166
+ function normalizePolarAreaData(input) {
167
+ if (!input) return EMPTY;
168
+ if (Array.isArray(input)) {
169
+ return isLabelValueArray(input) ? fromLabelValue(input) : EMPTY;
170
+ }
171
+ if (isFuseWidgetPayload(input)) return fromFuseWidget(input);
172
+ if (isPointsPayload(input)) {
173
+ return fromLabelValue(
174
+ input.points.map((point) => ({ label: String(point.x), value: Number(point.y) }))
175
+ );
176
+ }
177
+ if (Array.isArray(input.sectors)) return input;
178
+ return EMPTY;
179
+ }
180
+ export {
181
+ normalizePolarAreaData
182
+ };
183
+ //# sourceMappingURL=normalize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize.js","sources":["../../../../src/components/polar-area-chart/lib/normalize.ts"],"sourcesContent":["import { resolveWidgetFormatting } from '../../../utils/chart-formatting/index.js';\nimport {\n pickQualitativePalette,\n resolveFormattingColor,\n} from '../../../utils/fuse-palette.js';\nimport {\n filterTruthyValues,\n firstField,\n isFuseWidgetPayload,\n resolveUniqueValuesOrder,\n rowsOf,\n type FuseWidgetLike,\n} from '../../../utils/fuse-widget.js';\nimport { polarMaxValue } from './domain.js';\nimport type {\n PolarAreaChartData,\n PolarAreaLabelValue,\n PolarAreaLegendEntry,\n PolarAreaModel,\n PolarAreaPoint,\n PolarAreaSector,\n} from './types.js';\n\nconst EMPTY: PolarAreaModel = { sectors: [], categories: [], legend: [], maxValue: 0 };\n\nfunction isLabelValueArray(input: unknown): input is PolarAreaLabelValue[] {\n if (!Array.isArray(input) || input.length === 0) return false;\n const first = input[0] as Record<string, unknown>;\n return first != null && typeof first === 'object' && 'label' in first && 'value' in first;\n}\n\nfunction isPointsPayload(input: unknown): input is { points: PolarAreaPoint[] } {\n return (\n !!input &&\n typeof input === 'object' &&\n Array.isArray((input as { points?: unknown }).points)\n );\n}\n\n/**\n * Legend keys — client reads `uniqueValues[Object.keys(uniqueValues)[0]]` and\n * drops null-ish entries. On the polar mock that first key is the x-axis field,\n * so legend keys and sector keys line up.\n */\nfunction legendKeysOf(widget: FuseWidgetLike): string[] {\n const uniqueValues = widget.uniqueValues ?? {};\n const firstKey = Object.keys(uniqueValues)[0];\n if (!firstKey) return [];\n return filterTruthyValues((uniqueValues[firstKey] ?? []).map(String));\n}\n\nfunction buildLegend(\n keys: string[],\n formatting: FuseWidgetLike['formatting'],\n): PolarAreaLegendEntry[] {\n return keys.map((key) => ({\n key,\n label: key,\n color: resolveFormattingColor(formatting, key, keys.length),\n }));\n}\n\nfunction modelFromRows(\n rows: Array<{ key: string; value: number }>,\n categories: string[],\n legend: PolarAreaLegendEntry[],\n formatting: FuseWidgetLike['formatting'],\n): PolarAreaModel {\n const colorByKey = new Map(legend.map((entry) => [entry.key, entry.color]));\n const fallbackColor = resolveFormattingColor(formatting, 'default', legend.length || 1);\n\n const sectors: PolarAreaSector[] = rows.map((row) => ({\n key: row.key,\n label: row.key,\n value: row.value,\n color: colorByKey.get(row.key) ?? fallbackColor,\n }));\n\n return { sectors, categories, legend, maxValue: polarMaxValue(sectors) };\n}\n\nfunction categoriesOf(\n widget: FuseWidgetLike,\n xKey: string,\n dataKeys: string[],\n): string[] {\n const fromUniqueValues = (widget.uniqueValues?.[xKey] ?? [])\n .map(String)\n .filter((v) => dataKeys.includes(v));\n return fromUniqueValues.length ? fromUniqueValues : dataKeys;\n}\n\nfunction fromGroupedFuseWidget(\n widget: FuseWidgetLike,\n xKey: string,\n yKey: string,\n groupBy: string,\n): PolarAreaModel {\n const parsed: Array<{ key: string; group: string; value: number }> = [];\n for (const row of rowsOf(widget)) {\n const x = row[xKey];\n const y = Number(row[yKey]);\n const group = row[groupBy];\n if (x == null || x === '' || group == null || group === '' || !Number.isFinite(y)) {\n continue;\n }\n parsed.push({ key: String(x), group: String(group), value: y });\n }\n if (!parsed.length) return EMPTY;\n\n const categories = categoriesOf(\n widget,\n xKey,\n Array.from(new Set(parsed.map((row) => row.key))),\n );\n const groupKeys = resolveUniqueValuesOrder(\n parsed.map((row) => row.group),\n widget.uniqueValues,\n groupBy,\n );\n const formatting = resolveWidgetFormatting(widget);\n const colorByGroup = new Map(\n groupKeys.map((key) => [key, resolveFormattingColor(formatting, key, groupKeys.length)]),\n );\n\n const totals = new Map<string, number>();\n for (const row of parsed) {\n const id = `${row.key}\\0${row.group}`;\n totals.set(id, (totals.get(id) ?? 0) + row.value);\n }\n\n const sectors: PolarAreaSector[] = [];\n for (const category of categories) {\n for (const group of groupKeys) {\n const value = totals.get(`${category}\\0${group}`);\n if (value == null) continue;\n sectors.push({\n key: category,\n group,\n label: category,\n value,\n color: colorByGroup.get(group) ?? resolveFormattingColor(formatting, group, groupKeys.length),\n });\n }\n }\n\n return {\n sectors,\n categories,\n legend: buildLegend(groupKeys, formatting),\n maxValue: polarMaxValue(sectors),\n grouped: true,\n xField: xKey,\n yField: yKey,\n groupField: groupBy,\n axisDetails: widget.axisDetails ?? undefined,\n };\n}\n\nfunction fromFuseWidget(widget: FuseWidgetLike): PolarAreaModel {\n const xKey = firstField(widget.xAxe);\n const yKey = firstField(widget.yAxe);\n if (!xKey || !yKey) return EMPTY;\n\n const groupBy = firstField(widget.groupBy);\n if (groupBy) return fromGroupedFuseWidget(widget, xKey, yKey, groupBy);\n\n const parsed: Array<{ key: string; value: number }> = [];\n for (const row of rowsOf(widget)) {\n const x = row[xKey];\n const y = Number(row[yKey]);\n if (x == null || x === '' || !Number.isFinite(y)) continue;\n parsed.push({ key: String(x), value: y });\n }\n if (!parsed.length) return EMPTY;\n\n const categories = categoriesOf(\n widget,\n xKey,\n Array.from(new Set(parsed.map((row) => row.key))),\n );\n\n // Colors come from resolved formatting so a widget that ships without a\n // `formatting` array still gets the shared default palette (as scatter does).\n const formatting = resolveWidgetFormatting(widget);\n\n // Client aggregates the rows per category once the widget carries more than\n // one formatting entry — otherwise every row keeps its own wedge. This gate\n // reads the widget's own formatting, not the resolved one: generated entries\n // would flip a formatting-less widget into aggregated mode.\n let rows = parsed;\n if ((widget.formatting?.length ?? 0) > 1) {\n const totals = new Map<string, number>();\n for (const row of parsed) {\n totals.set(row.key, (totals.get(row.key) ?? 0) + row.value);\n }\n rows = Array.from(totals, ([key, value]) => ({ key, value }));\n }\n\n // Client `categories.flatMap(...)`: category order first, extras dropped.\n const sorted = categories.flatMap((category) =>\n rows.filter((row) => row.key === category),\n );\n\n const model = modelFromRows(\n sorted,\n categories,\n buildLegend(legendKeysOf(widget), formatting),\n formatting,\n );\n\n return {\n ...model,\n xField: xKey,\n yField: yKey,\n axisDetails: widget.axisDetails ?? undefined,\n };\n}\n\nfunction fromLabelValue(input: PolarAreaLabelValue[]): PolarAreaModel {\n const rows = input\n .map((row) => ({\n key: String(row.label),\n value: Number(row.value),\n color: row.color,\n }))\n .filter((row) => row.key && Number.isFinite(row.value));\n if (!rows.length) return EMPTY;\n\n const palette = pickQualitativePalette(0, rows.length);\n const sectors: PolarAreaSector[] = rows.map((row, index) => ({\n key: row.key,\n label: row.key,\n value: row.value,\n color: row.color ?? palette[index % palette.length],\n }));\n\n return {\n sectors,\n categories: sectors.map((sector) => sector.key),\n legend: sectors.map(({ key, label, color }) => ({ key, label, color })),\n maxValue: polarMaxValue(sectors),\n };\n}\n\n/** Normalize chat / FuseDash WidgetItem payloads into polar-area sectors. */\nexport function normalizePolarAreaData(input: PolarAreaChartData): PolarAreaModel {\n if (!input) return EMPTY;\n\n if (Array.isArray(input)) {\n return isLabelValueArray(input) ? fromLabelValue(input) : EMPTY;\n }\n\n if (isFuseWidgetPayload(input)) return fromFuseWidget(input);\n\n if (isPointsPayload(input)) {\n return fromLabelValue(\n input.points.map((point) => ({ label: String(point.x), value: Number(point.y) })),\n );\n }\n\n if (Array.isArray((input as PolarAreaModel).sectors)) return input as PolarAreaModel;\n\n return EMPTY;\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ import { FuseWidgetLike } from '../../../utils/fuse-widget.js';
2
+ /** One filled wedge of the disc — a single row of the (sorted) chart data. */
3
+ export interface PolarAreaSector {
4
+ /** Category value (`widget.xAxe[0]`). */
5
+ key: string;
6
+ /** Group key when `groupBy` is set — also the color / legend key. */
7
+ group?: string;
8
+ label: string;
9
+ value: number;
10
+ color: string;
11
+ }
12
+ export interface PolarAreaLegendEntry {
13
+ key: string;
14
+ label: string;
15
+ color: string;
16
+ }
17
+ export interface PolarAreaModel {
18
+ sectors: PolarAreaSector[];
19
+ /**
20
+ * Radial spoke order — client `categories`: `uniqueValues[xAxe]` filtered to
21
+ * values present in the data, falling back to first-seen data order.
22
+ */
23
+ categories: string[];
24
+ legend: PolarAreaLegendEntry[];
25
+ maxValue: number;
26
+ /** True when wedges are split by `groupBy` inside each category. */
27
+ grouped?: boolean;
28
+ xField?: string;
29
+ yField?: string;
30
+ groupField?: string;
31
+ axisDetails?: Record<string, {
32
+ label?: string;
33
+ measure_unit_symbol?: string;
34
+ }>;
35
+ }
36
+ export type PolarAreaLabelValue = {
37
+ label: string;
38
+ value: number;
39
+ color?: string;
40
+ };
41
+ export type PolarAreaPoint = {
42
+ x: string | number;
43
+ y: number;
44
+ };
45
+ export type PolarAreaChartData = PolarAreaLabelValue[] | {
46
+ points: PolarAreaPoint[];
47
+ } | PolarAreaModel | FuseWidgetLike | null | undefined;
48
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/polar-area-chart/lib/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAEpE,8EAA8E;AAC9E,MAAM,WAAW,eAAe;IAC9B,yCAAyC;IACzC,GAAG,EAAE,MAAM,CAAC;IACZ,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B;;;OAGG;IACH,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,MAAM,EAAE,oBAAoB,EAAE,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,oEAAoE;IACpE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,mBAAmB,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChF;AAED,MAAM,MAAM,mBAAmB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnF,MAAM,MAAM,cAAc,GAAG;IAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE/D,MAAM,MAAM,kBAAkB,GAC1B,mBAAmB,EAAE,GACrB;IAAE,MAAM,EAAE,cAAc,EAAE,CAAA;CAAE,GAC5B,cAAc,GACd,cAAc,GACd,IAAI,GACJ,SAAS,CAAC"}
@@ -0,0 +1,79 @@
1
+ declare const _default: {
2
+ "id": "polar-area-chart",
3
+ "tag": "ui9000-polar-area-chart",
4
+ "title": "Polar Area Chart",
5
+ "description": "Chat-optimized polar area (coxcomb) chart rewritten in D3. Single (client aggregated) or grouped by groupBy. Legend above the plot.",
6
+ "chartTypeKeys": ["polarAreaChart"],
7
+ "source": "client/libs/shared/components/src/Widgets/PolarAreaChart/",
8
+ "stack": "d3",
9
+ "lazyImport": "@fusedashlabs/widgets/lazy/polar-area-chart",
10
+ "entry": "@fusedashlabs/widgets/polar-area-chart",
11
+ "usageConditions": {
12
+ "host": "mcp-chat",
13
+ "notFor": "fusedash-editor",
14
+ "mapsExcluded": true
15
+ },
16
+ "allowedActions": ["hover", "resize"],
17
+ "propsSchema": {
18
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
19
+ "type": "object",
20
+ "properties": {
21
+ "data": {
22
+ "oneOf": [
23
+ {
24
+ "type": "array",
25
+ "items": {
26
+ "type": "object",
27
+ "required": ["label", "value"],
28
+ "properties": {
29
+ "label": { "type": "string" },
30
+ "value": { "type": "number" },
31
+ "color": { "type": "string" }
32
+ }
33
+ }
34
+ },
35
+ {
36
+ "type": "object",
37
+ "description": "Chat points payload",
38
+ "required": ["points"],
39
+ "properties": {
40
+ "points": {
41
+ "type": "array",
42
+ "items": {
43
+ "type": "object",
44
+ "required": ["x", "y"],
45
+ "properties": {
46
+ "x": { "type": ["string", "number"] },
47
+ "y": { "type": "number" }
48
+ }
49
+ }
50
+ }
51
+ }
52
+ },
53
+ {
54
+ "type": "object",
55
+ "description": "FuseDash WidgetItem-shaped payload",
56
+ "properties": {
57
+ "chartType": { "type": "string" },
58
+ "xAxe": { "type": "array", "items": { "type": "string" } },
59
+ "yAxe": { "type": "array", "items": { "type": "string" } },
60
+ "uniqueValues": { "type": "object" },
61
+ "formatting": { "type": "array" },
62
+ "data": { "type": "array" }
63
+ }
64
+ }
65
+ ]
66
+ },
67
+ "show-grid": { "type": "boolean" },
68
+ "show-legend": { "type": "boolean" },
69
+ "show-tooltip": { "type": "boolean" },
70
+ "scale": {
71
+ "type": "string",
72
+ "enum": ["compact", "default", "comfortable"]
73
+ }
74
+ }
75
+ }
76
+ }
77
+ ;
78
+
79
+ export default _default;
@@ -0,0 +1,42 @@
1
+ const id = "polar-area-chart";
2
+ const tag = "ui9000-polar-area-chart";
3
+ const title = "Polar Area Chart";
4
+ const description = "Chat-optimized polar area (coxcomb) chart rewritten in D3. Single (client aggregated) or grouped by groupBy. Legend above the plot.";
5
+ const chartTypeKeys = ["polarAreaChart"];
6
+ const source = "client/libs/shared/components/src/Widgets/PolarAreaChart/";
7
+ const stack = "d3";
8
+ const lazyImport = "@fusedashlabs/widgets/lazy/polar-area-chart";
9
+ const entry = "@fusedashlabs/widgets/polar-area-chart";
10
+ const usageConditions = { "host": "mcp-chat", "notFor": "fusedash-editor", "mapsExcluded": true };
11
+ const allowedActions = ["hover", "resize"];
12
+ const propsSchema = { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "data": { "oneOf": [{ "type": "array", "items": { "type": "object", "required": ["label", "value"], "properties": { "label": { "type": "string" }, "value": { "type": "number" }, "color": { "type": "string" } } } }, { "type": "object", "description": "Chat points payload", "required": ["points"], "properties": { "points": { "type": "array", "items": { "type": "object", "required": ["x", "y"], "properties": { "x": { "type": ["string", "number"] }, "y": { "type": "number" } } } } } }, { "type": "object", "description": "FuseDash WidgetItem-shaped payload", "properties": { "chartType": { "type": "string" }, "xAxe": { "type": "array", "items": { "type": "string" } }, "yAxe": { "type": "array", "items": { "type": "string" } }, "uniqueValues": { "type": "object" }, "formatting": { "type": "array" }, "data": { "type": "array" } } }] }, "show-grid": { "type": "boolean" }, "show-legend": { "type": "boolean" }, "show-tooltip": { "type": "boolean" }, "scale": { "type": "string", "enum": ["compact", "default", "comfortable"] } } };
13
+ const polarAreaMeta = {
14
+ id,
15
+ tag,
16
+ title,
17
+ description,
18
+ chartTypeKeys,
19
+ source,
20
+ stack,
21
+ lazyImport,
22
+ entry,
23
+ usageConditions,
24
+ allowedActions,
25
+ propsSchema
26
+ };
27
+ export {
28
+ allowedActions,
29
+ chartTypeKeys,
30
+ polarAreaMeta as default,
31
+ description,
32
+ entry,
33
+ id,
34
+ lazyImport,
35
+ propsSchema,
36
+ source,
37
+ stack,
38
+ tag,
39
+ title,
40
+ usageConditions
41
+ };
42
+ //# sourceMappingURL=metadata.json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,25 @@
1
+ import { ChartDimensions, WidgetTheme } from '../../../types/index.js';
2
+ import { AxisLabelTooltipHandlers } from '../../../utils/axis-labels.js';
3
+ import { PolarAreaModel, PolarAreaSector } from '../lib/types.js';
4
+ export interface RenderPolarAreaChartOptions extends AxisLabelTooltipHandlers {
5
+ model: PolarAreaModel;
6
+ width: number;
7
+ height: number;
8
+ margin: ChartDimensions['margin'];
9
+ theme: WidgetTheme;
10
+ themeMode?: 'light' | 'dark';
11
+ showGrid?: boolean;
12
+ showTooltip?: boolean;
13
+ onHover?: (payload: {
14
+ sector: PolarAreaSector;
15
+ event: MouseEvent;
16
+ }) => void;
17
+ onLeave?: () => void;
18
+ }
19
+ /**
20
+ * FuseDash PolarAreaChart — D3 rewrite.
21
+ * One wedge per category, each reaching the radius of its value; the legend
22
+ * lives in the Lit shell.
23
+ */
24
+ export declare function renderPolarAreaChart(container: HTMLElement, options: RenderPolarAreaChartOptions): void;
25
+ //# sourceMappingURL=draw.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draw.d.ts","sourceRoot":"","sources":["../../../../src/components/polar-area-chart/render/draw.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC5E,OAAO,EAEL,KAAK,wBAAwB,EAC9B,MAAM,+BAA+B,CAAC;AAUvC,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvE,MAAM,WAAW,2BAA4B,SAAQ,wBAAwB;IAC3E,KAAK,EAAE,cAAc,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC;IAClC,KAAK,EAAE,WAAW,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE;QAAE,MAAM,EAAE,eAAe,CAAC;QAAC,KAAK,EAAE,UAAU,CAAA;KAAE,KAAK,IAAI,CAAC;IAC5E,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AA8JD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,WAAW,EACtB,OAAO,EAAE,2BAA2B,GACnC,IAAI,CAiHN"}
@@ -0,0 +1,127 @@
1
+ import { scaleLinear } from "d3-scale";
2
+ import { select } from "d3-selection";
3
+ import { arc } from "d3-shape";
4
+ import { decorateManualAxisLabel } from "../../../utils/axis-labels.js";
5
+ import { FD, formatCompactNumber } from "../../../utils/fusedash-visual.js";
6
+ import { polarLabelGutter, polarRadialTicks, polarGroupedSectorAngles, polarSectorAngles, polarOuterRadius, polarLabelAnchor } from "../lib/domain.js";
7
+ const SECTOR_CLASS = "polar-area-path";
8
+ const TICK_CLASS = "polar-tick-group";
9
+ function measureText(node, text, fontSize, cx, cy) {
10
+ var _a;
11
+ const box = (_a = node == null ? void 0 : node.getBBox) == null ? void 0 : _a.call(node);
12
+ if (box && box.width > 0) return box;
13
+ const width = text.length * fontSize * 0.6;
14
+ return { x: cx - width / 2, y: cy - fontSize / 2, width, height: fontSize };
15
+ }
16
+ function drawGridRings(parent, ticks, radial) {
17
+ parent.selectAll("circle").data(ticks).enter().append("circle").attr("r", (d) => radial(d)).attr("fill", "none").attr("stroke", FD.polarGridStroke).attr("stroke-opacity", (_d, i) => (i + 1) * FD.polarGridStepOpacity);
18
+ }
19
+ function drawSpokes(parent, categories, outer) {
20
+ const slice = Math.PI * 2 / categories.length;
21
+ for (let i = 0; i < categories.length; i += 1) {
22
+ const angle = slice * i - Math.PI / 2;
23
+ const x = outer * Math.cos(angle);
24
+ const y = outer * Math.sin(angle);
25
+ parent.append("line").attr("x1", 0).attr("y1", 0).attr("x2", x).attr("y2", y).attr("stroke", FD.polarGridStroke).attr("stroke-linejoin", "round").attr("stroke-linecap", "round").attr("stroke-dasharray", FD.polarSpokeDash);
26
+ parent.append("circle").attr("cx", x).attr("cy", y).attr("r", FD.polarSpokeCapRadius).attr("fill", FD.polarGridStroke);
27
+ }
28
+ }
29
+ function drawCategoryLabels(parent, categories, outer, halfWidth, handlers) {
30
+ const slice = Math.PI * 2 / categories.length;
31
+ const radius = outer + FD.polarCategoryLabelOffset;
32
+ categories.forEach((category, i) => {
33
+ const labelAngle = slice * i - Math.PI / 2 + slice / 2;
34
+ const x = radius * Math.cos(labelAngle);
35
+ const anchor = polarLabelAnchor(labelAngle);
36
+ const slotWidth = anchor === "start" ? halfWidth - x : anchor === "end" ? halfWidth + x : 2 * Math.min(halfWidth - x, halfWidth + x);
37
+ const text = parent.append("text").attr("x", x).attr("y", radius * Math.sin(labelAngle)).attr("text-anchor", anchor).attr("font-size", FD.polarCategoryLabelSize).attr("dominant-baseline", "central").attr("fill", FD.polarCategoryLabelFill);
38
+ decorateManualAxisLabel(text, category, {
39
+ ...handlers,
40
+ slotWidth,
41
+ fontSize: FD.polarCategoryLabelSize
42
+ });
43
+ });
44
+ }
45
+ function drawRadialTicks(parent, ticks, radial, theme, themeMode) {
46
+ const pillFill = theme.background && theme.background !== "transparent" ? theme.background : themeMode === "dark" ? FD.polarTickPillDark : FD.polarTickPill;
47
+ parent.selectAll("g").data(ticks).enter().append("g").attr("class", TICK_CLASS).each(function(value) {
48
+ const group = select(this);
49
+ const label = formatCompactNumber(value, 2);
50
+ const cy = -radial(value);
51
+ const text = group.append("text").attr("x", 0).attr("y", cy).attr("font-size", FD.polarCategoryLabelSize).attr("text-anchor", "middle").attr("dominant-baseline", "central").attr("fill", theme.text).text(label);
52
+ const box = measureText(text.node(), label, FD.polarCategoryLabelSize, 0, cy);
53
+ group.insert("rect", "text").attr("x", box.x - FD.polarTickPillPadX).attr("y", box.y - FD.polarTickPillPadY).attr("width", box.width + FD.polarTickPillPadX * 2).attr("height", box.height + FD.polarTickPillPadY * 2).attr("rx", FD.polarTickPillRadius).attr("ry", FD.polarTickPillRadius).attr("fill", pillFill);
54
+ });
55
+ }
56
+ function renderPolarAreaChart(container, options) {
57
+ const {
58
+ model,
59
+ width,
60
+ height,
61
+ margin,
62
+ theme,
63
+ themeMode = "light",
64
+ showGrid = true,
65
+ showTooltip = true,
66
+ onHover,
67
+ onLeave,
68
+ onAxisLabelHover,
69
+ onAxisLabelLeave
70
+ } = options;
71
+ container.replaceChildren();
72
+ const plotWidth = width - margin.left - margin.right;
73
+ const plotHeight = height - margin.top - margin.bottom;
74
+ const labelGutter = polarLabelGutter(model.categories, plotWidth);
75
+ const outerRadius = polarOuterRadius(plotWidth, plotHeight, labelGutter);
76
+ if (!model.sectors.length || outerRadius <= 0 || !model.maxValue) return;
77
+ const radial = scaleLinear().domain([0, model.maxValue]).rangeRound([0, outerRadius]).nice();
78
+ const gridOuter = radial(model.maxValue);
79
+ const ticks = polarRadialTicks(model.maxValue, FD.polarRadialSteps);
80
+ const svg = select(container).append("svg").attr("width", width).attr("height", height).attr("viewBox", `0 0 ${width} ${height}`);
81
+ const root = svg.append("g").attr("transform", `translate(${width / 2}, ${height / 2})`);
82
+ if (showGrid) {
83
+ const gridGroup = root.append("g").attr("class", "polar-grid").attr("pointer-events", "none");
84
+ drawGridRings(gridGroup, ticks, radial);
85
+ drawSpokes(gridGroup, model.categories, gridOuter);
86
+ }
87
+ if (outerRadius >= FD.polarMinLabelRadius) {
88
+ drawCategoryLabels(
89
+ root.append("g").attr("class", "polar-category-labels"),
90
+ model.categories,
91
+ gridOuter,
92
+ width / 2,
93
+ { onAxisLabelHover, onAxisLabelLeave }
94
+ );
95
+ }
96
+ const angles = model.grouped ? polarGroupedSectorAngles(model.categories, model.sectors) : polarSectorAngles(model.sectors.length);
97
+ const arcGen = arc().innerRadius(0).outerRadius((d) => radial(d.sector.value)).startAngle((d) => d.startAngle).endAngle((d) => d.endAngle);
98
+ const stroke = themeMode === "dark" ? FD.donutSliceStrokeDark : FD.donutSliceStroke;
99
+ const sectors = root.append("g").attr("class", "polar-sectors").selectAll("path").data(model.sectors.map((sector, i) => ({ sector, ...angles[i] }))).enter().append("path").attr("class", SECTOR_CLASS).attr("d", arcGen).attr("fill", (d) => d.sector.color).attr("opacity", FD.polarSectorOpacity).attr("stroke", stroke).attr("stroke-width", FD.donutSliceStrokeWidth);
100
+ const fitsTicks = outerRadius >= FD.polarRadialSteps * FD.polarTickPillRowHeight;
101
+ if (showGrid && fitsTicks) {
102
+ drawRadialTicks(
103
+ root.append("g").attr("class", "polar-ticks").attr("pointer-events", "none"),
104
+ ticks,
105
+ radial,
106
+ theme,
107
+ themeMode
108
+ );
109
+ }
110
+ if (!showTooltip || !onHover) return;
111
+ const dimmable = root.selectAll(`.${SECTOR_CLASS}, .${TICK_CLASS}`);
112
+ sectors.style("cursor", "pointer").on("mouseenter", function(event, datum) {
113
+ dimmable.attr("opacity", FD.polarSectorOpacityDimmed);
114
+ select(this).attr("opacity", 1);
115
+ onHover({ sector: datum.sector, event });
116
+ }).on("mousemove", (event, datum) => {
117
+ onHover({ sector: datum.sector, event });
118
+ }).on("mouseleave", () => {
119
+ sectors.attr("opacity", FD.polarSectorOpacity);
120
+ root.selectAll(`.${TICK_CLASS}`).attr("opacity", 1);
121
+ onLeave == null ? void 0 : onLeave();
122
+ });
123
+ }
124
+ export {
125
+ renderPolarAreaChart
126
+ };
127
+ //# sourceMappingURL=draw.js.map