@plenustech/design-system 0.2.2 → 0.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (508) hide show
  1. package/dist/components/actions/ButtonTile/ButtonTile.cjs +2 -0
  2. package/dist/components/actions/ButtonTile/ButtonTile.cjs.map +1 -0
  3. package/dist/components/actions/ButtonTile/ButtonTile.js +23 -0
  4. package/dist/components/actions/ButtonTile/ButtonTile.js.map +1 -0
  5. package/dist/components/actions/ButtonTile/ButtonTile.module.css.cjs +2 -0
  6. package/dist/components/actions/ButtonTile/ButtonTile.module.css.cjs.map +1 -0
  7. package/dist/components/actions/ButtonTile/ButtonTile.module.css.js +16 -0
  8. package/dist/components/actions/ButtonTile/ButtonTile.module.css.js.map +1 -0
  9. package/dist/components/actions/Toolbar/Toolbar.cjs +2 -0
  10. package/dist/components/actions/Toolbar/Toolbar.cjs.map +1 -0
  11. package/dist/components/actions/Toolbar/Toolbar.js +118 -0
  12. package/dist/components/actions/Toolbar/Toolbar.js.map +1 -0
  13. package/dist/components/actions/Toolbar/Toolbar.module.css.cjs +2 -0
  14. package/dist/components/actions/Toolbar/Toolbar.module.css.cjs.map +1 -0
  15. package/dist/components/actions/Toolbar/Toolbar.module.css.js +20 -0
  16. package/dist/components/actions/Toolbar/Toolbar.module.css.js.map +1 -0
  17. package/dist/components/charts/ChartArea/ChartArea.cjs +1 -1
  18. package/dist/components/charts/ChartArea/ChartArea.cjs.map +1 -1
  19. package/dist/components/charts/ChartArea/ChartArea.js +196 -148
  20. package/dist/components/charts/ChartArea/ChartArea.js.map +1 -1
  21. package/dist/components/charts/ChartArea/ChartArea.module.css.cjs +1 -1
  22. package/dist/components/charts/ChartArea/ChartArea.module.css.js +12 -10
  23. package/dist/components/charts/ChartArea/ChartArea.module.css.js.map +1 -1
  24. package/dist/components/charts/ChartBar/ChartBar.cjs +1 -1
  25. package/dist/components/charts/ChartBar/ChartBar.cjs.map +1 -1
  26. package/dist/components/charts/ChartBar/ChartBar.js +168 -145
  27. package/dist/components/charts/ChartBar/ChartBar.js.map +1 -1
  28. package/dist/components/charts/ChartBar/ChartBar.module.css.cjs +1 -1
  29. package/dist/components/charts/ChartBar/ChartBar.module.css.js +12 -10
  30. package/dist/components/charts/ChartBar/ChartBar.module.css.js.map +1 -1
  31. package/dist/components/charts/ChartCombo/ChartCombo.cjs +1 -1
  32. package/dist/components/charts/ChartCombo/ChartCombo.cjs.map +1 -1
  33. package/dist/components/charts/ChartCombo/ChartCombo.js +179 -154
  34. package/dist/components/charts/ChartCombo/ChartCombo.js.map +1 -1
  35. package/dist/components/charts/ChartCombo/ChartCombo.module.css.cjs +1 -1
  36. package/dist/components/charts/ChartCombo/ChartCombo.module.css.js +16 -14
  37. package/dist/components/charts/ChartCombo/ChartCombo.module.css.js.map +1 -1
  38. package/dist/components/charts/ChartDonut/ChartDonut.cjs +1 -1
  39. package/dist/components/charts/ChartDonut/ChartDonut.cjs.map +1 -1
  40. package/dist/components/charts/ChartDonut/ChartDonut.js +72 -61
  41. package/dist/components/charts/ChartDonut/ChartDonut.js.map +1 -1
  42. package/dist/components/charts/ChartGauge/ChartGauge.cjs +2 -0
  43. package/dist/components/charts/ChartGauge/ChartGauge.cjs.map +1 -0
  44. package/dist/components/charts/ChartGauge/ChartGauge.js +307 -0
  45. package/dist/components/charts/ChartGauge/ChartGauge.js.map +1 -0
  46. package/dist/components/charts/ChartGauge/ChartGauge.module.css.cjs +2 -0
  47. package/dist/components/charts/ChartGauge/ChartGauge.module.css.cjs.map +1 -0
  48. package/dist/components/charts/ChartGauge/ChartGauge.module.css.js +76 -0
  49. package/dist/components/charts/ChartGauge/ChartGauge.module.css.js.map +1 -0
  50. package/dist/components/charts/ChartGauge/gaugeLayout.cjs +2 -0
  51. package/dist/components/charts/ChartGauge/gaugeLayout.cjs.map +1 -0
  52. package/dist/components/charts/ChartGauge/gaugeLayout.js +107 -0
  53. package/dist/components/charts/ChartGauge/gaugeLayout.js.map +1 -0
  54. package/dist/components/charts/ChartGauge/gaugeReading.cjs +2 -0
  55. package/dist/components/charts/ChartGauge/gaugeReading.cjs.map +1 -0
  56. package/dist/components/charts/ChartGauge/gaugeReading.js +112 -0
  57. package/dist/components/charts/ChartGauge/gaugeReading.js.map +1 -0
  58. package/dist/components/charts/ChartGauge/gaugeScale.cjs +2 -0
  59. package/dist/components/charts/ChartGauge/gaugeScale.cjs.map +1 -0
  60. package/dist/components/charts/ChartGauge/gaugeScale.js +57 -0
  61. package/dist/components/charts/ChartGauge/gaugeScale.js.map +1 -0
  62. package/dist/components/charts/ChartLine/ChartLine.cjs +1 -1
  63. package/dist/components/charts/ChartLine/ChartLine.cjs.map +1 -1
  64. package/dist/components/charts/ChartLine/ChartLine.js +196 -143
  65. package/dist/components/charts/ChartLine/ChartLine.js.map +1 -1
  66. package/dist/components/charts/ChartLine/ChartLine.module.css.cjs +1 -1
  67. package/dist/components/charts/ChartLine/ChartLine.module.css.js +16 -14
  68. package/dist/components/charts/ChartLine/ChartLine.module.css.js.map +1 -1
  69. package/dist/components/charts/ChartMap/ChartMap.cjs +2 -0
  70. package/dist/components/charts/ChartMap/ChartMap.cjs.map +1 -0
  71. package/dist/components/charts/ChartMap/ChartMap.js +523 -0
  72. package/dist/components/charts/ChartMap/ChartMap.js.map +1 -0
  73. package/dist/components/charts/ChartMap/ChartMap.module.css.cjs +2 -0
  74. package/dist/components/charts/ChartMap/ChartMap.module.css.cjs.map +1 -0
  75. package/dist/components/charts/ChartMap/ChartMap.module.css.js +124 -0
  76. package/dist/components/charts/ChartMap/ChartMap.module.css.js.map +1 -0
  77. package/dist/components/charts/ChartMap/ChartMapLegend.cjs +2 -0
  78. package/dist/components/charts/ChartMap/ChartMapLegend.cjs.map +1 -0
  79. package/dist/components/charts/ChartMap/ChartMapLegend.js +102 -0
  80. package/dist/components/charts/ChartMap/ChartMapLegend.js.map +1 -0
  81. package/dist/components/charts/ChartMap/ChartMapTable.cjs +2 -0
  82. package/dist/components/charts/ChartMap/ChartMapTable.cjs.map +1 -0
  83. package/dist/components/charts/ChartMap/ChartMapTable.js +118 -0
  84. package/dist/components/charts/ChartMap/ChartMapTable.js.map +1 -0
  85. package/dist/components/charts/ChartMap/mapGeometry.cjs +2 -0
  86. package/dist/components/charts/ChartMap/mapGeometry.cjs.map +1 -0
  87. package/dist/components/charts/ChartMap/mapGeometry.js +113 -0
  88. package/dist/components/charts/ChartMap/mapGeometry.js.map +1 -0
  89. package/dist/components/charts/ChartMap/mapLabels.cjs +2 -0
  90. package/dist/components/charts/ChartMap/mapLabels.cjs.map +1 -0
  91. package/dist/components/charts/ChartMap/mapLabels.js +80 -0
  92. package/dist/components/charts/ChartMap/mapLabels.js.map +1 -0
  93. package/dist/components/charts/ChartMap/mapScales.cjs +2 -0
  94. package/dist/components/charts/ChartMap/mapScales.cjs.map +1 -0
  95. package/dist/components/charts/ChartMap/mapScales.js +131 -0
  96. package/dist/components/charts/ChartMap/mapScales.js.map +1 -0
  97. package/dist/components/charts/ChartMap/polylabel.cjs +2 -0
  98. package/dist/components/charts/ChartMap/polylabel.cjs.map +1 -0
  99. package/dist/components/charts/ChartMap/polylabel.js +50 -0
  100. package/dist/components/charts/ChartMap/polylabel.js.map +1 -0
  101. package/dist/components/charts/ChartPie/ChartPie.cjs +1 -1
  102. package/dist/components/charts/ChartPie/ChartPie.cjs.map +1 -1
  103. package/dist/components/charts/ChartPie/ChartPie.js +71 -60
  104. package/dist/components/charts/ChartPie/ChartPie.js.map +1 -1
  105. package/dist/components/charts/ChartRadial/ChartRadial.cjs +1 -1
  106. package/dist/components/charts/ChartRadial/ChartRadial.cjs.map +1 -1
  107. package/dist/components/charts/ChartRadial/ChartRadial.js +101 -84
  108. package/dist/components/charts/ChartRadial/ChartRadial.js.map +1 -1
  109. package/dist/components/charts/ChartSankey/ChartSankey.cjs +1 -1
  110. package/dist/components/charts/ChartSankey/ChartSankey.cjs.map +1 -1
  111. package/dist/components/charts/ChartSankey/ChartSankey.js +148 -125
  112. package/dist/components/charts/ChartSankey/ChartSankey.js.map +1 -1
  113. package/dist/components/charts/ChartScatter/ChartScatter.cjs +1 -1
  114. package/dist/components/charts/ChartScatter/ChartScatter.cjs.map +1 -1
  115. package/dist/components/charts/ChartScatter/ChartScatter.js +138 -106
  116. package/dist/components/charts/ChartScatter/ChartScatter.js.map +1 -1
  117. package/dist/components/charts/ChartScatter/ChartScatter.module.css.cjs +1 -1
  118. package/dist/components/charts/ChartScatter/ChartScatter.module.css.js +3 -3
  119. package/dist/components/charts/ChartSunburst/ChartSunburst.cjs +1 -1
  120. package/dist/components/charts/ChartSunburst/ChartSunburst.cjs.map +1 -1
  121. package/dist/components/charts/ChartSunburst/ChartSunburst.js +115 -100
  122. package/dist/components/charts/ChartSunburst/ChartSunburst.js.map +1 -1
  123. package/dist/components/charts/ChartTimeline/ChartTimeline.cjs +2 -0
  124. package/dist/components/charts/ChartTimeline/ChartTimeline.cjs.map +1 -0
  125. package/dist/components/charts/ChartTimeline/ChartTimeline.js +703 -0
  126. package/dist/components/charts/ChartTimeline/ChartTimeline.js.map +1 -0
  127. package/dist/components/charts/ChartTimeline/ChartTimeline.module.css.cjs +2 -0
  128. package/dist/components/charts/ChartTimeline/ChartTimeline.module.css.cjs.map +1 -0
  129. package/dist/components/charts/ChartTimeline/ChartTimeline.module.css.js +124 -0
  130. package/dist/components/charts/ChartTimeline/ChartTimeline.module.css.js.map +1 -0
  131. package/dist/components/charts/ChartTimeline/ChartTimelineTable.cjs +2 -0
  132. package/dist/components/charts/ChartTimeline/ChartTimelineTable.cjs.map +1 -0
  133. package/dist/components/charts/ChartTimeline/ChartTimelineTable.js +42 -0
  134. package/dist/components/charts/ChartTimeline/ChartTimelineTable.js.map +1 -0
  135. package/dist/components/charts/ChartTimeline/timelineLayout.cjs +2 -0
  136. package/dist/components/charts/ChartTimeline/timelineLayout.cjs.map +1 -0
  137. package/dist/components/charts/ChartTimeline/timelineLayout.js +109 -0
  138. package/dist/components/charts/ChartTimeline/timelineLayout.js.map +1 -0
  139. package/dist/components/charts/ChartTimeline/timelineTime.cjs +2 -0
  140. package/dist/components/charts/ChartTimeline/timelineTime.cjs.map +1 -0
  141. package/dist/components/charts/ChartTimeline/timelineTime.js +91 -0
  142. package/dist/components/charts/ChartTimeline/timelineTime.js.map +1 -0
  143. package/dist/components/charts/ChartTimeline/timelineTooltip.cjs +2 -0
  144. package/dist/components/charts/ChartTimeline/timelineTooltip.cjs.map +1 -0
  145. package/dist/components/charts/ChartTimeline/timelineTooltip.js +77 -0
  146. package/dist/components/charts/ChartTimeline/timelineTooltip.js.map +1 -0
  147. package/dist/components/charts/ChartTooltip/ChartTooltip.cjs +1 -1
  148. package/dist/components/charts/ChartTooltip/ChartTooltip.cjs.map +1 -1
  149. package/dist/components/charts/ChartTooltip/ChartTooltip.js +1 -1
  150. package/dist/components/charts/ChartTooltip/ChartTooltip.js.map +1 -1
  151. package/dist/components/charts/ChartTreemap/ChartTreemap.cjs +1 -1
  152. package/dist/components/charts/ChartTreemap/ChartTreemap.cjs.map +1 -1
  153. package/dist/components/charts/ChartTreemap/ChartTreemap.js +100 -89
  154. package/dist/components/charts/ChartTreemap/ChartTreemap.js.map +1 -1
  155. package/dist/components/charts/ChartWaterfall/ChartWaterfall.cjs +1 -1
  156. package/dist/components/charts/ChartWaterfall/ChartWaterfall.cjs.map +1 -1
  157. package/dist/components/charts/ChartWaterfall/ChartWaterfall.js +125 -105
  158. package/dist/components/charts/ChartWaterfall/ChartWaterfall.js.map +1 -1
  159. package/dist/components/charts/ChartWaterfall/ChartWaterfall.module.css.cjs +1 -1
  160. package/dist/components/charts/ChartWaterfall/ChartWaterfall.module.css.js +8 -6
  161. package/dist/components/charts/ChartWaterfall/ChartWaterfall.module.css.js.map +1 -1
  162. package/dist/components/charts/core/CartesianFrame.cjs +1 -1
  163. package/dist/components/charts/core/CartesianFrame.cjs.map +1 -1
  164. package/dist/components/charts/core/CartesianFrame.js +61 -96
  165. package/dist/components/charts/core/CartesianFrame.js.map +1 -1
  166. package/dist/components/charts/core/Chart.module.css.cjs +1 -1
  167. package/dist/components/charts/core/Chart.module.css.js +52 -54
  168. package/dist/components/charts/core/Chart.module.css.js.map +1 -1
  169. package/dist/components/charts/core/ChartFrame.cjs +1 -1
  170. package/dist/components/charts/core/ChartFrame.cjs.map +1 -1
  171. package/dist/components/charts/core/ChartFrame.js +53 -47
  172. package/dist/components/charts/core/ChartFrame.js.map +1 -1
  173. package/dist/components/charts/core/ChartLegend.cjs +1 -1
  174. package/dist/components/charts/core/ChartLegend.cjs.map +1 -1
  175. package/dist/components/charts/core/ChartLegend.js +37 -25
  176. package/dist/components/charts/core/ChartLegend.js.map +1 -1
  177. package/dist/components/charts/core/PointBands.cjs +2 -0
  178. package/dist/components/charts/core/PointBands.cjs.map +1 -0
  179. package/dist/components/charts/core/PointBands.js +41 -0
  180. package/dist/components/charts/core/PointBands.js.map +1 -0
  181. package/dist/components/charts/core/cartesianLayout.cjs +1 -1
  182. package/dist/components/charts/core/cartesianLayout.cjs.map +1 -1
  183. package/dist/components/charts/core/cartesianLayout.js +49 -41
  184. package/dist/components/charts/core/cartesianLayout.js.map +1 -1
  185. package/dist/components/charts/core/hoverPath.cjs +2 -0
  186. package/dist/components/charts/core/hoverPath.cjs.map +1 -0
  187. package/dist/components/charts/core/hoverPath.js +7 -0
  188. package/dist/components/charts/core/hoverPath.js.map +1 -0
  189. package/dist/components/charts/core/pointLabels.cjs +2 -0
  190. package/dist/components/charts/core/pointLabels.cjs.map +1 -0
  191. package/dist/components/charts/core/pointLabels.js +12 -0
  192. package/dist/components/charts/core/pointLabels.js.map +1 -0
  193. package/dist/components/charts/core/tooltips.cjs +2 -0
  194. package/dist/components/charts/core/tooltips.cjs.map +1 -0
  195. package/dist/components/charts/core/tooltips.js +48 -0
  196. package/dist/components/charts/core/tooltips.js.map +1 -0
  197. package/dist/components/charts/core/useCartesianLayout.cjs +2 -0
  198. package/dist/components/charts/core/useCartesianLayout.cjs.map +1 -0
  199. package/dist/components/charts/core/useCartesianLayout.js +38 -0
  200. package/dist/components/charts/core/useCartesianLayout.js.map +1 -0
  201. package/dist/components/charts/core/useChartMetrics.cjs +1 -1
  202. package/dist/components/charts/core/useChartMetrics.cjs.map +1 -1
  203. package/dist/components/charts/core/useChartMetrics.js +20 -25
  204. package/dist/components/charts/core/useChartMetrics.js.map +1 -1
  205. package/dist/components/charts/core/useSeriesToggle.cjs +1 -1
  206. package/dist/components/charts/core/useSeriesToggle.cjs.map +1 -1
  207. package/dist/components/charts/core/useSeriesToggle.js +19 -12
  208. package/dist/components/charts/core/useSeriesToggle.js.map +1 -1
  209. package/dist/components/data-display/Accordion/Accordion.cjs +1 -1
  210. package/dist/components/data-display/Accordion/Accordion.cjs.map +1 -1
  211. package/dist/components/data-display/Accordion/Accordion.js +56 -46
  212. package/dist/components/data-display/Accordion/Accordion.js.map +1 -1
  213. package/dist/components/data-display/Accordion/Accordion.module.css.cjs +1 -1
  214. package/dist/components/data-display/Accordion/Accordion.module.css.js +16 -16
  215. package/dist/components/data-display/List/List.cjs.map +1 -1
  216. package/dist/components/data-display/List/List.js.map +1 -1
  217. package/dist/components/data-display/List/List.module.css.cjs +1 -1
  218. package/dist/components/data-display/List/List.module.css.js +34 -24
  219. package/dist/components/data-display/List/List.module.css.js.map +1 -1
  220. package/dist/components/data-display/List/ListingOptions.cjs +1 -1
  221. package/dist/components/data-display/List/ListingOptions.cjs.map +1 -1
  222. package/dist/components/data-display/List/ListingOptions.js +98 -74
  223. package/dist/components/data-display/List/ListingOptions.js.map +1 -1
  224. package/dist/components/data-display/List/useListing.cjs.map +1 -1
  225. package/dist/components/data-display/List/useListing.js.map +1 -1
  226. package/dist/components/data-display/SortableList/SortableList.cjs +2 -0
  227. package/dist/components/data-display/SortableList/SortableList.cjs.map +1 -0
  228. package/dist/components/data-display/SortableList/SortableList.js +168 -0
  229. package/dist/components/data-display/SortableList/SortableList.js.map +1 -0
  230. package/dist/components/data-display/SortableList/SortableList.module.css.cjs +2 -0
  231. package/dist/components/data-display/SortableList/SortableList.module.css.cjs.map +1 -0
  232. package/dist/components/data-display/SortableList/SortableList.module.css.js +34 -0
  233. package/dist/components/data-display/SortableList/SortableList.module.css.js.map +1 -0
  234. package/dist/components/data-display/Table/Table.cjs +1 -1
  235. package/dist/components/data-display/Table/Table.cjs.map +1 -1
  236. package/dist/components/data-display/Table/Table.js +86 -85
  237. package/dist/components/data-display/Table/Table.js.map +1 -1
  238. package/dist/components/data-display/Table/Table.module.css.cjs +1 -1
  239. package/dist/components/data-display/Table/Table.module.css.js +50 -51
  240. package/dist/components/data-display/Table/Table.module.css.js.map +1 -1
  241. package/dist/components/data-display/Tag/Tag.cjs +2 -0
  242. package/dist/components/data-display/Tag/Tag.cjs.map +1 -0
  243. package/dist/components/data-display/Tag/Tag.js +50 -0
  244. package/dist/components/data-display/Tag/Tag.js.map +1 -0
  245. package/dist/components/data-display/Tag/Tag.module.css.cjs +2 -0
  246. package/dist/components/data-display/Tag/Tag.module.css.cjs.map +1 -0
  247. package/dist/components/data-display/Tag/Tag.module.css.js +22 -0
  248. package/dist/components/data-display/Tag/Tag.module.css.js.map +1 -0
  249. package/dist/components/data-display/Timeline/Timeline.cjs +2 -0
  250. package/dist/components/data-display/Timeline/Timeline.cjs.map +1 -0
  251. package/dist/components/data-display/Timeline/Timeline.js +31 -0
  252. package/dist/components/data-display/Timeline/Timeline.js.map +1 -0
  253. package/dist/components/data-display/Timeline/Timeline.module.css.cjs +2 -0
  254. package/dist/components/data-display/Timeline/Timeline.module.css.cjs.map +1 -0
  255. package/dist/components/data-display/Timeline/Timeline.module.css.js +30 -0
  256. package/dist/components/data-display/Timeline/Timeline.module.css.js.map +1 -0
  257. package/dist/components/feedback/Skeleton/Skeleton.cjs +2 -0
  258. package/dist/components/feedback/Skeleton/Skeleton.cjs.map +1 -0
  259. package/dist/components/feedback/Skeleton/Skeleton.js +17 -0
  260. package/dist/components/feedback/Skeleton/Skeleton.js.map +1 -0
  261. package/dist/components/feedback/Skeleton/Skeleton.module.css.cjs +2 -0
  262. package/dist/components/feedback/Skeleton/Skeleton.module.css.cjs.map +1 -0
  263. package/dist/components/feedback/Skeleton/Skeleton.module.css.js +15 -0
  264. package/dist/components/feedback/Skeleton/Skeleton.module.css.js.map +1 -0
  265. package/dist/components/feedback/Toast/Toast.module.css.cjs +2 -0
  266. package/dist/components/feedback/Toast/Toast.module.css.cjs.map +1 -0
  267. package/dist/components/feedback/Toast/Toast.module.css.js +31 -0
  268. package/dist/components/feedback/Toast/Toast.module.css.js.map +1 -0
  269. package/dist/components/feedback/Toast/ToastRegion.cjs +2 -0
  270. package/dist/components/feedback/Toast/ToastRegion.cjs.map +1 -0
  271. package/dist/components/feedback/Toast/ToastRegion.js +62 -0
  272. package/dist/components/feedback/Toast/ToastRegion.js.map +1 -0
  273. package/dist/components/feedback/Toast/toastStore.cjs +2 -0
  274. package/dist/components/feedback/Toast/toastStore.cjs.map +1 -0
  275. package/dist/components/feedback/Toast/toastStore.js +33 -0
  276. package/dist/components/feedback/Toast/toastStore.js.map +1 -0
  277. package/dist/components/forms/Checkbox/Checkbox.cjs +1 -1
  278. package/dist/components/forms/Checkbox/Checkbox.cjs.map +1 -1
  279. package/dist/components/forms/Checkbox/Checkbox.js +43 -31
  280. package/dist/components/forms/Checkbox/Checkbox.js.map +1 -1
  281. package/dist/components/forms/Checkbox/Checkbox.module.css.cjs +1 -1
  282. package/dist/components/forms/Checkbox/Checkbox.module.css.js +1 -1
  283. package/dist/components/forms/CheckboxGroup/CheckboxGroup.cjs +2 -0
  284. package/dist/components/forms/CheckboxGroup/CheckboxGroup.cjs.map +1 -0
  285. package/dist/components/forms/CheckboxGroup/CheckboxGroup.js +54 -0
  286. package/dist/components/forms/CheckboxGroup/CheckboxGroup.js.map +1 -0
  287. package/dist/components/forms/CheckboxGroup/CheckboxGroup.module.css.cjs +2 -0
  288. package/dist/components/forms/CheckboxGroup/CheckboxGroup.module.css.cjs.map +1 -0
  289. package/dist/components/forms/CheckboxGroup/CheckboxGroup.module.css.js +22 -0
  290. package/dist/components/forms/CheckboxGroup/CheckboxGroup.module.css.js.map +1 -0
  291. package/dist/components/forms/ColorPicker/ColorPicker.cjs +2 -0
  292. package/dist/components/forms/ColorPicker/ColorPicker.cjs.map +1 -0
  293. package/dist/components/forms/ColorPicker/ColorPicker.js +57 -0
  294. package/dist/components/forms/ColorPicker/ColorPicker.js.map +1 -0
  295. package/dist/components/forms/ColorPicker/ColorPicker.module.css.cjs +2 -0
  296. package/dist/components/forms/ColorPicker/ColorPicker.module.css.cjs.map +1 -0
  297. package/dist/components/forms/ColorPicker/ColorPicker.module.css.js +22 -0
  298. package/dist/components/forms/ColorPicker/ColorPicker.module.css.js.map +1 -0
  299. package/dist/components/forms/ComboBox/ComboBox.cjs.map +1 -1
  300. package/dist/components/forms/ComboBox/ComboBox.js.map +1 -1
  301. package/dist/components/forms/ComboBox/ComboBox.module.css.cjs +1 -1
  302. package/dist/components/forms/ComboBox/ComboBox.module.css.js +20 -20
  303. package/dist/components/forms/Field/Field.cjs +1 -1
  304. package/dist/components/forms/Field/Field.cjs.map +1 -1
  305. package/dist/components/forms/Field/Field.js +21 -20
  306. package/dist/components/forms/Field/Field.js.map +1 -1
  307. package/dist/components/forms/Field/Field.module.css.cjs +1 -1
  308. package/dist/components/forms/Field/Field.module.css.js +18 -12
  309. package/dist/components/forms/Field/Field.module.css.js.map +1 -1
  310. package/dist/components/forms/FileUpload/FileUpload.cjs +2 -0
  311. package/dist/components/forms/FileUpload/FileUpload.cjs.map +1 -0
  312. package/dist/components/forms/FileUpload/FileUpload.js +142 -0
  313. package/dist/components/forms/FileUpload/FileUpload.js.map +1 -0
  314. package/dist/components/forms/FileUpload/FileUpload.module.css.cjs +2 -0
  315. package/dist/components/forms/FileUpload/FileUpload.module.css.cjs.map +1 -0
  316. package/dist/components/forms/FileUpload/FileUpload.module.css.js +46 -0
  317. package/dist/components/forms/FileUpload/FileUpload.module.css.js.map +1 -0
  318. package/dist/components/forms/InputPassword/InputPassword.module.css.cjs +1 -1
  319. package/dist/components/forms/InputPassword/InputPassword.module.css.js +12 -12
  320. package/dist/components/forms/InputText/InputText.cjs +1 -1
  321. package/dist/components/forms/InputText/InputText.cjs.map +1 -1
  322. package/dist/components/forms/InputText/InputText.js +55 -47
  323. package/dist/components/forms/InputText/InputText.js.map +1 -1
  324. package/dist/components/forms/InputText/InputText.module.css.cjs +1 -1
  325. package/dist/components/forms/InputText/InputText.module.css.js +10 -10
  326. package/dist/components/forms/RadioGroup/RadioGroup.module.css.cjs +1 -1
  327. package/dist/components/forms/RadioGroup/RadioGroup.module.css.js +4 -4
  328. package/dist/components/forms/SegmentedControl/SegmentedControl.cjs +2 -0
  329. package/dist/components/forms/SegmentedControl/SegmentedControl.cjs.map +1 -0
  330. package/dist/components/forms/SegmentedControl/SegmentedControl.js +52 -0
  331. package/dist/components/forms/SegmentedControl/SegmentedControl.js.map +1 -0
  332. package/dist/components/forms/SegmentedControl/SegmentedControl.module.css.cjs +2 -0
  333. package/dist/components/forms/SegmentedControl/SegmentedControl.module.css.cjs.map +1 -0
  334. package/dist/components/forms/SegmentedControl/SegmentedControl.module.css.js +22 -0
  335. package/dist/components/forms/SegmentedControl/SegmentedControl.module.css.js.map +1 -0
  336. package/dist/components/forms/Select/Select.module.css.cjs +1 -1
  337. package/dist/components/forms/Select/Select.module.css.js +13 -13
  338. package/dist/components/forms/Switch/Switch.module.css.cjs +1 -1
  339. package/dist/components/forms/Switch/Switch.module.css.js +2 -2
  340. package/dist/components/icons/icons.cjs +1 -1
  341. package/dist/components/icons/icons.cjs.map +1 -1
  342. package/dist/components/icons/icons.js +198 -40
  343. package/dist/components/icons/icons.js.map +1 -1
  344. package/dist/components/navigation/SkipLink/SkipLink.cjs +2 -0
  345. package/dist/components/navigation/SkipLink/SkipLink.cjs.map +1 -0
  346. package/dist/components/navigation/SkipLink/SkipLink.js +9 -0
  347. package/dist/components/navigation/SkipLink/SkipLink.js.map +1 -0
  348. package/dist/components/navigation/SkipLink/SkipLink.module.css.cjs +2 -0
  349. package/dist/components/navigation/SkipLink/SkipLink.module.css.cjs.map +1 -0
  350. package/dist/components/navigation/SkipLink/SkipLink.module.css.js +8 -0
  351. package/dist/components/navigation/SkipLink/SkipLink.module.css.js.map +1 -0
  352. package/dist/components/navigation/Steps/Steps.cjs +2 -0
  353. package/dist/components/navigation/Steps/Steps.cjs.map +1 -0
  354. package/dist/components/navigation/Steps/Steps.js +30 -0
  355. package/dist/components/navigation/Steps/Steps.js.map +1 -0
  356. package/dist/components/navigation/Steps/Steps.module.css.cjs +2 -0
  357. package/dist/components/navigation/Steps/Steps.module.css.cjs.map +1 -0
  358. package/dist/components/navigation/Steps/Steps.module.css.js +26 -0
  359. package/dist/components/navigation/Steps/Steps.module.css.js.map +1 -0
  360. package/dist/components/navigation/Tabs/Tabs.cjs +1 -1
  361. package/dist/components/navigation/Tabs/Tabs.cjs.map +1 -1
  362. package/dist/components/navigation/Tabs/Tabs.js +88 -79
  363. package/dist/components/navigation/Tabs/Tabs.js.map +1 -1
  364. package/dist/components/navigation/Tabs/Tabs.module.css.cjs +1 -1
  365. package/dist/components/navigation/Tabs/Tabs.module.css.js +18 -14
  366. package/dist/components/navigation/Tabs/Tabs.module.css.js.map +1 -1
  367. package/dist/components/navigation/TabsNav/TabsNav.cjs +2 -0
  368. package/dist/components/navigation/TabsNav/TabsNav.cjs.map +1 -0
  369. package/dist/components/navigation/TabsNav/TabsNav.js +21 -0
  370. package/dist/components/navigation/TabsNav/TabsNav.js.map +1 -0
  371. package/dist/components/navigation/TabsNav/TabsNav.module.css.cjs +2 -0
  372. package/dist/components/navigation/TabsNav/TabsNav.module.css.cjs.map +1 -0
  373. package/dist/components/navigation/TabsNav/TabsNav.module.css.js +18 -0
  374. package/dist/components/navigation/TabsNav/TabsNav.module.css.js.map +1 -0
  375. package/dist/components/overlays/Dialog/Dialog.cjs +1 -1
  376. package/dist/components/overlays/Dialog/Dialog.cjs.map +1 -1
  377. package/dist/components/overlays/Dialog/Dialog.js +11 -58
  378. package/dist/components/overlays/Dialog/Dialog.js.map +1 -1
  379. package/dist/components/overlays/Dialog/DialogFrame.cjs +2 -0
  380. package/dist/components/overlays/Dialog/DialogFrame.cjs.map +1 -0
  381. package/dist/components/overlays/Dialog/DialogFrame.js +65 -0
  382. package/dist/components/overlays/Dialog/DialogFrame.js.map +1 -0
  383. package/dist/components/overlays/Drawer/Drawer.cjs +2 -0
  384. package/dist/components/overlays/Drawer/Drawer.cjs.map +1 -0
  385. package/dist/components/overlays/Drawer/Drawer.js +17 -0
  386. package/dist/components/overlays/Drawer/Drawer.js.map +1 -0
  387. package/dist/components/overlays/Drawer/Drawer.module.css.cjs +2 -0
  388. package/dist/components/overlays/Drawer/Drawer.module.css.cjs.map +1 -0
  389. package/dist/components/overlays/Drawer/Drawer.module.css.js +23 -0
  390. package/dist/components/overlays/Drawer/Drawer.module.css.js.map +1 -0
  391. package/dist/components/overlays/Menu/Menu.cjs +1 -1
  392. package/dist/components/overlays/Menu/Menu.cjs.map +1 -1
  393. package/dist/components/overlays/Menu/Menu.js +105 -86
  394. package/dist/components/overlays/Menu/Menu.js.map +1 -1
  395. package/dist/components/overlays/Menu/Menu.module.css.cjs +1 -1
  396. package/dist/components/overlays/Menu/Menu.module.css.js +24 -6
  397. package/dist/components/overlays/Menu/Menu.module.css.js.map +1 -1
  398. package/dist/design-system.css +1 -1
  399. package/dist/index.cjs +1 -1
  400. package/dist/index.js +190 -118
  401. package/dist/index.js.map +1 -1
  402. package/dist/types/components/actions/ButtonTile/ButtonTile.d.ts +14 -0
  403. package/dist/types/components/actions/ButtonTile/index.d.ts +2 -0
  404. package/dist/types/components/actions/Toolbar/Toolbar.d.ts +27 -0
  405. package/dist/types/components/actions/Toolbar/index.d.ts +2 -0
  406. package/dist/types/components/charts/ChartArea/ChartArea.d.ts +15 -4
  407. package/dist/types/components/charts/ChartBar/ChartBar.d.ts +11 -4
  408. package/dist/types/components/charts/ChartCombo/ChartCombo.d.ts +16 -4
  409. package/dist/types/components/charts/ChartDonut/ChartDonut.d.ts +5 -1
  410. package/dist/types/components/charts/ChartGauge/ChartGauge.d.ts +83 -0
  411. package/dist/types/components/charts/ChartGauge/gaugeLayout.d.ts +64 -0
  412. package/dist/types/components/charts/ChartGauge/gaugeReading.d.ts +97 -0
  413. package/dist/types/components/charts/ChartGauge/gaugeScale.d.ts +38 -0
  414. package/dist/types/components/charts/ChartGauge/index.d.ts +2 -0
  415. package/dist/types/components/charts/ChartLine/ChartLine.d.ts +15 -4
  416. package/dist/types/components/charts/ChartMap/ChartMap.d.ts +104 -0
  417. package/dist/types/components/charts/ChartMap/ChartMapLegend.d.ts +44 -0
  418. package/dist/types/components/charts/ChartMap/ChartMapTable.d.ts +38 -0
  419. package/dist/types/components/charts/ChartMap/index.d.ts +4 -0
  420. package/dist/types/components/charts/ChartMap/mapGeometry.d.ts +56 -0
  421. package/dist/types/components/charts/ChartMap/mapLabels.d.ts +51 -0
  422. package/dist/types/components/charts/ChartMap/mapScales.d.ts +76 -0
  423. package/dist/types/components/charts/ChartMap/polylabel.d.ts +9 -0
  424. package/dist/types/components/charts/ChartPie/ChartPie.d.ts +5 -1
  425. package/dist/types/components/charts/ChartRadial/ChartRadial.d.ts +5 -1
  426. package/dist/types/components/charts/ChartSankey/ChartSankey.d.ts +5 -1
  427. package/dist/types/components/charts/ChartScatter/ChartScatter.d.ts +7 -1
  428. package/dist/types/components/charts/ChartSunburst/ChartSunburst.d.ts +11 -2
  429. package/dist/types/components/charts/ChartTimeline/ChartTimeline.d.ts +137 -0
  430. package/dist/types/components/charts/ChartTimeline/ChartTimelineTable.d.ts +25 -0
  431. package/dist/types/components/charts/ChartTimeline/index.d.ts +2 -0
  432. package/dist/types/components/charts/ChartTimeline/timelineLayout.d.ts +70 -0
  433. package/dist/types/components/charts/ChartTimeline/timelineTime.d.ts +16 -0
  434. package/dist/types/components/charts/ChartTimeline/timelineTooltip.d.ts +45 -0
  435. package/dist/types/components/charts/ChartTooltip/ChartTooltip.d.ts +2 -0
  436. package/dist/types/components/charts/ChartTreemap/ChartTreemap.d.ts +11 -2
  437. package/dist/types/components/charts/ChartWaterfall/ChartWaterfall.d.ts +8 -3
  438. package/dist/types/components/charts/core/CartesianFrame.d.ts +6 -1
  439. package/dist/types/components/charts/core/ChartFrame.d.ts +7 -1
  440. package/dist/types/components/charts/core/ChartLegend.d.ts +3 -1
  441. package/dist/types/components/charts/core/PointBands.d.ts +22 -0
  442. package/dist/types/components/charts/core/cartesianLayout.d.ts +10 -4
  443. package/dist/types/components/charts/core/hoverPath.d.ts +10 -0
  444. package/dist/types/components/charts/core/index.d.ts +13 -3
  445. package/dist/types/components/charts/core/pointLabels.d.ts +13 -0
  446. package/dist/types/components/charts/core/tooltips.d.ts +49 -0
  447. package/dist/types/components/charts/core/useCartesianLayout.d.ts +20 -0
  448. package/dist/types/components/charts/core/useSeriesToggle.d.ts +15 -1
  449. package/dist/types/components/data-display/Accordion/Accordion.d.ts +6 -1
  450. package/dist/types/components/data-display/Accordion/index.d.ts +1 -1
  451. package/dist/types/components/data-display/List/List.d.ts +1 -1
  452. package/dist/types/components/data-display/List/useListing.d.ts +7 -1
  453. package/dist/types/components/data-display/SortableList/SortableList.d.ts +22 -0
  454. package/dist/types/components/data-display/SortableList/index.d.ts +2 -0
  455. package/dist/types/components/data-display/Tag/Tag.d.ts +13 -0
  456. package/dist/types/components/data-display/Tag/index.d.ts +2 -0
  457. package/dist/types/components/data-display/Timeline/Timeline.d.ts +15 -0
  458. package/dist/types/components/data-display/Timeline/index.d.ts +2 -0
  459. package/dist/types/components/feedback/Skeleton/Skeleton.d.ts +13 -0
  460. package/dist/types/components/feedback/Skeleton/index.d.ts +2 -0
  461. package/dist/types/components/feedback/Toast/ToastRegion.d.ts +2 -0
  462. package/dist/types/components/feedback/Toast/index.d.ts +3 -0
  463. package/dist/types/components/feedback/Toast/toastStore.d.ts +24 -0
  464. package/dist/types/components/forms/CheckboxGroup/CheckboxGroup.d.ts +28 -0
  465. package/dist/types/components/forms/CheckboxGroup/index.d.ts +2 -0
  466. package/dist/types/components/forms/ColorPicker/ColorPicker.d.ts +26 -0
  467. package/dist/types/components/forms/ColorPicker/index.d.ts +2 -0
  468. package/dist/types/components/forms/ComboBox/ComboBox.d.ts +7 -1
  469. package/dist/types/components/forms/Field/Field.d.ts +6 -2
  470. package/dist/types/components/forms/Field/index.d.ts +1 -1
  471. package/dist/types/components/forms/FileUpload/FileUpload.d.ts +37 -0
  472. package/dist/types/components/forms/FileUpload/index.d.ts +2 -0
  473. package/dist/types/components/forms/InputText/InputText.d.ts +4 -2
  474. package/dist/types/components/forms/SegmentedControl/SegmentedControl.d.ts +23 -0
  475. package/dist/types/components/forms/SegmentedControl/index.d.ts +2 -0
  476. package/dist/types/components/icons/icons.d.ts +29 -0
  477. package/dist/types/components/icons/index.d.ts +1 -1
  478. package/dist/types/components/navigation/SkipLink/SkipLink.d.ts +7 -0
  479. package/dist/types/components/navigation/SkipLink/index.d.ts +2 -0
  480. package/dist/types/components/navigation/Steps/Steps.d.ts +16 -0
  481. package/dist/types/components/navigation/Steps/index.d.ts +2 -0
  482. package/dist/types/components/navigation/Tabs/Tabs.d.ts +5 -1
  483. package/dist/types/components/navigation/TabsNav/TabsNav.d.ts +20 -0
  484. package/dist/types/components/navigation/TabsNav/index.d.ts +2 -0
  485. package/dist/types/components/overlays/Dialog/Dialog.d.ts +21 -9
  486. package/dist/types/components/overlays/Dialog/DialogFrame.d.ts +13 -0
  487. package/dist/types/components/overlays/Drawer/Drawer.d.ts +9 -0
  488. package/dist/types/components/overlays/Drawer/index.d.ts +2 -0
  489. package/dist/types/components/overlays/Menu/Menu.d.ts +16 -2
  490. package/dist/types/components/overlays/Menu/index.d.ts +1 -1
  491. package/dist/types/index.d.ts +43 -7
  492. package/dist/types/utils/formatters/formatarDuracao.d.ts +5 -0
  493. package/dist/types/utils/formatters/formatarNumero.d.ts +6 -1
  494. package/dist/types/utils/formatters/formatarTamanhoDeArquivo.d.ts +7 -0
  495. package/dist/types/utils/formatters/index.d.ts +4 -1
  496. package/dist/utils/formatters/formatarDuracao.cjs +2 -0
  497. package/dist/utils/formatters/formatarDuracao.cjs.map +1 -0
  498. package/dist/utils/formatters/formatarDuracao.js +10 -0
  499. package/dist/utils/formatters/formatarDuracao.js.map +1 -0
  500. package/dist/utils/formatters/formatarNumero.cjs +1 -1
  501. package/dist/utils/formatters/formatarNumero.cjs.map +1 -1
  502. package/dist/utils/formatters/formatarNumero.js +42 -17
  503. package/dist/utils/formatters/formatarNumero.js.map +1 -1
  504. package/dist/utils/formatters/formatarTamanhoDeArquivo.cjs +2 -0
  505. package/dist/utils/formatters/formatarTamanhoDeArquivo.cjs.map +1 -0
  506. package/dist/utils/formatters/formatarTamanhoDeArquivo.js +17 -0
  507. package/dist/utils/formatters/formatarTamanhoDeArquivo.js.map +1 -0
  508. package/package.json +3 -1
@@ -0,0 +1,38 @@
1
+ import { useState as m, useRef as h, useEffect as f } from "react";
2
+ import { cartesianLayout as u } from "./cartesianLayout.js";
3
+ import { useTweenedNumbers as g } from "./useTweenedNumbers.js";
4
+ const A = 600, v = 240;
5
+ function x(t, e, o) {
6
+ return {
7
+ bottom: t.bottom + (e.bottom - t.bottom) * o,
8
+ left: t.left + (e.left - t.left) * o,
9
+ right: t.right + (e.right - t.right) * o,
10
+ top: t.top + (e.top - t.top) * o
11
+ };
12
+ }
13
+ function E(t) {
14
+ const e = [t.xAxis, t.yAxis, t.yAxisRight].includes("onHover"), [o, s] = m(!1), i = h(void 0), n = e && o, [l = 0] = g([n ? 1 : 0], { duration: v });
15
+ f(() => () => clearTimeout(i.current), []);
16
+ const a = u({ ...t, revealed: !1 }), c = e ? u({ ...t, revealed: !0 }) : a, r = x(a.margins, c.margins, l);
17
+ return {
18
+ axisReveal: {
19
+ onPointerEnter: () => {
20
+ e && (clearTimeout(i.current), i.current = setTimeout(() => s(!0), A));
21
+ },
22
+ onPointerLeave: () => {
23
+ clearTimeout(i.current), s(!1);
24
+ },
25
+ revealed: n
26
+ },
27
+ margins: r,
28
+ plot: {
29
+ height: Math.max(t.height - r.top - r.bottom, 0),
30
+ width: Math.max(t.width - r.left - r.right, 0)
31
+ },
32
+ rotation: (n ? c : a).rotation
33
+ };
34
+ }
35
+ export {
36
+ E as useCartesianLayout
37
+ };
38
+ //# sourceMappingURL=useCartesianLayout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCartesianLayout.js","sources":["../../../../src/components/charts/core/useCartesianLayout.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\nimport { cartesianLayout, type CartesianLayoutOptions, type ChartMargins } from './cartesianLayout';\nimport { useTweenedNumbers } from './useTweenedNumbers';\n\n/** Ponteiro parado sobre o grafico ate os eixos `onHover` entrarem: so atravessar o grafico nao o faz encolher. */\nconst ATRASO_DA_REVELACAO = 600;\nconst DURACAO_DA_REVELACAO = 240;\n\nexport interface AxisReveal {\n onPointerEnter: () => void;\n onPointerLeave: () => void;\n revealed: boolean;\n}\n\nfunction interpolar(de: ChartMargins, ate: ChartMargins, fator: number): ChartMargins {\n return {\n bottom: de.bottom + (ate.bottom - de.bottom) * fator,\n left: de.left + (ate.left - de.left) * fator,\n right: de.right + (ate.right - de.right) * fator,\n top: de.top + (ate.top - de.top) * fator,\n };\n}\n\n/**\n * Layout cartesiano com os eixos `onHover`. Sem eles revelados, o desenho ocupa\n * o espaco todo; revelados, ele encolhe ate as calhas, numa transicao so. Dado\n * ou tamanho que mudam reposicionam na hora: o que anima e a revelacao.\n */\nexport function useCartesianLayout(options: Omit<CartesianLayoutOptions, 'revealed'>) {\n const dinamico = [options.xAxis, options.yAxis, options.yAxisRight].includes('onHover');\n const [revelado, setRevelado] = useState(false);\n const relogio = useRef<ReturnType<typeof setTimeout>>(undefined);\n const revealed = dinamico && revelado;\n const [progresso = 0] = useTweenedNumbers([revealed ? 1 : 0], { duration: DURACAO_DA_REVELACAO });\n\n useEffect(() => () => clearTimeout(relogio.current), []);\n\n const recolhido = cartesianLayout({ ...options, revealed: false });\n const aberto = dinamico ? cartesianLayout({ ...options, revealed: true }) : recolhido;\n const margins = interpolar(recolhido.margins, aberto.margins, progresso);\n\n const axisReveal: AxisReveal = {\n onPointerEnter: () => {\n if (dinamico) {\n clearTimeout(relogio.current);\n relogio.current = setTimeout(() => setRevelado(true), ATRASO_DA_REVELACAO);\n }\n },\n onPointerLeave: () => {\n clearTimeout(relogio.current);\n setRevelado(false);\n },\n revealed,\n };\n\n return {\n axisReveal,\n margins,\n plot: {\n height: Math.max(options.height - margins.top - margins.bottom, 0),\n width: Math.max(options.width - margins.left - margins.right, 0),\n },\n rotation: (revealed ? aberto : recolhido).rotation,\n };\n}\n"],"names":["ATRASO_DA_REVELACAO","DURACAO_DA_REVELACAO","interpolar","de","ate","fator","useCartesianLayout","options","dinamico","revelado","setRevelado","useState","relogio","useRef","revealed","progresso","useTweenedNumbers","useEffect","recolhido","cartesianLayout","aberto","margins"],"mappings":";;;AAKA,MAAMA,IAAsB,KACtBC,IAAuB;AAQ7B,SAASC,EAAWC,GAAkBC,GAAmBC,GAA6B;AACpF,SAAO;AAAA,IACL,QAAQF,EAAG,UAAUC,EAAI,SAASD,EAAG,UAAUE;AAAA,IAC/C,MAAMF,EAAG,QAAQC,EAAI,OAAOD,EAAG,QAAQE;AAAA,IACvC,OAAOF,EAAG,SAASC,EAAI,QAAQD,EAAG,SAASE;AAAA,IAC3C,KAAKF,EAAG,OAAOC,EAAI,MAAMD,EAAG,OAAOE;AAAA,EAAA;AAEvC;AAOO,SAASC,EAAmBC,GAAmD;AACpF,QAAMC,IAAW,CAACD,EAAQ,OAAOA,EAAQ,OAAOA,EAAQ,UAAU,EAAE,SAAS,SAAS,GAChF,CAACE,GAAUC,CAAW,IAAIC,EAAS,EAAK,GACxCC,IAAUC,EAAsC,MAAS,GACzDC,IAAWN,KAAYC,GACvB,CAACM,IAAY,CAAC,IAAIC,EAAkB,CAACF,IAAW,IAAI,CAAC,GAAG,EAAE,UAAUb,GAAsB;AAEhG,EAAAgB,EAAU,MAAM,MAAM,aAAaL,EAAQ,OAAO,GAAG,CAAA,CAAE;AAEvD,QAAMM,IAAYC,EAAgB,EAAE,GAAGZ,GAAS,UAAU,IAAO,GAC3Da,IAASZ,IAAWW,EAAgB,EAAE,GAAGZ,GAAS,UAAU,GAAA,CAAM,IAAIW,GACtEG,IAAUnB,EAAWgB,EAAU,SAASE,EAAO,SAASL,CAAS;AAgBvE,SAAO;AAAA,IACL,YAf6B;AAAA,MAC7B,gBAAgB,MAAM;AACpB,QAAIP,MACF,aAAaI,EAAQ,OAAO,GAC5BA,EAAQ,UAAU,WAAW,MAAMF,EAAY,EAAI,GAAGV,CAAmB;AAAA,MAE7E;AAAA,MACA,gBAAgB,MAAM;AACpB,qBAAaY,EAAQ,OAAO,GAC5BF,EAAY,EAAK;AAAA,MACnB;AAAA,MACA,UAAAI;AAAA,IAAA;AAAA,IAKA,SAAAO;AAAA,IACA,MAAM;AAAA,MACJ,QAAQ,KAAK,IAAId,EAAQ,SAASc,EAAQ,MAAMA,EAAQ,QAAQ,CAAC;AAAA,MACjE,OAAO,KAAK,IAAId,EAAQ,QAAQc,EAAQ,OAAOA,EAAQ,OAAO,CAAC;AAAA,IAAA;AAAA,IAEjE,WAAWP,IAAWM,IAASF,GAAW;AAAA,EAAA;AAE9C;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react"),l=require("./measureText.cjs"),u=5;function p(r){return!r||typeof getComputedStyle!="function"?u:Number.parseFloat(getComputedStyle(r).getPropertyValue("--pl-radius-sm"))||u}function y(){const[r,a]=s.useState(()=>({font:l.labelFontOf(null),height:0,radius:u,width:0})),c=s.useRef(null),o=s.useCallback(()=>{const e=c.current,n=(e==null?void 0:e.clientWidth)??0,f=(e==null?void 0:e.clientHeight)??0,i=l.labelFontOf(e),d=p(e);a(t=>t.width===n&&t.height===f&&t.radius===d&&t.font.family===i.family&&t.font.size===i.size&&t.font.lineHeight===i.lineHeight&&t.font.centerSteps.every((b,m)=>{var h;return b.size===((h=i.centerSteps[m])==null?void 0:h.size)})?t:{font:i,height:f,radius:d,width:n})},[]),g=s.useCallback(e=>{c.current=e,o()},[o]);return s.useEffect(()=>{const e=c.current;if(!e||typeof ResizeObserver>"u")return;const n=new ResizeObserver(o);return n.observe(e),()=>n.disconnect()},[o]),{font:r.font,height:r.height,radius:r.radius,ref:g,width:r.width}}exports.useChartMetrics=y;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react"),a=require("./measureText.cjs"),u=5;function y(r){return!r||typeof getComputedStyle!="function"?u:Number.parseFloat(getComputedStyle(r).getPropertyValue("--pl-radius-sm"))||u}function O(){const[r,g]=s.useState(()=>({font:a.labelFontOf(null),height:0,radius:u,width:0})),f=s.useRef(null),c=s.useCallback(()=>{const e=f.current,i=(e==null?void 0:e.clientWidth)??0,l=(e==null?void 0:e.clientHeight)??0,n=a.labelFontOf(e),h=y(e);g(t=>t.width===i&&t.height===l&&t.radius===h&&t.font.family===n.family&&t.font.size===n.size&&t.font.lineHeight===n.lineHeight&&t.font.centerSteps.every((m,p)=>{var d;return m.size===((d=n.centerSteps[p])==null?void 0:d.size)})?t:{font:n,height:l,radius:h,width:i})},[]),o=s.useRef(null),b=s.useCallback(e=>{var i;(i=o.current)==null||i.disconnect(),o.current=null,f.current=e,c(),e&&typeof ResizeObserver<"u"&&(o.current=new ResizeObserver(c),o.current.observe(e))},[c]);return{font:r.font,height:r.height,radius:r.radius,ref:b,width:r.width}}exports.useChartMetrics=O;
2
2
  //# sourceMappingURL=useChartMetrics.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useChartMetrics.cjs","sources":["../../../../src/components/charts/core/useChartMetrics.ts"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from 'react';\nimport { labelFontOf, type LabelFont } from './measureText';\n\nexport interface ChartMetrics {\n font: LabelFont;\n height: number;\n /** Raio dos cantos, lido do token: geometria de caminho nao le variavel CSS. */\n radius: number;\n ref: (node: HTMLElement | null) => void;\n width: number;\n}\n\nconst RAIO_PADRAO = 5;\n\nfunction raioDe(node: Element | null) {\n if (!node || typeof getComputedStyle !== 'function') {\n return RAIO_PADRAO;\n }\n\n return Number.parseFloat(getComputedStyle(node).getPropertyValue('--pl-radius-sm')) || RAIO_PADRAO;\n}\n\n/**\n * Mede o espaco em que o grafico sera desenhado: largura, altura e a fonte que\n * os rotulos vao usar. A area de desenho nao entra no fluxo, entao a medida e\n * sempre o que o layout concedeu, e nunca o que o proprio grafico ocupou.\n *\n * A fonte sai da mesma medida porque as duas vem do elemento e mudam juntas:\n * as margens do grafico dependem da largura dos rotulos, e a largura de um\n * rotulo depende da fonte resolvida ali.\n */\nexport function useChartMetrics(): ChartMetrics {\n const [medida, setMedida] = useState<{\n font: LabelFont;\n height: number;\n radius: number;\n width: number;\n }>(() => ({ font: labelFontOf(null), height: 0, radius: RAIO_PADRAO, width: 0 }));\n const elemento = useRef<HTMLElement | null>(null);\n\n const medir = useCallback(() => {\n const node = elemento.current;\n const width = node?.clientWidth ?? 0;\n const height = node?.clientHeight ?? 0;\n const font = labelFontOf(node);\n const radius = raioDe(node);\n\n setMedida((atual) =>\n atual.width === width &&\n atual.height === height &&\n atual.radius === radius &&\n atual.font.family === font.family &&\n atual.font.size === font.size &&\n atual.font.lineHeight === font.lineHeight &&\n atual.font.centerSteps.every((degrau, indice) => degrau.size === font.centerSteps[indice]?.size)\n ? atual\n : { font, height, radius, width },\n );\n }, []);\n\n const ref = useCallback(\n (node: HTMLElement | null) => {\n elemento.current = node;\n medir();\n },\n [medir],\n );\n\n useEffect(() => {\n const node = elemento.current;\n\n if (!node || typeof ResizeObserver === 'undefined') {\n return;\n }\n\n const observador = new ResizeObserver(medir);\n observador.observe(node);\n\n return () => observador.disconnect();\n }, [medir]);\n\n return {\n font: medida.font,\n height: medida.height,\n radius: medida.radius,\n ref,\n width: medida.width,\n };\n}\n"],"names":["RAIO_PADRAO","raioDe","node","useChartMetrics","medida","setMedida","useState","labelFontOf","elemento","useRef","medir","useCallback","width","height","font","radius","atual","degrau","indice","_a","ref","useEffect","observador"],"mappings":"wIAYMA,EAAc,EAEpB,SAASC,EAAOC,EAAsB,CACpC,MAAI,CAACA,GAAQ,OAAO,kBAAqB,WAChCF,EAGF,OAAO,WAAW,iBAAiBE,CAAI,EAAE,iBAAiB,gBAAgB,CAAC,GAAKF,CACzF,CAWO,SAASG,GAAgC,CAC9C,KAAM,CAACC,EAAQC,CAAS,EAAIC,EAAAA,SAKzB,KAAO,CAAE,KAAMC,EAAAA,YAAY,IAAI,EAAG,OAAQ,EAAG,OAAQP,EAAa,MAAO,GAAI,EAC1EQ,EAAWC,EAAAA,OAA2B,IAAI,EAE1CC,EAAQC,EAAAA,YAAY,IAAM,CAC9B,MAAMT,EAAOM,EAAS,QAChBI,GAAQV,GAAA,YAAAA,EAAM,cAAe,EAC7BW,GAASX,GAAA,YAAAA,EAAM,eAAgB,EAC/BY,EAAOP,EAAAA,YAAYL,CAAI,EACvBa,EAASd,EAAOC,CAAI,EAE1BG,EAAWW,GACTA,EAAM,QAAUJ,GAChBI,EAAM,SAAWH,GACjBG,EAAM,SAAWD,GACjBC,EAAM,KAAK,SAAWF,EAAK,QAC3BE,EAAM,KAAK,OAASF,EAAK,MACzBE,EAAM,KAAK,aAAeF,EAAK,YAC/BE,EAAM,KAAK,YAAY,MAAM,CAACC,EAAQC,WAAW,OAAAD,EAAO,SAASE,EAAAL,EAAK,YAAYI,CAAM,IAAvB,YAAAC,EAA0B,MAAI,EAC3FH,EACA,CAAE,KAAAF,EAAM,OAAAD,EAAQ,OAAAE,EAAQ,MAAAH,CAAA,CAAM,CAEtC,EAAG,CAAA,CAAE,EAECQ,EAAMT,EAAAA,YACTT,GAA6B,CAC5BM,EAAS,QAAUN,EACnBQ,EAAA,CACF,EACA,CAACA,CAAK,CAAA,EAGRW,OAAAA,EAAAA,UAAU,IAAM,CACd,MAAMnB,EAAOM,EAAS,QAEtB,GAAI,CAACN,GAAQ,OAAO,eAAmB,IACrC,OAGF,MAAMoB,EAAa,IAAI,eAAeZ,CAAK,EAC3C,OAAAY,EAAW,QAAQpB,CAAI,EAEhB,IAAMoB,EAAW,WAAA,CAC1B,EAAG,CAACZ,CAAK,CAAC,EAEH,CACL,KAAMN,EAAO,KACb,OAAQA,EAAO,OACf,OAAQA,EAAO,OACf,IAAAgB,EACA,MAAOhB,EAAO,KAAA,CAElB"}
1
+ {"version":3,"file":"useChartMetrics.cjs","sources":["../../../../src/components/charts/core/useChartMetrics.ts"],"sourcesContent":["import { useCallback, useRef, useState } from 'react';\nimport { labelFontOf, type LabelFont } from './measureText';\n\nexport interface ChartMetrics {\n font: LabelFont;\n height: number;\n /** Raio dos cantos, lido do token: geometria de caminho nao le variavel CSS. */\n radius: number;\n ref: (node: HTMLElement | null) => void;\n width: number;\n}\n\nconst RAIO_PADRAO = 5;\n\nfunction raioDe(node: Element | null) {\n if (!node || typeof getComputedStyle !== 'function') {\n return RAIO_PADRAO;\n }\n\n return Number.parseFloat(getComputedStyle(node).getPropertyValue('--pl-radius-sm')) || RAIO_PADRAO;\n}\n\n/**\n * Mede o espaco em que o grafico sera desenhado: largura, altura e a fonte que\n * os rotulos vao usar. A area de desenho nao entra no fluxo, entao a medida e\n * sempre o que o layout concedeu, e nunca o que o proprio grafico ocupou.\n *\n * A fonte sai da mesma medida porque as duas vem do elemento e mudam juntas:\n * as margens do grafico dependem da largura dos rotulos, e a largura de um\n * rotulo depende da fonte resolvida ali.\n */\nexport function useChartMetrics(): ChartMetrics {\n const [medida, setMedida] = useState<{\n font: LabelFont;\n height: number;\n radius: number;\n width: number;\n }>(() => ({ font: labelFontOf(null), height: 0, radius: RAIO_PADRAO, width: 0 }));\n const elemento = useRef<HTMLElement | null>(null);\n\n const medir = useCallback(() => {\n const node = elemento.current;\n const width = node?.clientWidth ?? 0;\n const height = node?.clientHeight ?? 0;\n const font = labelFontOf(node);\n const radius = raioDe(node);\n\n setMedida((atual) =>\n atual.width === width &&\n atual.height === height &&\n atual.radius === radius &&\n atual.font.family === font.family &&\n atual.font.size === font.size &&\n atual.font.lineHeight === font.lineHeight &&\n atual.font.centerSteps.every((degrau, indice) => degrau.size === font.centerSteps[indice]?.size)\n ? atual\n : { font, height, radius, width },\n );\n }, []);\n\n const observador = useRef<ResizeObserver | null>(null);\n\n // O observador acompanha o elemento, e não a montagem: a área que nasce depois, ou é trocada, continua sendo medida.\n const ref = useCallback(\n (node: HTMLElement | null) => {\n observador.current?.disconnect();\n observador.current = null;\n elemento.current = node;\n medir();\n\n if (node && typeof ResizeObserver !== 'undefined') {\n observador.current = new ResizeObserver(medir);\n observador.current.observe(node);\n }\n },\n [medir],\n );\n\n return {\n font: medida.font,\n height: medida.height,\n radius: medida.radius,\n ref,\n width: medida.width,\n };\n}\n"],"names":["RAIO_PADRAO","raioDe","node","useChartMetrics","medida","setMedida","useState","labelFontOf","elemento","useRef","medir","useCallback","width","height","font","radius","atual","degrau","indice","_a","observador","ref"],"mappings":"wIAYMA,EAAc,EAEpB,SAASC,EAAOC,EAAsB,CACpC,MAAI,CAACA,GAAQ,OAAO,kBAAqB,WAChCF,EAGF,OAAO,WAAW,iBAAiBE,CAAI,EAAE,iBAAiB,gBAAgB,CAAC,GAAKF,CACzF,CAWO,SAASG,GAAgC,CAC9C,KAAM,CAACC,EAAQC,CAAS,EAAIC,EAAAA,SAKzB,KAAO,CAAE,KAAMC,EAAAA,YAAY,IAAI,EAAG,OAAQ,EAAG,OAAQP,EAAa,MAAO,GAAI,EAC1EQ,EAAWC,EAAAA,OAA2B,IAAI,EAE1CC,EAAQC,EAAAA,YAAY,IAAM,CAC9B,MAAMT,EAAOM,EAAS,QAChBI,GAAQV,GAAA,YAAAA,EAAM,cAAe,EAC7BW,GAASX,GAAA,YAAAA,EAAM,eAAgB,EAC/BY,EAAOP,EAAAA,YAAYL,CAAI,EACvBa,EAASd,EAAOC,CAAI,EAE1BG,EAAWW,GACTA,EAAM,QAAUJ,GAChBI,EAAM,SAAWH,GACjBG,EAAM,SAAWD,GACjBC,EAAM,KAAK,SAAWF,EAAK,QAC3BE,EAAM,KAAK,OAASF,EAAK,MACzBE,EAAM,KAAK,aAAeF,EAAK,YAC/BE,EAAM,KAAK,YAAY,MAAM,CAACC,EAAQC,WAAW,OAAAD,EAAO,SAASE,EAAAL,EAAK,YAAYI,CAAM,IAAvB,YAAAC,EAA0B,MAAI,EAC3FH,EACA,CAAE,KAAAF,EAAM,OAAAD,EAAQ,OAAAE,EAAQ,MAAAH,CAAA,CAAM,CAEtC,EAAG,CAAA,CAAE,EAECQ,EAAaX,EAAAA,OAA8B,IAAI,EAG/CY,EAAMV,EAAAA,YACTT,GAA6B,QAC5BiB,EAAAC,EAAW,UAAX,MAAAD,EAAoB,aACpBC,EAAW,QAAU,KACrBZ,EAAS,QAAUN,EACnBQ,EAAA,EAEIR,GAAQ,OAAO,eAAmB,MACpCkB,EAAW,QAAU,IAAI,eAAeV,CAAK,EAC7CU,EAAW,QAAQ,QAAQlB,CAAI,EAEnC,EACA,CAACQ,CAAK,CAAA,EAGR,MAAO,CACL,KAAMN,EAAO,KACb,OAAQA,EAAO,OACf,OAAQA,EAAO,OACf,IAAAiB,EACA,MAAOjB,EAAO,KAAA,CAElB"}
@@ -1,36 +1,31 @@
1
- import { useState as b, useRef as a, useCallback as h, useEffect as w } from "react";
2
- import { labelFontOf as l } from "./measureText.js";
1
+ import { useState as w, useRef as l, useCallback as m } from "react";
2
+ import { labelFontOf as p } from "./measureText.js";
3
3
  const c = 5;
4
- function z(i) {
5
- return !i || typeof getComputedStyle != "function" ? c : Number.parseFloat(getComputedStyle(i).getPropertyValue("--pl-radius-sm")) || c;
4
+ function z(r) {
5
+ return !r || typeof getComputedStyle != "function" ? c : Number.parseFloat(getComputedStyle(r).getPropertyValue("--pl-radius-sm")) || c;
6
6
  }
7
7
  function R() {
8
- const [i, m] = b(() => ({ font: l(null), height: 0, radius: c, width: 0 })), o = a(null), s = h(() => {
9
- const e = o.current, n = (e == null ? void 0 : e.clientWidth) ?? 0, f = (e == null ? void 0 : e.clientHeight) ?? 0, r = l(e), u = z(e);
10
- m(
11
- (t) => t.width === n && t.height === f && t.radius === u && t.font.family === r.family && t.font.size === r.size && t.font.lineHeight === r.lineHeight && t.font.centerSteps.every((g, y) => {
8
+ const [r, g] = w(() => ({ font: p(null), height: 0, radius: c, width: 0 })), u = l(null), o = m(() => {
9
+ const e = u.current, i = (e == null ? void 0 : e.clientWidth) ?? 0, f = (e == null ? void 0 : e.clientHeight) ?? 0, n = p(e), h = z(e);
10
+ g(
11
+ (t) => t.width === i && t.height === f && t.radius === h && t.font.family === n.family && t.font.size === n.size && t.font.lineHeight === n.lineHeight && t.font.centerSteps.every((b, a) => {
12
12
  var d;
13
- return g.size === ((d = r.centerSteps[y]) == null ? void 0 : d.size);
14
- }) ? t : { font: r, height: f, radius: u, width: n }
13
+ return b.size === ((d = n.centerSteps[a]) == null ? void 0 : d.size);
14
+ }) ? t : { font: n, height: f, radius: h, width: i }
15
15
  );
16
- }, []), p = h(
16
+ }, []), s = l(null), y = m(
17
17
  (e) => {
18
- o.current = e, s();
18
+ var i;
19
+ (i = s.current) == null || i.disconnect(), s.current = null, u.current = e, o(), e && typeof ResizeObserver < "u" && (s.current = new ResizeObserver(o), s.current.observe(e));
19
20
  },
20
- [s]
21
+ [o]
21
22
  );
22
- return w(() => {
23
- const e = o.current;
24
- if (!e || typeof ResizeObserver > "u")
25
- return;
26
- const n = new ResizeObserver(s);
27
- return n.observe(e), () => n.disconnect();
28
- }, [s]), {
29
- font: i.font,
30
- height: i.height,
31
- radius: i.radius,
32
- ref: p,
33
- width: i.width
23
+ return {
24
+ font: r.font,
25
+ height: r.height,
26
+ radius: r.radius,
27
+ ref: y,
28
+ width: r.width
34
29
  };
35
30
  }
36
31
  export {
@@ -1 +1 @@
1
- {"version":3,"file":"useChartMetrics.js","sources":["../../../../src/components/charts/core/useChartMetrics.ts"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from 'react';\nimport { labelFontOf, type LabelFont } from './measureText';\n\nexport interface ChartMetrics {\n font: LabelFont;\n height: number;\n /** Raio dos cantos, lido do token: geometria de caminho nao le variavel CSS. */\n radius: number;\n ref: (node: HTMLElement | null) => void;\n width: number;\n}\n\nconst RAIO_PADRAO = 5;\n\nfunction raioDe(node: Element | null) {\n if (!node || typeof getComputedStyle !== 'function') {\n return RAIO_PADRAO;\n }\n\n return Number.parseFloat(getComputedStyle(node).getPropertyValue('--pl-radius-sm')) || RAIO_PADRAO;\n}\n\n/**\n * Mede o espaco em que o grafico sera desenhado: largura, altura e a fonte que\n * os rotulos vao usar. A area de desenho nao entra no fluxo, entao a medida e\n * sempre o que o layout concedeu, e nunca o que o proprio grafico ocupou.\n *\n * A fonte sai da mesma medida porque as duas vem do elemento e mudam juntas:\n * as margens do grafico dependem da largura dos rotulos, e a largura de um\n * rotulo depende da fonte resolvida ali.\n */\nexport function useChartMetrics(): ChartMetrics {\n const [medida, setMedida] = useState<{\n font: LabelFont;\n height: number;\n radius: number;\n width: number;\n }>(() => ({ font: labelFontOf(null), height: 0, radius: RAIO_PADRAO, width: 0 }));\n const elemento = useRef<HTMLElement | null>(null);\n\n const medir = useCallback(() => {\n const node = elemento.current;\n const width = node?.clientWidth ?? 0;\n const height = node?.clientHeight ?? 0;\n const font = labelFontOf(node);\n const radius = raioDe(node);\n\n setMedida((atual) =>\n atual.width === width &&\n atual.height === height &&\n atual.radius === radius &&\n atual.font.family === font.family &&\n atual.font.size === font.size &&\n atual.font.lineHeight === font.lineHeight &&\n atual.font.centerSteps.every((degrau, indice) => degrau.size === font.centerSteps[indice]?.size)\n ? atual\n : { font, height, radius, width },\n );\n }, []);\n\n const ref = useCallback(\n (node: HTMLElement | null) => {\n elemento.current = node;\n medir();\n },\n [medir],\n );\n\n useEffect(() => {\n const node = elemento.current;\n\n if (!node || typeof ResizeObserver === 'undefined') {\n return;\n }\n\n const observador = new ResizeObserver(medir);\n observador.observe(node);\n\n return () => observador.disconnect();\n }, [medir]);\n\n return {\n font: medida.font,\n height: medida.height,\n radius: medida.radius,\n ref,\n width: medida.width,\n };\n}\n"],"names":["RAIO_PADRAO","raioDe","node","useChartMetrics","medida","setMedida","useState","labelFontOf","elemento","useRef","medir","useCallback","width","height","font","radius","atual","degrau","indice","_a","ref","useEffect","observador"],"mappings":";;AAYA,MAAMA,IAAc;AAEpB,SAASC,EAAOC,GAAsB;AACpC,SAAI,CAACA,KAAQ,OAAO,oBAAqB,aAChCF,IAGF,OAAO,WAAW,iBAAiBE,CAAI,EAAE,iBAAiB,gBAAgB,CAAC,KAAKF;AACzF;AAWO,SAASG,IAAgC;AAC9C,QAAM,CAACC,GAAQC,CAAS,IAAIC,EAKzB,OAAO,EAAE,MAAMC,EAAY,IAAI,GAAG,QAAQ,GAAG,QAAQP,GAAa,OAAO,IAAI,GAC1EQ,IAAWC,EAA2B,IAAI,GAE1CC,IAAQC,EAAY,MAAM;AAC9B,UAAMT,IAAOM,EAAS,SAChBI,KAAQV,KAAA,gBAAAA,EAAM,gBAAe,GAC7BW,KAASX,KAAA,gBAAAA,EAAM,iBAAgB,GAC/BY,IAAOP,EAAYL,CAAI,GACvBa,IAASd,EAAOC,CAAI;AAE1B,IAAAG;AAAA,MAAU,CAACW,MACTA,EAAM,UAAUJ,KAChBI,EAAM,WAAWH,KACjBG,EAAM,WAAWD,KACjBC,EAAM,KAAK,WAAWF,EAAK,UAC3BE,EAAM,KAAK,SAASF,EAAK,QACzBE,EAAM,KAAK,eAAeF,EAAK,cAC/BE,EAAM,KAAK,YAAY,MAAM,CAACC,GAAQC;;AAAW,eAAAD,EAAO,WAASE,IAAAL,EAAK,YAAYI,CAAM,MAAvB,gBAAAC,EAA0B;AAAA,OAAI,IAC3FH,IACA,EAAE,MAAAF,GAAM,QAAAD,GAAQ,QAAAE,GAAQ,OAAAH,EAAA;AAAA,IAAM;AAAA,EAEtC,GAAG,CAAA,CAAE,GAECQ,IAAMT;AAAA,IACV,CAACT,MAA6B;AAC5B,MAAAM,EAAS,UAAUN,GACnBQ,EAAA;AAAA,IACF;AAAA,IACA,CAACA,CAAK;AAAA,EAAA;AAGR,SAAAW,EAAU,MAAM;AACd,UAAMnB,IAAOM,EAAS;AAEtB,QAAI,CAACN,KAAQ,OAAO,iBAAmB;AACrC;AAGF,UAAMoB,IAAa,IAAI,eAAeZ,CAAK;AAC3C,WAAAY,EAAW,QAAQpB,CAAI,GAEhB,MAAMoB,EAAW,WAAA;AAAA,EAC1B,GAAG,CAACZ,CAAK,CAAC,GAEH;AAAA,IACL,MAAMN,EAAO;AAAA,IACb,QAAQA,EAAO;AAAA,IACf,QAAQA,EAAO;AAAA,IACf,KAAAgB;AAAA,IACA,OAAOhB,EAAO;AAAA,EAAA;AAElB;"}
1
+ {"version":3,"file":"useChartMetrics.js","sources":["../../../../src/components/charts/core/useChartMetrics.ts"],"sourcesContent":["import { useCallback, useRef, useState } from 'react';\nimport { labelFontOf, type LabelFont } from './measureText';\n\nexport interface ChartMetrics {\n font: LabelFont;\n height: number;\n /** Raio dos cantos, lido do token: geometria de caminho nao le variavel CSS. */\n radius: number;\n ref: (node: HTMLElement | null) => void;\n width: number;\n}\n\nconst RAIO_PADRAO = 5;\n\nfunction raioDe(node: Element | null) {\n if (!node || typeof getComputedStyle !== 'function') {\n return RAIO_PADRAO;\n }\n\n return Number.parseFloat(getComputedStyle(node).getPropertyValue('--pl-radius-sm')) || RAIO_PADRAO;\n}\n\n/**\n * Mede o espaco em que o grafico sera desenhado: largura, altura e a fonte que\n * os rotulos vao usar. A area de desenho nao entra no fluxo, entao a medida e\n * sempre o que o layout concedeu, e nunca o que o proprio grafico ocupou.\n *\n * A fonte sai da mesma medida porque as duas vem do elemento e mudam juntas:\n * as margens do grafico dependem da largura dos rotulos, e a largura de um\n * rotulo depende da fonte resolvida ali.\n */\nexport function useChartMetrics(): ChartMetrics {\n const [medida, setMedida] = useState<{\n font: LabelFont;\n height: number;\n radius: number;\n width: number;\n }>(() => ({ font: labelFontOf(null), height: 0, radius: RAIO_PADRAO, width: 0 }));\n const elemento = useRef<HTMLElement | null>(null);\n\n const medir = useCallback(() => {\n const node = elemento.current;\n const width = node?.clientWidth ?? 0;\n const height = node?.clientHeight ?? 0;\n const font = labelFontOf(node);\n const radius = raioDe(node);\n\n setMedida((atual) =>\n atual.width === width &&\n atual.height === height &&\n atual.radius === radius &&\n atual.font.family === font.family &&\n atual.font.size === font.size &&\n atual.font.lineHeight === font.lineHeight &&\n atual.font.centerSteps.every((degrau, indice) => degrau.size === font.centerSteps[indice]?.size)\n ? atual\n : { font, height, radius, width },\n );\n }, []);\n\n const observador = useRef<ResizeObserver | null>(null);\n\n // O observador acompanha o elemento, e não a montagem: a área que nasce depois, ou é trocada, continua sendo medida.\n const ref = useCallback(\n (node: HTMLElement | null) => {\n observador.current?.disconnect();\n observador.current = null;\n elemento.current = node;\n medir();\n\n if (node && typeof ResizeObserver !== 'undefined') {\n observador.current = new ResizeObserver(medir);\n observador.current.observe(node);\n }\n },\n [medir],\n );\n\n return {\n font: medida.font,\n height: medida.height,\n radius: medida.radius,\n ref,\n width: medida.width,\n };\n}\n"],"names":["RAIO_PADRAO","raioDe","node","useChartMetrics","medida","setMedida","useState","labelFontOf","elemento","useRef","medir","useCallback","width","height","font","radius","atual","degrau","indice","_a","observador","ref"],"mappings":";;AAYA,MAAMA,IAAc;AAEpB,SAASC,EAAOC,GAAsB;AACpC,SAAI,CAACA,KAAQ,OAAO,oBAAqB,aAChCF,IAGF,OAAO,WAAW,iBAAiBE,CAAI,EAAE,iBAAiB,gBAAgB,CAAC,KAAKF;AACzF;AAWO,SAASG,IAAgC;AAC9C,QAAM,CAACC,GAAQC,CAAS,IAAIC,EAKzB,OAAO,EAAE,MAAMC,EAAY,IAAI,GAAG,QAAQ,GAAG,QAAQP,GAAa,OAAO,IAAI,GAC1EQ,IAAWC,EAA2B,IAAI,GAE1CC,IAAQC,EAAY,MAAM;AAC9B,UAAMT,IAAOM,EAAS,SAChBI,KAAQV,KAAA,gBAAAA,EAAM,gBAAe,GAC7BW,KAASX,KAAA,gBAAAA,EAAM,iBAAgB,GAC/BY,IAAOP,EAAYL,CAAI,GACvBa,IAASd,EAAOC,CAAI;AAE1B,IAAAG;AAAA,MAAU,CAACW,MACTA,EAAM,UAAUJ,KAChBI,EAAM,WAAWH,KACjBG,EAAM,WAAWD,KACjBC,EAAM,KAAK,WAAWF,EAAK,UAC3BE,EAAM,KAAK,SAASF,EAAK,QACzBE,EAAM,KAAK,eAAeF,EAAK,cAC/BE,EAAM,KAAK,YAAY,MAAM,CAACC,GAAQC;;AAAW,eAAAD,EAAO,WAASE,IAAAL,EAAK,YAAYI,CAAM,MAAvB,gBAAAC,EAA0B;AAAA,OAAI,IAC3FH,IACA,EAAE,MAAAF,GAAM,QAAAD,GAAQ,QAAAE,GAAQ,OAAAH,EAAA;AAAA,IAAM;AAAA,EAEtC,GAAG,CAAA,CAAE,GAECQ,IAAaX,EAA8B,IAAI,GAG/CY,IAAMV;AAAA,IACV,CAACT,MAA6B;;AAC5B,OAAAiB,IAAAC,EAAW,YAAX,QAAAD,EAAoB,cACpBC,EAAW,UAAU,MACrBZ,EAAS,UAAUN,GACnBQ,EAAA,GAEIR,KAAQ,OAAO,iBAAmB,QACpCkB,EAAW,UAAU,IAAI,eAAeV,CAAK,GAC7CU,EAAW,QAAQ,QAAQlB,CAAI;AAAA,IAEnC;AAAA,IACA,CAACQ,CAAK;AAAA,EAAA;AAGR,SAAO;AAAA,IACL,MAAMN,EAAO;AAAA,IACb,QAAQA,EAAO;AAAA,IACf,QAAQA,EAAO;AAAA,IACf,KAAAiB;AAAA,IACA,OAAOjB,EAAO;AAAA,EAAA;AAElB;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react");function T({defaultHiddenSeries:r=[],hiddenSeries:u,onHiddenSeriesChange:c}){const[a,f]=o.useState(r),t=u??a,e=o.useCallback(s=>{const l=t.includes(s)?t.filter(g=>g!==s):[...t,s];u===void 0&&f(l),c==null||c(l)},[u,t,c]);return{isHidden:o.useCallback(s=>t.includes(s),[t]),toggle:e}}exports.useSeriesToggle=T;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react");function m({defaultHiddenSeries:l=[],hiddenSeries:o,labels:t,onHiddenSeriesChange:u}){const[f,v]=e.useState(l),[i,O]=e.useState(null),c=o??f,r=t!==void 0&&t.length>0&&t.every(s=>c.includes(s))&&i?i:c,g=e.useCallback(s=>{const a=c.includes(s)?c.filter(n=>n!==s):[...c,s];o===void 0&&v(a),O(t!=null&&t.every(n=>a.includes(n))?c:null),u==null||u(a)},[o,t,c,u]);return{isHidden:e.useCallback(s=>c.includes(s),[c]),isOutOfScale:e.useCallback(s=>r.includes(s),[r]),toggle:g}}function y(l,o){const t=l.filter(u=>!o(u.label));return t.length>0?t:l}exports.seriesInScale=y;exports.useSeriesToggle=m;
2
2
  //# sourceMappingURL=useSeriesToggle.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useSeriesToggle.cjs","sources":["../../../../src/components/charts/core/useSeriesToggle.ts"],"sourcesContent":["import { useCallback, useState } from 'react';\n\nexport interface UseSeriesToggleOptions {\n defaultHiddenSeries?: readonly string[];\n hiddenSeries?: readonly string[];\n onHiddenSeriesChange?: (hidden: readonly string[]) => void;\n}\n\nexport interface SeriesToggle {\n isHidden: (label: string) => boolean;\n toggle: (label: string) => void;\n}\n\n/**\n * Quais series estao ocultas. Controlado quando o produto informa\n * `hiddenSeries`, nao controlado em caso contrario, conforme `COMPONENTS.md`\n * secao 6. Trabalha com rotulos porque e o rotulo que a legenda exibe e o que\n * o produto reconhece; indices mudariam de significado ao reordenar as series.\n */\nexport function useSeriesToggle({\n defaultHiddenSeries = [],\n hiddenSeries,\n onHiddenSeriesChange,\n}: UseSeriesToggleOptions): SeriesToggle {\n const [internas, setInternas] = useState<readonly string[]>(defaultHiddenSeries);\n const ocultas = hiddenSeries ?? internas;\n\n const toggle = useCallback(\n (label: string) => {\n const proximas = ocultas.includes(label)\n ? ocultas.filter((oculta) => oculta !== label)\n : [...ocultas, label];\n\n if (hiddenSeries === undefined) {\n setInternas(proximas);\n }\n\n onHiddenSeriesChange?.(proximas);\n },\n [hiddenSeries, ocultas, onHiddenSeriesChange],\n );\n\n return {\n isHidden: useCallback((label: string) => ocultas.includes(label), [ocultas]),\n toggle,\n };\n}\n"],"names":["useSeriesToggle","defaultHiddenSeries","hiddenSeries","onHiddenSeriesChange","internas","setInternas","useState","ocultas","toggle","useCallback","label","proximas","oculta"],"mappings":"yGAmBO,SAASA,EAAgB,CAC9B,oBAAAC,EAAsB,CAAA,EACtB,aAAAC,EACA,qBAAAC,CACF,EAAyC,CACvC,KAAM,CAACC,EAAUC,CAAW,EAAIC,EAAAA,SAA4BL,CAAmB,EACzEM,EAAUL,GAAgBE,EAE1BI,EAASC,EAAAA,YACZC,GAAkB,CACjB,MAAMC,EAAWJ,EAAQ,SAASG,CAAK,EACnCH,EAAQ,OAAQK,GAAWA,IAAWF,CAAK,EAC3C,CAAC,GAAGH,EAASG,CAAK,EAElBR,IAAiB,QACnBG,EAAYM,CAAQ,EAGtBR,GAAA,MAAAA,EAAuBQ,EACzB,EACA,CAACT,EAAcK,EAASJ,CAAoB,CAAA,EAG9C,MAAO,CACL,SAAUM,EAAAA,YAAaC,GAAkBH,EAAQ,SAASG,CAAK,EAAG,CAACH,CAAO,CAAC,EAC3E,OAAAC,CAAA,CAEJ"}
1
+ {"version":3,"file":"useSeriesToggle.cjs","sources":["../../../../src/components/charts/core/useSeriesToggle.ts"],"sourcesContent":["import { useCallback, useState } from 'react';\n\nexport interface UseSeriesToggleOptions {\n defaultHiddenSeries?: readonly string[];\n hiddenSeries?: readonly string[];\n /** Todos os rotulos; com eles, desligar a ultima serie mantem a escala de antes. */\n labels?: readonly string[];\n onHiddenSeriesChange?: (hidden: readonly string[]) => void;\n}\n\nexport interface SeriesToggle {\n isHidden: (label: string) => boolean;\n /**\n * Se a serie fica fora da escala de valores. E o `isHidden` enquanto alguma esta ligada; com todas desligadas\n * pela legenda, vale o que estava ligado antes da ultima sair, e a escala nao se mexe enquanto ela some.\n */\n isOutOfScale: (label: string) => boolean;\n toggle: (label: string) => void;\n}\n\n/**\n * Quais series estao ocultas. Controlado quando o produto informa\n * `hiddenSeries`, nao controlado em caso contrario, conforme `COMPONENTS.md`\n * secao 6. Trabalha com rotulos porque e o rotulo que a legenda exibe e o que\n * o produto reconhece; indices mudariam de significado ao reordenar as series.\n */\nexport function useSeriesToggle({\n defaultHiddenSeries = [],\n hiddenSeries,\n labels,\n onHiddenSeriesChange,\n}: UseSeriesToggleOptions): SeriesToggle {\n const [internas, setInternas] = useState<readonly string[]>(defaultHiddenSeries);\n const [ocultasAntesDaUltima, setOcultasAntesDaUltima] = useState<readonly string[] | null>(null);\n const ocultas = hiddenSeries ?? internas;\n const todasOcultas = labels !== undefined && labels.length > 0 && labels.every((label) => ocultas.includes(label));\n const ocultasDaEscala = todasOcultas && ocultasAntesDaUltima ? ocultasAntesDaUltima : ocultas;\n\n const toggle = useCallback(\n (label: string) => {\n const proximas = ocultas.includes(label)\n ? ocultas.filter((oculta) => oculta !== label)\n : [...ocultas, label];\n\n if (hiddenSeries === undefined) {\n setInternas(proximas);\n }\n\n setOcultasAntesDaUltima(labels?.every((rotulo) => proximas.includes(rotulo)) ? ocultas : null);\n\n onHiddenSeriesChange?.(proximas);\n },\n [hiddenSeries, labels, ocultas, onHiddenSeriesChange],\n );\n\n return {\n isHidden: useCallback((label: string) => ocultas.includes(label), [ocultas]),\n isOutOfScale: useCallback((label: string) => ocultasDaEscala.includes(label), [ocultasDaEscala]),\n toggle,\n };\n}\n\n/**\n * Series que entram na escala de valores, ou todas quando nenhuma entra. Sem isso a escala desabava ao\n * desligar a ultima, e ela saia esticada para fora do grafico em vez de encolher no lugar.\n */\nexport function seriesInScale<T extends { label: string }>(series: readonly T[], isHidden: (label: string) => boolean) {\n const visiveis = series.filter((serie) => !isHidden(serie.label));\n\n return visiveis.length > 0 ? visiveis : series;\n}\n"],"names":["useSeriesToggle","defaultHiddenSeries","hiddenSeries","labels","onHiddenSeriesChange","internas","setInternas","useState","ocultasAntesDaUltima","setOcultasAntesDaUltima","ocultas","ocultasDaEscala","label","toggle","useCallback","proximas","oculta","rotulo","seriesInScale","series","isHidden","visiveis","serie"],"mappings":"yGA0BO,SAASA,EAAgB,CAC9B,oBAAAC,EAAsB,CAAA,EACtB,aAAAC,EACA,OAAAC,EACA,qBAAAC,CACF,EAAyC,CACvC,KAAM,CAACC,EAAUC,CAAW,EAAIC,EAAAA,SAA4BN,CAAmB,EACzE,CAACO,EAAsBC,CAAuB,EAAIF,EAAAA,SAAmC,IAAI,EACzFG,EAAUR,GAAgBG,EAE1BM,EADeR,IAAW,QAAaA,EAAO,OAAS,GAAKA,EAAO,MAAOS,GAAUF,EAAQ,SAASE,CAAK,CAAC,GACzEJ,EAAuBA,EAAuBE,EAEhFG,EAASC,EAAAA,YACZF,GAAkB,CACjB,MAAMG,EAAWL,EAAQ,SAASE,CAAK,EACnCF,EAAQ,OAAQM,GAAWA,IAAWJ,CAAK,EAC3C,CAAC,GAAGF,EAASE,CAAK,EAElBV,IAAiB,QACnBI,EAAYS,CAAQ,EAGtBN,EAAwBN,GAAA,MAAAA,EAAQ,MAAOc,GAAWF,EAAS,SAASE,CAAM,GAAKP,EAAU,IAAI,EAE7FN,GAAA,MAAAA,EAAuBW,EACzB,EACA,CAACb,EAAcC,EAAQO,EAASN,CAAoB,CAAA,EAGtD,MAAO,CACL,SAAUU,EAAAA,YAAaF,GAAkBF,EAAQ,SAASE,CAAK,EAAG,CAACF,CAAO,CAAC,EAC3E,aAAcI,EAAAA,YAAaF,GAAkBD,EAAgB,SAASC,CAAK,EAAG,CAACD,CAAe,CAAC,EAC/F,OAAAE,CAAA,CAEJ,CAMO,SAASK,EAA2CC,EAAsBC,EAAsC,CACrH,MAAMC,EAAWF,EAAO,OAAQG,GAAU,CAACF,EAASE,EAAM,KAAK,CAAC,EAEhE,OAAOD,EAAS,OAAS,EAAIA,EAAWF,CAC1C"}
@@ -1,22 +1,29 @@
1
- import { useState as k, useCallback as f } from "react";
2
- function I({
3
- defaultHiddenSeries: l = [],
1
+ import { useState as v, useCallback as a } from "react";
2
+ function A({
3
+ defaultHiddenSeries: n = [],
4
4
  hiddenSeries: o,
5
- onHiddenSeriesChange: s
5
+ labels: t,
6
+ onHiddenSeriesChange: u
6
7
  }) {
7
- const [m, p] = k(l), t = o ?? m, r = f(
8
- (c) => {
9
- const u = t.includes(c) ? t.filter((x) => x !== c) : [...t, c];
10
- o === void 0 && p(u), s == null || s(u);
8
+ const [m, O] = v(n), [r, p] = v(null), c = o ?? m, f = t !== void 0 && t.length > 0 && t.every((s) => c.includes(s)) && r ? r : c, D = a(
9
+ (s) => {
10
+ const i = c.includes(s) ? c.filter((l) => l !== s) : [...c, s];
11
+ o === void 0 && O(i), p(t != null && t.every((l) => i.includes(l)) ? c : null), u == null || u(i);
11
12
  },
12
- [o, t, s]
13
+ [o, t, c, u]
13
14
  );
14
15
  return {
15
- isHidden: f((c) => t.includes(c), [t]),
16
- toggle: r
16
+ isHidden: a((s) => c.includes(s), [c]),
17
+ isOutOfScale: a((s) => f.includes(s), [f]),
18
+ toggle: D
17
19
  };
18
20
  }
21
+ function I(n, o) {
22
+ const t = n.filter((u) => !o(u.label));
23
+ return t.length > 0 ? t : n;
24
+ }
19
25
  export {
20
- I as useSeriesToggle
26
+ I as seriesInScale,
27
+ A as useSeriesToggle
21
28
  };
22
29
  //# sourceMappingURL=useSeriesToggle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useSeriesToggle.js","sources":["../../../../src/components/charts/core/useSeriesToggle.ts"],"sourcesContent":["import { useCallback, useState } from 'react';\n\nexport interface UseSeriesToggleOptions {\n defaultHiddenSeries?: readonly string[];\n hiddenSeries?: readonly string[];\n onHiddenSeriesChange?: (hidden: readonly string[]) => void;\n}\n\nexport interface SeriesToggle {\n isHidden: (label: string) => boolean;\n toggle: (label: string) => void;\n}\n\n/**\n * Quais series estao ocultas. Controlado quando o produto informa\n * `hiddenSeries`, nao controlado em caso contrario, conforme `COMPONENTS.md`\n * secao 6. Trabalha com rotulos porque e o rotulo que a legenda exibe e o que\n * o produto reconhece; indices mudariam de significado ao reordenar as series.\n */\nexport function useSeriesToggle({\n defaultHiddenSeries = [],\n hiddenSeries,\n onHiddenSeriesChange,\n}: UseSeriesToggleOptions): SeriesToggle {\n const [internas, setInternas] = useState<readonly string[]>(defaultHiddenSeries);\n const ocultas = hiddenSeries ?? internas;\n\n const toggle = useCallback(\n (label: string) => {\n const proximas = ocultas.includes(label)\n ? ocultas.filter((oculta) => oculta !== label)\n : [...ocultas, label];\n\n if (hiddenSeries === undefined) {\n setInternas(proximas);\n }\n\n onHiddenSeriesChange?.(proximas);\n },\n [hiddenSeries, ocultas, onHiddenSeriesChange],\n );\n\n return {\n isHidden: useCallback((label: string) => ocultas.includes(label), [ocultas]),\n toggle,\n };\n}\n"],"names":["useSeriesToggle","defaultHiddenSeries","hiddenSeries","onHiddenSeriesChange","internas","setInternas","useState","ocultas","toggle","useCallback","label","proximas","oculta"],"mappings":";AAmBO,SAASA,EAAgB;AAAA,EAC9B,qBAAAC,IAAsB,CAAA;AAAA,EACtB,cAAAC;AAAA,EACA,sBAAAC;AACF,GAAyC;AACvC,QAAM,CAACC,GAAUC,CAAW,IAAIC,EAA4BL,CAAmB,GACzEM,IAAUL,KAAgBE,GAE1BI,IAASC;AAAA,IACb,CAACC,MAAkB;AACjB,YAAMC,IAAWJ,EAAQ,SAASG,CAAK,IACnCH,EAAQ,OAAO,CAACK,MAAWA,MAAWF,CAAK,IAC3C,CAAC,GAAGH,GAASG,CAAK;AAEtB,MAAIR,MAAiB,UACnBG,EAAYM,CAAQ,GAGtBR,KAAA,QAAAA,EAAuBQ;AAAA,IACzB;AAAA,IACA,CAACT,GAAcK,GAASJ,CAAoB;AAAA,EAAA;AAG9C,SAAO;AAAA,IACL,UAAUM,EAAY,CAACC,MAAkBH,EAAQ,SAASG,CAAK,GAAG,CAACH,CAAO,CAAC;AAAA,IAC3E,QAAAC;AAAA,EAAA;AAEJ;"}
1
+ {"version":3,"file":"useSeriesToggle.js","sources":["../../../../src/components/charts/core/useSeriesToggle.ts"],"sourcesContent":["import { useCallback, useState } from 'react';\n\nexport interface UseSeriesToggleOptions {\n defaultHiddenSeries?: readonly string[];\n hiddenSeries?: readonly string[];\n /** Todos os rotulos; com eles, desligar a ultima serie mantem a escala de antes. */\n labels?: readonly string[];\n onHiddenSeriesChange?: (hidden: readonly string[]) => void;\n}\n\nexport interface SeriesToggle {\n isHidden: (label: string) => boolean;\n /**\n * Se a serie fica fora da escala de valores. E o `isHidden` enquanto alguma esta ligada; com todas desligadas\n * pela legenda, vale o que estava ligado antes da ultima sair, e a escala nao se mexe enquanto ela some.\n */\n isOutOfScale: (label: string) => boolean;\n toggle: (label: string) => void;\n}\n\n/**\n * Quais series estao ocultas. Controlado quando o produto informa\n * `hiddenSeries`, nao controlado em caso contrario, conforme `COMPONENTS.md`\n * secao 6. Trabalha com rotulos porque e o rotulo que a legenda exibe e o que\n * o produto reconhece; indices mudariam de significado ao reordenar as series.\n */\nexport function useSeriesToggle({\n defaultHiddenSeries = [],\n hiddenSeries,\n labels,\n onHiddenSeriesChange,\n}: UseSeriesToggleOptions): SeriesToggle {\n const [internas, setInternas] = useState<readonly string[]>(defaultHiddenSeries);\n const [ocultasAntesDaUltima, setOcultasAntesDaUltima] = useState<readonly string[] | null>(null);\n const ocultas = hiddenSeries ?? internas;\n const todasOcultas = labels !== undefined && labels.length > 0 && labels.every((label) => ocultas.includes(label));\n const ocultasDaEscala = todasOcultas && ocultasAntesDaUltima ? ocultasAntesDaUltima : ocultas;\n\n const toggle = useCallback(\n (label: string) => {\n const proximas = ocultas.includes(label)\n ? ocultas.filter((oculta) => oculta !== label)\n : [...ocultas, label];\n\n if (hiddenSeries === undefined) {\n setInternas(proximas);\n }\n\n setOcultasAntesDaUltima(labels?.every((rotulo) => proximas.includes(rotulo)) ? ocultas : null);\n\n onHiddenSeriesChange?.(proximas);\n },\n [hiddenSeries, labels, ocultas, onHiddenSeriesChange],\n );\n\n return {\n isHidden: useCallback((label: string) => ocultas.includes(label), [ocultas]),\n isOutOfScale: useCallback((label: string) => ocultasDaEscala.includes(label), [ocultasDaEscala]),\n toggle,\n };\n}\n\n/**\n * Series que entram na escala de valores, ou todas quando nenhuma entra. Sem isso a escala desabava ao\n * desligar a ultima, e ela saia esticada para fora do grafico em vez de encolher no lugar.\n */\nexport function seriesInScale<T extends { label: string }>(series: readonly T[], isHidden: (label: string) => boolean) {\n const visiveis = series.filter((serie) => !isHidden(serie.label));\n\n return visiveis.length > 0 ? visiveis : series;\n}\n"],"names":["useSeriesToggle","defaultHiddenSeries","hiddenSeries","labels","onHiddenSeriesChange","internas","setInternas","useState","ocultasAntesDaUltima","setOcultasAntesDaUltima","ocultas","ocultasDaEscala","label","toggle","useCallback","proximas","oculta","rotulo","seriesInScale","series","isHidden","visiveis","serie"],"mappings":";AA0BO,SAASA,EAAgB;AAAA,EAC9B,qBAAAC,IAAsB,CAAA;AAAA,EACtB,cAAAC;AAAA,EACA,QAAAC;AAAA,EACA,sBAAAC;AACF,GAAyC;AACvC,QAAM,CAACC,GAAUC,CAAW,IAAIC,EAA4BN,CAAmB,GACzE,CAACO,GAAsBC,CAAuB,IAAIF,EAAmC,IAAI,GACzFG,IAAUR,KAAgBG,GAE1BM,IADeR,MAAW,UAAaA,EAAO,SAAS,KAAKA,EAAO,MAAM,CAACS,MAAUF,EAAQ,SAASE,CAAK,CAAC,KACzEJ,IAAuBA,IAAuBE,GAEhFG,IAASC;AAAA,IACb,CAACF,MAAkB;AACjB,YAAMG,IAAWL,EAAQ,SAASE,CAAK,IACnCF,EAAQ,OAAO,CAACM,MAAWA,MAAWJ,CAAK,IAC3C,CAAC,GAAGF,GAASE,CAAK;AAEtB,MAAIV,MAAiB,UACnBI,EAAYS,CAAQ,GAGtBN,EAAwBN,KAAA,QAAAA,EAAQ,MAAM,CAACc,MAAWF,EAAS,SAASE,CAAM,KAAKP,IAAU,IAAI,GAE7FN,KAAA,QAAAA,EAAuBW;AAAA,IACzB;AAAA,IACA,CAACb,GAAcC,GAAQO,GAASN,CAAoB;AAAA,EAAA;AAGtD,SAAO;AAAA,IACL,UAAUU,EAAY,CAACF,MAAkBF,EAAQ,SAASE,CAAK,GAAG,CAACF,CAAO,CAAC;AAAA,IAC3E,cAAcI,EAAY,CAACF,MAAkBD,EAAgB,SAASC,CAAK,GAAG,CAACD,CAAe,CAAC;AAAA,IAC/F,QAAAE;AAAA,EAAA;AAEJ;AAMO,SAASK,EAA2CC,GAAsBC,GAAsC;AACrH,QAAMC,IAAWF,EAAO,OAAO,CAACG,MAAU,CAACF,EAASE,EAAM,KAAK,CAAC;AAEhE,SAAOD,EAAS,SAAS,IAAIA,IAAWF;AAC1C;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("react/jsx-runtime"),j=require("react"),o=require("./Accordion.module.css.cjs"),S=require("../../../hooks/useSelection/useSelection.cjs"),q=require("../../icons/icons.cjs");function A({className:r,defaultExpandedKeys:a,expandedKeys:d,items:s,multiple:y=!1,onExpandedChange:n,iconPosition:u="right",divider:x=!0,...N}){const f=`accordion-${j.useId()}`,k=j.useRef(new Map),t=j.useMemo(()=>s.map(e=>({key:e.key,disabled:e.disabled,textValue:e.label})),[s]),h=S.useSelection({allowEmpty:!0,items:t,mode:y?"multiple":"single",defaultSelectedKeys:d===void 0?a:void 0,selectedKeys:d,onSelectionChange:e=>n==null?void 0:n([...e])});function v(e,c){var p,$,w;let l;e.key==="ArrowDown"?l=g(t,c,1):e.key==="ArrowUp"?l=g(t,c,-1):e.key==="Home"?l=(p=t.find(b=>!b.disabled))==null?void 0:p.key:e.key==="End"&&(l=($=[...t].reverse().find(b=>!b.disabled))==null?void 0:$.key),l&&(e.preventDefault(),(w=k.current.get(l))==null||w.focus())}return i.jsx("div",{...N,className:[o.default.accordion,x&&o.default.divided,r].filter(Boolean).join(" "),children:s.map(e=>{const c=h.selectedKeys.has(e.key);return i.jsxs("div",{className:o.default.item,children:[i.jsx("h3",{className:o.default.heading,children:i.jsxs("button",{ref:l=>{l?k.current.set(e.key,l):k.current.delete(e.key)},className:[o.default.trigger,u==="left"&&o.default.iconLeft].filter(Boolean).join(" "),type:"button",id:`${f}-${e.key}`,"aria-controls":`${f}-${e.key}-panel`,"aria-expanded":c,disabled:e.disabled,onClick:()=>h.select(e.key),onKeyDown:l=>v(l,e.key),children:[i.jsx("span",{className:o.default.label,children:e.label}),i.jsx(q.IconChevronDown,{className:[o.default.icon,c&&o.default.iconOpen].filter(Boolean).join(" "),size:16})]})}),i.jsx("div",{className:o.default.panel,id:`${f}-${e.key}-panel`,role:"region","aria-labelledby":`${f}-${e.key}`,hidden:!c,children:e.content})]},e.key)})})}function g(r,a,d){const s=r.length,y=r.findIndex(n=>n.key===a);for(let n=1;n<=s;n+=1){const u=r[(y+d*n+s*s)%s];if(!u.disabled)return u.key}return a}exports.Accordion=A;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),f=require("react"),o=require("./Accordion.module.css.cjs"),q=require("../../../hooks/useSelection/useSelection.cjs"),D=require("../../icons/icons.cjs");function I({aberto:s,abrir:t,...d}){const l=f.useRef(null);return f.useEffect(()=>{const c=l.current;if(!(!c||s||!t))return c.setAttribute("hidden","until-found"),c.addEventListener("beforematch",t),()=>c.removeEventListener("beforematch",t)},[s,t]),r.jsx("div",{...d,hidden:!s,ref:l})}function K({className:s,defaultExpandedKeys:t,expandedKeys:d,items:l,multiple:c=!1,onExpandedChange:i,iconPosition:y="right",divider:x=!0,headingLevel:g=3,...N}){const k=`accordion-${f.useId()}`,A=`h${g}`,b=f.useRef(new Map),u=f.useMemo(()=>l.map(e=>({key:e.key,disabled:e.disabled,textValue:e.label})),[l]),h=q.useSelection({allowEmpty:!0,items:u,mode:c?"multiple":"single",defaultSelectedKeys:d===void 0?t:void 0,selectedKeys:d,onSelectionChange:e=>i==null?void 0:i([...e])});function S(e,a){var p,v,$;let n;e.key==="ArrowDown"?n=w(u,a,1):e.key==="ArrowUp"?n=w(u,a,-1):e.key==="Home"?n=(p=u.find(j=>!j.disabled))==null?void 0:p.key:e.key==="End"&&(n=(v=[...u].reverse().find(j=>!j.disabled))==null?void 0:v.key),n&&(e.preventDefault(),($=b.current.get(n))==null||$.focus())}return r.jsx("div",{...N,className:[o.default.accordion,x&&o.default.divided,s].filter(Boolean).join(" "),children:l.map(e=>{const a=h.selectedKeys.has(e.key);return r.jsxs("div",{className:o.default.item,children:[r.jsx(A,{className:o.default.heading,id:e.id,children:r.jsxs("button",{ref:n=>{n?b.current.set(e.key,n):b.current.delete(e.key)},className:[o.default.trigger,y==="left"&&o.default.iconLeft].filter(Boolean).join(" "),type:"button",id:`${k}-${e.key}`,"aria-controls":`${k}-${e.key}-panel`,"aria-expanded":a,disabled:e.disabled,onClick:()=>h.select(e.key),onKeyDown:n=>S(n,e.key),children:[r.jsx("span",{className:o.default.label,children:e.label}),r.jsx(D.IconChevronDown,{className:[o.default.icon,a&&o.default.iconOpen].filter(Boolean).join(" "),size:16})]})}),r.jsx(I,{aberto:a,abrir:e.disabled?void 0:()=>h.select(e.key),"aria-labelledby":`${k}-${e.key}`,className:o.default.panel,id:`${k}-${e.key}-panel`,role:"region",children:e.content})]},e.key)})})}function w(s,t,d){const l=s.length,c=s.findIndex(i=>i.key===t);for(let i=1;i<=l;i+=1){const y=s[(c+d*i+l*l)%l];if(!y.disabled)return y.key}return t}exports.Accordion=K;
2
2
  //# sourceMappingURL=Accordion.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Accordion.cjs","sources":["../../../../src/components/data-display/Accordion/Accordion.tsx"],"sourcesContent":["import {\n useId,\n useMemo,\n useRef,\n type ComponentPropsWithRef,\n type KeyboardEvent,\n type ReactNode,\n} from 'react';\nimport { useSelection, type SelectionItem } from '../../../hooks/useSelection';\nimport styles from './Accordion.module.css';\nimport { IconChevronDown } from '../../icons';\n\nexport interface AccordionItem {\n content: ReactNode;\n disabled?: boolean;\n key: string;\n label: string;\n}\n\nexport type AccordionIconPosition = 'left' | 'right';\n\nexport interface AccordionProps extends ComponentPropsWithRef<'div'> {\n defaultExpandedKeys?: readonly string[];\n expandedKeys?: readonly string[];\n items: readonly AccordionItem[];\n multiple?: boolean;\n onExpandedChange?: (keys: readonly string[]) => void;\n /** Direita e a convencao da web; esquerda serve a rotulos curtos em coluna estreita. */\n iconPosition?: AccordionIconPosition;\n /** Divisor entre as secoes, com a folga que ele exige. */\n divider?: boolean;\n}\n\nexport function Accordion({\n className,\n defaultExpandedKeys,\n expandedKeys,\n items,\n multiple = false,\n onExpandedChange,\n iconPosition = 'right',\n divider = true,\n ...props\n}: AccordionProps) {\n const baseId = `accordion-${useId()}`;\n const nodes = useRef(new Map<string, HTMLElement>());\n const collection = useMemo<SelectionItem[]>(\n () => items.map((item) => ({ key: item.key, disabled: item.disabled, textValue: item.label })),\n [items],\n );\n const selection = useSelection({\n // Uma secao aberta fecha ao ser clicada de novo, e nenhuma aberta e um\n // estado valido do acordeao — ao contrario de uma aba, que sempre tem uma.\n allowEmpty: true,\n items: collection,\n mode: multiple ? 'multiple' : 'single',\n defaultSelectedKeys: expandedKeys === undefined ? defaultExpandedKeys : undefined,\n selectedKeys: expandedKeys,\n onSelectionChange: (keys) => onExpandedChange?.([...keys]),\n });\n\n function handleKeyDown(event: KeyboardEvent<HTMLButtonElement>, key: string) {\n let destino: string | undefined;\n\n if (event.key === 'ArrowDown') {\n destino = proxima(collection, key, 1);\n } else if (event.key === 'ArrowUp') {\n destino = proxima(collection, key, -1);\n } else if (event.key === 'Home') {\n destino = collection.find((item) => !item.disabled)?.key;\n } else if (event.key === 'End') {\n destino = [...collection].reverse().find((item) => !item.disabled)?.key;\n }\n\n if (destino) {\n event.preventDefault();\n nodes.current.get(destino)?.focus();\n }\n }\n\n return (\n <div\n {...props}\n className={[styles.accordion, divider && styles.divided, className].filter(Boolean).join(' ')}\n >\n {items.map((item) => {\n const aberto = selection.selectedKeys.has(item.key);\n\n return (\n <div className={styles.item} key={item.key}>\n <h3 className={styles.heading}>\n <button\n ref={(node) => {\n if (node) {\n nodes.current.set(item.key, node);\n } else {\n nodes.current.delete(item.key);\n }\n }}\n className={[styles.trigger, iconPosition === 'left' && styles.iconLeft].filter(Boolean).join(' ')}\n type=\"button\"\n id={`${baseId}-${item.key}`}\n aria-controls={`${baseId}-${item.key}-panel`}\n aria-expanded={aberto}\n disabled={item.disabled}\n onClick={() => selection.select(item.key)}\n onKeyDown={(event) => handleKeyDown(event, item.key)}\n >\n <span className={styles.label}>{item.label}</span>\n <IconChevronDown className={[styles.icon, aberto && styles.iconOpen].filter(Boolean).join(' ')} size={16} />\n </button>\n </h3>\n <div\n className={styles.panel}\n id={`${baseId}-${item.key}-panel`}\n role=\"region\"\n aria-labelledby={`${baseId}-${item.key}`}\n hidden={!aberto}\n >\n {item.content}\n </div>\n </div>\n );\n })}\n </div>\n );\n}\n\nfunction proxima(items: readonly SelectionItem[], from: string, passo: 1 | -1) {\n const total = items.length;\n const inicio = items.findIndex((item) => item.key === from);\n\n for (let i = 1; i <= total; i += 1) {\n const item = items[(inicio + passo * i + total * total) % total];\n if (!item.disabled) {\n return item.key;\n }\n }\n\n return from;\n}\n"],"names":["Accordion","className","defaultExpandedKeys","expandedKeys","items","multiple","onExpandedChange","iconPosition","divider","props","baseId","useId","nodes","useRef","collection","useMemo","item","selection","useSelection","keys","handleKeyDown","event","key","destino","proxima","_a","_b","_c","jsx","styles","aberto","jsxs","node","IconChevronDown","from","passo","total","inicio","i"],"mappings":"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"}
1
+ {"version":3,"file":"Accordion.cjs","sources":["../../../../src/components/data-display/Accordion/Accordion.tsx"],"sourcesContent":["import {\n useEffect,\n useId,\n useMemo,\n useRef,\n type ComponentPropsWithRef,\n type KeyboardEvent,\n type ReactNode,\n} from 'react';\nimport { useSelection, type SelectionItem } from '../../../hooks/useSelection';\nimport styles from './Accordion.module.css';\nimport { IconChevronDown } from '../../icons';\n\nexport interface AccordionItem {\n content: ReactNode;\n disabled?: boolean;\n /** Id do cabecalho, para um link de ancora apontar a secao. */\n id?: string;\n key: string;\n label: string;\n}\n\nexport type AccordionIconPosition = 'left' | 'right';\nexport type AccordionHeadingLevel = 2 | 3 | 4 | 5 | 6;\n\nexport interface AccordionProps extends ComponentPropsWithRef<'div'> {\n defaultExpandedKeys?: readonly string[];\n expandedKeys?: readonly string[];\n items: readonly AccordionItem[];\n multiple?: boolean;\n onExpandedChange?: (keys: readonly string[]) => void;\n /** Direita e a convencao da web; esquerda serve a rotulos curtos em coluna estreita. */\n iconPosition?: AccordionIconPosition;\n /** Divisor entre as secoes, com a folga que ele exige. */\n divider?: boolean;\n /** Nivel do titulo de cada secao, na hierarquia da pagina em que o acordeao esta. */\n headingLevel?: AccordionHeadingLevel;\n}\n\ninterface PainelProps extends ComponentPropsWithRef<'div'> {\n aberto: boolean;\n /** Sem ele, o painel fechado fica fora da busca da pagina. */\n abrir?: () => void;\n}\n\n/**\n * Painel fechado com `hidden=\"until-found\"`: o Ctrl+F do navegador acha o texto dele, e o evento `beforematch`\n * abre a secao. O atributo entra depois da montagem, porque o React so conhece o `hidden` booleano.\n */\nfunction Painel({ aberto, abrir, ...props }: PainelProps) {\n const ref = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const painel = ref.current;\n\n if (!painel || aberto || !abrir) {\n return;\n }\n\n painel.setAttribute('hidden', 'until-found');\n painel.addEventListener('beforematch', abrir);\n\n return () => painel.removeEventListener('beforematch', abrir);\n }, [aberto, abrir]);\n\n return <div {...props} hidden={!aberto} ref={ref} />;\n}\n\nexport function Accordion({\n className,\n defaultExpandedKeys,\n expandedKeys,\n items,\n multiple = false,\n onExpandedChange,\n iconPosition = 'right',\n divider = true,\n headingLevel = 3,\n ...props\n}: AccordionProps) {\n const baseId = `accordion-${useId()}`;\n const Titulo = `h${headingLevel}` as const;\n const nodes = useRef(new Map<string, HTMLElement>());\n const collection = useMemo<SelectionItem[]>(\n () => items.map((item) => ({ key: item.key, disabled: item.disabled, textValue: item.label })),\n [items],\n );\n const selection = useSelection({\n // Uma secao aberta fecha ao ser clicada de novo, e nenhuma aberta e um\n // estado valido do acordeao — ao contrario de uma aba, que sempre tem uma.\n allowEmpty: true,\n items: collection,\n mode: multiple ? 'multiple' : 'single',\n defaultSelectedKeys: expandedKeys === undefined ? defaultExpandedKeys : undefined,\n selectedKeys: expandedKeys,\n onSelectionChange: (keys) => onExpandedChange?.([...keys]),\n });\n\n function handleKeyDown(event: KeyboardEvent<HTMLButtonElement>, key: string) {\n let destino: string | undefined;\n\n if (event.key === 'ArrowDown') {\n destino = proxima(collection, key, 1);\n } else if (event.key === 'ArrowUp') {\n destino = proxima(collection, key, -1);\n } else if (event.key === 'Home') {\n destino = collection.find((item) => !item.disabled)?.key;\n } else if (event.key === 'End') {\n destino = [...collection].reverse().find((item) => !item.disabled)?.key;\n }\n\n if (destino) {\n event.preventDefault();\n nodes.current.get(destino)?.focus();\n }\n }\n\n return (\n <div\n {...props}\n className={[styles.accordion, divider && styles.divided, className].filter(Boolean).join(' ')}\n >\n {items.map((item) => {\n const aberto = selection.selectedKeys.has(item.key);\n\n return (\n <div className={styles.item} key={item.key}>\n <Titulo className={styles.heading} id={item.id}>\n <button\n ref={(node) => {\n if (node) {\n nodes.current.set(item.key, node);\n } else {\n nodes.current.delete(item.key);\n }\n }}\n className={[styles.trigger, iconPosition === 'left' && styles.iconLeft].filter(Boolean).join(' ')}\n type=\"button\"\n id={`${baseId}-${item.key}`}\n aria-controls={`${baseId}-${item.key}-panel`}\n aria-expanded={aberto}\n disabled={item.disabled}\n onClick={() => selection.select(item.key)}\n onKeyDown={(event) => handleKeyDown(event, item.key)}\n >\n <span className={styles.label}>{item.label}</span>\n <IconChevronDown className={[styles.icon, aberto && styles.iconOpen].filter(Boolean).join(' ')} size={16} />\n </button>\n </Titulo>\n <Painel\n aberto={aberto}\n abrir={item.disabled ? undefined : () => selection.select(item.key)}\n aria-labelledby={`${baseId}-${item.key}`}\n className={styles.panel}\n id={`${baseId}-${item.key}-panel`}\n role=\"region\"\n >\n {item.content}\n </Painel>\n </div>\n );\n })}\n </div>\n );\n}\n\nfunction proxima(items: readonly SelectionItem[], from: string, passo: 1 | -1) {\n const total = items.length;\n const inicio = items.findIndex((item) => item.key === from);\n\n for (let i = 1; i <= total; i += 1) {\n const item = items[(inicio + passo * i + total * total) % total];\n if (!item.disabled) {\n return item.key;\n }\n }\n\n return from;\n}\n"],"names":["Painel","aberto","abrir","props","ref","useRef","useEffect","painel","Accordion","className","defaultExpandedKeys","expandedKeys","items","multiple","onExpandedChange","iconPosition","divider","headingLevel","baseId","useId","Titulo","nodes","collection","useMemo","item","selection","useSelection","keys","handleKeyDown","event","key","destino","proxima","_a","_b","_c","jsx","styles","jsxs","node","IconChevronDown","from","passo","total","inicio"],"mappings":"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"}
@@ -1,73 +1,83 @@
1
- import { jsx as a, jsxs as w } from "react/jsx-runtime";
2
- import { useId as D, useRef as I, useMemo as K } from "react";
1
+ import { jsx as a, jsxs as v } from "react/jsx-runtime";
2
+ import { useId as K, useRef as N, useMemo as B, useEffect as L } from "react";
3
3
  import o from "./Accordion.module.css.js";
4
- import { useSelection as A } from "../../../hooks/useSelection/useSelection.js";
5
- import { IconChevronDown as B } from "../../icons/icons.js";
6
- function L({
7
- className: s,
8
- defaultExpandedKeys: t,
9
- expandedKeys: d,
10
- items: i,
11
- multiple: u = !1,
12
- onExpandedChange: n,
13
- iconPosition: f = "right",
4
+ import { useSelection as S } from "../../../hooks/useSelection/useSelection.js";
5
+ import { IconChevronDown as x } from "../../icons/icons.js";
6
+ function M({ aberto: i, abrir: r, ...c }) {
7
+ const n = N(null);
8
+ return L(() => {
9
+ const t = n.current;
10
+ if (!(!t || i || !r))
11
+ return t.setAttribute("hidden", "until-found"), t.addEventListener("beforematch", r), () => t.removeEventListener("beforematch", r);
12
+ }, [i, r]), /* @__PURE__ */ a("div", { ...c, hidden: !i, ref: n });
13
+ }
14
+ function R({
15
+ className: i,
16
+ defaultExpandedKeys: r,
17
+ expandedKeys: c,
18
+ items: n,
19
+ multiple: t = !1,
20
+ onExpandedChange: s,
21
+ iconPosition: u = "right",
14
22
  divider: g = !0,
15
- ...j
23
+ headingLevel: j = 3,
24
+ ...D
16
25
  }) {
17
- const y = `accordion-${D()}`, k = I(/* @__PURE__ */ new Map()), c = K(
18
- () => i.map((e) => ({ key: e.key, disabled: e.disabled, textValue: e.label })),
19
- [i]
20
- ), p = A({
26
+ const y = `accordion-${K()}`, A = `h${j}`, k = N(/* @__PURE__ */ new Map()), f = B(
27
+ () => n.map((e) => ({ key: e.key, disabled: e.disabled, textValue: e.label })),
28
+ [n]
29
+ ), p = S({
21
30
  // Uma secao aberta fecha ao ser clicada de novo, e nenhuma aberta e um
22
31
  // estado valido do acordeao — ao contrario de uma aba, que sempre tem uma.
23
32
  allowEmpty: !0,
24
- items: c,
25
- mode: u ? "multiple" : "single",
26
- defaultSelectedKeys: d === void 0 ? t : void 0,
27
- selectedKeys: d,
28
- onSelectionChange: (e) => n == null ? void 0 : n([...e])
33
+ items: f,
34
+ mode: t ? "multiple" : "single",
35
+ defaultSelectedKeys: c === void 0 ? r : void 0,
36
+ selectedKeys: c,
37
+ onSelectionChange: (e) => s == null ? void 0 : s([...e])
29
38
  });
30
- function v(e, r) {
31
- var h, m, $;
39
+ function I(e, d) {
40
+ var h, $, m;
32
41
  let l;
33
- e.key === "ArrowDown" ? l = N(c, r, 1) : e.key === "ArrowUp" ? l = N(c, r, -1) : e.key === "Home" ? l = (h = c.find((b) => !b.disabled)) == null ? void 0 : h.key : e.key === "End" && (l = (m = [...c].reverse().find((b) => !b.disabled)) == null ? void 0 : m.key), l && (e.preventDefault(), ($ = k.current.get(l)) == null || $.focus());
42
+ e.key === "ArrowDown" ? l = w(f, d, 1) : e.key === "ArrowUp" ? l = w(f, d, -1) : e.key === "Home" ? l = (h = f.find((b) => !b.disabled)) == null ? void 0 : h.key : e.key === "End" && (l = ($ = [...f].reverse().find((b) => !b.disabled)) == null ? void 0 : $.key), l && (e.preventDefault(), (m = k.current.get(l)) == null || m.focus());
34
43
  }
35
44
  return /* @__PURE__ */ a(
36
45
  "div",
37
46
  {
38
- ...j,
39
- className: [o.accordion, g && o.divided, s].filter(Boolean).join(" "),
40
- children: i.map((e) => {
41
- const r = p.selectedKeys.has(e.key);
42
- return /* @__PURE__ */ w("div", { className: o.item, children: [
43
- /* @__PURE__ */ a("h3", { className: o.heading, children: /* @__PURE__ */ w(
47
+ ...D,
48
+ className: [o.accordion, g && o.divided, i].filter(Boolean).join(" "),
49
+ children: n.map((e) => {
50
+ const d = p.selectedKeys.has(e.key);
51
+ return /* @__PURE__ */ v("div", { className: o.item, children: [
52
+ /* @__PURE__ */ a(A, { className: o.heading, id: e.id, children: /* @__PURE__ */ v(
44
53
  "button",
45
54
  {
46
55
  ref: (l) => {
47
56
  l ? k.current.set(e.key, l) : k.current.delete(e.key);
48
57
  },
49
- className: [o.trigger, f === "left" && o.iconLeft].filter(Boolean).join(" "),
58
+ className: [o.trigger, u === "left" && o.iconLeft].filter(Boolean).join(" "),
50
59
  type: "button",
51
60
  id: `${y}-${e.key}`,
52
61
  "aria-controls": `${y}-${e.key}-panel`,
53
- "aria-expanded": r,
62
+ "aria-expanded": d,
54
63
  disabled: e.disabled,
55
64
  onClick: () => p.select(e.key),
56
- onKeyDown: (l) => v(l, e.key),
65
+ onKeyDown: (l) => I(l, e.key),
57
66
  children: [
58
67
  /* @__PURE__ */ a("span", { className: o.label, children: e.label }),
59
- /* @__PURE__ */ a(B, { className: [o.icon, r && o.iconOpen].filter(Boolean).join(" "), size: 16 })
68
+ /* @__PURE__ */ a(x, { className: [o.icon, d && o.iconOpen].filter(Boolean).join(" "), size: 16 })
60
69
  ]
61
70
  }
62
71
  ) }),
63
72
  /* @__PURE__ */ a(
64
- "div",
73
+ M,
65
74
  {
75
+ aberto: d,
76
+ abrir: e.disabled ? void 0 : () => p.select(e.key),
77
+ "aria-labelledby": `${y}-${e.key}`,
66
78
  className: o.panel,
67
79
  id: `${y}-${e.key}-panel`,
68
80
  role: "region",
69
- "aria-labelledby": `${y}-${e.key}`,
70
- hidden: !r,
71
81
  children: e.content
72
82
  }
73
83
  )
@@ -76,16 +86,16 @@ function L({
76
86
  }
77
87
  );
78
88
  }
79
- function N(s, t, d) {
80
- const i = s.length, u = s.findIndex((n) => n.key === t);
81
- for (let n = 1; n <= i; n += 1) {
82
- const f = s[(u + d * n + i * i) % i];
83
- if (!f.disabled)
84
- return f.key;
89
+ function w(i, r, c) {
90
+ const n = i.length, t = i.findIndex((s) => s.key === r);
91
+ for (let s = 1; s <= n; s += 1) {
92
+ const u = i[(t + c * s + n * n) % n];
93
+ if (!u.disabled)
94
+ return u.key;
85
95
  }
86
- return t;
96
+ return r;
87
97
  }
88
98
  export {
89
- L as Accordion
99
+ R as Accordion
90
100
  };
91
101
  //# sourceMappingURL=Accordion.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Accordion.js","sources":["../../../../src/components/data-display/Accordion/Accordion.tsx"],"sourcesContent":["import {\n useId,\n useMemo,\n useRef,\n type ComponentPropsWithRef,\n type KeyboardEvent,\n type ReactNode,\n} from 'react';\nimport { useSelection, type SelectionItem } from '../../../hooks/useSelection';\nimport styles from './Accordion.module.css';\nimport { IconChevronDown } from '../../icons';\n\nexport interface AccordionItem {\n content: ReactNode;\n disabled?: boolean;\n key: string;\n label: string;\n}\n\nexport type AccordionIconPosition = 'left' | 'right';\n\nexport interface AccordionProps extends ComponentPropsWithRef<'div'> {\n defaultExpandedKeys?: readonly string[];\n expandedKeys?: readonly string[];\n items: readonly AccordionItem[];\n multiple?: boolean;\n onExpandedChange?: (keys: readonly string[]) => void;\n /** Direita e a convencao da web; esquerda serve a rotulos curtos em coluna estreita. */\n iconPosition?: AccordionIconPosition;\n /** Divisor entre as secoes, com a folga que ele exige. */\n divider?: boolean;\n}\n\nexport function Accordion({\n className,\n defaultExpandedKeys,\n expandedKeys,\n items,\n multiple = false,\n onExpandedChange,\n iconPosition = 'right',\n divider = true,\n ...props\n}: AccordionProps) {\n const baseId = `accordion-${useId()}`;\n const nodes = useRef(new Map<string, HTMLElement>());\n const collection = useMemo<SelectionItem[]>(\n () => items.map((item) => ({ key: item.key, disabled: item.disabled, textValue: item.label })),\n [items],\n );\n const selection = useSelection({\n // Uma secao aberta fecha ao ser clicada de novo, e nenhuma aberta e um\n // estado valido do acordeao — ao contrario de uma aba, que sempre tem uma.\n allowEmpty: true,\n items: collection,\n mode: multiple ? 'multiple' : 'single',\n defaultSelectedKeys: expandedKeys === undefined ? defaultExpandedKeys : undefined,\n selectedKeys: expandedKeys,\n onSelectionChange: (keys) => onExpandedChange?.([...keys]),\n });\n\n function handleKeyDown(event: KeyboardEvent<HTMLButtonElement>, key: string) {\n let destino: string | undefined;\n\n if (event.key === 'ArrowDown') {\n destino = proxima(collection, key, 1);\n } else if (event.key === 'ArrowUp') {\n destino = proxima(collection, key, -1);\n } else if (event.key === 'Home') {\n destino = collection.find((item) => !item.disabled)?.key;\n } else if (event.key === 'End') {\n destino = [...collection].reverse().find((item) => !item.disabled)?.key;\n }\n\n if (destino) {\n event.preventDefault();\n nodes.current.get(destino)?.focus();\n }\n }\n\n return (\n <div\n {...props}\n className={[styles.accordion, divider && styles.divided, className].filter(Boolean).join(' ')}\n >\n {items.map((item) => {\n const aberto = selection.selectedKeys.has(item.key);\n\n return (\n <div className={styles.item} key={item.key}>\n <h3 className={styles.heading}>\n <button\n ref={(node) => {\n if (node) {\n nodes.current.set(item.key, node);\n } else {\n nodes.current.delete(item.key);\n }\n }}\n className={[styles.trigger, iconPosition === 'left' && styles.iconLeft].filter(Boolean).join(' ')}\n type=\"button\"\n id={`${baseId}-${item.key}`}\n aria-controls={`${baseId}-${item.key}-panel`}\n aria-expanded={aberto}\n disabled={item.disabled}\n onClick={() => selection.select(item.key)}\n onKeyDown={(event) => handleKeyDown(event, item.key)}\n >\n <span className={styles.label}>{item.label}</span>\n <IconChevronDown className={[styles.icon, aberto && styles.iconOpen].filter(Boolean).join(' ')} size={16} />\n </button>\n </h3>\n <div\n className={styles.panel}\n id={`${baseId}-${item.key}-panel`}\n role=\"region\"\n aria-labelledby={`${baseId}-${item.key}`}\n hidden={!aberto}\n >\n {item.content}\n </div>\n </div>\n );\n })}\n </div>\n );\n}\n\nfunction proxima(items: readonly SelectionItem[], from: string, passo: 1 | -1) {\n const total = items.length;\n const inicio = items.findIndex((item) => item.key === from);\n\n for (let i = 1; i <= total; i += 1) {\n const item = items[(inicio + passo * i + total * total) % total];\n if (!item.disabled) {\n return item.key;\n }\n }\n\n return from;\n}\n"],"names":["Accordion","className","defaultExpandedKeys","expandedKeys","items","multiple","onExpandedChange","iconPosition","divider","props","baseId","useId","nodes","useRef","collection","useMemo","item","selection","useSelection","keys","handleKeyDown","event","key","destino","proxima","_a","_b","_c","jsx","styles","aberto","jsxs","node","IconChevronDown","from","passo","total","inicio","i"],"mappings":"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"}
1
+ {"version":3,"file":"Accordion.js","sources":["../../../../src/components/data-display/Accordion/Accordion.tsx"],"sourcesContent":["import {\n useEffect,\n useId,\n useMemo,\n useRef,\n type ComponentPropsWithRef,\n type KeyboardEvent,\n type ReactNode,\n} from 'react';\nimport { useSelection, type SelectionItem } from '../../../hooks/useSelection';\nimport styles from './Accordion.module.css';\nimport { IconChevronDown } from '../../icons';\n\nexport interface AccordionItem {\n content: ReactNode;\n disabled?: boolean;\n /** Id do cabecalho, para um link de ancora apontar a secao. */\n id?: string;\n key: string;\n label: string;\n}\n\nexport type AccordionIconPosition = 'left' | 'right';\nexport type AccordionHeadingLevel = 2 | 3 | 4 | 5 | 6;\n\nexport interface AccordionProps extends ComponentPropsWithRef<'div'> {\n defaultExpandedKeys?: readonly string[];\n expandedKeys?: readonly string[];\n items: readonly AccordionItem[];\n multiple?: boolean;\n onExpandedChange?: (keys: readonly string[]) => void;\n /** Direita e a convencao da web; esquerda serve a rotulos curtos em coluna estreita. */\n iconPosition?: AccordionIconPosition;\n /** Divisor entre as secoes, com a folga que ele exige. */\n divider?: boolean;\n /** Nivel do titulo de cada secao, na hierarquia da pagina em que o acordeao esta. */\n headingLevel?: AccordionHeadingLevel;\n}\n\ninterface PainelProps extends ComponentPropsWithRef<'div'> {\n aberto: boolean;\n /** Sem ele, o painel fechado fica fora da busca da pagina. */\n abrir?: () => void;\n}\n\n/**\n * Painel fechado com `hidden=\"until-found\"`: o Ctrl+F do navegador acha o texto dele, e o evento `beforematch`\n * abre a secao. O atributo entra depois da montagem, porque o React so conhece o `hidden` booleano.\n */\nfunction Painel({ aberto, abrir, ...props }: PainelProps) {\n const ref = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const painel = ref.current;\n\n if (!painel || aberto || !abrir) {\n return;\n }\n\n painel.setAttribute('hidden', 'until-found');\n painel.addEventListener('beforematch', abrir);\n\n return () => painel.removeEventListener('beforematch', abrir);\n }, [aberto, abrir]);\n\n return <div {...props} hidden={!aberto} ref={ref} />;\n}\n\nexport function Accordion({\n className,\n defaultExpandedKeys,\n expandedKeys,\n items,\n multiple = false,\n onExpandedChange,\n iconPosition = 'right',\n divider = true,\n headingLevel = 3,\n ...props\n}: AccordionProps) {\n const baseId = `accordion-${useId()}`;\n const Titulo = `h${headingLevel}` as const;\n const nodes = useRef(new Map<string, HTMLElement>());\n const collection = useMemo<SelectionItem[]>(\n () => items.map((item) => ({ key: item.key, disabled: item.disabled, textValue: item.label })),\n [items],\n );\n const selection = useSelection({\n // Uma secao aberta fecha ao ser clicada de novo, e nenhuma aberta e um\n // estado valido do acordeao — ao contrario de uma aba, que sempre tem uma.\n allowEmpty: true,\n items: collection,\n mode: multiple ? 'multiple' : 'single',\n defaultSelectedKeys: expandedKeys === undefined ? defaultExpandedKeys : undefined,\n selectedKeys: expandedKeys,\n onSelectionChange: (keys) => onExpandedChange?.([...keys]),\n });\n\n function handleKeyDown(event: KeyboardEvent<HTMLButtonElement>, key: string) {\n let destino: string | undefined;\n\n if (event.key === 'ArrowDown') {\n destino = proxima(collection, key, 1);\n } else if (event.key === 'ArrowUp') {\n destino = proxima(collection, key, -1);\n } else if (event.key === 'Home') {\n destino = collection.find((item) => !item.disabled)?.key;\n } else if (event.key === 'End') {\n destino = [...collection].reverse().find((item) => !item.disabled)?.key;\n }\n\n if (destino) {\n event.preventDefault();\n nodes.current.get(destino)?.focus();\n }\n }\n\n return (\n <div\n {...props}\n className={[styles.accordion, divider && styles.divided, className].filter(Boolean).join(' ')}\n >\n {items.map((item) => {\n const aberto = selection.selectedKeys.has(item.key);\n\n return (\n <div className={styles.item} key={item.key}>\n <Titulo className={styles.heading} id={item.id}>\n <button\n ref={(node) => {\n if (node) {\n nodes.current.set(item.key, node);\n } else {\n nodes.current.delete(item.key);\n }\n }}\n className={[styles.trigger, iconPosition === 'left' && styles.iconLeft].filter(Boolean).join(' ')}\n type=\"button\"\n id={`${baseId}-${item.key}`}\n aria-controls={`${baseId}-${item.key}-panel`}\n aria-expanded={aberto}\n disabled={item.disabled}\n onClick={() => selection.select(item.key)}\n onKeyDown={(event) => handleKeyDown(event, item.key)}\n >\n <span className={styles.label}>{item.label}</span>\n <IconChevronDown className={[styles.icon, aberto && styles.iconOpen].filter(Boolean).join(' ')} size={16} />\n </button>\n </Titulo>\n <Painel\n aberto={aberto}\n abrir={item.disabled ? undefined : () => selection.select(item.key)}\n aria-labelledby={`${baseId}-${item.key}`}\n className={styles.panel}\n id={`${baseId}-${item.key}-panel`}\n role=\"region\"\n >\n {item.content}\n </Painel>\n </div>\n );\n })}\n </div>\n );\n}\n\nfunction proxima(items: readonly SelectionItem[], from: string, passo: 1 | -1) {\n const total = items.length;\n const inicio = items.findIndex((item) => item.key === from);\n\n for (let i = 1; i <= total; i += 1) {\n const item = items[(inicio + passo * i + total * total) % total];\n if (!item.disabled) {\n return item.key;\n }\n }\n\n return from;\n}\n"],"names":["Painel","aberto","abrir","props","ref","useRef","useEffect","painel","Accordion","className","defaultExpandedKeys","expandedKeys","items","multiple","onExpandedChange","iconPosition","divider","headingLevel","baseId","useId","Titulo","nodes","collection","useMemo","item","selection","useSelection","keys","handleKeyDown","event","key","destino","proxima","_a","_b","_c","jsx","styles","jsxs","node","IconChevronDown","from","passo","total","inicio","i"],"mappings":";;;;;AAiDA,SAASA,EAAO,EAAE,QAAAC,GAAQ,OAAAC,GAAO,GAAGC,KAAsB;AACxD,QAAMC,IAAMC,EAAuB,IAAI;AAEvC,SAAAC,EAAU,MAAM;AACd,UAAMC,IAASH,EAAI;AAEnB,QAAI,GAACG,KAAUN,KAAU,CAACC;AAI1B,aAAAK,EAAO,aAAa,UAAU,aAAa,GAC3CA,EAAO,iBAAiB,eAAeL,CAAK,GAErC,MAAMK,EAAO,oBAAoB,eAAeL,CAAK;AAAA,EAC9D,GAAG,CAACD,GAAQC,CAAK,CAAC,qBAEV,OAAA,EAAK,GAAGC,GAAO,QAAQ,CAACF,GAAQ,KAAAG,GAAU;AACpD;AAEO,SAASI,EAAU;AAAA,EACxB,WAAAC;AAAA,EACA,qBAAAC;AAAA,EACA,cAAAC;AAAA,EACA,OAAAC;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,kBAAAC;AAAA,EACA,cAAAC,IAAe;AAAA,EACf,SAAAC,IAAU;AAAA,EACV,cAAAC,IAAe;AAAA,EACf,GAAGd;AACL,GAAmB;AACjB,QAAMe,IAAS,aAAaC,EAAA,CAAO,IAC7BC,IAAS,IAAIH,CAAY,IACzBI,IAAQhB,EAAO,oBAAI,KAA0B,GAC7CiB,IAAaC;AAAA,IACjB,MAAMX,EAAM,IAAI,CAACY,OAAU,EAAE,KAAKA,EAAK,KAAK,UAAUA,EAAK,UAAU,WAAWA,EAAK,QAAQ;AAAA,IAC7F,CAACZ,CAAK;AAAA,EAAA,GAEFa,IAAYC,EAAa;AAAA;AAAA;AAAA,IAG7B,YAAY;AAAA,IACZ,OAAOJ;AAAA,IACP,MAAMT,IAAW,aAAa;AAAA,IAC9B,qBAAqBF,MAAiB,SAAYD,IAAsB;AAAA,IACxE,cAAcC;AAAA,IACd,mBAAmB,CAACgB,MAASb,KAAA,gBAAAA,EAAmB,CAAC,GAAGa,CAAI;AAAA,EAAC,CAC1D;AAED,WAASC,EAAcC,GAAyCC,GAAa;;AAC3E,QAAIC;AAEJ,IAAIF,EAAM,QAAQ,cAChBE,IAAUC,EAAQV,GAAYQ,GAAK,CAAC,IAC3BD,EAAM,QAAQ,YACvBE,IAAUC,EAAQV,GAAYQ,GAAK,EAAE,IAC5BD,EAAM,QAAQ,SACvBE,KAAUE,IAAAX,EAAW,KAAK,CAACE,MAAS,CAACA,EAAK,QAAQ,MAAxC,gBAAAS,EAA2C,MAC5CJ,EAAM,QAAQ,UACvBE,KAAUG,IAAA,CAAC,GAAGZ,CAAU,EAAE,QAAA,EAAU,KAAK,CAACE,MAAS,CAACA,EAAK,QAAQ,MAAvD,gBAAAU,EAA0D,MAGlEH,MACFF,EAAM,eAAA,IACNM,IAAAd,EAAM,QAAQ,IAAIU,CAAO,MAAzB,QAAAI,EAA4B;AAAA,EAEhC;AAEA,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAGjC;AAAA,MACJ,WAAW,CAACkC,EAAO,WAAWrB,KAAWqB,EAAO,SAAS5B,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,MAE3F,UAAAG,EAAM,IAAI,CAACY,MAAS;AACnB,cAAMvB,IAASwB,EAAU,aAAa,IAAID,EAAK,GAAG;AAElD,eACE,gBAAAc,EAAC,OAAA,EAAI,WAAWD,EAAO,MACrB,UAAA;AAAA,UAAA,gBAAAD,EAAChB,KAAO,WAAWiB,EAAO,SAAS,IAAIb,EAAK,IAC1C,UAAA,gBAAAc;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,KAAK,CAACC,MAAS;AACb,gBAAIA,IACFlB,EAAM,QAAQ,IAAIG,EAAK,KAAKe,CAAI,IAEhClB,EAAM,QAAQ,OAAOG,EAAK,GAAG;AAAA,cAEjC;AAAA,cACA,WAAW,CAACa,EAAO,SAAStB,MAAiB,UAAUsB,EAAO,QAAQ,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,cAChG,MAAK;AAAA,cACL,IAAI,GAAGnB,CAAM,IAAIM,EAAK,GAAG;AAAA,cACzB,iBAAe,GAAGN,CAAM,IAAIM,EAAK,GAAG;AAAA,cACpC,iBAAevB;AAAA,cACf,UAAUuB,EAAK;AAAA,cACf,SAAS,MAAMC,EAAU,OAAOD,EAAK,GAAG;AAAA,cACxC,WAAW,CAACK,MAAUD,EAAcC,GAAOL,EAAK,GAAG;AAAA,cAEnD,UAAA;AAAA,gBAAA,gBAAAY,EAAC,QAAA,EAAK,WAAWC,EAAO,OAAQ,YAAK,OAAM;AAAA,kCAC1CG,GAAA,EAAgB,WAAW,CAACH,EAAO,MAAMpC,KAAUoC,EAAO,QAAQ,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,GAAG,MAAM,GAAA,CAAI;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA,GAE9G;AAAA,UACA,gBAAAD;AAAA,YAACpC;AAAA,YAAA;AAAA,cACC,QAAAC;AAAA,cACA,OAAOuB,EAAK,WAAW,SAAY,MAAMC,EAAU,OAAOD,EAAK,GAAG;AAAA,cAClE,mBAAiB,GAAGN,CAAM,IAAIM,EAAK,GAAG;AAAA,cACtC,WAAWa,EAAO;AAAA,cAClB,IAAI,GAAGnB,CAAM,IAAIM,EAAK,GAAG;AAAA,cACzB,MAAK;AAAA,cAEJ,UAAAA,EAAK;AAAA,YAAA;AAAA,UAAA;AAAA,QACR,EAAA,GAhCgCA,EAAK,GAiCvC;AAAA,MAEJ,CAAC;AAAA,IAAA;AAAA,EAAA;AAGP;AAEA,SAASQ,EAAQpB,GAAiC6B,GAAcC,GAAe;AAC7E,QAAMC,IAAQ/B,EAAM,QACdgC,IAAShC,EAAM,UAAU,CAACY,MAASA,EAAK,QAAQiB,CAAI;AAE1D,WAASI,IAAI,GAAGA,KAAKF,GAAOE,KAAK,GAAG;AAClC,UAAMrB,IAAOZ,GAAOgC,IAASF,IAAQG,IAAIF,IAAQA,KAASA,CAAK;AAC/D,QAAI,CAACnB,EAAK;AACR,aAAOA,EAAK;AAAA,EAEhB;AAEA,SAAOiB;AACT;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e="_accordion_1eiem_1",i="_divided_1eiem_7",n="_item_1eiem_13",o="_trigger_1eiem_17",c="_panel_1eiem_21",t="_heading_1eiem_25",_="_icon_1eiem_50",d="_label_1eiem_59",a="_iconLeft_1eiem_63",l="_iconOpen_1eiem_74",r={accordion:e,divided:i,item:n,trigger:o,panel:c,heading:t,icon:_,label:d,iconLeft:a,iconOpen:l};exports.accordion=e;exports.default=r;exports.divided=i;exports.heading=t;exports.icon=_;exports.iconLeft=a;exports.iconOpen=l;exports.item=n;exports.label=d;exports.panel=c;exports.trigger=o;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e="_accordion_vpjyx_1",n="_divided_vpjyx_7",i="_item_vpjyx_13",o="_trigger_vpjyx_17",c="_panel_vpjyx_21",t="_heading_vpjyx_25",_="_icon_vpjyx_50",d="_label_vpjyx_59",a="_iconLeft_vpjyx_63",l="_iconOpen_vpjyx_74",p={accordion:e,divided:n,item:i,trigger:o,panel:c,heading:t,icon:_,label:d,iconLeft:a,iconOpen:l};exports.accordion=e;exports.default=p;exports.divided=n;exports.heading=t;exports.icon=_;exports.iconLeft=a;exports.iconOpen=l;exports.item=i;exports.label=d;exports.panel=c;exports.trigger=o;
2
2
  //# sourceMappingURL=Accordion.module.css.cjs.map
@@ -1,26 +1,26 @@
1
- const e = "_accordion_1eiem_1", i = "_divided_1eiem_7", n = "_item_1eiem_13", _ = "_trigger_1eiem_17", o = "_panel_1eiem_21", c = "_heading_1eiem_25", t = "_icon_1eiem_50", d = "_label_1eiem_59", a = "_iconLeft_1eiem_63", s = "_iconOpen_1eiem_74", m = {
2
- accordion: e,
3
- divided: i,
4
- item: n,
5
- trigger: _,
1
+ const n = "_accordion_vpjyx_1", _ = "_divided_vpjyx_7", e = "_item_vpjyx_13", i = "_trigger_vpjyx_17", o = "_panel_vpjyx_21", c = "_heading_vpjyx_25", t = "_icon_vpjyx_50", p = "_label_vpjyx_59", d = "_iconLeft_vpjyx_63", a = "_iconOpen_vpjyx_74", s = {
2
+ accordion: n,
3
+ divided: _,
4
+ item: e,
5
+ trigger: i,
6
6
  panel: o,
7
7
  heading: c,
8
8
  icon: t,
9
- label: d,
10
- iconLeft: a,
11
- iconOpen: s
9
+ label: p,
10
+ iconLeft: d,
11
+ iconOpen: a
12
12
  };
13
13
  export {
14
- e as accordion,
15
- m as default,
16
- i as divided,
14
+ n as accordion,
15
+ s as default,
16
+ _ as divided,
17
17
  c as heading,
18
18
  t as icon,
19
- a as iconLeft,
20
- s as iconOpen,
21
- n as item,
22
- d as label,
19
+ d as iconLeft,
20
+ a as iconOpen,
21
+ e as item,
22
+ p as label,
23
23
  o as panel,
24
- _ as trigger
24
+ i as trigger
25
25
  };
26
26
  //# sourceMappingURL=Accordion.module.css.js.map