@plenustech/design-system 0.2.1 → 0.2.2

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 (594) hide show
  1. package/dist/components/actions/Button/Button.cjs +2 -0
  2. package/dist/components/actions/Button/Button.cjs.map +1 -0
  3. package/dist/components/actions/Button/Button.js +47 -0
  4. package/dist/components/actions/Button/Button.js.map +1 -0
  5. package/dist/components/actions/Button/Button.module.css.cjs +2 -0
  6. package/dist/components/actions/Button/Button.module.css.cjs.map +1 -0
  7. package/dist/components/actions/Button/Button.module.css.js +24 -0
  8. package/dist/components/actions/Button/Button.module.css.js.map +1 -0
  9. package/dist/components/actions/ButtonIcon/ButtonIcon.cjs +2 -0
  10. package/dist/components/actions/ButtonIcon/ButtonIcon.cjs.map +1 -0
  11. package/dist/components/actions/ButtonIcon/ButtonIcon.js +21 -0
  12. package/dist/components/actions/ButtonIcon/ButtonIcon.js.map +1 -0
  13. package/dist/components/actions/ButtonIcon/ButtonIcon.module.css.cjs +2 -0
  14. package/dist/components/actions/ButtonIcon/ButtonIcon.module.css.cjs.map +1 -0
  15. package/dist/components/actions/ButtonIcon/ButtonIcon.module.css.js +14 -0
  16. package/dist/components/actions/ButtonIcon/ButtonIcon.module.css.js.map +1 -0
  17. package/dist/components/charts/ChartArea/ChartArea.cjs +2 -0
  18. package/dist/components/charts/ChartArea/ChartArea.cjs.map +1 -0
  19. package/dist/components/charts/ChartArea/ChartArea.js +205 -0
  20. package/dist/components/charts/ChartArea/ChartArea.js.map +1 -0
  21. package/dist/components/charts/ChartArea/ChartArea.module.css.cjs +2 -0
  22. package/dist/components/charts/ChartArea/ChartArea.module.css.cjs.map +1 -0
  23. package/dist/components/charts/ChartArea/ChartArea.module.css.js +18 -0
  24. package/dist/components/charts/ChartArea/ChartArea.module.css.js.map +1 -0
  25. package/dist/components/charts/ChartBar/ChartBar.cjs +2 -0
  26. package/dist/components/charts/ChartBar/ChartBar.cjs.map +1 -0
  27. package/dist/components/charts/ChartBar/ChartBar.js +216 -0
  28. package/dist/components/charts/ChartBar/ChartBar.js.map +1 -0
  29. package/dist/components/charts/ChartBar/ChartBar.module.css.cjs +2 -0
  30. package/dist/components/charts/ChartBar/ChartBar.module.css.cjs.map +1 -0
  31. package/dist/components/charts/ChartBar/ChartBar.module.css.js +14 -0
  32. package/dist/components/charts/ChartBar/ChartBar.module.css.js.map +1 -0
  33. package/dist/components/charts/ChartCombo/ChartCombo.cjs +2 -0
  34. package/dist/components/charts/ChartCombo/ChartCombo.cjs.map +1 -0
  35. package/dist/components/charts/ChartCombo/ChartCombo.js +248 -0
  36. package/dist/components/charts/ChartCombo/ChartCombo.js.map +1 -0
  37. package/dist/components/charts/ChartCombo/ChartCombo.module.css.cjs +2 -0
  38. package/dist/components/charts/ChartCombo/ChartCombo.module.css.cjs.map +1 -0
  39. package/dist/components/charts/ChartCombo/ChartCombo.module.css.js +20 -0
  40. package/dist/components/charts/ChartCombo/ChartCombo.module.css.js.map +1 -0
  41. package/dist/components/charts/ChartDonut/ChartDonut.cjs +2 -0
  42. package/dist/components/charts/ChartDonut/ChartDonut.cjs.map +1 -0
  43. package/dist/components/charts/ChartDonut/ChartDonut.js +107 -0
  44. package/dist/components/charts/ChartDonut/ChartDonut.js.map +1 -0
  45. package/dist/components/charts/ChartDonut/ChartDonut.module.css.cjs +2 -0
  46. package/dist/components/charts/ChartDonut/ChartDonut.module.css.cjs.map +1 -0
  47. package/dist/components/charts/ChartDonut/ChartDonut.module.css.js +14 -0
  48. package/dist/components/charts/ChartDonut/ChartDonut.module.css.js.map +1 -0
  49. package/dist/components/charts/ChartLine/ChartLine.cjs +2 -0
  50. package/dist/components/charts/ChartLine/ChartLine.cjs.map +1 -0
  51. package/dist/components/charts/ChartLine/ChartLine.js +166 -0
  52. package/dist/components/charts/ChartLine/ChartLine.js.map +1 -0
  53. package/dist/components/charts/ChartLine/ChartLine.module.css.cjs +2 -0
  54. package/dist/components/charts/ChartLine/ChartLine.module.css.cjs.map +1 -0
  55. package/dist/components/charts/ChartLine/ChartLine.module.css.js +18 -0
  56. package/dist/components/charts/ChartLine/ChartLine.module.css.js.map +1 -0
  57. package/dist/components/charts/ChartPie/ChartPie.cjs +2 -0
  58. package/dist/components/charts/ChartPie/ChartPie.cjs.map +1 -0
  59. package/dist/components/charts/ChartPie/ChartPie.js +99 -0
  60. package/dist/components/charts/ChartPie/ChartPie.js.map +1 -0
  61. package/dist/components/charts/ChartPie/ChartPie.module.css.cjs +2 -0
  62. package/dist/components/charts/ChartPie/ChartPie.module.css.cjs.map +1 -0
  63. package/dist/components/charts/ChartPie/ChartPie.module.css.js +10 -0
  64. package/dist/components/charts/ChartPie/ChartPie.module.css.js.map +1 -0
  65. package/dist/components/charts/ChartRadial/ChartRadial.cjs +2 -0
  66. package/dist/components/charts/ChartRadial/ChartRadial.cjs.map +1 -0
  67. package/dist/components/charts/ChartRadial/ChartRadial.js +121 -0
  68. package/dist/components/charts/ChartRadial/ChartRadial.js.map +1 -0
  69. package/dist/components/charts/ChartRadial/ChartRadial.module.css.cjs +2 -0
  70. package/dist/components/charts/ChartRadial/ChartRadial.module.css.cjs.map +1 -0
  71. package/dist/components/charts/ChartRadial/ChartRadial.module.css.js +16 -0
  72. package/dist/components/charts/ChartRadial/ChartRadial.module.css.js.map +1 -0
  73. package/dist/components/charts/ChartSankey/ChartSankey.cjs +2 -0
  74. package/dist/components/charts/ChartSankey/ChartSankey.cjs.map +1 -0
  75. package/dist/components/charts/ChartSankey/ChartSankey.js +209 -0
  76. package/dist/components/charts/ChartSankey/ChartSankey.js.map +1 -0
  77. package/dist/components/charts/ChartSankey/ChartSankey.module.css.cjs +2 -0
  78. package/dist/components/charts/ChartSankey/ChartSankey.module.css.cjs.map +1 -0
  79. package/dist/components/charts/ChartSankey/ChartSankey.module.css.js +22 -0
  80. package/dist/components/charts/ChartSankey/ChartSankey.module.css.js.map +1 -0
  81. package/dist/components/charts/ChartScatter/ChartScatter.cjs +2 -0
  82. package/dist/components/charts/ChartScatter/ChartScatter.cjs.map +1 -0
  83. package/dist/components/charts/ChartScatter/ChartScatter.js +137 -0
  84. package/dist/components/charts/ChartScatter/ChartScatter.js.map +1 -0
  85. package/dist/components/charts/ChartScatter/ChartScatter.module.css.cjs +2 -0
  86. package/dist/components/charts/ChartScatter/ChartScatter.module.css.cjs.map +1 -0
  87. package/dist/components/charts/ChartScatter/ChartScatter.module.css.js +14 -0
  88. package/dist/components/charts/ChartScatter/ChartScatter.module.css.js.map +1 -0
  89. package/dist/components/charts/ChartSunburst/ChartSunburst.cjs +2 -0
  90. package/dist/components/charts/ChartSunburst/ChartSunburst.cjs.map +1 -0
  91. package/dist/components/charts/ChartSunburst/ChartSunburst.js +144 -0
  92. package/dist/components/charts/ChartSunburst/ChartSunburst.js.map +1 -0
  93. package/dist/components/charts/ChartSunburst/ChartSunburst.module.css.cjs +2 -0
  94. package/dist/components/charts/ChartSunburst/ChartSunburst.module.css.cjs.map +1 -0
  95. package/dist/components/charts/ChartSunburst/ChartSunburst.module.css.js +16 -0
  96. package/dist/components/charts/ChartSunburst/ChartSunburst.module.css.js.map +1 -0
  97. package/dist/components/charts/ChartTooltip/ChartTooltip.cjs +2 -0
  98. package/dist/components/charts/ChartTooltip/ChartTooltip.cjs.map +1 -0
  99. package/dist/components/charts/ChartTooltip/ChartTooltip.js +113 -0
  100. package/dist/components/charts/ChartTooltip/ChartTooltip.js.map +1 -0
  101. package/dist/components/charts/ChartTooltip/ChartTooltip.module.css.cjs +2 -0
  102. package/dist/components/charts/ChartTooltip/ChartTooltip.module.css.cjs.map +1 -0
  103. package/dist/components/charts/ChartTooltip/ChartTooltip.module.css.js +32 -0
  104. package/dist/components/charts/ChartTooltip/ChartTooltip.module.css.js.map +1 -0
  105. package/dist/components/charts/ChartTreemap/ChartTreemap.cjs +2 -0
  106. package/dist/components/charts/ChartTreemap/ChartTreemap.cjs.map +1 -0
  107. package/dist/components/charts/ChartTreemap/ChartTreemap.js +122 -0
  108. package/dist/components/charts/ChartTreemap/ChartTreemap.js.map +1 -0
  109. package/dist/components/charts/ChartTreemap/ChartTreemap.module.css.cjs +2 -0
  110. package/dist/components/charts/ChartTreemap/ChartTreemap.module.css.cjs.map +1 -0
  111. package/dist/components/charts/ChartTreemap/ChartTreemap.module.css.js +14 -0
  112. package/dist/components/charts/ChartTreemap/ChartTreemap.module.css.js.map +1 -0
  113. package/dist/components/charts/ChartWaterfall/ChartWaterfall.cjs +2 -0
  114. package/dist/components/charts/ChartWaterfall/ChartWaterfall.cjs.map +1 -0
  115. package/dist/components/charts/ChartWaterfall/ChartWaterfall.js +168 -0
  116. package/dist/components/charts/ChartWaterfall/ChartWaterfall.js.map +1 -0
  117. package/dist/components/charts/ChartWaterfall/ChartWaterfall.module.css.cjs +2 -0
  118. package/dist/components/charts/ChartWaterfall/ChartWaterfall.module.css.cjs.map +1 -0
  119. package/dist/components/charts/ChartWaterfall/ChartWaterfall.module.css.js +12 -0
  120. package/dist/components/charts/ChartWaterfall/ChartWaterfall.module.css.js.map +1 -0
  121. package/dist/components/charts/core/Axis.cjs +2 -0
  122. package/dist/components/charts/core/Axis.cjs.map +1 -0
  123. package/dist/components/charts/core/Axis.js +40 -0
  124. package/dist/components/charts/core/Axis.js.map +1 -0
  125. package/dist/components/charts/core/BandCursor.cjs +2 -0
  126. package/dist/components/charts/core/BandCursor.cjs.map +1 -0
  127. package/dist/components/charts/core/BandCursor.js +19 -0
  128. package/dist/components/charts/core/BandCursor.js.map +1 -0
  129. package/dist/components/charts/core/CartesianFrame.cjs +2 -0
  130. package/dist/components/charts/core/CartesianFrame.cjs.map +1 -0
  131. package/dist/components/charts/core/CartesianFrame.js +120 -0
  132. package/dist/components/charts/core/CartesianFrame.js.map +1 -0
  133. package/dist/components/charts/core/Chart.module.css.cjs +2 -0
  134. package/dist/components/charts/core/Chart.module.css.cjs.map +1 -0
  135. package/dist/components/charts/core/Chart.module.css.js +68 -0
  136. package/dist/components/charts/core/Chart.module.css.js.map +1 -0
  137. package/dist/components/charts/core/ChartFrame.cjs +2 -0
  138. package/dist/components/charts/core/ChartFrame.cjs.map +1 -0
  139. package/dist/components/charts/core/ChartFrame.js +65 -0
  140. package/dist/components/charts/core/ChartFrame.js.map +1 -0
  141. package/dist/components/charts/core/ChartLegend.cjs +2 -0
  142. package/dist/components/charts/core/ChartLegend.cjs.map +1 -0
  143. package/dist/components/charts/core/ChartLegend.js +44 -0
  144. package/dist/components/charts/core/ChartLegend.js.map +1 -0
  145. package/dist/components/charts/core/Grid.cjs +2 -0
  146. package/dist/components/charts/core/Grid.cjs.map +1 -0
  147. package/dist/components/charts/core/Grid.js +20 -0
  148. package/dist/components/charts/core/Grid.js.map +1 -0
  149. package/dist/components/charts/core/arcs.cjs +2 -0
  150. package/dist/components/charts/core/arcs.cjs.map +1 -0
  151. package/dist/components/charts/core/arcs.js +26 -0
  152. package/dist/components/charts/core/arcs.js.map +1 -0
  153. package/dist/components/charts/core/cartesianLayout.cjs +2 -0
  154. package/dist/components/charts/core/cartesianLayout.cjs.map +1 -0
  155. package/dist/components/charts/core/cartesianLayout.js +59 -0
  156. package/dist/components/charts/core/cartesianLayout.js.map +1 -0
  157. package/dist/components/charts/core/centerText.cjs +2 -0
  158. package/dist/components/charts/core/centerText.cjs.map +1 -0
  159. package/dist/components/charts/core/centerText.js +31 -0
  160. package/dist/components/charts/core/centerText.js.map +1 -0
  161. package/dist/components/charts/core/measureText.cjs +2 -0
  162. package/dist/components/charts/core/measureText.cjs.map +1 -0
  163. package/dist/components/charts/core/measureText.js +55 -0
  164. package/dist/components/charts/core/measureText.js.map +1 -0
  165. package/dist/components/charts/core/shapes.cjs +2 -0
  166. package/dist/components/charts/core/shapes.cjs.map +1 -0
  167. package/dist/components/charts/core/shapes.js +31 -0
  168. package/dist/components/charts/core/shapes.js.map +1 -0
  169. package/dist/components/charts/core/slices.cjs +2 -0
  170. package/dist/components/charts/core/slices.cjs.map +1 -0
  171. package/dist/components/charts/core/slices.js +22 -0
  172. package/dist/components/charts/core/slices.js.map +1 -0
  173. package/dist/components/charts/core/spacing.cjs +2 -0
  174. package/dist/components/charts/core/spacing.cjs.map +1 -0
  175. package/dist/components/charts/core/spacing.js +26 -0
  176. package/dist/components/charts/core/spacing.js.map +1 -0
  177. package/dist/components/charts/core/useChartMetrics.cjs +2 -0
  178. package/dist/components/charts/core/useChartMetrics.cjs.map +1 -0
  179. package/dist/components/charts/core/useChartMetrics.js +39 -0
  180. package/dist/components/charts/core/useChartMetrics.js.map +1 -0
  181. package/dist/components/charts/core/useHoveredBand.cjs +2 -0
  182. package/dist/components/charts/core/useHoveredBand.cjs.map +1 -0
  183. package/dist/components/charts/core/useHoveredBand.js +14 -0
  184. package/dist/components/charts/core/useHoveredBand.js.map +1 -0
  185. package/dist/components/charts/core/useSeriesToggle.cjs +2 -0
  186. package/dist/components/charts/core/useSeriesToggle.cjs.map +1 -0
  187. package/dist/components/charts/core/useSeriesToggle.js +22 -0
  188. package/dist/components/charts/core/useSeriesToggle.js.map +1 -0
  189. package/dist/components/charts/core/useSliceRing.cjs +2 -0
  190. package/dist/components/charts/core/useSliceRing.cjs.map +1 -0
  191. package/dist/components/charts/core/useSliceRing.js +55 -0
  192. package/dist/components/charts/core/useSliceRing.js.map +1 -0
  193. package/dist/components/charts/core/useTweenedNumbers.cjs +2 -0
  194. package/dist/components/charts/core/useTweenedNumbers.cjs.map +1 -0
  195. package/dist/components/charts/core/useTweenedNumbers.js +31 -0
  196. package/dist/components/charts/core/useTweenedNumbers.js.map +1 -0
  197. package/dist/components/charts/palette/palette.cjs +2 -0
  198. package/dist/components/charts/palette/palette.cjs.map +1 -0
  199. package/dist/components/charts/palette/palette.js +26 -0
  200. package/dist/components/charts/palette/palette.js.map +1 -0
  201. package/dist/components/charts/palette/seriesColor.cjs +2 -0
  202. package/dist/components/charts/palette/seriesColor.cjs.map +1 -0
  203. package/dist/components/charts/palette/seriesColor.js +43 -0
  204. package/dist/components/charts/palette/seriesColor.js.map +1 -0
  205. package/dist/components/charts/scales/scales.cjs +2 -0
  206. package/dist/components/charts/scales/scales.cjs.map +1 -0
  207. package/dist/components/charts/scales/scales.js +74 -0
  208. package/dist/components/charts/scales/scales.js.map +1 -0
  209. package/dist/components/data-display/Accordion/Accordion.cjs +2 -0
  210. package/dist/components/data-display/Accordion/Accordion.cjs.map +1 -0
  211. package/dist/components/data-display/Accordion/Accordion.js +91 -0
  212. package/dist/components/data-display/Accordion/Accordion.js.map +1 -0
  213. package/dist/components/data-display/Accordion/Accordion.module.css.cjs +2 -0
  214. package/dist/components/data-display/Accordion/Accordion.module.css.cjs.map +1 -0
  215. package/dist/components/data-display/Accordion/Accordion.module.css.js +26 -0
  216. package/dist/components/data-display/Accordion/Accordion.module.css.js.map +1 -0
  217. package/dist/components/data-display/Avatar/Avatar.cjs +2 -0
  218. package/dist/components/data-display/Avatar/Avatar.cjs.map +1 -0
  219. package/dist/components/data-display/Avatar/Avatar.js +20 -0
  220. package/dist/components/data-display/Avatar/Avatar.js.map +1 -0
  221. package/dist/components/data-display/Avatar/Avatar.module.css.cjs +2 -0
  222. package/dist/components/data-display/Avatar/Avatar.module.css.cjs.map +1 -0
  223. package/dist/components/data-display/Avatar/Avatar.module.css.js +14 -0
  224. package/dist/components/data-display/Avatar/Avatar.module.css.js.map +1 -0
  225. package/dist/components/data-display/Badge/Badge.cjs +2 -0
  226. package/dist/components/data-display/Badge/Badge.cjs.map +1 -0
  227. package/dist/components/data-display/Badge/Badge.js +13 -0
  228. package/dist/components/data-display/Badge/Badge.js.map +1 -0
  229. package/dist/components/data-display/Badge/Badge.module.css.cjs +2 -0
  230. package/dist/components/data-display/Badge/Badge.module.css.cjs.map +1 -0
  231. package/dist/components/data-display/Badge/Badge.module.css.js +22 -0
  232. package/dist/components/data-display/Badge/Badge.module.css.js.map +1 -0
  233. package/dist/components/data-display/Card/Card.cjs +2 -0
  234. package/dist/components/data-display/Card/Card.cjs.map +1 -0
  235. package/dist/components/data-display/Card/Card.js +51 -0
  236. package/dist/components/data-display/Card/Card.js.map +1 -0
  237. package/dist/components/data-display/Card/Card.module.css.cjs +2 -0
  238. package/dist/components/data-display/Card/Card.module.css.cjs.map +1 -0
  239. package/dist/components/data-display/Card/Card.module.css.js +26 -0
  240. package/dist/components/data-display/Card/Card.module.css.js.map +1 -0
  241. package/dist/components/data-display/CodeBlock/CodeBlock.cjs +2 -0
  242. package/dist/components/data-display/CodeBlock/CodeBlock.cjs.map +1 -0
  243. package/dist/components/data-display/CodeBlock/CodeBlock.js +65 -0
  244. package/dist/components/data-display/CodeBlock/CodeBlock.js.map +1 -0
  245. package/dist/components/data-display/CodeBlock/CodeBlock.module.css.cjs +2 -0
  246. package/dist/components/data-display/CodeBlock/CodeBlock.module.css.cjs.map +1 -0
  247. package/dist/components/data-display/CodeBlock/CodeBlock.module.css.js +47 -0
  248. package/dist/components/data-display/CodeBlock/CodeBlock.module.css.js.map +1 -0
  249. package/dist/components/data-display/CodeBlock/syntax.cjs +24 -0
  250. package/dist/components/data-display/CodeBlock/syntax.cjs.map +1 -0
  251. package/dist/components/data-display/CodeBlock/syntax.js +124 -0
  252. package/dist/components/data-display/CodeBlock/syntax.js.map +1 -0
  253. package/dist/components/data-display/List/List.cjs +2 -0
  254. package/dist/components/data-display/List/List.cjs.map +1 -0
  255. package/dist/components/data-display/List/List.js +99 -0
  256. package/dist/components/data-display/List/List.js.map +1 -0
  257. package/dist/components/data-display/List/List.module.css.cjs +2 -0
  258. package/dist/components/data-display/List/List.module.css.cjs.map +1 -0
  259. package/dist/components/data-display/List/List.module.css.js +32 -0
  260. package/dist/components/data-display/List/List.module.css.js.map +1 -0
  261. package/dist/components/data-display/List/ListingOptions.cjs +2 -0
  262. package/dist/components/data-display/List/ListingOptions.cjs.map +1 -0
  263. package/dist/components/data-display/List/ListingOptions.js +115 -0
  264. package/dist/components/data-display/List/ListingOptions.js.map +1 -0
  265. package/dist/components/data-display/List/useListing.cjs +2 -0
  266. package/dist/components/data-display/List/useListing.cjs.map +1 -0
  267. package/dist/components/data-display/List/useListing.js +85 -0
  268. package/dist/components/data-display/List/useListing.js.map +1 -0
  269. package/dist/components/data-display/List/useVirtualWindow.cjs +2 -0
  270. package/dist/components/data-display/List/useVirtualWindow.cjs.map +1 -0
  271. package/dist/components/data-display/List/useVirtualWindow.js +58 -0
  272. package/dist/components/data-display/List/useVirtualWindow.js.map +1 -0
  273. package/dist/components/data-display/Table/Table.cjs +2 -0
  274. package/dist/components/data-display/Table/Table.cjs.map +1 -0
  275. package/dist/components/data-display/Table/Table.js +238 -0
  276. package/dist/components/data-display/Table/Table.js.map +1 -0
  277. package/dist/components/data-display/Table/Table.module.css.cjs +2 -0
  278. package/dist/components/data-display/Table/Table.module.css.cjs.map +1 -0
  279. package/dist/components/data-display/Table/Table.module.css.js +69 -0
  280. package/dist/components/data-display/Table/Table.module.css.js.map +1 -0
  281. package/dist/components/feedback/Alert/Alert.cjs +2 -0
  282. package/dist/components/feedback/Alert/Alert.cjs.map +1 -0
  283. package/dist/components/feedback/Alert/Alert.js +13 -0
  284. package/dist/components/feedback/Alert/Alert.js.map +1 -0
  285. package/dist/components/feedback/Alert/Alert.module.css.cjs +2 -0
  286. package/dist/components/feedback/Alert/Alert.module.css.cjs.map +1 -0
  287. package/dist/components/feedback/Alert/Alert.module.css.js +20 -0
  288. package/dist/components/feedback/Alert/Alert.module.css.js.map +1 -0
  289. package/dist/components/feedback/EmptyState/EmptyState.cjs +2 -0
  290. package/dist/components/feedback/EmptyState/EmptyState.cjs.map +1 -0
  291. package/dist/components/feedback/EmptyState/EmptyState.js +49 -0
  292. package/dist/components/feedback/EmptyState/EmptyState.js.map +1 -0
  293. package/dist/components/feedback/EmptyState/EmptyState.module.css.cjs +2 -0
  294. package/dist/components/feedback/EmptyState/EmptyState.module.css.cjs.map +1 -0
  295. package/dist/components/feedback/EmptyState/EmptyState.module.css.js +36 -0
  296. package/dist/components/feedback/EmptyState/EmptyState.module.css.js.map +1 -0
  297. package/dist/components/feedback/Progress/Progress.cjs +2 -0
  298. package/dist/components/feedback/Progress/Progress.cjs.map +1 -0
  299. package/dist/components/feedback/Progress/Progress.js +34 -0
  300. package/dist/components/feedback/Progress/Progress.js.map +1 -0
  301. package/dist/components/feedback/Progress/Progress.module.css.cjs +2 -0
  302. package/dist/components/feedback/Progress/Progress.module.css.cjs.map +1 -0
  303. package/dist/components/feedback/Progress/Progress.module.css.js +21 -0
  304. package/dist/components/feedback/Progress/Progress.module.css.js.map +1 -0
  305. package/dist/components/feedback/Spinner/Spinner.cjs +2 -0
  306. package/dist/components/feedback/Spinner/Spinner.cjs.map +1 -0
  307. package/dist/components/feedback/Spinner/Spinner.js +10 -0
  308. package/dist/components/feedback/Spinner/Spinner.js.map +1 -0
  309. package/dist/components/feedback/Spinner/Spinner.module.css.cjs +2 -0
  310. package/dist/components/feedback/Spinner/Spinner.module.css.cjs.map +1 -0
  311. package/dist/components/feedback/Spinner/Spinner.module.css.js +15 -0
  312. package/dist/components/feedback/Spinner/Spinner.module.css.js.map +1 -0
  313. package/dist/components/forms/Checkbox/Checkbox.cjs +2 -0
  314. package/dist/components/forms/Checkbox/Checkbox.cjs.map +1 -0
  315. package/dist/components/forms/Checkbox/Checkbox.js +45 -0
  316. package/dist/components/forms/Checkbox/Checkbox.js.map +1 -0
  317. package/dist/components/forms/Checkbox/Checkbox.module.css.cjs +2 -0
  318. package/dist/components/forms/Checkbox/Checkbox.module.css.cjs.map +1 -0
  319. package/dist/components/forms/Checkbox/Checkbox.module.css.js +20 -0
  320. package/dist/components/forms/Checkbox/Checkbox.module.css.js.map +1 -0
  321. package/dist/components/forms/ComboBox/ComboBox.cjs +3 -0
  322. package/dist/components/forms/ComboBox/ComboBox.cjs.map +1 -0
  323. package/dist/components/forms/ComboBox/ComboBox.js +223 -0
  324. package/dist/components/forms/ComboBox/ComboBox.js.map +1 -0
  325. package/dist/components/forms/ComboBox/ComboBox.module.css.cjs +2 -0
  326. package/dist/components/forms/ComboBox/ComboBox.module.css.cjs.map +1 -0
  327. package/dist/components/forms/ComboBox/ComboBox.module.css.js +28 -0
  328. package/dist/components/forms/ComboBox/ComboBox.module.css.js.map +1 -0
  329. package/dist/components/forms/DatePicker/Calendar.cjs +2 -0
  330. package/dist/components/forms/DatePicker/Calendar.cjs.map +1 -0
  331. package/dist/components/forms/DatePicker/Calendar.js +86 -0
  332. package/dist/components/forms/DatePicker/Calendar.js.map +1 -0
  333. package/dist/components/forms/DatePicker/DatePicker.cjs +2 -0
  334. package/dist/components/forms/DatePicker/DatePicker.cjs.map +1 -0
  335. package/dist/components/forms/DatePicker/DatePicker.js +217 -0
  336. package/dist/components/forms/DatePicker/DatePicker.js.map +1 -0
  337. package/dist/components/forms/DatePicker/DatePicker.module.css.cjs +2 -0
  338. package/dist/components/forms/DatePicker/DatePicker.module.css.cjs.map +1 -0
  339. package/dist/components/forms/DatePicker/DatePicker.module.css.js +44 -0
  340. package/dist/components/forms/DatePicker/DatePicker.module.css.js.map +1 -0
  341. package/dist/components/forms/DatePicker/iso.cjs +2 -0
  342. package/dist/components/forms/DatePicker/iso.cjs.map +1 -0
  343. package/dist/components/forms/DatePicker/iso.js +18 -0
  344. package/dist/components/forms/DatePicker/iso.js.map +1 -0
  345. package/dist/components/forms/DateTimePicker/DateTimePicker.cjs +2 -0
  346. package/dist/components/forms/DateTimePicker/DateTimePicker.cjs.map +1 -0
  347. package/dist/components/forms/DateTimePicker/DateTimePicker.js +241 -0
  348. package/dist/components/forms/DateTimePicker/DateTimePicker.js.map +1 -0
  349. package/dist/components/forms/DateTimePicker/DateTimePicker.module.css.cjs +2 -0
  350. package/dist/components/forms/DateTimePicker/DateTimePicker.module.css.cjs.map +1 -0
  351. package/dist/components/forms/DateTimePicker/DateTimePicker.module.css.js +26 -0
  352. package/dist/components/forms/DateTimePicker/DateTimePicker.module.css.js.map +1 -0
  353. package/dist/components/forms/Field/Field.cjs +2 -0
  354. package/dist/components/forms/Field/Field.cjs.map +1 -0
  355. package/dist/components/forms/Field/Field.js +34 -0
  356. package/dist/components/forms/Field/Field.js.map +1 -0
  357. package/dist/components/forms/Field/Field.module.css.cjs +2 -0
  358. package/dist/components/forms/Field/Field.module.css.cjs.map +1 -0
  359. package/dist/components/forms/Field/Field.module.css.js +16 -0
  360. package/dist/components/forms/Field/Field.module.css.js.map +1 -0
  361. package/dist/components/forms/Field/FormValue.cjs +2 -0
  362. package/dist/components/forms/Field/FormValue.cjs.map +1 -0
  363. package/dist/components/forms/Field/FormValue.js +24 -0
  364. package/dist/components/forms/Field/FormValue.js.map +1 -0
  365. package/dist/components/forms/InputCurrency/InputCurrency.cjs +2 -0
  366. package/dist/components/forms/InputCurrency/InputCurrency.cjs.map +1 -0
  367. package/dist/components/forms/InputCurrency/InputCurrency.js +41 -0
  368. package/dist/components/forms/InputCurrency/InputCurrency.js.map +1 -0
  369. package/dist/components/forms/InputNumber/InputNumber.cjs +2 -0
  370. package/dist/components/forms/InputNumber/InputNumber.cjs.map +1 -0
  371. package/dist/components/forms/InputNumber/InputNumber.js +39 -0
  372. package/dist/components/forms/InputNumber/InputNumber.js.map +1 -0
  373. package/dist/components/forms/InputPassword/InputPassword.cjs +2 -0
  374. package/dist/components/forms/InputPassword/InputPassword.cjs.map +1 -0
  375. package/dist/components/forms/InputPassword/InputPassword.js +110 -0
  376. package/dist/components/forms/InputPassword/InputPassword.js.map +1 -0
  377. package/dist/components/forms/InputPassword/InputPassword.module.css.cjs +2 -0
  378. package/dist/components/forms/InputPassword/InputPassword.module.css.cjs.map +1 -0
  379. package/dist/components/forms/InputPassword/InputPassword.module.css.js +18 -0
  380. package/dist/components/forms/InputPassword/InputPassword.module.css.js.map +1 -0
  381. package/dist/components/forms/InputText/InputText.cjs +2 -0
  382. package/dist/components/forms/InputText/InputText.cjs.map +1 -0
  383. package/dist/components/forms/InputText/InputText.js +62 -0
  384. package/dist/components/forms/InputText/InputText.js.map +1 -0
  385. package/dist/components/forms/InputText/InputText.module.css.cjs +2 -0
  386. package/dist/components/forms/InputText/InputText.module.css.cjs.map +1 -0
  387. package/dist/components/forms/InputText/InputText.module.css.js +14 -0
  388. package/dist/components/forms/InputText/InputText.module.css.js.map +1 -0
  389. package/dist/components/forms/Label/Label.cjs +2 -0
  390. package/dist/components/forms/Label/Label.cjs.map +1 -0
  391. package/dist/components/forms/Label/Label.js +13 -0
  392. package/dist/components/forms/Label/Label.js.map +1 -0
  393. package/dist/components/forms/Label/Label.module.css.cjs +2 -0
  394. package/dist/components/forms/Label/Label.module.css.cjs.map +1 -0
  395. package/dist/components/forms/Label/Label.module.css.js +10 -0
  396. package/dist/components/forms/Label/Label.module.css.js.map +1 -0
  397. package/dist/components/forms/RadioGroup/Radio.cjs +2 -0
  398. package/dist/components/forms/RadioGroup/Radio.cjs.map +1 -0
  399. package/dist/components/forms/RadioGroup/Radio.js +43 -0
  400. package/dist/components/forms/RadioGroup/Radio.js.map +1 -0
  401. package/dist/components/forms/RadioGroup/RadioGroup.cjs +2 -0
  402. package/dist/components/forms/RadioGroup/RadioGroup.cjs.map +1 -0
  403. package/dist/components/forms/RadioGroup/RadioGroup.js +58 -0
  404. package/dist/components/forms/RadioGroup/RadioGroup.js.map +1 -0
  405. package/dist/components/forms/RadioGroup/RadioGroup.module.css.cjs +2 -0
  406. package/dist/components/forms/RadioGroup/RadioGroup.module.css.cjs.map +1 -0
  407. package/dist/components/forms/RadioGroup/RadioGroup.module.css.js +26 -0
  408. package/dist/components/forms/RadioGroup/RadioGroup.module.css.js.map +1 -0
  409. package/dist/components/forms/Select/Select.cjs +2 -0
  410. package/dist/components/forms/Select/Select.cjs.map +1 -0
  411. package/dist/components/forms/Select/Select.js +191 -0
  412. package/dist/components/forms/Select/Select.js.map +1 -0
  413. package/dist/components/forms/Select/Select.module.css.cjs +2 -0
  414. package/dist/components/forms/Select/Select.module.css.cjs.map +1 -0
  415. package/dist/components/forms/Select/Select.module.css.js +22 -0
  416. package/dist/components/forms/Select/Select.module.css.js.map +1 -0
  417. package/dist/components/forms/Switch/Switch.cjs +2 -0
  418. package/dist/components/forms/Switch/Switch.cjs.map +1 -0
  419. package/dist/components/forms/Switch/Switch.js +39 -0
  420. package/dist/components/forms/Switch/Switch.js.map +1 -0
  421. package/dist/components/forms/Switch/Switch.module.css.cjs +2 -0
  422. package/dist/components/forms/Switch/Switch.module.css.cjs.map +1 -0
  423. package/dist/components/forms/Switch/Switch.module.css.js +20 -0
  424. package/dist/components/forms/Switch/Switch.module.css.js.map +1 -0
  425. package/dist/components/forms/Textarea/Textarea.cjs +2 -0
  426. package/dist/components/forms/Textarea/Textarea.cjs.map +1 -0
  427. package/dist/components/forms/Textarea/Textarea.js +64 -0
  428. package/dist/components/forms/Textarea/Textarea.js.map +1 -0
  429. package/dist/components/forms/Textarea/Textarea.module.css.cjs +2 -0
  430. package/dist/components/forms/Textarea/Textarea.module.css.cjs.map +1 -0
  431. package/dist/components/forms/Textarea/Textarea.module.css.js +14 -0
  432. package/dist/components/forms/Textarea/Textarea.module.css.js.map +1 -0
  433. package/dist/components/forms/TimePicker/TimePicker.cjs +2 -0
  434. package/dist/components/forms/TimePicker/TimePicker.cjs.map +1 -0
  435. package/dist/components/forms/TimePicker/TimePicker.js +176 -0
  436. package/dist/components/forms/TimePicker/TimePicker.js.map +1 -0
  437. package/dist/components/forms/TimePicker/TimePicker.module.css.cjs +2 -0
  438. package/dist/components/forms/TimePicker/TimePicker.module.css.cjs.map +1 -0
  439. package/dist/components/forms/TimePicker/TimePicker.module.css.js +26 -0
  440. package/dist/components/forms/TimePicker/TimePicker.module.css.js.map +1 -0
  441. package/dist/components/forms/TimePicker/TimeSlots.cjs +2 -0
  442. package/dist/components/forms/TimePicker/TimeSlots.cjs.map +1 -0
  443. package/dist/components/forms/TimePicker/TimeSlots.js +81 -0
  444. package/dist/components/forms/TimePicker/TimeSlots.js.map +1 -0
  445. package/dist/components/icons/Icon.cjs +2 -0
  446. package/dist/components/icons/Icon.cjs.map +1 -0
  447. package/dist/components/icons/Icon.js +24 -0
  448. package/dist/components/icons/Icon.js.map +1 -0
  449. package/dist/components/icons/icons.cjs +2 -0
  450. package/dist/components/icons/icons.cjs.map +1 -0
  451. package/dist/components/icons/icons.js +116 -0
  452. package/dist/components/icons/icons.js.map +1 -0
  453. package/dist/components/navigation/Breadcrumb/Breadcrumb.cjs +2 -0
  454. package/dist/components/navigation/Breadcrumb/Breadcrumb.cjs.map +1 -0
  455. package/dist/components/navigation/Breadcrumb/Breadcrumb.js +22 -0
  456. package/dist/components/navigation/Breadcrumb/Breadcrumb.js.map +1 -0
  457. package/dist/components/navigation/Breadcrumb/Breadcrumb.module.css.cjs +2 -0
  458. package/dist/components/navigation/Breadcrumb/Breadcrumb.module.css.cjs.map +1 -0
  459. package/dist/components/navigation/Breadcrumb/Breadcrumb.module.css.js +16 -0
  460. package/dist/components/navigation/Breadcrumb/Breadcrumb.module.css.js.map +1 -0
  461. package/dist/components/navigation/Pagination/Pagination.cjs +2 -0
  462. package/dist/components/navigation/Pagination/Pagination.cjs.map +1 -0
  463. package/dist/components/navigation/Pagination/Pagination.js +70 -0
  464. package/dist/components/navigation/Pagination/Pagination.js.map +1 -0
  465. package/dist/components/navigation/Pagination/Pagination.module.css.cjs +2 -0
  466. package/dist/components/navigation/Pagination/Pagination.module.css.cjs.map +1 -0
  467. package/dist/components/navigation/Pagination/Pagination.module.css.js +18 -0
  468. package/dist/components/navigation/Pagination/Pagination.module.css.js.map +1 -0
  469. package/dist/components/navigation/Tabs/Tabs.cjs +2 -0
  470. package/dist/components/navigation/Tabs/Tabs.cjs.map +1 -0
  471. package/dist/components/navigation/Tabs/Tabs.js +96 -0
  472. package/dist/components/navigation/Tabs/Tabs.js.map +1 -0
  473. package/dist/components/navigation/Tabs/Tabs.module.css.cjs +2 -0
  474. package/dist/components/navigation/Tabs/Tabs.module.css.cjs.map +1 -0
  475. package/dist/components/navigation/Tabs/Tabs.module.css.js +20 -0
  476. package/dist/components/navigation/Tabs/Tabs.module.css.js.map +1 -0
  477. package/dist/components/overlays/Dialog/Dialog.cjs +2 -0
  478. package/dist/components/overlays/Dialog/Dialog.cjs.map +1 -0
  479. package/dist/components/overlays/Dialog/Dialog.js +64 -0
  480. package/dist/components/overlays/Dialog/Dialog.js.map +1 -0
  481. package/dist/components/overlays/Dialog/Dialog.module.css.cjs +2 -0
  482. package/dist/components/overlays/Dialog/Dialog.module.css.cjs.map +1 -0
  483. package/dist/components/overlays/Dialog/Dialog.module.css.js +36 -0
  484. package/dist/components/overlays/Dialog/Dialog.module.css.js.map +1 -0
  485. package/dist/components/overlays/Menu/Menu.cjs +2 -0
  486. package/dist/components/overlays/Menu/Menu.cjs.map +1 -0
  487. package/dist/components/overlays/Menu/Menu.js +137 -0
  488. package/dist/components/overlays/Menu/Menu.js.map +1 -0
  489. package/dist/components/overlays/Menu/Menu.module.css.cjs +2 -0
  490. package/dist/components/overlays/Menu/Menu.module.css.cjs.map +1 -0
  491. package/dist/components/overlays/Menu/Menu.module.css.js +10 -0
  492. package/dist/components/overlays/Menu/Menu.module.css.js.map +1 -0
  493. package/dist/components/overlays/Popover/Popover.cjs +2 -0
  494. package/dist/components/overlays/Popover/Popover.cjs.map +1 -0
  495. package/dist/components/overlays/Popover/Popover.js +59 -0
  496. package/dist/components/overlays/Popover/Popover.js.map +1 -0
  497. package/dist/components/overlays/Popover/Popover.module.css.cjs +2 -0
  498. package/dist/components/overlays/Popover/Popover.module.css.cjs.map +1 -0
  499. package/dist/components/overlays/Popover/Popover.module.css.js +8 -0
  500. package/dist/components/overlays/Popover/Popover.module.css.js.map +1 -0
  501. package/dist/components/overlays/Tooltip/Tooltip.cjs +2 -0
  502. package/dist/components/overlays/Tooltip/Tooltip.cjs.map +1 -0
  503. package/dist/components/overlays/Tooltip/Tooltip.js +84 -0
  504. package/dist/components/overlays/Tooltip/Tooltip.js.map +1 -0
  505. package/dist/components/overlays/Tooltip/Tooltip.module.css.cjs +2 -0
  506. package/dist/components/overlays/Tooltip/Tooltip.module.css.cjs.map +1 -0
  507. package/dist/components/overlays/Tooltip/Tooltip.module.css.js +8 -0
  508. package/dist/components/overlays/Tooltip/Tooltip.module.css.js.map +1 -0
  509. package/dist/design-system.css +1 -1
  510. package/dist/hooks/useCalendar/calendar.cjs +2 -0
  511. package/dist/hooks/useCalendar/calendar.cjs.map +1 -0
  512. package/dist/hooks/useCalendar/calendar.js +56 -0
  513. package/dist/hooks/useCalendar/calendar.js.map +1 -0
  514. package/dist/hooks/useCalendar/useCalendar.cjs +2 -0
  515. package/dist/hooks/useCalendar/useCalendar.cjs.map +1 -0
  516. package/dist/hooks/useCalendar/useCalendar.js +48 -0
  517. package/dist/hooks/useCalendar/useCalendar.js.map +1 -0
  518. package/dist/hooks/useCharacterCount/useCharacterCount.cjs +2 -0
  519. package/dist/hooks/useCharacterCount/useCharacterCount.cjs.map +1 -0
  520. package/dist/hooks/useCharacterCount/useCharacterCount.js +27 -0
  521. package/dist/hooks/useCharacterCount/useCharacterCount.js.map +1 -0
  522. package/dist/hooks/useDecimalInput.cjs +2 -0
  523. package/dist/hooks/useDecimalInput.cjs.map +1 -0
  524. package/dist/hooks/useDecimalInput.js +17 -0
  525. package/dist/hooks/useDecimalInput.js.map +1 -0
  526. package/dist/hooks/useFormReset.cjs +2 -0
  527. package/dist/hooks/useFormReset.cjs.map +1 -0
  528. package/dist/hooks/useFormReset.js +16 -0
  529. package/dist/hooks/useFormReset.js.map +1 -0
  530. package/dist/hooks/useMergedRefs.cjs +2 -0
  531. package/dist/hooks/useMergedRefs.cjs.map +1 -0
  532. package/dist/hooks/useMergedRefs.js +24 -0
  533. package/dist/hooks/useMergedRefs.js.map +1 -0
  534. package/dist/hooks/useSelection/selection.cjs +2 -0
  535. package/dist/hooks/useSelection/selection.cjs.map +1 -0
  536. package/dist/hooks/useSelection/selection.js +78 -0
  537. package/dist/hooks/useSelection/selection.js.map +1 -0
  538. package/dist/hooks/useSelection/useSelection.cjs +2 -0
  539. package/dist/hooks/useSelection/useSelection.cjs.map +1 -0
  540. package/dist/hooks/useSelection/useSelection.js +68 -0
  541. package/dist/hooks/useSelection/useSelection.js.map +1 -0
  542. package/dist/index.cjs +2 -0
  543. package/dist/index.cjs.map +1 -0
  544. package/dist/index.js +131 -0
  545. package/dist/index.js.map +1 -0
  546. package/dist/types/components/actions/ButtonIcon/ButtonIcon.d.ts +12 -0
  547. package/dist/types/components/actions/ButtonIcon/index.d.ts +2 -0
  548. package/dist/types/components/data-display/CodeBlock/CodeBlock.d.ts +16 -0
  549. package/dist/types/components/data-display/CodeBlock/index.d.ts +3 -0
  550. package/dist/types/components/data-display/CodeBlock/syntax.d.ts +15 -0
  551. package/dist/types/components/data-display/Table/Table.d.ts +4 -2
  552. package/dist/types/components/feedback/EmptyState/EmptyState.d.ts +14 -0
  553. package/dist/types/components/feedback/EmptyState/index.d.ts +2 -0
  554. package/dist/types/components/icons/icons.d.ts +2 -0
  555. package/dist/types/components/icons/index.d.ts +1 -1
  556. package/dist/types/components/overlays/Dialog/Dialog.d.ts +2 -0
  557. package/dist/types/index.d.ts +7 -1
  558. package/dist/utils/formatters/formatarData.cjs +2 -0
  559. package/dist/utils/formatters/formatarData.cjs.map +1 -0
  560. package/dist/utils/formatters/formatarData.js +32 -0
  561. package/dist/utils/formatters/formatarData.js.map +1 -0
  562. package/dist/utils/formatters/formatarEntradaData.cjs +2 -0
  563. package/dist/utils/formatters/formatarEntradaData.cjs.map +1 -0
  564. package/dist/utils/formatters/formatarEntradaData.js +22 -0
  565. package/dist/utils/formatters/formatarEntradaData.js.map +1 -0
  566. package/dist/utils/formatters/formatarEntradaDecimal.cjs +2 -0
  567. package/dist/utils/formatters/formatarEntradaDecimal.cjs.map +1 -0
  568. package/dist/utils/formatters/formatarEntradaDecimal.js +35 -0
  569. package/dist/utils/formatters/formatarEntradaDecimal.js.map +1 -0
  570. package/dist/utils/formatters/formatarEntradaHora.cjs +2 -0
  571. package/dist/utils/formatters/formatarEntradaHora.cjs.map +1 -0
  572. package/dist/utils/formatters/formatarEntradaHora.js +32 -0
  573. package/dist/utils/formatters/formatarEntradaHora.js.map +1 -0
  574. package/dist/utils/formatters/formatarEntradaMonetaria.cjs +2 -0
  575. package/dist/utils/formatters/formatarEntradaMonetaria.cjs.map +1 -0
  576. package/dist/utils/formatters/formatarEntradaMonetaria.js +17 -0
  577. package/dist/utils/formatters/formatarEntradaMonetaria.js.map +1 -0
  578. package/dist/utils/formatters/formatarNumero.cjs +2 -0
  579. package/dist/utils/formatters/formatarNumero.cjs.map +1 -0
  580. package/dist/utils/formatters/formatarNumero.js +28 -0
  581. package/dist/utils/formatters/formatarNumero.js.map +1 -0
  582. package/dist/utils/formatters/mascararPartes.cjs +2 -0
  583. package/dist/utils/formatters/mascararPartes.cjs.map +1 -0
  584. package/dist/utils/formatters/mascararPartes.js +17 -0
  585. package/dist/utils/formatters/mascararPartes.js.map +1 -0
  586. package/dist/utils/textSearch/textSearch.cjs +2 -0
  587. package/dist/utils/textSearch/textSearch.cjs.map +1 -0
  588. package/dist/utils/textSearch/textSearch.js +22 -0
  589. package/dist/utils/textSearch/textSearch.js.map +1 -0
  590. package/package.json +5 -5
  591. package/dist/plenus-design-system.cjs +0 -3
  592. package/dist/plenus-design-system.cjs.map +0 -1
  593. package/dist/plenus-design-system.es.js +0 -6387
  594. package/dist/plenus-design-system.es.js.map +0 -1
@@ -0,0 +1,99 @@
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({
13
+ accent: h,
14
+ defaultHiddenSlices: f,
15
+ 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
31
+ }) {
32
+ const { font: l, height: L, radius: N, ref: S, width: n } = I(), { fillHeight: j, value: i } = Q(b, L), o = T({
33
+ 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,
44
+ {
45
+ centerOrigin: !0,
46
+ containerRef: S,
47
+ empty: o.slices.length === 0 || s.every((r) => !(r.value > 0)),
48
+ emptyMessage: g,
49
+ fillHeight: j,
50
+ height: i,
51
+ legend: o.slices.map((r, e) => ({
52
+ color: o.colors[e],
53
+ hidden: o.isHidden(r.label),
54
+ label: r.label,
55
+ value: D ? a(o.ratioOf(e)) : void 0
56
+ })),
57
+ legendAlign: M,
58
+ legendPosition: x,
59
+ onToggleSeries: o.toggle,
60
+ swatch: "dot",
61
+ title: A,
62
+ width: n,
63
+ children: [
64
+ o.slices.map((r, e) => /* @__PURE__ */ c(
65
+ "path",
66
+ {
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 }),
70
+ fill: o.colors[e],
71
+ onMouseEnter: () => o.focus(e),
72
+ onMouseLeave: () => o.focus(null)
73
+ },
74
+ e
75
+ )),
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(
79
+ "text",
80
+ {
81
+ className: d.sliceLabel,
82
+ dominantBaseline: "middle",
83
+ fill: K(o.colors[e]),
84
+ textAnchor: "middle",
85
+ x: P,
86
+ y: B,
87
+ children: m
88
+ },
89
+ e
90
+ );
91
+ })
92
+ ]
93
+ }
94
+ );
95
+ }
96
+ export {
97
+ lo as ChartPie
98
+ };
99
+ //# sourceMappingURL=ChartPie.js.map
@@ -0,0 +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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"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e="_slice_91nzn_3",l="_sliceLabel_91nzn_13",s={slice:e,sliceLabel:l};exports.default=s;exports.slice=e;exports.sliceLabel=l;
2
+ //# sourceMappingURL=ChartPie.module.css.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChartPie.module.css.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ const e = "_slice_91nzn_3", s = "_sliceLabel_91nzn_13", l = {
2
+ slice: e,
3
+ sliceLabel: s
4
+ };
5
+ export {
6
+ l as default,
7
+ e as slice,
8
+ s as sliceLabel
9
+ };
10
+ //# sourceMappingURL=ChartPie.module.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChartPie.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -0,0 +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;
2
+ //# sourceMappingURL=ChartRadial.cjs.map
@@ -0,0 +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":"0kBAqDMA,EAAqB,EAGrBC,EAAe,EAErB,SAASC,EAAWC,EAAe,CACjC,OAAQA,EAAQ,KAAK,GAAM,GAC7B,CAEO,SAASC,GAAY,CAC1B,OAAAC,EACA,YAAAC,EACA,oBAAAC,EACA,aAAAC,EAAe,uBACf,SAAAC,EAAW,IACX,YAAAC,EAAcC,GAAAA,eACd,OAAAC,EAAS,IACT,aAAAC,EACA,OAAAC,EAAS,SACT,YAAAC,EACA,qBAAAC,EACA,WAAAC,EAAa,GACb,WAAAC,EAAa,EACb,UAAAC,EAAY,GACZ,YAAAC,EACA,MAAAC,EACA,OAAAC,CACF,EAAqB,CACnB,KAAM,CAAE,KAAAC,EAAM,OAAQC,EAAc,OAAQC,EAAa,IAAAC,EAAK,MAAAC,CAAA,EAAUC,mBAAA,EAClE,CAAE,WAAAC,EAAY,MAAOC,GAAoBC,GAAAA,YAAYnB,EAAQY,CAAY,EACzE,CAAE,SAAAQ,EAAU,OAAAC,CAAA,EAAWC,mBAAgB,CAC3C,oBAAqB3B,EACrB,aAAcM,EACd,qBAAsBG,CAAA,CACvB,EAIKmB,EAAQC,GAAAA,QAAQ,IAAMC,GAAAA,oBAAoBf,EAAQ,CAAE,OAAAjB,CAAA,CAAQ,EAAG,CAACA,EAAQiB,CAAM,CAAC,EAG/EgB,EAAUC,GAA2B,OAAO,SAASA,EAAK,KAAK,EAC/DC,EAAalB,EAAO,OAAO,CAACmB,EAAOF,IAAUD,EAAOC,CAAI,EAAI,KAAK,IAAIE,EAAOF,EAAK,KAAK,EAAIE,EAAQ,CAAC,EACnGC,EAAUpB,EAAO,IAAKiB,GAAS,CACnC,MAAMI,EAAOJ,EAAK,KAAOC,EAEzB,OAAOR,EAASO,EAAK,KAAK,GAAK,CAACD,EAAOC,CAAI,GAAK,EAAEI,EAAO,GAAK,EAAI,KAAK,IAAI,KAAK,IAAIJ,EAAK,MAAO,CAAC,EAAII,EAAM,CAAC,CAC9G,CAAC,EAIKC,GAAWC,qBAAkBH,EAAS,CAAE,KAAMA,EAAQ,IAAI,IAAM,CAAC,EAAG,EAEpEI,EAAS5C,EAAWgB,CAAU,EAC9B6B,EAAQ,KAAK,IAAI7C,EAAWO,CAAQ,EAAIqC,EAAQE,OAAK,EAErDC,EAAcC,GAAAA,aAAavB,EAAOG,CAAe,EAAI,EACrDqB,EAAW7B,EAAO,KAAMiB,GAAS,CAACP,EAASO,EAAK,KAAK,CAAC,EACtDa,EAAgBnC,GAAckC,EAAWzC,EAAYyC,EAAS,KAAK,EAAI,OAEvEE,EACJD,IAAkB,OACdnD,EACA,KAAK,IAAIA,EAAc,KAAK,IAAIqD,EAAAA,iBAAiBF,EAAe7B,CAAI,EAAG0B,EAAc,CAAC,CAAC,EAGvFM,EAAO,KAAK,IAAI,EAAG,KAAK,IAAIN,EAAcI,EAAM,CAAC,GAAK,KAAK,IAAI/B,EAAO,OAAQ,CAAC,GAAKH,EAAYnB,GAAoB,EACpHwD,EAAmB,KAAK,IAAIrC,EAAYoC,EAAM,CAAC,EAC/CE,GAAQzD,EAAqBuD,EAC7BG,EAAUC,GAAmBV,EAAcU,GAAUH,EAAmBC,IACxEG,GAAc,KAAK,IAAIF,EAAO,KAAK,IAAIpC,EAAO,OAAS,EAAG,CAAC,CAAC,EAAIkC,EAAkBH,CAAI,EAEtFQ,EAAQzC,GAAeK,EACvBqC,EACJX,GAAYC,IAAkB,OAC1BW,EAAAA,cAAcX,EAAe9C,GAAe6C,EAAS,MAAO5B,EAAMqC,GAAc,CAAC,EACjF,OAEN,OACEI,EAAAA,KAACC,GAAAA,WAAA,CACC,aAAY,GACZ,aAAcvC,EACd,MAAOJ,EAAO,SAAW,EACzB,aAAAd,EACA,WAAAqB,EACA,OAAQC,EACR,OAAQR,EAAO,IAAI,CAACiB,EAAMoB,KAAY,CACpC,MAAOxB,EAAMwB,CAAM,EACnB,OAAQ3B,EAASO,EAAK,KAAK,EAC3B,MAAOA,EAAK,MACZ,MAAOD,EAAOC,CAAI,EAAI7B,EAAY6B,EAAK,KAAK,EAAI,MAAA,EAChD,EACF,YAAAxB,EACA,eAAgBO,EAAO,OAAS,EAAIR,EAAS,OAC7C,eAAgBmB,EAChB,OAAO,MACP,MAAAZ,EACA,MAAAM,EAEC,SAAA,CAAAL,EAAO,IAAI,CAACiB,EAAMoB,IAAW,CAC5B,MAAMO,EAAUR,EAAOC,CAAM,EACvBQ,EAAUD,EAAUV,EACpBY,EAASxB,GAASe,CAAM,GAAK,EAC7BU,GAAavB,EAASC,EAAQqB,EAC9BE,EAAYhC,EAAOC,CAAI,EAAI,GAAGA,EAAK,KAAK,KAAK7B,EAAY6B,EAAK,KAAK,CAAC,GAAKA,EAAK,MAEpF,cACG,IAAA,CACC,SAAA,CAAAgC,EAAAA,IAAC,OAAA,CACC,aAAYD,EACZ,UAAWE,EAAAA,QAAO,MAClB,EAAGC,EAAAA,QAAQ,CACT,aAAcZ,EACd,SAAUf,EAASC,EACnB,YAAaoB,EACb,YAAaD,EACb,WAAYpB,CAAA,CACb,EAED,SAAAyB,EAAAA,IAAC,SAAO,SAAAD,CAAA,CAAU,CAAA,CAAA,EAEnBF,EAAS,GACRG,EAAAA,IAAC,OAAA,CACC,UAAWC,EAAAA,QAAO,KAClB,EAAGC,EAAAA,QAAQ,CACT,aAAcZ,EACd,SAAUQ,GACV,YAAaF,EACb,YAAaD,EACb,WAAYpB,CAAA,CACb,EACD,KAAMX,EAAMwB,CAAM,CAAA,CAAA,CACpB,CAAA,EAzBIA,CA2BR,CAEJ,CAAC,EAEAG,GACCE,EAAAA,KAAC,IAAA,CAAE,UAAWQ,EAAAA,QAAO,OACnB,SAAA,CAAAD,EAAAA,IAAC,OAAA,CACC,UAAWC,EAAAA,QAAO,YAClB,GAAIV,EAAO,KAAO,GAClB,MAAO,CAAE,WAAYA,EAAO,OAAQ,SAAUA,EAAO,IAAA,EACrD,WAAW,SAEV,SAAAA,EAAO,KAAA,CAAA,EAEVS,EAAAA,IAAC,OAAA,CAAK,UAAWC,EAAAA,QAAO,YAAa,GAAIV,EAAO,WAAa,IAAM,WAAW,SAC3E,SAAAA,EAAO,KAAA,CACV,CAAA,CAAA,CACF,CAAA,CAAA,CAAA,CAIR"}
@@ -0,0 +1,121 @@
1
+ import { jsxs as p, jsx as n } from "react/jsx-runtime";
2
+ import { useMemo as ae } from "react";
3
+ import i from "./ChartRadial.module.css.js";
4
+ import { useChartMetrics as ne } from "../core/useChartMetrics.js";
5
+ import { useSeriesToggle as ie } from "../core/useSeriesToggle.js";
6
+ import { resolveSeriesColors as se } from "../palette/seriesColor.js";
7
+ import { useTweenedNumbers as le } from "../core/useTweenedNumbers.js";
8
+ import { formatarNumero as me } from "../../../utils/formatters/formatarNumero.js";
9
+ import { centerTextRadius as de, fitCenterText as ce } from "../core/centerText.js";
10
+ import { ChartFrame as he } from "../core/ChartFrame.js";
11
+ import { arcPath as E, VOLTA as ue } from "../core/arcs.js";
12
+ import { ringDiameter as fe } from "../core/spacing.js";
13
+ import { chartHeight as ge } from "../core/cartesianLayout.js";
14
+ const I = 6, P = 8;
15
+ function _(s) {
16
+ return s * Math.PI / 180;
17
+ }
18
+ function He({
19
+ accent: s,
20
+ centerLabel: w,
21
+ defaultHiddenTracks: z,
22
+ emptyMessage: F = "Sem dados no período",
23
+ endAngle: j = 360,
24
+ formatValue: c = me,
25
+ height: L = 260,
26
+ hiddenTracks: $,
27
+ legend: q = "bottom",
28
+ legendAlign: V,
29
+ onHiddenTracksChange: B,
30
+ showCenter: G = !0,
31
+ startAngle: J = 0,
32
+ thickness: x = 16,
33
+ trackRadius: K,
34
+ title: Q,
35
+ tracks: t
36
+ }) {
37
+ const { font: v, height: U, radius: W, ref: X, width: b } = ne(), { fillHeight: Y, value: M } = ge(L, U), { isHidden: h, toggle: Z } = ie({
38
+ defaultHiddenSeries: z,
39
+ hiddenSeries: $,
40
+ onHiddenSeriesChange: B
41
+ }), R = ae(() => se(t, { accent: s }), [s, t]), l = (e) => Number.isFinite(e.value), k = t.reduce((e, o) => l(o) ? Math.max(e, o.value) : e, 0), S = t.map((e) => {
42
+ const o = e.max ?? k;
43
+ return h(e.label) || !l(e) || !(o > 0) ? 0 : Math.min(Math.max(e.value, 0) / o, 1);
44
+ }), ee = le(S, { from: S.map(() => 0) }), a = _(J), A = Math.min(_(j) - a, ue), u = fe(b, M) / 2, m = t.find((e) => !h(e.label)), d = G && m ? c(m.value) : void 0, C = d === void 0 ? P : Math.max(P, Math.min(de(d, v), u / 2)), N = Math.min(1, Math.max(u - C, 0) / (Math.max(t.length, 1) * (x + I))), f = Math.max(x * N, 1), oe = I * N, y = (e) => u - e * (f + oe), te = Math.max(y(Math.max(t.length - 1, 0)) - f, C), D = K ?? W, r = m && d !== void 0 ? ce(d, w ?? m.label, v, te * 2) : void 0;
45
+ return /* @__PURE__ */ p(
46
+ he,
47
+ {
48
+ centerOrigin: !0,
49
+ containerRef: X,
50
+ empty: t.length === 0,
51
+ emptyMessage: F,
52
+ fillHeight: Y,
53
+ height: M,
54
+ legend: t.map((e, o) => ({
55
+ color: R[o],
56
+ hidden: h(e.label),
57
+ label: e.label,
58
+ value: l(e) ? c(e.value) : void 0
59
+ })),
60
+ legendAlign: V,
61
+ legendPosition: t.length > 1 ? q : "none",
62
+ onToggleSeries: Z,
63
+ swatch: "dot",
64
+ title: Q,
65
+ width: b,
66
+ children: [
67
+ t.map((e, o) => {
68
+ const g = y(o), T = g - f, H = ee[o] ?? 0, re = a + A * H, O = l(e) ? `${e.label}: ${c(e.value)}` : e.label;
69
+ return /* @__PURE__ */ p("g", { children: [
70
+ /* @__PURE__ */ n(
71
+ "path",
72
+ {
73
+ "aria-label": O,
74
+ className: i.track,
75
+ d: E({
76
+ cornerRadius: D,
77
+ endAngle: a + A,
78
+ innerRadius: T,
79
+ outerRadius: g,
80
+ startAngle: a
81
+ }),
82
+ children: /* @__PURE__ */ n("title", { children: O })
83
+ }
84
+ ),
85
+ H > 0 && /* @__PURE__ */ n(
86
+ "path",
87
+ {
88
+ className: i.fill,
89
+ d: E({
90
+ cornerRadius: D,
91
+ endAngle: re,
92
+ innerRadius: T,
93
+ outerRadius: g,
94
+ startAngle: a
95
+ }),
96
+ fill: R[o]
97
+ }
98
+ )
99
+ ] }, o);
100
+ }),
101
+ r && /* @__PURE__ */ p("g", { className: i.center, children: [
102
+ /* @__PURE__ */ n(
103
+ "text",
104
+ {
105
+ className: i.centerValue,
106
+ dy: r.size * 0.1,
107
+ style: { fontFamily: r.family, fontSize: r.size },
108
+ textAnchor: "middle",
109
+ children: r.value
110
+ }
111
+ ),
112
+ /* @__PURE__ */ n("text", { className: i.centerLabel, dy: r.lineHeight * 0.62, textAnchor: "middle", children: r.label })
113
+ ] })
114
+ ]
115
+ }
116
+ );
117
+ }
118
+ export {
119
+ He as ChartRadial
120
+ };
121
+ //# sourceMappingURL=ChartRadial.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChartRadial.js","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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"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e="_track_dk4sj_3",t="_fill_dk4sj_7",c="_center_dk4sj_15",l="_centerValue_dk4sj_19",r="_centerLabel_dk4sj_25",n={track:e,fill:t,center:c,centerValue:l,centerLabel:r};exports.center=c;exports.centerLabel=r;exports.centerValue=l;exports.default=n;exports.fill=t;exports.track=e;
2
+ //# sourceMappingURL=ChartRadial.module.css.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChartRadial.module.css.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,16 @@
1
+ const e = "_track_dk4sj_3", t = "_fill_dk4sj_7", c = "_center_dk4sj_15", n = "_centerValue_dk4sj_19", _ = "_centerLabel_dk4sj_25", l = {
2
+ track: e,
3
+ fill: t,
4
+ center: c,
5
+ centerValue: n,
6
+ centerLabel: _
7
+ };
8
+ export {
9
+ c as center,
10
+ _ as centerLabel,
11
+ n as centerValue,
12
+ l as default,
13
+ t as fill,
14
+ e as track
15
+ };
16
+ //# sourceMappingURL=ChartRadial.module.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChartRadial.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("react/jsx-runtime"),x=require("react"),M=require("d3-sankey"),i=require("./ChartSankey.module.css.cjs"),re=require("../core/useChartMetrics.cjs"),ne=require("../palette/seriesColor.cjs"),F=require("../core/measureText.cjs"),d=require("../core/spacing.cjs"),ae=require("../core/ChartFrame.cjs"),se=require("../../../utils/formatters/formatarNumero.cjs"),oe=require("../core/cartesianLayout.cjs");function ie(s,o){return s.x0<o.x1&&o.x0<s.x1&&s.y0<o.y1&&o.y0<s.y1}const ce={center:M.sankeyCenter,justify:M.sankeyJustify,left:M.sankeyLeft,right:M.sankeyRight};function le(s){const o=s.source.x1,h=s.target.x0,c=(o+h)/2;return`M${o},${s.y0}C${c},${s.y0} ${c},${s.y1} ${h},${s.y1}`}function ue(s){const o=new Map;for(const r of s)o.set(r.source,[...o.get(r.source)??[],r.target]);const h=new Set,c=new Set;function b(r){if(c.has(r))return!0;if(h.has(r))return!1;c.add(r);const A=(o.get(r)??[]).some(b);return c.delete(r),h.add(r),A}return[...o.keys()].some(b)}function de({accent:s,cyclicMessage:o="O fluxo volta sobre si mesmo e não pode ser desenhado",emptyMessage:h="Sem dados no período",flowColor:c="source",flowValuePosition:b="end",flows:r,formatValue:A=se.formatarNumero,height:I=320,nodeAlign:_="justify",nodes:p,nodePadding:N=12,nodeWidth:E=12,showFlowValues:z=!1,showLabels:D=!0,title:J}){const{font:l,height:P,ref:W,width:L}=re.useChartMetrics(),{fillHeight:G,value:k}=oe.chartHeight(I,P),[H,j]=x.useState(null),y=x.useMemo(()=>{const e=(p??[]).map(t=>t.label);return r.forEach(({source:t,target:n})=>{[t,n].forEach(a=>{e.includes(a)||e.push(a)})}),e.map(t=>(p==null?void 0:p.find(n=>n.label===t))??{label:t})},[r,p]),K=x.useMemo(()=>ne.resolveSeriesColors(y,{accent:s}),[s,y]),g=x.useMemo(()=>{const e=new Set(r.map(t=>t.source));return y.map(t=>t.label).filter(t=>!e.has(t))},[y,r]),S=D?Math.min(F.widestLabel(g,l),L*d.CHART_LABEL_BAND)+d.CHART_LABEL_OFFSET:0,C=x.useMemo(()=>ue(r),[r]),v=x.useMemo(()=>r.reduce((e,t)=>e+(Number.isFinite(t.value)?Math.max(t.value,0):0),0),[r]),m=x.useMemo(()=>{const e=L-S;return e<=0||k<=0||r.length===0||C||v<=0?{links:[],nodes:[]}:M.sankey().nodeId(a=>a.label).nodeAlign(ce[_]).nodeWidth(E).nodePadding(N).extent([[0,2],[e,k-2]])({links:r.map(a=>({...a,value:Number.isFinite(a.value)?Math.max(a.value,0):0})),nodes:y.map(a=>({label:a.label}))})},[k,S,C,y,r,_,N,E,v,L]),B=e=>K[e]??"var(--pl-chart-neutral)";function Q(e){return c==="neutral"?"var(--pl-chart-neutral)":B(c==="target"?e.target.index:e.source.index)}function q(e){return`${e.source.label} → ${e.target.label}: ${A(e.value)}`}function U(e){return H===null?i.default.link:`${i.default.link} ${H===e?i.default.linkOn:i.default.linkDim}`}const X=(()=>{const e=[...new Set(m.nodes.map(n=>n.x0))].sort((n,a)=>n-a);if(e.length<2)return L*d.CHART_LABEL_BAND;const t=Math.min(...e.slice(1).map((n,a)=>n-e[a]));return Math.max(t-E-d.CHART_LABEL_OFFSET,0)})();function Y(e){const t=g.includes(e.label),n=F.truncateToWidth(e.label,l,(t?S:X)-d.CHART_LABEL_OFFSET),a=e.x1+d.CHART_LABEL_OFFSET,f=(e.y0+e.y1)/2;return{caixa:{x0:a,x1:a+F.measureLabel(n,l),y0:f-l.lineHeight/2,y1:f+l.lineHeight/2},texto:n,x:a,y:f}}const R=D?m.nodes.map(Y):[];function Z(e){const t=A(e.value),n=F.measureLabel(t,l),a=e.source.x1,f=e.target.x0,T=(e.y0+e.y1)/2,V={end:{anchor:"end",x:f-d.CHART_LABEL_OFFSET},middle:{anchor:"middle",x:(a+f)/2},start:{anchor:"start",x:a+d.CHART_LABEL_OFFSET}},{anchor:w,x:$}=V[b],O={end:n,middle:n/2,start:0}[b],ee={x0:$-O,x1:$-O+n,y0:T-l.lineHeight/2,y1:T+l.lineHeight/2};if(!R.some(te=>ie(ee,te.caixa)))return{anchor:w,texto:t,x:$,y:T}}return u.jsxs(ae.ChartFrame,{containerRef:W,empty:r.length===0||C||v<=0,emptyMessage:C?o:h,fillHeight:G,height:k,legendPosition:"none",title:J,width:L,children:[u.jsx("g",{className:i.default.links,children:m.links.map((e,t)=>u.jsx("path",{"aria-label":q(e),className:U(t),d:le(e),onMouseEnter:()=>j(t),onMouseLeave:()=>j(null),stroke:Q(e),strokeWidth:Math.max(e.width,1),children:u.jsx("title",{children:q(e)})},t))}),m.nodes.map(e=>u.jsx("rect",{"aria-label":e.label,className:i.default.node,fill:B(e.index),height:Math.max(e.y1-e.y0,1),width:e.x1-e.x0,x:e.x0,y:e.y0,children:u.jsx("title",{children:e.label})},e.label)),z&&m.links.map((e,t)=>{const n=Z(e);return n?u.jsx("text",{className:`${i.default.flowValue} ${i.default.sobreFluxo}`,dominantBaseline:"middle",textAnchor:n.anchor,x:n.x,y:n.y,children:n.texto},t):null}),R.map((e,t)=>u.jsx("text",{className:`${i.default.label} ${g.includes(m.nodes[t].label)?"":i.default.sobreFluxo}`,dominantBaseline:"middle",textAnchor:"start",x:e.x,y:e.y,children:e.texto},`rotulo-${m.nodes[t].label}`))]})}exports.ChartSankey=de;
2
+ //# sourceMappingURL=ChartSankey.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChartSankey.cjs","sources":["../../../../src/components/charts/ChartSankey/ChartSankey.tsx"],"sourcesContent":["import { useMemo, useState } from 'react';\nimport { sankey, sankeyCenter, sankeyJustify, sankeyLeft, sankeyRight } from 'd3-sankey';\nimport {\n CHART_LABEL_BAND,\n CHART_LABEL_OFFSET,\n ChartFrame,\n chartHeight,\n measureLabel,\n truncateToWidth,\n useChartMetrics,\n widestLabel,\n type ChartHeight,\n} from '../core';\nimport { resolveSeriesColors, type SeriesAppearance } from '../palette';\nimport { formatarNumero } from '../../../utils/formatters';\nimport styles from './ChartSankey.module.css';\n\nexport interface ChartSankeyNode extends SeriesAppearance {\n label: string;\n}\n\nexport interface ChartSankeyFlow {\n source: string;\n target: string;\n value: number;\n}\n\n/** Onde os nos sem saida se encostam, conforme a referencia. */\nexport type ChartSankeyAlign = 'left' | 'right' | 'center' | 'justify';\n\n/** De onde a ligacao tira a cor: do no de origem, do de destino, ou de nenhum. */\nexport type ChartSankeyFlowColor = 'source' | 'target' | 'neutral';\n\n/**\n * Onde o valor da ligacao e escrito. O rotulo do no ocupa a faixa logo a\n * direita dele, entao `end` e o unico que nunca disputa espaco com o rotulo da\n * propria origem.\n */\nexport type ChartSankeyFlowValuePosition = 'start' | 'middle' | 'end';\n\nexport interface ChartSankeyProps {\n accent?: string;\n /** Mensagem quando o fluxo tem ciclo, que um diagrama de fluxo nao representa. */\n cyclicMessage?: string;\n emptyMessage?: string;\n flowColor?: ChartSankeyFlowColor;\n flowValuePosition?: ChartSankeyFlowValuePosition;\n flows: readonly ChartSankeyFlow[];\n formatValue?: (value: number) => string;\n height?: ChartHeight;\n nodeAlign?: ChartSankeyAlign;\n /** Ordem e aparencia dos nos. Sem ela, os nos saem das proprias ligacoes. */\n nodes?: readonly ChartSankeyNode[];\n /** Folga vertical entre dois nos da mesma coluna. */\n nodePadding?: number;\n nodeWidth?: number;\n showFlowValues?: boolean;\n showLabels?: boolean;\n title: string;\n}\n\ninterface NoPosicionado {\n index: number;\n label: string;\n x0: number;\n x1: number;\n y0: number;\n y1: number;\n}\n\ninterface Caixa {\n x0: number;\n x1: number;\n y0: number;\n y1: number;\n}\n\nfunction seCruzam(uma: Caixa, outra: Caixa) {\n return uma.x0 < outra.x1 && outra.x0 < uma.x1 && uma.y0 < outra.y1 && outra.y0 < uma.y1;\n}\n\ninterface LigacaoPosicionada {\n index: number;\n source: NoPosicionado;\n target: NoPosicionado;\n value: number;\n width: number;\n y0: number;\n y1: number;\n}\n\nconst ALINHAMENTO = {\n center: sankeyCenter,\n justify: sankeyJustify,\n left: sankeyLeft,\n right: sankeyRight,\n};\n\n/**\n * Bezier cubica entre a borda de saida e a borda de entrada, com os pontos de\n * controle no meio do vao. E o que da a ligacao a curva que sai e chega na\n * horizontal, sem torcer perto dos nos.\n */\nfunction caminhoDa(ligacao: LigacaoPosicionada) {\n const saida = ligacao.source.x1;\n const chegada = ligacao.target.x0;\n const meio = (saida + chegada) / 2;\n\n return `M${saida},${ligacao.y0}C${meio},${ligacao.y0} ${meio},${ligacao.y1} ${chegada},${ligacao.y1}`;\n}\n\n/**\n * Busca em profundidade atras de aresta de retorno. Um autolaco tambem conta:\n * o no seria origem e destino do mesmo caminho.\n */\nfunction temCiclo(flows: readonly ChartSankeyFlow[]) {\n const saidas = new Map<string, string[]>();\n\n for (const fluxo of flows) {\n saidas.set(fluxo.source, [...(saidas.get(fluxo.source) ?? []), fluxo.target]);\n }\n\n const encerrados = new Set<string>();\n const noCaminho = new Set<string>();\n\n function alcanca(no: string): boolean {\n if (noCaminho.has(no)) {\n return true;\n }\n\n if (encerrados.has(no)) {\n return false;\n }\n\n noCaminho.add(no);\n const achou = (saidas.get(no) ?? []).some(alcanca);\n noCaminho.delete(no);\n encerrados.add(no);\n\n return achou;\n }\n\n return [...saidas.keys()].some(alcanca);\n}\n\nexport function ChartSankey({\n accent,\n cyclicMessage = 'O fluxo volta sobre si mesmo e não pode ser desenhado',\n emptyMessage = 'Sem dados no período',\n flowColor = 'source',\n flowValuePosition = 'end',\n flows,\n formatValue = formatarNumero,\n height = 320,\n nodeAlign = 'justify',\n nodes,\n nodePadding = 12,\n nodeWidth = 12,\n showFlowValues = false,\n showLabels = true,\n title,\n}: ChartSankeyProps) {\n const { font, height: alturaMedida, ref, width } = useChartMetrics();\n const { fillHeight, value: alturaDoDesenho } = chartHeight(height, alturaMedida);\n const [emFoco, setEmFoco] = useState<number | null>(null);\n\n /** Os nos saem da ordem declarada, e o que faltar sai das proprias ligacoes. */\n const declarados = useMemo(() => {\n const rotulos = (nodes ?? []).map((no) => no.label);\n\n flows.forEach(({ source, target }) => {\n [source, target].forEach((rotulo) => {\n if (!rotulos.includes(rotulo)) {\n rotulos.push(rotulo);\n }\n });\n });\n\n return rotulos.map(\n (rotulo) => nodes?.find((no) => no.label === rotulo) ?? ({ label: rotulo } as ChartSankeyNode),\n );\n }, [flows, nodes]);\n\n // A cor sai da lista inteira e na ordem dos nos, para uma ligacao herdar\n // sempre a cor do no de que ela depende.\n const cores = useMemo(() => resolveSeriesColors(declarados, { accent }), [accent, declarados]);\n\n /**\n * O rotulo fica sempre a direita do no, como na referencia. So o de saida\n * precisa de espaco reservado: ele nao tem fluxo a direita para escrever por\n * cima, e sem a reserva o nome sairia pela borda.\n */\n const saidas = useMemo(() => {\n const origens = new Set(flows.map((fluxo) => fluxo.source));\n\n return declarados.map((no) => no.label).filter((rotulo) => !origens.has(rotulo));\n }, [declarados, flows]);\n\n const bandaDireita = showLabels\n ? Math.min(widestLabel(saidas, font), width * CHART_LABEL_BAND) + CHART_LABEL_OFFSET\n : 0;\n\n // Um diagrama de fluxo e aciclico por definicao, e o `d3-sankey` lanca ao\n // encontrar um ciclo. Detectar antes troca a queda da arvore inteira por uma\n // mensagem, sem descartar ligacao nenhuma pelas costas.\n const ciclico = useMemo(() => temCiclo(flows), [flows]);\n const totalDoFluxo = useMemo(\n () => flows.reduce((soma, fluxo) => soma + (Number.isFinite(fluxo.value) ? Math.max(fluxo.value, 0) : 0), 0),\n [flows],\n );\n\n const grafo = useMemo(() => {\n const util = width - bandaDireita;\n\n if (util <= 0 || alturaDoDesenho <= 0 || flows.length === 0 || ciclico || totalDoFluxo <= 0) {\n return { links: [] as LigacaoPosicionada[], nodes: [] as NoPosicionado[] };\n }\n\n const posicionar = sankey<{ label: string }, { value: number }>()\n .nodeId((no) => no.label)\n .nodeAlign(ALINHAMENTO[nodeAlign])\n .nodeWidth(nodeWidth)\n .nodePadding(nodePadding)\n .extent([\n [0, 2],\n [util, alturaDoDesenho - 2],\n ]);\n\n const resultado = posicionar({\n links: flows.map((fluxo) => ({\n ...fluxo,\n value: Number.isFinite(fluxo.value) ? Math.max(fluxo.value, 0) : 0,\n })),\n nodes: declarados.map((no) => ({ label: no.label })),\n });\n\n return resultado as unknown as { links: LigacaoPosicionada[]; nodes: NoPosicionado[] };\n }, [alturaDoDesenho, bandaDireita, ciclico, declarados, flows, nodeAlign, nodePadding, nodeWidth, totalDoFluxo, width]);\n\n const corDoNo = (indice: number) => cores[indice] ?? 'var(--pl-chart-neutral)';\n\n function corDa(ligacao: LigacaoPosicionada) {\n if (flowColor === 'neutral') {\n return 'var(--pl-chart-neutral)';\n }\n\n return corDoNo(flowColor === 'target' ? ligacao.target.index : ligacao.source.index);\n }\n\n function descreverLigacao(ligacao: LigacaoPosicionada) {\n return `${ligacao.source.label} → ${ligacao.target.label}: ${formatValue(ligacao.value)}`;\n }\n\n function classeDa(indice: number) {\n if (emFoco === null) {\n return styles.link;\n }\n\n return `${styles.link} ${emFoco === indice ? styles.linkOn : styles.linkDim}`;\n }\n\n /** Vao entre duas colunas, descontados o no e o recuo: e o que o rotulo tem. */\n const larguraDaEtapa = (() => {\n const colunas = [...new Set(grafo.nodes.map((no) => no.x0))].sort((a, b) => a - b);\n\n if (colunas.length < 2) {\n return width * CHART_LABEL_BAND;\n }\n\n const passo = Math.min(...colunas.slice(1).map((x, indice) => x - colunas[indice]));\n\n return Math.max(passo - nodeWidth - CHART_LABEL_OFFSET, 0);\n })();\n\n function rotuloDoNo(no: NoPosicionado) {\n const saida = saidas.includes(no.label);\n const texto = truncateToWidth(\n no.label,\n font,\n (saida ? bandaDireita : larguraDaEtapa) - CHART_LABEL_OFFSET,\n );\n const x = no.x1 + CHART_LABEL_OFFSET;\n const meio = (no.y0 + no.y1) / 2;\n\n return {\n caixa: {\n x0: x,\n x1: x + measureLabel(texto, font),\n y0: meio - font.lineHeight / 2,\n y1: meio + font.lineHeight / 2,\n } satisfies Caixa,\n texto,\n x,\n y: meio,\n };\n }\n\n const rotulosDosNos = showLabels ? grafo.nodes.map(rotuloDoNo) : [];\n\n /**\n * Valor de uma ligacao, ja posicionado. Ele e omitido quando cruza o rotulo\n * de algum no: dois textos sobrepostos nao informam nada, e o valor continua\n * no `title` da propria ligacao.\n */\n function valorDa(ligacao: LigacaoPosicionada) {\n const texto = formatValue(ligacao.value);\n const largura = measureLabel(texto, font);\n const saida = ligacao.source.x1;\n const chegada = ligacao.target.x0;\n const meio = (ligacao.y0 + ligacao.y1) / 2;\n\n const posicoes = {\n end: { anchor: 'end' as const, x: chegada - CHART_LABEL_OFFSET },\n middle: { anchor: 'middle' as const, x: (saida + chegada) / 2 },\n start: { anchor: 'start' as const, x: saida + CHART_LABEL_OFFSET },\n };\n\n const { anchor, x } = posicoes[flowValuePosition];\n const recuo = { end: largura, middle: largura / 2, start: 0 }[flowValuePosition];\n\n const caixa: Caixa = {\n x0: x - recuo,\n x1: x - recuo + largura,\n y0: meio - font.lineHeight / 2,\n y1: meio + font.lineHeight / 2,\n };\n\n if (rotulosDosNos.some((rotulo) => seCruzam(caixa, rotulo.caixa))) {\n return undefined;\n }\n\n return { anchor, texto, x, y: meio };\n }\n\n return (\n <ChartFrame\n containerRef={ref}\n empty={flows.length === 0 || ciclico || totalDoFluxo <= 0}\n emptyMessage={ciclico ? cyclicMessage : emptyMessage}\n fillHeight={fillHeight}\n height={alturaDoDesenho}\n legendPosition=\"none\"\n title={title}\n width={width}\n >\n <g className={styles.links}>\n {grafo.links.map((ligacao, indice) => (\n <path\n aria-label={descreverLigacao(ligacao)}\n className={classeDa(indice)}\n d={caminhoDa(ligacao)}\n key={indice}\n onMouseEnter={() => setEmFoco(indice)}\n onMouseLeave={() => setEmFoco(null)}\n stroke={corDa(ligacao)}\n strokeWidth={Math.max(ligacao.width, 1)}\n >\n <title>{descreverLigacao(ligacao)}</title>\n </path>\n ))}\n </g>\n\n {grafo.nodes.map((no) => (\n <rect\n aria-label={no.label}\n className={styles.node}\n fill={corDoNo(no.index)}\n height={Math.max(no.y1 - no.y0, 1)}\n key={no.label}\n width={no.x1 - no.x0}\n x={no.x0}\n y={no.y0}\n >\n <title>{no.label}</title>\n </rect>\n ))}\n\n {showFlowValues &&\n grafo.links.map((ligacao, indice) => {\n const valor = valorDa(ligacao);\n\n if (!valor) {\n return null;\n }\n\n return (\n <text\n className={`${styles.flowValue} ${styles.sobreFluxo}`}\n dominantBaseline=\"middle\"\n key={indice}\n textAnchor={valor.anchor}\n x={valor.x}\n y={valor.y}\n >\n {valor.texto}\n </text>\n );\n })}\n\n {/* O rotulo fica sempre a direita do no. No no de saida ele cai na banda\n reservada; nos demais, sobre o proprio fluxo, e um halo da cor da\n superficie o separa do que passa por baixo. */}\n {rotulosDosNos.map((rotulo, indice) => (\n <text\n className={`${styles.label} ${saidas.includes(grafo.nodes[indice].label) ? '' : styles.sobreFluxo}`}\n dominantBaseline=\"middle\"\n key={`rotulo-${grafo.nodes[indice].label}`}\n textAnchor=\"start\"\n x={rotulo.x}\n y={rotulo.y}\n >\n {rotulo.texto}\n </text>\n ))}\n </ChartFrame>\n );\n}\n"],"names":["seCruzam","uma","outra","ALINHAMENTO","sankeyCenter","sankeyJustify","sankeyLeft","sankeyRight","caminhoDa","ligacao","saida","chegada","meio","temCiclo","flows","saidas","fluxo","encerrados","noCaminho","alcanca","no","achou","ChartSankey","accent","cyclicMessage","emptyMessage","flowColor","flowValuePosition","formatValue","formatarNumero","height","nodeAlign","nodes","nodePadding","nodeWidth","showFlowValues","showLabels","title","font","alturaMedida","ref","width","useChartMetrics","fillHeight","alturaDoDesenho","chartHeight","emFoco","setEmFoco","useState","declarados","useMemo","rotulos","source","target","rotulo","cores","resolveSeriesColors","origens","bandaDireita","widestLabel","CHART_LABEL_BAND","CHART_LABEL_OFFSET","ciclico","totalDoFluxo","soma","grafo","util","sankey","corDoNo","indice","corDa","descreverLigacao","classeDa","styles","larguraDaEtapa","colunas","a","b","passo","x","rotuloDoNo","texto","truncateToWidth","measureLabel","rotulosDosNos","valorDa","largura","posicoes","anchor","recuo","caixa","jsxs","ChartFrame","jsx","valor"],"mappings":"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"}
@@ -0,0 +1,209 @@
1
+ import { jsxs as re, jsx as d } from "react/jsx-runtime";
2
+ import { useState as ne, useMemo as p } from "react";
3
+ import { sankey as ae, sankeyRight as se, sankeyLeft as oe, sankeyJustify as ie, sankeyCenter as le } from "d3-sankey";
4
+ import i from "./ChartSankey.module.css.js";
5
+ import { useChartMetrics as ce } from "../core/useChartMetrics.js";
6
+ import { resolveSeriesColors as ue } from "../palette/seriesColor.js";
7
+ import { widestLabel as me, truncateToWidth as de, measureLabel as _ } from "../core/measureText.js";
8
+ import { CHART_LABEL_BAND as I, CHART_LABEL_OFFSET as y } from "../core/spacing.js";
9
+ import { ChartFrame as he } from "../core/ChartFrame.js";
10
+ import { formatarNumero as xe } from "../../../utils/formatters/formatarNumero.js";
11
+ import { chartHeight as pe } from "../core/cartesianLayout.js";
12
+ function ye(s, o) {
13
+ return s.x0 < o.x1 && o.x0 < s.x1 && s.y0 < o.y1 && o.y0 < s.y1;
14
+ }
15
+ const fe = {
16
+ center: le,
17
+ justify: ie,
18
+ left: oe,
19
+ right: se
20
+ };
21
+ function be(s) {
22
+ const o = s.source.x1, u = s.target.x0, l = (o + u) / 2;
23
+ return `M${o},${s.y0}C${l},${s.y0} ${l},${s.y1} ${u},${s.y1}`;
24
+ }
25
+ function ke(s) {
26
+ const o = /* @__PURE__ */ new Map();
27
+ for (const r of s)
28
+ o.set(r.source, [...o.get(r.source) ?? [], r.target]);
29
+ const u = /* @__PURE__ */ new Set(), l = /* @__PURE__ */ new Set();
30
+ function f(r) {
31
+ if (l.has(r))
32
+ return !0;
33
+ if (u.has(r))
34
+ return !1;
35
+ l.add(r);
36
+ const $ = (o.get(r) ?? []).some(f);
37
+ return l.delete(r), u.add(r), $;
38
+ }
39
+ return [...o.keys()].some(f);
40
+ }
41
+ function Le({
42
+ accent: s,
43
+ cyclicMessage: o = "O fluxo volta sobre si mesmo e não pode ser desenhado",
44
+ emptyMessage: u = "Sem dados no período",
45
+ flowColor: l = "source",
46
+ flowValuePosition: f = "end",
47
+ flows: r,
48
+ formatValue: $ = xe,
49
+ height: z = 320,
50
+ nodeAlign: E = "justify",
51
+ nodes: b,
52
+ nodePadding: H = 12,
53
+ nodeWidth: M = 12,
54
+ showFlowValues: J = !1,
55
+ showLabels: L = !0,
56
+ title: W
57
+ }) {
58
+ const { font: c, height: q, ref: G, width: k } = ce(), { fillHeight: K, value: v } = pe(z, q), [S, B] = ne(null), h = p(() => {
59
+ const e = (b ?? []).map((t) => t.label);
60
+ return r.forEach(({ source: t, target: n }) => {
61
+ [t, n].forEach((a) => {
62
+ e.includes(a) || e.push(a);
63
+ });
64
+ }), e.map(
65
+ (t) => (b == null ? void 0 : b.find((n) => n.label === t)) ?? { label: t }
66
+ );
67
+ }, [r, b]), P = p(() => ue(h, { accent: s }), [s, h]), D = p(() => {
68
+ const e = new Set(r.map((t) => t.source));
69
+ return h.map((t) => t.label).filter((t) => !e.has(t));
70
+ }, [h, r]), N = L ? Math.min(me(D, c), k * I) + y : 0, g = p(() => ke(r), [r]), C = p(
71
+ () => r.reduce((e, t) => e + (Number.isFinite(t.value) ? Math.max(t.value, 0) : 0), 0),
72
+ [r]
73
+ ), m = p(() => {
74
+ const e = k - N;
75
+ return e <= 0 || v <= 0 || r.length === 0 || g || C <= 0 ? { links: [], nodes: [] } : ae().nodeId((a) => a.label).nodeAlign(fe[E]).nodeWidth(M).nodePadding(H).extent([
76
+ [0, 2],
77
+ [e, v - 2]
78
+ ])({
79
+ links: r.map((a) => ({
80
+ ...a,
81
+ value: Number.isFinite(a.value) ? Math.max(a.value, 0) : 0
82
+ })),
83
+ nodes: h.map((a) => ({ label: a.label }))
84
+ });
85
+ }, [v, N, g, h, r, E, H, M, C, k]), T = (e) => P[e] ?? "var(--pl-chart-neutral)";
86
+ function Q(e) {
87
+ return l === "neutral" ? "var(--pl-chart-neutral)" : T(l === "target" ? e.target.index : e.source.index);
88
+ }
89
+ function j(e) {
90
+ return `${e.source.label} → ${e.target.label}: ${$(e.value)}`;
91
+ }
92
+ function U(e) {
93
+ return S === null ? i.link : `${i.link} ${S === e ? i.linkOn : i.linkDim}`;
94
+ }
95
+ const X = (() => {
96
+ const e = [...new Set(m.nodes.map((n) => n.x0))].sort((n, a) => n - a);
97
+ if (e.length < 2)
98
+ return k * I;
99
+ const t = Math.min(...e.slice(1).map((n, a) => n - e[a]));
100
+ return Math.max(t - M - y, 0);
101
+ })();
102
+ function Y(e) {
103
+ const t = D.includes(e.label), n = de(
104
+ e.label,
105
+ c,
106
+ (t ? N : X) - y
107
+ ), a = e.x1 + y, x = (e.y0 + e.y1) / 2;
108
+ return {
109
+ caixa: {
110
+ x0: a,
111
+ x1: a + _(n, c),
112
+ y0: x - c.lineHeight / 2,
113
+ y1: x + c.lineHeight / 2
114
+ },
115
+ texto: n,
116
+ x: a,
117
+ y: x
118
+ };
119
+ }
120
+ const O = L ? m.nodes.map(Y) : [];
121
+ function Z(e) {
122
+ const t = $(e.value), n = _(t, c), a = e.source.x1, x = e.target.x0, F = (e.y0 + e.y1) / 2, V = {
123
+ end: { anchor: "end", x: x - y },
124
+ middle: { anchor: "middle", x: (a + x) / 2 },
125
+ start: { anchor: "start", x: a + y }
126
+ }, { anchor: w, x: A } = V[f], R = { end: n, middle: n / 2, start: 0 }[f], ee = {
127
+ x0: A - R,
128
+ x1: A - R + n,
129
+ y0: F - c.lineHeight / 2,
130
+ y1: F + c.lineHeight / 2
131
+ };
132
+ if (!O.some((te) => ye(ee, te.caixa)))
133
+ return { anchor: w, texto: t, x: A, y: F };
134
+ }
135
+ return /* @__PURE__ */ re(
136
+ he,
137
+ {
138
+ containerRef: G,
139
+ empty: r.length === 0 || g || C <= 0,
140
+ emptyMessage: g ? o : u,
141
+ fillHeight: K,
142
+ height: v,
143
+ legendPosition: "none",
144
+ title: W,
145
+ width: k,
146
+ children: [
147
+ /* @__PURE__ */ d("g", { className: i.links, children: m.links.map((e, t) => /* @__PURE__ */ d(
148
+ "path",
149
+ {
150
+ "aria-label": j(e),
151
+ className: U(t),
152
+ d: be(e),
153
+ onMouseEnter: () => B(t),
154
+ onMouseLeave: () => B(null),
155
+ stroke: Q(e),
156
+ strokeWidth: Math.max(e.width, 1),
157
+ children: /* @__PURE__ */ d("title", { children: j(e) })
158
+ },
159
+ t
160
+ )) }),
161
+ m.nodes.map((e) => /* @__PURE__ */ d(
162
+ "rect",
163
+ {
164
+ "aria-label": e.label,
165
+ className: i.node,
166
+ fill: T(e.index),
167
+ height: Math.max(e.y1 - e.y0, 1),
168
+ width: e.x1 - e.x0,
169
+ x: e.x0,
170
+ y: e.y0,
171
+ children: /* @__PURE__ */ d("title", { children: e.label })
172
+ },
173
+ e.label
174
+ )),
175
+ J && m.links.map((e, t) => {
176
+ const n = Z(e);
177
+ return n ? /* @__PURE__ */ d(
178
+ "text",
179
+ {
180
+ className: `${i.flowValue} ${i.sobreFluxo}`,
181
+ dominantBaseline: "middle",
182
+ textAnchor: n.anchor,
183
+ x: n.x,
184
+ y: n.y,
185
+ children: n.texto
186
+ },
187
+ t
188
+ ) : null;
189
+ }),
190
+ O.map((e, t) => /* @__PURE__ */ d(
191
+ "text",
192
+ {
193
+ className: `${i.label} ${D.includes(m.nodes[t].label) ? "" : i.sobreFluxo}`,
194
+ dominantBaseline: "middle",
195
+ textAnchor: "start",
196
+ x: e.x,
197
+ y: e.y,
198
+ children: e.texto
199
+ },
200
+ `rotulo-${m.nodes[t].label}`
201
+ ))
202
+ ]
203
+ }
204
+ );
205
+ }
206
+ export {
207
+ Le as ChartSankey
208
+ };
209
+ //# sourceMappingURL=ChartSankey.js.map