@plenustech/design-system 0.2.2 → 0.2.4

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 (508) hide show
  1. package/dist/components/actions/ButtonTile/ButtonTile.cjs +2 -0
  2. package/dist/components/actions/ButtonTile/ButtonTile.cjs.map +1 -0
  3. package/dist/components/actions/ButtonTile/ButtonTile.js +23 -0
  4. package/dist/components/actions/ButtonTile/ButtonTile.js.map +1 -0
  5. package/dist/components/actions/ButtonTile/ButtonTile.module.css.cjs +2 -0
  6. package/dist/components/actions/ButtonTile/ButtonTile.module.css.cjs.map +1 -0
  7. package/dist/components/actions/ButtonTile/ButtonTile.module.css.js +16 -0
  8. package/dist/components/actions/ButtonTile/ButtonTile.module.css.js.map +1 -0
  9. package/dist/components/actions/Toolbar/Toolbar.cjs +2 -0
  10. package/dist/components/actions/Toolbar/Toolbar.cjs.map +1 -0
  11. package/dist/components/actions/Toolbar/Toolbar.js +118 -0
  12. package/dist/components/actions/Toolbar/Toolbar.js.map +1 -0
  13. package/dist/components/actions/Toolbar/Toolbar.module.css.cjs +2 -0
  14. package/dist/components/actions/Toolbar/Toolbar.module.css.cjs.map +1 -0
  15. package/dist/components/actions/Toolbar/Toolbar.module.css.js +20 -0
  16. package/dist/components/actions/Toolbar/Toolbar.module.css.js.map +1 -0
  17. package/dist/components/charts/ChartArea/ChartArea.cjs +1 -1
  18. package/dist/components/charts/ChartArea/ChartArea.cjs.map +1 -1
  19. package/dist/components/charts/ChartArea/ChartArea.js +196 -148
  20. package/dist/components/charts/ChartArea/ChartArea.js.map +1 -1
  21. package/dist/components/charts/ChartArea/ChartArea.module.css.cjs +1 -1
  22. package/dist/components/charts/ChartArea/ChartArea.module.css.js +12 -10
  23. package/dist/components/charts/ChartArea/ChartArea.module.css.js.map +1 -1
  24. package/dist/components/charts/ChartBar/ChartBar.cjs +1 -1
  25. package/dist/components/charts/ChartBar/ChartBar.cjs.map +1 -1
  26. package/dist/components/charts/ChartBar/ChartBar.js +168 -145
  27. package/dist/components/charts/ChartBar/ChartBar.js.map +1 -1
  28. package/dist/components/charts/ChartBar/ChartBar.module.css.cjs +1 -1
  29. package/dist/components/charts/ChartBar/ChartBar.module.css.js +12 -10
  30. package/dist/components/charts/ChartBar/ChartBar.module.css.js.map +1 -1
  31. package/dist/components/charts/ChartCombo/ChartCombo.cjs +1 -1
  32. package/dist/components/charts/ChartCombo/ChartCombo.cjs.map +1 -1
  33. package/dist/components/charts/ChartCombo/ChartCombo.js +179 -154
  34. package/dist/components/charts/ChartCombo/ChartCombo.js.map +1 -1
  35. package/dist/components/charts/ChartCombo/ChartCombo.module.css.cjs +1 -1
  36. package/dist/components/charts/ChartCombo/ChartCombo.module.css.js +16 -14
  37. package/dist/components/charts/ChartCombo/ChartCombo.module.css.js.map +1 -1
  38. package/dist/components/charts/ChartDonut/ChartDonut.cjs +1 -1
  39. package/dist/components/charts/ChartDonut/ChartDonut.cjs.map +1 -1
  40. package/dist/components/charts/ChartDonut/ChartDonut.js +72 -61
  41. package/dist/components/charts/ChartDonut/ChartDonut.js.map +1 -1
  42. package/dist/components/charts/ChartGauge/ChartGauge.cjs +2 -0
  43. package/dist/components/charts/ChartGauge/ChartGauge.cjs.map +1 -0
  44. package/dist/components/charts/ChartGauge/ChartGauge.js +307 -0
  45. package/dist/components/charts/ChartGauge/ChartGauge.js.map +1 -0
  46. package/dist/components/charts/ChartGauge/ChartGauge.module.css.cjs +2 -0
  47. package/dist/components/charts/ChartGauge/ChartGauge.module.css.cjs.map +1 -0
  48. package/dist/components/charts/ChartGauge/ChartGauge.module.css.js +76 -0
  49. package/dist/components/charts/ChartGauge/ChartGauge.module.css.js.map +1 -0
  50. package/dist/components/charts/ChartGauge/gaugeLayout.cjs +2 -0
  51. package/dist/components/charts/ChartGauge/gaugeLayout.cjs.map +1 -0
  52. package/dist/components/charts/ChartGauge/gaugeLayout.js +107 -0
  53. package/dist/components/charts/ChartGauge/gaugeLayout.js.map +1 -0
  54. package/dist/components/charts/ChartGauge/gaugeReading.cjs +2 -0
  55. package/dist/components/charts/ChartGauge/gaugeReading.cjs.map +1 -0
  56. package/dist/components/charts/ChartGauge/gaugeReading.js +112 -0
  57. package/dist/components/charts/ChartGauge/gaugeReading.js.map +1 -0
  58. package/dist/components/charts/ChartGauge/gaugeScale.cjs +2 -0
  59. package/dist/components/charts/ChartGauge/gaugeScale.cjs.map +1 -0
  60. package/dist/components/charts/ChartGauge/gaugeScale.js +57 -0
  61. package/dist/components/charts/ChartGauge/gaugeScale.js.map +1 -0
  62. package/dist/components/charts/ChartLine/ChartLine.cjs +1 -1
  63. package/dist/components/charts/ChartLine/ChartLine.cjs.map +1 -1
  64. package/dist/components/charts/ChartLine/ChartLine.js +196 -143
  65. package/dist/components/charts/ChartLine/ChartLine.js.map +1 -1
  66. package/dist/components/charts/ChartLine/ChartLine.module.css.cjs +1 -1
  67. package/dist/components/charts/ChartLine/ChartLine.module.css.js +16 -14
  68. package/dist/components/charts/ChartLine/ChartLine.module.css.js.map +1 -1
  69. package/dist/components/charts/ChartMap/ChartMap.cjs +2 -0
  70. package/dist/components/charts/ChartMap/ChartMap.cjs.map +1 -0
  71. package/dist/components/charts/ChartMap/ChartMap.js +523 -0
  72. package/dist/components/charts/ChartMap/ChartMap.js.map +1 -0
  73. package/dist/components/charts/ChartMap/ChartMap.module.css.cjs +2 -0
  74. package/dist/components/charts/ChartMap/ChartMap.module.css.cjs.map +1 -0
  75. package/dist/components/charts/ChartMap/ChartMap.module.css.js +124 -0
  76. package/dist/components/charts/ChartMap/ChartMap.module.css.js.map +1 -0
  77. package/dist/components/charts/ChartMap/ChartMapLegend.cjs +2 -0
  78. package/dist/components/charts/ChartMap/ChartMapLegend.cjs.map +1 -0
  79. package/dist/components/charts/ChartMap/ChartMapLegend.js +102 -0
  80. package/dist/components/charts/ChartMap/ChartMapLegend.js.map +1 -0
  81. package/dist/components/charts/ChartMap/ChartMapTable.cjs +2 -0
  82. package/dist/components/charts/ChartMap/ChartMapTable.cjs.map +1 -0
  83. package/dist/components/charts/ChartMap/ChartMapTable.js +118 -0
  84. package/dist/components/charts/ChartMap/ChartMapTable.js.map +1 -0
  85. package/dist/components/charts/ChartMap/mapGeometry.cjs +2 -0
  86. package/dist/components/charts/ChartMap/mapGeometry.cjs.map +1 -0
  87. package/dist/components/charts/ChartMap/mapGeometry.js +113 -0
  88. package/dist/components/charts/ChartMap/mapGeometry.js.map +1 -0
  89. package/dist/components/charts/ChartMap/mapLabels.cjs +2 -0
  90. package/dist/components/charts/ChartMap/mapLabels.cjs.map +1 -0
  91. package/dist/components/charts/ChartMap/mapLabels.js +80 -0
  92. package/dist/components/charts/ChartMap/mapLabels.js.map +1 -0
  93. package/dist/components/charts/ChartMap/mapScales.cjs +2 -0
  94. package/dist/components/charts/ChartMap/mapScales.cjs.map +1 -0
  95. package/dist/components/charts/ChartMap/mapScales.js +131 -0
  96. package/dist/components/charts/ChartMap/mapScales.js.map +1 -0
  97. package/dist/components/charts/ChartMap/polylabel.cjs +2 -0
  98. package/dist/components/charts/ChartMap/polylabel.cjs.map +1 -0
  99. package/dist/components/charts/ChartMap/polylabel.js +50 -0
  100. package/dist/components/charts/ChartMap/polylabel.js.map +1 -0
  101. package/dist/components/charts/ChartPie/ChartPie.cjs +1 -1
  102. package/dist/components/charts/ChartPie/ChartPie.cjs.map +1 -1
  103. package/dist/components/charts/ChartPie/ChartPie.js +71 -60
  104. package/dist/components/charts/ChartPie/ChartPie.js.map +1 -1
  105. package/dist/components/charts/ChartRadial/ChartRadial.cjs +1 -1
  106. package/dist/components/charts/ChartRadial/ChartRadial.cjs.map +1 -1
  107. package/dist/components/charts/ChartRadial/ChartRadial.js +101 -84
  108. package/dist/components/charts/ChartRadial/ChartRadial.js.map +1 -1
  109. package/dist/components/charts/ChartSankey/ChartSankey.cjs +1 -1
  110. package/dist/components/charts/ChartSankey/ChartSankey.cjs.map +1 -1
  111. package/dist/components/charts/ChartSankey/ChartSankey.js +148 -125
  112. package/dist/components/charts/ChartSankey/ChartSankey.js.map +1 -1
  113. package/dist/components/charts/ChartScatter/ChartScatter.cjs +1 -1
  114. package/dist/components/charts/ChartScatter/ChartScatter.cjs.map +1 -1
  115. package/dist/components/charts/ChartScatter/ChartScatter.js +138 -106
  116. package/dist/components/charts/ChartScatter/ChartScatter.js.map +1 -1
  117. package/dist/components/charts/ChartScatter/ChartScatter.module.css.cjs +1 -1
  118. package/dist/components/charts/ChartScatter/ChartScatter.module.css.js +3 -3
  119. package/dist/components/charts/ChartSunburst/ChartSunburst.cjs +1 -1
  120. package/dist/components/charts/ChartSunburst/ChartSunburst.cjs.map +1 -1
  121. package/dist/components/charts/ChartSunburst/ChartSunburst.js +115 -100
  122. package/dist/components/charts/ChartSunburst/ChartSunburst.js.map +1 -1
  123. package/dist/components/charts/ChartTimeline/ChartTimeline.cjs +2 -0
  124. package/dist/components/charts/ChartTimeline/ChartTimeline.cjs.map +1 -0
  125. package/dist/components/charts/ChartTimeline/ChartTimeline.js +703 -0
  126. package/dist/components/charts/ChartTimeline/ChartTimeline.js.map +1 -0
  127. package/dist/components/charts/ChartTimeline/ChartTimeline.module.css.cjs +2 -0
  128. package/dist/components/charts/ChartTimeline/ChartTimeline.module.css.cjs.map +1 -0
  129. package/dist/components/charts/ChartTimeline/ChartTimeline.module.css.js +124 -0
  130. package/dist/components/charts/ChartTimeline/ChartTimeline.module.css.js.map +1 -0
  131. package/dist/components/charts/ChartTimeline/ChartTimelineTable.cjs +2 -0
  132. package/dist/components/charts/ChartTimeline/ChartTimelineTable.cjs.map +1 -0
  133. package/dist/components/charts/ChartTimeline/ChartTimelineTable.js +42 -0
  134. package/dist/components/charts/ChartTimeline/ChartTimelineTable.js.map +1 -0
  135. package/dist/components/charts/ChartTimeline/timelineLayout.cjs +2 -0
  136. package/dist/components/charts/ChartTimeline/timelineLayout.cjs.map +1 -0
  137. package/dist/components/charts/ChartTimeline/timelineLayout.js +109 -0
  138. package/dist/components/charts/ChartTimeline/timelineLayout.js.map +1 -0
  139. package/dist/components/charts/ChartTimeline/timelineTime.cjs +2 -0
  140. package/dist/components/charts/ChartTimeline/timelineTime.cjs.map +1 -0
  141. package/dist/components/charts/ChartTimeline/timelineTime.js +91 -0
  142. package/dist/components/charts/ChartTimeline/timelineTime.js.map +1 -0
  143. package/dist/components/charts/ChartTimeline/timelineTooltip.cjs +2 -0
  144. package/dist/components/charts/ChartTimeline/timelineTooltip.cjs.map +1 -0
  145. package/dist/components/charts/ChartTimeline/timelineTooltip.js +77 -0
  146. package/dist/components/charts/ChartTimeline/timelineTooltip.js.map +1 -0
  147. package/dist/components/charts/ChartTooltip/ChartTooltip.cjs +1 -1
  148. package/dist/components/charts/ChartTooltip/ChartTooltip.cjs.map +1 -1
  149. package/dist/components/charts/ChartTooltip/ChartTooltip.js +1 -1
  150. package/dist/components/charts/ChartTooltip/ChartTooltip.js.map +1 -1
  151. package/dist/components/charts/ChartTreemap/ChartTreemap.cjs +1 -1
  152. package/dist/components/charts/ChartTreemap/ChartTreemap.cjs.map +1 -1
  153. package/dist/components/charts/ChartTreemap/ChartTreemap.js +100 -89
  154. package/dist/components/charts/ChartTreemap/ChartTreemap.js.map +1 -1
  155. package/dist/components/charts/ChartWaterfall/ChartWaterfall.cjs +1 -1
  156. package/dist/components/charts/ChartWaterfall/ChartWaterfall.cjs.map +1 -1
  157. package/dist/components/charts/ChartWaterfall/ChartWaterfall.js +125 -105
  158. package/dist/components/charts/ChartWaterfall/ChartWaterfall.js.map +1 -1
  159. package/dist/components/charts/ChartWaterfall/ChartWaterfall.module.css.cjs +1 -1
  160. package/dist/components/charts/ChartWaterfall/ChartWaterfall.module.css.js +8 -6
  161. package/dist/components/charts/ChartWaterfall/ChartWaterfall.module.css.js.map +1 -1
  162. package/dist/components/charts/core/CartesianFrame.cjs +1 -1
  163. package/dist/components/charts/core/CartesianFrame.cjs.map +1 -1
  164. package/dist/components/charts/core/CartesianFrame.js +61 -96
  165. package/dist/components/charts/core/CartesianFrame.js.map +1 -1
  166. package/dist/components/charts/core/Chart.module.css.cjs +1 -1
  167. package/dist/components/charts/core/Chart.module.css.js +52 -54
  168. package/dist/components/charts/core/Chart.module.css.js.map +1 -1
  169. package/dist/components/charts/core/ChartFrame.cjs +1 -1
  170. package/dist/components/charts/core/ChartFrame.cjs.map +1 -1
  171. package/dist/components/charts/core/ChartFrame.js +53 -47
  172. package/dist/components/charts/core/ChartFrame.js.map +1 -1
  173. package/dist/components/charts/core/ChartLegend.cjs +1 -1
  174. package/dist/components/charts/core/ChartLegend.cjs.map +1 -1
  175. package/dist/components/charts/core/ChartLegend.js +37 -25
  176. package/dist/components/charts/core/ChartLegend.js.map +1 -1
  177. package/dist/components/charts/core/PointBands.cjs +2 -0
  178. package/dist/components/charts/core/PointBands.cjs.map +1 -0
  179. package/dist/components/charts/core/PointBands.js +41 -0
  180. package/dist/components/charts/core/PointBands.js.map +1 -0
  181. package/dist/components/charts/core/cartesianLayout.cjs +1 -1
  182. package/dist/components/charts/core/cartesianLayout.cjs.map +1 -1
  183. package/dist/components/charts/core/cartesianLayout.js +49 -41
  184. package/dist/components/charts/core/cartesianLayout.js.map +1 -1
  185. package/dist/components/charts/core/hoverPath.cjs +2 -0
  186. package/dist/components/charts/core/hoverPath.cjs.map +1 -0
  187. package/dist/components/charts/core/hoverPath.js +7 -0
  188. package/dist/components/charts/core/hoverPath.js.map +1 -0
  189. package/dist/components/charts/core/pointLabels.cjs +2 -0
  190. package/dist/components/charts/core/pointLabels.cjs.map +1 -0
  191. package/dist/components/charts/core/pointLabels.js +12 -0
  192. package/dist/components/charts/core/pointLabels.js.map +1 -0
  193. package/dist/components/charts/core/tooltips.cjs +2 -0
  194. package/dist/components/charts/core/tooltips.cjs.map +1 -0
  195. package/dist/components/charts/core/tooltips.js +48 -0
  196. package/dist/components/charts/core/tooltips.js.map +1 -0
  197. package/dist/components/charts/core/useCartesianLayout.cjs +2 -0
  198. package/dist/components/charts/core/useCartesianLayout.cjs.map +1 -0
  199. package/dist/components/charts/core/useCartesianLayout.js +38 -0
  200. package/dist/components/charts/core/useCartesianLayout.js.map +1 -0
  201. package/dist/components/charts/core/useChartMetrics.cjs +1 -1
  202. package/dist/components/charts/core/useChartMetrics.cjs.map +1 -1
  203. package/dist/components/charts/core/useChartMetrics.js +20 -25
  204. package/dist/components/charts/core/useChartMetrics.js.map +1 -1
  205. package/dist/components/charts/core/useSeriesToggle.cjs +1 -1
  206. package/dist/components/charts/core/useSeriesToggle.cjs.map +1 -1
  207. package/dist/components/charts/core/useSeriesToggle.js +19 -12
  208. package/dist/components/charts/core/useSeriesToggle.js.map +1 -1
  209. package/dist/components/data-display/Accordion/Accordion.cjs +1 -1
  210. package/dist/components/data-display/Accordion/Accordion.cjs.map +1 -1
  211. package/dist/components/data-display/Accordion/Accordion.js +56 -46
  212. package/dist/components/data-display/Accordion/Accordion.js.map +1 -1
  213. package/dist/components/data-display/Accordion/Accordion.module.css.cjs +1 -1
  214. package/dist/components/data-display/Accordion/Accordion.module.css.js +16 -16
  215. package/dist/components/data-display/List/List.cjs.map +1 -1
  216. package/dist/components/data-display/List/List.js.map +1 -1
  217. package/dist/components/data-display/List/List.module.css.cjs +1 -1
  218. package/dist/components/data-display/List/List.module.css.js +34 -24
  219. package/dist/components/data-display/List/List.module.css.js.map +1 -1
  220. package/dist/components/data-display/List/ListingOptions.cjs +1 -1
  221. package/dist/components/data-display/List/ListingOptions.cjs.map +1 -1
  222. package/dist/components/data-display/List/ListingOptions.js +98 -74
  223. package/dist/components/data-display/List/ListingOptions.js.map +1 -1
  224. package/dist/components/data-display/List/useListing.cjs.map +1 -1
  225. package/dist/components/data-display/List/useListing.js.map +1 -1
  226. package/dist/components/data-display/SortableList/SortableList.cjs +2 -0
  227. package/dist/components/data-display/SortableList/SortableList.cjs.map +1 -0
  228. package/dist/components/data-display/SortableList/SortableList.js +168 -0
  229. package/dist/components/data-display/SortableList/SortableList.js.map +1 -0
  230. package/dist/components/data-display/SortableList/SortableList.module.css.cjs +2 -0
  231. package/dist/components/data-display/SortableList/SortableList.module.css.cjs.map +1 -0
  232. package/dist/components/data-display/SortableList/SortableList.module.css.js +34 -0
  233. package/dist/components/data-display/SortableList/SortableList.module.css.js.map +1 -0
  234. package/dist/components/data-display/Table/Table.cjs +1 -1
  235. package/dist/components/data-display/Table/Table.cjs.map +1 -1
  236. package/dist/components/data-display/Table/Table.js +86 -85
  237. package/dist/components/data-display/Table/Table.js.map +1 -1
  238. package/dist/components/data-display/Table/Table.module.css.cjs +1 -1
  239. package/dist/components/data-display/Table/Table.module.css.js +50 -51
  240. package/dist/components/data-display/Table/Table.module.css.js.map +1 -1
  241. package/dist/components/data-display/Tag/Tag.cjs +2 -0
  242. package/dist/components/data-display/Tag/Tag.cjs.map +1 -0
  243. package/dist/components/data-display/Tag/Tag.js +50 -0
  244. package/dist/components/data-display/Tag/Tag.js.map +1 -0
  245. package/dist/components/data-display/Tag/Tag.module.css.cjs +2 -0
  246. package/dist/components/data-display/Tag/Tag.module.css.cjs.map +1 -0
  247. package/dist/components/data-display/Tag/Tag.module.css.js +22 -0
  248. package/dist/components/data-display/Tag/Tag.module.css.js.map +1 -0
  249. package/dist/components/data-display/Timeline/Timeline.cjs +2 -0
  250. package/dist/components/data-display/Timeline/Timeline.cjs.map +1 -0
  251. package/dist/components/data-display/Timeline/Timeline.js +31 -0
  252. package/dist/components/data-display/Timeline/Timeline.js.map +1 -0
  253. package/dist/components/data-display/Timeline/Timeline.module.css.cjs +2 -0
  254. package/dist/components/data-display/Timeline/Timeline.module.css.cjs.map +1 -0
  255. package/dist/components/data-display/Timeline/Timeline.module.css.js +30 -0
  256. package/dist/components/data-display/Timeline/Timeline.module.css.js.map +1 -0
  257. package/dist/components/feedback/Skeleton/Skeleton.cjs +2 -0
  258. package/dist/components/feedback/Skeleton/Skeleton.cjs.map +1 -0
  259. package/dist/components/feedback/Skeleton/Skeleton.js +17 -0
  260. package/dist/components/feedback/Skeleton/Skeleton.js.map +1 -0
  261. package/dist/components/feedback/Skeleton/Skeleton.module.css.cjs +2 -0
  262. package/dist/components/feedback/Skeleton/Skeleton.module.css.cjs.map +1 -0
  263. package/dist/components/feedback/Skeleton/Skeleton.module.css.js +15 -0
  264. package/dist/components/feedback/Skeleton/Skeleton.module.css.js.map +1 -0
  265. package/dist/components/feedback/Toast/Toast.module.css.cjs +2 -0
  266. package/dist/components/feedback/Toast/Toast.module.css.cjs.map +1 -0
  267. package/dist/components/feedback/Toast/Toast.module.css.js +31 -0
  268. package/dist/components/feedback/Toast/Toast.module.css.js.map +1 -0
  269. package/dist/components/feedback/Toast/ToastRegion.cjs +2 -0
  270. package/dist/components/feedback/Toast/ToastRegion.cjs.map +1 -0
  271. package/dist/components/feedback/Toast/ToastRegion.js +62 -0
  272. package/dist/components/feedback/Toast/ToastRegion.js.map +1 -0
  273. package/dist/components/feedback/Toast/toastStore.cjs +2 -0
  274. package/dist/components/feedback/Toast/toastStore.cjs.map +1 -0
  275. package/dist/components/feedback/Toast/toastStore.js +33 -0
  276. package/dist/components/feedback/Toast/toastStore.js.map +1 -0
  277. package/dist/components/forms/Checkbox/Checkbox.cjs +1 -1
  278. package/dist/components/forms/Checkbox/Checkbox.cjs.map +1 -1
  279. package/dist/components/forms/Checkbox/Checkbox.js +43 -31
  280. package/dist/components/forms/Checkbox/Checkbox.js.map +1 -1
  281. package/dist/components/forms/Checkbox/Checkbox.module.css.cjs +1 -1
  282. package/dist/components/forms/Checkbox/Checkbox.module.css.js +1 -1
  283. package/dist/components/forms/CheckboxGroup/CheckboxGroup.cjs +2 -0
  284. package/dist/components/forms/CheckboxGroup/CheckboxGroup.cjs.map +1 -0
  285. package/dist/components/forms/CheckboxGroup/CheckboxGroup.js +54 -0
  286. package/dist/components/forms/CheckboxGroup/CheckboxGroup.js.map +1 -0
  287. package/dist/components/forms/CheckboxGroup/CheckboxGroup.module.css.cjs +2 -0
  288. package/dist/components/forms/CheckboxGroup/CheckboxGroup.module.css.cjs.map +1 -0
  289. package/dist/components/forms/CheckboxGroup/CheckboxGroup.module.css.js +22 -0
  290. package/dist/components/forms/CheckboxGroup/CheckboxGroup.module.css.js.map +1 -0
  291. package/dist/components/forms/ColorPicker/ColorPicker.cjs +2 -0
  292. package/dist/components/forms/ColorPicker/ColorPicker.cjs.map +1 -0
  293. package/dist/components/forms/ColorPicker/ColorPicker.js +57 -0
  294. package/dist/components/forms/ColorPicker/ColorPicker.js.map +1 -0
  295. package/dist/components/forms/ColorPicker/ColorPicker.module.css.cjs +2 -0
  296. package/dist/components/forms/ColorPicker/ColorPicker.module.css.cjs.map +1 -0
  297. package/dist/components/forms/ColorPicker/ColorPicker.module.css.js +22 -0
  298. package/dist/components/forms/ColorPicker/ColorPicker.module.css.js.map +1 -0
  299. package/dist/components/forms/ComboBox/ComboBox.cjs.map +1 -1
  300. package/dist/components/forms/ComboBox/ComboBox.js.map +1 -1
  301. package/dist/components/forms/ComboBox/ComboBox.module.css.cjs +1 -1
  302. package/dist/components/forms/ComboBox/ComboBox.module.css.js +20 -20
  303. package/dist/components/forms/Field/Field.cjs +1 -1
  304. package/dist/components/forms/Field/Field.cjs.map +1 -1
  305. package/dist/components/forms/Field/Field.js +21 -20
  306. package/dist/components/forms/Field/Field.js.map +1 -1
  307. package/dist/components/forms/Field/Field.module.css.cjs +1 -1
  308. package/dist/components/forms/Field/Field.module.css.js +18 -12
  309. package/dist/components/forms/Field/Field.module.css.js.map +1 -1
  310. package/dist/components/forms/FileUpload/FileUpload.cjs +2 -0
  311. package/dist/components/forms/FileUpload/FileUpload.cjs.map +1 -0
  312. package/dist/components/forms/FileUpload/FileUpload.js +142 -0
  313. package/dist/components/forms/FileUpload/FileUpload.js.map +1 -0
  314. package/dist/components/forms/FileUpload/FileUpload.module.css.cjs +2 -0
  315. package/dist/components/forms/FileUpload/FileUpload.module.css.cjs.map +1 -0
  316. package/dist/components/forms/FileUpload/FileUpload.module.css.js +46 -0
  317. package/dist/components/forms/FileUpload/FileUpload.module.css.js.map +1 -0
  318. package/dist/components/forms/InputPassword/InputPassword.module.css.cjs +1 -1
  319. package/dist/components/forms/InputPassword/InputPassword.module.css.js +12 -12
  320. package/dist/components/forms/InputText/InputText.cjs +1 -1
  321. package/dist/components/forms/InputText/InputText.cjs.map +1 -1
  322. package/dist/components/forms/InputText/InputText.js +55 -47
  323. package/dist/components/forms/InputText/InputText.js.map +1 -1
  324. package/dist/components/forms/InputText/InputText.module.css.cjs +1 -1
  325. package/dist/components/forms/InputText/InputText.module.css.js +10 -10
  326. package/dist/components/forms/RadioGroup/RadioGroup.module.css.cjs +1 -1
  327. package/dist/components/forms/RadioGroup/RadioGroup.module.css.js +4 -4
  328. package/dist/components/forms/SegmentedControl/SegmentedControl.cjs +2 -0
  329. package/dist/components/forms/SegmentedControl/SegmentedControl.cjs.map +1 -0
  330. package/dist/components/forms/SegmentedControl/SegmentedControl.js +52 -0
  331. package/dist/components/forms/SegmentedControl/SegmentedControl.js.map +1 -0
  332. package/dist/components/forms/SegmentedControl/SegmentedControl.module.css.cjs +2 -0
  333. package/dist/components/forms/SegmentedControl/SegmentedControl.module.css.cjs.map +1 -0
  334. package/dist/components/forms/SegmentedControl/SegmentedControl.module.css.js +22 -0
  335. package/dist/components/forms/SegmentedControl/SegmentedControl.module.css.js.map +1 -0
  336. package/dist/components/forms/Select/Select.module.css.cjs +1 -1
  337. package/dist/components/forms/Select/Select.module.css.js +13 -13
  338. package/dist/components/forms/Switch/Switch.module.css.cjs +1 -1
  339. package/dist/components/forms/Switch/Switch.module.css.js +2 -2
  340. package/dist/components/icons/icons.cjs +1 -1
  341. package/dist/components/icons/icons.cjs.map +1 -1
  342. package/dist/components/icons/icons.js +198 -40
  343. package/dist/components/icons/icons.js.map +1 -1
  344. package/dist/components/navigation/SkipLink/SkipLink.cjs +2 -0
  345. package/dist/components/navigation/SkipLink/SkipLink.cjs.map +1 -0
  346. package/dist/components/navigation/SkipLink/SkipLink.js +9 -0
  347. package/dist/components/navigation/SkipLink/SkipLink.js.map +1 -0
  348. package/dist/components/navigation/SkipLink/SkipLink.module.css.cjs +2 -0
  349. package/dist/components/navigation/SkipLink/SkipLink.module.css.cjs.map +1 -0
  350. package/dist/components/navigation/SkipLink/SkipLink.module.css.js +8 -0
  351. package/dist/components/navigation/SkipLink/SkipLink.module.css.js.map +1 -0
  352. package/dist/components/navigation/Steps/Steps.cjs +2 -0
  353. package/dist/components/navigation/Steps/Steps.cjs.map +1 -0
  354. package/dist/components/navigation/Steps/Steps.js +30 -0
  355. package/dist/components/navigation/Steps/Steps.js.map +1 -0
  356. package/dist/components/navigation/Steps/Steps.module.css.cjs +2 -0
  357. package/dist/components/navigation/Steps/Steps.module.css.cjs.map +1 -0
  358. package/dist/components/navigation/Steps/Steps.module.css.js +26 -0
  359. package/dist/components/navigation/Steps/Steps.module.css.js.map +1 -0
  360. package/dist/components/navigation/Tabs/Tabs.cjs +1 -1
  361. package/dist/components/navigation/Tabs/Tabs.cjs.map +1 -1
  362. package/dist/components/navigation/Tabs/Tabs.js +88 -79
  363. package/dist/components/navigation/Tabs/Tabs.js.map +1 -1
  364. package/dist/components/navigation/Tabs/Tabs.module.css.cjs +1 -1
  365. package/dist/components/navigation/Tabs/Tabs.module.css.js +18 -14
  366. package/dist/components/navigation/Tabs/Tabs.module.css.js.map +1 -1
  367. package/dist/components/navigation/TabsNav/TabsNav.cjs +2 -0
  368. package/dist/components/navigation/TabsNav/TabsNav.cjs.map +1 -0
  369. package/dist/components/navigation/TabsNav/TabsNav.js +21 -0
  370. package/dist/components/navigation/TabsNav/TabsNav.js.map +1 -0
  371. package/dist/components/navigation/TabsNav/TabsNav.module.css.cjs +2 -0
  372. package/dist/components/navigation/TabsNav/TabsNav.module.css.cjs.map +1 -0
  373. package/dist/components/navigation/TabsNav/TabsNav.module.css.js +18 -0
  374. package/dist/components/navigation/TabsNav/TabsNav.module.css.js.map +1 -0
  375. package/dist/components/overlays/Dialog/Dialog.cjs +1 -1
  376. package/dist/components/overlays/Dialog/Dialog.cjs.map +1 -1
  377. package/dist/components/overlays/Dialog/Dialog.js +11 -58
  378. package/dist/components/overlays/Dialog/Dialog.js.map +1 -1
  379. package/dist/components/overlays/Dialog/DialogFrame.cjs +2 -0
  380. package/dist/components/overlays/Dialog/DialogFrame.cjs.map +1 -0
  381. package/dist/components/overlays/Dialog/DialogFrame.js +65 -0
  382. package/dist/components/overlays/Dialog/DialogFrame.js.map +1 -0
  383. package/dist/components/overlays/Drawer/Drawer.cjs +2 -0
  384. package/dist/components/overlays/Drawer/Drawer.cjs.map +1 -0
  385. package/dist/components/overlays/Drawer/Drawer.js +17 -0
  386. package/dist/components/overlays/Drawer/Drawer.js.map +1 -0
  387. package/dist/components/overlays/Drawer/Drawer.module.css.cjs +2 -0
  388. package/dist/components/overlays/Drawer/Drawer.module.css.cjs.map +1 -0
  389. package/dist/components/overlays/Drawer/Drawer.module.css.js +23 -0
  390. package/dist/components/overlays/Drawer/Drawer.module.css.js.map +1 -0
  391. package/dist/components/overlays/Menu/Menu.cjs +1 -1
  392. package/dist/components/overlays/Menu/Menu.cjs.map +1 -1
  393. package/dist/components/overlays/Menu/Menu.js +105 -86
  394. package/dist/components/overlays/Menu/Menu.js.map +1 -1
  395. package/dist/components/overlays/Menu/Menu.module.css.cjs +1 -1
  396. package/dist/components/overlays/Menu/Menu.module.css.js +24 -6
  397. package/dist/components/overlays/Menu/Menu.module.css.js.map +1 -1
  398. package/dist/design-system.css +1 -1
  399. package/dist/index.cjs +1 -1
  400. package/dist/index.js +190 -118
  401. package/dist/index.js.map +1 -1
  402. package/dist/types/components/actions/ButtonTile/ButtonTile.d.ts +14 -0
  403. package/dist/types/components/actions/ButtonTile/index.d.ts +2 -0
  404. package/dist/types/components/actions/Toolbar/Toolbar.d.ts +27 -0
  405. package/dist/types/components/actions/Toolbar/index.d.ts +2 -0
  406. package/dist/types/components/charts/ChartArea/ChartArea.d.ts +15 -4
  407. package/dist/types/components/charts/ChartBar/ChartBar.d.ts +11 -4
  408. package/dist/types/components/charts/ChartCombo/ChartCombo.d.ts +16 -4
  409. package/dist/types/components/charts/ChartDonut/ChartDonut.d.ts +5 -1
  410. package/dist/types/components/charts/ChartGauge/ChartGauge.d.ts +83 -0
  411. package/dist/types/components/charts/ChartGauge/gaugeLayout.d.ts +64 -0
  412. package/dist/types/components/charts/ChartGauge/gaugeReading.d.ts +97 -0
  413. package/dist/types/components/charts/ChartGauge/gaugeScale.d.ts +38 -0
  414. package/dist/types/components/charts/ChartGauge/index.d.ts +2 -0
  415. package/dist/types/components/charts/ChartLine/ChartLine.d.ts +15 -4
  416. package/dist/types/components/charts/ChartMap/ChartMap.d.ts +104 -0
  417. package/dist/types/components/charts/ChartMap/ChartMapLegend.d.ts +44 -0
  418. package/dist/types/components/charts/ChartMap/ChartMapTable.d.ts +38 -0
  419. package/dist/types/components/charts/ChartMap/index.d.ts +4 -0
  420. package/dist/types/components/charts/ChartMap/mapGeometry.d.ts +56 -0
  421. package/dist/types/components/charts/ChartMap/mapLabels.d.ts +51 -0
  422. package/dist/types/components/charts/ChartMap/mapScales.d.ts +76 -0
  423. package/dist/types/components/charts/ChartMap/polylabel.d.ts +9 -0
  424. package/dist/types/components/charts/ChartPie/ChartPie.d.ts +5 -1
  425. package/dist/types/components/charts/ChartRadial/ChartRadial.d.ts +5 -1
  426. package/dist/types/components/charts/ChartSankey/ChartSankey.d.ts +5 -1
  427. package/dist/types/components/charts/ChartScatter/ChartScatter.d.ts +7 -1
  428. package/dist/types/components/charts/ChartSunburst/ChartSunburst.d.ts +11 -2
  429. package/dist/types/components/charts/ChartTimeline/ChartTimeline.d.ts +137 -0
  430. package/dist/types/components/charts/ChartTimeline/ChartTimelineTable.d.ts +25 -0
  431. package/dist/types/components/charts/ChartTimeline/index.d.ts +2 -0
  432. package/dist/types/components/charts/ChartTimeline/timelineLayout.d.ts +70 -0
  433. package/dist/types/components/charts/ChartTimeline/timelineTime.d.ts +16 -0
  434. package/dist/types/components/charts/ChartTimeline/timelineTooltip.d.ts +45 -0
  435. package/dist/types/components/charts/ChartTooltip/ChartTooltip.d.ts +2 -0
  436. package/dist/types/components/charts/ChartTreemap/ChartTreemap.d.ts +11 -2
  437. package/dist/types/components/charts/ChartWaterfall/ChartWaterfall.d.ts +8 -3
  438. package/dist/types/components/charts/core/CartesianFrame.d.ts +6 -1
  439. package/dist/types/components/charts/core/ChartFrame.d.ts +7 -1
  440. package/dist/types/components/charts/core/ChartLegend.d.ts +3 -1
  441. package/dist/types/components/charts/core/PointBands.d.ts +22 -0
  442. package/dist/types/components/charts/core/cartesianLayout.d.ts +10 -4
  443. package/dist/types/components/charts/core/hoverPath.d.ts +10 -0
  444. package/dist/types/components/charts/core/index.d.ts +13 -3
  445. package/dist/types/components/charts/core/pointLabels.d.ts +13 -0
  446. package/dist/types/components/charts/core/tooltips.d.ts +49 -0
  447. package/dist/types/components/charts/core/useCartesianLayout.d.ts +20 -0
  448. package/dist/types/components/charts/core/useSeriesToggle.d.ts +15 -1
  449. package/dist/types/components/data-display/Accordion/Accordion.d.ts +6 -1
  450. package/dist/types/components/data-display/Accordion/index.d.ts +1 -1
  451. package/dist/types/components/data-display/List/List.d.ts +1 -1
  452. package/dist/types/components/data-display/List/useListing.d.ts +7 -1
  453. package/dist/types/components/data-display/SortableList/SortableList.d.ts +22 -0
  454. package/dist/types/components/data-display/SortableList/index.d.ts +2 -0
  455. package/dist/types/components/data-display/Tag/Tag.d.ts +13 -0
  456. package/dist/types/components/data-display/Tag/index.d.ts +2 -0
  457. package/dist/types/components/data-display/Timeline/Timeline.d.ts +15 -0
  458. package/dist/types/components/data-display/Timeline/index.d.ts +2 -0
  459. package/dist/types/components/feedback/Skeleton/Skeleton.d.ts +13 -0
  460. package/dist/types/components/feedback/Skeleton/index.d.ts +2 -0
  461. package/dist/types/components/feedback/Toast/ToastRegion.d.ts +2 -0
  462. package/dist/types/components/feedback/Toast/index.d.ts +3 -0
  463. package/dist/types/components/feedback/Toast/toastStore.d.ts +24 -0
  464. package/dist/types/components/forms/CheckboxGroup/CheckboxGroup.d.ts +28 -0
  465. package/dist/types/components/forms/CheckboxGroup/index.d.ts +2 -0
  466. package/dist/types/components/forms/ColorPicker/ColorPicker.d.ts +26 -0
  467. package/dist/types/components/forms/ColorPicker/index.d.ts +2 -0
  468. package/dist/types/components/forms/ComboBox/ComboBox.d.ts +7 -1
  469. package/dist/types/components/forms/Field/Field.d.ts +6 -2
  470. package/dist/types/components/forms/Field/index.d.ts +1 -1
  471. package/dist/types/components/forms/FileUpload/FileUpload.d.ts +37 -0
  472. package/dist/types/components/forms/FileUpload/index.d.ts +2 -0
  473. package/dist/types/components/forms/InputText/InputText.d.ts +4 -2
  474. package/dist/types/components/forms/SegmentedControl/SegmentedControl.d.ts +23 -0
  475. package/dist/types/components/forms/SegmentedControl/index.d.ts +2 -0
  476. package/dist/types/components/icons/icons.d.ts +29 -0
  477. package/dist/types/components/icons/index.d.ts +1 -1
  478. package/dist/types/components/navigation/SkipLink/SkipLink.d.ts +7 -0
  479. package/dist/types/components/navigation/SkipLink/index.d.ts +2 -0
  480. package/dist/types/components/navigation/Steps/Steps.d.ts +16 -0
  481. package/dist/types/components/navigation/Steps/index.d.ts +2 -0
  482. package/dist/types/components/navigation/Tabs/Tabs.d.ts +5 -1
  483. package/dist/types/components/navigation/TabsNav/TabsNav.d.ts +20 -0
  484. package/dist/types/components/navigation/TabsNav/index.d.ts +2 -0
  485. package/dist/types/components/overlays/Dialog/Dialog.d.ts +21 -9
  486. package/dist/types/components/overlays/Dialog/DialogFrame.d.ts +13 -0
  487. package/dist/types/components/overlays/Drawer/Drawer.d.ts +9 -0
  488. package/dist/types/components/overlays/Drawer/index.d.ts +2 -0
  489. package/dist/types/components/overlays/Menu/Menu.d.ts +16 -2
  490. package/dist/types/components/overlays/Menu/index.d.ts +1 -1
  491. package/dist/types/index.d.ts +43 -7
  492. package/dist/types/utils/formatters/formatarDuracao.d.ts +5 -0
  493. package/dist/types/utils/formatters/formatarNumero.d.ts +6 -1
  494. package/dist/types/utils/formatters/formatarTamanhoDeArquivo.d.ts +7 -0
  495. package/dist/types/utils/formatters/index.d.ts +4 -1
  496. package/dist/utils/formatters/formatarDuracao.cjs +2 -0
  497. package/dist/utils/formatters/formatarDuracao.cjs.map +1 -0
  498. package/dist/utils/formatters/formatarDuracao.js +10 -0
  499. package/dist/utils/formatters/formatarDuracao.js.map +1 -0
  500. package/dist/utils/formatters/formatarNumero.cjs +1 -1
  501. package/dist/utils/formatters/formatarNumero.cjs.map +1 -1
  502. package/dist/utils/formatters/formatarNumero.js +42 -17
  503. package/dist/utils/formatters/formatarNumero.js.map +1 -1
  504. package/dist/utils/formatters/formatarTamanhoDeArquivo.cjs +2 -0
  505. package/dist/utils/formatters/formatarTamanhoDeArquivo.cjs.map +1 -0
  506. package/dist/utils/formatters/formatarTamanhoDeArquivo.js +17 -0
  507. package/dist/utils/formatters/formatarTamanhoDeArquivo.js.map +1 -0
  508. package/package.json +3 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"polylabel.cjs","sources":["../../../../src/components/charts/ChartMap/polylabel.ts"],"sourcesContent":["export type Point = readonly [number, number];\nexport type Ring = readonly Point[];\n\ninterface Cell {\n /** Distancia do centro da celula ate a borda: positiva dentro do poligono, negativa fora. */\n distance: number;\n half: number;\n /** O maior valor que um ponto da celula ainda pode alcancar. */\n potential: number;\n x: number;\n y: number;\n}\n\nfunction segmentDistanceSquared(x: number, y: number, [ax, ay]: Point, [bx, by]: Point) {\n const dx = bx - ax;\n const dy = by - ay;\n const t = dx === 0 && dy === 0 ? 0 : Math.max(0, Math.min(1, ((x - ax) * dx + (y - ay) * dy) / (dx * dx + dy * dy)));\n const px = ax + dx * t;\n const py = ay + dy * t;\n\n return (x - px) ** 2 + (y - py) ** 2;\n}\n\n/** Distancia ate a borda mais proxima, com o sinal de dentro ou fora; furos contam como borda. */\nexport function signedDistance(x: number, y: number, rings: readonly Ring[]) {\n let inside = false;\n let nearest = Infinity;\n\n for (const ring of rings) {\n for (let i = 0, j = ring.length - 1; i < ring.length; j = i, i += 1) {\n const [ax, ay] = ring[i];\n const [bx, by] = ring[j];\n\n if (ay > y !== by > y && x < ((bx - ax) * (y - ay)) / (by - ay) + ax) {\n inside = !inside;\n }\n\n nearest = Math.min(nearest, segmentDistanceSquared(x, y, ring[i], ring[j]));\n }\n }\n\n return (inside ? 1 : -1) * Math.sqrt(nearest);\n}\n\nfunction cellAt(x: number, y: number, half: number, rings: readonly Ring[]): Cell {\n const distance = signedDistance(x, y, rings);\n return { distance, half, potential: distance + half * Math.SQRT2, x, y };\n}\n\n/**\n * Centro visual do poligono: o ponto interno mais distante das bordas, achado por subdivisao, como o polylabel do\n * Mapbox. Num \"L\" ou num litoral recortado, o centroide cai fora ou colado na borda; este ponto, nao.\n */\nexport function polylabel(rings: readonly Ring[], precision = 1): Point {\n let [x0, y0, x1, y1] = [Infinity, Infinity, -Infinity, -Infinity];\n\n for (const [x, y] of rings[0] ?? []) {\n [x0, y0, x1, y1] = [Math.min(x0, x), Math.min(y0, y), Math.max(x1, x), Math.max(y1, y)];\n }\n\n const side = Math.min(x1 - x0, y1 - y0);\n\n if (!(side > 0)) {\n return Number.isFinite(x0) ? [x0, y0] : [0, 0];\n }\n\n // Fila em ordem crescente de potencial: a celula mais promissora sai do fim.\n const queue: Cell[] = [];\n const enqueue = (cell: Cell) => {\n let low = 0;\n let high = queue.length;\n\n while (low < high) {\n const middle = (low + high) >> 1;\n\n if (queue[middle].potential < cell.potential) {\n low = middle + 1;\n } else {\n high = middle;\n }\n }\n\n queue.splice(low, 0, cell);\n };\n\n for (let x = x0; x < x1; x += side) {\n for (let y = y0; y < y1; y += side) {\n enqueue(cellAt(x + side / 2, y + side / 2, side / 2, rings));\n }\n }\n\n let best = cellAt((x0 + x1) / 2, (y0 + y1) / 2, 0, rings);\n\n while (queue.length > 0) {\n const cell = queue.pop()!;\n\n if (cell.distance > best.distance) {\n best = cell;\n }\n\n if (cell.potential - best.distance <= precision) {\n continue;\n }\n\n const half = cell.half / 2;\n enqueue(cellAt(cell.x - half, cell.y - half, half, rings));\n enqueue(cellAt(cell.x + half, cell.y - half, half, rings));\n enqueue(cellAt(cell.x - half, cell.y + half, half, rings));\n enqueue(cellAt(cell.x + half, cell.y + half, half, rings));\n }\n\n return [best.x, best.y];\n}\n"],"names":["segmentDistanceSquared","x","y","ax","ay","bx","by","dx","dy","t","px","py","signedDistance","rings","inside","nearest","ring","i","j","cellAt","half","distance","polylabel","precision","x0","y0","x1","y1","side","queue","enqueue","cell","low","high","middle","best"],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ function y(i, f, [o, l], [s, a]) {
2
+ const e = s - o, c = a - l, h = e === 0 && c === 0 ? 0 : Math.max(0, Math.min(1, ((i - o) * e + (f - l) * c) / (e * e + c * c))), u = o + e * h, n = l + c * h;
3
+ return (i - u) ** 2 + (f - n) ** 2;
4
+ }
5
+ function m(i, f, o) {
6
+ let l = !1, s = 1 / 0;
7
+ for (const a of o)
8
+ for (let e = 0, c = a.length - 1; e < a.length; c = e, e += 1) {
9
+ const [h, u] = a[e], [n, t] = a[c];
10
+ u > f != t > f && i < (n - h) * (f - u) / (t - u) + h && (l = !l), s = Math.min(s, y(i, f, a[e], a[c]));
11
+ }
12
+ return (l ? 1 : -1) * Math.sqrt(s);
13
+ }
14
+ function r(i, f, o, l) {
15
+ const s = m(i, f, l);
16
+ return { distance: s, half: o, potential: s + o * Math.SQRT2, x: i, y: f };
17
+ }
18
+ function p(i, f = 1) {
19
+ let [o, l, s, a] = [1 / 0, 1 / 0, -1 / 0, -1 / 0];
20
+ for (const [n, t] of i[0] ?? [])
21
+ [o, l, s, a] = [Math.min(o, n), Math.min(l, t), Math.max(s, n), Math.max(a, t)];
22
+ const e = Math.min(s - o, a - l);
23
+ if (!(e > 0))
24
+ return Number.isFinite(o) ? [o, l] : [0, 0];
25
+ const c = [], h = (n) => {
26
+ let t = 0, d = c.length;
27
+ for (; t < d; ) {
28
+ const x = t + d >> 1;
29
+ c[x].potential < n.potential ? t = x + 1 : d = x;
30
+ }
31
+ c.splice(t, 0, n);
32
+ };
33
+ for (let n = o; n < s; n += e)
34
+ for (let t = l; t < a; t += e)
35
+ h(r(n + e / 2, t + e / 2, e / 2, i));
36
+ let u = r((o + s) / 2, (l + a) / 2, 0, i);
37
+ for (; c.length > 0; ) {
38
+ const n = c.pop();
39
+ if (n.distance > u.distance && (u = n), n.potential - u.distance <= f)
40
+ continue;
41
+ const t = n.half / 2;
42
+ h(r(n.x - t, n.y - t, t, i)), h(r(n.x + t, n.y - t, t, i)), h(r(n.x - t, n.y + t, t, i)), h(r(n.x + t, n.y + t, t, i));
43
+ }
44
+ return [u.x, u.y];
45
+ }
46
+ export {
47
+ p as polylabel,
48
+ m as signedDistance
49
+ };
50
+ //# sourceMappingURL=polylabel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"polylabel.js","sources":["../../../../src/components/charts/ChartMap/polylabel.ts"],"sourcesContent":["export type Point = readonly [number, number];\nexport type Ring = readonly Point[];\n\ninterface Cell {\n /** Distancia do centro da celula ate a borda: positiva dentro do poligono, negativa fora. */\n distance: number;\n half: number;\n /** O maior valor que um ponto da celula ainda pode alcancar. */\n potential: number;\n x: number;\n y: number;\n}\n\nfunction segmentDistanceSquared(x: number, y: number, [ax, ay]: Point, [bx, by]: Point) {\n const dx = bx - ax;\n const dy = by - ay;\n const t = dx === 0 && dy === 0 ? 0 : Math.max(0, Math.min(1, ((x - ax) * dx + (y - ay) * dy) / (dx * dx + dy * dy)));\n const px = ax + dx * t;\n const py = ay + dy * t;\n\n return (x - px) ** 2 + (y - py) ** 2;\n}\n\n/** Distancia ate a borda mais proxima, com o sinal de dentro ou fora; furos contam como borda. */\nexport function signedDistance(x: number, y: number, rings: readonly Ring[]) {\n let inside = false;\n let nearest = Infinity;\n\n for (const ring of rings) {\n for (let i = 0, j = ring.length - 1; i < ring.length; j = i, i += 1) {\n const [ax, ay] = ring[i];\n const [bx, by] = ring[j];\n\n if (ay > y !== by > y && x < ((bx - ax) * (y - ay)) / (by - ay) + ax) {\n inside = !inside;\n }\n\n nearest = Math.min(nearest, segmentDistanceSquared(x, y, ring[i], ring[j]));\n }\n }\n\n return (inside ? 1 : -1) * Math.sqrt(nearest);\n}\n\nfunction cellAt(x: number, y: number, half: number, rings: readonly Ring[]): Cell {\n const distance = signedDistance(x, y, rings);\n return { distance, half, potential: distance + half * Math.SQRT2, x, y };\n}\n\n/**\n * Centro visual do poligono: o ponto interno mais distante das bordas, achado por subdivisao, como o polylabel do\n * Mapbox. Num \"L\" ou num litoral recortado, o centroide cai fora ou colado na borda; este ponto, nao.\n */\nexport function polylabel(rings: readonly Ring[], precision = 1): Point {\n let [x0, y0, x1, y1] = [Infinity, Infinity, -Infinity, -Infinity];\n\n for (const [x, y] of rings[0] ?? []) {\n [x0, y0, x1, y1] = [Math.min(x0, x), Math.min(y0, y), Math.max(x1, x), Math.max(y1, y)];\n }\n\n const side = Math.min(x1 - x0, y1 - y0);\n\n if (!(side > 0)) {\n return Number.isFinite(x0) ? [x0, y0] : [0, 0];\n }\n\n // Fila em ordem crescente de potencial: a celula mais promissora sai do fim.\n const queue: Cell[] = [];\n const enqueue = (cell: Cell) => {\n let low = 0;\n let high = queue.length;\n\n while (low < high) {\n const middle = (low + high) >> 1;\n\n if (queue[middle].potential < cell.potential) {\n low = middle + 1;\n } else {\n high = middle;\n }\n }\n\n queue.splice(low, 0, cell);\n };\n\n for (let x = x0; x < x1; x += side) {\n for (let y = y0; y < y1; y += side) {\n enqueue(cellAt(x + side / 2, y + side / 2, side / 2, rings));\n }\n }\n\n let best = cellAt((x0 + x1) / 2, (y0 + y1) / 2, 0, rings);\n\n while (queue.length > 0) {\n const cell = queue.pop()!;\n\n if (cell.distance > best.distance) {\n best = cell;\n }\n\n if (cell.potential - best.distance <= precision) {\n continue;\n }\n\n const half = cell.half / 2;\n enqueue(cellAt(cell.x - half, cell.y - half, half, rings));\n enqueue(cellAt(cell.x + half, cell.y - half, half, rings));\n enqueue(cellAt(cell.x - half, cell.y + half, half, rings));\n enqueue(cellAt(cell.x + half, cell.y + half, half, rings));\n }\n\n return [best.x, best.y];\n}\n"],"names":["segmentDistanceSquared","x","y","ax","ay","bx","by","dx","dy","t","px","py","signedDistance","rings","inside","nearest","ring","i","j","cellAt","half","distance","polylabel","precision","x0","y0","x1","y1","side","queue","enqueue","cell","low","high","middle","best"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("react/jsx-runtime"),h=require("./ChartPie.module.css.cjs"),B=require("../core/useChartMetrics.cjs"),E=require("../core/useSliceRing.cjs"),I=require("../core/ChartFrame.cjs"),g=require("../core/arcs.cjs"),_=require("../../../utils/formatters/formatarNumero.cjs"),k=require("../core/measureText.cjs"),z=require("../palette/seriesColor.cjs"),G=require("../core/cartesianLayout.cjs"),J=require("../core/spacing.cjs");function K({accent:m,defaultHiddenSlices:f,emptyMessage:b="Sem dados no período",formatPercent:a=s=>`${Math.round(s*100)}%`,formatValue:q=_.formatarNumero,height:C=260,hiddenSlices:x,legend:M="bottom",legendAlign:p,onHiddenSlicesChange:v,onHoverSlice:R,otherLabel:O="Outros",showDataLabels:y=!1,showLegendValues:S=!1,sliceRadius:j,slices:n,smallSliceThreshold:P=.02,title:D}){const{font:s,height:H,radius:L,ref:N,width:i}=B.useChartMetrics(),{fillHeight:$,value:u}=G.chartHeight(C,H),e=E.useSliceRing({accent:m,defaultHiddenSlices:f,hiddenSlices:x,onHiddenSlicesChange:v,onHoverSlice:R,otherLabel:O,slices:n,smallSliceThreshold:P}),o=J.ringDiameter(i,u)/2,A=j??L;return l.jsxs(I.ChartFrame,{centerOrigin:!0,containerRef:N,empty:e.slices.length===0||n.every(t=>!(t.value>0)),emptyMessage:b,fillHeight:$,height:u,legend:e.slices.map((t,r)=>({color:e.colors[r],hidden:e.isHidden(t.label),label:t.label,value:S?a(e.ratioOf(r)):void 0})),legendAlign:p,legendPosition:M,onToggleSeries:e.toggle,swatch:"dot",title:D,width:i,children:[e.slices.map((t,r)=>l.jsx("path",{"aria-label":`${t.label}: ${q(Math.max(t.value,0))} (${a(e.ratioOf(r))})`,className:h.default.slice,d:g.arcPath({...e.angles[r],cornerRadius:A,innerRadius:0,outerRadius:o}),fill:e.colors[r],onMouseEnter:()=>e.focus(r),onMouseLeave:()=>e.focus(null)},r)),y&&e.slices.map((t,r)=>{const c=a(e.ratioOf(r)),[T,w]=g.arcCentroid({...e.angles[r],innerRadius:0,outerRadius:o}),d=e.angles[r].endAngle-e.angles[r].startAngle,F=d>=Math.PI?o:2*(o/2)*Math.sin(d/2);return e.isHidden(t.label)||k.measureLabel(c,s)>F?null:l.jsx("text",{className:h.default.sliceLabel,dominantBaseline:"middle",fill:z.textColorOn(e.colors[r]),textAnchor:"middle",x:T,y:w,children:c},r)})]})}exports.ChartPie=K;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("react/jsx-runtime"),g=require("./ChartPie.module.css.cjs"),I=require("../core/useChartMetrics.cjs"),_=require("../core/useSliceRing.cjs"),k=require("../core/ChartFrame.cjs"),m=require("../core/arcs.cjs"),z=require("../../../utils/formatters/formatarNumero.cjs"),G=require("../core/measureText.cjs"),J=require("../palette/seriesColor.cjs"),K=require("../core/tooltips.cjs"),Q=require("../core/cartesianLayout.cjs"),U=require("../core/spacing.cjs");function V({accent:f,defaultHiddenSlices:p,emptyMessage:q="Sem dados no período",formatPercent:r=a=>`${Math.round(a*100)}%`,formatTooltipValue:b,formatValue:n=z.formatarNumero,height:x=260,hiddenSlices:C,legend:v="bottom",legendAlign:M,onHiddenSlicesChange:R,onHoverSlice:O,otherLabel:y="Outros",showDataLabels:S=!1,showLegendValues:j=!1,showTooltip:D=!0,sliceRadius:H,slices:i,smallSliceThreshold:L=.02,title:N}){const{font:a,height:P,radius:T,ref:$,width:u}=I.useChartMetrics(),{fillHeight:A,value:c}=Q.chartHeight(x,P),e=_.useSliceRing({accent:f,defaultHiddenSlices:p,hiddenSlices:C,onHiddenSlicesChange:R,onHoverSlice:O,otherLabel:y,slices:i,smallSliceThreshold:L}),s=U.ringDiameter(u,c)/2,w=H??T;return l.jsxs(k.ChartFrame,{centerOrigin:!0,containerRef:$,empty:e.slices.length===0||i.every(t=>!(t.value>0)),emptyMessage:q,fillHeight:A,height:c,legend:e.slices.map((t,o)=>({color:e.colors[o],hidden:e.isHidden(t.label),label:t.label,value:j?r(e.ratioOf(o)):void 0})),legendAlign:M,legendPosition:v,onToggleSeries:e.toggle,swatch:"dot",title:N,tooltip:D?K.sliceTooltip({colors:e.colors,formatPercent:r,formatValue:b??n,index:e.focused,slices:e.slices,total:e.total}):void 0,width:u,children:[e.slices.map((t,o)=>l.jsx("path",{"aria-label":`${t.label}: ${n(Math.max(t.value,0))} (${r(e.ratioOf(o))})`,className:g.default.slice,d:m.arcPath({...e.angles[o],cornerRadius:w,innerRadius:0,outerRadius:s}),fill:e.colors[o],onMouseEnter:()=>e.focus(o),onMouseLeave:()=>e.focus(null)},o)),S&&e.slices.map((t,o)=>{const d=r(e.ratioOf(o)),[F,B]=m.arcCentroid({...e.angles[o],innerRadius:0,outerRadius:s}),h=e.angles[o].endAngle-e.angles[o].startAngle,E=h>=Math.PI?s:2*(s/2)*Math.sin(h/2);return e.isHidden(t.label)||G.measureLabel(d,a)>E?null:l.jsx("text",{className:g.default.sliceLabel,dominantBaseline:"middle",fill:J.textColorOn(e.colors[o]),textAnchor:"middle",x:F,y:B,children:d},o)})]})}exports.ChartPie=V;
2
2
  //# sourceMappingURL=ChartPie.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChartPie.cjs","sources":["../../../../src/components/charts/ChartPie/ChartPie.tsx"],"sourcesContent":["import {\n ChartFrame,\n arcCentroid,\n arcPath,\n chartHeight,\n measureLabel,\n ringDiameter,\n useChartMetrics,\n useSliceRing,\n type ChartHeight,\n type ChartLegendAlign,\n type ChartLegendPosition,\n type ChartSlice,\n} from '../core';\nimport { textColorOn } from '../palette';\nimport { formatarNumero } from '../../../utils/formatters';\nimport styles from './ChartPie.module.css';\n\nexport type { ChartSlice as ChartPieSlice };\n\nexport interface ChartPieProps {\n accent?: string;\n defaultHiddenSlices?: readonly string[];\n emptyMessage?: string;\n formatPercent?: (ratio: number) => string;\n formatValue?: (value: number) => string;\n height?: ChartHeight;\n hiddenSlices?: readonly string[];\n legend?: ChartLegendPosition;\n legendAlign?: ChartLegendAlign;\n onHiddenSlicesChange?: (hidden: readonly string[]) => void;\n /** Fatia sob o ponteiro, ja agrupada, ou `null` ao sair dela. */\n onHoverSlice?: (slice: ChartSlice | null) => void;\n /** Rotulo da fatia que reune as pequenas. */\n otherLabel?: string;\n showDataLabels?: boolean;\n showLegendValues?: boolean;\n /** Raio dos cantos de cada fatia. Sem valor, o token de raio pequeno. */\n sliceRadius?: number;\n slices: readonly ChartSlice[];\n /** Fracao do total abaixo da qual a fatia entra no agrupamento. */\n smallSliceThreshold?: number;\n title: string;\n}\n\nexport function ChartPie({\n accent,\n defaultHiddenSlices,\n emptyMessage = 'Sem dados no período',\n formatPercent = (fracao) => `${Math.round(fracao * 100)}%`,\n formatValue = formatarNumero,\n height = 260,\n hiddenSlices,\n legend = 'bottom',\n legendAlign,\n onHiddenSlicesChange,\n onHoverSlice,\n otherLabel = 'Outros',\n showDataLabels = false,\n showLegendValues = false,\n sliceRadius,\n slices,\n smallSliceThreshold = 0.02,\n title,\n}: ChartPieProps) {\n const { font, height: alturaMedida, radius: raioDoCanto, ref, width } = useChartMetrics();\n const { fillHeight, value: alturaDoDesenho } = chartHeight(height, alturaMedida);\n\n const anel = useSliceRing({\n accent,\n defaultHiddenSlices,\n hiddenSlices,\n onHiddenSlicesChange,\n onHoverSlice,\n otherLabel,\n slices,\n smallSliceThreshold,\n });\n\n const raio = ringDiameter(width, alturaDoDesenho) / 2;\n const canto = sliceRadius ?? raioDoCanto;\n\n return (\n <ChartFrame\n centerOrigin\n containerRef={ref}\n empty={anel.slices.length === 0 || slices.every((fatia) => !(fatia.value > 0))}\n emptyMessage={emptyMessage}\n fillHeight={fillHeight}\n height={alturaDoDesenho}\n legend={anel.slices.map((fatia, indice) => ({\n color: anel.colors[indice],\n hidden: anel.isHidden(fatia.label),\n label: fatia.label,\n value: showLegendValues ? formatPercent(anel.ratioOf(indice)) : undefined,\n }))}\n legendAlign={legendAlign}\n legendPosition={legend}\n onToggleSeries={anel.toggle}\n swatch=\"dot\"\n title={title}\n width={width}\n >\n {anel.slices.map((fatia, indice) => (\n <path\n aria-label={`${fatia.label}: ${formatValue(Math.max(fatia.value, 0))} (${formatPercent(anel.ratioOf(indice))})`}\n className={styles.slice}\n d={arcPath({ ...anel.angles[indice], cornerRadius: canto, innerRadius: 0, outerRadius: raio })}\n fill={anel.colors[indice]}\n key={indice}\n onMouseEnter={() => anel.focus(indice)}\n onMouseLeave={() => anel.focus(null)}\n />\n ))}\n\n {showDataLabels &&\n anel.slices.map((fatia, indice) => {\n const rotulo = formatPercent(anel.ratioOf(indice));\n const [x, y] = arcCentroid({ ...anel.angles[indice], innerRadius: 0, outerRadius: raio });\n const angulo = anel.angles[indice].endAngle - anel.angles[indice].startAngle;\n\n // O rotulo so entra quando a fatia o comporta. Ate meia volta a\n // largura disponivel e a corda no centro do arco; dali em diante a\n // corda volta a encolher, e quem manda e o raio.\n const disponivel =\n angulo >= Math.PI ? raio : 2 * (raio / 2) * Math.sin(angulo / 2);\n\n if (anel.isHidden(fatia.label) || measureLabel(rotulo, font) > disponivel) {\n return null;\n }\n\n return (\n <text\n className={styles.sliceLabel}\n dominantBaseline=\"middle\"\n fill={textColorOn(anel.colors[indice])}\n key={indice}\n textAnchor=\"middle\"\n x={x}\n y={y}\n >\n {rotulo}\n </text>\n );\n })}\n </ChartFrame>\n );\n}\n"],"names":["ChartPie","accent","defaultHiddenSlices","emptyMessage","formatPercent","fracao","formatValue","formatarNumero","height","hiddenSlices","legend","legendAlign","onHiddenSlicesChange","onHoverSlice","otherLabel","showDataLabels","showLegendValues","sliceRadius","slices","smallSliceThreshold","title","font","alturaMedida","raioDoCanto","ref","width","useChartMetrics","fillHeight","alturaDoDesenho","chartHeight","anel","useSliceRing","raio","ringDiameter","canto","jsxs","ChartFrame","fatia","indice","jsx","styles","arcPath","rotulo","x","y","arcCentroid","angulo","disponivel","measureLabel","textColorOn"],"mappings":"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"}
1
+ {"version":3,"file":"ChartPie.cjs","sources":["../../../../src/components/charts/ChartPie/ChartPie.tsx"],"sourcesContent":["import {\n ChartFrame,\n arcCentroid,\n arcPath,\n chartHeight,\n measureLabel,\n ringDiameter,\n sliceTooltip,\n useChartMetrics,\n useSliceRing,\n type ChartHeight,\n type ChartLegendAlign,\n type ChartLegendPosition,\n type ChartSlice,\n} from '../core';\nimport { textColorOn } from '../palette';\nimport { formatarNumero } from '../../../utils/formatters';\nimport styles from './ChartPie.module.css';\n\nexport type { ChartSlice as ChartPieSlice };\n\nexport interface ChartPieProps {\n accent?: string;\n defaultHiddenSlices?: readonly string[];\n emptyMessage?: string;\n formatPercent?: (ratio: number) => string;\n /** Formato dos valores no balao. Sem ele, vale o `formatValue`: o eixo pode sair compacto e o balao, exato. */\n formatTooltipValue?: (value: number) => string;\n formatValue?: (value: number) => string;\n height?: ChartHeight;\n hiddenSlices?: readonly string[];\n legend?: ChartLegendPosition;\n legendAlign?: ChartLegendAlign;\n onHiddenSlicesChange?: (hidden: readonly string[]) => void;\n /** Fatia sob o ponteiro, ja agrupada, ou `null` ao sair dela. */\n onHoverSlice?: (slice: ChartSlice | null) => void;\n /** Rotulo da fatia que reune as pequenas. */\n otherLabel?: string;\n showDataLabels?: boolean;\n showLegendValues?: boolean;\n /** Balao com a fatia sob o ponteiro, o valor e a parte do total. Desligue para montar o proprio `ChartTooltip`. */\n showTooltip?: boolean;\n /** Raio dos cantos de cada fatia. Sem valor, o token de raio pequeno. */\n sliceRadius?: number;\n slices: readonly ChartSlice[];\n /** Fracao do total abaixo da qual a fatia entra no agrupamento. */\n smallSliceThreshold?: number;\n title: string;\n}\n\nexport function ChartPie({\n accent,\n defaultHiddenSlices,\n emptyMessage = 'Sem dados no período',\n formatPercent = (fracao) => `${Math.round(fracao * 100)}%`,\n formatTooltipValue,\n formatValue = formatarNumero,\n height = 260,\n hiddenSlices,\n legend = 'bottom',\n legendAlign,\n onHiddenSlicesChange,\n onHoverSlice,\n otherLabel = 'Outros',\n showDataLabels = false,\n showLegendValues = false,\n showTooltip = true,\n sliceRadius,\n slices,\n smallSliceThreshold = 0.02,\n title,\n}: ChartPieProps) {\n const { font, height: alturaMedida, radius: raioDoCanto, ref, width } = useChartMetrics();\n const { fillHeight, value: alturaDoDesenho } = chartHeight(height, alturaMedida);\n\n const anel = useSliceRing({\n accent,\n defaultHiddenSlices,\n hiddenSlices,\n onHiddenSlicesChange,\n onHoverSlice,\n otherLabel,\n slices,\n smallSliceThreshold,\n });\n\n const raio = ringDiameter(width, alturaDoDesenho) / 2;\n const canto = sliceRadius ?? raioDoCanto;\n\n return (\n <ChartFrame\n centerOrigin\n containerRef={ref}\n empty={anel.slices.length === 0 || slices.every((fatia) => !(fatia.value > 0))}\n emptyMessage={emptyMessage}\n fillHeight={fillHeight}\n height={alturaDoDesenho}\n legend={anel.slices.map((fatia, indice) => ({\n color: anel.colors[indice],\n hidden: anel.isHidden(fatia.label),\n label: fatia.label,\n value: showLegendValues ? formatPercent(anel.ratioOf(indice)) : undefined,\n }))}\n legendAlign={legendAlign}\n legendPosition={legend}\n onToggleSeries={anel.toggle}\n swatch=\"dot\"\n title={title}\n tooltip={\n showTooltip\n ? sliceTooltip({\n colors: anel.colors,\n formatPercent,\n formatValue: formatTooltipValue ?? formatValue,\n index: anel.focused,\n slices: anel.slices,\n total: anel.total,\n })\n : undefined\n }\n width={width}\n >\n {anel.slices.map((fatia, indice) => (\n <path\n aria-label={`${fatia.label}: ${formatValue(Math.max(fatia.value, 0))} (${formatPercent(anel.ratioOf(indice))})`}\n className={styles.slice}\n d={arcPath({ ...anel.angles[indice], cornerRadius: canto, innerRadius: 0, outerRadius: raio })}\n fill={anel.colors[indice]}\n key={indice}\n onMouseEnter={() => anel.focus(indice)}\n onMouseLeave={() => anel.focus(null)}\n />\n ))}\n\n {showDataLabels &&\n anel.slices.map((fatia, indice) => {\n const rotulo = formatPercent(anel.ratioOf(indice));\n const [x, y] = arcCentroid({ ...anel.angles[indice], innerRadius: 0, outerRadius: raio });\n const angulo = anel.angles[indice].endAngle - anel.angles[indice].startAngle;\n\n // O rotulo so entra quando a fatia o comporta. Ate meia volta a\n // largura disponivel e a corda no centro do arco; dali em diante a\n // corda volta a encolher, e quem manda e o raio.\n const disponivel =\n angulo >= Math.PI ? raio : 2 * (raio / 2) * Math.sin(angulo / 2);\n\n if (anel.isHidden(fatia.label) || measureLabel(rotulo, font) > disponivel) {\n return null;\n }\n\n return (\n <text\n className={styles.sliceLabel}\n dominantBaseline=\"middle\"\n fill={textColorOn(anel.colors[indice])}\n key={indice}\n textAnchor=\"middle\"\n x={x}\n y={y}\n >\n {rotulo}\n </text>\n );\n })}\n </ChartFrame>\n );\n}\n"],"names":["ChartPie","accent","defaultHiddenSlices","emptyMessage","formatPercent","fracao","formatTooltipValue","formatValue","formatarNumero","height","hiddenSlices","legend","legendAlign","onHiddenSlicesChange","onHoverSlice","otherLabel","showDataLabels","showLegendValues","showTooltip","sliceRadius","slices","smallSliceThreshold","title","font","alturaMedida","raioDoCanto","ref","width","useChartMetrics","fillHeight","alturaDoDesenho","chartHeight","anel","useSliceRing","raio","ringDiameter","canto","jsxs","ChartFrame","fatia","indice","sliceTooltip","jsx","styles","arcPath","rotulo","x","y","arcCentroid","angulo","disponivel","measureLabel","textColorOn"],"mappings":"giBAkDO,SAASA,EAAS,CACvB,OAAAC,EACA,oBAAAC,EACA,aAAAC,EAAe,uBACf,cAAAC,EAAiBC,GAAW,GAAG,KAAK,MAAMA,EAAS,GAAG,CAAC,IACvD,mBAAAC,EACA,YAAAC,EAAcC,EAAAA,eACd,OAAAC,EAAS,IACT,aAAAC,EACA,OAAAC,EAAS,SACT,YAAAC,EACA,qBAAAC,EACA,aAAAC,EACA,WAAAC,EAAa,SACb,eAAAC,EAAiB,GACjB,iBAAAC,EAAmB,GACnB,YAAAC,EAAc,GACd,YAAAC,EACA,OAAAC,EACA,oBAAAC,EAAsB,IACtB,MAAAC,CACF,EAAkB,CAChB,KAAM,CAAE,KAAAC,EAAM,OAAQC,EAAc,OAAQC,EAAa,IAAAC,EAAK,MAAAC,CAAA,EAAUC,kBAAA,EAClE,CAAE,WAAAC,EAAY,MAAOC,GAAoBC,EAAAA,YAAYtB,EAAQe,CAAY,EAEzEQ,EAAOC,EAAAA,aAAa,CACxB,OAAAhC,EACA,oBAAAC,EACA,aAAAQ,EACA,qBAAAG,EACA,aAAAC,EACA,WAAAC,EACA,OAAAK,EACA,oBAAAC,CAAA,CACD,EAEKa,EAAOC,EAAAA,aAAaR,EAAOG,CAAe,EAAI,EAC9CM,EAAQjB,GAAeM,EAE7B,OACEY,EAAAA,KAACC,EAAAA,WAAA,CACC,aAAY,GACZ,aAAcZ,EACd,MAAOM,EAAK,OAAO,SAAW,GAAKZ,EAAO,MAAOmB,GAAU,EAAEA,EAAM,MAAQ,EAAE,EAC7E,aAAApC,EACA,WAAA0B,EACA,OAAQC,EACR,OAAQE,EAAK,OAAO,IAAI,CAACO,EAAOC,KAAY,CAC1C,MAAOR,EAAK,OAAOQ,CAAM,EACzB,OAAQR,EAAK,SAASO,EAAM,KAAK,EACjC,MAAOA,EAAM,MACb,MAAOtB,EAAmBb,EAAc4B,EAAK,QAAQQ,CAAM,CAAC,EAAI,MAAA,EAChE,EACF,YAAA5B,EACA,eAAgBD,EAChB,eAAgBqB,EAAK,OACrB,OAAO,MACP,MAAAV,EACA,QACEJ,EACIuB,eAAa,CACX,OAAQT,EAAK,OACb,cAAA5B,EACA,YAAaE,GAAsBC,EACnC,MAAOyB,EAAK,QACZ,OAAQA,EAAK,OACb,MAAOA,EAAK,KAAA,CACb,EACD,OAEN,MAAAL,EAEC,SAAA,CAAAK,EAAK,OAAO,IAAI,CAACO,EAAOC,IACvBE,EAAAA,IAAC,OAAA,CACC,aAAY,GAAGH,EAAM,KAAK,KAAKhC,EAAY,KAAK,IAAIgC,EAAM,MAAO,CAAC,CAAC,CAAC,KAAKnC,EAAc4B,EAAK,QAAQQ,CAAM,CAAC,CAAC,IAC5G,UAAWG,EAAAA,QAAO,MAClB,EAAGC,EAAAA,QAAQ,CAAE,GAAGZ,EAAK,OAAOQ,CAAM,EAAG,aAAcJ,EAAO,YAAa,EAAG,YAAaF,EAAM,EAC7F,KAAMF,EAAK,OAAOQ,CAAM,EAExB,aAAc,IAAMR,EAAK,MAAMQ,CAAM,EACrC,aAAc,IAAMR,EAAK,MAAM,IAAI,CAAA,EAF9BQ,CAAA,CAIR,EAEAxB,GACCgB,EAAK,OAAO,IAAI,CAACO,EAAOC,IAAW,CACjC,MAAMK,EAASzC,EAAc4B,EAAK,QAAQQ,CAAM,CAAC,EAC3C,CAACM,EAAGC,CAAC,EAAIC,EAAAA,YAAY,CAAE,GAAGhB,EAAK,OAAOQ,CAAM,EAAG,YAAa,EAAG,YAAaN,EAAM,EAClFe,EAASjB,EAAK,OAAOQ,CAAM,EAAE,SAAWR,EAAK,OAAOQ,CAAM,EAAE,WAK5DU,EACJD,GAAU,KAAK,GAAKf,EAAO,GAAKA,EAAO,GAAK,KAAK,IAAIe,EAAS,CAAC,EAEjE,OAAIjB,EAAK,SAASO,EAAM,KAAK,GAAKY,EAAAA,aAAaN,EAAQtB,CAAI,EAAI2B,EACtD,KAIPR,EAAAA,IAAC,OAAA,CACC,UAAWC,EAAAA,QAAO,WAClB,iBAAiB,SACjB,KAAMS,EAAAA,YAAYpB,EAAK,OAAOQ,CAAM,CAAC,EAErC,WAAW,SACX,EAAAM,EACA,EAAAC,EAEC,SAAAF,CAAA,EALIL,CAAA,CAQX,CAAC,CAAA,CAAA,CAAA,CAGT"}
@@ -1,90 +1,101 @@
1
- import { jsxs as F, jsx as c } from "react/jsx-runtime";
2
- import d from "./ChartPie.module.css.js";
3
- import { useChartMetrics as I } from "../core/useChartMetrics.js";
4
- import { useSliceRing as T } from "../core/useSliceRing.js";
5
- import { ChartFrame as k } from "../core/ChartFrame.js";
6
- import { arcPath as q, arcCentroid as z } from "../core/arcs.js";
7
- import { formatarNumero as G } from "../../../utils/formatters/formatarNumero.js";
8
- import { measureLabel as J } from "../core/measureText.js";
9
- import { textColorOn as K } from "../palette/seriesColor.js";
10
- import { chartHeight as Q } from "../core/cartesianLayout.js";
11
- import { ringDiameter as U } from "../core/spacing.js";
12
- function lo({
1
+ import { jsxs as P, jsx as d } from "react/jsx-runtime";
2
+ import f from "./ChartPie.module.css.js";
3
+ import { useChartMetrics as k } from "../core/useChartMetrics.js";
4
+ import { useSliceRing as q } from "../core/useSliceRing.js";
5
+ import { ChartFrame as z } from "../core/ChartFrame.js";
6
+ import { arcPath as G, arcCentroid as J } from "../core/arcs.js";
7
+ import { formatarNumero as K } from "../../../utils/formatters/formatarNumero.js";
8
+ import { measureLabel as Q } from "../core/measureText.js";
9
+ import { textColorOn as U } from "../palette/seriesColor.js";
10
+ import { sliceTooltip as V } from "../core/tooltips.js";
11
+ import { chartHeight as W } from "../core/cartesianLayout.js";
12
+ import { ringDiameter as X } from "../core/spacing.js";
13
+ function mo({
13
14
  accent: h,
14
- defaultHiddenSlices: f,
15
+ defaultHiddenSlices: p,
15
16
  emptyMessage: g = "Sem dados no período",
16
- formatPercent: a = (l) => `${Math.round(l * 100)}%`,
17
- formatValue: p = G,
18
- height: b = 260,
19
- hiddenSlices: v,
20
- legend: x = "bottom",
21
- legendAlign: M,
22
- onHiddenSlicesChange: R,
23
- onHoverSlice: C,
24
- otherLabel: O = "Outros",
25
- showDataLabels: y = !1,
26
- showLegendValues: D = !1,
27
- sliceRadius: H,
28
- slices: s,
29
- smallSliceThreshold: $ = 0.02,
30
- title: A
17
+ formatPercent: t = (s) => `${Math.round(s * 100)}%`,
18
+ formatTooltipValue: b,
19
+ formatValue: a = K,
20
+ height: v = 260,
21
+ hiddenSlices: x,
22
+ legend: M = "bottom",
23
+ legendAlign: R,
24
+ onHiddenSlicesChange: C,
25
+ onHoverSlice: O,
26
+ otherLabel: y = "Outros",
27
+ showDataLabels: D = !1,
28
+ showLegendValues: H = !1,
29
+ showTooltip: $ = !0,
30
+ sliceRadius: A,
31
+ slices: i,
32
+ smallSliceThreshold: L = 0.02,
33
+ title: N
31
34
  }) {
32
- const { font: l, height: L, radius: N, ref: S, width: n } = I(), { fillHeight: j, value: i } = Q(b, L), o = T({
35
+ const { font: s, height: S, radius: j, ref: w, width: n } = k(), { fillHeight: T, value: m } = W(v, S), o = q({
33
36
  accent: h,
34
- defaultHiddenSlices: f,
35
- hiddenSlices: v,
36
- onHiddenSlicesChange: R,
37
- onHoverSlice: C,
38
- otherLabel: O,
39
- slices: s,
40
- smallSliceThreshold: $
41
- }), t = U(n, i) / 2, w = H ?? N;
42
- return /* @__PURE__ */ F(
43
- k,
37
+ defaultHiddenSlices: p,
38
+ hiddenSlices: x,
39
+ onHiddenSlicesChange: C,
40
+ onHoverSlice: O,
41
+ otherLabel: y,
42
+ slices: i,
43
+ smallSliceThreshold: L
44
+ }), l = X(n, m) / 2, B = A ?? j;
45
+ return /* @__PURE__ */ P(
46
+ z,
44
47
  {
45
48
  centerOrigin: !0,
46
- containerRef: S,
47
- empty: o.slices.length === 0 || s.every((r) => !(r.value > 0)),
49
+ containerRef: w,
50
+ empty: o.slices.length === 0 || i.every((r) => !(r.value > 0)),
48
51
  emptyMessage: g,
49
- fillHeight: j,
50
- height: i,
52
+ fillHeight: T,
53
+ height: m,
51
54
  legend: o.slices.map((r, e) => ({
52
55
  color: o.colors[e],
53
56
  hidden: o.isHidden(r.label),
54
57
  label: r.label,
55
- value: D ? a(o.ratioOf(e)) : void 0
58
+ value: H ? t(o.ratioOf(e)) : void 0
56
59
  })),
57
- legendAlign: M,
58
- legendPosition: x,
60
+ legendAlign: R,
61
+ legendPosition: M,
59
62
  onToggleSeries: o.toggle,
60
63
  swatch: "dot",
61
- title: A,
64
+ title: N,
65
+ tooltip: $ ? V({
66
+ colors: o.colors,
67
+ formatPercent: t,
68
+ formatValue: b ?? a,
69
+ index: o.focused,
70
+ slices: o.slices,
71
+ total: o.total
72
+ }) : void 0,
62
73
  width: n,
63
74
  children: [
64
- o.slices.map((r, e) => /* @__PURE__ */ c(
75
+ o.slices.map((r, e) => /* @__PURE__ */ d(
65
76
  "path",
66
77
  {
67
- "aria-label": `${r.label}: ${p(Math.max(r.value, 0))} (${a(o.ratioOf(e))})`,
68
- className: d.slice,
69
- d: q({ ...o.angles[e], cornerRadius: w, innerRadius: 0, outerRadius: t }),
78
+ "aria-label": `${r.label}: ${a(Math.max(r.value, 0))} (${t(o.ratioOf(e))})`,
79
+ className: f.slice,
80
+ d: G({ ...o.angles[e], cornerRadius: B, innerRadius: 0, outerRadius: l }),
70
81
  fill: o.colors[e],
71
82
  onMouseEnter: () => o.focus(e),
72
83
  onMouseLeave: () => o.focus(null)
73
84
  },
74
85
  e
75
86
  )),
76
- y && o.slices.map((r, e) => {
77
- const m = a(o.ratioOf(e)), [P, B] = z({ ...o.angles[e], innerRadius: 0, outerRadius: t }), u = o.angles[e].endAngle - o.angles[e].startAngle, E = u >= Math.PI ? t : 2 * (t / 2) * Math.sin(u / 2);
78
- return o.isHidden(r.label) || J(m, l) > E ? null : /* @__PURE__ */ c(
87
+ D && o.slices.map((r, e) => {
88
+ const u = t(o.ratioOf(e)), [E, F] = J({ ...o.angles[e], innerRadius: 0, outerRadius: l }), c = o.angles[e].endAngle - o.angles[e].startAngle, I = c >= Math.PI ? l : 2 * (l / 2) * Math.sin(c / 2);
89
+ return o.isHidden(r.label) || Q(u, s) > I ? null : /* @__PURE__ */ d(
79
90
  "text",
80
91
  {
81
- className: d.sliceLabel,
92
+ className: f.sliceLabel,
82
93
  dominantBaseline: "middle",
83
- fill: K(o.colors[e]),
94
+ fill: U(o.colors[e]),
84
95
  textAnchor: "middle",
85
- x: P,
86
- y: B,
87
- children: m
96
+ x: E,
97
+ y: F,
98
+ children: u
88
99
  },
89
100
  e
90
101
  );
@@ -94,6 +105,6 @@ function lo({
94
105
  );
95
106
  }
96
107
  export {
97
- lo as ChartPie
108
+ mo as ChartPie
98
109
  };
99
110
  //# sourceMappingURL=ChartPie.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChartPie.js","sources":["../../../../src/components/charts/ChartPie/ChartPie.tsx"],"sourcesContent":["import {\n ChartFrame,\n arcCentroid,\n arcPath,\n chartHeight,\n measureLabel,\n ringDiameter,\n useChartMetrics,\n useSliceRing,\n type ChartHeight,\n type ChartLegendAlign,\n type ChartLegendPosition,\n type ChartSlice,\n} from '../core';\nimport { textColorOn } from '../palette';\nimport { formatarNumero } from '../../../utils/formatters';\nimport styles from './ChartPie.module.css';\n\nexport type { ChartSlice as ChartPieSlice };\n\nexport interface ChartPieProps {\n accent?: string;\n defaultHiddenSlices?: readonly string[];\n emptyMessage?: string;\n formatPercent?: (ratio: number) => string;\n formatValue?: (value: number) => string;\n height?: ChartHeight;\n hiddenSlices?: readonly string[];\n legend?: ChartLegendPosition;\n legendAlign?: ChartLegendAlign;\n onHiddenSlicesChange?: (hidden: readonly string[]) => void;\n /** Fatia sob o ponteiro, ja agrupada, ou `null` ao sair dela. */\n onHoverSlice?: (slice: ChartSlice | null) => void;\n /** Rotulo da fatia que reune as pequenas. */\n otherLabel?: string;\n showDataLabels?: boolean;\n showLegendValues?: boolean;\n /** Raio dos cantos de cada fatia. Sem valor, o token de raio pequeno. */\n sliceRadius?: number;\n slices: readonly ChartSlice[];\n /** Fracao do total abaixo da qual a fatia entra no agrupamento. */\n smallSliceThreshold?: number;\n title: string;\n}\n\nexport function ChartPie({\n accent,\n defaultHiddenSlices,\n emptyMessage = 'Sem dados no período',\n formatPercent = (fracao) => `${Math.round(fracao * 100)}%`,\n formatValue = formatarNumero,\n height = 260,\n hiddenSlices,\n legend = 'bottom',\n legendAlign,\n onHiddenSlicesChange,\n onHoverSlice,\n otherLabel = 'Outros',\n showDataLabels = false,\n showLegendValues = false,\n sliceRadius,\n slices,\n smallSliceThreshold = 0.02,\n title,\n}: ChartPieProps) {\n const { font, height: alturaMedida, radius: raioDoCanto, ref, width } = useChartMetrics();\n const { fillHeight, value: alturaDoDesenho } = chartHeight(height, alturaMedida);\n\n const anel = useSliceRing({\n accent,\n defaultHiddenSlices,\n hiddenSlices,\n onHiddenSlicesChange,\n onHoverSlice,\n otherLabel,\n slices,\n smallSliceThreshold,\n });\n\n const raio = ringDiameter(width, alturaDoDesenho) / 2;\n const canto = sliceRadius ?? raioDoCanto;\n\n return (\n <ChartFrame\n centerOrigin\n containerRef={ref}\n empty={anel.slices.length === 0 || slices.every((fatia) => !(fatia.value > 0))}\n emptyMessage={emptyMessage}\n fillHeight={fillHeight}\n height={alturaDoDesenho}\n legend={anel.slices.map((fatia, indice) => ({\n color: anel.colors[indice],\n hidden: anel.isHidden(fatia.label),\n label: fatia.label,\n value: showLegendValues ? formatPercent(anel.ratioOf(indice)) : undefined,\n }))}\n legendAlign={legendAlign}\n legendPosition={legend}\n onToggleSeries={anel.toggle}\n swatch=\"dot\"\n title={title}\n width={width}\n >\n {anel.slices.map((fatia, indice) => (\n <path\n aria-label={`${fatia.label}: ${formatValue(Math.max(fatia.value, 0))} (${formatPercent(anel.ratioOf(indice))})`}\n className={styles.slice}\n d={arcPath({ ...anel.angles[indice], cornerRadius: canto, innerRadius: 0, outerRadius: raio })}\n fill={anel.colors[indice]}\n key={indice}\n onMouseEnter={() => anel.focus(indice)}\n onMouseLeave={() => anel.focus(null)}\n />\n ))}\n\n {showDataLabels &&\n anel.slices.map((fatia, indice) => {\n const rotulo = formatPercent(anel.ratioOf(indice));\n const [x, y] = arcCentroid({ ...anel.angles[indice], innerRadius: 0, outerRadius: raio });\n const angulo = anel.angles[indice].endAngle - anel.angles[indice].startAngle;\n\n // O rotulo so entra quando a fatia o comporta. Ate meia volta a\n // largura disponivel e a corda no centro do arco; dali em diante a\n // corda volta a encolher, e quem manda e o raio.\n const disponivel =\n angulo >= Math.PI ? raio : 2 * (raio / 2) * Math.sin(angulo / 2);\n\n if (anel.isHidden(fatia.label) || measureLabel(rotulo, font) > disponivel) {\n return null;\n }\n\n return (\n <text\n className={styles.sliceLabel}\n dominantBaseline=\"middle\"\n fill={textColorOn(anel.colors[indice])}\n key={indice}\n textAnchor=\"middle\"\n x={x}\n y={y}\n >\n {rotulo}\n </text>\n );\n })}\n </ChartFrame>\n );\n}\n"],"names":["ChartPie","accent","defaultHiddenSlices","emptyMessage","formatPercent","fracao","formatValue","formatarNumero","height","hiddenSlices","legend","legendAlign","onHiddenSlicesChange","onHoverSlice","otherLabel","showDataLabels","showLegendValues","sliceRadius","slices","smallSliceThreshold","title","font","alturaMedida","raioDoCanto","ref","width","useChartMetrics","fillHeight","alturaDoDesenho","chartHeight","anel","useSliceRing","raio","ringDiameter","canto","jsxs","ChartFrame","fatia","indice","jsx","styles","arcPath","rotulo","x","y","arcCentroid","angulo","disponivel","measureLabel","textColorOn"],"mappings":"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"}
1
+ {"version":3,"file":"ChartPie.js","sources":["../../../../src/components/charts/ChartPie/ChartPie.tsx"],"sourcesContent":["import {\n ChartFrame,\n arcCentroid,\n arcPath,\n chartHeight,\n measureLabel,\n ringDiameter,\n sliceTooltip,\n useChartMetrics,\n useSliceRing,\n type ChartHeight,\n type ChartLegendAlign,\n type ChartLegendPosition,\n type ChartSlice,\n} from '../core';\nimport { textColorOn } from '../palette';\nimport { formatarNumero } from '../../../utils/formatters';\nimport styles from './ChartPie.module.css';\n\nexport type { ChartSlice as ChartPieSlice };\n\nexport interface ChartPieProps {\n accent?: string;\n defaultHiddenSlices?: readonly string[];\n emptyMessage?: string;\n formatPercent?: (ratio: number) => string;\n /** Formato dos valores no balao. Sem ele, vale o `formatValue`: o eixo pode sair compacto e o balao, exato. */\n formatTooltipValue?: (value: number) => string;\n formatValue?: (value: number) => string;\n height?: ChartHeight;\n hiddenSlices?: readonly string[];\n legend?: ChartLegendPosition;\n legendAlign?: ChartLegendAlign;\n onHiddenSlicesChange?: (hidden: readonly string[]) => void;\n /** Fatia sob o ponteiro, ja agrupada, ou `null` ao sair dela. */\n onHoverSlice?: (slice: ChartSlice | null) => void;\n /** Rotulo da fatia que reune as pequenas. */\n otherLabel?: string;\n showDataLabels?: boolean;\n showLegendValues?: boolean;\n /** Balao com a fatia sob o ponteiro, o valor e a parte do total. Desligue para montar o proprio `ChartTooltip`. */\n showTooltip?: boolean;\n /** Raio dos cantos de cada fatia. Sem valor, o token de raio pequeno. */\n sliceRadius?: number;\n slices: readonly ChartSlice[];\n /** Fracao do total abaixo da qual a fatia entra no agrupamento. */\n smallSliceThreshold?: number;\n title: string;\n}\n\nexport function ChartPie({\n accent,\n defaultHiddenSlices,\n emptyMessage = 'Sem dados no período',\n formatPercent = (fracao) => `${Math.round(fracao * 100)}%`,\n formatTooltipValue,\n formatValue = formatarNumero,\n height = 260,\n hiddenSlices,\n legend = 'bottom',\n legendAlign,\n onHiddenSlicesChange,\n onHoverSlice,\n otherLabel = 'Outros',\n showDataLabels = false,\n showLegendValues = false,\n showTooltip = true,\n sliceRadius,\n slices,\n smallSliceThreshold = 0.02,\n title,\n}: ChartPieProps) {\n const { font, height: alturaMedida, radius: raioDoCanto, ref, width } = useChartMetrics();\n const { fillHeight, value: alturaDoDesenho } = chartHeight(height, alturaMedida);\n\n const anel = useSliceRing({\n accent,\n defaultHiddenSlices,\n hiddenSlices,\n onHiddenSlicesChange,\n onHoverSlice,\n otherLabel,\n slices,\n smallSliceThreshold,\n });\n\n const raio = ringDiameter(width, alturaDoDesenho) / 2;\n const canto = sliceRadius ?? raioDoCanto;\n\n return (\n <ChartFrame\n centerOrigin\n containerRef={ref}\n empty={anel.slices.length === 0 || slices.every((fatia) => !(fatia.value > 0))}\n emptyMessage={emptyMessage}\n fillHeight={fillHeight}\n height={alturaDoDesenho}\n legend={anel.slices.map((fatia, indice) => ({\n color: anel.colors[indice],\n hidden: anel.isHidden(fatia.label),\n label: fatia.label,\n value: showLegendValues ? formatPercent(anel.ratioOf(indice)) : undefined,\n }))}\n legendAlign={legendAlign}\n legendPosition={legend}\n onToggleSeries={anel.toggle}\n swatch=\"dot\"\n title={title}\n tooltip={\n showTooltip\n ? sliceTooltip({\n colors: anel.colors,\n formatPercent,\n formatValue: formatTooltipValue ?? formatValue,\n index: anel.focused,\n slices: anel.slices,\n total: anel.total,\n })\n : undefined\n }\n width={width}\n >\n {anel.slices.map((fatia, indice) => (\n <path\n aria-label={`${fatia.label}: ${formatValue(Math.max(fatia.value, 0))} (${formatPercent(anel.ratioOf(indice))})`}\n className={styles.slice}\n d={arcPath({ ...anel.angles[indice], cornerRadius: canto, innerRadius: 0, outerRadius: raio })}\n fill={anel.colors[indice]}\n key={indice}\n onMouseEnter={() => anel.focus(indice)}\n onMouseLeave={() => anel.focus(null)}\n />\n ))}\n\n {showDataLabels &&\n anel.slices.map((fatia, indice) => {\n const rotulo = formatPercent(anel.ratioOf(indice));\n const [x, y] = arcCentroid({ ...anel.angles[indice], innerRadius: 0, outerRadius: raio });\n const angulo = anel.angles[indice].endAngle - anel.angles[indice].startAngle;\n\n // O rotulo so entra quando a fatia o comporta. Ate meia volta a\n // largura disponivel e a corda no centro do arco; dali em diante a\n // corda volta a encolher, e quem manda e o raio.\n const disponivel =\n angulo >= Math.PI ? raio : 2 * (raio / 2) * Math.sin(angulo / 2);\n\n if (anel.isHidden(fatia.label) || measureLabel(rotulo, font) > disponivel) {\n return null;\n }\n\n return (\n <text\n className={styles.sliceLabel}\n dominantBaseline=\"middle\"\n fill={textColorOn(anel.colors[indice])}\n key={indice}\n textAnchor=\"middle\"\n x={x}\n y={y}\n >\n {rotulo}\n </text>\n );\n })}\n </ChartFrame>\n );\n}\n"],"names":["ChartPie","accent","defaultHiddenSlices","emptyMessage","formatPercent","fracao","formatTooltipValue","formatValue","formatarNumero","height","hiddenSlices","legend","legendAlign","onHiddenSlicesChange","onHoverSlice","otherLabel","showDataLabels","showLegendValues","showTooltip","sliceRadius","slices","smallSliceThreshold","title","font","alturaMedida","raioDoCanto","ref","width","useChartMetrics","fillHeight","alturaDoDesenho","chartHeight","anel","useSliceRing","raio","ringDiameter","canto","jsxs","ChartFrame","fatia","indice","sliceTooltip","jsx","styles","arcPath","rotulo","x","y","arcCentroid","angulo","disponivel","measureLabel","textColorOn"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),oe=require("react"),s=require("./ChartRadial.module.css.cjs"),ne=require("../core/useChartMetrics.cjs"),se=require("../core/useSeriesToggle.cjs"),ie=require("../palette/seriesColor.cjs"),le=require("../core/useTweenedNumbers.cjs"),ce=require("../../../utils/formatters/formatarNumero.cjs"),O=require("../core/centerText.cjs"),de=require("../core/ChartFrame.cjs"),f=require("../core/arcs.cjs"),ue=require("../core/spacing.cjs"),he=require("../core/cartesianLayout.cjs"),P=6,H=8;function E(i){return i*Math.PI/180}function me({accent:i,centerLabel:I,defaultHiddenTracks:_,emptyMessage:w="Sem dados no período",endAngle:F=360,formatValue:u=ce.formatarNumero,height:z=260,hiddenTracks:L,legend:$="bottom",legendAlign:V,onHiddenTracksChange:B,showCenter:G=!0,startAngle:J=0,thickness:v=16,trackRadius:K,title:Q,tracks:r}){const{font:b,height:U,radius:W,ref:X,width:M}=ne.useChartMetrics(),{fillHeight:Y,value:C}=he.chartHeight(z,U),{isHidden:h,toggle:Z}=se.useSeriesToggle({defaultHiddenSeries:_,hiddenSeries:L,onHiddenSeriesChange:B}),R=oe.useMemo(()=>ie.resolveSeriesColors(r,{accent:i}),[i,r]),l=e=>Number.isFinite(e.value),k=r.reduce((e,t)=>l(t)?Math.max(e,t.value):e,0),q=r.map(e=>{const t=e.max??k;return h(e.label)||!l(e)||!(t>0)?0:Math.min(Math.max(e.value,0)/t,1)}),ee=le.useTweenedNumbers(q,{from:q.map(()=>0)}),n=E(J),S=Math.min(E(F)-n,f.VOLTA),m=ue.ringDiameter(M,C)/2,c=r.find(e=>!h(e.label)),d=G&&c?u(c.value):void 0,p=d===void 0?H:Math.max(H,Math.min(O.centerTextRadius(d,b),m/2)),N=Math.min(1,Math.max(m-p,0)/(Math.max(r.length,1)*(v+P))),g=Math.max(v*N,1),te=P*N,T=e=>m-e*(g+te),re=Math.max(T(Math.max(r.length-1,0))-g,p),j=K??W,o=c&&d!==void 0?O.fitCenterText(d,I??c.label,b,re*2):void 0;return a.jsxs(de.ChartFrame,{centerOrigin:!0,containerRef:X,empty:r.length===0,emptyMessage:w,fillHeight:Y,height:C,legend:r.map((e,t)=>({color:R[t],hidden:h(e.label),label:e.label,value:l(e)?u(e.value):void 0})),legendAlign:V,legendPosition:r.length>1?$:"none",onToggleSeries:Z,swatch:"dot",title:Q,width:M,children:[r.map((e,t)=>{const x=T(t),A=x-g,y=ee[t]??0,ae=n+S*y,D=l(e)?`${e.label}: ${u(e.value)}`:e.label;return a.jsxs("g",{children:[a.jsx("path",{"aria-label":D,className:s.default.track,d:f.arcPath({cornerRadius:j,endAngle:n+S,innerRadius:A,outerRadius:x,startAngle:n}),children:a.jsx("title",{children:D})}),y>0&&a.jsx("path",{className:s.default.fill,d:f.arcPath({cornerRadius:j,endAngle:ae,innerRadius:A,outerRadius:x,startAngle:n}),fill:R[t]})]},t)}),o&&a.jsxs("g",{className:s.default.center,children:[a.jsx("text",{className:s.default.centerValue,dy:o.size*.1,style:{fontFamily:o.family,fontSize:o.size},textAnchor:"middle",children:o.value}),a.jsx("text",{className:s.default.centerLabel,dy:o.lineHeight*.62,textAnchor:"middle",children:o.label})]})]})}exports.ChartRadial=me;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),I=require("react"),u=require("./ChartRadial.module.css.cjs"),me=require("../core/useChartMetrics.cjs"),he=require("../core/useSeriesToggle.cjs"),ge=require("../palette/seriesColor.cjs"),ve=require("../core/useTweenedNumbers.cjs"),_=require("../../../utils/formatters/formatarNumero.cjs"),w=require("../core/centerText.cjs"),fe=require("../core/ChartFrame.cjs"),M=require("../core/arcs.cjs"),xe=require("../core/spacing.cjs"),be=require("../core/cartesianLayout.cjs"),L=6,z=8;function $(c){return c*Math.PI/180}function Me({accent:c,centerLabel:B,defaultHiddenTracks:V,emptyMessage:G="Sem dados no período",endAngle:J=360,formatTooltipValue:K,formatValue:d=_.formatarNumero,height:Q=260,hiddenTracks:U,legend:W="bottom",legendAlign:X,onHiddenTracksChange:Y,showCenter:Z=!0,showTooltip:C=!0,startAngle:k=0,thickness:R=16,trackRadius:ee,title:te,tracks:o}){var O;const{font:S,height:oe,radius:ae,ref:ne,width:p}=me.useChartMetrics(),{fillHeight:re,value:q}=be.chartHeight(Q,oe),{isHidden:v,toggle:se}=he.useSeriesToggle({defaultHiddenSeries:V,hiddenSeries:U,onHiddenSeriesChange:Y}),f=I.useMemo(()=>ge.resolveSeriesColors(o,{accent:c}),[c,o]),l=e=>Number.isFinite(e.value),N=o.reduce((e,t)=>l(t)?Math.max(e,t.value):e,0),A=o.map(e=>{const t=e.max??N;return v(e.label)||!l(e)||!(t>0)?0:Math.min(Math.max(e.value,0)/t,1)}),le=ve.useTweenedNumbers(A,{from:A.map(()=>0)}),[r,j]=I.useState(null);function ie(){const e=r===null?void 0:o[r];if(!e||!l(e)||r===null)return[];const t=e.max??N,s=[{color:f[r],label:"Valor",values:[e.value]},{label:"Meta",values:[t]}];return t>0?[...s,{format:g=>_.formatarPercentual(g),label:"Atingido",values:[e.value/t]}]:s}const i=$(k),T=Math.min($(J)-i,M.VOLTA),x=xe.ringDiameter(p,q)/2,m=o.find(e=>!v(e.label)),h=Z&&m?d(m.value):void 0,y=h===void 0?z:Math.max(z,Math.min(w.centerTextRadius(h,S),x/2)),D=Math.min(1,Math.max(x-y,0)/(Math.max(o.length,1)*(R+L))),b=Math.max(R*D,1),ue=L*D,P=e=>x-e*(b+ue),ce=Math.max(P(Math.max(o.length-1,0))-b,y),E=ee??ae,n=m&&h!==void 0?w.fitCenterText(h,B??m.label,S,ce*2):void 0;return a.jsxs(fe.ChartFrame,{centerOrigin:!0,containerRef:ne,empty:o.length===0,emptyMessage:G,fillHeight:re,height:q,legend:o.map((e,t)=>({color:f[t],hidden:v(e.label),label:e.label,value:l(e)?d(e.value):void 0})),legendAlign:X,legendPosition:o.length>1?W:"none",onToggleSeries:se,swatch:"dot",title:te,tooltip:C?{columns:[{format:K??d}],computed:"none",rows:ie(),title:r===null||(O=o[r])==null?void 0:O.label}:void 0,width:p,children:[o.map((e,t)=>{const s=P(t),g=s-b,F=le[t]??0,de=i+T*F,H=l(e)?`${e.label}: ${d(e.value)}`:e.label;return a.jsxs("g",{onMouseEnter:()=>j(t),onMouseLeave:()=>j(null),children:[a.jsx("path",{"aria-label":H,className:u.default.track,d:M.arcPath({cornerRadius:E,endAngle:i+T,innerRadius:g,outerRadius:s,startAngle:i}),children:!C&&a.jsx("title",{children:H})}),F>0&&a.jsx("path",{className:u.default.fill,d:M.arcPath({cornerRadius:E,endAngle:de,innerRadius:g,outerRadius:s,startAngle:i}),fill:f[t]})]},t)}),n&&a.jsxs("g",{className:u.default.center,children:[a.jsx("text",{className:u.default.centerValue,dy:n.size*.1,style:{fontFamily:n.family,fontSize:n.size},textAnchor:"middle",children:n.value}),a.jsx("text",{className:u.default.centerLabel,dy:n.lineHeight*.62,textAnchor:"middle",children:n.label})]})]})}exports.ChartRadial=Me;
2
2
  //# sourceMappingURL=ChartRadial.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChartRadial.cjs","sources":["../../../../src/components/charts/ChartRadial/ChartRadial.tsx"],"sourcesContent":["import { useMemo } from 'react';\nimport {\n ChartFrame,\n VOLTA,\n arcPath,\n chartHeight,\n centerTextRadius,\n fitCenterText,\n ringDiameter,\n useChartMetrics,\n useSeriesToggle,\n useTweenedNumbers,\n type ChartHeight,\n type ChartLegendAlign,\n type ChartLegendPosition,\n} from '../core';\nimport { resolveSeriesColors, type SeriesAppearance } from '../palette';\nimport { formatarNumero } from '../../../utils/formatters';\nimport styles from './ChartRadial.module.css';\n\nexport interface ChartRadialTrack extends SeriesAppearance {\n label: string;\n /** Meta da medida. Sem ela, a meta e o maior valor entre os aneis. */\n max?: number;\n value: number;\n}\n\nexport interface ChartRadialProps {\n accent?: string;\n /** Texto sob o valor do centro. Sem ele, o rotulo do primeiro anel. */\n centerLabel?: string;\n defaultHiddenTracks?: readonly string[];\n emptyMessage?: string;\n /** Angulo final da volta, em graus a partir do topo. Meia-lua usa 180. */\n endAngle?: number;\n formatValue?: (value: number) => string;\n height?: ChartHeight;\n hiddenTracks?: readonly string[];\n legend?: ChartLegendPosition;\n legendAlign?: ChartLegendAlign;\n onHiddenTracksChange?: (hidden: readonly string[]) => void;\n /** Valor no centro. Ele reserva o proprio espaco, ate metade do raio: com muitos aneis, quem cede e a espessura deles. */\n showCenter?: boolean;\n startAngle?: number;\n /** Raio das pontas do arco. Sem valor, o token de raio pequeno. */\n trackRadius?: number;\n /** Espessura de cada anel, em pixels. */\n thickness?: number;\n title: string;\n tracks: readonly ChartRadialTrack[];\n}\n\n/** Folga entre dois aneis vizinhos. */\nconst ESPACO_ENTRE_ANEIS = 6;\n\n/** Raio minimo do vazio central, com ou sem texto nele. */\nconst PISO_DO_RAIO = 8;\n\nfunction emRadianos(graus: number) {\n return (graus * Math.PI) / 180;\n}\n\nexport function ChartRadial({\n accent,\n centerLabel,\n defaultHiddenTracks,\n emptyMessage = 'Sem dados no período',\n endAngle = 360,\n formatValue = formatarNumero,\n height = 260,\n hiddenTracks,\n legend = 'bottom',\n legendAlign,\n onHiddenTracksChange,\n showCenter = true,\n startAngle = 0,\n thickness = 16,\n trackRadius,\n title,\n tracks,\n}: ChartRadialProps) {\n const { font, height: alturaMedida, radius: raioDoCanto, ref, width } = useChartMetrics();\n const { fillHeight, value: alturaDoDesenho } = chartHeight(height, alturaMedida);\n const { isHidden, toggle } = useSeriesToggle({\n defaultHiddenSeries: defaultHiddenTracks,\n hiddenSeries: hiddenTracks,\n onHiddenSeriesChange: onHiddenTracksChange,\n });\n\n // A cor sai da lista inteira, e nao das visiveis: desligar um anel nao pode\n // repintar os demais.\n const cores = useMemo(() => resolveSeriesColors(tracks, { accent }), [accent, tracks]);\n\n // Valor invalido tem o destino do ausente: nao entra no maximo nem preenche o anel.\n const valido = (anel: ChartRadialTrack) => Number.isFinite(anel.value);\n const maiorValor = tracks.reduce((maior, anel) => (valido(anel) ? Math.max(maior, anel.value) : maior), 0);\n const fracoes = tracks.map((anel) => {\n const meta = anel.max ?? maiorValor;\n\n return isHidden(anel.label) || !valido(anel) || !(meta > 0) ? 0 : Math.min(Math.max(anel.value, 0) / meta, 1);\n });\n\n // As fracoes caminham ate o alvo, entao o arco cresce ao aparecer e recolhe\n // quando o anel e desligado.\n const animadas = useTweenedNumbers(fracoes, { from: fracoes.map(() => 0) });\n\n const comeco = emRadianos(startAngle);\n const volta = Math.min(emRadianos(endAngle) - comeco, VOLTA);\n\n const raioExterno = ringDiameter(width, alturaDoDesenho) / 2;\n const destaque = tracks.find((anel) => !isHidden(anel.label));\n const valorDoCentro = showCenter && destaque ? formatValue(destaque.value) : undefined;\n // O centro reserva o que o valor pede no menor degrau da escala, ate metade do raio; quem cede e a espessura dos aneis.\n const piso =\n valorDoCentro === undefined\n ? PISO_DO_RAIO\n : Math.max(PISO_DO_RAIO, Math.min(centerTextRadius(valorDoCentro, font), raioExterno / 2));\n // Com muitos aneis, espessura e folga cedem na mesma proporcao ate caber; so a espessura cedia, e os ultimos\n // aneis passavam do centro.\n const cabe = Math.min(1, Math.max(raioExterno - piso, 0) / (Math.max(tracks.length, 1) * (thickness + ESPACO_ENTRE_ANEIS)));\n const espessuraCabivel = Math.max(thickness * cabe, 1);\n const folga = ESPACO_ENTRE_ANEIS * cabe;\n const raioDe = (indice: number) => raioExterno - indice * (espessuraCabivel + folga);\n const raioInterno = Math.max(raioDe(Math.max(tracks.length - 1, 0)) - espessuraCabivel, piso);\n\n const canto = trackRadius ?? raioDoCanto;\n const centro =\n destaque && valorDoCentro !== undefined\n ? fitCenterText(valorDoCentro, centerLabel ?? destaque.label, font, raioInterno * 2)\n : undefined;\n\n return (\n <ChartFrame\n centerOrigin\n containerRef={ref}\n empty={tracks.length === 0}\n emptyMessage={emptyMessage}\n fillHeight={fillHeight}\n height={alturaDoDesenho}\n legend={tracks.map((anel, indice) => ({\n color: cores[indice],\n hidden: isHidden(anel.label),\n label: anel.label,\n value: valido(anel) ? formatValue(anel.value) : undefined,\n }))}\n legendAlign={legendAlign}\n legendPosition={tracks.length > 1 ? legend : 'none'}\n onToggleSeries={toggle}\n swatch=\"dot\"\n title={title}\n width={width}\n >\n {tracks.map((anel, indice) => {\n const externo = raioDe(indice);\n const interno = externo - espessuraCabivel;\n const fracao = animadas[indice] ?? 0;\n const preenchido = comeco + volta * fracao;\n const descricao = valido(anel) ? `${anel.label}: ${formatValue(anel.value)}` : anel.label;\n\n return (\n <g key={indice}>\n <path\n aria-label={descricao}\n className={styles.track}\n d={arcPath({\n cornerRadius: canto,\n endAngle: comeco + volta,\n innerRadius: interno,\n outerRadius: externo,\n startAngle: comeco,\n })}\n >\n <title>{descricao}</title>\n </path>\n {fracao > 0 && (\n <path\n className={styles.fill}\n d={arcPath({\n cornerRadius: canto,\n endAngle: preenchido,\n innerRadius: interno,\n outerRadius: externo,\n startAngle: comeco,\n })}\n fill={cores[indice]}\n />\n )}\n </g>\n );\n })}\n\n {centro && (\n <g className={styles.center}>\n <text\n className={styles.centerValue}\n dy={centro.size * 0.1}\n style={{ fontFamily: centro.family, fontSize: centro.size }}\n textAnchor=\"middle\"\n >\n {centro.value}\n </text>\n <text className={styles.centerLabel} dy={centro.lineHeight * 0.62} textAnchor=\"middle\">\n {centro.label}\n </text>\n </g>\n )}\n </ChartFrame>\n );\n}\n"],"names":["ESPACO_ENTRE_ANEIS","PISO_DO_RAIO","emRadianos","graus","ChartRadial","accent","centerLabel","defaultHiddenTracks","emptyMessage","endAngle","formatValue","formatarNumero","height","hiddenTracks","legend","legendAlign","onHiddenTracksChange","showCenter","startAngle","thickness","trackRadius","title","tracks","font","alturaMedida","raioDoCanto","ref","width","useChartMetrics","fillHeight","alturaDoDesenho","chartHeight","isHidden","toggle","useSeriesToggle","cores","useMemo","resolveSeriesColors","valido","anel","maiorValor","maior","fracoes","meta","animadas","useTweenedNumbers","comeco","volta","VOLTA","raioExterno","ringDiameter","destaque","valorDoCentro","piso","centerTextRadius","cabe","espessuraCabivel","folga","raioDe","indice","raioInterno","canto","centro","fitCenterText","jsxs","ChartFrame","externo","interno","fracao","preenchido","descricao","jsx","styles","arcPath"],"mappings":"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"}
1
+ {"version":3,"file":"ChartRadial.cjs","sources":["../../../../src/components/charts/ChartRadial/ChartRadial.tsx"],"sourcesContent":["import { useMemo, useState } from 'react';\nimport {\n ChartFrame,\n VOLTA,\n arcPath,\n chartHeight,\n centerTextRadius,\n fitCenterText,\n ringDiameter,\n useChartMetrics,\n useSeriesToggle,\n useTweenedNumbers,\n type ChartHeight,\n type ChartLegendAlign,\n type ChartLegendPosition,\n} from '../core';\nimport { resolveSeriesColors, type SeriesAppearance } from '../palette';\nimport { formatarNumero, formatarPercentual } from '../../../utils/formatters';\nimport styles from './ChartRadial.module.css';\n\nexport interface ChartRadialTrack extends SeriesAppearance {\n label: string;\n /** Meta da medida. Sem ela, a meta e o maior valor entre os aneis. */\n max?: number;\n value: number;\n}\n\nexport interface ChartRadialProps {\n accent?: string;\n /** Texto sob o valor do centro. Sem ele, o rotulo do primeiro anel. */\n centerLabel?: string;\n defaultHiddenTracks?: readonly string[];\n emptyMessage?: string;\n /** Angulo final da volta, em graus a partir do topo. Meia-lua usa 180. */\n endAngle?: number;\n /** Formato dos valores no balao. Sem ele, vale o `formatValue`. */\n formatTooltipValue?: (value: number) => string;\n formatValue?: (value: number) => string;\n height?: ChartHeight;\n hiddenTracks?: readonly string[];\n legend?: ChartLegendPosition;\n legendAlign?: ChartLegendAlign;\n onHiddenTracksChange?: (hidden: readonly string[]) => void;\n /** Valor no centro. Ele reserva o proprio espaco, ate metade do raio: com muitos aneis, quem cede e a espessura deles. */\n showCenter?: boolean;\n /** Balao com o detalhe do que esta sob o ponteiro. Desligue para nao mostrar nada alem do `<title>` nativo. */\n showTooltip?: boolean;\n startAngle?: number;\n /** Raio das pontas do arco. Sem valor, o token de raio pequeno. */\n trackRadius?: number;\n /** Espessura de cada anel, em pixels. */\n thickness?: number;\n title: string;\n tracks: readonly ChartRadialTrack[];\n}\n\n/** Folga entre dois aneis vizinhos. */\nconst ESPACO_ENTRE_ANEIS = 6;\n\n/** Raio minimo do vazio central, com ou sem texto nele. */\nconst PISO_DO_RAIO = 8;\n\nfunction emRadianos(graus: number) {\n return (graus * Math.PI) / 180;\n}\n\nexport function ChartRadial({\n accent,\n centerLabel,\n defaultHiddenTracks,\n emptyMessage = 'Sem dados no período',\n endAngle = 360,\n formatTooltipValue,\n formatValue = formatarNumero,\n height = 260,\n hiddenTracks,\n legend = 'bottom',\n legendAlign,\n onHiddenTracksChange,\n showCenter = true,\n showTooltip = true,\n startAngle = 0,\n thickness = 16,\n trackRadius,\n title,\n tracks,\n}: ChartRadialProps) {\n const { font, height: alturaMedida, radius: raioDoCanto, ref, width } = useChartMetrics();\n const { fillHeight, value: alturaDoDesenho } = chartHeight(height, alturaMedida);\n const { isHidden, toggle } = useSeriesToggle({\n defaultHiddenSeries: defaultHiddenTracks,\n hiddenSeries: hiddenTracks,\n onHiddenSeriesChange: onHiddenTracksChange,\n });\n\n // A cor sai da lista inteira, e nao das visiveis: desligar um anel nao pode\n // repintar os demais.\n const cores = useMemo(() => resolveSeriesColors(tracks, { accent }), [accent, tracks]);\n\n // Valor invalido tem o destino do ausente: nao entra no maximo nem preenche o anel.\n const valido = (anel: ChartRadialTrack) => Number.isFinite(anel.value);\n const maiorValor = tracks.reduce((maior, anel) => (valido(anel) ? Math.max(maior, anel.value) : maior), 0);\n const fracoes = tracks.map((anel) => {\n const meta = anel.max ?? maiorValor;\n\n return isHidden(anel.label) || !valido(anel) || !(meta > 0) ? 0 : Math.min(Math.max(anel.value, 0) / meta, 1);\n });\n\n // As fracoes caminham ate o alvo, entao o arco cresce ao aparecer e recolhe\n // quando o anel e desligado.\n const animadas = useTweenedNumbers(fracoes, { from: fracoes.map(() => 0) });\n\n const [emFoco, setEmFoco] = useState<number | null>(null);\n\n function linhasDoBalao() {\n const anel = emFoco === null ? undefined : tracks[emFoco];\n\n if (!anel || !valido(anel) || emFoco === null) {\n return [];\n }\n\n const meta = anel.max ?? maiorValor;\n const linhas = [{ color: cores[emFoco], label: 'Valor', values: [anel.value] }, { label: 'Meta', values: [meta] }];\n\n return meta > 0\n ? [...linhas, { format: (fracao: number) => formatarPercentual(fracao), label: 'Atingido', values: [anel.value / meta] }]\n : linhas;\n }\n\n const comeco = emRadianos(startAngle);\n const volta = Math.min(emRadianos(endAngle) - comeco, VOLTA);\n\n const raioExterno = ringDiameter(width, alturaDoDesenho) / 2;\n const destaque = tracks.find((anel) => !isHidden(anel.label));\n const valorDoCentro = showCenter && destaque ? formatValue(destaque.value) : undefined;\n // O centro reserva o que o valor pede no menor degrau da escala, ate metade do raio; quem cede e a espessura dos aneis.\n const piso =\n valorDoCentro === undefined\n ? PISO_DO_RAIO\n : Math.max(PISO_DO_RAIO, Math.min(centerTextRadius(valorDoCentro, font), raioExterno / 2));\n // Com muitos aneis, espessura e folga cedem na mesma proporcao ate caber; so a espessura cedia, e os ultimos\n // aneis passavam do centro.\n const cabe = Math.min(1, Math.max(raioExterno - piso, 0) / (Math.max(tracks.length, 1) * (thickness + ESPACO_ENTRE_ANEIS)));\n const espessuraCabivel = Math.max(thickness * cabe, 1);\n const folga = ESPACO_ENTRE_ANEIS * cabe;\n const raioDe = (indice: number) => raioExterno - indice * (espessuraCabivel + folga);\n const raioInterno = Math.max(raioDe(Math.max(tracks.length - 1, 0)) - espessuraCabivel, piso);\n\n const canto = trackRadius ?? raioDoCanto;\n const centro =\n destaque && valorDoCentro !== undefined\n ? fitCenterText(valorDoCentro, centerLabel ?? destaque.label, font, raioInterno * 2)\n : undefined;\n\n return (\n <ChartFrame\n centerOrigin\n containerRef={ref}\n empty={tracks.length === 0}\n emptyMessage={emptyMessage}\n fillHeight={fillHeight}\n height={alturaDoDesenho}\n legend={tracks.map((anel, indice) => ({\n color: cores[indice],\n hidden: isHidden(anel.label),\n label: anel.label,\n value: valido(anel) ? formatValue(anel.value) : undefined,\n }))}\n legendAlign={legendAlign}\n legendPosition={tracks.length > 1 ? legend : 'none'}\n onToggleSeries={toggle}\n swatch=\"dot\"\n title={title}\n tooltip={\n showTooltip\n ? {\n columns: [{ format: formatTooltipValue ?? formatValue }],\n computed: 'none',\n rows: linhasDoBalao(),\n title: emFoco === null ? undefined : tracks[emFoco]?.label,\n }\n : undefined\n }\n width={width}\n >\n {tracks.map((anel, indice) => {\n const externo = raioDe(indice);\n const interno = externo - espessuraCabivel;\n const fracao = animadas[indice] ?? 0;\n const preenchido = comeco + volta * fracao;\n const descricao = valido(anel) ? `${anel.label}: ${formatValue(anel.value)}` : anel.label;\n\n return (\n <g key={indice} onMouseEnter={() => setEmFoco(indice)} onMouseLeave={() => setEmFoco(null)}>\n <path\n aria-label={descricao}\n className={styles.track}\n d={arcPath({\n cornerRadius: canto,\n endAngle: comeco + volta,\n innerRadius: interno,\n outerRadius: externo,\n startAngle: comeco,\n })}\n >\n {!showTooltip && <title>{descricao}</title>}\n </path>\n {fracao > 0 && (\n <path\n className={styles.fill}\n d={arcPath({\n cornerRadius: canto,\n endAngle: preenchido,\n innerRadius: interno,\n outerRadius: externo,\n startAngle: comeco,\n })}\n fill={cores[indice]}\n />\n )}\n </g>\n );\n })}\n\n {centro && (\n <g className={styles.center}>\n <text\n className={styles.centerValue}\n dy={centro.size * 0.1}\n style={{ fontFamily: centro.family, fontSize: centro.size }}\n textAnchor=\"middle\"\n >\n {centro.value}\n </text>\n <text className={styles.centerLabel} dy={centro.lineHeight * 0.62} textAnchor=\"middle\">\n {centro.label}\n </text>\n </g>\n )}\n </ChartFrame>\n );\n}\n"],"names":["ESPACO_ENTRE_ANEIS","PISO_DO_RAIO","emRadianos","graus","ChartRadial","accent","centerLabel","defaultHiddenTracks","emptyMessage","endAngle","formatTooltipValue","formatValue","formatarNumero","height","hiddenTracks","legend","legendAlign","onHiddenTracksChange","showCenter","showTooltip","startAngle","thickness","trackRadius","title","tracks","font","alturaMedida","raioDoCanto","ref","width","useChartMetrics","fillHeight","alturaDoDesenho","chartHeight","isHidden","toggle","useSeriesToggle","cores","useMemo","resolveSeriesColors","valido","anel","maiorValor","maior","fracoes","meta","animadas","useTweenedNumbers","emFoco","setEmFoco","useState","linhasDoBalao","linhas","fracao","formatarPercentual","comeco","volta","VOLTA","raioExterno","ringDiameter","destaque","valorDoCentro","piso","centerTextRadius","cabe","espessuraCabivel","folga","raioDe","indice","raioInterno","canto","centro","fitCenterText","jsxs","ChartFrame","_a","externo","interno","preenchido","descricao","jsx","styles","arcPath"],"mappings":"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"}