@plenustech/design-system 0.2.0 → 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 (599) 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 +5 -3
  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/forms/Checkbox/Checkbox.d.ts +3 -2
  555. package/dist/types/components/forms/ComboBox/ComboBox.d.ts +15 -4
  556. package/dist/types/components/forms/ComboBox/index.d.ts +1 -1
  557. package/dist/types/components/icons/icons.d.ts +4 -0
  558. package/dist/types/components/icons/index.d.ts +1 -1
  559. package/dist/types/components/navigation/Pagination/Pagination.d.ts +3 -1
  560. package/dist/types/components/overlays/Dialog/Dialog.d.ts +6 -1
  561. package/dist/types/components/overlays/Dialog/index.d.ts +1 -1
  562. package/dist/types/index.d.ts +9 -3
  563. package/dist/utils/formatters/formatarData.cjs +2 -0
  564. package/dist/utils/formatters/formatarData.cjs.map +1 -0
  565. package/dist/utils/formatters/formatarData.js +32 -0
  566. package/dist/utils/formatters/formatarData.js.map +1 -0
  567. package/dist/utils/formatters/formatarEntradaData.cjs +2 -0
  568. package/dist/utils/formatters/formatarEntradaData.cjs.map +1 -0
  569. package/dist/utils/formatters/formatarEntradaData.js +22 -0
  570. package/dist/utils/formatters/formatarEntradaData.js.map +1 -0
  571. package/dist/utils/formatters/formatarEntradaDecimal.cjs +2 -0
  572. package/dist/utils/formatters/formatarEntradaDecimal.cjs.map +1 -0
  573. package/dist/utils/formatters/formatarEntradaDecimal.js +35 -0
  574. package/dist/utils/formatters/formatarEntradaDecimal.js.map +1 -0
  575. package/dist/utils/formatters/formatarEntradaHora.cjs +2 -0
  576. package/dist/utils/formatters/formatarEntradaHora.cjs.map +1 -0
  577. package/dist/utils/formatters/formatarEntradaHora.js +32 -0
  578. package/dist/utils/formatters/formatarEntradaHora.js.map +1 -0
  579. package/dist/utils/formatters/formatarEntradaMonetaria.cjs +2 -0
  580. package/dist/utils/formatters/formatarEntradaMonetaria.cjs.map +1 -0
  581. package/dist/utils/formatters/formatarEntradaMonetaria.js +17 -0
  582. package/dist/utils/formatters/formatarEntradaMonetaria.js.map +1 -0
  583. package/dist/utils/formatters/formatarNumero.cjs +2 -0
  584. package/dist/utils/formatters/formatarNumero.cjs.map +1 -0
  585. package/dist/utils/formatters/formatarNumero.js +28 -0
  586. package/dist/utils/formatters/formatarNumero.js.map +1 -0
  587. package/dist/utils/formatters/mascararPartes.cjs +2 -0
  588. package/dist/utils/formatters/mascararPartes.cjs.map +1 -0
  589. package/dist/utils/formatters/mascararPartes.js +17 -0
  590. package/dist/utils/formatters/mascararPartes.js.map +1 -0
  591. package/dist/utils/textSearch/textSearch.cjs +2 -0
  592. package/dist/utils/textSearch/textSearch.cjs.map +1 -0
  593. package/dist/utils/textSearch/textSearch.js +22 -0
  594. package/dist/utils/textSearch/textSearch.js.map +1 -0
  595. package/package.json +5 -5
  596. package/dist/plenus-design-system.cjs +0 -2
  597. package/dist/plenus-design-system.cjs.map +0 -1
  598. package/dist/plenus-design-system.es.js +0 -6297
  599. package/dist/plenus-design-system.es.js.map +0 -1
@@ -0,0 +1,65 @@
1
+ import { jsx as t, jsxs as f } from "react/jsx-runtime";
2
+ import { useId as C } from "react";
3
+ import { ChartLegend as I } from "./ChartLegend.js";
4
+ import r from "./Chart.module.css.js";
5
+ import { EmptyState as j } from "../../feedback/EmptyState/EmptyState.js";
6
+ import { IconChartBar as B } from "../../icons/icons.js";
7
+ function R({
8
+ children: s,
9
+ centerOrigin: p = !1,
10
+ containerRef: n,
11
+ empty: u,
12
+ emptyMessage: v,
13
+ fillHeight: e,
14
+ height: m,
15
+ legend: l,
16
+ legendAlign: y,
17
+ legendPosition: a,
18
+ minLegendEntries: $ = 1,
19
+ onToggleSeries: d,
20
+ swatch: b = "square",
21
+ title: N,
22
+ width: o
23
+ }) {
24
+ const c = C(), x = a === "left" || a === "right", i = a !== "none" && l !== void 0 && l.length >= $ && /* @__PURE__ */ t(
25
+ I,
26
+ {
27
+ align: y,
28
+ entries: l,
29
+ onToggle: d,
30
+ position: a,
31
+ swatch: b
32
+ }
33
+ );
34
+ return /* @__PURE__ */ f("figure", { className: r.figure, children: [
35
+ /* @__PURE__ */ t("figcaption", { className: r.title, id: c, children: N }),
36
+ /* @__PURE__ */ f("div", { className: `${r.body} ${x ? r.bodyRow : r.bodyColumn}`, children: [
37
+ (a === "top" || a === "left") && i,
38
+ /* @__PURE__ */ t(
39
+ "div",
40
+ {
41
+ className: `${r.plot} ${e ? r.plotFill : ""}`,
42
+ ref: n,
43
+ style: e ? void 0 : { minHeight: m },
44
+ children: u ? /* @__PURE__ */ t("div", { className: r.empty, children: /* @__PURE__ */ t(j, { icon: /* @__PURE__ */ t(B, {}), size: "sm", title: v }) }) : o === 0 || m === 0 ? null : /* @__PURE__ */ t(
45
+ "svg",
46
+ {
47
+ "aria-labelledby": c,
48
+ className: r.canvas,
49
+ height: m,
50
+ role: "img",
51
+ viewBox: `0 0 ${o} ${m}`,
52
+ width: o,
53
+ children: p ? /* @__PURE__ */ t("g", { transform: `translate(${o / 2} ${m / 2})`, children: s }) : s
54
+ }
55
+ )
56
+ }
57
+ ),
58
+ (a === "bottom" || a === "right") && i
59
+ ] })
60
+ ] });
61
+ }
62
+ export {
63
+ R as ChartFrame
64
+ };
65
+ //# sourceMappingURL=ChartFrame.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChartFrame.js","sources":["../../../../src/components/charts/core/ChartFrame.tsx"],"sourcesContent":["import { useId, type ReactNode } from 'react';\nimport {\n ChartLegend,\n type ChartLegendAlign,\n type ChartLegendEntry,\n type ChartLegendPosition,\n type ChartLegendSwatch,\n} from './ChartLegend';\nimport { EmptyState } from '../../feedback/EmptyState';\nimport { IconChartBar } from '../../icons';\nimport styles from './Chart.module.css';\n\nexport interface ChartFrameProps {\n /** Marcas do grafico, em coordenadas da area de desenho. */\n children: ReactNode;\n /**\n * Leva a origem das marcas para o centro da area, de modo que o filho\n * raciocine em raio e angulo em vez de converter coordenadas.\n */\n centerOrigin?: boolean;\n containerRef: (node: HTMLElement | null) => void;\n empty: boolean;\n emptyMessage: string;\n fillHeight: boolean;\n height: number;\n legend?: readonly ChartLegendEntry[];\n legendAlign?: ChartLegendAlign;\n legendPosition: ChartLegendPosition;\n /** A partir de quantas entradas a legenda aparece. */\n minLegendEntries?: number;\n onToggleSeries?: (label: string) => void;\n swatch?: ChartLegendSwatch;\n title: string;\n width: number;\n}\n\n/**\n * Moldura de qualquer grafico: titulo, area de desenho, estado vazio e legenda.\n * O que muda entre as familias e o que se desenha dentro dela — eixos, aneis ou\n * a area inteira —, e nao o cerco, que era o mesmo repetido tres vezes.\n */\nexport function ChartFrame({\n children,\n centerOrigin = false,\n containerRef,\n empty,\n emptyMessage,\n fillHeight,\n height,\n legend,\n legendAlign,\n legendPosition,\n minLegendEntries = 1,\n onToggleSeries,\n swatch = 'square',\n title,\n width,\n}: ChartFrameProps) {\n const tituloId = useId();\n const lateral = legendPosition === 'left' || legendPosition === 'right';\n const legenda = legendPosition !== 'none' && legend !== undefined && legend.length >= minLegendEntries && (\n <ChartLegend\n align={legendAlign}\n entries={legend}\n onToggle={onToggleSeries}\n position={legendPosition}\n swatch={swatch}\n />\n );\n\n return (\n <figure className={styles.figure}>\n <figcaption className={styles.title} id={tituloId}>\n {title}\n </figcaption>\n\n <div className={`${styles.body} ${lateral ? styles.bodyRow : styles.bodyColumn}`}>\n {(legendPosition === 'top' || legendPosition === 'left') && legenda}\n\n <div\n className={`${styles.plot} ${fillHeight ? styles.plotFill : ''}`}\n ref={containerRef}\n style={fillHeight ? undefined : { minHeight: height }}\n >\n {/* Sem medida ainda — SSR, aba escondida, contêiner recolhido — o\n desenho espera. Anunciar ausencia de dados ali seria mentira: eles\n estao la, e o que falta e largura. */}\n {empty ? (\n <div className={styles.empty}>\n <EmptyState icon={<IconChartBar />} size=\"sm\" title={emptyMessage} />\n </div>\n ) : width === 0 || height === 0 ? null : (\n <svg\n aria-labelledby={tituloId}\n className={styles.canvas}\n height={height}\n role=\"img\"\n viewBox={`0 0 ${width} ${height}`}\n width={width}\n >\n {centerOrigin ? (\n <g transform={`translate(${width / 2} ${height / 2})`}>{children}</g>\n ) : (\n children\n )}\n </svg>\n )}\n </div>\n\n {(legendPosition === 'bottom' || legendPosition === 'right') && legenda}\n </div>\n </figure>\n );\n}\n"],"names":["ChartFrame","children","centerOrigin","containerRef","empty","emptyMessage","fillHeight","height","legend","legendAlign","legendPosition","minLegendEntries","onToggleSeries","swatch","title","width","tituloId","useId","lateral","legenda","jsx","ChartLegend","jsxs","styles","EmptyState","IconChartBar"],"mappings":";;;;;;AAyCO,SAASA,EAAW;AAAA,EACzB,UAAAC;AAAA,EACA,cAAAC,IAAe;AAAA,EACf,cAAAC;AAAA,EACA,OAAAC;AAAA,EACA,cAAAC;AAAA,EACA,YAAAC;AAAA,EACA,QAAAC;AAAA,EACA,QAAAC;AAAA,EACA,aAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,kBAAAC,IAAmB;AAAA,EACnB,gBAAAC;AAAA,EACA,QAAAC,IAAS;AAAA,EACT,OAAAC;AAAA,EACA,OAAAC;AACF,GAAoB;AAClB,QAAMC,IAAWC,EAAA,GACXC,IAAUR,MAAmB,UAAUA,MAAmB,SAC1DS,IAAUT,MAAmB,UAAUF,MAAW,UAAaA,EAAO,UAAUG,KACpF,gBAAAS;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,OAAOZ;AAAA,MACP,SAASD;AAAA,MACT,UAAUI;AAAA,MACV,UAAUF;AAAA,MACV,QAAAG;AAAA,IAAA;AAAA,EAAA;AAIJ,SACE,gBAAAS,EAAC,UAAA,EAAO,WAAWC,EAAO,QACxB,UAAA;AAAA,IAAA,gBAAAH,EAAC,gBAAW,WAAWG,EAAO,OAAO,IAAIP,GACtC,UAAAF,GACH;AAAA,IAEA,gBAAAQ,EAAC,OAAA,EAAI,WAAW,GAAGC,EAAO,IAAI,IAAIL,IAAUK,EAAO,UAAUA,EAAO,UAAU,IAC1E,UAAA;AAAA,OAAAb,MAAmB,SAASA,MAAmB,WAAWS;AAAA,MAE5D,gBAAAC;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAW,GAAGG,EAAO,IAAI,IAAIjB,IAAaiB,EAAO,WAAW,EAAE;AAAA,UAC9D,KAAKpB;AAAA,UACL,OAAOG,IAAa,SAAY,EAAE,WAAWC,EAAA;AAAA,UAK5C,UAAAH,sBACE,OAAA,EAAI,WAAWmB,EAAO,OACrB,UAAA,gBAAAH,EAACI,GAAA,EAAW,MAAM,gBAAAJ,EAACK,GAAA,CAAA,CAAa,GAAI,MAAK,MAAK,OAAOpB,EAAA,CAAc,GACrE,IACEU,MAAU,KAAKR,MAAW,IAAI,OAChC,gBAAAa;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,mBAAiBJ;AAAA,cACjB,WAAWO,EAAO;AAAA,cAClB,QAAAhB;AAAA,cACA,MAAK;AAAA,cACL,SAAS,OAAOQ,CAAK,IAAIR,CAAM;AAAA,cAC/B,OAAAQ;AAAA,cAEC,UAAAb,IACC,gBAAAkB,EAAC,KAAA,EAAE,WAAW,aAAaL,IAAQ,CAAC,IAAIR,IAAS,CAAC,KAAM,UAAAN,EAAA,CAAS,IAEjEA;AAAA,YAAA;AAAA,UAAA;AAAA,QAEJ;AAAA,MAAA;AAAA,OAIFS,MAAmB,YAAYA,MAAmB,YAAYS;AAAA,IAAA,EAAA,CAClE;AAAA,EAAA,GACF;AAEJ;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react/jsx-runtime"),e=require("./Chart.module.css.cjs"),o={left:e.default.legendLeft,center:e.default.legendCenter,right:e.default.legendRight};function f({align:s="center",entries:u,onToggle:d,position:n,swatch:c="square"}){const r=n==="left"||n==="right";return t.jsx("ul",{className:`${e.default.legend} ${r?e.default.legendSide:o[s]}`,children:u.map((l,i)=>{const a=t.jsxs(t.Fragment,{children:[t.jsx("span",{"aria-hidden":"true",className:`${e.default.swatch} ${c==="dot"?e.default.swatchDot:""}`,style:l.hidden?void 0:{background:l.color}}),t.jsx("span",{className:e.default.legendLabel,children:l.label}),l.value!==void 0&&t.jsx("span",{className:e.default.legendValue,children:l.value})]});return t.jsx("li",{className:e.default.legendItem,children:d?t.jsx("button",{"aria-pressed":!l.hidden,className:`${e.default.legendButton} ${l.hidden?e.default.legendOff:""}`,onClick:()=>d(l.label),type:"button",children:a}):a},i)})})}exports.ChartLegend=f;
2
+ //# sourceMappingURL=ChartLegend.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChartLegend.cjs","sources":["../../../../src/components/charts/core/ChartLegend.tsx"],"sourcesContent":["import styles from './Chart.module.css';\n\nexport type ChartLegendPosition = 'top' | 'bottom' | 'left' | 'right' | 'none';\n\nexport interface ChartLegendEntry {\n color: string;\n hidden?: boolean;\n label: string;\n /** Medida da entrada, alinhada a direita. Serve a legenda em lista do anel. */\n value?: string;\n}\n\nexport type ChartLegendSwatch = 'square' | 'dot';\n\n/** Onde a legenda horizontal se apoia na largura do grafico. */\nexport type ChartLegendAlign = 'left' | 'center' | 'right';\n\nconst ALINHAMENTO: Record<ChartLegendAlign, string> = {\n left: styles.legendLeft,\n center: styles.legendCenter,\n right: styles.legendRight,\n};\n\ninterface ChartLegendProps {\n align?: ChartLegendAlign;\n entries: readonly ChartLegendEntry[];\n onToggle?: (label: string) => void;\n position: ChartLegendPosition;\n swatch?: ChartLegendSwatch;\n}\n\n/**\n * Legenda do grafico. Quando existe um alvo para o clique, cada entrada vira um\n * botao que liga e desliga a serie, com o estado exposto por `aria-pressed`.\n */\nexport function ChartLegend({\n align = 'center',\n entries,\n onToggle,\n position,\n swatch = 'square',\n}: ChartLegendProps) {\n const lateral = position === 'left' || position === 'right';\n\n return (\n <ul className={`${styles.legend} ${lateral ? styles.legendSide : ALINHAMENTO[align]}`}>\n {entries.map((entrada, indice) => {\n const conteudo = (\n <>\n <span\n aria-hidden=\"true\"\n className={`${styles.swatch} ${swatch === 'dot' ? styles.swatchDot : ''}`}\n style={entrada.hidden ? undefined : { background: entrada.color }}\n />\n <span className={styles.legendLabel}>{entrada.label}</span>\n {entrada.value !== undefined && <span className={styles.legendValue}>{entrada.value}</span>}\n </>\n );\n\n return (\n <li className={styles.legendItem} key={indice}>\n {onToggle ? (\n <button\n aria-pressed={!entrada.hidden}\n className={`${styles.legendButton} ${entrada.hidden ? styles.legendOff : ''}`}\n onClick={() => onToggle(entrada.label)}\n type=\"button\"\n >\n {conteudo}\n </button>\n ) : (\n conteudo\n )}\n </li>\n );\n })}\n </ul>\n );\n}\n"],"names":["ALINHAMENTO","styles","ChartLegend","align","entries","onToggle","position","swatch","lateral","entrada","indice","conteudo","jsxs","Fragment","jsx"],"mappings":"yJAiBMA,EAAgD,CACpD,KAAMC,EAAAA,QAAO,WACb,OAAQA,EAAAA,QAAO,aACf,MAAOA,EAAAA,QAAO,WAChB,EAcO,SAASC,EAAY,CAC1B,MAAAC,EAAQ,SACR,QAAAC,EACA,SAAAC,EACA,SAAAC,EACA,OAAAC,EAAS,QACX,EAAqB,CACnB,MAAMC,EAAUF,IAAa,QAAUA,IAAa,QAEpD,aACG,KAAA,CAAG,UAAW,GAAGL,UAAO,MAAM,IAAIO,EAAUP,EAAAA,QAAO,WAAaD,EAAYG,CAAK,CAAC,GAChF,WAAQ,IAAI,CAACM,EAASC,IAAW,CAChC,MAAMC,EACJC,EAAAA,KAAAC,EAAAA,SAAA,CACE,SAAA,CAAAC,EAAAA,IAAC,OAAA,CACC,cAAY,OACZ,UAAW,GAAGb,UAAO,MAAM,IAAIM,IAAW,MAAQN,EAAAA,QAAO,UAAY,EAAE,GACvE,MAAOQ,EAAQ,OAAS,OAAY,CAAE,WAAYA,EAAQ,KAAA,CAAM,CAAA,QAEjE,OAAA,CAAK,UAAWR,EAAAA,QAAO,YAAc,WAAQ,MAAM,EACnDQ,EAAQ,QAAU,QAAaK,EAAAA,IAAC,QAAK,UAAWb,EAAAA,QAAO,YAAc,SAAAQ,EAAQ,KAAA,CAAM,CAAA,EACtF,EAGF,OACEK,EAAAA,IAAC,KAAA,CAAG,UAAWb,EAAAA,QAAO,WACnB,SAAAI,EACCS,EAAAA,IAAC,SAAA,CACC,eAAc,CAACL,EAAQ,OACvB,UAAW,GAAGR,UAAO,YAAY,IAAIQ,EAAQ,OAASR,EAAAA,QAAO,UAAY,EAAE,GAC3E,QAAS,IAAMI,EAASI,EAAQ,KAAK,EACrC,KAAK,SAEJ,SAAAE,CAAA,CAAA,EAGHA,GAXmCD,CAavC,CAEJ,CAAC,CAAA,CACH,CAEJ"}
@@ -0,0 +1,44 @@
1
+ import { jsx as n, jsxs as h, Fragment as g } from "react/jsx-runtime";
2
+ import e from "./Chart.module.css.js";
3
+ const u = {
4
+ left: e.legendLeft,
5
+ center: e.legendCenter,
6
+ right: e.legendRight
7
+ };
8
+ function p({
9
+ align: c = "center",
10
+ entries: r,
11
+ onToggle: t,
12
+ position: s,
13
+ swatch: i = "square"
14
+ }) {
15
+ const a = s === "left" || s === "right";
16
+ return /* @__PURE__ */ n("ul", { className: `${e.legend} ${a ? e.legendSide : u[c]}`, children: r.map((l, o) => {
17
+ const d = /* @__PURE__ */ h(g, { children: [
18
+ /* @__PURE__ */ n(
19
+ "span",
20
+ {
21
+ "aria-hidden": "true",
22
+ className: `${e.swatch} ${i === "dot" ? e.swatchDot : ""}`,
23
+ style: l.hidden ? void 0 : { background: l.color }
24
+ }
25
+ ),
26
+ /* @__PURE__ */ n("span", { className: e.legendLabel, children: l.label }),
27
+ l.value !== void 0 && /* @__PURE__ */ n("span", { className: e.legendValue, children: l.value })
28
+ ] });
29
+ return /* @__PURE__ */ n("li", { className: e.legendItem, children: t ? /* @__PURE__ */ n(
30
+ "button",
31
+ {
32
+ "aria-pressed": !l.hidden,
33
+ className: `${e.legendButton} ${l.hidden ? e.legendOff : ""}`,
34
+ onClick: () => t(l.label),
35
+ type: "button",
36
+ children: d
37
+ }
38
+ ) : d }, o);
39
+ }) });
40
+ }
41
+ export {
42
+ p as ChartLegend
43
+ };
44
+ //# sourceMappingURL=ChartLegend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChartLegend.js","sources":["../../../../src/components/charts/core/ChartLegend.tsx"],"sourcesContent":["import styles from './Chart.module.css';\n\nexport type ChartLegendPosition = 'top' | 'bottom' | 'left' | 'right' | 'none';\n\nexport interface ChartLegendEntry {\n color: string;\n hidden?: boolean;\n label: string;\n /** Medida da entrada, alinhada a direita. Serve a legenda em lista do anel. */\n value?: string;\n}\n\nexport type ChartLegendSwatch = 'square' | 'dot';\n\n/** Onde a legenda horizontal se apoia na largura do grafico. */\nexport type ChartLegendAlign = 'left' | 'center' | 'right';\n\nconst ALINHAMENTO: Record<ChartLegendAlign, string> = {\n left: styles.legendLeft,\n center: styles.legendCenter,\n right: styles.legendRight,\n};\n\ninterface ChartLegendProps {\n align?: ChartLegendAlign;\n entries: readonly ChartLegendEntry[];\n onToggle?: (label: string) => void;\n position: ChartLegendPosition;\n swatch?: ChartLegendSwatch;\n}\n\n/**\n * Legenda do grafico. Quando existe um alvo para o clique, cada entrada vira um\n * botao que liga e desliga a serie, com o estado exposto por `aria-pressed`.\n */\nexport function ChartLegend({\n align = 'center',\n entries,\n onToggle,\n position,\n swatch = 'square',\n}: ChartLegendProps) {\n const lateral = position === 'left' || position === 'right';\n\n return (\n <ul className={`${styles.legend} ${lateral ? styles.legendSide : ALINHAMENTO[align]}`}>\n {entries.map((entrada, indice) => {\n const conteudo = (\n <>\n <span\n aria-hidden=\"true\"\n className={`${styles.swatch} ${swatch === 'dot' ? styles.swatchDot : ''}`}\n style={entrada.hidden ? undefined : { background: entrada.color }}\n />\n <span className={styles.legendLabel}>{entrada.label}</span>\n {entrada.value !== undefined && <span className={styles.legendValue}>{entrada.value}</span>}\n </>\n );\n\n return (\n <li className={styles.legendItem} key={indice}>\n {onToggle ? (\n <button\n aria-pressed={!entrada.hidden}\n className={`${styles.legendButton} ${entrada.hidden ? styles.legendOff : ''}`}\n onClick={() => onToggle(entrada.label)}\n type=\"button\"\n >\n {conteudo}\n </button>\n ) : (\n conteudo\n )}\n </li>\n );\n })}\n </ul>\n );\n}\n"],"names":["ALINHAMENTO","styles","ChartLegend","align","entries","onToggle","position","swatch","lateral","entrada","indice","conteudo","jsxs","Fragment","jsx"],"mappings":";;AAiBA,MAAMA,IAAgD;AAAA,EACpD,MAAMC,EAAO;AAAA,EACb,QAAQA,EAAO;AAAA,EACf,OAAOA,EAAO;AAChB;AAcO,SAASC,EAAY;AAAA,EAC1B,OAAAC,IAAQ;AAAA,EACR,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,QAAAC,IAAS;AACX,GAAqB;AACnB,QAAMC,IAAUF,MAAa,UAAUA,MAAa;AAEpD,2BACG,MAAA,EAAG,WAAW,GAAGL,EAAO,MAAM,IAAIO,IAAUP,EAAO,aAAaD,EAAYG,CAAK,CAAC,IAChF,YAAQ,IAAI,CAACM,GAASC,MAAW;AAChC,UAAMC,IACJ,gBAAAC,EAAAC,GAAA,EACE,UAAA;AAAA,MAAA,gBAAAC;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,eAAY;AAAA,UACZ,WAAW,GAAGb,EAAO,MAAM,IAAIM,MAAW,QAAQN,EAAO,YAAY,EAAE;AAAA,UACvE,OAAOQ,EAAQ,SAAS,SAAY,EAAE,YAAYA,EAAQ,MAAA;AAAA,QAAM;AAAA,MAAA;AAAA,wBAEjE,QAAA,EAAK,WAAWR,EAAO,aAAc,YAAQ,OAAM;AAAA,MACnDQ,EAAQ,UAAU,UAAa,gBAAAK,EAAC,UAAK,WAAWb,EAAO,aAAc,UAAAQ,EAAQ,MAAA,CAAM;AAAA,IAAA,GACtF;AAGF,WACE,gBAAAK,EAAC,MAAA,EAAG,WAAWb,EAAO,YACnB,UAAAI,IACC,gBAAAS;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,gBAAc,CAACL,EAAQ;AAAA,QACvB,WAAW,GAAGR,EAAO,YAAY,IAAIQ,EAAQ,SAASR,EAAO,YAAY,EAAE;AAAA,QAC3E,SAAS,MAAMI,EAASI,EAAQ,KAAK;AAAA,QACrC,MAAK;AAAA,QAEJ,UAAAE;AAAA,MAAA;AAAA,IAAA,IAGHA,KAXmCD,CAavC;AAAA,EAEJ,CAAC,EAAA,CACH;AAEJ;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("react/jsx-runtime"),n=require("./Chart.module.css.cjs");function s({baseline:d,length:t,lines:u,orientation:l}){const r=l==="horizontal";return i.jsx("g",{"aria-hidden":"true",children:u.map((e,a)=>i.jsx("line",{className:e===d?n.default.gridBaseline:n.default.gridLine,x1:r?0:e,x2:r?t:e,y1:r?e:0,y2:r?e:t},a))})}exports.Grid=s;
2
+ //# sourceMappingURL=Grid.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Grid.cjs","sources":["../../../../src/components/charts/core/Grid.tsx"],"sourcesContent":["import styles from './Chart.module.css';\n\nexport type GridOrientation = 'horizontal' | 'vertical';\n\nexport interface GridProps {\n baseline?: number;\n length: number;\n lines: readonly number[];\n orientation: GridOrientation;\n}\n\n/**\n * Linhas de referencia do grafico. A linha da base recebe destaque proprio:\n * ela separa valores positivos de negativos e nao e apenas mais uma marca.\n */\nexport function Grid({ baseline, length, lines, orientation }: GridProps) {\n const horizontal = orientation === 'horizontal';\n\n return (\n <g aria-hidden=\"true\">\n {lines.map((posicao, indice) => (\n <line\n className={posicao === baseline ? styles.gridBaseline : styles.gridLine}\n key={indice}\n x1={horizontal ? 0 : posicao}\n x2={horizontal ? length : posicao}\n y1={horizontal ? posicao : 0}\n y2={horizontal ? posicao : length}\n />\n ))}\n </g>\n );\n}\n"],"names":["Grid","baseline","length","lines","orientation","horizontal","jsx","posicao","indice","styles"],"mappings":"yJAeO,SAASA,EAAK,CAAE,SAAAC,EAAU,OAAAC,EAAQ,MAAAC,EAAO,YAAAC,GAA0B,CACxE,MAAMC,EAAaD,IAAgB,aAEnC,OACEE,MAAC,KAAE,cAAY,OACZ,WAAM,IAAI,CAACC,EAASC,IACnBF,EAAAA,IAAC,OAAA,CACC,UAAWC,IAAYN,EAAWQ,EAAAA,QAAO,aAAeA,EAAAA,QAAO,SAE/D,GAAIJ,EAAa,EAAIE,EACrB,GAAIF,EAAaH,EAASK,EAC1B,GAAIF,EAAaE,EAAU,EAC3B,GAAIF,EAAaE,EAAUL,CAAA,EAJtBM,CAAA,CAMR,EACH,CAEJ"}
@@ -0,0 +1,20 @@
1
+ import { jsx as n } from "react/jsx-runtime";
2
+ import t from "./Chart.module.css.js";
3
+ function h({ baseline: d, length: i, lines: l, orientation: m }) {
4
+ const e = m === "horizontal";
5
+ return /* @__PURE__ */ n("g", { "aria-hidden": "true", children: l.map((r, a) => /* @__PURE__ */ n(
6
+ "line",
7
+ {
8
+ className: r === d ? t.gridBaseline : t.gridLine,
9
+ x1: e ? 0 : r,
10
+ x2: e ? i : r,
11
+ y1: e ? r : 0,
12
+ y2: e ? r : i
13
+ },
14
+ a
15
+ )) });
16
+ }
17
+ export {
18
+ h as Grid
19
+ };
20
+ //# sourceMappingURL=Grid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Grid.js","sources":["../../../../src/components/charts/core/Grid.tsx"],"sourcesContent":["import styles from './Chart.module.css';\n\nexport type GridOrientation = 'horizontal' | 'vertical';\n\nexport interface GridProps {\n baseline?: number;\n length: number;\n lines: readonly number[];\n orientation: GridOrientation;\n}\n\n/**\n * Linhas de referencia do grafico. A linha da base recebe destaque proprio:\n * ela separa valores positivos de negativos e nao e apenas mais uma marca.\n */\nexport function Grid({ baseline, length, lines, orientation }: GridProps) {\n const horizontal = orientation === 'horizontal';\n\n return (\n <g aria-hidden=\"true\">\n {lines.map((posicao, indice) => (\n <line\n className={posicao === baseline ? styles.gridBaseline : styles.gridLine}\n key={indice}\n x1={horizontal ? 0 : posicao}\n x2={horizontal ? length : posicao}\n y1={horizontal ? posicao : 0}\n y2={horizontal ? posicao : length}\n />\n ))}\n </g>\n );\n}\n"],"names":["Grid","baseline","length","lines","orientation","horizontal","jsx","posicao","indice","styles"],"mappings":";;AAeO,SAASA,EAAK,EAAE,UAAAC,GAAU,QAAAC,GAAQ,OAAAC,GAAO,aAAAC,KAA0B;AACxE,QAAMC,IAAaD,MAAgB;AAEnC,SACE,gBAAAE,EAAC,OAAE,eAAY,QACZ,YAAM,IAAI,CAACC,GAASC,MACnB,gBAAAF;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC,MAAYN,IAAWQ,EAAO,eAAeA,EAAO;AAAA,MAE/D,IAAIJ,IAAa,IAAIE;AAAA,MACrB,IAAIF,IAAaH,IAASK;AAAA,MAC1B,IAAIF,IAAaE,IAAU;AAAA,MAC3B,IAAIF,IAAaE,IAAUL;AAAA,IAAA;AAAA,IAJtBM;AAAA,EAAA,CAMR,GACH;AAEJ;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("d3-shape"),l=Math.PI*2;function s(n,{endAngle:t=l,padAngle:e=0,startAngle:c=0}={}){return o.pie().sort(null).sortValues(null).value(r=>Math.max(r,0)).startAngle(c).endAngle(t).padAngle(e)([...n]).map(({endAngle:r,startAngle:a})=>({endAngle:r,startAngle:a}))}function u({cornerRadius:n=0,endAngle:t,innerRadius:e,outerRadius:c,padAngle:r=0,startAngle:a}){return o.arc().cornerRadius(n).innerRadius(e).outerRadius(c).padAngle(r).startAngle(a).endAngle(t)({cornerRadius:n,endAngle:t,innerRadius:e,outerRadius:c,padAngle:r,startAngle:a})??""}function i({endAngle:n,innerRadius:t,outerRadius:e,startAngle:c}){const r=(t+e)/2,a=(c+n)/2-Math.PI/2;return[Math.cos(a)*r,Math.sin(a)*r]}function A(n,t){const e=(n.startAngle+n.endAngle)/2-Math.PI/2;return[Math.cos(e)*t,Math.sin(e)*t]}exports.VOLTA=l;exports.arcAnchor=A;exports.arcCentroid=i;exports.arcPath=u;exports.sliceAngles=s;
2
+ //# sourceMappingURL=arcs.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arcs.cjs","sources":["../../../../src/components/charts/core/arcs.ts"],"sourcesContent":["import { arc, pie } from 'd3-shape';\n\nexport const VOLTA = Math.PI * 2;\n\nexport interface ArcAngles {\n endAngle: number;\n startAngle: number;\n}\n\nexport interface ArcShape extends ArcAngles {\n cornerRadius?: number;\n innerRadius: number;\n outerRadius: number;\n padAngle?: number;\n}\n\nexport interface SliceAnglesOptions {\n endAngle?: number;\n padAngle?: number;\n startAngle?: number;\n}\n\n/**\n * Angulo de cada fatia, **na ordem recebida**. A ordenacao por valor fica de\n * fora: a fatia precisa ficar onde o consumidor a colocou, porque e essa ordem\n * que a legenda repete.\n */\nexport function sliceAngles(\n values: readonly number[],\n { endAngle = VOLTA, padAngle = 0, startAngle = 0 }: SliceAnglesOptions = {},\n): ArcAngles[] {\n return pie<number>()\n .sort(null)\n .sortValues(null)\n .value((valor) => Math.max(valor, 0))\n .startAngle(startAngle)\n .endAngle(endAngle)\n .padAngle(padAngle)(\n [...values],\n ).map(({ endAngle: fim, startAngle: comeco }) => ({ endAngle: fim, startAngle: comeco }));\n}\n\nexport function arcPath({ cornerRadius = 0, endAngle, innerRadius, outerRadius, padAngle = 0, startAngle }: ArcShape) {\n return (\n arc<ArcShape>()\n .cornerRadius(cornerRadius)\n .innerRadius(innerRadius)\n .outerRadius(outerRadius)\n .padAngle(padAngle)\n .startAngle(startAngle)\n .endAngle(endAngle)({ cornerRadius, endAngle, innerRadius, outerRadius, padAngle, startAngle }) ?? ''\n );\n}\n\n/** Centro geometrico do arco, onde um rotulo sobre a fatia se apoia. */\nexport function arcCentroid({ endAngle, innerRadius, outerRadius, startAngle }: ArcShape): [number, number] {\n const raio = (innerRadius + outerRadius) / 2;\n const angulo = (startAngle + endAngle) / 2 - Math.PI / 2;\n\n return [Math.cos(angulo) * raio, Math.sin(angulo) * raio];\n}\n\n/** Ponto na borda do arco, de onde parte o conector de um rotulo externo. */\nexport function arcAnchor(angles: ArcAngles, radius: number): [number, number] {\n const angulo = (angles.startAngle + angles.endAngle) / 2 - Math.PI / 2;\n\n return [Math.cos(angulo) * radius, Math.sin(angulo) * radius];\n}\n"],"names":["VOLTA","sliceAngles","values","endAngle","padAngle","startAngle","pie","valor","fim","comeco","arcPath","cornerRadius","innerRadius","outerRadius","arc","arcCentroid","raio","angulo","arcAnchor","angles","radius"],"mappings":"4GAEaA,EAAQ,KAAK,GAAK,EAyBxB,SAASC,EACdC,EACA,CAAE,SAAAC,EAAWH,EAAO,SAAAI,EAAW,EAAG,WAAAC,EAAa,CAAA,EAA0B,GAC5D,CACb,OAAOC,EAAAA,IAAA,EACJ,KAAK,IAAI,EACT,WAAW,IAAI,EACf,MAAOC,GAAU,KAAK,IAAIA,EAAO,CAAC,CAAC,EACnC,WAAWF,CAAU,EACrB,SAASF,CAAQ,EACjB,SAASC,CAAQ,EAClB,CAAC,GAAGF,CAAM,CAAA,EACV,IAAI,CAAC,CAAE,SAAUM,EAAK,WAAYC,MAAc,CAAE,SAAUD,EAAK,WAAYC,GAAS,CAC1F,CAEO,SAASC,EAAQ,CAAE,aAAAC,EAAe,EAAG,SAAAR,EAAU,YAAAS,EAAa,YAAAC,EAAa,SAAAT,EAAW,EAAG,WAAAC,GAAwB,CACpH,OACES,MAAA,EACG,aAAaH,CAAY,EACzB,YAAYC,CAAW,EACvB,YAAYC,CAAW,EACvB,SAAST,CAAQ,EACjB,WAAWC,CAAU,EACrB,SAASF,CAAQ,EAAE,CAAE,aAAAQ,EAAc,SAAAR,EAAU,YAAAS,EAAa,YAAAC,EAAa,SAAAT,EAAU,WAAAC,CAAA,CAAY,GAAK,EAEzG,CAGO,SAASU,EAAY,CAAE,SAAAZ,EAAU,YAAAS,EAAa,YAAAC,EAAa,WAAAR,GAA0C,CAC1G,MAAMW,GAAQJ,EAAcC,GAAe,EACrCI,GAAUZ,EAAaF,GAAY,EAAI,KAAK,GAAK,EAEvD,MAAO,CAAC,KAAK,IAAIc,CAAM,EAAID,EAAM,KAAK,IAAIC,CAAM,EAAID,CAAI,CAC1D,CAGO,SAASE,EAAUC,EAAmBC,EAAkC,CAC7E,MAAMH,GAAUE,EAAO,WAAaA,EAAO,UAAY,EAAI,KAAK,GAAK,EAErE,MAAO,CAAC,KAAK,IAAIF,CAAM,EAAIG,EAAQ,KAAK,IAAIH,CAAM,EAAIG,CAAM,CAC9D"}
@@ -0,0 +1,26 @@
1
+ import { arc as l, pie as c } from "d3-shape";
2
+ const s = Math.PI * 2;
3
+ function A(n, { endAngle: t = s, padAngle: a = 0, startAngle: o = 0 } = {}) {
4
+ return c().sort(null).sortValues(null).value((e) => Math.max(e, 0)).startAngle(o).endAngle(t).padAngle(a)(
5
+ [...n]
6
+ ).map(({ endAngle: e, startAngle: r }) => ({ endAngle: e, startAngle: r }));
7
+ }
8
+ function g({ cornerRadius: n = 0, endAngle: t, innerRadius: a, outerRadius: o, padAngle: e = 0, startAngle: r }) {
9
+ return l().cornerRadius(n).innerRadius(a).outerRadius(o).padAngle(e).startAngle(r).endAngle(t)({ cornerRadius: n, endAngle: t, innerRadius: a, outerRadius: o, padAngle: e, startAngle: r }) ?? "";
10
+ }
11
+ function h({ endAngle: n, innerRadius: t, outerRadius: a, startAngle: o }) {
12
+ const e = (t + a) / 2, r = (o + n) / 2 - Math.PI / 2;
13
+ return [Math.cos(r) * e, Math.sin(r) * e];
14
+ }
15
+ function i(n, t) {
16
+ const a = (n.startAngle + n.endAngle) / 2 - Math.PI / 2;
17
+ return [Math.cos(a) * t, Math.sin(a) * t];
18
+ }
19
+ export {
20
+ s as VOLTA,
21
+ i as arcAnchor,
22
+ h as arcCentroid,
23
+ g as arcPath,
24
+ A as sliceAngles
25
+ };
26
+ //# sourceMappingURL=arcs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arcs.js","sources":["../../../../src/components/charts/core/arcs.ts"],"sourcesContent":["import { arc, pie } from 'd3-shape';\n\nexport const VOLTA = Math.PI * 2;\n\nexport interface ArcAngles {\n endAngle: number;\n startAngle: number;\n}\n\nexport interface ArcShape extends ArcAngles {\n cornerRadius?: number;\n innerRadius: number;\n outerRadius: number;\n padAngle?: number;\n}\n\nexport interface SliceAnglesOptions {\n endAngle?: number;\n padAngle?: number;\n startAngle?: number;\n}\n\n/**\n * Angulo de cada fatia, **na ordem recebida**. A ordenacao por valor fica de\n * fora: a fatia precisa ficar onde o consumidor a colocou, porque e essa ordem\n * que a legenda repete.\n */\nexport function sliceAngles(\n values: readonly number[],\n { endAngle = VOLTA, padAngle = 0, startAngle = 0 }: SliceAnglesOptions = {},\n): ArcAngles[] {\n return pie<number>()\n .sort(null)\n .sortValues(null)\n .value((valor) => Math.max(valor, 0))\n .startAngle(startAngle)\n .endAngle(endAngle)\n .padAngle(padAngle)(\n [...values],\n ).map(({ endAngle: fim, startAngle: comeco }) => ({ endAngle: fim, startAngle: comeco }));\n}\n\nexport function arcPath({ cornerRadius = 0, endAngle, innerRadius, outerRadius, padAngle = 0, startAngle }: ArcShape) {\n return (\n arc<ArcShape>()\n .cornerRadius(cornerRadius)\n .innerRadius(innerRadius)\n .outerRadius(outerRadius)\n .padAngle(padAngle)\n .startAngle(startAngle)\n .endAngle(endAngle)({ cornerRadius, endAngle, innerRadius, outerRadius, padAngle, startAngle }) ?? ''\n );\n}\n\n/** Centro geometrico do arco, onde um rotulo sobre a fatia se apoia. */\nexport function arcCentroid({ endAngle, innerRadius, outerRadius, startAngle }: ArcShape): [number, number] {\n const raio = (innerRadius + outerRadius) / 2;\n const angulo = (startAngle + endAngle) / 2 - Math.PI / 2;\n\n return [Math.cos(angulo) * raio, Math.sin(angulo) * raio];\n}\n\n/** Ponto na borda do arco, de onde parte o conector de um rotulo externo. */\nexport function arcAnchor(angles: ArcAngles, radius: number): [number, number] {\n const angulo = (angles.startAngle + angles.endAngle) / 2 - Math.PI / 2;\n\n return [Math.cos(angulo) * radius, Math.sin(angulo) * radius];\n}\n"],"names":["VOLTA","sliceAngles","values","endAngle","padAngle","startAngle","pie","valor","fim","comeco","arcPath","cornerRadius","innerRadius","outerRadius","arc","arcCentroid","raio","angulo","arcAnchor","angles","radius"],"mappings":";AAEO,MAAMA,IAAQ,KAAK,KAAK;AAyBxB,SAASC,EACdC,GACA,EAAE,UAAAC,IAAWH,GAAO,UAAAI,IAAW,GAAG,YAAAC,IAAa,EAAA,IAA0B,IAC5D;AACb,SAAOC,EAAA,EACJ,KAAK,IAAI,EACT,WAAW,IAAI,EACf,MAAM,CAACC,MAAU,KAAK,IAAIA,GAAO,CAAC,CAAC,EACnC,WAAWF,CAAU,EACrB,SAASF,CAAQ,EACjB,SAASC,CAAQ;AAAA,IAClB,CAAC,GAAGF,CAAM;AAAA,EAAA,EACV,IAAI,CAAC,EAAE,UAAUM,GAAK,YAAYC,SAAc,EAAE,UAAUD,GAAK,YAAYC,IAAS;AAC1F;AAEO,SAASC,EAAQ,EAAE,cAAAC,IAAe,GAAG,UAAAR,GAAU,aAAAS,GAAa,aAAAC,GAAa,UAAAT,IAAW,GAAG,YAAAC,KAAwB;AACpH,SACES,EAAA,EACG,aAAaH,CAAY,EACzB,YAAYC,CAAW,EACvB,YAAYC,CAAW,EACvB,SAAST,CAAQ,EACjB,WAAWC,CAAU,EACrB,SAASF,CAAQ,EAAE,EAAE,cAAAQ,GAAc,UAAAR,GAAU,aAAAS,GAAa,aAAAC,GAAa,UAAAT,GAAU,YAAAC,EAAA,CAAY,KAAK;AAEzG;AAGO,SAASU,EAAY,EAAE,UAAAZ,GAAU,aAAAS,GAAa,aAAAC,GAAa,YAAAR,KAA0C;AAC1G,QAAMW,KAAQJ,IAAcC,KAAe,GACrCI,KAAUZ,IAAaF,KAAY,IAAI,KAAK,KAAK;AAEvD,SAAO,CAAC,KAAK,IAAIc,CAAM,IAAID,GAAM,KAAK,IAAIC,CAAM,IAAID,CAAI;AAC1D;AAGO,SAASE,EAAUC,GAAmBC,GAAkC;AAC7E,QAAMH,KAAUE,EAAO,aAAaA,EAAO,YAAY,IAAI,KAAK,KAAK;AAErE,SAAO,CAAC,KAAK,IAAIF,CAAM,IAAIG,GAAQ,KAAK,IAAIH,CAAM,IAAIG,CAAM;AAC9D;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("./measureText.cjs"),i=require("./spacing.cjs"),_=require("../scales/scales.cjs");function F(a,t){return{fillHeight:a==="fill",value:a==="fill"?t:a}}function E(a,t,e){return a==="hidden"?0:c.widestLabel(t,e)+i.CHART_LABEL_OFFSET}function M(a,t,e){return a.length===0||e<=0||c.widestLabel(a,t)+i.CHART_LABEL_OFFSET<=e?0:e*Math.SQRT1_2>=t.lineHeight?45:90}function f(a,t,e,r){if(r==="hidden")return 0;if(e===0)return t.lineHeight+i.CHART_LABEL_OFFSET;const o=e*Math.PI/180;return c.widestLabel(a,t)*Math.sin(o)+t.lineHeight*Math.cos(o)+i.CHART_LABEL_OFFSET}function x({bottomLabels:a,font:t,height:e,labelAngle:r,leftLabels:o,rightLabels:l,topRoom:T,width:h,xAxis:s,yAxis:g,yAxisRight:H}){const A=s==="hidden"?0:c.widestLabel(a,t)/2,L=Math.max(E(g,o,t),i.CHART_EDGE_GAP),d=Math.max(E(H,l,t),i.CHART_EDGE_GAP),R=Math.max(h-L-d,0),u=r==="auto"?M(a,t,R/Math.max(a.length,1)):r,m=u===0?A:0,n={bottom:f(a,t,u,s),left:Math.max(L,m),right:Math.max(d,m),top:Math.max(T,i.CHART_EDGE_GAP)};return{margins:n,plot:{width:Math.max(h-n.left-n.right,0),height:Math.max(e-n.top-n.bottom,0)},rotation:u}}function S(a,t,e){const r=_.linearScale({domain:a,range:[t,0]});return _.ticksFor(r,t).map(e)}exports.bottomLabelRotation=M;exports.cartesianLayout=x;exports.chartHeight=F;exports.valueLabelsFor=S;
2
+ //# sourceMappingURL=cartesianLayout.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cartesianLayout.cjs","sources":["../../../../src/components/charts/core/cartesianLayout.ts"],"sourcesContent":["import { widestLabel, type LabelFont } from './measureText';\nimport { CHART_EDGE_GAP, CHART_LABEL_OFFSET } from './spacing';\nimport { linearScale, ticksFor, type NumericRange } from '../scales';\n\nexport type AxisLabelRotation = 0 | 45 | 90;\nexport type AxisLabelAngle = AxisLabelRotation | 'auto';\n\n/**\n * Como o eixo se mostra. `onHover` reserva a calha e desliza o eixo para dentro\n * dela, de modo que o desenho nao se mexa sob o ponteiro; `hidden` dispensa a\n * calha, e e o unico modo em que a area de desenho realmente cresce.\n */\nexport type AxisVisibility = 'visible' | 'hidden' | 'onHover';\n\n/** Altura do desenho: um numero fixa, `fill` entrega a decisao ao contêiner. */\nexport type ChartHeight = number | 'fill';\n\nexport interface ResolvedHeight {\n fillHeight: boolean;\n value: number;\n}\n\n/**\n * Altura efetiva do desenho. Com `fill`, ela vem da medida do contêiner, o que\n * permite ao grafico ocupar a celula de um painel sem que ninguem repita a\n * medida em JavaScript.\n */\nexport function chartHeight(height: ChartHeight, measured: number): ResolvedHeight {\n return { fillHeight: height === 'fill', value: height === 'fill' ? measured : height };\n}\n\nexport interface ChartMargins {\n bottom: number;\n left: number;\n right: number;\n top: number;\n}\n\nexport interface ChartPlot {\n height: number;\n width: number;\n}\n\nexport interface CartesianLayoutOptions {\n bottomLabels: readonly string[];\n font: LabelFont;\n height: number;\n labelAngle: AxisLabelAngle;\n leftLabels: readonly string[];\n rightLabels: readonly string[];\n topRoom: number;\n width: number;\n xAxis: AxisVisibility;\n yAxis: AxisVisibility;\n yAxisRight: AxisVisibility;\n}\n\nexport interface CartesianLayout {\n margins: ChartMargins;\n plot: ChartPlot;\n rotation: AxisLabelRotation;\n}\n\nfunction calha(visibility: AxisVisibility, labels: readonly string[], font: LabelFont) {\n return visibility === 'hidden' ? 0 : widestLabel(labels, font) + CHART_LABEL_OFFSET;\n}\n\n/**\n * Angulo dos rotulos do eixo de baixo. Em zero grau, dois rotulos vizinhos nao\n * podem se tocar. Girados, o que precisa caber e a distancia perpendicular\n * entre duas linhas de base vizinhas, que vale o passo vezes o seno do angulo.\n */\nexport function bottomLabelRotation(\n labels: readonly string[],\n font: LabelFont,\n step: number,\n): AxisLabelRotation {\n if (labels.length === 0 || step <= 0) {\n return 0;\n }\n\n if (widestLabel(labels, font) + CHART_LABEL_OFFSET <= step) {\n return 0;\n }\n\n return step * Math.SQRT1_2 >= font.lineHeight ? 45 : 90;\n}\n\n/** Altura que os rotulos de baixo ocupam, que e a caixa do texto ja girado. */\nfunction alturaDosRotulos(\n labels: readonly string[],\n font: LabelFont,\n rotation: AxisLabelRotation,\n visibility: AxisVisibility,\n) {\n if (visibility === 'hidden') {\n return 0;\n }\n\n if (rotation === 0) {\n return font.lineHeight + CHART_LABEL_OFFSET;\n }\n\n const radianos = (rotation * Math.PI) / 180;\n const caixa = widestLabel(labels, font) * Math.sin(radianos) + font.lineHeight * Math.cos(radianos);\n\n return caixa + CHART_LABEL_OFFSET;\n}\n\n/**\n * Margens derivadas do conteudo, e nao de constantes. A ordem resolve sozinha a\n * dependencia entre elas: as calhas laterais definem a largura util, a largura\n * util define o passo entre categorias, o passo define o angulo dos rotulos e o\n * angulo define a altura que eles ocupam embaixo.\n */\nexport function cartesianLayout({\n bottomLabels,\n font,\n height,\n labelAngle,\n leftLabels,\n rightLabels,\n topRoom,\n width,\n xAxis,\n yAxis,\n yAxisRight,\n}: CartesianLayoutOptions): CartesianLayout {\n const meioRotulo = xAxis === 'hidden' ? 0 : widestLabel(bottomLabels, font) / 2;\n\n const left = Math.max(calha(yAxis, leftLabels, font), CHART_EDGE_GAP);\n const right = Math.max(calha(yAxisRight, rightLabels, font), CHART_EDGE_GAP);\n const plotWidth = Math.max(width - left - right, 0);\n\n const rotation =\n labelAngle === 'auto'\n ? bottomLabelRotation(bottomLabels, font, plotWidth / Math.max(bottomLabels.length, 1))\n : labelAngle;\n\n // Sem rotacao o rotulo das pontas transborda meia largura para cada lado; a\n // folga so precisa cobrir o que a calha lateral ainda nao cobre.\n const bordaLateral = rotation === 0 ? meioRotulo : 0;\n const margins: ChartMargins = {\n bottom: alturaDosRotulos(bottomLabels, font, rotation, xAxis),\n left: Math.max(left, bordaLateral),\n right: Math.max(right, bordaLateral),\n top: Math.max(topRoom, CHART_EDGE_GAP),\n };\n\n return {\n margins,\n plot: {\n width: Math.max(width - margins.left - margins.right, 0),\n height: Math.max(height - margins.top - margins.bottom, 0),\n },\n rotation,\n };\n}\n\n/**\n * Rotulos de valor usados apenas para medir a calha do eixo, antes de a area de\n * desenho existir. Eles saem da altura total em vez da altura util, o que pode\n * render uma marca a mais ou a menos: a largura do rotulo mais largo nao muda\n * por isso, e e so ela que a medida precisa.\n */\nexport function valueLabelsFor(\n domain: NumericRange,\n length: number,\n format: (value: number) => string,\n) {\n const escala = linearScale({ domain, range: [length, 0] });\n\n return ticksFor(escala, length).map(format);\n}\n"],"names":["chartHeight","height","measured","calha","visibility","labels","font","widestLabel","CHART_LABEL_OFFSET","bottomLabelRotation","step","alturaDosRotulos","rotation","radianos","cartesianLayout","bottomLabels","labelAngle","leftLabels","rightLabels","topRoom","width","xAxis","yAxis","yAxisRight","meioRotulo","left","CHART_EDGE_GAP","right","plotWidth","bordaLateral","margins","valueLabelsFor","domain","length","format","escala","linearScale","ticksFor"],"mappings":"kLA2BO,SAASA,EAAYC,EAAqBC,EAAkC,CACjF,MAAO,CAAE,WAAYD,IAAW,OAAQ,MAAOA,IAAW,OAASC,EAAWD,CAAA,CAChF,CAkCA,SAASE,EAAMC,EAA4BC,EAA2BC,EAAiB,CACrF,OAAOF,IAAe,SAAW,EAAIG,EAAAA,YAAYF,EAAQC,CAAI,EAAIE,EAAAA,kBACnE,CAOO,SAASC,EACdJ,EACAC,EACAI,EACmB,CAKnB,OAJIL,EAAO,SAAW,GAAKK,GAAQ,GAI/BH,EAAAA,YAAYF,EAAQC,CAAI,EAAIE,EAAAA,oBAAsBE,EAC7C,EAGFA,EAAO,KAAK,SAAWJ,EAAK,WAAa,GAAK,EACvD,CAGA,SAASK,EACPN,EACAC,EACAM,EACAR,EACA,CACA,GAAIA,IAAe,SACjB,MAAO,GAGT,GAAIQ,IAAa,EACf,OAAON,EAAK,WAAaE,EAAAA,mBAG3B,MAAMK,EAAYD,EAAW,KAAK,GAAM,IAGxC,OAFcL,EAAAA,YAAYF,EAAQC,CAAI,EAAI,KAAK,IAAIO,CAAQ,EAAIP,EAAK,WAAa,KAAK,IAAIO,CAAQ,EAEnFL,EAAAA,kBACjB,CAQO,SAASM,EAAgB,CAC9B,aAAAC,EACA,KAAAT,EACA,OAAAL,EACA,WAAAe,EACA,WAAAC,EACA,YAAAC,EACA,QAAAC,EACA,MAAAC,EACA,MAAAC,EACA,MAAAC,EACA,WAAAC,CACF,EAA4C,CAC1C,MAAMC,EAAaH,IAAU,SAAW,EAAId,EAAAA,YAAYQ,EAAcT,CAAI,EAAI,EAExEmB,EAAO,KAAK,IAAItB,EAAMmB,EAAOL,EAAYX,CAAI,EAAGoB,gBAAc,EAC9DC,EAAQ,KAAK,IAAIxB,EAAMoB,EAAYL,EAAaZ,CAAI,EAAGoB,gBAAc,EACrEE,EAAY,KAAK,IAAIR,EAAQK,EAAOE,EAAO,CAAC,EAE5Cf,EACJI,IAAe,OACXP,EAAoBM,EAAcT,EAAMsB,EAAY,KAAK,IAAIb,EAAa,OAAQ,CAAC,CAAC,EACpFC,EAIAa,EAAejB,IAAa,EAAIY,EAAa,EAC7CM,EAAwB,CAC5B,OAAQnB,EAAiBI,EAAcT,EAAMM,EAAUS,CAAK,EAC5D,KAAM,KAAK,IAAII,EAAMI,CAAY,EACjC,MAAO,KAAK,IAAIF,EAAOE,CAAY,EACnC,IAAK,KAAK,IAAIV,EAASO,EAAAA,cAAc,CAAA,EAGvC,MAAO,CACL,QAAAI,EACA,KAAM,CACJ,MAAO,KAAK,IAAIV,EAAQU,EAAQ,KAAOA,EAAQ,MAAO,CAAC,EACvD,OAAQ,KAAK,IAAI7B,EAAS6B,EAAQ,IAAMA,EAAQ,OAAQ,CAAC,CAAA,EAE3D,SAAAlB,CAAA,CAEJ,CAQO,SAASmB,EACdC,EACAC,EACAC,EACA,CACA,MAAMC,EAASC,EAAAA,YAAY,CAAE,OAAAJ,EAAQ,MAAO,CAACC,EAAQ,CAAC,EAAG,EAEzD,OAAOI,EAAAA,SAASF,EAAQF,CAAM,EAAE,IAAIC,CAAM,CAC5C"}
@@ -0,0 +1,59 @@
1
+ import { widestLabel as h } from "./measureText.js";
2
+ import { CHART_EDGE_GAP as u, CHART_LABEL_OFFSET as e } from "./spacing.js";
3
+ import { linearScale as E, ticksFor as F } from "../scales/scales.js";
4
+ function C(a, t) {
5
+ return { fillHeight: a === "fill", value: a === "fill" ? t : a };
6
+ }
7
+ function x(a, t, r) {
8
+ return a === "hidden" ? 0 : h(t, r) + e;
9
+ }
10
+ function L(a, t, r) {
11
+ return a.length === 0 || r <= 0 || h(a, t) + e <= r ? 0 : r * Math.SQRT1_2 >= t.lineHeight ? 45 : 90;
12
+ }
13
+ function T(a, t, r, i) {
14
+ if (i === "hidden")
15
+ return 0;
16
+ if (r === 0)
17
+ return t.lineHeight + e;
18
+ const o = r * Math.PI / 180;
19
+ return h(a, t) * Math.sin(o) + t.lineHeight * Math.cos(o) + e;
20
+ }
21
+ function D({
22
+ bottomLabels: a,
23
+ font: t,
24
+ height: r,
25
+ labelAngle: i,
26
+ leftLabels: o,
27
+ rightLabels: l,
28
+ topRoom: g,
29
+ width: m,
30
+ xAxis: s,
31
+ yAxis: p,
32
+ yAxisRight: H
33
+ }) {
34
+ const R = s === "hidden" ? 0 : h(a, t) / 2, M = Math.max(x(p, o, t), u), f = Math.max(x(H, l, t), u), _ = Math.max(m - M - f, 0), c = i === "auto" ? L(a, t, _ / Math.max(a.length, 1)) : i, d = c === 0 ? R : 0, n = {
35
+ bottom: T(a, t, c, s),
36
+ left: Math.max(M, d),
37
+ right: Math.max(f, d),
38
+ top: Math.max(g, u)
39
+ };
40
+ return {
41
+ margins: n,
42
+ plot: {
43
+ width: Math.max(m - n.left - n.right, 0),
44
+ height: Math.max(r - n.top - n.bottom, 0)
45
+ },
46
+ rotation: c
47
+ };
48
+ }
49
+ function G(a, t, r) {
50
+ const i = E({ domain: a, range: [t, 0] });
51
+ return F(i, t).map(r);
52
+ }
53
+ export {
54
+ L as bottomLabelRotation,
55
+ D as cartesianLayout,
56
+ C as chartHeight,
57
+ G as valueLabelsFor
58
+ };
59
+ //# sourceMappingURL=cartesianLayout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cartesianLayout.js","sources":["../../../../src/components/charts/core/cartesianLayout.ts"],"sourcesContent":["import { widestLabel, type LabelFont } from './measureText';\nimport { CHART_EDGE_GAP, CHART_LABEL_OFFSET } from './spacing';\nimport { linearScale, ticksFor, type NumericRange } from '../scales';\n\nexport type AxisLabelRotation = 0 | 45 | 90;\nexport type AxisLabelAngle = AxisLabelRotation | 'auto';\n\n/**\n * Como o eixo se mostra. `onHover` reserva a calha e desliza o eixo para dentro\n * dela, de modo que o desenho nao se mexa sob o ponteiro; `hidden` dispensa a\n * calha, e e o unico modo em que a area de desenho realmente cresce.\n */\nexport type AxisVisibility = 'visible' | 'hidden' | 'onHover';\n\n/** Altura do desenho: um numero fixa, `fill` entrega a decisao ao contêiner. */\nexport type ChartHeight = number | 'fill';\n\nexport interface ResolvedHeight {\n fillHeight: boolean;\n value: number;\n}\n\n/**\n * Altura efetiva do desenho. Com `fill`, ela vem da medida do contêiner, o que\n * permite ao grafico ocupar a celula de um painel sem que ninguem repita a\n * medida em JavaScript.\n */\nexport function chartHeight(height: ChartHeight, measured: number): ResolvedHeight {\n return { fillHeight: height === 'fill', value: height === 'fill' ? measured : height };\n}\n\nexport interface ChartMargins {\n bottom: number;\n left: number;\n right: number;\n top: number;\n}\n\nexport interface ChartPlot {\n height: number;\n width: number;\n}\n\nexport interface CartesianLayoutOptions {\n bottomLabels: readonly string[];\n font: LabelFont;\n height: number;\n labelAngle: AxisLabelAngle;\n leftLabels: readonly string[];\n rightLabels: readonly string[];\n topRoom: number;\n width: number;\n xAxis: AxisVisibility;\n yAxis: AxisVisibility;\n yAxisRight: AxisVisibility;\n}\n\nexport interface CartesianLayout {\n margins: ChartMargins;\n plot: ChartPlot;\n rotation: AxisLabelRotation;\n}\n\nfunction calha(visibility: AxisVisibility, labels: readonly string[], font: LabelFont) {\n return visibility === 'hidden' ? 0 : widestLabel(labels, font) + CHART_LABEL_OFFSET;\n}\n\n/**\n * Angulo dos rotulos do eixo de baixo. Em zero grau, dois rotulos vizinhos nao\n * podem se tocar. Girados, o que precisa caber e a distancia perpendicular\n * entre duas linhas de base vizinhas, que vale o passo vezes o seno do angulo.\n */\nexport function bottomLabelRotation(\n labels: readonly string[],\n font: LabelFont,\n step: number,\n): AxisLabelRotation {\n if (labels.length === 0 || step <= 0) {\n return 0;\n }\n\n if (widestLabel(labels, font) + CHART_LABEL_OFFSET <= step) {\n return 0;\n }\n\n return step * Math.SQRT1_2 >= font.lineHeight ? 45 : 90;\n}\n\n/** Altura que os rotulos de baixo ocupam, que e a caixa do texto ja girado. */\nfunction alturaDosRotulos(\n labels: readonly string[],\n font: LabelFont,\n rotation: AxisLabelRotation,\n visibility: AxisVisibility,\n) {\n if (visibility === 'hidden') {\n return 0;\n }\n\n if (rotation === 0) {\n return font.lineHeight + CHART_LABEL_OFFSET;\n }\n\n const radianos = (rotation * Math.PI) / 180;\n const caixa = widestLabel(labels, font) * Math.sin(radianos) + font.lineHeight * Math.cos(radianos);\n\n return caixa + CHART_LABEL_OFFSET;\n}\n\n/**\n * Margens derivadas do conteudo, e nao de constantes. A ordem resolve sozinha a\n * dependencia entre elas: as calhas laterais definem a largura util, a largura\n * util define o passo entre categorias, o passo define o angulo dos rotulos e o\n * angulo define a altura que eles ocupam embaixo.\n */\nexport function cartesianLayout({\n bottomLabels,\n font,\n height,\n labelAngle,\n leftLabels,\n rightLabels,\n topRoom,\n width,\n xAxis,\n yAxis,\n yAxisRight,\n}: CartesianLayoutOptions): CartesianLayout {\n const meioRotulo = xAxis === 'hidden' ? 0 : widestLabel(bottomLabels, font) / 2;\n\n const left = Math.max(calha(yAxis, leftLabels, font), CHART_EDGE_GAP);\n const right = Math.max(calha(yAxisRight, rightLabels, font), CHART_EDGE_GAP);\n const plotWidth = Math.max(width - left - right, 0);\n\n const rotation =\n labelAngle === 'auto'\n ? bottomLabelRotation(bottomLabels, font, plotWidth / Math.max(bottomLabels.length, 1))\n : labelAngle;\n\n // Sem rotacao o rotulo das pontas transborda meia largura para cada lado; a\n // folga so precisa cobrir o que a calha lateral ainda nao cobre.\n const bordaLateral = rotation === 0 ? meioRotulo : 0;\n const margins: ChartMargins = {\n bottom: alturaDosRotulos(bottomLabels, font, rotation, xAxis),\n left: Math.max(left, bordaLateral),\n right: Math.max(right, bordaLateral),\n top: Math.max(topRoom, CHART_EDGE_GAP),\n };\n\n return {\n margins,\n plot: {\n width: Math.max(width - margins.left - margins.right, 0),\n height: Math.max(height - margins.top - margins.bottom, 0),\n },\n rotation,\n };\n}\n\n/**\n * Rotulos de valor usados apenas para medir a calha do eixo, antes de a area de\n * desenho existir. Eles saem da altura total em vez da altura util, o que pode\n * render uma marca a mais ou a menos: a largura do rotulo mais largo nao muda\n * por isso, e e so ela que a medida precisa.\n */\nexport function valueLabelsFor(\n domain: NumericRange,\n length: number,\n format: (value: number) => string,\n) {\n const escala = linearScale({ domain, range: [length, 0] });\n\n return ticksFor(escala, length).map(format);\n}\n"],"names":["chartHeight","height","measured","calha","visibility","labels","font","widestLabel","CHART_LABEL_OFFSET","bottomLabelRotation","step","alturaDosRotulos","rotation","radianos","cartesianLayout","bottomLabels","labelAngle","leftLabels","rightLabels","topRoom","width","xAxis","yAxis","yAxisRight","meioRotulo","left","CHART_EDGE_GAP","right","plotWidth","bordaLateral","margins","valueLabelsFor","domain","length","format","escala","linearScale","ticksFor"],"mappings":";;;AA2BO,SAASA,EAAYC,GAAqBC,GAAkC;AACjF,SAAO,EAAE,YAAYD,MAAW,QAAQ,OAAOA,MAAW,SAASC,IAAWD,EAAA;AAChF;AAkCA,SAASE,EAAMC,GAA4BC,GAA2BC,GAAiB;AACrF,SAAOF,MAAe,WAAW,IAAIG,EAAYF,GAAQC,CAAI,IAAIE;AACnE;AAOO,SAASC,EACdJ,GACAC,GACAI,GACmB;AAKnB,SAJIL,EAAO,WAAW,KAAKK,KAAQ,KAI/BH,EAAYF,GAAQC,CAAI,IAAIE,KAAsBE,IAC7C,IAGFA,IAAO,KAAK,WAAWJ,EAAK,aAAa,KAAK;AACvD;AAGA,SAASK,EACPN,GACAC,GACAM,GACAR,GACA;AACA,MAAIA,MAAe;AACjB,WAAO;AAGT,MAAIQ,MAAa;AACf,WAAON,EAAK,aAAaE;AAG3B,QAAMK,IAAYD,IAAW,KAAK,KAAM;AAGxC,SAFcL,EAAYF,GAAQC,CAAI,IAAI,KAAK,IAAIO,CAAQ,IAAIP,EAAK,aAAa,KAAK,IAAIO,CAAQ,IAEnFL;AACjB;AAQO,SAASM,EAAgB;AAAA,EAC9B,cAAAC;AAAA,EACA,MAAAT;AAAA,EACA,QAAAL;AAAA,EACA,YAAAe;AAAA,EACA,YAAAC;AAAA,EACA,aAAAC;AAAA,EACA,SAAAC;AAAA,EACA,OAAAC;AAAA,EACA,OAAAC;AAAA,EACA,OAAAC;AAAA,EACA,YAAAC;AACF,GAA4C;AAC1C,QAAMC,IAAaH,MAAU,WAAW,IAAId,EAAYQ,GAAcT,CAAI,IAAI,GAExEmB,IAAO,KAAK,IAAItB,EAAMmB,GAAOL,GAAYX,CAAI,GAAGoB,CAAc,GAC9DC,IAAQ,KAAK,IAAIxB,EAAMoB,GAAYL,GAAaZ,CAAI,GAAGoB,CAAc,GACrEE,IAAY,KAAK,IAAIR,IAAQK,IAAOE,GAAO,CAAC,GAE5Cf,IACJI,MAAe,SACXP,EAAoBM,GAAcT,GAAMsB,IAAY,KAAK,IAAIb,EAAa,QAAQ,CAAC,CAAC,IACpFC,GAIAa,IAAejB,MAAa,IAAIY,IAAa,GAC7CM,IAAwB;AAAA,IAC5B,QAAQnB,EAAiBI,GAAcT,GAAMM,GAAUS,CAAK;AAAA,IAC5D,MAAM,KAAK,IAAII,GAAMI,CAAY;AAAA,IACjC,OAAO,KAAK,IAAIF,GAAOE,CAAY;AAAA,IACnC,KAAK,KAAK,IAAIV,GAASO,CAAc;AAAA,EAAA;AAGvC,SAAO;AAAA,IACL,SAAAI;AAAA,IACA,MAAM;AAAA,MACJ,OAAO,KAAK,IAAIV,IAAQU,EAAQ,OAAOA,EAAQ,OAAO,CAAC;AAAA,MACvD,QAAQ,KAAK,IAAI7B,IAAS6B,EAAQ,MAAMA,EAAQ,QAAQ,CAAC;AAAA,IAAA;AAAA,IAE3D,UAAAlB;AAAA,EAAA;AAEJ;AAQO,SAASmB,EACdC,GACAC,GACAC,GACA;AACA,QAAMC,IAASC,EAAY,EAAE,QAAAJ,GAAQ,OAAO,CAACC,GAAQ,CAAC,GAAG;AAEzD,SAAOI,EAASF,GAAQF,CAAM,EAAE,IAAIC,CAAM;AAC5C;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("./measureText.cjs"),m=require("./spacing.cjs");function d(a,i){const e=i.centerSteps[i.centerSteps.length-1];return s.measureLabel(a,{...i,family:e.display?i.headingFamily:i.family,size:e.size})/2+m.CHART_LABEL_OFFSET}function g(a,i,e,n){const r=Math.max(n-m.CHART_LABEL_OFFSET*2,0),l=e.centerSteps,t=l.find(c=>s.measureLabel(a,{...e,family:c.display?e.headingFamily:e.family,size:c.size})<=r)??l[l.length-1],u=t.display?e.headingFamily:e.family;return{family:u,label:s.truncateToWidth(i,e,r),lineHeight:t.lineHeight,size:t.size,value:s.truncateToWidth(a,{...e,family:u,size:t.size},r)}}exports.centerTextRadius=d;exports.fitCenterText=g;
2
+ //# sourceMappingURL=centerText.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"centerText.cjs","sources":["../../../../src/components/charts/core/centerText.ts"],"sourcesContent":["import { measureLabel, truncateToWidth, type LabelFont } from './measureText';\nimport { CHART_LABEL_OFFSET } from './spacing';\n\nexport interface CenterText {\n family: string;\n label: string;\n lineHeight: number;\n size: number;\n value: string;\n}\n\n/** Raio do vazio central em que o valor cabe inteiro no menor degrau da escala. */\nexport function centerTextRadius(value: string, font: LabelFont) {\n const menor = font.centerSteps[font.centerSteps.length - 1];\n const largura = measureLabel(value, {\n ...font,\n family: menor.display ? font.headingFamily : font.family,\n size: menor.size,\n });\n\n return largura / 2 + CHART_LABEL_OFFSET;\n}\n\n/**\n * Valor e rotulo do centro, no maior degrau da escala oficial em que o texto ainda cabe dentro do anel: o valor e um\n * KPI, e anel pequeno desce na escala em vez de sair dela. O SVG nao corta o que transborda; no ultimo degrau, corta-se.\n */\nexport function fitCenterText(\n value: string,\n label: string,\n font: LabelFont,\n innerDiameter: number,\n): CenterText {\n // A largura util e a corda do circulo interno na altura do texto, e nao o\n // diametro: no centro do anel o texto tem o diametro inteiro, mas o rotulo,\n // logo abaixo, tem menos.\n const disponivel = Math.max(innerDiameter - CHART_LABEL_OFFSET * 2, 0);\n\n const degraus = font.centerSteps;\n const degrau =\n degraus.find((candidato) =>\n measureLabel(value, {\n ...font,\n family: candidato.display ? font.headingFamily : font.family,\n size: candidato.size,\n }) <= disponivel,\n ) ?? degraus[degraus.length - 1];\n\n const family = degrau.display ? font.headingFamily : font.family;\n\n return {\n family,\n label: truncateToWidth(label, font, disponivel),\n lineHeight: degrau.lineHeight,\n size: degrau.size,\n value: truncateToWidth(value, { ...font, family, size: degrau.size }, disponivel),\n };\n}\n"],"names":["centerTextRadius","value","font","menor","measureLabel","CHART_LABEL_OFFSET","fitCenterText","label","innerDiameter","disponivel","degraus","degrau","candidato","family","truncateToWidth"],"mappings":"gJAYO,SAASA,EAAiBC,EAAeC,EAAiB,CAC/D,MAAMC,EAAQD,EAAK,YAAYA,EAAK,YAAY,OAAS,CAAC,EAO1D,OANgBE,EAAAA,aAAaH,EAAO,CAClC,GAAGC,EACH,OAAQC,EAAM,QAAUD,EAAK,cAAgBA,EAAK,OAClD,KAAMC,EAAM,IAAA,CACb,EAEgB,EAAIE,EAAAA,kBACvB,CAMO,SAASC,EACdL,EACAM,EACAL,EACAM,EACY,CAIZ,MAAMC,EAAa,KAAK,IAAID,EAAgBH,EAAAA,mBAAqB,EAAG,CAAC,EAE/DK,EAAUR,EAAK,YACfS,EACJD,EAAQ,KAAME,GACZR,EAAAA,aAAaH,EAAO,CAClB,GAAGC,EACH,OAAQU,EAAU,QAAUV,EAAK,cAAgBA,EAAK,OACtD,KAAMU,EAAU,IAAA,CACjB,GAAKH,CAAA,GACHC,EAAQA,EAAQ,OAAS,CAAC,EAE3BG,EAASF,EAAO,QAAUT,EAAK,cAAgBA,EAAK,OAE1D,MAAO,CACL,OAAAW,EACA,MAAOC,EAAAA,gBAAgBP,EAAOL,EAAMO,CAAU,EAC9C,WAAYE,EAAO,WACnB,KAAMA,EAAO,KACb,MAAOG,EAAAA,gBAAgBb,EAAO,CAAE,GAAGC,EAAM,OAAAW,EAAQ,KAAMF,EAAO,IAAA,EAAQF,CAAU,CAAA,CAEpF"}
@@ -0,0 +1,31 @@
1
+ import { measureLabel as y, truncateToWidth as c } from "./measureText.js";
2
+ import { CHART_LABEL_OFFSET as g } from "./spacing.js";
3
+ function p(a, i) {
4
+ const e = i.centerSteps[i.centerSteps.length - 1];
5
+ return y(a, {
6
+ ...i,
7
+ family: e.display ? i.headingFamily : i.family,
8
+ size: e.size
9
+ }) / 2 + g;
10
+ }
11
+ function h(a, i, e, t) {
12
+ const r = Math.max(t - g * 2, 0), l = e.centerSteps, s = l.find(
13
+ (n) => y(a, {
14
+ ...e,
15
+ family: n.display ? e.headingFamily : e.family,
16
+ size: n.size
17
+ }) <= r
18
+ ) ?? l[l.length - 1], m = s.display ? e.headingFamily : e.family;
19
+ return {
20
+ family: m,
21
+ label: c(i, e, r),
22
+ lineHeight: s.lineHeight,
23
+ size: s.size,
24
+ value: c(a, { ...e, family: m, size: s.size }, r)
25
+ };
26
+ }
27
+ export {
28
+ p as centerTextRadius,
29
+ h as fitCenterText
30
+ };
31
+ //# sourceMappingURL=centerText.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"centerText.js","sources":["../../../../src/components/charts/core/centerText.ts"],"sourcesContent":["import { measureLabel, truncateToWidth, type LabelFont } from './measureText';\nimport { CHART_LABEL_OFFSET } from './spacing';\n\nexport interface CenterText {\n family: string;\n label: string;\n lineHeight: number;\n size: number;\n value: string;\n}\n\n/** Raio do vazio central em que o valor cabe inteiro no menor degrau da escala. */\nexport function centerTextRadius(value: string, font: LabelFont) {\n const menor = font.centerSteps[font.centerSteps.length - 1];\n const largura = measureLabel(value, {\n ...font,\n family: menor.display ? font.headingFamily : font.family,\n size: menor.size,\n });\n\n return largura / 2 + CHART_LABEL_OFFSET;\n}\n\n/**\n * Valor e rotulo do centro, no maior degrau da escala oficial em que o texto ainda cabe dentro do anel: o valor e um\n * KPI, e anel pequeno desce na escala em vez de sair dela. O SVG nao corta o que transborda; no ultimo degrau, corta-se.\n */\nexport function fitCenterText(\n value: string,\n label: string,\n font: LabelFont,\n innerDiameter: number,\n): CenterText {\n // A largura util e a corda do circulo interno na altura do texto, e nao o\n // diametro: no centro do anel o texto tem o diametro inteiro, mas o rotulo,\n // logo abaixo, tem menos.\n const disponivel = Math.max(innerDiameter - CHART_LABEL_OFFSET * 2, 0);\n\n const degraus = font.centerSteps;\n const degrau =\n degraus.find((candidato) =>\n measureLabel(value, {\n ...font,\n family: candidato.display ? font.headingFamily : font.family,\n size: candidato.size,\n }) <= disponivel,\n ) ?? degraus[degraus.length - 1];\n\n const family = degrau.display ? font.headingFamily : font.family;\n\n return {\n family,\n label: truncateToWidth(label, font, disponivel),\n lineHeight: degrau.lineHeight,\n size: degrau.size,\n value: truncateToWidth(value, { ...font, family, size: degrau.size }, disponivel),\n };\n}\n"],"names":["centerTextRadius","value","font","menor","measureLabel","CHART_LABEL_OFFSET","fitCenterText","label","innerDiameter","disponivel","degraus","degrau","candidato","family","truncateToWidth"],"mappings":";;AAYO,SAASA,EAAiBC,GAAeC,GAAiB;AAC/D,QAAMC,IAAQD,EAAK,YAAYA,EAAK,YAAY,SAAS,CAAC;AAO1D,SANgBE,EAAaH,GAAO;AAAA,IAClC,GAAGC;AAAA,IACH,QAAQC,EAAM,UAAUD,EAAK,gBAAgBA,EAAK;AAAA,IAClD,MAAMC,EAAM;AAAA,EAAA,CACb,IAEgB,IAAIE;AACvB;AAMO,SAASC,EACdL,GACAM,GACAL,GACAM,GACY;AAIZ,QAAMC,IAAa,KAAK,IAAID,IAAgBH,IAAqB,GAAG,CAAC,GAE/DK,IAAUR,EAAK,aACfS,IACJD,EAAQ;AAAA,IAAK,CAACE,MACZR,EAAaH,GAAO;AAAA,MAClB,GAAGC;AAAA,MACH,QAAQU,EAAU,UAAUV,EAAK,gBAAgBA,EAAK;AAAA,MACtD,MAAMU,EAAU;AAAA,IAAA,CACjB,KAAKH;AAAA,EAAA,KACHC,EAAQA,EAAQ,SAAS,CAAC,GAE3BG,IAASF,EAAO,UAAUT,EAAK,gBAAgBA,EAAK;AAE1D,SAAO;AAAA,IACL,QAAAW;AAAA,IACA,OAAOC,EAAgBP,GAAOL,GAAMO,CAAU;AAAA,IAC9C,YAAYE,EAAO;AAAA,IACnB,MAAMA,EAAO;AAAA,IACb,OAAOG,EAAgBb,GAAO,EAAE,GAAGC,GAAM,QAAAW,GAAQ,MAAMF,EAAO,KAAA,GAAQF,CAAU;AAAA,EAAA;AAEpF;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=[{display:!0,papel:"display-large",size:36,lineHeight:44},{display:!0,papel:"headline-medium",size:24,lineHeight:32},{display:!1,papel:"title",size:16,lineHeight:24}],r={centerSteps:c.map(({display:t,lineHeight:e,size:i})=>({display:t,lineHeight:e,size:i})),family:"sans-serif",headingFamily:"sans-serif",lineHeight:16,size:12},y=.58;function m(t){if(!t||typeof getComputedStyle!="function")return r;const e=getComputedStyle(t),i=e.getPropertyValue("--pl-font-body").trim()||e.fontFamily||r.family,n=e.getPropertyValue("--pl-font-heading").trim()||i,o=Number.parseFloat(e.getPropertyValue("--pl-type-caption-size"))||r.size,u=Number.parseFloat(e.getPropertyValue("--pl-type-caption-line-height")),p=l=>Number.parseFloat(e.getPropertyValue(`--pl-type-${l}`));return{centerSteps:c.map(l=>({display:l.display,lineHeight:p(`${l.papel}-line-height`)||l.lineHeight,size:p(`${l.papel}-size`)||l.size})),family:i,headingFamily:n,lineHeight:u||o*1.34,size:o}}let a;function f(){if(a===void 0)try{a=document.createElement("canvas").getContext("2d")}catch{a=null}return a}function s(t,e){const i=t.length*e.size*y,n=f();return n?(n.font=`${e.size}px ${e.family}`,n.measureText(t).width||i):i}function d(t,e){return t.reduce((i,n)=>Math.max(i,s(n,e)),0)}function g(t,e,i){if(i<=0)return"";if(s(t,e)<=i)return t;let n=t.length;for(;n>0&&s(`${t.slice(0,n)}…`,e)>i;)n-=1;return n>0?`${t.slice(0,n)}…`:""}exports.labelFontOf=m;exports.measureLabel=s;exports.truncateToWidth=g;exports.widestLabel=d;
2
+ //# sourceMappingURL=measureText.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"measureText.cjs","sources":["../../../../src/components/charts/core/measureText.ts"],"sourcesContent":["/** Um degrau da escala tipografica para o valor do centro de um anel. */\nexport interface CenterStep {\n display: boolean;\n lineHeight: number;\n size: number;\n}\n\nexport interface LabelFont {\n /** Degraus do valor do centro, do maior ao menor: display, headline e title. */\n centerSteps: readonly CenterStep[];\n family: string;\n /** Familia de display, usada onde o valor e um KPI. */\n headingFamily: string;\n lineHeight: number;\n size: number;\n}\n\n/** Os papeis de cada degrau do centro e o valor deles na referencia tipografica, para quando nao ha CSS. */\nconst DEGRAUS_DO_CENTRO = [\n { display: true, papel: 'display-large', size: 36, lineHeight: 44 },\n { display: true, papel: 'headline-medium', size: 24, lineHeight: 32 },\n { display: false, papel: 'title', size: 16, lineHeight: 24 },\n];\n\nconst PADRAO: LabelFont = {\n centerSteps: DEGRAUS_DO_CENTRO.map(({ display, lineHeight, size }) => ({ display, lineHeight, size })),\n family: 'sans-serif',\n headingFamily: 'sans-serif',\n lineHeight: 16,\n size: 12,\n};\n\n/** Proporcao entre a largura media de um caractere e o corpo da fonte. */\nconst LARGURA_POR_CARACTERE = 0.58;\n\n/**\n * Fonte dos rotulos, lida dos tokens no proprio elemento do grafico. Ler do\n * elemento evita repetir em JavaScript um valor que ja pertence ao CSS.\n */\nexport function labelFontOf(node: Element | null): LabelFont {\n if (!node || typeof getComputedStyle !== 'function') {\n return PADRAO;\n }\n\n const estilo = getComputedStyle(node);\n const family = estilo.getPropertyValue('--pl-font-body').trim() || estilo.fontFamily || PADRAO.family;\n const headingFamily = estilo.getPropertyValue('--pl-font-heading').trim() || family;\n const size = Number.parseFloat(estilo.getPropertyValue('--pl-type-caption-size')) || PADRAO.size;\n const lineHeight = Number.parseFloat(estilo.getPropertyValue('--pl-type-caption-line-height'));\n const token = (nome: string) => Number.parseFloat(estilo.getPropertyValue(`--pl-type-${nome}`));\n const centerSteps = DEGRAUS_DO_CENTRO.map((degrau) => ({\n display: degrau.display,\n lineHeight: token(`${degrau.papel}-line-height`) || degrau.lineHeight,\n size: token(`${degrau.papel}-size`) || degrau.size,\n }));\n\n return { centerSteps, family, headingFamily, lineHeight: lineHeight || size * 1.34, size };\n}\n\nlet contexto: CanvasRenderingContext2D | null | undefined;\n\nfunction contextoDeMedida() {\n if (contexto === undefined) {\n try {\n contexto = document.createElement('canvas').getContext('2d');\n } catch {\n contexto = null;\n }\n }\n\n return contexto;\n}\n\n/**\n * Largura do texto na fonte informada. O canvas mede sem inserir nada na\n * pagina; onde ele nao existe, a estimativa por caractere mantem o calculo\n * deterministico, em vez de devolver zero e amontoar os rotulos.\n */\nexport function measureLabel(text: string, font: LabelFont) {\n const estimativa = text.length * font.size * LARGURA_POR_CARACTERE;\n const medida = contextoDeMedida();\n\n if (!medida) {\n return estimativa;\n }\n\n medida.font = `${font.size}px ${font.family}`;\n\n return medida.measureText(text).width || estimativa;\n}\n\nexport function widestLabel(labels: readonly string[], font: LabelFont) {\n return labels.reduce((maior, rotulo) => Math.max(maior, measureLabel(rotulo, font)), 0);\n}\n\n/**\n * Texto cortado para caber na largura, com reticencia. Onde o desenho e o\n * proprio espaco — o centro de um anel, o retangulo de um mapa de area — nao ha\n * caixa que corte por conta propria.\n */\nexport function truncateToWidth(text: string, font: LabelFont, maxWidth: number) {\n if (maxWidth <= 0) {\n return '';\n }\n\n if (measureLabel(text, font) <= maxWidth) {\n return text;\n }\n\n let corte = text.length;\n\n while (corte > 0 && measureLabel(`${text.slice(0, corte)}…`, font) > maxWidth) {\n corte -= 1;\n }\n\n return corte > 0 ? `${text.slice(0, corte)}…` : '';\n}\n\n"],"names":["DEGRAUS_DO_CENTRO","PADRAO","display","lineHeight","size","LARGURA_POR_CARACTERE","labelFontOf","node","estilo","family","headingFamily","token","nome","degrau","contexto","contextoDeMedida","measureLabel","text","font","estimativa","medida","widestLabel","labels","maior","rotulo","truncateToWidth","maxWidth","corte"],"mappings":"gFAkBA,MAAMA,EAAoB,CACxB,CAAE,QAAS,GAAM,MAAO,gBAAiB,KAAM,GAAI,WAAY,EAAA,EAC/D,CAAE,QAAS,GAAM,MAAO,kBAAmB,KAAM,GAAI,WAAY,EAAA,EACjE,CAAE,QAAS,GAAO,MAAO,QAAS,KAAM,GAAI,WAAY,EAAA,CAC1D,EAEMC,EAAoB,CACxB,YAAaD,EAAkB,IAAI,CAAC,CAAE,QAAAE,EAAS,WAAAC,EAAY,KAAAC,CAAA,KAAY,CAAE,QAAAF,EAAS,WAAAC,EAAY,KAAAC,GAAO,EACrG,OAAQ,aACR,cAAe,aACf,WAAY,GACZ,KAAM,EACR,EAGMC,EAAwB,IAMvB,SAASC,EAAYC,EAAiC,CAC3D,GAAI,CAACA,GAAQ,OAAO,kBAAqB,WACvC,OAAON,EAGT,MAAMO,EAAS,iBAAiBD,CAAI,EAC9BE,EAASD,EAAO,iBAAiB,gBAAgB,EAAE,KAAA,GAAUA,EAAO,YAAcP,EAAO,OACzFS,EAAgBF,EAAO,iBAAiB,mBAAmB,EAAE,QAAUC,EACvEL,EAAO,OAAO,WAAWI,EAAO,iBAAiB,wBAAwB,CAAC,GAAKP,EAAO,KACtFE,EAAa,OAAO,WAAWK,EAAO,iBAAiB,+BAA+B,CAAC,EACvFG,EAASC,GAAiB,OAAO,WAAWJ,EAAO,iBAAiB,aAAaI,CAAI,EAAE,CAAC,EAO9F,MAAO,CAAE,YANWZ,EAAkB,IAAKa,IAAY,CACrD,QAASA,EAAO,QAChB,WAAYF,EAAM,GAAGE,EAAO,KAAK,cAAc,GAAKA,EAAO,WAC3D,KAAMF,EAAM,GAAGE,EAAO,KAAK,OAAO,GAAKA,EAAO,IAAA,EAC9C,EAEoB,OAAAJ,EAAQ,cAAAC,EAAe,WAAYP,GAAcC,EAAO,KAAM,KAAAA,CAAA,CACtF,CAEA,IAAIU,EAEJ,SAASC,GAAmB,CAC1B,GAAID,IAAa,OACf,GAAI,CACFA,EAAW,SAAS,cAAc,QAAQ,EAAE,WAAW,IAAI,CAC7D,MAAQ,CACNA,EAAW,IACb,CAGF,OAAOA,CACT,CAOO,SAASE,EAAaC,EAAcC,EAAiB,CAC1D,MAAMC,EAAaF,EAAK,OAASC,EAAK,KAAOb,EACvCe,EAASL,EAAA,EAEf,OAAKK,GAILA,EAAO,KAAO,GAAGF,EAAK,IAAI,MAAMA,EAAK,MAAM,GAEpCE,EAAO,YAAYH,CAAI,EAAE,OAASE,GALhCA,CAMX,CAEO,SAASE,EAAYC,EAA2BJ,EAAiB,CACtE,OAAOI,EAAO,OAAO,CAACC,EAAOC,IAAW,KAAK,IAAID,EAAOP,EAAaQ,EAAQN,CAAI,CAAC,EAAG,CAAC,CACxF,CAOO,SAASO,EAAgBR,EAAcC,EAAiBQ,EAAkB,CAC/E,GAAIA,GAAY,EACd,MAAO,GAGT,GAAIV,EAAaC,EAAMC,CAAI,GAAKQ,EAC9B,OAAOT,EAGT,IAAIU,EAAQV,EAAK,OAEjB,KAAOU,EAAQ,GAAKX,EAAa,GAAGC,EAAK,MAAM,EAAGU,CAAK,CAAC,IAAKT,CAAI,EAAIQ,GACnEC,GAAS,EAGX,OAAOA,EAAQ,EAAI,GAAGV,EAAK,MAAM,EAAGU,CAAK,CAAC,IAAM,EAClD"}
@@ -0,0 +1,55 @@
1
+ const c = [
2
+ { display: !0, papel: "display-large", size: 36, lineHeight: 44 },
3
+ { display: !0, papel: "headline-medium", size: 24, lineHeight: 32 },
4
+ { display: !1, papel: "title", size: 16, lineHeight: 24 }
5
+ ], s = {
6
+ centerSteps: c.map(({ display: t, lineHeight: e, size: i }) => ({ display: t, lineHeight: e, size: i })),
7
+ family: "sans-serif",
8
+ headingFamily: "sans-serif",
9
+ lineHeight: 16,
10
+ size: 12
11
+ }, y = 0.58;
12
+ function h(t) {
13
+ if (!t || typeof getComputedStyle != "function")
14
+ return s;
15
+ const e = getComputedStyle(t), i = e.getPropertyValue("--pl-font-body").trim() || e.fontFamily || s.family, n = e.getPropertyValue("--pl-font-heading").trim() || i, o = Number.parseFloat(e.getPropertyValue("--pl-type-caption-size")) || s.size, u = Number.parseFloat(e.getPropertyValue("--pl-type-caption-line-height")), p = (l) => Number.parseFloat(e.getPropertyValue(`--pl-type-${l}`));
16
+ return { centerSteps: c.map((l) => ({
17
+ display: l.display,
18
+ lineHeight: p(`${l.papel}-line-height`) || l.lineHeight,
19
+ size: p(`${l.papel}-size`) || l.size
20
+ })), family: i, headingFamily: n, lineHeight: u || o * 1.34, size: o };
21
+ }
22
+ let a;
23
+ function m() {
24
+ if (a === void 0)
25
+ try {
26
+ a = document.createElement("canvas").getContext("2d");
27
+ } catch {
28
+ a = null;
29
+ }
30
+ return a;
31
+ }
32
+ function r(t, e) {
33
+ const i = t.length * e.size * y, n = m();
34
+ return n ? (n.font = `${e.size}px ${e.family}`, n.measureText(t).width || i) : i;
35
+ }
36
+ function g(t, e) {
37
+ return t.reduce((i, n) => Math.max(i, r(n, e)), 0);
38
+ }
39
+ function d(t, e, i) {
40
+ if (i <= 0)
41
+ return "";
42
+ if (r(t, e) <= i)
43
+ return t;
44
+ let n = t.length;
45
+ for (; n > 0 && r(`${t.slice(0, n)}…`, e) > i; )
46
+ n -= 1;
47
+ return n > 0 ? `${t.slice(0, n)}…` : "";
48
+ }
49
+ export {
50
+ h as labelFontOf,
51
+ r as measureLabel,
52
+ d as truncateToWidth,
53
+ g as widestLabel
54
+ };
55
+ //# sourceMappingURL=measureText.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"measureText.js","sources":["../../../../src/components/charts/core/measureText.ts"],"sourcesContent":["/** Um degrau da escala tipografica para o valor do centro de um anel. */\nexport interface CenterStep {\n display: boolean;\n lineHeight: number;\n size: number;\n}\n\nexport interface LabelFont {\n /** Degraus do valor do centro, do maior ao menor: display, headline e title. */\n centerSteps: readonly CenterStep[];\n family: string;\n /** Familia de display, usada onde o valor e um KPI. */\n headingFamily: string;\n lineHeight: number;\n size: number;\n}\n\n/** Os papeis de cada degrau do centro e o valor deles na referencia tipografica, para quando nao ha CSS. */\nconst DEGRAUS_DO_CENTRO = [\n { display: true, papel: 'display-large', size: 36, lineHeight: 44 },\n { display: true, papel: 'headline-medium', size: 24, lineHeight: 32 },\n { display: false, papel: 'title', size: 16, lineHeight: 24 },\n];\n\nconst PADRAO: LabelFont = {\n centerSteps: DEGRAUS_DO_CENTRO.map(({ display, lineHeight, size }) => ({ display, lineHeight, size })),\n family: 'sans-serif',\n headingFamily: 'sans-serif',\n lineHeight: 16,\n size: 12,\n};\n\n/** Proporcao entre a largura media de um caractere e o corpo da fonte. */\nconst LARGURA_POR_CARACTERE = 0.58;\n\n/**\n * Fonte dos rotulos, lida dos tokens no proprio elemento do grafico. Ler do\n * elemento evita repetir em JavaScript um valor que ja pertence ao CSS.\n */\nexport function labelFontOf(node: Element | null): LabelFont {\n if (!node || typeof getComputedStyle !== 'function') {\n return PADRAO;\n }\n\n const estilo = getComputedStyle(node);\n const family = estilo.getPropertyValue('--pl-font-body').trim() || estilo.fontFamily || PADRAO.family;\n const headingFamily = estilo.getPropertyValue('--pl-font-heading').trim() || family;\n const size = Number.parseFloat(estilo.getPropertyValue('--pl-type-caption-size')) || PADRAO.size;\n const lineHeight = Number.parseFloat(estilo.getPropertyValue('--pl-type-caption-line-height'));\n const token = (nome: string) => Number.parseFloat(estilo.getPropertyValue(`--pl-type-${nome}`));\n const centerSteps = DEGRAUS_DO_CENTRO.map((degrau) => ({\n display: degrau.display,\n lineHeight: token(`${degrau.papel}-line-height`) || degrau.lineHeight,\n size: token(`${degrau.papel}-size`) || degrau.size,\n }));\n\n return { centerSteps, family, headingFamily, lineHeight: lineHeight || size * 1.34, size };\n}\n\nlet contexto: CanvasRenderingContext2D | null | undefined;\n\nfunction contextoDeMedida() {\n if (contexto === undefined) {\n try {\n contexto = document.createElement('canvas').getContext('2d');\n } catch {\n contexto = null;\n }\n }\n\n return contexto;\n}\n\n/**\n * Largura do texto na fonte informada. O canvas mede sem inserir nada na\n * pagina; onde ele nao existe, a estimativa por caractere mantem o calculo\n * deterministico, em vez de devolver zero e amontoar os rotulos.\n */\nexport function measureLabel(text: string, font: LabelFont) {\n const estimativa = text.length * font.size * LARGURA_POR_CARACTERE;\n const medida = contextoDeMedida();\n\n if (!medida) {\n return estimativa;\n }\n\n medida.font = `${font.size}px ${font.family}`;\n\n return medida.measureText(text).width || estimativa;\n}\n\nexport function widestLabel(labels: readonly string[], font: LabelFont) {\n return labels.reduce((maior, rotulo) => Math.max(maior, measureLabel(rotulo, font)), 0);\n}\n\n/**\n * Texto cortado para caber na largura, com reticencia. Onde o desenho e o\n * proprio espaco — o centro de um anel, o retangulo de um mapa de area — nao ha\n * caixa que corte por conta propria.\n */\nexport function truncateToWidth(text: string, font: LabelFont, maxWidth: number) {\n if (maxWidth <= 0) {\n return '';\n }\n\n if (measureLabel(text, font) <= maxWidth) {\n return text;\n }\n\n let corte = text.length;\n\n while (corte > 0 && measureLabel(`${text.slice(0, corte)}…`, font) > maxWidth) {\n corte -= 1;\n }\n\n return corte > 0 ? `${text.slice(0, corte)}…` : '';\n}\n\n"],"names":["DEGRAUS_DO_CENTRO","PADRAO","display","lineHeight","size","LARGURA_POR_CARACTERE","labelFontOf","node","estilo","family","headingFamily","token","nome","degrau","contexto","contextoDeMedida","measureLabel","text","font","estimativa","medida","widestLabel","labels","maior","rotulo","truncateToWidth","maxWidth","corte"],"mappings":"AAkBA,MAAMA,IAAoB;AAAA,EACxB,EAAE,SAAS,IAAM,OAAO,iBAAiB,MAAM,IAAI,YAAY,GAAA;AAAA,EAC/D,EAAE,SAAS,IAAM,OAAO,mBAAmB,MAAM,IAAI,YAAY,GAAA;AAAA,EACjE,EAAE,SAAS,IAAO,OAAO,SAAS,MAAM,IAAI,YAAY,GAAA;AAC1D,GAEMC,IAAoB;AAAA,EACxB,aAAaD,EAAkB,IAAI,CAAC,EAAE,SAAAE,GAAS,YAAAC,GAAY,MAAAC,EAAA,OAAY,EAAE,SAAAF,GAAS,YAAAC,GAAY,MAAAC,IAAO;AAAA,EACrG,QAAQ;AAAA,EACR,eAAe;AAAA,EACf,YAAY;AAAA,EACZ,MAAM;AACR,GAGMC,IAAwB;AAMvB,SAASC,EAAYC,GAAiC;AAC3D,MAAI,CAACA,KAAQ,OAAO,oBAAqB;AACvC,WAAON;AAGT,QAAMO,IAAS,iBAAiBD,CAAI,GAC9BE,IAASD,EAAO,iBAAiB,gBAAgB,EAAE,KAAA,KAAUA,EAAO,cAAcP,EAAO,QACzFS,IAAgBF,EAAO,iBAAiB,mBAAmB,EAAE,UAAUC,GACvEL,IAAO,OAAO,WAAWI,EAAO,iBAAiB,wBAAwB,CAAC,KAAKP,EAAO,MACtFE,IAAa,OAAO,WAAWK,EAAO,iBAAiB,+BAA+B,CAAC,GACvFG,IAAQ,CAACC,MAAiB,OAAO,WAAWJ,EAAO,iBAAiB,aAAaI,CAAI,EAAE,CAAC;AAO9F,SAAO,EAAE,aANWZ,EAAkB,IAAI,CAACa,OAAY;AAAA,IACrD,SAASA,EAAO;AAAA,IAChB,YAAYF,EAAM,GAAGE,EAAO,KAAK,cAAc,KAAKA,EAAO;AAAA,IAC3D,MAAMF,EAAM,GAAGE,EAAO,KAAK,OAAO,KAAKA,EAAO;AAAA,EAAA,EAC9C,GAEoB,QAAAJ,GAAQ,eAAAC,GAAe,YAAYP,KAAcC,IAAO,MAAM,MAAAA,EAAA;AACtF;AAEA,IAAIU;AAEJ,SAASC,IAAmB;AAC1B,MAAID,MAAa;AACf,QAAI;AACF,MAAAA,IAAW,SAAS,cAAc,QAAQ,EAAE,WAAW,IAAI;AAAA,IAC7D,QAAQ;AACN,MAAAA,IAAW;AAAA,IACb;AAGF,SAAOA;AACT;AAOO,SAASE,EAAaC,GAAcC,GAAiB;AAC1D,QAAMC,IAAaF,EAAK,SAASC,EAAK,OAAOb,GACvCe,IAASL,EAAA;AAEf,SAAKK,KAILA,EAAO,OAAO,GAAGF,EAAK,IAAI,MAAMA,EAAK,MAAM,IAEpCE,EAAO,YAAYH,CAAI,EAAE,SAASE,KALhCA;AAMX;AAEO,SAASE,EAAYC,GAA2BJ,GAAiB;AACtE,SAAOI,EAAO,OAAO,CAACC,GAAOC,MAAW,KAAK,IAAID,GAAOP,EAAaQ,GAAQN,CAAI,CAAC,GAAG,CAAC;AACxF;AAOO,SAASO,EAAgBR,GAAcC,GAAiBQ,GAAkB;AAC/E,MAAIA,KAAY;AACd,WAAO;AAGT,MAAIV,EAAaC,GAAMC,CAAI,KAAKQ;AAC9B,WAAOT;AAGT,MAAIU,IAAQV,EAAK;AAEjB,SAAOU,IAAQ,KAAKX,EAAa,GAAGC,EAAK,MAAM,GAAGU,CAAK,CAAC,KAAKT,CAAI,IAAIQ;AACnE,IAAAC,KAAS;AAGX,SAAOA,IAAQ,IAAI,GAAGV,EAAK,MAAM,GAAGU,CAAK,CAAC,MAAM;AAClD;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("d3-shape");function f(i){return i==="smooth"?c.curveMonotoneX:c.curveLinear}function v(i,r){return c.line().defined(e=>e!==null&&Number.isFinite(e.x)&&Number.isFinite(e.y)).x(e=>(e==null?void 0:e.x)??0).y(e=>(e==null?void 0:e.y)??0).curve(f(r))(i)??""}function L(i,r){return c.area().defined(e=>e!==null&&Number.isFinite(e.y0)&&Number.isFinite(e.y1)).x(e=>(e==null?void 0:e.x)??0).y0(e=>(e==null?void 0:e.y0)??0).y1(e=>(e==null?void 0:e.y1)??0).curve(f(r))(i)??""}function y(i,r,e,m,h){const M=Math.max(Math.min(e,m)/2,0),[u,n,s,l]=h.map(P=>Math.max(Math.min(P,M),0)),t=i+e,$=r+m;return[`M${i+u},${r}`,`L${t-n},${r}`,n?`Q${t},${r} ${t},${r+n}`:"",`L${t},${$-s}`,s?`Q${t},${$} ${t-s},${$}`:"",`L${i+l},${$}`,l?`Q${i},${$} ${i},${$-l}`:"",`L${i},${r+u}`,u?`Q${i},${r} ${i+u},${r}`:"","Z"].filter(Boolean).join("")}exports.areaPath=L;exports.linePath=v;exports.roundedBarPath=y;
2
+ //# sourceMappingURL=shapes.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shapes.cjs","sources":["../../../../src/components/charts/core/shapes.ts"],"sourcesContent":["import { area, curveLinear, curveMonotoneX, line } from 'd3-shape';\n\nexport type ChartCurve = 'smooth' | 'straight';\n\nexport interface ChartPoint {\n x: number;\n y: number;\n}\n\nexport interface ChartBand {\n x: number;\n y0: number;\n y1: number;\n}\n\nfunction curveOf(curve: ChartCurve) {\n return curve === 'smooth' ? curveMonotoneX : curveLinear;\n}\n\n/**\n * Caminho de uma curva, com interrupcao onde o valor nao existe. Emendar sobre\n * o buraco desenharia um trecho que o dado nao afirma.\n */\nexport function linePath(points: readonly (ChartPoint | null)[], curve: ChartCurve) {\n return (\n line<ChartPoint | null>()\n .defined((ponto) => ponto !== null && Number.isFinite(ponto.x) && Number.isFinite(ponto.y))\n .x((ponto) => ponto?.x ?? 0)\n .y((ponto) => ponto?.y ?? 0)\n .curve(curveOf(curve))(points) ?? ''\n );\n}\n\n/** Caminho da faixa entre duas linhas. A base varia quando as areas empilham. */\nexport function areaPath(bands: readonly (ChartBand | null)[], curve: ChartCurve) {\n return (\n area<ChartBand | null>()\n .defined((banda) => banda !== null && Number.isFinite(banda.y0) && Number.isFinite(banda.y1))\n .x((banda) => banda?.x ?? 0)\n .y0((banda) => banda?.y0 ?? 0)\n .y1((banda) => banda?.y1 ?? 0)\n .curve(curveOf(curve))(bands) ?? ''\n );\n}\n\n/** Raios dos quatro cantos, no sentido horario a partir do superior esquerdo. */\nexport type CornerRadii = [number, number, number, number];\n\n/**\n * Retangulo com raio por canto, arredondado por curva quadratica com o controle\n * no proprio canto. O atributo `rx` arredonda os quatro de uma vez, e numa barra\n * empilhada isso separa os segmentos: a pilha precisa das duas pontas\n * arredondadas e do meio reto, para parecer uma barra so.\n */\nexport function roundedBarPath(\n x: number,\n y: number,\n width: number,\n height: number,\n radii: CornerRadii,\n) {\n const limite = Math.max(Math.min(width, height) / 2, 0);\n const [se, sd, id, ie] = radii.map((raio) => Math.max(Math.min(raio, limite), 0));\n const direita = x + width;\n const base = y + height;\n\n // Todos os comandos levam par de coordenadas, sem `H` nem `V`: o caminho fica\n // uniforme e as suas medidas saem dele sem interpretar comando a comando.\n return [\n `M${x + se},${y}`,\n `L${direita - sd},${y}`,\n sd ? `Q${direita},${y} ${direita},${y + sd}` : '',\n `L${direita},${base - id}`,\n id ? `Q${direita},${base} ${direita - id},${base}` : '',\n `L${x + ie},${base}`,\n ie ? `Q${x},${base} ${x},${base - ie}` : '',\n `L${x},${y + se}`,\n se ? `Q${x},${y} ${x + se},${y}` : '',\n 'Z',\n ]\n .filter(Boolean)\n .join('');\n}\n"],"names":["curveOf","curve","curveMonotoneX","curveLinear","linePath","points","line","ponto","areaPath","bands","area","banda","roundedBarPath","x","y","width","height","radii","limite","se","sd","id","ie","raio","direita","base"],"mappings":"4GAeA,SAASA,EAAQC,EAAmB,CAClC,OAAOA,IAAU,SAAWC,EAAAA,eAAiBC,EAAAA,WAC/C,CAMO,SAASC,EAASC,EAAwCJ,EAAmB,CAClF,OACEK,EAAAA,OACG,QAASC,GAAUA,IAAU,MAAQ,OAAO,SAASA,EAAM,CAAC,GAAK,OAAO,SAASA,EAAM,CAAC,CAAC,EACzF,EAAGA,IAAUA,GAAA,YAAAA,EAAO,IAAK,CAAC,EAC1B,EAAGA,IAAUA,GAAA,YAAAA,EAAO,IAAK,CAAC,EAC1B,MAAMP,EAAQC,CAAK,CAAC,EAAEI,CAAM,GAAK,EAExC,CAGO,SAASG,EAASC,EAAsCR,EAAmB,CAChF,OACES,EAAAA,KAAA,EACG,QAASC,GAAUA,IAAU,MAAQ,OAAO,SAASA,EAAM,EAAE,GAAK,OAAO,SAASA,EAAM,EAAE,CAAC,EAC3F,EAAGA,IAAUA,GAAA,YAAAA,EAAO,IAAK,CAAC,EAC1B,GAAIA,IAAUA,GAAA,YAAAA,EAAO,KAAM,CAAC,EAC5B,GAAIA,IAAUA,GAAA,YAAAA,EAAO,KAAM,CAAC,EAC5B,MAAMX,EAAQC,CAAK,CAAC,EAAEQ,CAAK,GAAK,EAEvC,CAWO,SAASG,EACdC,EACAC,EACAC,EACAC,EACAC,EACA,CACA,MAAMC,EAAS,KAAK,IAAI,KAAK,IAAIH,EAAOC,CAAM,EAAI,EAAG,CAAC,EAChD,CAACG,EAAIC,EAAIC,EAAIC,CAAE,EAAIL,EAAM,IAAKM,GAAS,KAAK,IAAI,KAAK,IAAIA,EAAML,CAAM,EAAG,CAAC,CAAC,EAC1EM,EAAUX,EAAIE,EACdU,EAAOX,EAAIE,EAIjB,MAAO,CACL,IAAIH,EAAIM,CAAE,IAAIL,CAAC,GACf,IAAIU,EAAUJ,CAAE,IAAIN,CAAC,GACrBM,EAAK,IAAII,CAAO,IAAIV,CAAC,IAAIU,CAAO,IAAIV,EAAIM,CAAE,GAAK,GAC/C,IAAII,CAAO,IAAIC,EAAOJ,CAAE,GACxBA,EAAK,IAAIG,CAAO,IAAIC,CAAI,IAAID,EAAUH,CAAE,IAAII,CAAI,GAAK,GACrD,IAAIZ,EAAIS,CAAE,IAAIG,CAAI,GAClBH,EAAK,IAAIT,CAAC,IAAIY,CAAI,IAAIZ,CAAC,IAAIY,EAAOH,CAAE,GAAK,GACzC,IAAIT,CAAC,IAAIC,EAAIK,CAAE,GACfA,EAAK,IAAIN,CAAC,IAAIC,CAAC,IAAID,EAAIM,CAAE,IAAIL,CAAC,GAAK,GACnC,GAAA,EAEC,OAAO,OAAO,EACd,KAAK,EAAE,CACZ"}
@@ -0,0 +1,31 @@
1
+ import { area as v, line as L, curveMonotoneX as F, curveLinear as N } from "d3-shape";
2
+ function f(i) {
3
+ return i === "smooth" ? F : N;
4
+ }
5
+ function P(i, r) {
6
+ return L().defined((e) => e !== null && Number.isFinite(e.x) && Number.isFinite(e.y)).x((e) => (e == null ? void 0 : e.x) ?? 0).y((e) => (e == null ? void 0 : e.y) ?? 0).curve(f(r))(i) ?? "";
7
+ }
8
+ function y(i, r) {
9
+ return v().defined((e) => e !== null && Number.isFinite(e.y0) && Number.isFinite(e.y1)).x((e) => (e == null ? void 0 : e.x) ?? 0).y0((e) => (e == null ? void 0 : e.y0) ?? 0).y1((e) => (e == null ? void 0 : e.y1) ?? 0).curve(f(r))(i) ?? "";
10
+ }
11
+ function B(i, r, e, n, l) {
12
+ const M = Math.max(Math.min(e, n) / 2, 0), [t, c, m, s] = l.map((h) => Math.max(Math.min(h, M), 0)), $ = i + e, u = r + n;
13
+ return [
14
+ `M${i + t},${r}`,
15
+ `L${$ - c},${r}`,
16
+ c ? `Q${$},${r} ${$},${r + c}` : "",
17
+ `L${$},${u - m}`,
18
+ m ? `Q${$},${u} ${$ - m},${u}` : "",
19
+ `L${i + s},${u}`,
20
+ s ? `Q${i},${u} ${i},${u - s}` : "",
21
+ `L${i},${r + t}`,
22
+ t ? `Q${i},${r} ${i + t},${r}` : "",
23
+ "Z"
24
+ ].filter(Boolean).join("");
25
+ }
26
+ export {
27
+ y as areaPath,
28
+ P as linePath,
29
+ B as roundedBarPath
30
+ };
31
+ //# sourceMappingURL=shapes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shapes.js","sources":["../../../../src/components/charts/core/shapes.ts"],"sourcesContent":["import { area, curveLinear, curveMonotoneX, line } from 'd3-shape';\n\nexport type ChartCurve = 'smooth' | 'straight';\n\nexport interface ChartPoint {\n x: number;\n y: number;\n}\n\nexport interface ChartBand {\n x: number;\n y0: number;\n y1: number;\n}\n\nfunction curveOf(curve: ChartCurve) {\n return curve === 'smooth' ? curveMonotoneX : curveLinear;\n}\n\n/**\n * Caminho de uma curva, com interrupcao onde o valor nao existe. Emendar sobre\n * o buraco desenharia um trecho que o dado nao afirma.\n */\nexport function linePath(points: readonly (ChartPoint | null)[], curve: ChartCurve) {\n return (\n line<ChartPoint | null>()\n .defined((ponto) => ponto !== null && Number.isFinite(ponto.x) && Number.isFinite(ponto.y))\n .x((ponto) => ponto?.x ?? 0)\n .y((ponto) => ponto?.y ?? 0)\n .curve(curveOf(curve))(points) ?? ''\n );\n}\n\n/** Caminho da faixa entre duas linhas. A base varia quando as areas empilham. */\nexport function areaPath(bands: readonly (ChartBand | null)[], curve: ChartCurve) {\n return (\n area<ChartBand | null>()\n .defined((banda) => banda !== null && Number.isFinite(banda.y0) && Number.isFinite(banda.y1))\n .x((banda) => banda?.x ?? 0)\n .y0((banda) => banda?.y0 ?? 0)\n .y1((banda) => banda?.y1 ?? 0)\n .curve(curveOf(curve))(bands) ?? ''\n );\n}\n\n/** Raios dos quatro cantos, no sentido horario a partir do superior esquerdo. */\nexport type CornerRadii = [number, number, number, number];\n\n/**\n * Retangulo com raio por canto, arredondado por curva quadratica com o controle\n * no proprio canto. O atributo `rx` arredonda os quatro de uma vez, e numa barra\n * empilhada isso separa os segmentos: a pilha precisa das duas pontas\n * arredondadas e do meio reto, para parecer uma barra so.\n */\nexport function roundedBarPath(\n x: number,\n y: number,\n width: number,\n height: number,\n radii: CornerRadii,\n) {\n const limite = Math.max(Math.min(width, height) / 2, 0);\n const [se, sd, id, ie] = radii.map((raio) => Math.max(Math.min(raio, limite), 0));\n const direita = x + width;\n const base = y + height;\n\n // Todos os comandos levam par de coordenadas, sem `H` nem `V`: o caminho fica\n // uniforme e as suas medidas saem dele sem interpretar comando a comando.\n return [\n `M${x + se},${y}`,\n `L${direita - sd},${y}`,\n sd ? `Q${direita},${y} ${direita},${y + sd}` : '',\n `L${direita},${base - id}`,\n id ? `Q${direita},${base} ${direita - id},${base}` : '',\n `L${x + ie},${base}`,\n ie ? `Q${x},${base} ${x},${base - ie}` : '',\n `L${x},${y + se}`,\n se ? `Q${x},${y} ${x + se},${y}` : '',\n 'Z',\n ]\n .filter(Boolean)\n .join('');\n}\n"],"names":["curveOf","curve","curveMonotoneX","curveLinear","linePath","points","line","ponto","areaPath","bands","area","banda","roundedBarPath","x","y","width","height","radii","limite","se","sd","id","ie","raio","direita","base"],"mappings":";AAeA,SAASA,EAAQC,GAAmB;AAClC,SAAOA,MAAU,WAAWC,IAAiBC;AAC/C;AAMO,SAASC,EAASC,GAAwCJ,GAAmB;AAClF,SACEK,IACG,QAAQ,CAACC,MAAUA,MAAU,QAAQ,OAAO,SAASA,EAAM,CAAC,KAAK,OAAO,SAASA,EAAM,CAAC,CAAC,EACzF,EAAE,CAACA,OAAUA,KAAA,gBAAAA,EAAO,MAAK,CAAC,EAC1B,EAAE,CAACA,OAAUA,KAAA,gBAAAA,EAAO,MAAK,CAAC,EAC1B,MAAMP,EAAQC,CAAK,CAAC,EAAEI,CAAM,KAAK;AAExC;AAGO,SAASG,EAASC,GAAsCR,GAAmB;AAChF,SACES,EAAA,EACG,QAAQ,CAACC,MAAUA,MAAU,QAAQ,OAAO,SAASA,EAAM,EAAE,KAAK,OAAO,SAASA,EAAM,EAAE,CAAC,EAC3F,EAAE,CAACA,OAAUA,KAAA,gBAAAA,EAAO,MAAK,CAAC,EAC1B,GAAG,CAACA,OAAUA,KAAA,gBAAAA,EAAO,OAAM,CAAC,EAC5B,GAAG,CAACA,OAAUA,KAAA,gBAAAA,EAAO,OAAM,CAAC,EAC5B,MAAMX,EAAQC,CAAK,CAAC,EAAEQ,CAAK,KAAK;AAEvC;AAWO,SAASG,EACdC,GACAC,GACAC,GACAC,GACAC,GACA;AACA,QAAMC,IAAS,KAAK,IAAI,KAAK,IAAIH,GAAOC,CAAM,IAAI,GAAG,CAAC,GAChD,CAACG,GAAIC,GAAIC,GAAIC,CAAE,IAAIL,EAAM,IAAI,CAACM,MAAS,KAAK,IAAI,KAAK,IAAIA,GAAML,CAAM,GAAG,CAAC,CAAC,GAC1EM,IAAUX,IAAIE,GACdU,IAAOX,IAAIE;AAIjB,SAAO;AAAA,IACL,IAAIH,IAAIM,CAAE,IAAIL,CAAC;AAAA,IACf,IAAIU,IAAUJ,CAAE,IAAIN,CAAC;AAAA,IACrBM,IAAK,IAAII,CAAO,IAAIV,CAAC,IAAIU,CAAO,IAAIV,IAAIM,CAAE,KAAK;AAAA,IAC/C,IAAII,CAAO,IAAIC,IAAOJ,CAAE;AAAA,IACxBA,IAAK,IAAIG,CAAO,IAAIC,CAAI,IAAID,IAAUH,CAAE,IAAII,CAAI,KAAK;AAAA,IACrD,IAAIZ,IAAIS,CAAE,IAAIG,CAAI;AAAA,IAClBH,IAAK,IAAIT,CAAC,IAAIY,CAAI,IAAIZ,CAAC,IAAIY,IAAOH,CAAE,KAAK;AAAA,IACzC,IAAIT,CAAC,IAAIC,IAAIK,CAAE;AAAA,IACfA,IAAK,IAAIN,CAAC,IAAIC,CAAC,IAAID,IAAIM,CAAE,IAAIL,CAAC,KAAK;AAAA,IACnC;AAAA,EAAA,EAEC,OAAO,OAAO,EACd,KAAK,EAAE;AACZ;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});function u(r){return Number.isFinite(r.value)?Math.max(r.value,0):0}function p(r,{label:c,threshold:n}){const a=r.reduce((e,t)=>e+u(t),0);if(n<=0||a<=0)return r;const i=e=>Number.isFinite(e.value)&&u(e)/a<n,l=r.filter(i);if(l.length<2)return r;const f={intent:"neutral",label:c,value:l.reduce((e,t)=>e+u(t),0)};let o=!1;return r.flatMap(e=>i(e)?o?[]:(o=!0,[f]):[e])}exports.groupSmallSlices=p;
2
+ //# sourceMappingURL=slices.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slices.cjs","sources":["../../../../src/components/charts/core/slices.ts"],"sourcesContent":["import type { SeriesAppearance } from '../palette';\n\nexport interface ChartSlice extends SeriesAppearance {\n label: string;\n value: number;\n}\n\nexport interface GroupSmallSlicesOptions {\n label: string;\n threshold: number;\n}\n\n/**\n * Reune as fatias pequenas numa so. Abaixo de um limiar a fatia deixa de ser\n * legivel no anel e ainda ocupa uma linha da legenda; o agrupamento e a regra\n * de percentual minimo da referencia.\n *\n * A fatia reunida entra no lugar da primeira pequena, para que a ordem das\n * demais, que a legenda repete, permaneca a mesma.\n */\n/** Valor que a fatia ocupa no anel. Invalido tem o destino do ausente; um so desligava o agrupamento. */\nfunction ocupacao(fatia: ChartSlice) {\n return Number.isFinite(fatia.value) ? Math.max(fatia.value, 0) : 0;\n}\n\nexport function groupSmallSlices(\n slices: readonly ChartSlice[],\n { label, threshold }: GroupSmallSlicesOptions,\n): readonly ChartSlice[] {\n const total = slices.reduce((soma, fatia) => soma + ocupacao(fatia), 0);\n\n if (threshold <= 0 || total <= 0) {\n return slices;\n }\n\n const pequena = (fatia: ChartSlice) => Number.isFinite(fatia.value) && ocupacao(fatia) / total < threshold;\n const pequenas = slices.filter(pequena);\n\n if (pequenas.length < 2) {\n return slices;\n }\n\n const reunida: ChartSlice = {\n intent: 'neutral',\n label,\n value: pequenas.reduce((soma, fatia) => soma + ocupacao(fatia), 0),\n };\n\n let inserida = false;\n\n return slices.flatMap((fatia) => {\n if (!pequena(fatia)) {\n return [fatia];\n }\n\n if (inserida) {\n return [];\n }\n\n inserida = true;\n\n return [reunida];\n });\n}\n"],"names":["ocupacao","fatia","groupSmallSlices","slices","label","threshold","total","soma","pequena","pequenas","reunida","inserida"],"mappings":"gFAqBA,SAASA,EAASC,EAAmB,CACnC,OAAO,OAAO,SAASA,EAAM,KAAK,EAAI,KAAK,IAAIA,EAAM,MAAO,CAAC,EAAI,CACnE,CAEO,SAASC,EACdC,EACA,CAAE,MAAAC,EAAO,UAAAC,GACc,CACvB,MAAMC,EAAQH,EAAO,OAAO,CAACI,EAAMN,IAAUM,EAAOP,EAASC,CAAK,EAAG,CAAC,EAEtE,GAAII,GAAa,GAAKC,GAAS,EAC7B,OAAOH,EAGT,MAAMK,EAAWP,GAAsB,OAAO,SAASA,EAAM,KAAK,GAAKD,EAASC,CAAK,EAAIK,EAAQD,EAC3FI,EAAWN,EAAO,OAAOK,CAAO,EAEtC,GAAIC,EAAS,OAAS,EACpB,OAAON,EAGT,MAAMO,EAAsB,CAC1B,OAAQ,UACR,MAAAN,EACA,MAAOK,EAAS,OAAO,CAACF,EAAMN,IAAUM,EAAOP,EAASC,CAAK,EAAG,CAAC,CAAA,EAGnE,IAAIU,EAAW,GAEf,OAAOR,EAAO,QAASF,GAChBO,EAAQP,CAAK,EAIdU,EACK,CAAA,GAGTA,EAAW,GAEJ,CAACD,CAAO,GATN,CAACT,CAAK,CAUhB,CACH"}