@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
@@ -1 +1 @@
1
- {"version":3,"file":"ChartBar.js","sources":["../../../../src/components/charts/ChartBar/ChartBar.tsx"],"sourcesContent":["import { useMemo } from 'react';\nimport {\n BandCursor,\n CartesianFrame,\n NO_BAR_SLOT,\n barSlots,\n cartesianLayout,\n chartHeight,\n roundedBarPath,\n useChartMetrics,\n useHoveredBand,\n useSeriesToggle,\n useTweenedNumbers,\n valueLabelRoom,\n valueLabelsFor,\n type AxisLabelAngle,\n type AxisTick,\n type AxisVisibility,\n type ChartHeight,\n type ChartLegendAlign,\n type ChartLegendPosition,\n type CornerRadii,\n} from '../core';\nimport { resolveSeriesColors, type SeriesAppearance } from '../palette';\nimport { bandScale, domainOf, linearScale, mergeDomains, stackDiverging, ticksFor } from '../scales';\nimport { formatarNumero } from '../../../utils/formatters';\nimport styles from './ChartBar.module.css';\n\nexport type ChartBarOrientation = 'vertical' | 'horizontal';\n\nexport interface ChartBarSeries extends SeriesAppearance {\n label: string;\n values: readonly number[];\n}\n\nexport interface ChartBarProps {\n accent?: string;\n categories: readonly string[];\n defaultHiddenSeries?: readonly string[];\n emptyMessage?: string;\n formatValue?: (value: number) => string;\n height?: ChartHeight;\n hiddenSeries?: readonly string[];\n labelAngle?: AxisLabelAngle;\n legend?: ChartLegendPosition;\n legendAlign?: ChartLegendAlign;\n onHiddenSeriesChange?: (hidden: readonly string[]) => void;\n /** Indice da categoria sob o ponteiro, ou `null` ao sair dela. */\n onHoverCategory?: (index: number | null) => void;\n orientation?: ChartBarOrientation;\n series: readonly ChartBarSeries[];\n /** Valor alem da ponta de cada barra; empilhada, o total da categoria alem da ponta da pilha. */\n showDataLabels?: boolean;\n stacked?: boolean;\n title: string;\n xAxis?: AxisVisibility;\n yAxis?: AxisVisibility;\n yAxisRight?: AxisVisibility;\n}\n\nexport function ChartBar({\n accent,\n categories,\n defaultHiddenSeries,\n emptyMessage = 'Sem dados no período',\n formatValue = formatarNumero,\n height = 260,\n hiddenSeries,\n labelAngle = 'auto',\n legend = 'bottom',\n legendAlign,\n onHiddenSeriesChange,\n onHoverCategory,\n orientation = 'vertical',\n series,\n showDataLabels = false,\n stacked = false,\n title,\n xAxis = 'visible',\n yAxis = 'visible',\n yAxisRight = 'hidden',\n}: ChartBarProps) {\n const { font, height: alturaMedida, radius: raioDoCanto, ref, width } = useChartMetrics();\n const { fillHeight, value: alturaDoDesenho } = chartHeight(height, alturaMedida);\n const { isHidden, toggle } = useSeriesToggle({ defaultHiddenSeries, hiddenSeries, onHiddenSeriesChange });\n const { hover: focarFaixa, hovered: faixaEmFoco } = useHoveredBand(onHoverCategory);\n const vertical = orientation === 'vertical';\n\n // A cor sai da lista inteira, e nao das visiveis: desligar uma serie nao pode\n // repintar as demais.\n const cores = useMemo(() => resolveSeriesColors(series, { accent }), [accent, series]);\n\n // Presenca de cada serie, entre zero e um. E ela que reparte a faixa, entao a\n // serie desligada encolhe enquanto as demais ocupam o lugar dela.\n const presencas = useTweenedNumbers(series.map((serie) => (isHidden(serie.label) ? 0 : 1)));\n const presenca = (indice: number) => presencas[indice] ?? 0;\n\n const dominio = useMemo(() => {\n const visiveis = series.filter((serie) => !isHidden(serie.label));\n\n if (stacked) {\n return domainOf(\n categories.flatMap((_, indice) => stackDiverging(visiveis.map((serie) => serie.values[indice] ?? 0)).flat()),\n );\n }\n\n return mergeDomains(visiveis.map((serie) => domainOf([...serie.values])));\n }, [categories, isHidden, series, stacked]);\n\n // Barras horizontais consomem a largura: a legenda ao lado espremeria o desenho.\n const posicaoDaLegenda = !vertical && (legend === 'left' || legend === 'right') ? 'bottom' : legend;\n\n const rotulosDeValor = valueLabelsFor(dominio, vertical ? alturaDoDesenho : width, formatValue);\n\n const { margins, plot, rotation } = cartesianLayout({\n bottomLabels: vertical ? categories : rotulosDeValor,\n font,\n height: alturaDoDesenho,\n labelAngle,\n leftLabels: vertical ? rotulosDeValor : categories,\n rightLabels: vertical ? rotulosDeValor : categories,\n topRoom: showDataLabels && vertical ? valueLabelRoom(font) : 0,\n width,\n xAxis,\n yAxis,\n yAxisRight,\n });\n\n const comprimentoCategorias = vertical ? plot.width : plot.height;\n const comprimentoValores = vertical ? plot.height : plot.width;\n const inicioDaFaixa = vertical ? comprimentoValores : 0;\n const fimDaFaixa = vertical ? 0 : comprimentoValores;\n\n const escalaCategorias = useMemo(\n () => bandScale({ domain: categories, range: [0, comprimentoCategorias] }),\n [categories, comprimentoCategorias],\n );\n\n // A escala alvo fixa as marcas; a animada posiciona o desenho. Sem separar as\n // duas, as marcas exibiriam valores quebrados durante a transicao.\n const escalaAlvo = useMemo(\n () => linearScale({ domain: dominio, range: [inicioDaFaixa, fimDaFaixa] }),\n [dominio, fimDaFaixa, inicioDaFaixa],\n );\n\n const [minimo, maximo] = useTweenedNumbers(escalaAlvo.domain());\n\n const escalaValores = useMemo(\n () =>\n linearScale({\n domain: { min: minimo, max: maximo },\n nice: false,\n range: [inicioDaFaixa, fimDaFaixa],\n }),\n [fimDaFaixa, inicioDaFaixa, maximo, minimo],\n );\n\n const marcasDeValor = ticksFor(escalaAlvo, comprimentoValores);\n\n const vao = escalaCategorias.bandwidth();\n const faixas = barSlots(vao, presencas);\n\n // Empilhada, a serie ocupa a faixa inteira: quem reparte e a pilha, nao a faixa.\n function faixaDa(indiceSerie: number) {\n return faixas[indiceSerie] ?? NO_BAR_SLOT;\n }\n\n function espessuraDa(indiceSerie: number) {\n return stacked ? vao : faixaDa(indiceSerie).thickness;\n }\n\n function deslocamentoDa(indiceSerie: number) {\n return stacked ? 0 : faixaDa(indiceSerie).offset;\n }\n\n /** Valor que a serie empilha, ja pesado pela presenca, para a pilha encolher junto; invalido conta zero. */\n function contribuicao(indiceSerie: number, indiceCategoria: number) {\n const valor = series[indiceSerie].values[indiceCategoria];\n const real = Number.isFinite(valor) ? (valor as number) : 0;\n\n return real * (stacked ? presenca(indiceSerie) : 1);\n }\n\n const pilhas = categories.map((_, indiceCategoria) =>\n stacked ? stackDiverging(series.map((_, indiceSerie) => contribuicao(indiceSerie, indiceCategoria))) : [],\n );\n\n function segmentoDa(indiceSerie: number, indiceCategoria: number): [number, number] {\n return pilhas[indiceCategoria][indiceSerie] ?? [0, contribuicao(indiceSerie, indiceCategoria)];\n }\n\n /**\n * Cantos de um segmento. Empilhado, so as pontas de cada pilha, a de cima do zero e a de baixo,\n * sao arredondadas e o meio fica reto, para os segmentos lerem como uma barra so.\n */\n function cantosDa(indiceSerie: number, indiceCategoria: number): CornerRadii {\n const [inicio, fim] = segmentoDa(indiceSerie, indiceCategoria);\n\n if (!stacked) {\n return [raioDoCanto, raioDoCanto, raioDoCanto, raioDoCanto];\n }\n\n const pilha = pilhas[indiceCategoria];\n const extremo = fim < inicio ? Math.min(...pilha.map(([, ate]) => ate)) : Math.max(...pilha.map(([, ate]) => ate));\n const abre = fim !== inicio && inicio === 0 ? raioDoCanto : 0;\n const fecha = fim !== inicio && fim === extremo ? raioDoCanto : 0;\n // Na tela, o lado de maior valor fica em cima na vertical e a direita na horizontal.\n const [menor, maior] = fim < inicio ? [fecha, abre] : [abre, fecha];\n\n return vertical ? [maior, maior, menor, menor] : [menor, maior, maior, menor];\n }\n\n /** Rotulo alem da ponta da barra: no negativo ela esta embaixo, ou a esquerda. */\n function rotuloAlemDaPonta(valor: number, ponta: number, centro: number, chave: number) {\n const negativo = valor < 0;\n\n return (\n <text\n className={styles.valueLabel}\n dominantBaseline={vertical ? (negativo ? 'hanging' : 'auto') : 'middle'}\n key={chave}\n textAnchor={vertical ? 'middle' : negativo ? 'end' : 'start'}\n x={vertical ? centro : ponta + (negativo ? -6 : 6)}\n y={vertical ? ponta + (negativo ? 6 : -6) : centro}\n >\n {formatValue(valor)}\n </text>\n );\n }\n\n const marcasCategoria: AxisTick[] = categories.map((categoria) => ({\n label: categoria,\n position: (escalaCategorias(categoria) ?? 0) + vao / 2,\n }));\n\n const marcasValor: AxisTick[] = marcasDeValor.map((valor) => ({\n label: formatValue(valor),\n position: escalaValores(valor),\n }));\n\n const eixoDeCategoria = { labelRotation: rotation, ticks: marcasCategoria };\n const eixoDeValor = { hideLine: true, ticks: marcasValor };\n\n return (\n <CartesianFrame\n containerRef={ref}\n empty={series.length === 0 || categories.length === 0}\n emptyMessage={emptyMessage}\n fillHeight={fillHeight}\n grid={[\n {\n baseline: escalaValores(0),\n lines: marcasDeValor.map((valor) => escalaValores(valor)),\n orientation: vertical ? 'horizontal' : 'vertical',\n },\n ]}\n height={alturaDoDesenho}\n legend={series.map((serie, indice) => ({\n color: cores[indice],\n hidden: isHidden(serie.label),\n label: serie.label,\n }))}\n legendAlign={legendAlign}\n legendPosition={posicaoDaLegenda}\n margins={margins}\n onToggleSeries={toggle}\n plot={plot}\n title={title}\n width={width}\n xAxis={{ ...(vertical ? eixoDeCategoria : eixoDeValor), visibility: xAxis }}\n yAxis={{ ...(vertical ? eixoDeValor : eixoDeCategoria), visibility: yAxis }}\n yAxisRight={{ ...(vertical ? eixoDeValor : eixoDeCategoria), hideLine: true, visibility: yAxisRight }}\n >\n {faixaEmFoco !== null && (\n <BandCursor\n offset={escalaCategorias(categories[faixaEmFoco]) ?? 0}\n orientation={orientation}\n plot={plot}\n size={vao}\n />\n )}\n\n {series.map((serie, indiceSerie) => {\n const oculta = isHidden(serie.label);\n\n return (\n <g\n aria-hidden={oculta || undefined}\n className={`${styles.series} ${oculta ? styles.seriesOff : ''}`}\n key={indiceSerie}\n >\n {categories.map((categoria, indiceCategoria) => {\n if (!Number.isFinite(serie.values[indiceCategoria])) {\n return null;\n }\n\n const inicioCategoria = escalaCategorias(categoria) ?? 0;\n const [de, ate] = segmentoDa(indiceSerie, indiceCategoria);\n const comeco = escalaValores(de);\n const fim = escalaValores(ate);\n const tamanho = Math.abs(fim - comeco);\n const espessura = espessuraDa(indiceSerie);\n const deslocamento = deslocamentoDa(indiceSerie);\n\n return (\n <path\n aria-label={`${serie.label}, ${categoria}: ${formatValue(serie.values[indiceCategoria])}`}\n className={styles.bar}\n d={roundedBarPath(\n vertical ? inicioCategoria + deslocamento : Math.min(comeco, fim),\n vertical ? Math.min(comeco, fim) : inicioCategoria + deslocamento,\n vertical ? espessura : tamanho,\n vertical ? tamanho : espessura,\n cantosDa(indiceSerie, indiceCategoria),\n )}\n fill={cores[indiceSerie]}\n key={indiceCategoria}\n onMouseEnter={() => focarFaixa(indiceCategoria)}\n onMouseLeave={() => focarFaixa(null)}\n />\n );\n })}\n\n {showDataLabels &&\n !stacked &&\n categories.map((categoria, indiceCategoria) => {\n const valor = serie.values[indiceCategoria];\n\n if (!Number.isFinite(valor)) {\n return null;\n }\n\n const centro =\n (escalaCategorias(categoria) ?? 0) + deslocamentoDa(indiceSerie) + espessuraDa(indiceSerie) / 2;\n\n return rotuloAlemDaPonta(valor, escalaValores(valor), centro, indiceCategoria);\n })}\n </g>\n );\n })}\n\n {showDataLabels &&\n stacked &&\n categories.map((categoria, indiceCategoria) => {\n const presentes = series.filter(\n (serie) => !isHidden(serie.label) && Number.isFinite(serie.values[indiceCategoria]),\n );\n\n if (presentes.length === 0) {\n return null;\n }\n\n const total = presentes.reduce((soma, serie) => soma + serie.values[indiceCategoria], 0);\n const pontas = pilhas[indiceCategoria].map(([, ate]) => ate);\n const extremo = total < 0 ? Math.min(0, ...pontas) : Math.max(0, ...pontas);\n const centro = (escalaCategorias(categoria) ?? 0) + vao / 2;\n\n return rotuloAlemDaPonta(total, escalaValores(extremo), centro, indiceCategoria);\n })}\n </CartesianFrame>\n );\n}\n"],"names":["ChartBar","accent","categories","defaultHiddenSeries","emptyMessage","formatValue","formatarNumero","height","hiddenSeries","labelAngle","legend","legendAlign","onHiddenSeriesChange","onHoverCategory","orientation","series","showDataLabels","stacked","title","xAxis","yAxis","yAxisRight","font","alturaMedida","raioDoCanto","ref","width","useChartMetrics","fillHeight","alturaDoDesenho","chartHeight","isHidden","toggle","useSeriesToggle","focarFaixa","faixaEmFoco","useHoveredBand","vertical","cores","useMemo","resolveSeriesColors","presencas","useTweenedNumbers","serie","presenca","indice","dominio","visiveis","domainOf","_","stackDiverging","mergeDomains","posicaoDaLegenda","rotulosDeValor","valueLabelsFor","margins","plot","rotation","cartesianLayout","valueLabelRoom","comprimentoCategorias","comprimentoValores","inicioDaFaixa","fimDaFaixa","escalaCategorias","bandScale","escalaAlvo","linearScale","minimo","maximo","escalaValores","marcasDeValor","ticksFor","vao","faixas","barSlots","faixaDa","indiceSerie","NO_BAR_SLOT","espessuraDa","deslocamentoDa","contribuicao","indiceCategoria","valor","pilhas","segmentoDa","cantosDa","inicio","fim","pilha","extremo","ate","abre","fecha","menor","maior","rotuloAlemDaPonta","ponta","centro","chave","negativo","jsx","styles","marcasCategoria","categoria","marcasValor","eixoDeCategoria","eixoDeValor","jsxs","CartesianFrame","BandCursor","oculta","inicioCategoria","de","comeco","tamanho","espessura","deslocamento","roundedBarPath","presentes","total","soma","pontas"],"mappings":"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"}
1
+ {"version":3,"file":"ChartBar.js","sources":["../../../../src/components/charts/ChartBar/ChartBar.tsx"],"sourcesContent":["import { useMemo, useState } from 'react';\nimport {\n BandCursor,\n categoryTooltip,\n markShown,\n CartesianFrame,\n NO_BAR_SLOT,\n barSlots,\n seriesInScale,\n useCartesianLayout,\n chartHeight,\n roundedBarPath,\n useChartMetrics,\n useHoveredBand,\n useSeriesToggle,\n useTweenedNumbers,\n valueLabelRoom,\n valueLabelsFor,\n type AxisLabelAngle,\n type AxisTick,\n type AxisVisibility,\n type ChartHeight,\n type ChartLegendAlign,\n type ChartLegendPosition,\n type MarkVisibility,\n type CornerRadii,\n} from '../core';\nimport { resolveSeriesColors, type SeriesAppearance } from '../palette';\nimport { bandScale, domainOf, linearScale, mergeDomains, stackDiverging, ticksFor } from '../scales';\nimport { formatarNumero } from '../../../utils/formatters';\nimport styles from './ChartBar.module.css';\n\nexport type ChartBarOrientation = 'vertical' | 'horizontal';\n\nexport interface ChartBarSeries extends SeriesAppearance {\n label: string;\n values: readonly number[];\n}\n\nexport interface ChartBarProps {\n accent?: string;\n categories: readonly string[];\n defaultHiddenSeries?: readonly string[];\n emptyMessage?: string;\n /** Formato dos valores no balao. Sem ele, vale o `formatValue`: o eixo pode sair compacto e o balao, exato. */\n formatTooltipValue?: (value: number) => string;\n formatValue?: (value: number) => string;\n height?: ChartHeight;\n hiddenSeries?: readonly string[];\n labelAngle?: AxisLabelAngle;\n legend?: ChartLegendPosition;\n legendAlign?: ChartLegendAlign;\n onHiddenSeriesChange?: (hidden: readonly string[]) => void;\n /** Indice da categoria sob o ponteiro, ou `null` ao sair dela. */\n onHoverCategory?: (index: number | null) => void;\n orientation?: ChartBarOrientation;\n series: readonly ChartBarSeries[];\n /**\n * Valor alem da ponta de cada barra; empilhada, o total da categoria alem da ponta da pilha. Em `onHover`,\n * so os da serie da barra sob o ponteiro, ou o total da pilha sob ele.\n */\n showDataLabels?: MarkVisibility;\n /** Balao com o detalhe do que esta sob o ponteiro. Desligue para montar o proprio `ChartTooltip` pela costura. */\n showTooltip?: boolean;\n stacked?: boolean;\n title: string;\n xAxis?: AxisVisibility;\n yAxis?: AxisVisibility;\n yAxisRight?: AxisVisibility;\n}\n\nexport function ChartBar({\n accent,\n categories,\n defaultHiddenSeries,\n emptyMessage = 'Sem dados no período',\n formatTooltipValue,\n formatValue = formatarNumero,\n height = 260,\n hiddenSeries,\n labelAngle = 'auto',\n legend = 'bottom',\n legendAlign,\n onHiddenSeriesChange,\n onHoverCategory,\n orientation = 'vertical',\n series,\n showDataLabels = 'hidden',\n showTooltip = true,\n stacked = false,\n title,\n xAxis = 'visible',\n yAxis = 'visible',\n yAxisRight = 'hidden',\n}: ChartBarProps) {\n const { font, height: alturaMedida, radius: raioDoCanto, ref, width } = useChartMetrics();\n const { fillHeight, value: alturaDoDesenho } = chartHeight(height, alturaMedida);\n const { isHidden, isOutOfScale, toggle } = useSeriesToggle({\n defaultHiddenSeries,\n hiddenSeries,\n labels: series.map((serie) => serie.label),\n onHiddenSeriesChange,\n });\n const { hover: focarFaixa, hovered: faixaEmFoco } = useHoveredBand(onHoverCategory);\n const [serieEmFoco, setSerieEmFoco] = useState<number | null>(null);\n const vertical = orientation === 'vertical';\n\n // A cor sai da lista inteira, e nao das visiveis: desligar uma serie nao pode\n // repintar as demais.\n const cores = useMemo(() => resolveSeriesColors(series, { accent }), [accent, series]);\n\n // Presenca de cada serie, entre zero e um. E ela que reparte a faixa, entao a\n // serie desligada encolhe enquanto as demais ocupam o lugar dela.\n const presencas = useTweenedNumbers(series.map((serie) => (isHidden(serie.label) ? 0 : 1)));\n const presenca = (indice: number) => presencas[indice] ?? 0;\n\n const dominio = useMemo(() => {\n const naEscala = seriesInScale(series, isOutOfScale);\n\n if (stacked) {\n return domainOf(\n categories.flatMap((_, indice) => stackDiverging(naEscala.map((serie) => serie.values[indice] ?? 0)).flat()),\n );\n }\n\n return mergeDomains(naEscala.map((serie) => domainOf([...serie.values])));\n }, [categories, isOutOfScale, series, stacked]);\n\n // Barras horizontais consomem a largura: a legenda ao lado espremeria o desenho.\n const posicaoDaLegenda = !vertical && (legend === 'left' || legend === 'right') ? 'bottom' : legend;\n\n const rotulosDeValor = valueLabelsFor(dominio, vertical ? alturaDoDesenho : width, formatValue);\n\n const { axisReveal, margins, plot, rotation } = useCartesianLayout({\n bottomLabels: vertical ? categories : rotulosDeValor,\n font,\n height: alturaDoDesenho,\n labelAngle,\n leftLabels: vertical ? rotulosDeValor : categories,\n rightLabels: vertical ? rotulosDeValor : categories,\n topRoom: showDataLabels !== 'hidden' && vertical ? valueLabelRoom(font) : 0,\n width,\n xAxis,\n yAxis,\n yAxisRight,\n });\n\n const comprimentoCategorias = vertical ? plot.width : plot.height;\n const comprimentoValores = vertical ? plot.height : plot.width;\n const inicioDaFaixa = vertical ? comprimentoValores : 0;\n const fimDaFaixa = vertical ? 0 : comprimentoValores;\n\n const escalaCategorias = useMemo(\n () => bandScale({ domain: categories, range: [0, comprimentoCategorias] }),\n [categories, comprimentoCategorias],\n );\n\n // A escala alvo fixa as marcas; a animada posiciona o desenho. Sem separar as\n // duas, as marcas exibiriam valores quebrados durante a transicao.\n const escalaAlvo = useMemo(\n () => linearScale({ domain: dominio, range: [inicioDaFaixa, fimDaFaixa] }),\n [dominio, fimDaFaixa, inicioDaFaixa],\n );\n\n const [minimo, maximo] = useTweenedNumbers(escalaAlvo.domain());\n\n const escalaValores = useMemo(\n () =>\n linearScale({\n domain: { min: minimo, max: maximo },\n nice: false,\n range: [inicioDaFaixa, fimDaFaixa],\n }),\n [fimDaFaixa, inicioDaFaixa, maximo, minimo],\n );\n\n const marcasDeValor = ticksFor(escalaAlvo, comprimentoValores);\n\n const vao = escalaCategorias.bandwidth();\n const faixas = barSlots(vao, presencas);\n\n // Empilhada, a serie ocupa a faixa inteira: quem reparte e a pilha, nao a faixa.\n function faixaDa(indiceSerie: number) {\n return faixas[indiceSerie] ?? NO_BAR_SLOT;\n }\n\n function espessuraDa(indiceSerie: number) {\n return stacked ? vao : faixaDa(indiceSerie).thickness;\n }\n\n function deslocamentoDa(indiceSerie: number) {\n return stacked ? 0 : faixaDa(indiceSerie).offset;\n }\n\n /** Valor que a serie empilha, ja pesado pela presenca, para a pilha encolher junto; invalido conta zero. */\n function contribuicao(indiceSerie: number, indiceCategoria: number) {\n const valor = series[indiceSerie].values[indiceCategoria];\n const real = Number.isFinite(valor) ? (valor as number) : 0;\n\n return real * (stacked ? presenca(indiceSerie) : 1);\n }\n\n const pilhas = categories.map((_, indiceCategoria) =>\n stacked ? stackDiverging(series.map((_, indiceSerie) => contribuicao(indiceSerie, indiceCategoria))) : [],\n );\n\n function segmentoDa(indiceSerie: number, indiceCategoria: number): [number, number] {\n return pilhas[indiceCategoria][indiceSerie] ?? [0, contribuicao(indiceSerie, indiceCategoria)];\n }\n\n /**\n * Cantos de um segmento. Empilhado, so as pontas de cada pilha, a de cima do zero e a de baixo,\n * sao arredondadas e o meio fica reto, para os segmentos lerem como uma barra so.\n */\n function cantosDa(indiceSerie: number, indiceCategoria: number): CornerRadii {\n const [inicio, fim] = segmentoDa(indiceSerie, indiceCategoria);\n\n if (!stacked) {\n return [raioDoCanto, raioDoCanto, raioDoCanto, raioDoCanto];\n }\n\n const pilha = pilhas[indiceCategoria];\n const extremo = fim < inicio ? Math.min(...pilha.map(([, ate]) => ate)) : Math.max(...pilha.map(([, ate]) => ate));\n const abre = fim !== inicio && inicio === 0 ? raioDoCanto : 0;\n const fecha = fim !== inicio && fim === extremo ? raioDoCanto : 0;\n // Na tela, o lado de maior valor fica em cima na vertical e a direita na horizontal.\n const [menor, maior] = fim < inicio ? [fecha, abre] : [abre, fecha];\n\n return vertical ? [maior, maior, menor, menor] : [menor, maior, maior, menor];\n }\n\n /** Rotulo alem da ponta da barra: no negativo ela esta embaixo, ou a esquerda. */\n function rotuloAlemDaPonta(valor: number, ponta: number, centro: number, chave: number, emFoco: boolean) {\n const negativo = valor < 0;\n\n return (\n <text\n className={`${styles.valueLabel} ${markShown(showDataLabels, emFoco) ? '' : styles.valueLabelHidden}`}\n dominantBaseline={vertical ? (negativo ? 'hanging' : 'auto') : 'middle'}\n key={chave}\n textAnchor={vertical ? 'middle' : negativo ? 'end' : 'start'}\n x={vertical ? centro : ponta + (negativo ? -6 : 6)}\n y={vertical ? ponta + (negativo ? 6 : -6) : centro}\n >\n {formatValue(valor)}\n </text>\n );\n }\n\n const marcasCategoria: AxisTick[] = categories.map((categoria) => ({\n label: categoria,\n position: (escalaCategorias(categoria) ?? 0) + vao / 2,\n }));\n\n const marcasValor: AxisTick[] = marcasDeValor.map((valor) => ({\n label: formatValue(valor),\n position: escalaValores(valor),\n }));\n\n const eixoDeCategoria = { labelRotation: rotation, ticks: marcasCategoria };\n const eixoDeValor = { hideLine: true, ticks: marcasValor };\n\n return (\n <CartesianFrame\n axisReveal={axisReveal}\n containerRef={ref}\n empty={series.length === 0 || categories.length === 0}\n emptyMessage={emptyMessage}\n fillHeight={fillHeight}\n grid={[\n {\n baseline: escalaValores(0),\n lines: marcasDeValor.map((valor) => escalaValores(valor)),\n orientation: vertical ? 'horizontal' : 'vertical',\n },\n ]}\n height={alturaDoDesenho}\n legend={series.map((serie, indice) => ({\n color: cores[indice],\n hidden: isHidden(serie.label),\n label: serie.label,\n }))}\n legendAlign={legendAlign}\n legendPosition={posicaoDaLegenda}\n margins={margins}\n onToggleSeries={toggle}\n plot={plot}\n title={title}\n tooltip={\n showTooltip\n ? categoryTooltip({\n categories,\n colors: cores,\n format: formatTooltipValue ?? formatValue,\n index: faixaEmFoco,\n isHidden,\n series,\n showTotal: stacked,\n })\n : undefined\n }\n width={width}\n xAxis={{ ...(vertical ? eixoDeCategoria : eixoDeValor), visibility: xAxis }}\n yAxis={{ ...(vertical ? eixoDeValor : eixoDeCategoria), visibility: yAxis }}\n yAxisRight={{ ...(vertical ? eixoDeValor : eixoDeCategoria), hideLine: true, visibility: yAxisRight }}\n >\n {faixaEmFoco !== null && (\n <BandCursor\n offset={escalaCategorias(categories[faixaEmFoco]) ?? 0}\n orientation={orientation}\n plot={plot}\n size={vao}\n />\n )}\n\n {series.map((serie, indiceSerie) => {\n const oculta = isHidden(serie.label);\n\n return (\n <g\n aria-hidden={oculta || undefined}\n className={`${styles.series} ${oculta ? styles.seriesOff : ''}`}\n key={indiceSerie}\n >\n {categories.map((categoria, indiceCategoria) => {\n if (!Number.isFinite(serie.values[indiceCategoria])) {\n return null;\n }\n\n const inicioCategoria = escalaCategorias(categoria) ?? 0;\n const [de, ate] = segmentoDa(indiceSerie, indiceCategoria);\n const comeco = escalaValores(de);\n const fim = escalaValores(ate);\n const tamanho = Math.abs(fim - comeco);\n const espessura = espessuraDa(indiceSerie);\n const deslocamento = deslocamentoDa(indiceSerie);\n\n return (\n <path\n aria-label={`${serie.label}, ${categoria}: ${formatValue(serie.values[indiceCategoria])}`}\n className={styles.bar}\n d={roundedBarPath(\n vertical ? inicioCategoria + deslocamento : Math.min(comeco, fim),\n vertical ? Math.min(comeco, fim) : inicioCategoria + deslocamento,\n vertical ? espessura : tamanho,\n vertical ? tamanho : espessura,\n cantosDa(indiceSerie, indiceCategoria),\n )}\n fill={cores[indiceSerie]}\n key={indiceCategoria}\n onMouseEnter={() => {\n focarFaixa(indiceCategoria);\n setSerieEmFoco(indiceSerie);\n }}\n onMouseLeave={() => {\n focarFaixa(null);\n setSerieEmFoco(null);\n }}\n />\n );\n })}\n\n {showDataLabels !== 'hidden' &&\n !stacked &&\n categories.map((categoria, indiceCategoria) => {\n const valor = serie.values[indiceCategoria];\n\n if (!Number.isFinite(valor)) {\n return null;\n }\n\n const centro =\n (escalaCategorias(categoria) ?? 0) + deslocamentoDa(indiceSerie) + espessuraDa(indiceSerie) / 2;\n\n return rotuloAlemDaPonta(valor, escalaValores(valor), centro, indiceCategoria, indiceSerie === serieEmFoco);\n })}\n </g>\n );\n })}\n\n {showDataLabels !== 'hidden' &&\n stacked &&\n categories.map((categoria, indiceCategoria) => {\n const presentes = series.filter(\n (serie) => !isHidden(serie.label) && Number.isFinite(serie.values[indiceCategoria]),\n );\n\n if (presentes.length === 0) {\n return null;\n }\n\n const total = presentes.reduce((soma, serie) => soma + serie.values[indiceCategoria], 0);\n const pontas = pilhas[indiceCategoria].map(([, ate]) => ate);\n const extremo = total < 0 ? Math.min(0, ...pontas) : Math.max(0, ...pontas);\n const centro = (escalaCategorias(categoria) ?? 0) + vao / 2;\n\n return rotuloAlemDaPonta(total, escalaValores(extremo), centro, indiceCategoria, indiceCategoria === faixaEmFoco);\n })}\n </CartesianFrame>\n );\n}\n"],"names":["ChartBar","accent","categories","defaultHiddenSeries","emptyMessage","formatTooltipValue","formatValue","formatarNumero","height","hiddenSeries","labelAngle","legend","legendAlign","onHiddenSeriesChange","onHoverCategory","orientation","series","showDataLabels","showTooltip","stacked","title","xAxis","yAxis","yAxisRight","font","alturaMedida","raioDoCanto","ref","width","useChartMetrics","fillHeight","alturaDoDesenho","chartHeight","isHidden","isOutOfScale","toggle","useSeriesToggle","serie","focarFaixa","faixaEmFoco","useHoveredBand","serieEmFoco","setSerieEmFoco","useState","vertical","cores","useMemo","resolveSeriesColors","presencas","useTweenedNumbers","presenca","indice","dominio","naEscala","seriesInScale","domainOf","_","stackDiverging","mergeDomains","posicaoDaLegenda","rotulosDeValor","valueLabelsFor","axisReveal","margins","plot","rotation","useCartesianLayout","valueLabelRoom","comprimentoCategorias","comprimentoValores","inicioDaFaixa","fimDaFaixa","escalaCategorias","bandScale","escalaAlvo","linearScale","minimo","maximo","escalaValores","marcasDeValor","ticksFor","vao","faixas","barSlots","faixaDa","indiceSerie","NO_BAR_SLOT","espessuraDa","deslocamentoDa","contribuicao","indiceCategoria","valor","pilhas","segmentoDa","cantosDa","inicio","fim","pilha","extremo","ate","abre","fecha","menor","maior","rotuloAlemDaPonta","ponta","centro","chave","emFoco","negativo","jsx","styles","markShown","marcasCategoria","categoria","marcasValor","eixoDeCategoria","eixoDeValor","jsxs","CartesianFrame","categoryTooltip","BandCursor","oculta","inicioCategoria","de","comeco","tamanho","espessura","deslocamento","roundedBarPath","presentes","total","soma","pontas"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e="_bar_72sfu_3",s="_series_72sfu_7 _series_141iy_209",_="_seriesOff_72sfu_11 _seriesOff_141iy_213",r="_valueLabel_72sfu_15 _valueLabel_141iy_124",a={bar:e,series:s,seriesOff:_,valueLabel:r};exports.bar=e;exports.default=a;exports.series=s;exports.seriesOff=_;exports.valueLabel=r;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e="_bar_yvrwj_3",s="_series_yvrwj_7 _series_yf6oe_211",_="_seriesOff_yvrwj_11 _seriesOff_yf6oe_215",a="_valueLabel_yvrwj_15 _valueLabel_yf6oe_103",l="_valueLabelHidden_yvrwj_19 _valueLabelHidden_yf6oe_116",r={bar:e,series:s,seriesOff:_,valueLabel:a,valueLabelHidden:l};exports.bar=e;exports.default=r;exports.series=s;exports.seriesOff=_;exports.valueLabel=a;exports.valueLabelHidden=l;
2
2
  //# sourceMappingURL=ChartBar.module.css.cjs.map
@@ -1,14 +1,16 @@
1
- const s = "_bar_72sfu_3", e = "_series_72sfu_7 _series_141iy_209", _ = "_seriesOff_72sfu_11 _seriesOff_141iy_213", a = "_valueLabel_72sfu_15 _valueLabel_141iy_124", f = {
2
- bar: s,
3
- series: e,
4
- seriesOff: _,
5
- valueLabel: a
1
+ const e = "_bar_yvrwj_3", _ = "_series_yvrwj_7 _series_yf6oe_211", s = "_seriesOff_yvrwj_11 _seriesOff_yf6oe_215", a = "_valueLabel_yvrwj_15 _valueLabel_yf6oe_103", l = "_valueLabelHidden_yvrwj_19 _valueLabelHidden_yf6oe_116", r = {
2
+ bar: e,
3
+ series: _,
4
+ seriesOff: s,
5
+ valueLabel: a,
6
+ valueLabelHidden: l
6
7
  };
7
8
  export {
8
- s as bar,
9
- f as default,
10
- e as series,
11
- _ as seriesOff,
12
- a as valueLabel
9
+ e as bar,
10
+ r as default,
11
+ _ as series,
12
+ s as seriesOff,
13
+ a as valueLabel,
14
+ l as valueLabelHidden
13
15
  };
14
16
  //# sourceMappingURL=ChartBar.module.css.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChartBar.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
1
+ {"version":3,"file":"ChartBar.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const m=require("react/jsx-runtime"),g=require("react"),c=require("./ChartCombo.module.css.cjs"),je=require("../core/useChartMetrics.cjs"),ke=require("../core/useSeriesToggle.cjs"),Fe=require("../core/useHoveredBand.cjs"),Ee=require("../palette/seriesColor.cjs"),te=require("../core/useTweenedNumbers.cjs"),u=require("../scales/scales.cjs"),k=require("../core/cartesianLayout.cjs"),O=require("../core/spacing.cjs"),$e=require("../core/CartesianFrame.cjs"),Re=require("../core/BandCursor.cjs"),ne=require("../core/shapes.cjs"),Se=require("../../../utils/formatters/formatarNumero.cjs");function Te(r,a){return r[a]!==null&&!r[a-1]&&!r[a+1]}function F(r){return r.axis??"left"}function oe(r,a,p){return u.mergeDomains(r.filter(v=>F(v)===a&&!p(v.label)).map(v=>u.domainOf(v.values.filter(E=>E!==null))))}function le(r){const[a=0,p=0]=u.linearScale({domain:r,range:[0,1]}).domain();return{max:p,min:a}}function Be({accent:r,categories:a,curve:p="smooth",defaultHiddenSeries:v,emptyMessage:E="Sem dados no período",formatRightValue:se,formatValue:D=Se.formatarNumero,height:re=260,hiddenSeries:ie,labelAngle:ue="auto",legend:ce="bottom",legendAlign:me,onHiddenSeriesChange:de,onHoverCategory:he,series:i,showDataLabels:$=!1,showDots:fe=!1,title:be,xAxis:w="visible",yAxis:A="visible",yAxisRight:ge}){const{font:H,height:ve,radius:y,ref:xe,width:P}=je.useChartMetrics(),{fillHeight:pe,value:N}=k.chartHeight(re,ve),{isHidden:h,toggle:qe}=ke.useSeriesToggle({defaultHiddenSeries:v,hiddenSeries:ie,onHiddenSeriesChange:de}),{hover:_,hovered:z}=Fe.useHoveredBand(he),R=se??D,S=i.some(e=>F(e)==="right"),M=g.useMemo(()=>Ee.resolveSeriesColors(i,{accent:r}),[r,i]),De=te.useTweenedNumbers(i.map(e=>h(e.label)?0:1)),[T,B]=g.useMemo(()=>{const e=le(oe(i,"left",h));return S?u.alignZeros(e,le(oe(i,"right",h))):[e,e]},[h,i,S]),Z=ge??(S?"visible":"hidden"),{margins:ye,plot:l,rotation:Ne}=k.cartesianLayout({bottomLabels:a,font:H,height:N,labelAngle:ue,leftLabels:k.valueLabelsFor(T,N,D),rightLabels:k.valueLabelsFor(B,N,R),topRoom:$?O.valueLabelRoom(H):0,width:P,xAxis:w,yAxis:A,yAxisRight:Z}),x=g.useMemo(()=>u.bandScale({domain:a,range:[0,l.width]}),[a,l.width]),G=g.useMemo(()=>u.linearScale({domain:T,nice:!1,range:[l.height,0]}),[T,l.height]),I=g.useMemo(()=>u.linearScale({domain:B,nice:!1,range:[l.height,0]}),[B,l.height]),[J,K,Q,U]=te.useTweenedNumbers([...G.domain(),...I.domain()]),C=g.useMemo(()=>u.linearScale({domain:{min:J,max:K},nice:!1,range:[l.height,0]}),[K,J,l.height]),W=g.useMemo(()=>u.linearScale({domain:{min:Q,max:U},nice:!1,range:[l.height,0]}),[U,Q,l.height]),X=e=>F(e)==="right"?W:C,Y=e=>F(e)==="right"?R:D,V=u.ticksFor(G,l.height),Me=u.ticksFor(I,l.height),L=x.bandwidth(),Ce=O.barSlots(L,i.map((e,t)=>e.kind==="bar"?De[t]??0:0)),j=e=>Ce[e]??O.NO_BAR_SLOT,Le=a.map(e=>({label:e,position:(x(e)??0)+L/2})),ee=(e,t,f)=>e.map(d=>({label:f(d),position:t(d)}));return m.jsxs($e.CartesianFrame,{containerRef:xe,empty:i.length===0||a.length===0,emptyMessage:E,fillHeight:pe,grid:[{baseline:C(0),lines:V.map(e=>C(e)),orientation:"horizontal"}],height:N,legend:i.map((e,t)=>({color:M[t],hidden:h(e.label),label:e.label})),legendAlign:me,legendPosition:ce,margins:ye,onToggleSeries:qe,plot:l,title:be,width:P,xAxis:{labelRotation:Ne,ticks:Le,visibility:w},yAxis:{hideLine:!0,ticks:ee(V,C,D),visibility:A},yAxisRight:{hideLine:!0,ticks:ee(Me,W,R),visibility:Z},children:[z!==null&&m.jsx(Re.BandCursor,{offset:x(a[z])??0,plot:l,size:L}),i.map((e,t)=>{if(e.kind!=="bar")return null;const f=h(e.label),d=X(e),q=Y(e),b=d(0);return m.jsxs("g",{"aria-hidden":f||void 0,className:`${c.default.series} ${f?c.default.seriesOff:""}`,children:[a.map((s,n)=>{const o=e.values[n];if(o==null||!Number.isFinite(o))return null;const ae=d(o);return m.jsx("path",{"aria-label":`${e.label}, ${s}: ${q(o)}`,className:c.default.bar,d:ne.roundedBarPath((x(s)??0)+j(t).offset,Math.min(b,ae),j(t).thickness,Math.abs(ae-b),[y,y,y,y]),fill:M[t],onMouseEnter:()=>_(n),onMouseLeave:()=>_(null)},n)}),$&&a.map((s,n)=>{const o=e.values[n];return o==null||!Number.isFinite(o)?null:m.jsx("text",{className:c.default.valueLabel,textAnchor:"middle",x:(x(s)??0)+j(t).offset+j(t).thickness/2,y:d(o)-6,children:q(o)},n)})]},t)}),i.map((e,t)=>{if(e.kind!=="line")return null;const f=h(e.label),d=X(e),q=Y(e),b=a.map((s,n)=>{const o=e.values[n];return o==null||!Number.isFinite(o)?null:{x:(x(s)??0)+L/2,y:d(o)}});return m.jsxs("g",{"aria-hidden":f||void 0,className:`${c.default.series} ${f?c.default.seriesOff:""}`,children:[m.jsx("path",{className:c.default.line,d:ne.linePath(b,p),fill:"none",stroke:M[t]}),b.map((s,n)=>s===null?null:m.jsx("circle",{"aria-label":`${e.label}, ${a[n]}: ${q(e.values[n]??0)}`,className:fe||Te(b,n)?c.default.dotVisible:c.default.dot,cx:s.x,cy:s.y,fill:M[t],r:4},n)),$&&b.map((s,n)=>s===null?null:m.jsx("text",{className:c.default.valueLabel,textAnchor:"middle",x:s.x,y:s.y-10,children:q(e.values[n]??0)},n))]},t)})]})}exports.ChartCombo=Be;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("react/jsx-runtime"),h=require("react"),u=require("./ChartCombo.module.css.cjs"),Te=require("../core/useChartMetrics.cjs"),ie=require("../core/useSeriesToggle.cjs"),He=require("../core/useHoveredBand.cjs"),Oe=require("../palette/seriesColor.cjs"),ne=require("../core/useTweenedNumbers.cjs"),m=require("../scales/scales.cjs"),we=require("../core/useCartesianLayout.cjs"),B=require("../core/spacing.cjs"),g=require("../core/cartesianLayout.cjs"),Be=require("../core/CartesianFrame.cjs"),Ae=require("../core/BandCursor.cjs"),le=require("../core/shapes.cjs"),Pe=require("../core/tooltips.cjs"),_e=require("../../../utils/formatters/formatarNumero.cjs");function ze(i,a){return i[a]!==null&&!i[a-1]&&!i[a+1]}function M(i){return i.axis??"left"}function se(i,a,x){return m.mergeDomains(ie.seriesInScale(i.filter(p=>M(p)===a),x).map(p=>m.domainOf(p.values.filter(R=>R!==null))))}function re(i){const[a=0,x=0]=m.linearScale({domain:i,range:[0,1]}).domain();return{max:x,min:a}}function Ie({accent:i,categories:a,curve:x="smooth",defaultHiddenSeries:p,emptyMessage:R="Sem dados no período",formatRightValue:ue,formatTooltipValue:me,formatValue:q=_e.formatarNumero,height:ce=260,hiddenSeries:de,labelAngle:he="auto",legend:fe="bottom",legendAlign:be,onHiddenSeriesChange:ve,onHoverCategory:ge,series:l,showDataLabels:y="hidden",showTooltip:xe=!0,showDots:pe="onHover",title:qe,xAxis:A="visible",yAxis:P="visible",yAxisRight:ye}){const{font:_,height:Ce,radius:$,ref:Ne,width:z}=Te.useChartMetrics(),{fillHeight:ke,value:F}=g.chartHeight(ce,Ce),{isHidden:C,isOutOfScale:T,toggle:De}=ie.useSeriesToggle({defaultHiddenSeries:p,hiddenSeries:de,labels:l.map(e=>e.label),onHiddenSeriesChange:ve}),{hover:I,hovered:N}=He.useHoveredBand(ge),[Me,Z]=h.useState(null),L=ue??q,H=l.some(e=>M(e)==="right"),k=h.useMemo(()=>Oe.resolveSeriesColors(l,{accent:i}),[i,l]),$e=ne.useTweenedNumbers(l.map(e=>C(e.label)?0:1)),[O,w]=h.useMemo(()=>{const e=re(se(l,"left",T));return H?m.alignZeros(e,re(se(l,"right",T))):[e,e]},[T,l,H]),G=ye??(H?"visible":"hidden"),{axisReveal:Fe,margins:Le,plot:s,rotation:Se}=we.useCartesianLayout({bottomLabels:a,font:_,height:F,labelAngle:he,leftLabels:g.valueLabelsFor(O,F,q),rightLabels:g.valueLabelsFor(w,F,L),topRoom:y==="hidden"?0:B.valueLabelRoom(_),width:z,xAxis:A,yAxis:P,yAxisRight:G}),v=h.useMemo(()=>m.bandScale({domain:a,range:[0,s.width]}),[a,s.width]),J=h.useMemo(()=>m.linearScale({domain:O,nice:!1,range:[s.height,0]}),[O,s.height]),K=h.useMemo(()=>m.linearScale({domain:w,nice:!1,range:[s.height,0]}),[w,s.height]),[Q,U,W,X]=ne.useTweenedNumbers([...J.domain(),...K.domain()]),S=h.useMemo(()=>m.linearScale({domain:{min:Q,max:U},nice:!1,range:[s.height,0]}),[U,Q,s.height]),Y=h.useMemo(()=>m.linearScale({domain:{min:W,max:X},nice:!1,range:[s.height,0]}),[X,W,s.height]),V=e=>M(e)==="right"?Y:S,ee=e=>M(e)==="right"?L:q,ae=m.ticksFor(J,s.height),Ee=m.ticksFor(K,s.height),E=v.bandwidth(),je=B.barSlots(E,l.map((e,t)=>e.kind==="bar"?$e[t]??0:0)),j=e=>je[e]??B.NO_BAR_SLOT,Re=a.map(e=>({label:e,position:(v(e)??0)+E/2})),te=(e,t,f)=>e.map(d=>({label:f(d),position:t(d)}));return c.jsxs(Be.CartesianFrame,{axisReveal:Fe,containerRef:Ne,empty:l.length===0||a.length===0,emptyMessage:R,fillHeight:ke,grid:[{baseline:S(0),lines:ae.map(e=>S(e)),orientation:"horizontal"}],height:F,legend:l.map((e,t)=>({color:k[t],hidden:C(e.label),label:e.label})),legendAlign:be,legendPosition:fe,margins:Le,onToggleSeries:De,plot:s,title:qe,tooltip:xe?Pe.categoryTooltip({categories:a,colors:k,format:me??q,index:N,isHidden:C,series:l.map(e=>({...e,format:M(e)==="right"?L:void 0}))}):void 0,width:z,xAxis:{labelRotation:Se,ticks:Re,visibility:A},yAxis:{hideLine:!0,ticks:te(ae,S,q),visibility:P},yAxisRight:{hideLine:!0,ticks:te(Ee,Y,L),visibility:G},children:[N!==null&&c.jsx(Ae.BandCursor,{offset:v(a[N])??0,plot:s,size:E}),l.map((e,t)=>{if(e.kind!=="bar")return null;const f=C(e.label),d=V(e),D=ee(e),b=d(0);return c.jsxs("g",{"aria-hidden":f||void 0,className:`${u.default.series} ${f?u.default.seriesOff:""}`,children:[a.map((r,o)=>{const n=e.values[o];if(n==null||!Number.isFinite(n))return null;const oe=d(n);return c.jsx("path",{"aria-label":`${e.label}, ${r}: ${D(n)}`,className:u.default.bar,d:le.roundedBarPath((v(r)??0)+j(t).offset,Math.min(b,oe),j(t).thickness,Math.abs(oe-b),[$,$,$,$]),fill:k[t],onMouseEnter:()=>{I(o),Z(t)},onMouseLeave:()=>{I(null),Z(null)}},o)}),y!=="hidden"&&a.map((r,o)=>{const n=e.values[o];return n==null||!Number.isFinite(n)?null:c.jsx("text",{className:`${u.default.valueLabel} ${g.markShown(y,t===Me)?"":u.default.valueLabelHidden}`,textAnchor:"middle",x:(v(r)??0)+j(t).offset+j(t).thickness/2,y:d(n)-6,children:D(n)},o)})]},t)}),l.map((e,t)=>{if(e.kind!=="line")return null;const f=C(e.label),d=V(e),D=ee(e),b=a.map((r,o)=>{const n=e.values[o];return n==null||!Number.isFinite(n)?null:{x:(v(r)??0)+E/2,y:d(n)}});return c.jsxs("g",{"aria-hidden":f||void 0,className:`${u.default.series} ${f?u.default.seriesOff:""}`,children:[c.jsx("path",{className:u.default.line,d:le.linePath(b,x),fill:"none",stroke:k[t]}),b.map((r,o)=>r===null?null:c.jsx("circle",{"aria-label":`${e.label}, ${a[o]}: ${D(e.values[o]??0)}`,className:g.markShown(pe,o===N)||ze(b,o)?u.default.dotVisible:u.default.dot,cx:r.x,cy:r.y,stroke:k[t],r:4},o)),y!=="hidden"&&b.map((r,o)=>r===null?null:c.jsx("text",{className:`${u.default.valueLabel} ${g.markShown(y,o===N)?"":u.default.valueLabelHidden}`,textAnchor:"middle",x:r.x,y:r.y-10,children:D(e.values[o]??0)},o))]},t)})]})}exports.ChartCombo=Ie;
2
2
  //# sourceMappingURL=ChartCombo.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChartCombo.cjs","sources":["../../../../src/components/charts/ChartCombo/ChartCombo.tsx"],"sourcesContent":["import { useMemo } from 'react';\nimport {\n BandCursor,\n CartesianFrame,\n NO_BAR_SLOT,\n barSlots,\n cartesianLayout,\n chartHeight,\n linePath,\n roundedBarPath,\n useChartMetrics,\n useHoveredBand,\n useSeriesToggle,\n useTweenedNumbers,\n valueLabelRoom,\n valueLabelsFor,\n type AxisLabelAngle,\n type AxisTick,\n type AxisVisibility,\n type ChartCurve,\n type ChartHeight,\n type ChartLegendAlign,\n type ChartLegendPosition,\n type ChartPoint,\n} from '../core';\nimport { resolveSeriesColors, type SeriesAppearance } from '../palette';\nimport { alignZeros, bandScale, domainOf, linearScale, mergeDomains, ticksFor, type NumericRange } from '../scales';\nimport { formatarNumero } from '../../../utils/formatters';\nimport styles from './ChartCombo.module.css';\n/**\n * Ponto sem vizinho desenhado. A curva entre ele e o nada nao tem tracado, e o\n * marcador so no hover deixaria o dado invisivel — entao ele aparece sempre.\n */\nfunction isolado(pontos: readonly (ChartPoint | null)[], indice: number) {\n return pontos[indice] !== null && !pontos[indice - 1] && !pontos[indice + 1];\n}\n\n\nexport type ChartComboKind = 'bar' | 'line';\n\n/**\n * Eixo de valor a que a serie pertence. A escolha e sempre do produto: o\n * grafico nunca parte a escala por conta propria.\n */\nexport type ChartComboAxis = 'left' | 'right';\n\nexport interface ChartComboSeries extends SeriesAppearance {\n axis?: ChartComboAxis;\n kind: ChartComboKind;\n label: string;\n values: readonly (number | null)[];\n}\n\nexport interface ChartComboProps {\n accent?: string;\n categories: readonly string[];\n curve?: ChartCurve;\n defaultHiddenSeries?: readonly string[];\n emptyMessage?: string;\n formatRightValue?: (value: number) => string;\n formatValue?: (value: number) => string;\n height?: ChartHeight;\n hiddenSeries?: readonly string[];\n labelAngle?: AxisLabelAngle;\n legend?: ChartLegendPosition;\n legendAlign?: ChartLegendAlign;\n onHiddenSeriesChange?: (hidden: readonly string[]) => void;\n /** Indice da categoria sob o ponteiro, ou `null` ao sair dela. */\n onHoverCategory?: (index: number | null) => void;\n series: readonly ChartComboSeries[];\n showDataLabels?: boolean;\n showDots?: boolean;\n title: string;\n xAxis?: AxisVisibility;\n yAxis?: AxisVisibility;\n yAxisRight?: AxisVisibility;\n}\n\nfunction eixoDa(serie: ChartComboSeries): ChartComboAxis {\n return serie.axis ?? 'left';\n}\n\n/** Dominio de um eixo: so as series visiveis que pertencem a ele. */\nfunction dominioDoEixo(\n series: readonly ChartComboSeries[],\n axis: ChartComboAxis,\n oculta: (label: string) => boolean,\n) {\n return mergeDomains(\n series\n .filter((serie) => eixoDa(serie) === axis && !oculta(serie.label))\n .map((serie) => domainOf(serie.values.filter((valor) => valor !== null))),\n );\n}\n\n/** Dominio com os limites arredondados que o eixo mostraria sozinho. */\nfunction arredondado(dominio: NumericRange): NumericRange {\n const [min = 0, max = 0] = linearScale({ domain: dominio, range: [0, 1] }).domain();\n\n return { max, min };\n}\n\n/**\n * Barras e linhas sobre o mesmo eixo de categorias. Uma serie declara a que\n * eixo de valor pertence; sem nenhuma a direita, o dominio e unico e o eixo\n * direito espelha o esquerdo.\n */\nexport function ChartCombo({\n accent,\n categories,\n curve = 'smooth',\n defaultHiddenSeries,\n emptyMessage = 'Sem dados no período',\n formatRightValue,\n formatValue = formatarNumero,\n height = 260,\n hiddenSeries,\n labelAngle = 'auto',\n legend = 'bottom',\n legendAlign,\n onHiddenSeriesChange,\n onHoverCategory,\n series,\n showDataLabels = false,\n showDots = false,\n title,\n xAxis = 'visible',\n yAxis = 'visible',\n yAxisRight,\n}: ChartComboProps) {\n const { font, height: alturaMedida, radius: raioDoCanto, ref, width } = useChartMetrics();\n const { fillHeight, value: alturaDoDesenho } = chartHeight(height, alturaMedida);\n const { isHidden, toggle } = useSeriesToggle({ defaultHiddenSeries, hiddenSeries, onHiddenSeriesChange });\n const { hover: focarFaixa, hovered: faixaEmFoco } = useHoveredBand(onHoverCategory);\n\n const formatarDireita = formatRightValue ?? formatValue;\n const temEixoDireito = series.some((serie) => eixoDa(serie) === 'right');\n\n // A cor sai da lista inteira, e nao das visiveis: desligar uma serie nao pode\n // repintar as demais.\n const cores = useMemo(() => resolveSeriesColors(series, { accent }), [accent, series]);\n\n // Presenca de cada serie, entre zero e um. E ela que reparte a faixa, entao a\n // barra desligada encolhe enquanto as demais ocupam o lugar dela.\n const presencas = useTweenedNumbers(series.map((serie) => (isHidden(serie.label) ? 0 : 1)));\n\n // Com serie a direita, o zero fica na mesma altura nos dois eixos: as barras crescem da mesma base.\n const [dominioEsquerda, dominioDireita] = useMemo(() => {\n const esquerda = arredondado(dominioDoEixo(series, 'left', isHidden));\n\n return temEixoDireito\n ? alignZeros(esquerda, arredondado(dominioDoEixo(series, 'right', isHidden)))\n : [esquerda, esquerda];\n }, [isHidden, series, temEixoDireito]);\n\n // Uma segunda escala sem eixo para le-la e o duplo eixo que engana. Havendo\n // serie a direita, o eixo aparece sem ninguem pedir.\n const visibilidadeDireita = yAxisRight ?? (temEixoDireito ? 'visible' : 'hidden');\n\n const { margins, plot, rotation } = cartesianLayout({\n bottomLabels: categories,\n font,\n height: alturaDoDesenho,\n labelAngle,\n leftLabels: valueLabelsFor(dominioEsquerda, alturaDoDesenho, formatValue),\n rightLabels: valueLabelsFor(dominioDireita, alturaDoDesenho, formatarDireita),\n topRoom: showDataLabels ? valueLabelRoom(font) : 0,\n width,\n xAxis,\n yAxis,\n yAxisRight: visibilidadeDireita,\n });\n\n // Barras e linhas compartilham a escala de faixas: a linha passa pelo centro\n // da faixa, que e onde a marca do eixo de categoria tambem fica.\n const escalaCategorias = useMemo(\n () => bandScale({ domain: categories, range: [0, plot.width] }),\n [categories, plot.width],\n );\n\n // A escala alvo fixa as marcas; a animada posiciona o desenho. Sem separar as\n // duas, as marcas exibiriam valores quebrados durante a transicao.\n const alvoEsquerda = useMemo(\n () => linearScale({ domain: dominioEsquerda, nice: false, range: [plot.height, 0] }),\n [dominioEsquerda, plot.height],\n );\n\n const alvoDireita = useMemo(\n () => linearScale({ domain: dominioDireita, nice: false, range: [plot.height, 0] }),\n [dominioDireita, plot.height],\n );\n\n // Os dois dominios caminham numa animacao so, e por isso chegam juntos.\n const [minEsquerda, maxEsquerda, minDireita, maxDireita] = useTweenedNumbers([\n ...alvoEsquerda.domain(),\n ...alvoDireita.domain(),\n ]);\n\n const escalaEsquerda = useMemo(\n () =>\n linearScale({ domain: { min: minEsquerda, max: maxEsquerda }, nice: false, range: [plot.height, 0] }),\n [maxEsquerda, minEsquerda, plot.height],\n );\n\n const escalaDireita = useMemo(\n () => linearScale({ domain: { min: minDireita, max: maxDireita }, nice: false, range: [plot.height, 0] }),\n [maxDireita, minDireita, plot.height],\n );\n\n const escalaDa = (serie: ChartComboSeries) =>\n eixoDa(serie) === 'right' ? escalaDireita : escalaEsquerda;\n const formatoDa = (serie: ChartComboSeries) =>\n eixoDa(serie) === 'right' ? formatarDireita : formatValue;\n\n const marcasEsquerda = ticksFor(alvoEsquerda, plot.height);\n const marcasDireita = ticksFor(alvoDireita, plot.height);\n\n const vao = escalaCategorias.bandwidth();\n\n // So as barras repartem a faixa: a linha passa pelo centro dela, e por isso\n // entra na conta com presenca zero.\n const faixas = barSlots(\n vao,\n series.map((serie, indice) => (serie.kind === 'bar' ? presencas[indice] ?? 0 : 0)),\n );\n const faixaDa = (indice: number) => faixas[indice] ?? NO_BAR_SLOT;\n\n const marcasCategoria: AxisTick[] = categories.map((categoria) => ({\n label: categoria,\n position: (escalaCategorias(categoria) ?? 0) + vao / 2,\n }));\n\n const marcasDeValor = (\n valores: readonly number[],\n escala: (valor: number) => number,\n formatar: (valor: number) => string,\n ): AxisTick[] => valores.map((valor) => ({ label: formatar(valor), position: escala(valor) }));\n\n return (\n <CartesianFrame\n containerRef={ref}\n empty={series.length === 0 || categories.length === 0}\n emptyMessage={emptyMessage}\n fillHeight={fillHeight}\n grid={[\n {\n baseline: escalaEsquerda(0),\n lines: marcasEsquerda.map((valor) => escalaEsquerda(valor)),\n orientation: 'horizontal',\n },\n ]}\n height={alturaDoDesenho}\n legend={series.map((serie, indice) => ({\n color: cores[indice],\n hidden: isHidden(serie.label),\n label: serie.label,\n }))}\n legendAlign={legendAlign}\n legendPosition={legend}\n margins={margins}\n onToggleSeries={toggle}\n plot={plot}\n title={title}\n width={width}\n xAxis={{ labelRotation: rotation, ticks: marcasCategoria, visibility: xAxis }}\n yAxis={{\n hideLine: true,\n ticks: marcasDeValor(marcasEsquerda, escalaEsquerda, formatValue),\n visibility: yAxis,\n }}\n yAxisRight={{\n hideLine: true,\n ticks: marcasDeValor(marcasDireita, escalaDireita, formatarDireita),\n visibility: visibilidadeDireita,\n }}\n >\n {faixaEmFoco !== null && (\n <BandCursor offset={escalaCategorias(categories[faixaEmFoco]) ?? 0} plot={plot} size={vao} />\n )}\n\n {series.map((serie, indiceSerie) => {\n if (serie.kind !== 'bar') {\n return null;\n }\n\n const oculta = isHidden(serie.label);\n const escala = escalaDa(serie);\n const formatar = formatoDa(serie);\n const base = escala(0);\n\n return (\n <g\n aria-hidden={oculta || undefined}\n className={`${styles.series} ${oculta ? styles.seriesOff : ''}`}\n key={indiceSerie}\n >\n {categories.map((categoria, indiceCategoria) => {\n const valor = serie.values[indiceCategoria];\n\n if (valor === null || valor === undefined || !Number.isFinite(valor)) {\n return null;\n }\n\n const ponta = escala(valor);\n\n return (\n <path\n aria-label={`${serie.label}, ${categoria}: ${formatar(valor)}`}\n className={styles.bar}\n d={roundedBarPath(\n (escalaCategorias(categoria) ?? 0) + faixaDa(indiceSerie).offset,\n Math.min(base, ponta),\n faixaDa(indiceSerie).thickness,\n Math.abs(ponta - base),\n [raioDoCanto, raioDoCanto, raioDoCanto, raioDoCanto],\n )}\n fill={cores[indiceSerie]}\n key={indiceCategoria}\n onMouseEnter={() => focarFaixa(indiceCategoria)}\n onMouseLeave={() => focarFaixa(null)}\n />\n );\n })}\n\n {showDataLabels &&\n categories.map((categoria, indiceCategoria) => {\n const valor = serie.values[indiceCategoria];\n\n if (valor === null || valor === undefined || !Number.isFinite(valor)) {\n return null;\n }\n\n return (\n <text\n className={styles.valueLabel}\n key={indiceCategoria}\n textAnchor=\"middle\"\n x={\n (escalaCategorias(categoria) ?? 0) +\n faixaDa(indiceSerie).offset +\n faixaDa(indiceSerie).thickness / 2\n }\n y={escala(valor) - 6}\n >\n {formatar(valor)}\n </text>\n );\n })}\n </g>\n );\n })}\n\n {series.map((serie, indiceSerie) => {\n if (serie.kind !== 'line') {\n return null;\n }\n\n const oculta = isHidden(serie.label);\n const escala = escalaDa(serie);\n const formatar = formatoDa(serie);\n const pontos = categories.map<ChartPoint | null>((categoria, indice) => {\n const valor = serie.values[indice];\n\n if (valor === null || valor === undefined || !Number.isFinite(valor)) {\n return null;\n }\n\n return { x: (escalaCategorias(categoria) ?? 0) + vao / 2, y: escala(valor) };\n });\n\n return (\n <g\n aria-hidden={oculta || undefined}\n className={`${styles.series} ${oculta ? styles.seriesOff : ''}`}\n key={indiceSerie}\n >\n <path\n className={styles.line}\n d={linePath(pontos, curve)}\n fill=\"none\"\n stroke={cores[indiceSerie]}\n />\n\n {pontos.map((ponto, indice) =>\n ponto === null ? null : (\n <circle\n aria-label={`${serie.label}, ${categories[indice]}: ${formatar(serie.values[indice] ?? 0)}`}\n className={showDots || isolado(pontos, indice) ? styles.dotVisible : styles.dot}\n cx={ponto.x}\n cy={ponto.y}\n fill={cores[indiceSerie]}\n key={indice}\n r={4}\n />\n ),\n )}\n\n {showDataLabels &&\n pontos.map((ponto, indice) =>\n ponto === null ? null : (\n <text\n className={styles.valueLabel}\n key={indice}\n textAnchor=\"middle\"\n x={ponto.x}\n y={ponto.y - 10}\n >\n {formatar(serie.values[indice] ?? 0)}\n </text>\n ),\n )}\n </g>\n );\n })}\n </CartesianFrame>\n );\n}\n"],"names":["isolado","pontos","indice","eixoDa","serie","dominioDoEixo","series","axis","oculta","mergeDomains","domainOf","valor","arredondado","dominio","min","max","linearScale","ChartCombo","accent","categories","curve","defaultHiddenSeries","emptyMessage","formatRightValue","formatValue","formatarNumero","height","hiddenSeries","labelAngle","legend","legendAlign","onHiddenSeriesChange","onHoverCategory","showDataLabels","showDots","title","xAxis","yAxis","yAxisRight","font","alturaMedida","raioDoCanto","ref","width","useChartMetrics","fillHeight","alturaDoDesenho","chartHeight","isHidden","toggle","useSeriesToggle","focarFaixa","faixaEmFoco","useHoveredBand","formatarDireita","temEixoDireito","cores","useMemo","resolveSeriesColors","presencas","useTweenedNumbers","dominioEsquerda","dominioDireita","esquerda","alignZeros","visibilidadeDireita","margins","plot","rotation","cartesianLayout","valueLabelsFor","valueLabelRoom","escalaCategorias","bandScale","alvoEsquerda","alvoDireita","minEsquerda","maxEsquerda","minDireita","maxDireita","escalaEsquerda","escalaDireita","escalaDa","formatoDa","marcasEsquerda","ticksFor","marcasDireita","vao","faixas","barSlots","faixaDa","NO_BAR_SLOT","marcasCategoria","categoria","marcasDeValor","valores","escala","formatar","jsxs","CartesianFrame","jsx","BandCursor","indiceSerie","base","styles","indiceCategoria","ponta","roundedBarPath","linePath","ponto"],"mappings":"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"}
1
+ {"version":3,"file":"ChartCombo.cjs","sources":["../../../../src/components/charts/ChartCombo/ChartCombo.tsx"],"sourcesContent":["import { useMemo, useState } from 'react';\nimport {\n BandCursor,\n markShown,\n categoryTooltip,\n CartesianFrame,\n NO_BAR_SLOT,\n barSlots,\n seriesInScale,\n useCartesianLayout,\n chartHeight,\n linePath,\n roundedBarPath,\n useChartMetrics,\n useHoveredBand,\n useSeriesToggle,\n useTweenedNumbers,\n valueLabelRoom,\n valueLabelsFor,\n type AxisLabelAngle,\n type AxisTick,\n type AxisVisibility,\n type ChartCurve,\n type ChartHeight,\n type ChartLegendAlign,\n type ChartLegendPosition,\n type MarkVisibility,\n type ChartPoint,\n} from '../core';\nimport { resolveSeriesColors, type SeriesAppearance } from '../palette';\nimport { alignZeros, bandScale, domainOf, linearScale, mergeDomains, ticksFor, type NumericRange } from '../scales';\nimport { formatarNumero } from '../../../utils/formatters';\nimport styles from './ChartCombo.module.css';\n/**\n * Ponto sem vizinho desenhado. A curva entre ele e o nada nao tem tracado, e o\n * marcador so no hover deixaria o dado invisivel — entao ele aparece sempre.\n */\nfunction isolado(pontos: readonly (ChartPoint | null)[], indice: number) {\n return pontos[indice] !== null && !pontos[indice - 1] && !pontos[indice + 1];\n}\n\n\nexport type ChartComboKind = 'bar' | 'line';\n\n/**\n * Eixo de valor a que a serie pertence. A escolha e sempre do produto: o\n * grafico nunca parte a escala por conta propria.\n */\nexport type ChartComboAxis = 'left' | 'right';\n\nexport interface ChartComboSeries extends SeriesAppearance {\n axis?: ChartComboAxis;\n kind: ChartComboKind;\n label: string;\n values: readonly (number | null)[];\n}\n\nexport interface ChartComboProps {\n accent?: string;\n categories: readonly string[];\n curve?: ChartCurve;\n defaultHiddenSeries?: readonly string[];\n emptyMessage?: string;\n formatRightValue?: (value: number) => string;\n /**\n * Formato no balao das series da esquerda. Sem ele, vale o `formatValue`: o eixo pode sair compacto e o\n * balao, exato. As da direita seguem `formatRightValue`.\n */\n formatTooltipValue?: (value: number) => string;\n formatValue?: (value: number) => string;\n height?: ChartHeight;\n hiddenSeries?: readonly string[];\n labelAngle?: AxisLabelAngle;\n legend?: ChartLegendPosition;\n legendAlign?: ChartLegendAlign;\n onHiddenSeriesChange?: (hidden: readonly string[]) => void;\n /** Indice da categoria sob o ponteiro, ou `null` ao sair dela. */\n onHoverCategory?: (index: number | null) => void;\n series: readonly ChartComboSeries[];\n /**\n * Valor de cada barra e de cada ponto. Em `onHover`, nas barras os da serie da barra sob o ponteiro; nas\n * linhas, que nao tem alvo proprio, os da categoria sob o ponteiro.\n */\n showDataLabels?: MarkVisibility;\n /** Pontos das linhas. Em `onHover`, os da categoria sob o ponteiro. */\n showDots?: MarkVisibility;\n /** Balao com as series da categoria sob o ponteiro, cada uma no formato do seu eixo. Desligue para montar o proprio `ChartTooltip`. */\n showTooltip?: boolean;\n title: string;\n xAxis?: AxisVisibility;\n yAxis?: AxisVisibility;\n yAxisRight?: AxisVisibility;\n}\n\nfunction eixoDa(serie: ChartComboSeries): ChartComboAxis {\n return serie.axis ?? 'left';\n}\n\n/** Dominio de um eixo: as series que pertencem a ele e entram na escala. */\nfunction dominioDoEixo(\n series: readonly ChartComboSeries[],\n axis: ChartComboAxis,\n oculta: (label: string) => boolean,\n) {\n return mergeDomains(\n seriesInScale(\n series.filter((serie) => eixoDa(serie) === axis),\n oculta,\n ).map((serie) => domainOf(serie.values.filter((valor) => valor !== null))),\n );\n}\n\n/** Dominio com os limites arredondados que o eixo mostraria sozinho. */\nfunction arredondado(dominio: NumericRange): NumericRange {\n const [min = 0, max = 0] = linearScale({ domain: dominio, range: [0, 1] }).domain();\n\n return { max, min };\n}\n\n/**\n * Barras e linhas sobre o mesmo eixo de categorias. Uma serie declara a que\n * eixo de valor pertence; sem nenhuma a direita, o dominio e unico e o eixo\n * direito espelha o esquerdo.\n */\nexport function ChartCombo({\n accent,\n categories,\n curve = 'smooth',\n defaultHiddenSeries,\n emptyMessage = 'Sem dados no período',\n formatRightValue,\n formatTooltipValue,\n formatValue = formatarNumero,\n height = 260,\n hiddenSeries,\n labelAngle = 'auto',\n legend = 'bottom',\n legendAlign,\n onHiddenSeriesChange,\n onHoverCategory,\n series,\n showDataLabels = 'hidden',\n showTooltip = true,\n showDots = 'onHover',\n title,\n xAxis = 'visible',\n yAxis = 'visible',\n yAxisRight,\n}: ChartComboProps) {\n const { font, height: alturaMedida, radius: raioDoCanto, ref, width } = useChartMetrics();\n const { fillHeight, value: alturaDoDesenho } = chartHeight(height, alturaMedida);\n const { isHidden, isOutOfScale, toggle } = useSeriesToggle({\n defaultHiddenSeries,\n hiddenSeries,\n labels: series.map((serie) => serie.label),\n onHiddenSeriesChange,\n });\n const { hover: focarFaixa, hovered: faixaEmFoco } = useHoveredBand(onHoverCategory);\n const [serieEmFoco, setSerieEmFoco] = useState<number | null>(null);\n\n const formatarDireita = formatRightValue ?? formatValue;\n const temEixoDireito = series.some((serie) => eixoDa(serie) === 'right');\n\n // A cor sai da lista inteira, e nao das visiveis: desligar uma serie nao pode\n // repintar as demais.\n const cores = useMemo(() => resolveSeriesColors(series, { accent }), [accent, series]);\n\n // Presenca de cada serie, entre zero e um. E ela que reparte a faixa, entao a\n // barra desligada encolhe enquanto as demais ocupam o lugar dela.\n const presencas = useTweenedNumbers(series.map((serie) => (isHidden(serie.label) ? 0 : 1)));\n\n // Com serie a direita, o zero fica na mesma altura nos dois eixos: as barras crescem da mesma base.\n const [dominioEsquerda, dominioDireita] = useMemo(() => {\n const esquerda = arredondado(dominioDoEixo(series, 'left', isOutOfScale));\n\n return temEixoDireito\n ? alignZeros(esquerda, arredondado(dominioDoEixo(series, 'right', isOutOfScale)))\n : [esquerda, esquerda];\n }, [isOutOfScale, series, temEixoDireito]);\n\n // Uma segunda escala sem eixo para le-la e o duplo eixo que engana. Havendo\n // serie a direita, o eixo aparece sem ninguem pedir.\n const visibilidadeDireita = yAxisRight ?? (temEixoDireito ? 'visible' : 'hidden');\n\n const { axisReveal, margins, plot, rotation } = useCartesianLayout({\n bottomLabels: categories,\n font,\n height: alturaDoDesenho,\n labelAngle,\n leftLabels: valueLabelsFor(dominioEsquerda, alturaDoDesenho, formatValue),\n rightLabels: valueLabelsFor(dominioDireita, alturaDoDesenho, formatarDireita),\n topRoom: showDataLabels === 'hidden' ? 0 : valueLabelRoom(font),\n width,\n xAxis,\n yAxis,\n yAxisRight: visibilidadeDireita,\n });\n\n // Barras e linhas compartilham a escala de faixas: a linha passa pelo centro\n // da faixa, que e onde a marca do eixo de categoria tambem fica.\n const escalaCategorias = useMemo(\n () => bandScale({ domain: categories, range: [0, plot.width] }),\n [categories, plot.width],\n );\n\n // A escala alvo fixa as marcas; a animada posiciona o desenho. Sem separar as\n // duas, as marcas exibiriam valores quebrados durante a transicao.\n const alvoEsquerda = useMemo(\n () => linearScale({ domain: dominioEsquerda, nice: false, range: [plot.height, 0] }),\n [dominioEsquerda, plot.height],\n );\n\n const alvoDireita = useMemo(\n () => linearScale({ domain: dominioDireita, nice: false, range: [plot.height, 0] }),\n [dominioDireita, plot.height],\n );\n\n // Os dois dominios caminham numa animacao so, e por isso chegam juntos.\n const [minEsquerda, maxEsquerda, minDireita, maxDireita] = useTweenedNumbers([\n ...alvoEsquerda.domain(),\n ...alvoDireita.domain(),\n ]);\n\n const escalaEsquerda = useMemo(\n () =>\n linearScale({ domain: { min: minEsquerda, max: maxEsquerda }, nice: false, range: [plot.height, 0] }),\n [maxEsquerda, minEsquerda, plot.height],\n );\n\n const escalaDireita = useMemo(\n () => linearScale({ domain: { min: minDireita, max: maxDireita }, nice: false, range: [plot.height, 0] }),\n [maxDireita, minDireita, plot.height],\n );\n\n const escalaDa = (serie: ChartComboSeries) =>\n eixoDa(serie) === 'right' ? escalaDireita : escalaEsquerda;\n const formatoDa = (serie: ChartComboSeries) =>\n eixoDa(serie) === 'right' ? formatarDireita : formatValue;\n\n const marcasEsquerda = ticksFor(alvoEsquerda, plot.height);\n const marcasDireita = ticksFor(alvoDireita, plot.height);\n\n const vao = escalaCategorias.bandwidth();\n\n // So as barras repartem a faixa: a linha passa pelo centro dela, e por isso\n // entra na conta com presenca zero.\n const faixas = barSlots(\n vao,\n series.map((serie, indice) => (serie.kind === 'bar' ? presencas[indice] ?? 0 : 0)),\n );\n const faixaDa = (indice: number) => faixas[indice] ?? NO_BAR_SLOT;\n\n const marcasCategoria: AxisTick[] = categories.map((categoria) => ({\n label: categoria,\n position: (escalaCategorias(categoria) ?? 0) + vao / 2,\n }));\n\n const marcasDeValor = (\n valores: readonly number[],\n escala: (valor: number) => number,\n formatar: (valor: number) => string,\n ): AxisTick[] => valores.map((valor) => ({ label: formatar(valor), position: escala(valor) }));\n\n return (\n <CartesianFrame\n axisReveal={axisReveal}\n containerRef={ref}\n empty={series.length === 0 || categories.length === 0}\n emptyMessage={emptyMessage}\n fillHeight={fillHeight}\n grid={[\n {\n baseline: escalaEsquerda(0),\n lines: marcasEsquerda.map((valor) => escalaEsquerda(valor)),\n orientation: 'horizontal',\n },\n ]}\n height={alturaDoDesenho}\n legend={series.map((serie, indice) => ({\n color: cores[indice],\n hidden: isHidden(serie.label),\n label: serie.label,\n }))}\n legendAlign={legendAlign}\n legendPosition={legend}\n margins={margins}\n onToggleSeries={toggle}\n plot={plot}\n title={title}\n tooltip={\n showTooltip\n ? categoryTooltip({\n categories,\n colors: cores,\n format: formatTooltipValue ?? formatValue,\n index: faixaEmFoco,\n isHidden,\n series: series.map((serie) => ({ ...serie, format: eixoDa(serie) === 'right' ? formatarDireita : undefined })),\n })\n : undefined\n }\n width={width}\n xAxis={{ labelRotation: rotation, ticks: marcasCategoria, visibility: xAxis }}\n yAxis={{\n hideLine: true,\n ticks: marcasDeValor(marcasEsquerda, escalaEsquerda, formatValue),\n visibility: yAxis,\n }}\n yAxisRight={{\n hideLine: true,\n ticks: marcasDeValor(marcasDireita, escalaDireita, formatarDireita),\n visibility: visibilidadeDireita,\n }}\n >\n {faixaEmFoco !== null && (\n <BandCursor offset={escalaCategorias(categories[faixaEmFoco]) ?? 0} plot={plot} size={vao} />\n )}\n\n {series.map((serie, indiceSerie) => {\n if (serie.kind !== 'bar') {\n return null;\n }\n\n const oculta = isHidden(serie.label);\n const escala = escalaDa(serie);\n const formatar = formatoDa(serie);\n const base = escala(0);\n\n return (\n <g\n aria-hidden={oculta || undefined}\n className={`${styles.series} ${oculta ? styles.seriesOff : ''}`}\n key={indiceSerie}\n >\n {categories.map((categoria, indiceCategoria) => {\n const valor = serie.values[indiceCategoria];\n\n if (valor === null || valor === undefined || !Number.isFinite(valor)) {\n return null;\n }\n\n const ponta = escala(valor);\n\n return (\n <path\n aria-label={`${serie.label}, ${categoria}: ${formatar(valor)}`}\n className={styles.bar}\n d={roundedBarPath(\n (escalaCategorias(categoria) ?? 0) + faixaDa(indiceSerie).offset,\n Math.min(base, ponta),\n faixaDa(indiceSerie).thickness,\n Math.abs(ponta - base),\n [raioDoCanto, raioDoCanto, raioDoCanto, raioDoCanto],\n )}\n fill={cores[indiceSerie]}\n key={indiceCategoria}\n onMouseEnter={() => {\n focarFaixa(indiceCategoria);\n setSerieEmFoco(indiceSerie);\n }}\n onMouseLeave={() => {\n focarFaixa(null);\n setSerieEmFoco(null);\n }}\n />\n );\n })}\n\n {showDataLabels !== 'hidden' &&\n categories.map((categoria, indiceCategoria) => {\n const valor = serie.values[indiceCategoria];\n\n if (valor === null || valor === undefined || !Number.isFinite(valor)) {\n return null;\n }\n\n return (\n <text\n className={`${styles.valueLabel} ${markShown(showDataLabels, indiceSerie === serieEmFoco) ? '' : styles.valueLabelHidden}`}\n key={indiceCategoria}\n textAnchor=\"middle\"\n x={\n (escalaCategorias(categoria) ?? 0) +\n faixaDa(indiceSerie).offset +\n faixaDa(indiceSerie).thickness / 2\n }\n y={escala(valor) - 6}\n >\n {formatar(valor)}\n </text>\n );\n })}\n </g>\n );\n })}\n\n {series.map((serie, indiceSerie) => {\n if (serie.kind !== 'line') {\n return null;\n }\n\n const oculta = isHidden(serie.label);\n const escala = escalaDa(serie);\n const formatar = formatoDa(serie);\n const pontos = categories.map<ChartPoint | null>((categoria, indice) => {\n const valor = serie.values[indice];\n\n if (valor === null || valor === undefined || !Number.isFinite(valor)) {\n return null;\n }\n\n return { x: (escalaCategorias(categoria) ?? 0) + vao / 2, y: escala(valor) };\n });\n\n return (\n <g\n aria-hidden={oculta || undefined}\n className={`${styles.series} ${oculta ? styles.seriesOff : ''}`}\n key={indiceSerie}\n >\n <path\n className={styles.line}\n d={linePath(pontos, curve)}\n fill=\"none\"\n stroke={cores[indiceSerie]}\n />\n\n {pontos.map((ponto, indice) =>\n ponto === null ? null : (\n <circle\n aria-label={`${serie.label}, ${categories[indice]}: ${formatar(serie.values[indice] ?? 0)}`}\n className={markShown(showDots, indice === faixaEmFoco) || isolado(pontos, indice) ? styles.dotVisible : styles.dot}\n cx={ponto.x}\n cy={ponto.y}\n stroke={cores[indiceSerie]}\n key={indice}\n r={4}\n />\n ),\n )}\n\n {showDataLabels !== 'hidden' &&\n pontos.map((ponto, indice) =>\n ponto === null ? null : (\n <text\n className={`${styles.valueLabel} ${markShown(showDataLabels, indice === faixaEmFoco) ? '' : styles.valueLabelHidden}`}\n key={indice}\n textAnchor=\"middle\"\n x={ponto.x}\n y={ponto.y - 10}\n >\n {formatar(serie.values[indice] ?? 0)}\n </text>\n ),\n )}\n </g>\n );\n })}\n </CartesianFrame>\n );\n}\n"],"names":["isolado","pontos","indice","eixoDa","serie","dominioDoEixo","series","axis","oculta","mergeDomains","seriesInScale","domainOf","valor","arredondado","dominio","min","max","linearScale","ChartCombo","accent","categories","curve","defaultHiddenSeries","emptyMessage","formatRightValue","formatTooltipValue","formatValue","formatarNumero","height","hiddenSeries","labelAngle","legend","legendAlign","onHiddenSeriesChange","onHoverCategory","showDataLabels","showTooltip","showDots","title","xAxis","yAxis","yAxisRight","font","alturaMedida","raioDoCanto","ref","width","useChartMetrics","fillHeight","alturaDoDesenho","chartHeight","isHidden","isOutOfScale","toggle","useSeriesToggle","focarFaixa","faixaEmFoco","useHoveredBand","serieEmFoco","setSerieEmFoco","useState","formatarDireita","temEixoDireito","cores","useMemo","resolveSeriesColors","presencas","useTweenedNumbers","dominioEsquerda","dominioDireita","esquerda","alignZeros","visibilidadeDireita","axisReveal","margins","plot","rotation","useCartesianLayout","valueLabelsFor","valueLabelRoom","escalaCategorias","bandScale","alvoEsquerda","alvoDireita","minEsquerda","maxEsquerda","minDireita","maxDireita","escalaEsquerda","escalaDireita","escalaDa","formatoDa","marcasEsquerda","ticksFor","marcasDireita","vao","faixas","barSlots","faixaDa","NO_BAR_SLOT","marcasCategoria","categoria","marcasDeValor","valores","escala","formatar","jsxs","CartesianFrame","categoryTooltip","jsx","BandCursor","indiceSerie","base","styles","indiceCategoria","ponta","roundedBarPath","markShown","linePath","ponto"],"mappings":"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"}