@plenustech/design-system 0.2.1 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/actions/Button/Button.cjs +2 -0
- package/dist/components/actions/Button/Button.cjs.map +1 -0
- package/dist/components/actions/Button/Button.js +47 -0
- package/dist/components/actions/Button/Button.js.map +1 -0
- package/dist/components/actions/Button/Button.module.css.cjs +2 -0
- package/dist/components/actions/Button/Button.module.css.cjs.map +1 -0
- package/dist/components/actions/Button/Button.module.css.js +24 -0
- package/dist/components/actions/Button/Button.module.css.js.map +1 -0
- package/dist/components/actions/ButtonIcon/ButtonIcon.cjs +2 -0
- package/dist/components/actions/ButtonIcon/ButtonIcon.cjs.map +1 -0
- package/dist/components/actions/ButtonIcon/ButtonIcon.js +21 -0
- package/dist/components/actions/ButtonIcon/ButtonIcon.js.map +1 -0
- package/dist/components/actions/ButtonIcon/ButtonIcon.module.css.cjs +2 -0
- package/dist/components/actions/ButtonIcon/ButtonIcon.module.css.cjs.map +1 -0
- package/dist/components/actions/ButtonIcon/ButtonIcon.module.css.js +14 -0
- package/dist/components/actions/ButtonIcon/ButtonIcon.module.css.js.map +1 -0
- package/dist/components/charts/ChartArea/ChartArea.cjs +2 -0
- package/dist/components/charts/ChartArea/ChartArea.cjs.map +1 -0
- package/dist/components/charts/ChartArea/ChartArea.js +205 -0
- package/dist/components/charts/ChartArea/ChartArea.js.map +1 -0
- package/dist/components/charts/ChartArea/ChartArea.module.css.cjs +2 -0
- package/dist/components/charts/ChartArea/ChartArea.module.css.cjs.map +1 -0
- package/dist/components/charts/ChartArea/ChartArea.module.css.js +18 -0
- package/dist/components/charts/ChartArea/ChartArea.module.css.js.map +1 -0
- package/dist/components/charts/ChartBar/ChartBar.cjs +2 -0
- package/dist/components/charts/ChartBar/ChartBar.cjs.map +1 -0
- package/dist/components/charts/ChartBar/ChartBar.js +216 -0
- package/dist/components/charts/ChartBar/ChartBar.js.map +1 -0
- package/dist/components/charts/ChartBar/ChartBar.module.css.cjs +2 -0
- package/dist/components/charts/ChartBar/ChartBar.module.css.cjs.map +1 -0
- package/dist/components/charts/ChartBar/ChartBar.module.css.js +14 -0
- package/dist/components/charts/ChartBar/ChartBar.module.css.js.map +1 -0
- package/dist/components/charts/ChartCombo/ChartCombo.cjs +2 -0
- package/dist/components/charts/ChartCombo/ChartCombo.cjs.map +1 -0
- package/dist/components/charts/ChartCombo/ChartCombo.js +248 -0
- package/dist/components/charts/ChartCombo/ChartCombo.js.map +1 -0
- package/dist/components/charts/ChartCombo/ChartCombo.module.css.cjs +2 -0
- package/dist/components/charts/ChartCombo/ChartCombo.module.css.cjs.map +1 -0
- package/dist/components/charts/ChartCombo/ChartCombo.module.css.js +20 -0
- package/dist/components/charts/ChartCombo/ChartCombo.module.css.js.map +1 -0
- package/dist/components/charts/ChartDonut/ChartDonut.cjs +2 -0
- package/dist/components/charts/ChartDonut/ChartDonut.cjs.map +1 -0
- package/dist/components/charts/ChartDonut/ChartDonut.js +107 -0
- package/dist/components/charts/ChartDonut/ChartDonut.js.map +1 -0
- package/dist/components/charts/ChartDonut/ChartDonut.module.css.cjs +2 -0
- package/dist/components/charts/ChartDonut/ChartDonut.module.css.cjs.map +1 -0
- package/dist/components/charts/ChartDonut/ChartDonut.module.css.js +14 -0
- package/dist/components/charts/ChartDonut/ChartDonut.module.css.js.map +1 -0
- package/dist/components/charts/ChartLine/ChartLine.cjs +2 -0
- package/dist/components/charts/ChartLine/ChartLine.cjs.map +1 -0
- package/dist/components/charts/ChartLine/ChartLine.js +166 -0
- package/dist/components/charts/ChartLine/ChartLine.js.map +1 -0
- package/dist/components/charts/ChartLine/ChartLine.module.css.cjs +2 -0
- package/dist/components/charts/ChartLine/ChartLine.module.css.cjs.map +1 -0
- package/dist/components/charts/ChartLine/ChartLine.module.css.js +18 -0
- package/dist/components/charts/ChartLine/ChartLine.module.css.js.map +1 -0
- package/dist/components/charts/ChartPie/ChartPie.cjs +2 -0
- package/dist/components/charts/ChartPie/ChartPie.cjs.map +1 -0
- package/dist/components/charts/ChartPie/ChartPie.js +99 -0
- package/dist/components/charts/ChartPie/ChartPie.js.map +1 -0
- package/dist/components/charts/ChartPie/ChartPie.module.css.cjs +2 -0
- package/dist/components/charts/ChartPie/ChartPie.module.css.cjs.map +1 -0
- package/dist/components/charts/ChartPie/ChartPie.module.css.js +10 -0
- package/dist/components/charts/ChartPie/ChartPie.module.css.js.map +1 -0
- package/dist/components/charts/ChartRadial/ChartRadial.cjs +2 -0
- package/dist/components/charts/ChartRadial/ChartRadial.cjs.map +1 -0
- package/dist/components/charts/ChartRadial/ChartRadial.js +121 -0
- package/dist/components/charts/ChartRadial/ChartRadial.js.map +1 -0
- package/dist/components/charts/ChartRadial/ChartRadial.module.css.cjs +2 -0
- package/dist/components/charts/ChartRadial/ChartRadial.module.css.cjs.map +1 -0
- package/dist/components/charts/ChartRadial/ChartRadial.module.css.js +16 -0
- package/dist/components/charts/ChartRadial/ChartRadial.module.css.js.map +1 -0
- package/dist/components/charts/ChartSankey/ChartSankey.cjs +2 -0
- package/dist/components/charts/ChartSankey/ChartSankey.cjs.map +1 -0
- package/dist/components/charts/ChartSankey/ChartSankey.js +209 -0
- package/dist/components/charts/ChartSankey/ChartSankey.js.map +1 -0
- package/dist/components/charts/ChartSankey/ChartSankey.module.css.cjs +2 -0
- package/dist/components/charts/ChartSankey/ChartSankey.module.css.cjs.map +1 -0
- package/dist/components/charts/ChartSankey/ChartSankey.module.css.js +22 -0
- package/dist/components/charts/ChartSankey/ChartSankey.module.css.js.map +1 -0
- package/dist/components/charts/ChartScatter/ChartScatter.cjs +2 -0
- package/dist/components/charts/ChartScatter/ChartScatter.cjs.map +1 -0
- package/dist/components/charts/ChartScatter/ChartScatter.js +137 -0
- package/dist/components/charts/ChartScatter/ChartScatter.js.map +1 -0
- package/dist/components/charts/ChartScatter/ChartScatter.module.css.cjs +2 -0
- package/dist/components/charts/ChartScatter/ChartScatter.module.css.cjs.map +1 -0
- package/dist/components/charts/ChartScatter/ChartScatter.module.css.js +14 -0
- package/dist/components/charts/ChartScatter/ChartScatter.module.css.js.map +1 -0
- package/dist/components/charts/ChartSunburst/ChartSunburst.cjs +2 -0
- package/dist/components/charts/ChartSunburst/ChartSunburst.cjs.map +1 -0
- package/dist/components/charts/ChartSunburst/ChartSunburst.js +144 -0
- package/dist/components/charts/ChartSunburst/ChartSunburst.js.map +1 -0
- package/dist/components/charts/ChartSunburst/ChartSunburst.module.css.cjs +2 -0
- package/dist/components/charts/ChartSunburst/ChartSunburst.module.css.cjs.map +1 -0
- package/dist/components/charts/ChartSunburst/ChartSunburst.module.css.js +16 -0
- package/dist/components/charts/ChartSunburst/ChartSunburst.module.css.js.map +1 -0
- package/dist/components/charts/ChartTooltip/ChartTooltip.cjs +2 -0
- package/dist/components/charts/ChartTooltip/ChartTooltip.cjs.map +1 -0
- package/dist/components/charts/ChartTooltip/ChartTooltip.js +113 -0
- package/dist/components/charts/ChartTooltip/ChartTooltip.js.map +1 -0
- package/dist/components/charts/ChartTooltip/ChartTooltip.module.css.cjs +2 -0
- package/dist/components/charts/ChartTooltip/ChartTooltip.module.css.cjs.map +1 -0
- package/dist/components/charts/ChartTooltip/ChartTooltip.module.css.js +32 -0
- package/dist/components/charts/ChartTooltip/ChartTooltip.module.css.js.map +1 -0
- package/dist/components/charts/ChartTreemap/ChartTreemap.cjs +2 -0
- package/dist/components/charts/ChartTreemap/ChartTreemap.cjs.map +1 -0
- package/dist/components/charts/ChartTreemap/ChartTreemap.js +122 -0
- package/dist/components/charts/ChartTreemap/ChartTreemap.js.map +1 -0
- package/dist/components/charts/ChartTreemap/ChartTreemap.module.css.cjs +2 -0
- package/dist/components/charts/ChartTreemap/ChartTreemap.module.css.cjs.map +1 -0
- package/dist/components/charts/ChartTreemap/ChartTreemap.module.css.js +14 -0
- package/dist/components/charts/ChartTreemap/ChartTreemap.module.css.js.map +1 -0
- package/dist/components/charts/ChartWaterfall/ChartWaterfall.cjs +2 -0
- package/dist/components/charts/ChartWaterfall/ChartWaterfall.cjs.map +1 -0
- package/dist/components/charts/ChartWaterfall/ChartWaterfall.js +168 -0
- package/dist/components/charts/ChartWaterfall/ChartWaterfall.js.map +1 -0
- package/dist/components/charts/ChartWaterfall/ChartWaterfall.module.css.cjs +2 -0
- package/dist/components/charts/ChartWaterfall/ChartWaterfall.module.css.cjs.map +1 -0
- package/dist/components/charts/ChartWaterfall/ChartWaterfall.module.css.js +12 -0
- package/dist/components/charts/ChartWaterfall/ChartWaterfall.module.css.js.map +1 -0
- package/dist/components/charts/core/Axis.cjs +2 -0
- package/dist/components/charts/core/Axis.cjs.map +1 -0
- package/dist/components/charts/core/Axis.js +40 -0
- package/dist/components/charts/core/Axis.js.map +1 -0
- package/dist/components/charts/core/BandCursor.cjs +2 -0
- package/dist/components/charts/core/BandCursor.cjs.map +1 -0
- package/dist/components/charts/core/BandCursor.js +19 -0
- package/dist/components/charts/core/BandCursor.js.map +1 -0
- package/dist/components/charts/core/CartesianFrame.cjs +2 -0
- package/dist/components/charts/core/CartesianFrame.cjs.map +1 -0
- package/dist/components/charts/core/CartesianFrame.js +120 -0
- package/dist/components/charts/core/CartesianFrame.js.map +1 -0
- package/dist/components/charts/core/Chart.module.css.cjs +2 -0
- package/dist/components/charts/core/Chart.module.css.cjs.map +1 -0
- package/dist/components/charts/core/Chart.module.css.js +68 -0
- package/dist/components/charts/core/Chart.module.css.js.map +1 -0
- package/dist/components/charts/core/ChartFrame.cjs +2 -0
- package/dist/components/charts/core/ChartFrame.cjs.map +1 -0
- package/dist/components/charts/core/ChartFrame.js +65 -0
- package/dist/components/charts/core/ChartFrame.js.map +1 -0
- package/dist/components/charts/core/ChartLegend.cjs +2 -0
- package/dist/components/charts/core/ChartLegend.cjs.map +1 -0
- package/dist/components/charts/core/ChartLegend.js +44 -0
- package/dist/components/charts/core/ChartLegend.js.map +1 -0
- package/dist/components/charts/core/Grid.cjs +2 -0
- package/dist/components/charts/core/Grid.cjs.map +1 -0
- package/dist/components/charts/core/Grid.js +20 -0
- package/dist/components/charts/core/Grid.js.map +1 -0
- package/dist/components/charts/core/arcs.cjs +2 -0
- package/dist/components/charts/core/arcs.cjs.map +1 -0
- package/dist/components/charts/core/arcs.js +26 -0
- package/dist/components/charts/core/arcs.js.map +1 -0
- package/dist/components/charts/core/cartesianLayout.cjs +2 -0
- package/dist/components/charts/core/cartesianLayout.cjs.map +1 -0
- package/dist/components/charts/core/cartesianLayout.js +59 -0
- package/dist/components/charts/core/cartesianLayout.js.map +1 -0
- package/dist/components/charts/core/centerText.cjs +2 -0
- package/dist/components/charts/core/centerText.cjs.map +1 -0
- package/dist/components/charts/core/centerText.js +31 -0
- package/dist/components/charts/core/centerText.js.map +1 -0
- package/dist/components/charts/core/measureText.cjs +2 -0
- package/dist/components/charts/core/measureText.cjs.map +1 -0
- package/dist/components/charts/core/measureText.js +55 -0
- package/dist/components/charts/core/measureText.js.map +1 -0
- package/dist/components/charts/core/shapes.cjs +2 -0
- package/dist/components/charts/core/shapes.cjs.map +1 -0
- package/dist/components/charts/core/shapes.js +31 -0
- package/dist/components/charts/core/shapes.js.map +1 -0
- package/dist/components/charts/core/slices.cjs +2 -0
- package/dist/components/charts/core/slices.cjs.map +1 -0
- package/dist/components/charts/core/slices.js +22 -0
- package/dist/components/charts/core/slices.js.map +1 -0
- package/dist/components/charts/core/spacing.cjs +2 -0
- package/dist/components/charts/core/spacing.cjs.map +1 -0
- package/dist/components/charts/core/spacing.js +26 -0
- package/dist/components/charts/core/spacing.js.map +1 -0
- package/dist/components/charts/core/useChartMetrics.cjs +2 -0
- package/dist/components/charts/core/useChartMetrics.cjs.map +1 -0
- package/dist/components/charts/core/useChartMetrics.js +39 -0
- package/dist/components/charts/core/useChartMetrics.js.map +1 -0
- package/dist/components/charts/core/useHoveredBand.cjs +2 -0
- package/dist/components/charts/core/useHoveredBand.cjs.map +1 -0
- package/dist/components/charts/core/useHoveredBand.js +14 -0
- package/dist/components/charts/core/useHoveredBand.js.map +1 -0
- package/dist/components/charts/core/useSeriesToggle.cjs +2 -0
- package/dist/components/charts/core/useSeriesToggle.cjs.map +1 -0
- package/dist/components/charts/core/useSeriesToggle.js +22 -0
- package/dist/components/charts/core/useSeriesToggle.js.map +1 -0
- package/dist/components/charts/core/useSliceRing.cjs +2 -0
- package/dist/components/charts/core/useSliceRing.cjs.map +1 -0
- package/dist/components/charts/core/useSliceRing.js +55 -0
- package/dist/components/charts/core/useSliceRing.js.map +1 -0
- package/dist/components/charts/core/useTweenedNumbers.cjs +2 -0
- package/dist/components/charts/core/useTweenedNumbers.cjs.map +1 -0
- package/dist/components/charts/core/useTweenedNumbers.js +31 -0
- package/dist/components/charts/core/useTweenedNumbers.js.map +1 -0
- package/dist/components/charts/palette/palette.cjs +2 -0
- package/dist/components/charts/palette/palette.cjs.map +1 -0
- package/dist/components/charts/palette/palette.js +26 -0
- package/dist/components/charts/palette/palette.js.map +1 -0
- package/dist/components/charts/palette/seriesColor.cjs +2 -0
- package/dist/components/charts/palette/seriesColor.cjs.map +1 -0
- package/dist/components/charts/palette/seriesColor.js +43 -0
- package/dist/components/charts/palette/seriesColor.js.map +1 -0
- package/dist/components/charts/scales/scales.cjs +2 -0
- package/dist/components/charts/scales/scales.cjs.map +1 -0
- package/dist/components/charts/scales/scales.js +74 -0
- package/dist/components/charts/scales/scales.js.map +1 -0
- package/dist/components/data-display/Accordion/Accordion.cjs +2 -0
- package/dist/components/data-display/Accordion/Accordion.cjs.map +1 -0
- package/dist/components/data-display/Accordion/Accordion.js +91 -0
- package/dist/components/data-display/Accordion/Accordion.js.map +1 -0
- package/dist/components/data-display/Accordion/Accordion.module.css.cjs +2 -0
- package/dist/components/data-display/Accordion/Accordion.module.css.cjs.map +1 -0
- package/dist/components/data-display/Accordion/Accordion.module.css.js +26 -0
- package/dist/components/data-display/Accordion/Accordion.module.css.js.map +1 -0
- package/dist/components/data-display/Avatar/Avatar.cjs +2 -0
- package/dist/components/data-display/Avatar/Avatar.cjs.map +1 -0
- package/dist/components/data-display/Avatar/Avatar.js +20 -0
- package/dist/components/data-display/Avatar/Avatar.js.map +1 -0
- package/dist/components/data-display/Avatar/Avatar.module.css.cjs +2 -0
- package/dist/components/data-display/Avatar/Avatar.module.css.cjs.map +1 -0
- package/dist/components/data-display/Avatar/Avatar.module.css.js +14 -0
- package/dist/components/data-display/Avatar/Avatar.module.css.js.map +1 -0
- package/dist/components/data-display/Badge/Badge.cjs +2 -0
- package/dist/components/data-display/Badge/Badge.cjs.map +1 -0
- package/dist/components/data-display/Badge/Badge.js +13 -0
- package/dist/components/data-display/Badge/Badge.js.map +1 -0
- package/dist/components/data-display/Badge/Badge.module.css.cjs +2 -0
- package/dist/components/data-display/Badge/Badge.module.css.cjs.map +1 -0
- package/dist/components/data-display/Badge/Badge.module.css.js +22 -0
- package/dist/components/data-display/Badge/Badge.module.css.js.map +1 -0
- package/dist/components/data-display/Card/Card.cjs +2 -0
- package/dist/components/data-display/Card/Card.cjs.map +1 -0
- package/dist/components/data-display/Card/Card.js +51 -0
- package/dist/components/data-display/Card/Card.js.map +1 -0
- package/dist/components/data-display/Card/Card.module.css.cjs +2 -0
- package/dist/components/data-display/Card/Card.module.css.cjs.map +1 -0
- package/dist/components/data-display/Card/Card.module.css.js +26 -0
- package/dist/components/data-display/Card/Card.module.css.js.map +1 -0
- package/dist/components/data-display/CodeBlock/CodeBlock.cjs +2 -0
- package/dist/components/data-display/CodeBlock/CodeBlock.cjs.map +1 -0
- package/dist/components/data-display/CodeBlock/CodeBlock.js +65 -0
- package/dist/components/data-display/CodeBlock/CodeBlock.js.map +1 -0
- package/dist/components/data-display/CodeBlock/CodeBlock.module.css.cjs +2 -0
- package/dist/components/data-display/CodeBlock/CodeBlock.module.css.cjs.map +1 -0
- package/dist/components/data-display/CodeBlock/CodeBlock.module.css.js +47 -0
- package/dist/components/data-display/CodeBlock/CodeBlock.module.css.js.map +1 -0
- package/dist/components/data-display/CodeBlock/syntax.cjs +24 -0
- package/dist/components/data-display/CodeBlock/syntax.cjs.map +1 -0
- package/dist/components/data-display/CodeBlock/syntax.js +124 -0
- package/dist/components/data-display/CodeBlock/syntax.js.map +1 -0
- package/dist/components/data-display/List/List.cjs +2 -0
- package/dist/components/data-display/List/List.cjs.map +1 -0
- package/dist/components/data-display/List/List.js +99 -0
- package/dist/components/data-display/List/List.js.map +1 -0
- package/dist/components/data-display/List/List.module.css.cjs +2 -0
- package/dist/components/data-display/List/List.module.css.cjs.map +1 -0
- package/dist/components/data-display/List/List.module.css.js +32 -0
- package/dist/components/data-display/List/List.module.css.js.map +1 -0
- package/dist/components/data-display/List/ListingOptions.cjs +2 -0
- package/dist/components/data-display/List/ListingOptions.cjs.map +1 -0
- package/dist/components/data-display/List/ListingOptions.js +115 -0
- package/dist/components/data-display/List/ListingOptions.js.map +1 -0
- package/dist/components/data-display/List/useListing.cjs +2 -0
- package/dist/components/data-display/List/useListing.cjs.map +1 -0
- package/dist/components/data-display/List/useListing.js +85 -0
- package/dist/components/data-display/List/useListing.js.map +1 -0
- package/dist/components/data-display/List/useVirtualWindow.cjs +2 -0
- package/dist/components/data-display/List/useVirtualWindow.cjs.map +1 -0
- package/dist/components/data-display/List/useVirtualWindow.js +58 -0
- package/dist/components/data-display/List/useVirtualWindow.js.map +1 -0
- package/dist/components/data-display/Table/Table.cjs +2 -0
- package/dist/components/data-display/Table/Table.cjs.map +1 -0
- package/dist/components/data-display/Table/Table.js +238 -0
- package/dist/components/data-display/Table/Table.js.map +1 -0
- package/dist/components/data-display/Table/Table.module.css.cjs +2 -0
- package/dist/components/data-display/Table/Table.module.css.cjs.map +1 -0
- package/dist/components/data-display/Table/Table.module.css.js +69 -0
- package/dist/components/data-display/Table/Table.module.css.js.map +1 -0
- package/dist/components/feedback/Alert/Alert.cjs +2 -0
- package/dist/components/feedback/Alert/Alert.cjs.map +1 -0
- package/dist/components/feedback/Alert/Alert.js +13 -0
- package/dist/components/feedback/Alert/Alert.js.map +1 -0
- package/dist/components/feedback/Alert/Alert.module.css.cjs +2 -0
- package/dist/components/feedback/Alert/Alert.module.css.cjs.map +1 -0
- package/dist/components/feedback/Alert/Alert.module.css.js +20 -0
- package/dist/components/feedback/Alert/Alert.module.css.js.map +1 -0
- package/dist/components/feedback/EmptyState/EmptyState.cjs +2 -0
- package/dist/components/feedback/EmptyState/EmptyState.cjs.map +1 -0
- package/dist/components/feedback/EmptyState/EmptyState.js +49 -0
- package/dist/components/feedback/EmptyState/EmptyState.js.map +1 -0
- package/dist/components/feedback/EmptyState/EmptyState.module.css.cjs +2 -0
- package/dist/components/feedback/EmptyState/EmptyState.module.css.cjs.map +1 -0
- package/dist/components/feedback/EmptyState/EmptyState.module.css.js +36 -0
- package/dist/components/feedback/EmptyState/EmptyState.module.css.js.map +1 -0
- package/dist/components/feedback/Progress/Progress.cjs +2 -0
- package/dist/components/feedback/Progress/Progress.cjs.map +1 -0
- package/dist/components/feedback/Progress/Progress.js +34 -0
- package/dist/components/feedback/Progress/Progress.js.map +1 -0
- package/dist/components/feedback/Progress/Progress.module.css.cjs +2 -0
- package/dist/components/feedback/Progress/Progress.module.css.cjs.map +1 -0
- package/dist/components/feedback/Progress/Progress.module.css.js +21 -0
- package/dist/components/feedback/Progress/Progress.module.css.js.map +1 -0
- package/dist/components/feedback/Spinner/Spinner.cjs +2 -0
- package/dist/components/feedback/Spinner/Spinner.cjs.map +1 -0
- package/dist/components/feedback/Spinner/Spinner.js +10 -0
- package/dist/components/feedback/Spinner/Spinner.js.map +1 -0
- package/dist/components/feedback/Spinner/Spinner.module.css.cjs +2 -0
- package/dist/components/feedback/Spinner/Spinner.module.css.cjs.map +1 -0
- package/dist/components/feedback/Spinner/Spinner.module.css.js +15 -0
- package/dist/components/feedback/Spinner/Spinner.module.css.js.map +1 -0
- package/dist/components/forms/Checkbox/Checkbox.cjs +2 -0
- package/dist/components/forms/Checkbox/Checkbox.cjs.map +1 -0
- package/dist/components/forms/Checkbox/Checkbox.js +45 -0
- package/dist/components/forms/Checkbox/Checkbox.js.map +1 -0
- package/dist/components/forms/Checkbox/Checkbox.module.css.cjs +2 -0
- package/dist/components/forms/Checkbox/Checkbox.module.css.cjs.map +1 -0
- package/dist/components/forms/Checkbox/Checkbox.module.css.js +20 -0
- package/dist/components/forms/Checkbox/Checkbox.module.css.js.map +1 -0
- package/dist/components/forms/ComboBox/ComboBox.cjs +3 -0
- package/dist/components/forms/ComboBox/ComboBox.cjs.map +1 -0
- package/dist/components/forms/ComboBox/ComboBox.js +223 -0
- package/dist/components/forms/ComboBox/ComboBox.js.map +1 -0
- package/dist/components/forms/ComboBox/ComboBox.module.css.cjs +2 -0
- package/dist/components/forms/ComboBox/ComboBox.module.css.cjs.map +1 -0
- package/dist/components/forms/ComboBox/ComboBox.module.css.js +28 -0
- package/dist/components/forms/ComboBox/ComboBox.module.css.js.map +1 -0
- package/dist/components/forms/DatePicker/Calendar.cjs +2 -0
- package/dist/components/forms/DatePicker/Calendar.cjs.map +1 -0
- package/dist/components/forms/DatePicker/Calendar.js +86 -0
- package/dist/components/forms/DatePicker/Calendar.js.map +1 -0
- package/dist/components/forms/DatePicker/DatePicker.cjs +2 -0
- package/dist/components/forms/DatePicker/DatePicker.cjs.map +1 -0
- package/dist/components/forms/DatePicker/DatePicker.js +217 -0
- package/dist/components/forms/DatePicker/DatePicker.js.map +1 -0
- package/dist/components/forms/DatePicker/DatePicker.module.css.cjs +2 -0
- package/dist/components/forms/DatePicker/DatePicker.module.css.cjs.map +1 -0
- package/dist/components/forms/DatePicker/DatePicker.module.css.js +44 -0
- package/dist/components/forms/DatePicker/DatePicker.module.css.js.map +1 -0
- package/dist/components/forms/DatePicker/iso.cjs +2 -0
- package/dist/components/forms/DatePicker/iso.cjs.map +1 -0
- package/dist/components/forms/DatePicker/iso.js +18 -0
- package/dist/components/forms/DatePicker/iso.js.map +1 -0
- package/dist/components/forms/DateTimePicker/DateTimePicker.cjs +2 -0
- package/dist/components/forms/DateTimePicker/DateTimePicker.cjs.map +1 -0
- package/dist/components/forms/DateTimePicker/DateTimePicker.js +241 -0
- package/dist/components/forms/DateTimePicker/DateTimePicker.js.map +1 -0
- package/dist/components/forms/DateTimePicker/DateTimePicker.module.css.cjs +2 -0
- package/dist/components/forms/DateTimePicker/DateTimePicker.module.css.cjs.map +1 -0
- package/dist/components/forms/DateTimePicker/DateTimePicker.module.css.js +26 -0
- package/dist/components/forms/DateTimePicker/DateTimePicker.module.css.js.map +1 -0
- package/dist/components/forms/Field/Field.cjs +2 -0
- package/dist/components/forms/Field/Field.cjs.map +1 -0
- package/dist/components/forms/Field/Field.js +34 -0
- package/dist/components/forms/Field/Field.js.map +1 -0
- package/dist/components/forms/Field/Field.module.css.cjs +2 -0
- package/dist/components/forms/Field/Field.module.css.cjs.map +1 -0
- package/dist/components/forms/Field/Field.module.css.js +16 -0
- package/dist/components/forms/Field/Field.module.css.js.map +1 -0
- package/dist/components/forms/Field/FormValue.cjs +2 -0
- package/dist/components/forms/Field/FormValue.cjs.map +1 -0
- package/dist/components/forms/Field/FormValue.js +24 -0
- package/dist/components/forms/Field/FormValue.js.map +1 -0
- package/dist/components/forms/InputCurrency/InputCurrency.cjs +2 -0
- package/dist/components/forms/InputCurrency/InputCurrency.cjs.map +1 -0
- package/dist/components/forms/InputCurrency/InputCurrency.js +41 -0
- package/dist/components/forms/InputCurrency/InputCurrency.js.map +1 -0
- package/dist/components/forms/InputNumber/InputNumber.cjs +2 -0
- package/dist/components/forms/InputNumber/InputNumber.cjs.map +1 -0
- package/dist/components/forms/InputNumber/InputNumber.js +39 -0
- package/dist/components/forms/InputNumber/InputNumber.js.map +1 -0
- package/dist/components/forms/InputPassword/InputPassword.cjs +2 -0
- package/dist/components/forms/InputPassword/InputPassword.cjs.map +1 -0
- package/dist/components/forms/InputPassword/InputPassword.js +110 -0
- package/dist/components/forms/InputPassword/InputPassword.js.map +1 -0
- package/dist/components/forms/InputPassword/InputPassword.module.css.cjs +2 -0
- package/dist/components/forms/InputPassword/InputPassword.module.css.cjs.map +1 -0
- package/dist/components/forms/InputPassword/InputPassword.module.css.js +18 -0
- package/dist/components/forms/InputPassword/InputPassword.module.css.js.map +1 -0
- package/dist/components/forms/InputText/InputText.cjs +2 -0
- package/dist/components/forms/InputText/InputText.cjs.map +1 -0
- package/dist/components/forms/InputText/InputText.js +62 -0
- package/dist/components/forms/InputText/InputText.js.map +1 -0
- package/dist/components/forms/InputText/InputText.module.css.cjs +2 -0
- package/dist/components/forms/InputText/InputText.module.css.cjs.map +1 -0
- package/dist/components/forms/InputText/InputText.module.css.js +14 -0
- package/dist/components/forms/InputText/InputText.module.css.js.map +1 -0
- package/dist/components/forms/Label/Label.cjs +2 -0
- package/dist/components/forms/Label/Label.cjs.map +1 -0
- package/dist/components/forms/Label/Label.js +13 -0
- package/dist/components/forms/Label/Label.js.map +1 -0
- package/dist/components/forms/Label/Label.module.css.cjs +2 -0
- package/dist/components/forms/Label/Label.module.css.cjs.map +1 -0
- package/dist/components/forms/Label/Label.module.css.js +10 -0
- package/dist/components/forms/Label/Label.module.css.js.map +1 -0
- package/dist/components/forms/RadioGroup/Radio.cjs +2 -0
- package/dist/components/forms/RadioGroup/Radio.cjs.map +1 -0
- package/dist/components/forms/RadioGroup/Radio.js +43 -0
- package/dist/components/forms/RadioGroup/Radio.js.map +1 -0
- package/dist/components/forms/RadioGroup/RadioGroup.cjs +2 -0
- package/dist/components/forms/RadioGroup/RadioGroup.cjs.map +1 -0
- package/dist/components/forms/RadioGroup/RadioGroup.js +58 -0
- package/dist/components/forms/RadioGroup/RadioGroup.js.map +1 -0
- package/dist/components/forms/RadioGroup/RadioGroup.module.css.cjs +2 -0
- package/dist/components/forms/RadioGroup/RadioGroup.module.css.cjs.map +1 -0
- package/dist/components/forms/RadioGroup/RadioGroup.module.css.js +26 -0
- package/dist/components/forms/RadioGroup/RadioGroup.module.css.js.map +1 -0
- package/dist/components/forms/Select/Select.cjs +2 -0
- package/dist/components/forms/Select/Select.cjs.map +1 -0
- package/dist/components/forms/Select/Select.js +191 -0
- package/dist/components/forms/Select/Select.js.map +1 -0
- package/dist/components/forms/Select/Select.module.css.cjs +2 -0
- package/dist/components/forms/Select/Select.module.css.cjs.map +1 -0
- package/dist/components/forms/Select/Select.module.css.js +22 -0
- package/dist/components/forms/Select/Select.module.css.js.map +1 -0
- package/dist/components/forms/Switch/Switch.cjs +2 -0
- package/dist/components/forms/Switch/Switch.cjs.map +1 -0
- package/dist/components/forms/Switch/Switch.js +39 -0
- package/dist/components/forms/Switch/Switch.js.map +1 -0
- package/dist/components/forms/Switch/Switch.module.css.cjs +2 -0
- package/dist/components/forms/Switch/Switch.module.css.cjs.map +1 -0
- package/dist/components/forms/Switch/Switch.module.css.js +20 -0
- package/dist/components/forms/Switch/Switch.module.css.js.map +1 -0
- package/dist/components/forms/Textarea/Textarea.cjs +2 -0
- package/dist/components/forms/Textarea/Textarea.cjs.map +1 -0
- package/dist/components/forms/Textarea/Textarea.js +64 -0
- package/dist/components/forms/Textarea/Textarea.js.map +1 -0
- package/dist/components/forms/Textarea/Textarea.module.css.cjs +2 -0
- package/dist/components/forms/Textarea/Textarea.module.css.cjs.map +1 -0
- package/dist/components/forms/Textarea/Textarea.module.css.js +14 -0
- package/dist/components/forms/Textarea/Textarea.module.css.js.map +1 -0
- package/dist/components/forms/TimePicker/TimePicker.cjs +2 -0
- package/dist/components/forms/TimePicker/TimePicker.cjs.map +1 -0
- package/dist/components/forms/TimePicker/TimePicker.js +176 -0
- package/dist/components/forms/TimePicker/TimePicker.js.map +1 -0
- package/dist/components/forms/TimePicker/TimePicker.module.css.cjs +2 -0
- package/dist/components/forms/TimePicker/TimePicker.module.css.cjs.map +1 -0
- package/dist/components/forms/TimePicker/TimePicker.module.css.js +26 -0
- package/dist/components/forms/TimePicker/TimePicker.module.css.js.map +1 -0
- package/dist/components/forms/TimePicker/TimeSlots.cjs +2 -0
- package/dist/components/forms/TimePicker/TimeSlots.cjs.map +1 -0
- package/dist/components/forms/TimePicker/TimeSlots.js +81 -0
- package/dist/components/forms/TimePicker/TimeSlots.js.map +1 -0
- package/dist/components/icons/Icon.cjs +2 -0
- package/dist/components/icons/Icon.cjs.map +1 -0
- package/dist/components/icons/Icon.js +24 -0
- package/dist/components/icons/Icon.js.map +1 -0
- package/dist/components/icons/icons.cjs +2 -0
- package/dist/components/icons/icons.cjs.map +1 -0
- package/dist/components/icons/icons.js +116 -0
- package/dist/components/icons/icons.js.map +1 -0
- package/dist/components/navigation/Breadcrumb/Breadcrumb.cjs +2 -0
- package/dist/components/navigation/Breadcrumb/Breadcrumb.cjs.map +1 -0
- package/dist/components/navigation/Breadcrumb/Breadcrumb.js +22 -0
- package/dist/components/navigation/Breadcrumb/Breadcrumb.js.map +1 -0
- package/dist/components/navigation/Breadcrumb/Breadcrumb.module.css.cjs +2 -0
- package/dist/components/navigation/Breadcrumb/Breadcrumb.module.css.cjs.map +1 -0
- package/dist/components/navigation/Breadcrumb/Breadcrumb.module.css.js +16 -0
- package/dist/components/navigation/Breadcrumb/Breadcrumb.module.css.js.map +1 -0
- package/dist/components/navigation/Pagination/Pagination.cjs +2 -0
- package/dist/components/navigation/Pagination/Pagination.cjs.map +1 -0
- package/dist/components/navigation/Pagination/Pagination.js +70 -0
- package/dist/components/navigation/Pagination/Pagination.js.map +1 -0
- package/dist/components/navigation/Pagination/Pagination.module.css.cjs +2 -0
- package/dist/components/navigation/Pagination/Pagination.module.css.cjs.map +1 -0
- package/dist/components/navigation/Pagination/Pagination.module.css.js +18 -0
- package/dist/components/navigation/Pagination/Pagination.module.css.js.map +1 -0
- package/dist/components/navigation/Tabs/Tabs.cjs +2 -0
- package/dist/components/navigation/Tabs/Tabs.cjs.map +1 -0
- package/dist/components/navigation/Tabs/Tabs.js +96 -0
- package/dist/components/navigation/Tabs/Tabs.js.map +1 -0
- package/dist/components/navigation/Tabs/Tabs.module.css.cjs +2 -0
- package/dist/components/navigation/Tabs/Tabs.module.css.cjs.map +1 -0
- package/dist/components/navigation/Tabs/Tabs.module.css.js +20 -0
- package/dist/components/navigation/Tabs/Tabs.module.css.js.map +1 -0
- package/dist/components/overlays/Dialog/Dialog.cjs +2 -0
- package/dist/components/overlays/Dialog/Dialog.cjs.map +1 -0
- package/dist/components/overlays/Dialog/Dialog.js +64 -0
- package/dist/components/overlays/Dialog/Dialog.js.map +1 -0
- package/dist/components/overlays/Dialog/Dialog.module.css.cjs +2 -0
- package/dist/components/overlays/Dialog/Dialog.module.css.cjs.map +1 -0
- package/dist/components/overlays/Dialog/Dialog.module.css.js +36 -0
- package/dist/components/overlays/Dialog/Dialog.module.css.js.map +1 -0
- package/dist/components/overlays/Menu/Menu.cjs +2 -0
- package/dist/components/overlays/Menu/Menu.cjs.map +1 -0
- package/dist/components/overlays/Menu/Menu.js +137 -0
- package/dist/components/overlays/Menu/Menu.js.map +1 -0
- package/dist/components/overlays/Menu/Menu.module.css.cjs +2 -0
- package/dist/components/overlays/Menu/Menu.module.css.cjs.map +1 -0
- package/dist/components/overlays/Menu/Menu.module.css.js +10 -0
- package/dist/components/overlays/Menu/Menu.module.css.js.map +1 -0
- package/dist/components/overlays/Popover/Popover.cjs +2 -0
- package/dist/components/overlays/Popover/Popover.cjs.map +1 -0
- package/dist/components/overlays/Popover/Popover.js +59 -0
- package/dist/components/overlays/Popover/Popover.js.map +1 -0
- package/dist/components/overlays/Popover/Popover.module.css.cjs +2 -0
- package/dist/components/overlays/Popover/Popover.module.css.cjs.map +1 -0
- package/dist/components/overlays/Popover/Popover.module.css.js +8 -0
- package/dist/components/overlays/Popover/Popover.module.css.js.map +1 -0
- package/dist/components/overlays/Tooltip/Tooltip.cjs +2 -0
- package/dist/components/overlays/Tooltip/Tooltip.cjs.map +1 -0
- package/dist/components/overlays/Tooltip/Tooltip.js +84 -0
- package/dist/components/overlays/Tooltip/Tooltip.js.map +1 -0
- package/dist/components/overlays/Tooltip/Tooltip.module.css.cjs +2 -0
- package/dist/components/overlays/Tooltip/Tooltip.module.css.cjs.map +1 -0
- package/dist/components/overlays/Tooltip/Tooltip.module.css.js +8 -0
- package/dist/components/overlays/Tooltip/Tooltip.module.css.js.map +1 -0
- package/dist/design-system.css +1 -1
- package/dist/hooks/useCalendar/calendar.cjs +2 -0
- package/dist/hooks/useCalendar/calendar.cjs.map +1 -0
- package/dist/hooks/useCalendar/calendar.js +56 -0
- package/dist/hooks/useCalendar/calendar.js.map +1 -0
- package/dist/hooks/useCalendar/useCalendar.cjs +2 -0
- package/dist/hooks/useCalendar/useCalendar.cjs.map +1 -0
- package/dist/hooks/useCalendar/useCalendar.js +48 -0
- package/dist/hooks/useCalendar/useCalendar.js.map +1 -0
- package/dist/hooks/useCharacterCount/useCharacterCount.cjs +2 -0
- package/dist/hooks/useCharacterCount/useCharacterCount.cjs.map +1 -0
- package/dist/hooks/useCharacterCount/useCharacterCount.js +27 -0
- package/dist/hooks/useCharacterCount/useCharacterCount.js.map +1 -0
- package/dist/hooks/useDecimalInput.cjs +2 -0
- package/dist/hooks/useDecimalInput.cjs.map +1 -0
- package/dist/hooks/useDecimalInput.js +17 -0
- package/dist/hooks/useDecimalInput.js.map +1 -0
- package/dist/hooks/useFormReset.cjs +2 -0
- package/dist/hooks/useFormReset.cjs.map +1 -0
- package/dist/hooks/useFormReset.js +16 -0
- package/dist/hooks/useFormReset.js.map +1 -0
- package/dist/hooks/useMergedRefs.cjs +2 -0
- package/dist/hooks/useMergedRefs.cjs.map +1 -0
- package/dist/hooks/useMergedRefs.js +24 -0
- package/dist/hooks/useMergedRefs.js.map +1 -0
- package/dist/hooks/useSelection/selection.cjs +2 -0
- package/dist/hooks/useSelection/selection.cjs.map +1 -0
- package/dist/hooks/useSelection/selection.js +78 -0
- package/dist/hooks/useSelection/selection.js.map +1 -0
- package/dist/hooks/useSelection/useSelection.cjs +2 -0
- package/dist/hooks/useSelection/useSelection.cjs.map +1 -0
- package/dist/hooks/useSelection/useSelection.js +68 -0
- package/dist/hooks/useSelection/useSelection.js.map +1 -0
- package/dist/index.cjs +2 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.js +131 -0
- package/dist/index.js.map +1 -0
- package/dist/types/components/actions/ButtonIcon/ButtonIcon.d.ts +12 -0
- package/dist/types/components/actions/ButtonIcon/index.d.ts +2 -0
- package/dist/types/components/data-display/CodeBlock/CodeBlock.d.ts +16 -0
- package/dist/types/components/data-display/CodeBlock/index.d.ts +3 -0
- package/dist/types/components/data-display/CodeBlock/syntax.d.ts +15 -0
- package/dist/types/components/data-display/Table/Table.d.ts +4 -2
- package/dist/types/components/feedback/EmptyState/EmptyState.d.ts +14 -0
- package/dist/types/components/feedback/EmptyState/index.d.ts +2 -0
- package/dist/types/components/icons/icons.d.ts +2 -0
- package/dist/types/components/icons/index.d.ts +1 -1
- package/dist/types/components/overlays/Dialog/Dialog.d.ts +2 -0
- package/dist/types/index.d.ts +7 -1
- package/dist/utils/formatters/formatarData.cjs +2 -0
- package/dist/utils/formatters/formatarData.cjs.map +1 -0
- package/dist/utils/formatters/formatarData.js +32 -0
- package/dist/utils/formatters/formatarData.js.map +1 -0
- package/dist/utils/formatters/formatarEntradaData.cjs +2 -0
- package/dist/utils/formatters/formatarEntradaData.cjs.map +1 -0
- package/dist/utils/formatters/formatarEntradaData.js +22 -0
- package/dist/utils/formatters/formatarEntradaData.js.map +1 -0
- package/dist/utils/formatters/formatarEntradaDecimal.cjs +2 -0
- package/dist/utils/formatters/formatarEntradaDecimal.cjs.map +1 -0
- package/dist/utils/formatters/formatarEntradaDecimal.js +35 -0
- package/dist/utils/formatters/formatarEntradaDecimal.js.map +1 -0
- package/dist/utils/formatters/formatarEntradaHora.cjs +2 -0
- package/dist/utils/formatters/formatarEntradaHora.cjs.map +1 -0
- package/dist/utils/formatters/formatarEntradaHora.js +32 -0
- package/dist/utils/formatters/formatarEntradaHora.js.map +1 -0
- package/dist/utils/formatters/formatarEntradaMonetaria.cjs +2 -0
- package/dist/utils/formatters/formatarEntradaMonetaria.cjs.map +1 -0
- package/dist/utils/formatters/formatarEntradaMonetaria.js +17 -0
- package/dist/utils/formatters/formatarEntradaMonetaria.js.map +1 -0
- package/dist/utils/formatters/formatarNumero.cjs +2 -0
- package/dist/utils/formatters/formatarNumero.cjs.map +1 -0
- package/dist/utils/formatters/formatarNumero.js +28 -0
- package/dist/utils/formatters/formatarNumero.js.map +1 -0
- package/dist/utils/formatters/mascararPartes.cjs +2 -0
- package/dist/utils/formatters/mascararPartes.cjs.map +1 -0
- package/dist/utils/formatters/mascararPartes.js +17 -0
- package/dist/utils/formatters/mascararPartes.js.map +1 -0
- package/dist/utils/textSearch/textSearch.cjs +2 -0
- package/dist/utils/textSearch/textSearch.cjs.map +1 -0
- package/dist/utils/textSearch/textSearch.js +22 -0
- package/dist/utils/textSearch/textSearch.js.map +1 -0
- package/package.json +5 -5
- package/dist/plenus-design-system.cjs +0 -3
- package/dist/plenus-design-system.cjs.map +0 -1
- package/dist/plenus-design-system.es.js +0 -6387
- package/dist/plenus-design-system.es.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChartSankey.js","sources":["../../../../src/components/charts/ChartSankey/ChartSankey.tsx"],"sourcesContent":["import { useMemo, useState } from 'react';\nimport { sankey, sankeyCenter, sankeyJustify, sankeyLeft, sankeyRight } from 'd3-sankey';\nimport {\n CHART_LABEL_BAND,\n CHART_LABEL_OFFSET,\n ChartFrame,\n chartHeight,\n measureLabel,\n truncateToWidth,\n useChartMetrics,\n widestLabel,\n type ChartHeight,\n} from '../core';\nimport { resolveSeriesColors, type SeriesAppearance } from '../palette';\nimport { formatarNumero } from '../../../utils/formatters';\nimport styles from './ChartSankey.module.css';\n\nexport interface ChartSankeyNode extends SeriesAppearance {\n label: string;\n}\n\nexport interface ChartSankeyFlow {\n source: string;\n target: string;\n value: number;\n}\n\n/** Onde os nos sem saida se encostam, conforme a referencia. */\nexport type ChartSankeyAlign = 'left' | 'right' | 'center' | 'justify';\n\n/** De onde a ligacao tira a cor: do no de origem, do de destino, ou de nenhum. */\nexport type ChartSankeyFlowColor = 'source' | 'target' | 'neutral';\n\n/**\n * Onde o valor da ligacao e escrito. O rotulo do no ocupa a faixa logo a\n * direita dele, entao `end` e o unico que nunca disputa espaco com o rotulo da\n * propria origem.\n */\nexport type ChartSankeyFlowValuePosition = 'start' | 'middle' | 'end';\n\nexport interface ChartSankeyProps {\n accent?: string;\n /** Mensagem quando o fluxo tem ciclo, que um diagrama de fluxo nao representa. */\n cyclicMessage?: string;\n emptyMessage?: string;\n flowColor?: ChartSankeyFlowColor;\n flowValuePosition?: ChartSankeyFlowValuePosition;\n flows: readonly ChartSankeyFlow[];\n formatValue?: (value: number) => string;\n height?: ChartHeight;\n nodeAlign?: ChartSankeyAlign;\n /** Ordem e aparencia dos nos. Sem ela, os nos saem das proprias ligacoes. */\n nodes?: readonly ChartSankeyNode[];\n /** Folga vertical entre dois nos da mesma coluna. */\n nodePadding?: number;\n nodeWidth?: number;\n showFlowValues?: boolean;\n showLabels?: boolean;\n title: string;\n}\n\ninterface NoPosicionado {\n index: number;\n label: string;\n x0: number;\n x1: number;\n y0: number;\n y1: number;\n}\n\ninterface Caixa {\n x0: number;\n x1: number;\n y0: number;\n y1: number;\n}\n\nfunction seCruzam(uma: Caixa, outra: Caixa) {\n return uma.x0 < outra.x1 && outra.x0 < uma.x1 && uma.y0 < outra.y1 && outra.y0 < uma.y1;\n}\n\ninterface LigacaoPosicionada {\n index: number;\n source: NoPosicionado;\n target: NoPosicionado;\n value: number;\n width: number;\n y0: number;\n y1: number;\n}\n\nconst ALINHAMENTO = {\n center: sankeyCenter,\n justify: sankeyJustify,\n left: sankeyLeft,\n right: sankeyRight,\n};\n\n/**\n * Bezier cubica entre a borda de saida e a borda de entrada, com os pontos de\n * controle no meio do vao. E o que da a ligacao a curva que sai e chega na\n * horizontal, sem torcer perto dos nos.\n */\nfunction caminhoDa(ligacao: LigacaoPosicionada) {\n const saida = ligacao.source.x1;\n const chegada = ligacao.target.x0;\n const meio = (saida + chegada) / 2;\n\n return `M${saida},${ligacao.y0}C${meio},${ligacao.y0} ${meio},${ligacao.y1} ${chegada},${ligacao.y1}`;\n}\n\n/**\n * Busca em profundidade atras de aresta de retorno. Um autolaco tambem conta:\n * o no seria origem e destino do mesmo caminho.\n */\nfunction temCiclo(flows: readonly ChartSankeyFlow[]) {\n const saidas = new Map<string, string[]>();\n\n for (const fluxo of flows) {\n saidas.set(fluxo.source, [...(saidas.get(fluxo.source) ?? []), fluxo.target]);\n }\n\n const encerrados = new Set<string>();\n const noCaminho = new Set<string>();\n\n function alcanca(no: string): boolean {\n if (noCaminho.has(no)) {\n return true;\n }\n\n if (encerrados.has(no)) {\n return false;\n }\n\n noCaminho.add(no);\n const achou = (saidas.get(no) ?? []).some(alcanca);\n noCaminho.delete(no);\n encerrados.add(no);\n\n return achou;\n }\n\n return [...saidas.keys()].some(alcanca);\n}\n\nexport function ChartSankey({\n accent,\n cyclicMessage = 'O fluxo volta sobre si mesmo e não pode ser desenhado',\n emptyMessage = 'Sem dados no período',\n flowColor = 'source',\n flowValuePosition = 'end',\n flows,\n formatValue = formatarNumero,\n height = 320,\n nodeAlign = 'justify',\n nodes,\n nodePadding = 12,\n nodeWidth = 12,\n showFlowValues = false,\n showLabels = true,\n title,\n}: ChartSankeyProps) {\n const { font, height: alturaMedida, ref, width } = useChartMetrics();\n const { fillHeight, value: alturaDoDesenho } = chartHeight(height, alturaMedida);\n const [emFoco, setEmFoco] = useState<number | null>(null);\n\n /** Os nos saem da ordem declarada, e o que faltar sai das proprias ligacoes. */\n const declarados = useMemo(() => {\n const rotulos = (nodes ?? []).map((no) => no.label);\n\n flows.forEach(({ source, target }) => {\n [source, target].forEach((rotulo) => {\n if (!rotulos.includes(rotulo)) {\n rotulos.push(rotulo);\n }\n });\n });\n\n return rotulos.map(\n (rotulo) => nodes?.find((no) => no.label === rotulo) ?? ({ label: rotulo } as ChartSankeyNode),\n );\n }, [flows, nodes]);\n\n // A cor sai da lista inteira e na ordem dos nos, para uma ligacao herdar\n // sempre a cor do no de que ela depende.\n const cores = useMemo(() => resolveSeriesColors(declarados, { accent }), [accent, declarados]);\n\n /**\n * O rotulo fica sempre a direita do no, como na referencia. So o de saida\n * precisa de espaco reservado: ele nao tem fluxo a direita para escrever por\n * cima, e sem a reserva o nome sairia pela borda.\n */\n const saidas = useMemo(() => {\n const origens = new Set(flows.map((fluxo) => fluxo.source));\n\n return declarados.map((no) => no.label).filter((rotulo) => !origens.has(rotulo));\n }, [declarados, flows]);\n\n const bandaDireita = showLabels\n ? Math.min(widestLabel(saidas, font), width * CHART_LABEL_BAND) + CHART_LABEL_OFFSET\n : 0;\n\n // Um diagrama de fluxo e aciclico por definicao, e o `d3-sankey` lanca ao\n // encontrar um ciclo. Detectar antes troca a queda da arvore inteira por uma\n // mensagem, sem descartar ligacao nenhuma pelas costas.\n const ciclico = useMemo(() => temCiclo(flows), [flows]);\n const totalDoFluxo = useMemo(\n () => flows.reduce((soma, fluxo) => soma + (Number.isFinite(fluxo.value) ? Math.max(fluxo.value, 0) : 0), 0),\n [flows],\n );\n\n const grafo = useMemo(() => {\n const util = width - bandaDireita;\n\n if (util <= 0 || alturaDoDesenho <= 0 || flows.length === 0 || ciclico || totalDoFluxo <= 0) {\n return { links: [] as LigacaoPosicionada[], nodes: [] as NoPosicionado[] };\n }\n\n const posicionar = sankey<{ label: string }, { value: number }>()\n .nodeId((no) => no.label)\n .nodeAlign(ALINHAMENTO[nodeAlign])\n .nodeWidth(nodeWidth)\n .nodePadding(nodePadding)\n .extent([\n [0, 2],\n [util, alturaDoDesenho - 2],\n ]);\n\n const resultado = posicionar({\n links: flows.map((fluxo) => ({\n ...fluxo,\n value: Number.isFinite(fluxo.value) ? Math.max(fluxo.value, 0) : 0,\n })),\n nodes: declarados.map((no) => ({ label: no.label })),\n });\n\n return resultado as unknown as { links: LigacaoPosicionada[]; nodes: NoPosicionado[] };\n }, [alturaDoDesenho, bandaDireita, ciclico, declarados, flows, nodeAlign, nodePadding, nodeWidth, totalDoFluxo, width]);\n\n const corDoNo = (indice: number) => cores[indice] ?? 'var(--pl-chart-neutral)';\n\n function corDa(ligacao: LigacaoPosicionada) {\n if (flowColor === 'neutral') {\n return 'var(--pl-chart-neutral)';\n }\n\n return corDoNo(flowColor === 'target' ? ligacao.target.index : ligacao.source.index);\n }\n\n function descreverLigacao(ligacao: LigacaoPosicionada) {\n return `${ligacao.source.label} → ${ligacao.target.label}: ${formatValue(ligacao.value)}`;\n }\n\n function classeDa(indice: number) {\n if (emFoco === null) {\n return styles.link;\n }\n\n return `${styles.link} ${emFoco === indice ? styles.linkOn : styles.linkDim}`;\n }\n\n /** Vao entre duas colunas, descontados o no e o recuo: e o que o rotulo tem. */\n const larguraDaEtapa = (() => {\n const colunas = [...new Set(grafo.nodes.map((no) => no.x0))].sort((a, b) => a - b);\n\n if (colunas.length < 2) {\n return width * CHART_LABEL_BAND;\n }\n\n const passo = Math.min(...colunas.slice(1).map((x, indice) => x - colunas[indice]));\n\n return Math.max(passo - nodeWidth - CHART_LABEL_OFFSET, 0);\n })();\n\n function rotuloDoNo(no: NoPosicionado) {\n const saida = saidas.includes(no.label);\n const texto = truncateToWidth(\n no.label,\n font,\n (saida ? bandaDireita : larguraDaEtapa) - CHART_LABEL_OFFSET,\n );\n const x = no.x1 + CHART_LABEL_OFFSET;\n const meio = (no.y0 + no.y1) / 2;\n\n return {\n caixa: {\n x0: x,\n x1: x + measureLabel(texto, font),\n y0: meio - font.lineHeight / 2,\n y1: meio + font.lineHeight / 2,\n } satisfies Caixa,\n texto,\n x,\n y: meio,\n };\n }\n\n const rotulosDosNos = showLabels ? grafo.nodes.map(rotuloDoNo) : [];\n\n /**\n * Valor de uma ligacao, ja posicionado. Ele e omitido quando cruza o rotulo\n * de algum no: dois textos sobrepostos nao informam nada, e o valor continua\n * no `title` da propria ligacao.\n */\n function valorDa(ligacao: LigacaoPosicionada) {\n const texto = formatValue(ligacao.value);\n const largura = measureLabel(texto, font);\n const saida = ligacao.source.x1;\n const chegada = ligacao.target.x0;\n const meio = (ligacao.y0 + ligacao.y1) / 2;\n\n const posicoes = {\n end: { anchor: 'end' as const, x: chegada - CHART_LABEL_OFFSET },\n middle: { anchor: 'middle' as const, x: (saida + chegada) / 2 },\n start: { anchor: 'start' as const, x: saida + CHART_LABEL_OFFSET },\n };\n\n const { anchor, x } = posicoes[flowValuePosition];\n const recuo = { end: largura, middle: largura / 2, start: 0 }[flowValuePosition];\n\n const caixa: Caixa = {\n x0: x - recuo,\n x1: x - recuo + largura,\n y0: meio - font.lineHeight / 2,\n y1: meio + font.lineHeight / 2,\n };\n\n if (rotulosDosNos.some((rotulo) => seCruzam(caixa, rotulo.caixa))) {\n return undefined;\n }\n\n return { anchor, texto, x, y: meio };\n }\n\n return (\n <ChartFrame\n containerRef={ref}\n empty={flows.length === 0 || ciclico || totalDoFluxo <= 0}\n emptyMessage={ciclico ? cyclicMessage : emptyMessage}\n fillHeight={fillHeight}\n height={alturaDoDesenho}\n legendPosition=\"none\"\n title={title}\n width={width}\n >\n <g className={styles.links}>\n {grafo.links.map((ligacao, indice) => (\n <path\n aria-label={descreverLigacao(ligacao)}\n className={classeDa(indice)}\n d={caminhoDa(ligacao)}\n key={indice}\n onMouseEnter={() => setEmFoco(indice)}\n onMouseLeave={() => setEmFoco(null)}\n stroke={corDa(ligacao)}\n strokeWidth={Math.max(ligacao.width, 1)}\n >\n <title>{descreverLigacao(ligacao)}</title>\n </path>\n ))}\n </g>\n\n {grafo.nodes.map((no) => (\n <rect\n aria-label={no.label}\n className={styles.node}\n fill={corDoNo(no.index)}\n height={Math.max(no.y1 - no.y0, 1)}\n key={no.label}\n width={no.x1 - no.x0}\n x={no.x0}\n y={no.y0}\n >\n <title>{no.label}</title>\n </rect>\n ))}\n\n {showFlowValues &&\n grafo.links.map((ligacao, indice) => {\n const valor = valorDa(ligacao);\n\n if (!valor) {\n return null;\n }\n\n return (\n <text\n className={`${styles.flowValue} ${styles.sobreFluxo}`}\n dominantBaseline=\"middle\"\n key={indice}\n textAnchor={valor.anchor}\n x={valor.x}\n y={valor.y}\n >\n {valor.texto}\n </text>\n );\n })}\n\n {/* O rotulo fica sempre a direita do no. No no de saida ele cai na banda\n reservada; nos demais, sobre o proprio fluxo, e um halo da cor da\n superficie o separa do que passa por baixo. */}\n {rotulosDosNos.map((rotulo, indice) => (\n <text\n className={`${styles.label} ${saidas.includes(grafo.nodes[indice].label) ? '' : styles.sobreFluxo}`}\n dominantBaseline=\"middle\"\n key={`rotulo-${grafo.nodes[indice].label}`}\n textAnchor=\"start\"\n x={rotulo.x}\n y={rotulo.y}\n >\n {rotulo.texto}\n </text>\n ))}\n </ChartFrame>\n );\n}\n"],"names":["seCruzam","uma","outra","ALINHAMENTO","sankeyCenter","sankeyJustify","sankeyLeft","sankeyRight","caminhoDa","ligacao","saida","chegada","meio","temCiclo","flows","saidas","fluxo","encerrados","noCaminho","alcanca","no","achou","ChartSankey","accent","cyclicMessage","emptyMessage","flowColor","flowValuePosition","formatValue","formatarNumero","height","nodeAlign","nodes","nodePadding","nodeWidth","showFlowValues","showLabels","title","font","alturaMedida","ref","width","useChartMetrics","fillHeight","alturaDoDesenho","chartHeight","emFoco","setEmFoco","useState","declarados","useMemo","rotulos","source","target","rotulo","cores","resolveSeriesColors","origens","bandaDireita","widestLabel","CHART_LABEL_BAND","CHART_LABEL_OFFSET","ciclico","totalDoFluxo","soma","grafo","util","sankey","corDoNo","indice","corDa","descreverLigacao","classeDa","styles","larguraDaEtapa","colunas","a","b","passo","x","rotuloDoNo","texto","truncateToWidth","measureLabel","rotulosDosNos","valorDa","largura","posicoes","anchor","recuo","caixa","jsxs","ChartFrame","jsx","valor"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const l="_links_1wqmi_1",n="_link_1wqmi_1",i="_linkOn_1wqmi_18",e="_linkDim_1wqmi_22",o="_node_1wqmi_26",_="_label_1wqmi_30",s="_flowValue_1wqmi_37",t="_sobreFluxo_1wqmi_47",k={links:l,link:n,linkOn:i,linkDim:e,node:o,label:_,flowValue:s,sobreFluxo:t};exports.default=k;exports.flowValue=s;exports.label=_;exports.link=n;exports.linkDim=e;exports.linkOn=i;exports.links=l;exports.node=o;exports.sobreFluxo=t;
|
|
2
|
+
//# sourceMappingURL=ChartSankey.module.css.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChartSankey.module.css.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
const l = "_links_1wqmi_1", n = "_link_1wqmi_1", _ = "_linkOn_1wqmi_18", i = "_linkDim_1wqmi_22", o = "_node_1wqmi_26", s = "_label_1wqmi_30", e = "_flowValue_1wqmi_37", k = "_sobreFluxo_1wqmi_47", t = {
|
|
2
|
+
links: l,
|
|
3
|
+
link: n,
|
|
4
|
+
linkOn: _,
|
|
5
|
+
linkDim: i,
|
|
6
|
+
node: o,
|
|
7
|
+
label: s,
|
|
8
|
+
flowValue: e,
|
|
9
|
+
sobreFluxo: k
|
|
10
|
+
};
|
|
11
|
+
export {
|
|
12
|
+
t as default,
|
|
13
|
+
e as flowValue,
|
|
14
|
+
s as label,
|
|
15
|
+
n as link,
|
|
16
|
+
i as linkDim,
|
|
17
|
+
_ as linkOn,
|
|
18
|
+
l as links,
|
|
19
|
+
o as node,
|
|
20
|
+
k as sobreFluxo
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=ChartSankey.module.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChartSankey.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("react/jsx-runtime"),s=require("react"),h=require("./ChartScatter.module.css.cjs"),he=require("../core/useChartMetrics.cjs"),ge=require("../core/useSeriesToggle.cjs"),be=require("../palette/seriesColor.cjs"),o=require("../scales/scales.cjs"),x=require("../core/cartesianLayout.cjs"),xe=require("../core/useTweenedNumbers.cjs"),L=require("../../../utils/formatters/formatarNumero.cjs"),fe=require("../core/CartesianFrame.cjs"),ye=5,ve=[4,18];function $(c){return c.z!==void 0&&Number.isFinite(c.z)?c.z:void 0}function Me({accent:c,defaultHiddenSeries:B,emptyMessage:J="Sem dados no período",formatX:f=L.formatarNumero,formatY:y=L.formatarNumero,formatZ:K=L.formatarNumero,height:Q=280,includeZero:g=!0,hiddenSeries:U,legend:W="bottom",legendAlign:ee,onHiddenSeriesChange:ie,series:n,title:te,xAxis:F="visible",yAxis:j="visible",yAxisRight:z="hidden"}){const{font:ae,height:se,ref:oe,width:v}=he.useChartMetrics(),{fillHeight:ne,value:M}=x.chartHeight(Q,se),{isHidden:m,toggle:re}=ge.useSeriesToggle({defaultHiddenSeries:B,hiddenSeries:U,onHiddenSeriesChange:ie}),[r,C]=s.useState(null),w=s.useMemo(()=>be.resolveSeriesColors(n,{accent:c}),[c,n]),b=s.useMemo(()=>n.filter(e=>!m(e.label)),[m,n]),X=g===!0||g==="x",k=g===!0||g==="y",S=s.useMemo(()=>o.mergeDomains(b.map(e=>o.domainOf(e.points.map(i=>i.x),{includeZero:X}))),[b,X]),N=s.useMemo(()=>o.mergeDomains(b.map(e=>o.domainOf(e.points.map(i=>i.y),{includeZero:k}))),[b,k]),R=s.useMemo(()=>n.reduce((e,i)=>i.points.reduce((a,u)=>Math.max(a,$(u)??0),e),0),[n]),Y=x.valueLabelsFor(N,M,y),le=x.valueLabelsFor(S,v,f),{margins:ce,plot:t,rotation:ue}=x.cartesianLayout({bottomLabels:le,font:ae,height:M,labelAngle:"auto",leftLabels:Y,rightLabels:Y,topRoom:0,width:v,xAxis:F,yAxis:j,yAxisRight:z}),O=s.useMemo(()=>o.linearScale({domain:S,range:[0,t.width]}),[S,t.width]),T=s.useMemo(()=>o.linearScale({domain:N,range:[t.height,0]}),[N,t.height]),[A,D,E,_]=xe.useTweenedNumbers([...O.domain(),...T.domain()]),p=s.useMemo(()=>o.linearScale({domain:{min:A,max:D},nice:!1,range:[0,t.width]}),[D,A,t.width]),q=s.useMemo(()=>o.linearScale({domain:{min:E,max:_},nice:!1,range:[t.height,0]}),[_,E,t.height]),me=s.useMemo(()=>o.radiusScale(R,ve),[R]),H=o.ticksFor(O,t.width),I=o.ticksFor(T,t.height),de=H.map(e=>({label:f(e),position:p(e)})),P=I.map(e=>({label:y(e),position:q(e)}));function G(e,i){const a=i.label?`${e.label}, ${i.label}`:e.label,u=`${f(i.x)} × ${y(i.y)}`,d=$(i);return d===void 0?`${a}: ${u}`:`${a}: ${u} (${K(d)})`}return l.jsxs(fe.CartesianFrame,{containerRef:oe,empty:n.every(e=>e.points.length===0),emptyMessage:J,grid:[{lines:I.map(e=>q(e)),orientation:"horizontal"},{lines:H.map(e=>p(e)),orientation:"vertical"}],fillHeight:ne,height:M,legend:n.map((e,i)=>({color:w[i],hidden:m(e.label),label:e.label})),legendAlign:ee,legendPosition:W,margins:ce,onToggleSeries:re,plot:t,title:te,width:v,xAxis:{hideLine:!0,labelRotation:ue,ticks:de,visibility:F},yAxis:{hideLine:!0,ticks:P,visibility:j},yAxisRight:{hideLine:!0,ticks:P,visibility:z},children:[r&&l.jsxs("g",{"aria-hidden":"true",children:[l.jsx("line",{className:h.default.guide,x1:r.x,x2:r.x,y1:r.y,y2:t.height}),l.jsx("line",{className:h.default.guide,x1:0,x2:r.x,y1:r.y,y2:r.y})]}),n.map((e,i)=>l.jsx("g",{"aria-hidden":m(e.label)||void 0,className:`${h.default.series} ${m(e.label)?h.default.seriesOff:""}`,children:e.points.map((a,u)=>{if(!Number.isFinite(a.x)||!Number.isFinite(a.y))return null;const d=p(a.x),V=q(a.y),Z=$(a);return l.jsx("circle",{"aria-label":G(e,a),className:h.default.bubble,cx:d,cy:V,fill:w[i],onMouseEnter:()=>C({x:d,y:V}),onMouseLeave:()=>C(null),r:Z===void 0?ye:me(Z),children:l.jsx("title",{children:G(e,a)})},u)})},i))]})}exports.ChartScatter=Me;
|
|
2
|
+
//# sourceMappingURL=ChartScatter.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChartScatter.cjs","sources":["../../../../src/components/charts/ChartScatter/ChartScatter.tsx"],"sourcesContent":["import { useMemo, useState } from 'react';\nimport {\n CartesianFrame,\n cartesianLayout,\n chartHeight,\n useChartMetrics,\n useSeriesToggle,\n useTweenedNumbers,\n valueLabelsFor,\n type AxisTick,\n type AxisVisibility,\n type ChartHeight,\n type ChartLegendAlign,\n type ChartLegendPosition,\n} from '../core';\nimport { resolveSeriesColors, type SeriesAppearance } from '../palette';\nimport { domainOf, linearScale, mergeDomains, radiusScale, ticksFor } from '../scales';\nimport { formatarNumero } from '../../../utils/formatters';\nimport styles from './ChartScatter.module.css';\n\nexport interface ChartScatterPoint {\n label?: string;\n x: number;\n y: number;\n z?: number;\n}\n\nexport interface ChartScatterSeries extends SeriesAppearance {\n label: string;\n points: readonly ChartScatterPoint[];\n}\n\nexport interface ChartScatterProps {\n accent?: string;\n defaultHiddenSeries?: readonly string[];\n emptyMessage?: string;\n formatX?: (value: number) => string;\n formatY?: (value: number) => string;\n formatZ?: (value: number) => string;\n /**\n * Inclui o zero no dominio: `true` nos dois eixos, `'x'` ou `'y'` so naquele, `false` em nenhum.\n * Medida que nao se compara ao zero — um ano, uma temperatura — fica com o eixo dela de fora;\n * um ano pede tambem um formato sem separador de milhar em `formatX` ou `formatY`.\n */\n includeZero?: boolean | 'x' | 'y';\n height?: ChartHeight;\n hiddenSeries?: readonly string[];\n legend?: ChartLegendPosition;\n legendAlign?: ChartLegendAlign;\n onHiddenSeriesChange?: (hidden: readonly string[]) => void;\n series: readonly ChartScatterSeries[];\n title: string;\n xAxis?: AxisVisibility;\n yAxis?: AxisVisibility;\n yAxisRight?: AxisVisibility;\n}\n\nconst RAIO_SEM_Z = 5;\nconst FAIXA_DE_RAIO: [number, number] = [4, 18];\n\ninterface Guia {\n x: number;\n y: number;\n}\n\n/** Tamanho invalido tem o destino do ausente: a bolha fica no raio padrao. */\nfunction zValido(ponto: ChartScatterPoint) {\n return ponto.z !== undefined && Number.isFinite(ponto.z) ? ponto.z : undefined;\n}\n\nexport function ChartScatter({\n accent,\n defaultHiddenSeries,\n emptyMessage = 'Sem dados no período',\n formatX = formatarNumero,\n formatY = formatarNumero,\n formatZ = formatarNumero,\n height = 280,\n includeZero = true,\n hiddenSeries,\n legend = 'bottom',\n legendAlign,\n onHiddenSeriesChange,\n series,\n title,\n xAxis = 'visible',\n yAxis = 'visible',\n yAxisRight = 'hidden',\n}: ChartScatterProps) {\n const { font, height: alturaMedida, ref, width } = useChartMetrics();\n const { fillHeight, value: alturaDoDesenho } = chartHeight(height, alturaMedida);\n const { isHidden, toggle } = useSeriesToggle({ defaultHiddenSeries, hiddenSeries, onHiddenSeriesChange });\n const [guia, setGuia] = useState<Guia | null>(null);\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 const visiveis = useMemo(() => series.filter((serie) => !isHidden(serie.label)), [isHidden, series]);\n\n const zeroEmX = includeZero === true || includeZero === 'x';\n const zeroEmY = includeZero === true || includeZero === 'y';\n\n const dominioX = useMemo(\n () =>\n mergeDomains(visiveis.map((serie) => domainOf(serie.points.map((p) => p.x), { includeZero: zeroEmX }))),\n [visiveis, zeroEmX],\n );\n\n const dominioY = useMemo(\n () =>\n mergeDomains(visiveis.map((serie) => domainOf(serie.points.map((p) => p.y), { includeZero: zeroEmY }))),\n [visiveis, zeroEmY],\n );\n\n const maiorZ = useMemo(\n () =>\n series.reduce(\n (maior, serie) => serie.points.reduce((parcial, ponto) => Math.max(parcial, zValido(ponto) ?? 0), maior),\n 0,\n ),\n [series],\n );\n\n const rotulosY = valueLabelsFor(dominioY, alturaDoDesenho, formatY);\n const rotulosX = valueLabelsFor(dominioX, width, formatX);\n\n const { margins, plot, rotation } = cartesianLayout({\n bottomLabels: rotulosX,\n font,\n height: alturaDoDesenho,\n labelAngle: 'auto',\n leftLabels: rotulosY,\n rightLabels: rotulosY,\n topRoom: 0,\n width,\n xAxis,\n yAxis,\n yAxisRight,\n });\n\n // As escalas alvo fixam as marcas; as animadas posicionam o desenho. Sem\n // separar as duas, as marcas exibiriam valores quebrados durante a transicao.\n const alvoX = useMemo(() => linearScale({ domain: dominioX, range: [0, plot.width] }), [dominioX, plot.width]);\n const alvoY = useMemo(() => linearScale({ domain: dominioY, range: [plot.height, 0] }), [dominioY, plot.height]);\n\n const [minX, maxX, minY, maxY] = useTweenedNumbers([...alvoX.domain(), ...alvoY.domain()]);\n\n const escalaX = useMemo(\n () => linearScale({ domain: { min: minX, max: maxX }, nice: false, range: [0, plot.width] }),\n [maxX, minX, plot.width],\n );\n const escalaY = useMemo(\n () => linearScale({ domain: { min: minY, max: maxY }, nice: false, range: [plot.height, 0] }),\n [maxY, minY, plot.height],\n );\n const escalaRaio = useMemo(() => radiusScale(maiorZ, FAIXA_DE_RAIO), [maiorZ]);\n\n const marcasX = ticksFor(alvoX, plot.width);\n const marcasY = ticksFor(alvoY, plot.height);\n\n const ticksX: AxisTick[] = marcasX.map((valor) => ({ label: formatX(valor), position: escalaX(valor) }));\n const ticksY: AxisTick[] = marcasY.map((valor) => ({ label: formatY(valor), position: escalaY(valor) }));\n\n function descrever(serie: ChartScatterSeries, ponto: ChartScatterPoint) {\n const inicio = ponto.label ? `${serie.label}, ${ponto.label}` : serie.label;\n const posicao = `${formatX(ponto.x)} × ${formatY(ponto.y)}`;\n const z = zValido(ponto);\n\n return z === undefined ? `${inicio}: ${posicao}` : `${inicio}: ${posicao} (${formatZ(z)})`;\n }\n\n return (\n <CartesianFrame\n containerRef={ref}\n empty={series.every((serie) => serie.points.length === 0)}\n emptyMessage={emptyMessage}\n grid={[\n { lines: marcasY.map((valor) => escalaY(valor)), orientation: 'horizontal' },\n { lines: marcasX.map((valor) => escalaX(valor)), orientation: 'vertical' },\n ]}\n fillHeight={fillHeight}\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={{ hideLine: true, labelRotation: rotation, ticks: ticksX, visibility: xAxis }}\n yAxis={{ hideLine: true, ticks: ticksY, visibility: yAxis }}\n yAxisRight={{ hideLine: true, ticks: ticksY, visibility: yAxisRight }}\n >\n {guia && (\n <g aria-hidden=\"true\">\n <line className={styles.guide} x1={guia.x} x2={guia.x} y1={guia.y} y2={plot.height} />\n <line className={styles.guide} x1={0} x2={guia.x} y1={guia.y} y2={guia.y} />\n </g>\n )}\n\n {series.map((serie, indiceSerie) => (\n <g\n aria-hidden={isHidden(serie.label) || undefined}\n className={`${styles.series} ${isHidden(serie.label) ? styles.seriesOff : ''}`}\n key={indiceSerie}\n >\n {serie.points.map((ponto, indice) => {\n if (!Number.isFinite(ponto.x) || !Number.isFinite(ponto.y)) {\n return null;\n }\n\n const x = escalaX(ponto.x);\n const y = escalaY(ponto.y);\n const z = zValido(ponto);\n\n return (\n <circle\n aria-label={descrever(serie, ponto)}\n className={styles.bubble}\n cx={x}\n cy={y}\n fill={cores[indiceSerie]}\n key={indice}\n onMouseEnter={() => setGuia({ x, y })}\n onMouseLeave={() => setGuia(null)}\n r={z === undefined ? RAIO_SEM_Z : escalaRaio(z)}\n >\n <title>{descrever(serie, ponto)}</title>\n </circle>\n );\n })}\n </g>\n ))}\n </CartesianFrame>\n );\n}\n"],"names":["RAIO_SEM_Z","FAIXA_DE_RAIO","zValido","ponto","ChartScatter","accent","defaultHiddenSeries","emptyMessage","formatX","formatarNumero","formatY","formatZ","height","includeZero","hiddenSeries","legend","legendAlign","onHiddenSeriesChange","series","title","xAxis","yAxis","yAxisRight","font","alturaMedida","ref","width","useChartMetrics","fillHeight","alturaDoDesenho","chartHeight","isHidden","toggle","useSeriesToggle","guia","setGuia","useState","cores","useMemo","resolveSeriesColors","visiveis","serie","zeroEmX","zeroEmY","dominioX","mergeDomains","domainOf","p","dominioY","maiorZ","maior","parcial","rotulosY","valueLabelsFor","rotulosX","margins","plot","rotation","cartesianLayout","alvoX","linearScale","alvoY","minX","maxX","minY","maxY","useTweenedNumbers","escalaX","escalaY","escalaRaio","radiusScale","marcasX","ticksFor","marcasY","ticksX","valor","ticksY","descrever","inicio","posicao","z","jsxs","CartesianFrame","indice","jsx","styles","indiceSerie","x","y"],"mappings":"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"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { jsxs as q, jsx as d } from "react/jsx-runtime";
|
|
2
|
+
import { useState as pi, useMemo as a } from "react";
|
|
3
|
+
import h from "./ChartScatter.module.css.js";
|
|
4
|
+
import { useChartMetrics as xi } from "../core/useChartMetrics.js";
|
|
5
|
+
import { useSeriesToggle as yi } from "../core/useSeriesToggle.js";
|
|
6
|
+
import { resolveSeriesColors as vi } from "../palette/seriesColor.js";
|
|
7
|
+
import { mergeDomains as B, domainOf as J, linearScale as b, radiusScale as $i, ticksFor as K } from "../scales/scales.js";
|
|
8
|
+
import { valueLabelsFor as Q, cartesianLayout as zi, chartHeight as Li } from "../core/cartesianLayout.js";
|
|
9
|
+
import { useTweenedNumbers as Ni } from "../core/useTweenedNumbers.js";
|
|
10
|
+
import { formatarNumero as N } from "../../../utils/formatters/formatarNumero.js";
|
|
11
|
+
import { CartesianFrame as Si } from "../core/CartesianFrame.js";
|
|
12
|
+
const Xi = 5, wi = [4, 18];
|
|
13
|
+
function S(s) {
|
|
14
|
+
return s.z !== void 0 && Number.isFinite(s.z) ? s.z : void 0;
|
|
15
|
+
}
|
|
16
|
+
function Hi({
|
|
17
|
+
accent: s,
|
|
18
|
+
defaultHiddenSeries: U,
|
|
19
|
+
emptyMessage: W = "Sem dados no período",
|
|
20
|
+
formatX: f = N,
|
|
21
|
+
formatY: p = N,
|
|
22
|
+
formatZ: ii = N,
|
|
23
|
+
height: ei = 280,
|
|
24
|
+
includeZero: u = !0,
|
|
25
|
+
hiddenSeries: ti,
|
|
26
|
+
legend: oi = "bottom",
|
|
27
|
+
legendAlign: ai,
|
|
28
|
+
onHiddenSeriesChange: ni,
|
|
29
|
+
series: n,
|
|
30
|
+
title: li,
|
|
31
|
+
xAxis: X = "visible",
|
|
32
|
+
yAxis: w = "visible",
|
|
33
|
+
yAxisRight: F = "hidden"
|
|
34
|
+
}) {
|
|
35
|
+
const { font: si, height: ri, ref: ci, width: x } = xi(), { fillHeight: mi, value: y } = Li(ei, ri), { isHidden: c, toggle: di } = yi({ defaultHiddenSeries: U, hiddenSeries: ti, onHiddenSeriesChange: ni }), [l, M] = pi(null), Y = a(() => vi(n, { accent: s }), [s, n]), g = a(() => n.filter((i) => !c(i.label)), [c, n]), k = u === !0 || u === "x", R = u === !0 || u === "y", v = a(
|
|
36
|
+
() => B(g.map((i) => J(i.points.map((e) => e.x), { includeZero: k }))),
|
|
37
|
+
[g, k]
|
|
38
|
+
), $ = a(
|
|
39
|
+
() => B(g.map((i) => J(i.points.map((e) => e.y), { includeZero: R }))),
|
|
40
|
+
[g, R]
|
|
41
|
+
), A = a(
|
|
42
|
+
() => n.reduce(
|
|
43
|
+
(i, e) => e.points.reduce((o, r) => Math.max(o, S(r) ?? 0), i),
|
|
44
|
+
0
|
|
45
|
+
),
|
|
46
|
+
[n]
|
|
47
|
+
), E = Q($, y, p), hi = Q(v, x, f), { margins: ui, plot: t, rotation: gi } = zi({
|
|
48
|
+
bottomLabels: hi,
|
|
49
|
+
font: si,
|
|
50
|
+
height: y,
|
|
51
|
+
labelAngle: "auto",
|
|
52
|
+
leftLabels: E,
|
|
53
|
+
rightLabels: E,
|
|
54
|
+
topRoom: 0,
|
|
55
|
+
width: x,
|
|
56
|
+
xAxis: X,
|
|
57
|
+
yAxis: w,
|
|
58
|
+
yAxisRight: F
|
|
59
|
+
}), C = a(() => b({ domain: v, range: [0, t.width] }), [v, t.width]), D = a(() => b({ domain: $, range: [t.height, 0] }), [$, t.height]), [O, _, H, I] = Ni([...C.domain(), ...D.domain()]), z = a(
|
|
60
|
+
() => b({ domain: { min: O, max: _ }, nice: !1, range: [0, t.width] }),
|
|
61
|
+
[_, O, t.width]
|
|
62
|
+
), L = a(
|
|
63
|
+
() => b({ domain: { min: H, max: I }, nice: !1, range: [t.height, 0] }),
|
|
64
|
+
[I, H, t.height]
|
|
65
|
+
), bi = a(() => $i(A, wi), [A]), T = K(C, t.width), j = K(D, t.height), fi = T.map((i) => ({ label: f(i), position: z(i) })), G = j.map((i) => ({ label: p(i), position: L(i) }));
|
|
66
|
+
function P(i, e) {
|
|
67
|
+
const o = e.label ? `${i.label}, ${e.label}` : i.label, r = `${f(e.x)} × ${p(e.y)}`, m = S(e);
|
|
68
|
+
return m === void 0 ? `${o}: ${r}` : `${o}: ${r} (${ii(m)})`;
|
|
69
|
+
}
|
|
70
|
+
return /* @__PURE__ */ q(
|
|
71
|
+
Si,
|
|
72
|
+
{
|
|
73
|
+
containerRef: ci,
|
|
74
|
+
empty: n.every((i) => i.points.length === 0),
|
|
75
|
+
emptyMessage: W,
|
|
76
|
+
grid: [
|
|
77
|
+
{ lines: j.map((i) => L(i)), orientation: "horizontal" },
|
|
78
|
+
{ lines: T.map((i) => z(i)), orientation: "vertical" }
|
|
79
|
+
],
|
|
80
|
+
fillHeight: mi,
|
|
81
|
+
height: y,
|
|
82
|
+
legend: n.map((i, e) => ({
|
|
83
|
+
color: Y[e],
|
|
84
|
+
hidden: c(i.label),
|
|
85
|
+
label: i.label
|
|
86
|
+
})),
|
|
87
|
+
legendAlign: ai,
|
|
88
|
+
legendPosition: oi,
|
|
89
|
+
margins: ui,
|
|
90
|
+
onToggleSeries: di,
|
|
91
|
+
plot: t,
|
|
92
|
+
title: li,
|
|
93
|
+
width: x,
|
|
94
|
+
xAxis: { hideLine: !0, labelRotation: gi, ticks: fi, visibility: X },
|
|
95
|
+
yAxis: { hideLine: !0, ticks: G, visibility: w },
|
|
96
|
+
yAxisRight: { hideLine: !0, ticks: G, visibility: F },
|
|
97
|
+
children: [
|
|
98
|
+
l && /* @__PURE__ */ q("g", { "aria-hidden": "true", children: [
|
|
99
|
+
/* @__PURE__ */ d("line", { className: h.guide, x1: l.x, x2: l.x, y1: l.y, y2: t.height }),
|
|
100
|
+
/* @__PURE__ */ d("line", { className: h.guide, x1: 0, x2: l.x, y1: l.y, y2: l.y })
|
|
101
|
+
] }),
|
|
102
|
+
n.map((i, e) => /* @__PURE__ */ d(
|
|
103
|
+
"g",
|
|
104
|
+
{
|
|
105
|
+
"aria-hidden": c(i.label) || void 0,
|
|
106
|
+
className: `${h.series} ${c(i.label) ? h.seriesOff : ""}`,
|
|
107
|
+
children: i.points.map((o, r) => {
|
|
108
|
+
if (!Number.isFinite(o.x) || !Number.isFinite(o.y))
|
|
109
|
+
return null;
|
|
110
|
+
const m = z(o.x), V = L(o.y), Z = S(o);
|
|
111
|
+
return /* @__PURE__ */ d(
|
|
112
|
+
"circle",
|
|
113
|
+
{
|
|
114
|
+
"aria-label": P(i, o),
|
|
115
|
+
className: h.bubble,
|
|
116
|
+
cx: m,
|
|
117
|
+
cy: V,
|
|
118
|
+
fill: Y[e],
|
|
119
|
+
onMouseEnter: () => M({ x: m, y: V }),
|
|
120
|
+
onMouseLeave: () => M(null),
|
|
121
|
+
r: Z === void 0 ? Xi : bi(Z),
|
|
122
|
+
children: /* @__PURE__ */ d("title", { children: P(i, o) })
|
|
123
|
+
},
|
|
124
|
+
r
|
|
125
|
+
);
|
|
126
|
+
})
|
|
127
|
+
},
|
|
128
|
+
e
|
|
129
|
+
))
|
|
130
|
+
]
|
|
131
|
+
}
|
|
132
|
+
);
|
|
133
|
+
}
|
|
134
|
+
export {
|
|
135
|
+
Hi as ChartScatter
|
|
136
|
+
};
|
|
137
|
+
//# sourceMappingURL=ChartScatter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChartScatter.js","sources":["../../../../src/components/charts/ChartScatter/ChartScatter.tsx"],"sourcesContent":["import { useMemo, useState } from 'react';\nimport {\n CartesianFrame,\n cartesianLayout,\n chartHeight,\n useChartMetrics,\n useSeriesToggle,\n useTweenedNumbers,\n valueLabelsFor,\n type AxisTick,\n type AxisVisibility,\n type ChartHeight,\n type ChartLegendAlign,\n type ChartLegendPosition,\n} from '../core';\nimport { resolveSeriesColors, type SeriesAppearance } from '../palette';\nimport { domainOf, linearScale, mergeDomains, radiusScale, ticksFor } from '../scales';\nimport { formatarNumero } from '../../../utils/formatters';\nimport styles from './ChartScatter.module.css';\n\nexport interface ChartScatterPoint {\n label?: string;\n x: number;\n y: number;\n z?: number;\n}\n\nexport interface ChartScatterSeries extends SeriesAppearance {\n label: string;\n points: readonly ChartScatterPoint[];\n}\n\nexport interface ChartScatterProps {\n accent?: string;\n defaultHiddenSeries?: readonly string[];\n emptyMessage?: string;\n formatX?: (value: number) => string;\n formatY?: (value: number) => string;\n formatZ?: (value: number) => string;\n /**\n * Inclui o zero no dominio: `true` nos dois eixos, `'x'` ou `'y'` so naquele, `false` em nenhum.\n * Medida que nao se compara ao zero — um ano, uma temperatura — fica com o eixo dela de fora;\n * um ano pede tambem um formato sem separador de milhar em `formatX` ou `formatY`.\n */\n includeZero?: boolean | 'x' | 'y';\n height?: ChartHeight;\n hiddenSeries?: readonly string[];\n legend?: ChartLegendPosition;\n legendAlign?: ChartLegendAlign;\n onHiddenSeriesChange?: (hidden: readonly string[]) => void;\n series: readonly ChartScatterSeries[];\n title: string;\n xAxis?: AxisVisibility;\n yAxis?: AxisVisibility;\n yAxisRight?: AxisVisibility;\n}\n\nconst RAIO_SEM_Z = 5;\nconst FAIXA_DE_RAIO: [number, number] = [4, 18];\n\ninterface Guia {\n x: number;\n y: number;\n}\n\n/** Tamanho invalido tem o destino do ausente: a bolha fica no raio padrao. */\nfunction zValido(ponto: ChartScatterPoint) {\n return ponto.z !== undefined && Number.isFinite(ponto.z) ? ponto.z : undefined;\n}\n\nexport function ChartScatter({\n accent,\n defaultHiddenSeries,\n emptyMessage = 'Sem dados no período',\n formatX = formatarNumero,\n formatY = formatarNumero,\n formatZ = formatarNumero,\n height = 280,\n includeZero = true,\n hiddenSeries,\n legend = 'bottom',\n legendAlign,\n onHiddenSeriesChange,\n series,\n title,\n xAxis = 'visible',\n yAxis = 'visible',\n yAxisRight = 'hidden',\n}: ChartScatterProps) {\n const { font, height: alturaMedida, ref, width } = useChartMetrics();\n const { fillHeight, value: alturaDoDesenho } = chartHeight(height, alturaMedida);\n const { isHidden, toggle } = useSeriesToggle({ defaultHiddenSeries, hiddenSeries, onHiddenSeriesChange });\n const [guia, setGuia] = useState<Guia | null>(null);\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 const visiveis = useMemo(() => series.filter((serie) => !isHidden(serie.label)), [isHidden, series]);\n\n const zeroEmX = includeZero === true || includeZero === 'x';\n const zeroEmY = includeZero === true || includeZero === 'y';\n\n const dominioX = useMemo(\n () =>\n mergeDomains(visiveis.map((serie) => domainOf(serie.points.map((p) => p.x), { includeZero: zeroEmX }))),\n [visiveis, zeroEmX],\n );\n\n const dominioY = useMemo(\n () =>\n mergeDomains(visiveis.map((serie) => domainOf(serie.points.map((p) => p.y), { includeZero: zeroEmY }))),\n [visiveis, zeroEmY],\n );\n\n const maiorZ = useMemo(\n () =>\n series.reduce(\n (maior, serie) => serie.points.reduce((parcial, ponto) => Math.max(parcial, zValido(ponto) ?? 0), maior),\n 0,\n ),\n [series],\n );\n\n const rotulosY = valueLabelsFor(dominioY, alturaDoDesenho, formatY);\n const rotulosX = valueLabelsFor(dominioX, width, formatX);\n\n const { margins, plot, rotation } = cartesianLayout({\n bottomLabels: rotulosX,\n font,\n height: alturaDoDesenho,\n labelAngle: 'auto',\n leftLabels: rotulosY,\n rightLabels: rotulosY,\n topRoom: 0,\n width,\n xAxis,\n yAxis,\n yAxisRight,\n });\n\n // As escalas alvo fixam as marcas; as animadas posicionam o desenho. Sem\n // separar as duas, as marcas exibiriam valores quebrados durante a transicao.\n const alvoX = useMemo(() => linearScale({ domain: dominioX, range: [0, plot.width] }), [dominioX, plot.width]);\n const alvoY = useMemo(() => linearScale({ domain: dominioY, range: [plot.height, 0] }), [dominioY, plot.height]);\n\n const [minX, maxX, minY, maxY] = useTweenedNumbers([...alvoX.domain(), ...alvoY.domain()]);\n\n const escalaX = useMemo(\n () => linearScale({ domain: { min: minX, max: maxX }, nice: false, range: [0, plot.width] }),\n [maxX, minX, plot.width],\n );\n const escalaY = useMemo(\n () => linearScale({ domain: { min: minY, max: maxY }, nice: false, range: [plot.height, 0] }),\n [maxY, minY, plot.height],\n );\n const escalaRaio = useMemo(() => radiusScale(maiorZ, FAIXA_DE_RAIO), [maiorZ]);\n\n const marcasX = ticksFor(alvoX, plot.width);\n const marcasY = ticksFor(alvoY, plot.height);\n\n const ticksX: AxisTick[] = marcasX.map((valor) => ({ label: formatX(valor), position: escalaX(valor) }));\n const ticksY: AxisTick[] = marcasY.map((valor) => ({ label: formatY(valor), position: escalaY(valor) }));\n\n function descrever(serie: ChartScatterSeries, ponto: ChartScatterPoint) {\n const inicio = ponto.label ? `${serie.label}, ${ponto.label}` : serie.label;\n const posicao = `${formatX(ponto.x)} × ${formatY(ponto.y)}`;\n const z = zValido(ponto);\n\n return z === undefined ? `${inicio}: ${posicao}` : `${inicio}: ${posicao} (${formatZ(z)})`;\n }\n\n return (\n <CartesianFrame\n containerRef={ref}\n empty={series.every((serie) => serie.points.length === 0)}\n emptyMessage={emptyMessage}\n grid={[\n { lines: marcasY.map((valor) => escalaY(valor)), orientation: 'horizontal' },\n { lines: marcasX.map((valor) => escalaX(valor)), orientation: 'vertical' },\n ]}\n fillHeight={fillHeight}\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={{ hideLine: true, labelRotation: rotation, ticks: ticksX, visibility: xAxis }}\n yAxis={{ hideLine: true, ticks: ticksY, visibility: yAxis }}\n yAxisRight={{ hideLine: true, ticks: ticksY, visibility: yAxisRight }}\n >\n {guia && (\n <g aria-hidden=\"true\">\n <line className={styles.guide} x1={guia.x} x2={guia.x} y1={guia.y} y2={plot.height} />\n <line className={styles.guide} x1={0} x2={guia.x} y1={guia.y} y2={guia.y} />\n </g>\n )}\n\n {series.map((serie, indiceSerie) => (\n <g\n aria-hidden={isHidden(serie.label) || undefined}\n className={`${styles.series} ${isHidden(serie.label) ? styles.seriesOff : ''}`}\n key={indiceSerie}\n >\n {serie.points.map((ponto, indice) => {\n if (!Number.isFinite(ponto.x) || !Number.isFinite(ponto.y)) {\n return null;\n }\n\n const x = escalaX(ponto.x);\n const y = escalaY(ponto.y);\n const z = zValido(ponto);\n\n return (\n <circle\n aria-label={descrever(serie, ponto)}\n className={styles.bubble}\n cx={x}\n cy={y}\n fill={cores[indiceSerie]}\n key={indice}\n onMouseEnter={() => setGuia({ x, y })}\n onMouseLeave={() => setGuia(null)}\n r={z === undefined ? RAIO_SEM_Z : escalaRaio(z)}\n >\n <title>{descrever(serie, ponto)}</title>\n </circle>\n );\n })}\n </g>\n ))}\n </CartesianFrame>\n );\n}\n"],"names":["RAIO_SEM_Z","FAIXA_DE_RAIO","zValido","ponto","ChartScatter","accent","defaultHiddenSeries","emptyMessage","formatX","formatarNumero","formatY","formatZ","height","includeZero","hiddenSeries","legend","legendAlign","onHiddenSeriesChange","series","title","xAxis","yAxis","yAxisRight","font","alturaMedida","ref","width","useChartMetrics","fillHeight","alturaDoDesenho","chartHeight","isHidden","toggle","useSeriesToggle","guia","setGuia","useState","cores","useMemo","resolveSeriesColors","visiveis","serie","zeroEmX","zeroEmY","dominioX","mergeDomains","domainOf","p","dominioY","maiorZ","maior","parcial","rotulosY","valueLabelsFor","rotulosX","margins","plot","rotation","cartesianLayout","alvoX","linearScale","alvoY","minX","maxX","minY","maxY","useTweenedNumbers","escalaX","escalaY","escalaRaio","radiusScale","marcasX","ticksFor","marcasY","ticksX","valor","ticksY","descrever","inicio","posicao","z","jsxs","CartesianFrame","indice","jsx","styles","indiceSerie","x","y"],"mappings":";;;;;;;;;;;AAyDA,MAAMA,KAAa,GACbC,KAAkC,CAAC,GAAG,EAAE;AAQ9C,SAASC,EAAQC,GAA0B;AACzC,SAAOA,EAAM,MAAM,UAAa,OAAO,SAASA,EAAM,CAAC,IAAIA,EAAM,IAAI;AACvE;AAEO,SAASC,GAAa;AAAA,EAC3B,QAAAC;AAAA,EACA,qBAAAC;AAAA,EACA,cAAAC,IAAe;AAAA,EACf,SAAAC,IAAUC;AAAA,EACV,SAAAC,IAAUD;AAAA,EACV,SAAAE,KAAUF;AAAA,EACV,QAAAG,KAAS;AAAA,EACT,aAAAC,IAAc;AAAA,EACd,cAAAC;AAAA,EACA,QAAAC,KAAS;AAAA,EACT,aAAAC;AAAA,EACA,sBAAAC;AAAA,EACA,QAAAC;AAAA,EACA,OAAAC;AAAA,EACA,OAAAC,IAAQ;AAAA,EACR,OAAAC,IAAQ;AAAA,EACR,YAAAC,IAAa;AACf,GAAsB;AACpB,QAAM,EAAE,MAAAC,IAAM,QAAQC,IAAc,KAAAC,IAAK,OAAAC,EAAA,IAAUC,GAAA,GAC7C,EAAE,YAAAC,IAAY,OAAOC,MAAoBC,GAAYlB,IAAQY,EAAY,GACzE,EAAE,UAAAO,GAAU,QAAAC,OAAWC,GAAgB,EAAE,qBAAA3B,GAAqB,cAAAQ,IAAc,sBAAAG,IAAsB,GAClG,CAACiB,GAAMC,CAAO,IAAIC,GAAsB,IAAI,GAI5CC,IAAQC,EAAQ,MAAMC,GAAoBrB,GAAQ,EAAE,QAAAb,EAAA,CAAQ,GAAG,CAACA,GAAQa,CAAM,CAAC,GAE/EsB,IAAWF,EAAQ,MAAMpB,EAAO,OAAO,CAACuB,MAAU,CAACV,EAASU,EAAM,KAAK,CAAC,GAAG,CAACV,GAAUb,CAAM,CAAC,GAE7FwB,IAAU7B,MAAgB,MAAQA,MAAgB,KAClD8B,IAAU9B,MAAgB,MAAQA,MAAgB,KAElD+B,IAAWN;AAAA,IACf,MACEO,EAAaL,EAAS,IAAI,CAACC,MAAUK,EAASL,EAAM,OAAO,IAAI,CAACM,MAAMA,EAAE,CAAC,GAAG,EAAE,aAAaL,EAAA,CAAS,CAAC,CAAC;AAAA,IACxG,CAACF,GAAUE,CAAO;AAAA,EAAA,GAGdM,IAAWV;AAAA,IACf,MACEO,EAAaL,EAAS,IAAI,CAACC,MAAUK,EAASL,EAAM,OAAO,IAAI,CAACM,MAAMA,EAAE,CAAC,GAAG,EAAE,aAAaJ,EAAA,CAAS,CAAC,CAAC;AAAA,IACxG,CAACH,GAAUG,CAAO;AAAA,EAAA,GAGdM,IAASX;AAAA,IACb,MACEpB,EAAO;AAAA,MACL,CAACgC,GAAOT,MAAUA,EAAM,OAAO,OAAO,CAACU,GAAShD,MAAU,KAAK,IAAIgD,GAASjD,EAAQC,CAAK,KAAK,CAAC,GAAG+C,CAAK;AAAA,MACvG;AAAA,IAAA;AAAA,IAEJ,CAAChC,CAAM;AAAA,EAAA,GAGHkC,IAAWC,EAAeL,GAAUnB,GAAiBnB,CAAO,GAC5D4C,KAAWD,EAAeT,GAAUlB,GAAOlB,CAAO,GAElD,EAAE,SAAA+C,IAAS,MAAAC,GAAM,UAAAC,GAAA,IAAaC,GAAgB;AAAA,IAClD,cAAcJ;AAAA,IACd,MAAA/B;AAAA,IACA,QAAQM;AAAA,IACR,YAAY;AAAA,IACZ,YAAYuB;AAAA,IACZ,aAAaA;AAAA,IACb,SAAS;AAAA,IACT,OAAA1B;AAAA,IACA,OAAAN;AAAA,IACA,OAAAC;AAAA,IACA,YAAAC;AAAA,EAAA,CACD,GAIKqC,IAAQrB,EAAQ,MAAMsB,EAAY,EAAE,QAAQhB,GAAU,OAAO,CAAC,GAAGY,EAAK,KAAK,GAAG,GAAG,CAACZ,GAAUY,EAAK,KAAK,CAAC,GACvGK,IAAQvB,EAAQ,MAAMsB,EAAY,EAAE,QAAQZ,GAAU,OAAO,CAACQ,EAAK,QAAQ,CAAC,GAAG,GAAG,CAACR,GAAUQ,EAAK,MAAM,CAAC,GAEzG,CAACM,GAAMC,GAAMC,GAAMC,CAAI,IAAIC,GAAkB,CAAC,GAAGP,EAAM,UAAU,GAAGE,EAAM,OAAA,CAAQ,CAAC,GAEnFM,IAAU7B;AAAA,IACd,MAAMsB,EAAY,EAAE,QAAQ,EAAE,KAAKE,GAAM,KAAKC,EAAA,GAAQ,MAAM,IAAO,OAAO,CAAC,GAAGP,EAAK,KAAK,GAAG;AAAA,IAC3F,CAACO,GAAMD,GAAMN,EAAK,KAAK;AAAA,EAAA,GAEnBY,IAAU9B;AAAA,IACd,MAAMsB,EAAY,EAAE,QAAQ,EAAE,KAAKI,GAAM,KAAKC,EAAA,GAAQ,MAAM,IAAO,OAAO,CAACT,EAAK,QAAQ,CAAC,GAAG;AAAA,IAC5F,CAACS,GAAMD,GAAMR,EAAK,MAAM;AAAA,EAAA,GAEpBa,KAAa/B,EAAQ,MAAMgC,GAAYrB,GAAQhD,EAAa,GAAG,CAACgD,CAAM,CAAC,GAEvEsB,IAAUC,EAASb,GAAOH,EAAK,KAAK,GACpCiB,IAAUD,EAASX,GAAOL,EAAK,MAAM,GAErCkB,KAAqBH,EAAQ,IAAI,CAACI,OAAW,EAAE,OAAOnE,EAAQmE,CAAK,GAAG,UAAUR,EAAQQ,CAAK,IAAI,GACjGC,IAAqBH,EAAQ,IAAI,CAACE,OAAW,EAAE,OAAOjE,EAAQiE,CAAK,GAAG,UAAUP,EAAQO,CAAK,IAAI;AAEvG,WAASE,EAAUpC,GAA2BtC,GAA0B;AACtE,UAAM2E,IAAS3E,EAAM,QAAQ,GAAGsC,EAAM,KAAK,KAAKtC,EAAM,KAAK,KAAKsC,EAAM,OAChEsC,IAAU,GAAGvE,EAAQL,EAAM,CAAC,CAAC,MAAMO,EAAQP,EAAM,CAAC,CAAC,IACnD6E,IAAI9E,EAAQC,CAAK;AAEvB,WAAO6E,MAAM,SAAY,GAAGF,CAAM,KAAKC,CAAO,KAAK,GAAGD,CAAM,KAAKC,CAAO,KAAKpE,GAAQqE,CAAC,CAAC;AAAA,EACzF;AAEA,SACE,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,cAAczD;AAAA,MACd,OAAOP,EAAO,MAAM,CAACuB,MAAUA,EAAM,OAAO,WAAW,CAAC;AAAA,MACxD,cAAAlC;AAAA,MACA,MAAM;AAAA,QACJ,EAAE,OAAOkE,EAAQ,IAAI,CAACE,MAAUP,EAAQO,CAAK,CAAC,GAAG,aAAa,aAAA;AAAA,QAC9D,EAAE,OAAOJ,EAAQ,IAAI,CAACI,MAAUR,EAAQQ,CAAK,CAAC,GAAG,aAAa,WAAA;AAAA,MAAW;AAAA,MAE3E,YAAA/C;AAAA,MACA,QAAQC;AAAA,MACR,QAAQX,EAAO,IAAI,CAACuB,GAAO0C,OAAY;AAAA,QACrC,OAAO9C,EAAM8C,CAAM;AAAA,QACnB,QAAQpD,EAASU,EAAM,KAAK;AAAA,QAC5B,OAAOA,EAAM;AAAA,MAAA,EACb;AAAA,MACF,aAAAzB;AAAA,MACA,gBAAgBD;AAAA,MAChB,SAAAwC;AAAA,MACA,gBAAgBvB;AAAA,MAChB,MAAAwB;AAAA,MACA,OAAArC;AAAA,MACA,OAAAO;AAAA,MACA,OAAO,EAAE,UAAU,IAAM,eAAe+B,IAAU,OAAOiB,IAAQ,YAAYtD,EAAA;AAAA,MAC7E,OAAO,EAAE,UAAU,IAAM,OAAOwD,GAAQ,YAAYvD,EAAA;AAAA,MACpD,YAAY,EAAE,UAAU,IAAM,OAAOuD,GAAQ,YAAYtD,EAAA;AAAA,MAExD,UAAA;AAAA,QAAAY,KACC,gBAAA+C,EAAC,KAAA,EAAE,eAAY,QACb,UAAA;AAAA,UAAA,gBAAAG,EAAC,QAAA,EAAK,WAAWC,EAAO,OAAO,IAAInD,EAAK,GAAG,IAAIA,EAAK,GAAG,IAAIA,EAAK,GAAG,IAAIsB,EAAK,QAAQ;AAAA,UACpF,gBAAA4B,EAAC,QAAA,EAAK,WAAWC,EAAO,OAAO,IAAI,GAAG,IAAInD,EAAK,GAAG,IAAIA,EAAK,GAAG,IAAIA,EAAK,EAAA,CAAG;AAAA,QAAA,GAC5E;AAAA,QAGDhB,EAAO,IAAI,CAACuB,GAAO6C,MAClB,gBAAAF;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,eAAarD,EAASU,EAAM,KAAK,KAAK;AAAA,YACtC,WAAW,GAAG4C,EAAO,MAAM,IAAItD,EAASU,EAAM,KAAK,IAAI4C,EAAO,YAAY,EAAE;AAAA,YAG3E,UAAA5C,EAAM,OAAO,IAAI,CAACtC,GAAOgF,MAAW;AACnC,kBAAI,CAAC,OAAO,SAAShF,EAAM,CAAC,KAAK,CAAC,OAAO,SAASA,EAAM,CAAC;AACvD,uBAAO;AAGT,oBAAMoF,IAAIpB,EAAQhE,EAAM,CAAC,GACnBqF,IAAIpB,EAAQjE,EAAM,CAAC,GACnB6E,IAAI9E,EAAQC,CAAK;AAEvB,qBACE,gBAAAiF;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,cAAYP,EAAUpC,GAAOtC,CAAK;AAAA,kBAClC,WAAWkF,EAAO;AAAA,kBAClB,IAAIE;AAAA,kBACJ,IAAIC;AAAA,kBACJ,MAAMnD,EAAMiD,CAAW;AAAA,kBAEvB,cAAc,MAAMnD,EAAQ,EAAE,GAAAoD,GAAG,GAAAC,GAAG;AAAA,kBACpC,cAAc,MAAMrD,EAAQ,IAAI;AAAA,kBAChC,GAAG6C,MAAM,SAAYhF,KAAaqE,GAAWW,CAAC;AAAA,kBAE9C,UAAA,gBAAAI,EAAC,SAAA,EAAO,UAAAP,EAAUpC,GAAOtC,CAAK,EAAA,CAAE;AAAA,gBAAA;AAAA,gBAL3BgF;AAAA,cAAA;AAAA,YAQX,CAAC;AAAA,UAAA;AAAA,UA1BIG;AAAA,QAAA,CA4BR;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGP;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e="_bubble_okzta_1",s="_guide_okzta_11",i="_series_okzta_23 _series_141iy_209",_="_seriesOff_okzta_27 _seriesOff_141iy_213",t={bubble:e,guide:s,series:i,seriesOff:_};exports.bubble=e;exports.default=t;exports.guide=s;exports.series=i;exports.seriesOff=_;
|
|
2
|
+
//# sourceMappingURL=ChartScatter.module.css.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChartScatter.module.css.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
const e = "_bubble_okzta_1", s = "_guide_okzta_11", _ = "_series_okzta_23 _series_141iy_209", i = "_seriesOff_okzta_27 _seriesOff_141iy_213", t = {
|
|
2
|
+
bubble: e,
|
|
3
|
+
guide: s,
|
|
4
|
+
series: _,
|
|
5
|
+
seriesOff: i
|
|
6
|
+
};
|
|
7
|
+
export {
|
|
8
|
+
e as bubble,
|
|
9
|
+
t as default,
|
|
10
|
+
s as guide,
|
|
11
|
+
_ as series,
|
|
12
|
+
i as seriesOff
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=ChartScatter.module.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChartScatter.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("react/jsx-runtime"),h=require("react"),R=require("d3-hierarchy"),m=require("./ChartSunburst.module.css.cjs"),ne=require("../core/useChartMetrics.cjs"),se=require("../core/useSeriesToggle.cjs"),ae=require("../palette/seriesColor.cjs"),j=require("../core/measureText.cjs"),f=require("../core/spacing.cjs"),b=require("../core/arcs.cjs"),oe=require("../core/ChartFrame.cjs"),ie=require("../../../utils/formatters/formatarNumero.cjs"),le=require("../core/cartesianLayout.cjs"),ue=.18,p=14;function B(a,n=1,s=new Map){return a.forEach(u=>{var g;s.set(n,[...s.get(n)??[],u.label]),(g=u.children)!=null&&g.length&&B(u.children,n+1,s)}),s}function ce(a,n){if(n<=1)return a;const s=Math.min((n-1)*22,66);return`color-mix(in oklab, ${a} ${100-s}%, var(--pl-color-surface))`}function de({accent:a,defaultHiddenGroups:n,emptyMessage:s="Sem dados no período",formatPercent:u=x=>`${Math.round(x*100)}%`,formatValue:g=ie.formatarNumero,height:P=320,hiddenGroups:I,legend:k="bottom",legendAlign:w,nodes:o,onHiddenGroupsChange:U,ringGap:G=2,showLabels:v=!0,sliceRadius:V,title:W}){const{font:x,height:Z,radius:J,ref:K,width:C}=ne.useChartMetrics(),{fillHeight:Q,value:_}=le.chartHeight(P,Z),{isHidden:A,toggle:X}=se.useSeriesToggle({defaultHiddenSeries:n,hiddenSeries:I,onHiddenSeriesChange:U}),[S,$]=h.useState(null),q=h.useMemo(()=>ae.resolveSeriesColors(o,{accent:a}),[a,o]),M=h.useMemo(()=>o.filter(e=>!A(e.label)),[A,o]),Y=h.useMemo(()=>{const e=B(M),t=Math.max(0,...e.keys());return e.get(t)??[]},[M]),E=v?Math.min(j.widestLabel(Y,x),C*f.CHART_LABEL_BAND):0,z=v?p*2+f.CHART_LABEL_OFFSET+E:0,T=f.ringDiameter(Math.max(C-z*2,0),_)/2,c=h.useMemo(()=>{if(T<=0)return[];const e=R.hierarchy({children:M,label:""}).sum(r=>Math.max(r.value??0,0)).sort((r,i)=>(i.value??0)-(r.value??0));return R.partition().size([b.VOLTA,T])(e).descendants().filter(r=>r.depth>0)},[T,M]),ee=c.reduce((e,t)=>Math.max(e,t.depth),0),L=c.filter(e=>e.depth===1).reduce((e,t)=>e+(t.value??0),0),F=S&&c.includes(S)?S:null;function te(e){return F===null||F.ancestors().includes(e)}function re(e){var i;const t=(i=e.ancestors().find(d=>d.depth===1))==null?void 0:i.data,r=(t==null?void 0:t.color)??q[o.findIndex(d=>d.label===(t==null?void 0:t.label))];return ce(r??"var(--pl-chart-neutral)",e.depth)}function D(e){const t=L>0?(e.value??0)/L:0;return`${e.data.label}: ${g(e.value??0)} (${u(t)})`}return l.jsxs(oe.ChartFrame,{centerOrigin:!0,containerRef:K,empty:o.length===0,emptyMessage:s,fillHeight:Q,height:_,legend:o.map((e,t)=>({color:q[t],hidden:A(e.label),label:e.label})),legendAlign:w,legendPosition:k,onToggleSeries:X,swatch:"dot",title:W,width:C,children:[c.map((e,t)=>l.jsx("path",{"aria-label":D(e),className:`${m.default.arc} ${te(e)?"":m.default.arcDim}`,d:b.arcPath({cornerRadius:V??J,endAngle:e.x1,innerRadius:e.y0+(e.depth>1?G:0),outerRadius:e.y1,startAngle:e.x0}),fill:re(e),onMouseEnter:()=>$(e),onMouseLeave:()=>$(null),children:l.jsx("title",{children:D(e)})},t)),v&&c.filter(e=>e.depth===ee&&e.x1-e.x0>=ue).map((e,t)=>{const r={endAngle:e.x1,startAngle:e.x0},[i,d]=b.arcAnchor(r,e.y1),[O,y]=b.arcAnchor(r,e.y1+p),N=O>=0,H=O+(N?p:-p);return l.jsxs("g",{className:m.default.leader,children:[l.jsx("polyline",{className:m.default.connector,points:`${i},${d} ${O},${y} ${H},${y}`}),l.jsx("text",{className:m.default.label,dominantBaseline:"middle",textAnchor:N?"start":"end",x:H+(N?f.CHART_LABEL_OFFSET:-f.CHART_LABEL_OFFSET),y,children:j.truncateToWidth(e.data.label,x,E)})]},t)})]})}exports.ChartSunburst=de;
|
|
2
|
+
//# sourceMappingURL=ChartSunburst.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChartSunburst.cjs","sources":["../../../../src/components/charts/ChartSunburst/ChartSunburst.tsx"],"sourcesContent":["import { useMemo, useState } from 'react';\nimport { hierarchy, partition, type HierarchyRectangularNode } from 'd3-hierarchy';\nimport {\n CHART_LABEL_BAND,\n CHART_LABEL_OFFSET,\n ChartFrame,\n VOLTA,\n arcAnchor,\n arcPath,\n chartHeight,\n ringDiameter,\n truncateToWidth,\n useChartMetrics,\n useSeriesToggle,\n widestLabel,\n type ChartHeight,\n type ChartLegendAlign,\n type ChartLegendPosition,\n} from '../core';\nimport { resolveSeriesColors, type SeriesAppearance } from '../palette';\nimport { formatarNumero } from '../../../utils/formatters';\nimport styles from './ChartSunburst.module.css';\n\nexport interface ChartSunburstNode extends SeriesAppearance {\n children?: readonly ChartSunburstNode[];\n label: string;\n value?: number;\n}\n\nexport interface ChartSunburstProps {\n accent?: string;\n defaultHiddenGroups?: readonly string[];\n emptyMessage?: string;\n formatPercent?: (ratio: number) => string;\n formatValue?: (value: number) => string;\n height?: ChartHeight;\n hiddenGroups?: readonly string[];\n legend?: ChartLegendPosition;\n legendAlign?: ChartLegendAlign;\n nodes: readonly ChartSunburstNode[];\n onHiddenGroupsChange?: (hidden: readonly string[]) => void;\n /** Folga entre dois aneis vizinhos. */\n ringGap?: number;\n /** Raio das pontas de cada arco. Sem valor, o token de raio pequeno. */\n sliceRadius?: number;\n showLabels?: boolean;\n title: string;\n}\n\ntype Arco = HierarchyRectangularNode<ChartSunburstNode>;\n\n/** Arco menor que isso nao comporta rotulo nem conector legivel. */\nconst ANGULO_MINIMO_DO_ROTULO = 0.18;\nconst COMPRIMENTO_DO_CONECTOR = 14;\n/**\n * Rotulos de cada nivel da arvore declarada. Medir a banda antes de montar o\n * anel exige saber os rotulos antes, e o nivel mais profundo declarado e o\n * mesmo que o anel externo tera.\n */\nfunction rotulosPorNivel(\n nodes: readonly ChartSunburstNode[],\n nivel = 1,\n por = new Map<number, string[]>(),\n) {\n nodes.forEach((no) => {\n por.set(nivel, [...(por.get(nivel) ?? []), no.label]);\n\n if (no.children?.length) {\n rotulosPorNivel(no.children, nivel + 1, por);\n }\n });\n\n return por;\n}\n\n/**\n * Cada anel clareia sobre o anterior, e o filho nasce da cor do pai. Sem isso a\n * hierarquia sumiria: os aneis externos repetiriam a cor do nivel zero e nada\n * distinguiria um filho do outro.\n */\nfunction tomDoNivel(cor: string, profundidade: number) {\n if (profundidade <= 1) {\n return cor;\n }\n\n const clareamento = Math.min((profundidade - 1) * 22, 66);\n\n return `color-mix(in oklab, ${cor} ${100 - clareamento}%, var(--pl-color-surface))`;\n}\n\nexport function ChartSunburst({\n accent,\n defaultHiddenGroups,\n emptyMessage = 'Sem dados no período',\n formatPercent = (fracao) => `${Math.round(fracao * 100)}%`,\n formatValue = formatarNumero,\n height = 320,\n hiddenGroups,\n legend = 'bottom',\n legendAlign,\n nodes,\n onHiddenGroupsChange,\n ringGap = 2,\n showLabels = true,\n sliceRadius,\n title,\n}: ChartSunburstProps) {\n const { font, height: alturaMedida, radius: raioDoCanto, ref, width } = useChartMetrics();\n const { fillHeight, value: alturaDoDesenho } = chartHeight(height, alturaMedida);\n const { isHidden, toggle } = useSeriesToggle({\n defaultHiddenSeries: defaultHiddenGroups,\n hiddenSeries: hiddenGroups,\n onHiddenSeriesChange: onHiddenGroupsChange,\n });\n const [emFoco, setEmFoco] = useState<Arco | null>(null);\n\n // A cor sai da lista inteira, e nao das visiveis: desligar um grupo nao pode\n // repintar os demais.\n const coresDeNivelZero = useMemo(() => resolveSeriesColors(nodes, { accent }), [accent, nodes]);\n\n const visiveis = useMemo(\n () => nodes.filter((grupo) => !isHidden(grupo.label)),\n [isHidden, nodes],\n );\n\n // A banda dos rotulos e reservada antes do anel, medida pelo rotulo mais\n // largo do anel externo. Sem reservar, o rotulo era desenhado no que sobrasse\n // — quase nada nas laterais — e acabava cortado ate sumir.\n const rotulosExternos = useMemo(() => {\n const niveis = rotulosPorNivel(visiveis);\n const externo = Math.max(0, ...niveis.keys());\n\n return niveis.get(externo) ?? [];\n }, [visiveis]);\n\n const larguraDoRotulo = showLabels\n ? Math.min(widestLabel(rotulosExternos, font), width * CHART_LABEL_BAND)\n : 0;\n const banda = showLabels ? COMPRIMENTO_DO_CONECTOR * 2 + CHART_LABEL_OFFSET + larguraDoRotulo : 0;\n\n const diametro = ringDiameter(Math.max(width - banda * 2, 0), alturaDoDesenho);\n const raio = diametro / 2;\n\n const arcos = useMemo(() => {\n if (raio <= 0) {\n return [];\n }\n\n const arvore = hierarchy<ChartSunburstNode>({ children: visiveis, label: '' })\n .sum((no) => Math.max(no.value ?? 0, 0))\n .sort((a, b) => (b.value ?? 0) - (a.value ?? 0));\n\n const repartir = partition<ChartSunburstNode>().size([VOLTA, raio]);\n\n return repartir(arvore)\n .descendants()\n .filter((no) => no.depth > 0);\n }, [raio, visiveis]);\n\n const profundidadeMaxima = arcos.reduce((maior, arco) => Math.max(maior, arco.depth), 0);\n const total = arcos\n .filter((arco) => arco.depth === 1)\n .reduce((soma, arco) => soma + (arco.value ?? 0), 0);\n\n // O arco guardado deixa de existir quando a arvore e remontada, num\n // redimensionamento por exemplo. Sem conferir, o foco perdido apagaria tudo.\n const foco = emFoco && arcos.includes(emFoco) ? emFoco : null;\n\n /**\n * Acende o arco sob o ponteiro e os que o originaram. O caminho ate a raiz e\n * o que explica de onde aquela fatia veio; os filhos dela nao explicam nada\n * sobre ela, entao ficam apagados junto com o resto.\n */\n function aceso(arco: Arco) {\n return foco === null || foco.ancestors().includes(arco);\n }\n\n function corDe(arco: Arco) {\n const raizDoRamo = arco.ancestors().find((ancestral) => ancestral.depth === 1)?.data;\n const base =\n raizDoRamo?.color ?? coresDeNivelZero[nodes.findIndex((no) => no.label === raizDoRamo?.label)];\n\n return tomDoNivel(base ?? 'var(--pl-chart-neutral)', arco.depth);\n }\n\n function descreverArco(arco: Arco) {\n const fracao = total > 0 ? (arco.value ?? 0) / total : 0;\n\n return `${arco.data.label}: ${formatValue(arco.value ?? 0)} (${formatPercent(fracao)})`;\n }\n\n return (\n <ChartFrame\n centerOrigin\n containerRef={ref}\n empty={nodes.length === 0}\n emptyMessage={emptyMessage}\n fillHeight={fillHeight}\n height={alturaDoDesenho}\n legend={nodes.map((grupo, indice) => ({\n color: coresDeNivelZero[indice],\n hidden: isHidden(grupo.label),\n label: grupo.label,\n }))}\n legendAlign={legendAlign}\n legendPosition={legend}\n onToggleSeries={toggle}\n swatch=\"dot\"\n title={title}\n width={width}\n >\n {arcos.map((arco, indice) => (\n <path\n aria-label={descreverArco(arco)}\n className={`${styles.arc} ${aceso(arco) ? '' : styles.arcDim}`}\n d={arcPath({\n cornerRadius: sliceRadius ?? raioDoCanto,\n endAngle: arco.x1,\n innerRadius: arco.y0 + (arco.depth > 1 ? ringGap : 0),\n outerRadius: arco.y1,\n startAngle: arco.x0,\n })}\n fill={corDe(arco)}\n key={indice}\n onMouseEnter={() => setEmFoco(arco)}\n onMouseLeave={() => setEmFoco(null)}\n >\n <title>{descreverArco(arco)}</title>\n </path>\n ))}\n\n {showLabels &&\n arcos\n .filter(\n (arco) => arco.depth === profundidadeMaxima && arco.x1 - arco.x0 >= ANGULO_MINIMO_DO_ROTULO,\n )\n .map((arco, indice) => {\n const angulos = { endAngle: arco.x1, startAngle: arco.x0 };\n const [xBorda, yBorda] = arcAnchor(angulos, arco.y1);\n const [xCotovelo, yCotovelo] = arcAnchor(angulos, arco.y1 + COMPRIMENTO_DO_CONECTOR);\n const paraDireita = xCotovelo >= 0;\n const xFim = xCotovelo + (paraDireita ? COMPRIMENTO_DO_CONECTOR : -COMPRIMENTO_DO_CONECTOR);\n\n return (\n <g className={styles.leader} key={indice}>\n <polyline\n className={styles.connector}\n points={`${xBorda},${yBorda} ${xCotovelo},${yCotovelo} ${xFim},${yCotovelo}`}\n />\n <text\n className={styles.label}\n dominantBaseline=\"middle\"\n textAnchor={paraDireita ? 'start' : 'end'}\n x={xFim + (paraDireita ? CHART_LABEL_OFFSET : -CHART_LABEL_OFFSET)}\n y={yCotovelo}\n >\n {truncateToWidth(arco.data.label, font, larguraDoRotulo)}\n </text>\n </g>\n );\n })}\n </ChartFrame>\n );\n}\n"],"names":["ANGULO_MINIMO_DO_ROTULO","COMPRIMENTO_DO_CONECTOR","rotulosPorNivel","nodes","nivel","por","no","_a","tomDoNivel","cor","profundidade","clareamento","ChartSunburst","accent","defaultHiddenGroups","emptyMessage","formatPercent","fracao","formatValue","formatarNumero","height","hiddenGroups","legend","legendAlign","onHiddenGroupsChange","ringGap","showLabels","sliceRadius","title","font","alturaMedida","raioDoCanto","ref","width","useChartMetrics","fillHeight","alturaDoDesenho","chartHeight","isHidden","toggle","useSeriesToggle","emFoco","setEmFoco","useState","coresDeNivelZero","useMemo","resolveSeriesColors","visiveis","grupo","rotulosExternos","niveis","externo","larguraDoRotulo","widestLabel","CHART_LABEL_BAND","banda","CHART_LABEL_OFFSET","raio","ringDiameter","arcos","arvore","hierarchy","a","b","partition","VOLTA","profundidadeMaxima","maior","arco","total","soma","foco","aceso","corDe","raizDoRamo","ancestral","base","descreverArco","jsxs","ChartFrame","indice","jsx","styles","arcPath","angulos","xBorda","yBorda","arcAnchor","xCotovelo","yCotovelo","paraDireita","xFim","truncateToWidth"],"mappings":"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"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { jsxs as B, jsx as p } from "react/jsx-runtime";
|
|
2
|
+
import { useState as re, useMemo as g } from "react";
|
|
3
|
+
import { hierarchy as ne, partition as oe } from "d3-hierarchy";
|
|
4
|
+
import u from "./ChartSunburst.module.css.js";
|
|
5
|
+
import { useChartMetrics as ie } from "../core/useChartMetrics.js";
|
|
6
|
+
import { useSeriesToggle as ae } from "../core/useSeriesToggle.js";
|
|
7
|
+
import { resolveSeriesColors as le } from "../palette/seriesColor.js";
|
|
8
|
+
import { widestLabel as se, truncateToWidth as ce } from "../core/measureText.js";
|
|
9
|
+
import { CHART_LABEL_BAND as de, CHART_LABEL_OFFSET as y, ringDiameter as ue } from "../core/spacing.js";
|
|
10
|
+
import { VOLTA as me, arcPath as he, arcAnchor as F } from "../core/arcs.js";
|
|
11
|
+
import { ChartFrame as fe } from "../core/ChartFrame.js";
|
|
12
|
+
import { formatarNumero as pe } from "../../../utils/formatters/formatarNumero.js";
|
|
13
|
+
import { chartHeight as ge } from "../core/cartesianLayout.js";
|
|
14
|
+
const xe = 0.18, x = 14;
|
|
15
|
+
function I(i, n = 1, o = /* @__PURE__ */ new Map()) {
|
|
16
|
+
return i.forEach((s) => {
|
|
17
|
+
var m;
|
|
18
|
+
o.set(n, [...o.get(n) ?? [], s.label]), (m = s.children) != null && m.length && I(s.children, n + 1, o);
|
|
19
|
+
}), o;
|
|
20
|
+
}
|
|
21
|
+
function ve(i, n) {
|
|
22
|
+
if (n <= 1)
|
|
23
|
+
return i;
|
|
24
|
+
const o = Math.min((n - 1) * 22, 66);
|
|
25
|
+
return `color-mix(in oklab, ${i} ${100 - o}%, var(--pl-color-surface))`;
|
|
26
|
+
}
|
|
27
|
+
function Le({
|
|
28
|
+
accent: i,
|
|
29
|
+
defaultHiddenGroups: n,
|
|
30
|
+
emptyMessage: o = "Sem dados no período",
|
|
31
|
+
formatPercent: s = (h) => `${Math.round(h * 100)}%`,
|
|
32
|
+
formatValue: m = pe,
|
|
33
|
+
height: P = 320,
|
|
34
|
+
hiddenGroups: j,
|
|
35
|
+
legend: k = "bottom",
|
|
36
|
+
legendAlign: w,
|
|
37
|
+
nodes: a,
|
|
38
|
+
onHiddenGroupsChange: U,
|
|
39
|
+
ringGap: G = 2,
|
|
40
|
+
showLabels: v = !0,
|
|
41
|
+
sliceRadius: V,
|
|
42
|
+
title: W
|
|
43
|
+
}) {
|
|
44
|
+
const { font: h, height: Z, radius: q, ref: J, width: M } = ie(), { fillHeight: K, value: D } = ge(P, Z), { isHidden: b, toggle: Q } = ae({
|
|
45
|
+
defaultHiddenSeries: n,
|
|
46
|
+
hiddenSeries: j,
|
|
47
|
+
onHiddenSeriesChange: U
|
|
48
|
+
}), [A, S] = re(null), T = g(() => le(a, { accent: i }), [i, a]), f = g(
|
|
49
|
+
() => a.filter((e) => !b(e.label)),
|
|
50
|
+
[b, a]
|
|
51
|
+
), X = g(() => {
|
|
52
|
+
const e = I(f), t = Math.max(0, ...e.keys());
|
|
53
|
+
return e.get(t) ?? [];
|
|
54
|
+
}, [f]), E = v ? Math.min(se(X, h), M * de) : 0, Y = v ? x * 2 + y + E : 0, $ = ue(Math.max(M - Y * 2, 0), D) / 2, c = g(() => {
|
|
55
|
+
if ($ <= 0)
|
|
56
|
+
return [];
|
|
57
|
+
const e = ne({ children: f, label: "" }).sum((r) => Math.max(r.value ?? 0, 0)).sort((r, l) => (l.value ?? 0) - (r.value ?? 0));
|
|
58
|
+
return oe().size([me, $])(e).descendants().filter((r) => r.depth > 0);
|
|
59
|
+
}, [$, f]), z = c.reduce((e, t) => Math.max(e, t.depth), 0), _ = c.filter((e) => e.depth === 1).reduce((e, t) => e + (t.value ?? 0), 0), H = A && c.includes(A) ? A : null;
|
|
60
|
+
function ee(e) {
|
|
61
|
+
return H === null || H.ancestors().includes(e);
|
|
62
|
+
}
|
|
63
|
+
function te(e) {
|
|
64
|
+
var l;
|
|
65
|
+
const t = (l = e.ancestors().find((d) => d.depth === 1)) == null ? void 0 : l.data, r = (t == null ? void 0 : t.color) ?? T[a.findIndex((d) => d.label === (t == null ? void 0 : t.label))];
|
|
66
|
+
return ve(r ?? "var(--pl-chart-neutral)", e.depth);
|
|
67
|
+
}
|
|
68
|
+
function L(e) {
|
|
69
|
+
const t = _ > 0 ? (e.value ?? 0) / _ : 0;
|
|
70
|
+
return `${e.data.label}: ${m(e.value ?? 0)} (${s(t)})`;
|
|
71
|
+
}
|
|
72
|
+
return /* @__PURE__ */ B(
|
|
73
|
+
fe,
|
|
74
|
+
{
|
|
75
|
+
centerOrigin: !0,
|
|
76
|
+
containerRef: J,
|
|
77
|
+
empty: a.length === 0,
|
|
78
|
+
emptyMessage: o,
|
|
79
|
+
fillHeight: K,
|
|
80
|
+
height: D,
|
|
81
|
+
legend: a.map((e, t) => ({
|
|
82
|
+
color: T[t],
|
|
83
|
+
hidden: b(e.label),
|
|
84
|
+
label: e.label
|
|
85
|
+
})),
|
|
86
|
+
legendAlign: w,
|
|
87
|
+
legendPosition: k,
|
|
88
|
+
onToggleSeries: Q,
|
|
89
|
+
swatch: "dot",
|
|
90
|
+
title: W,
|
|
91
|
+
width: M,
|
|
92
|
+
children: [
|
|
93
|
+
c.map((e, t) => /* @__PURE__ */ p(
|
|
94
|
+
"path",
|
|
95
|
+
{
|
|
96
|
+
"aria-label": L(e),
|
|
97
|
+
className: `${u.arc} ${ee(e) ? "" : u.arcDim}`,
|
|
98
|
+
d: he({
|
|
99
|
+
cornerRadius: V ?? q,
|
|
100
|
+
endAngle: e.x1,
|
|
101
|
+
innerRadius: e.y0 + (e.depth > 1 ? G : 0),
|
|
102
|
+
outerRadius: e.y1,
|
|
103
|
+
startAngle: e.x0
|
|
104
|
+
}),
|
|
105
|
+
fill: te(e),
|
|
106
|
+
onMouseEnter: () => S(e),
|
|
107
|
+
onMouseLeave: () => S(null),
|
|
108
|
+
children: /* @__PURE__ */ p("title", { children: L(e) })
|
|
109
|
+
},
|
|
110
|
+
t
|
|
111
|
+
)),
|
|
112
|
+
v && c.filter(
|
|
113
|
+
(e) => e.depth === z && e.x1 - e.x0 >= xe
|
|
114
|
+
).map((e, t) => {
|
|
115
|
+
const r = { endAngle: e.x1, startAngle: e.x0 }, [l, d] = F(r, e.y1), [C, N] = F(r, e.y1 + x), O = C >= 0, R = C + (O ? x : -x);
|
|
116
|
+
return /* @__PURE__ */ B("g", { className: u.leader, children: [
|
|
117
|
+
/* @__PURE__ */ p(
|
|
118
|
+
"polyline",
|
|
119
|
+
{
|
|
120
|
+
className: u.connector,
|
|
121
|
+
points: `${l},${d} ${C},${N} ${R},${N}`
|
|
122
|
+
}
|
|
123
|
+
),
|
|
124
|
+
/* @__PURE__ */ p(
|
|
125
|
+
"text",
|
|
126
|
+
{
|
|
127
|
+
className: u.label,
|
|
128
|
+
dominantBaseline: "middle",
|
|
129
|
+
textAnchor: O ? "start" : "end",
|
|
130
|
+
x: R + (O ? y : -y),
|
|
131
|
+
y: N,
|
|
132
|
+
children: ce(e.data.label, h, E)
|
|
133
|
+
}
|
|
134
|
+
)
|
|
135
|
+
] }, t);
|
|
136
|
+
})
|
|
137
|
+
]
|
|
138
|
+
}
|
|
139
|
+
);
|
|
140
|
+
}
|
|
141
|
+
export {
|
|
142
|
+
Le as ChartSunburst
|
|
143
|
+
};
|
|
144
|
+
//# sourceMappingURL=ChartSunburst.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChartSunburst.js","sources":["../../../../src/components/charts/ChartSunburst/ChartSunburst.tsx"],"sourcesContent":["import { useMemo, useState } from 'react';\nimport { hierarchy, partition, type HierarchyRectangularNode } from 'd3-hierarchy';\nimport {\n CHART_LABEL_BAND,\n CHART_LABEL_OFFSET,\n ChartFrame,\n VOLTA,\n arcAnchor,\n arcPath,\n chartHeight,\n ringDiameter,\n truncateToWidth,\n useChartMetrics,\n useSeriesToggle,\n widestLabel,\n type ChartHeight,\n type ChartLegendAlign,\n type ChartLegendPosition,\n} from '../core';\nimport { resolveSeriesColors, type SeriesAppearance } from '../palette';\nimport { formatarNumero } from '../../../utils/formatters';\nimport styles from './ChartSunburst.module.css';\n\nexport interface ChartSunburstNode extends SeriesAppearance {\n children?: readonly ChartSunburstNode[];\n label: string;\n value?: number;\n}\n\nexport interface ChartSunburstProps {\n accent?: string;\n defaultHiddenGroups?: readonly string[];\n emptyMessage?: string;\n formatPercent?: (ratio: number) => string;\n formatValue?: (value: number) => string;\n height?: ChartHeight;\n hiddenGroups?: readonly string[];\n legend?: ChartLegendPosition;\n legendAlign?: ChartLegendAlign;\n nodes: readonly ChartSunburstNode[];\n onHiddenGroupsChange?: (hidden: readonly string[]) => void;\n /** Folga entre dois aneis vizinhos. */\n ringGap?: number;\n /** Raio das pontas de cada arco. Sem valor, o token de raio pequeno. */\n sliceRadius?: number;\n showLabels?: boolean;\n title: string;\n}\n\ntype Arco = HierarchyRectangularNode<ChartSunburstNode>;\n\n/** Arco menor que isso nao comporta rotulo nem conector legivel. */\nconst ANGULO_MINIMO_DO_ROTULO = 0.18;\nconst COMPRIMENTO_DO_CONECTOR = 14;\n/**\n * Rotulos de cada nivel da arvore declarada. Medir a banda antes de montar o\n * anel exige saber os rotulos antes, e o nivel mais profundo declarado e o\n * mesmo que o anel externo tera.\n */\nfunction rotulosPorNivel(\n nodes: readonly ChartSunburstNode[],\n nivel = 1,\n por = new Map<number, string[]>(),\n) {\n nodes.forEach((no) => {\n por.set(nivel, [...(por.get(nivel) ?? []), no.label]);\n\n if (no.children?.length) {\n rotulosPorNivel(no.children, nivel + 1, por);\n }\n });\n\n return por;\n}\n\n/**\n * Cada anel clareia sobre o anterior, e o filho nasce da cor do pai. Sem isso a\n * hierarquia sumiria: os aneis externos repetiriam a cor do nivel zero e nada\n * distinguiria um filho do outro.\n */\nfunction tomDoNivel(cor: string, profundidade: number) {\n if (profundidade <= 1) {\n return cor;\n }\n\n const clareamento = Math.min((profundidade - 1) * 22, 66);\n\n return `color-mix(in oklab, ${cor} ${100 - clareamento}%, var(--pl-color-surface))`;\n}\n\nexport function ChartSunburst({\n accent,\n defaultHiddenGroups,\n emptyMessage = 'Sem dados no período',\n formatPercent = (fracao) => `${Math.round(fracao * 100)}%`,\n formatValue = formatarNumero,\n height = 320,\n hiddenGroups,\n legend = 'bottom',\n legendAlign,\n nodes,\n onHiddenGroupsChange,\n ringGap = 2,\n showLabels = true,\n sliceRadius,\n title,\n}: ChartSunburstProps) {\n const { font, height: alturaMedida, radius: raioDoCanto, ref, width } = useChartMetrics();\n const { fillHeight, value: alturaDoDesenho } = chartHeight(height, alturaMedida);\n const { isHidden, toggle } = useSeriesToggle({\n defaultHiddenSeries: defaultHiddenGroups,\n hiddenSeries: hiddenGroups,\n onHiddenSeriesChange: onHiddenGroupsChange,\n });\n const [emFoco, setEmFoco] = useState<Arco | null>(null);\n\n // A cor sai da lista inteira, e nao das visiveis: desligar um grupo nao pode\n // repintar os demais.\n const coresDeNivelZero = useMemo(() => resolveSeriesColors(nodes, { accent }), [accent, nodes]);\n\n const visiveis = useMemo(\n () => nodes.filter((grupo) => !isHidden(grupo.label)),\n [isHidden, nodes],\n );\n\n // A banda dos rotulos e reservada antes do anel, medida pelo rotulo mais\n // largo do anel externo. Sem reservar, o rotulo era desenhado no que sobrasse\n // — quase nada nas laterais — e acabava cortado ate sumir.\n const rotulosExternos = useMemo(() => {\n const niveis = rotulosPorNivel(visiveis);\n const externo = Math.max(0, ...niveis.keys());\n\n return niveis.get(externo) ?? [];\n }, [visiveis]);\n\n const larguraDoRotulo = showLabels\n ? Math.min(widestLabel(rotulosExternos, font), width * CHART_LABEL_BAND)\n : 0;\n const banda = showLabels ? COMPRIMENTO_DO_CONECTOR * 2 + CHART_LABEL_OFFSET + larguraDoRotulo : 0;\n\n const diametro = ringDiameter(Math.max(width - banda * 2, 0), alturaDoDesenho);\n const raio = diametro / 2;\n\n const arcos = useMemo(() => {\n if (raio <= 0) {\n return [];\n }\n\n const arvore = hierarchy<ChartSunburstNode>({ children: visiveis, label: '' })\n .sum((no) => Math.max(no.value ?? 0, 0))\n .sort((a, b) => (b.value ?? 0) - (a.value ?? 0));\n\n const repartir = partition<ChartSunburstNode>().size([VOLTA, raio]);\n\n return repartir(arvore)\n .descendants()\n .filter((no) => no.depth > 0);\n }, [raio, visiveis]);\n\n const profundidadeMaxima = arcos.reduce((maior, arco) => Math.max(maior, arco.depth), 0);\n const total = arcos\n .filter((arco) => arco.depth === 1)\n .reduce((soma, arco) => soma + (arco.value ?? 0), 0);\n\n // O arco guardado deixa de existir quando a arvore e remontada, num\n // redimensionamento por exemplo. Sem conferir, o foco perdido apagaria tudo.\n const foco = emFoco && arcos.includes(emFoco) ? emFoco : null;\n\n /**\n * Acende o arco sob o ponteiro e os que o originaram. O caminho ate a raiz e\n * o que explica de onde aquela fatia veio; os filhos dela nao explicam nada\n * sobre ela, entao ficam apagados junto com o resto.\n */\n function aceso(arco: Arco) {\n return foco === null || foco.ancestors().includes(arco);\n }\n\n function corDe(arco: Arco) {\n const raizDoRamo = arco.ancestors().find((ancestral) => ancestral.depth === 1)?.data;\n const base =\n raizDoRamo?.color ?? coresDeNivelZero[nodes.findIndex((no) => no.label === raizDoRamo?.label)];\n\n return tomDoNivel(base ?? 'var(--pl-chart-neutral)', arco.depth);\n }\n\n function descreverArco(arco: Arco) {\n const fracao = total > 0 ? (arco.value ?? 0) / total : 0;\n\n return `${arco.data.label}: ${formatValue(arco.value ?? 0)} (${formatPercent(fracao)})`;\n }\n\n return (\n <ChartFrame\n centerOrigin\n containerRef={ref}\n empty={nodes.length === 0}\n emptyMessage={emptyMessage}\n fillHeight={fillHeight}\n height={alturaDoDesenho}\n legend={nodes.map((grupo, indice) => ({\n color: coresDeNivelZero[indice],\n hidden: isHidden(grupo.label),\n label: grupo.label,\n }))}\n legendAlign={legendAlign}\n legendPosition={legend}\n onToggleSeries={toggle}\n swatch=\"dot\"\n title={title}\n width={width}\n >\n {arcos.map((arco, indice) => (\n <path\n aria-label={descreverArco(arco)}\n className={`${styles.arc} ${aceso(arco) ? '' : styles.arcDim}`}\n d={arcPath({\n cornerRadius: sliceRadius ?? raioDoCanto,\n endAngle: arco.x1,\n innerRadius: arco.y0 + (arco.depth > 1 ? ringGap : 0),\n outerRadius: arco.y1,\n startAngle: arco.x0,\n })}\n fill={corDe(arco)}\n key={indice}\n onMouseEnter={() => setEmFoco(arco)}\n onMouseLeave={() => setEmFoco(null)}\n >\n <title>{descreverArco(arco)}</title>\n </path>\n ))}\n\n {showLabels &&\n arcos\n .filter(\n (arco) => arco.depth === profundidadeMaxima && arco.x1 - arco.x0 >= ANGULO_MINIMO_DO_ROTULO,\n )\n .map((arco, indice) => {\n const angulos = { endAngle: arco.x1, startAngle: arco.x0 };\n const [xBorda, yBorda] = arcAnchor(angulos, arco.y1);\n const [xCotovelo, yCotovelo] = arcAnchor(angulos, arco.y1 + COMPRIMENTO_DO_CONECTOR);\n const paraDireita = xCotovelo >= 0;\n const xFim = xCotovelo + (paraDireita ? COMPRIMENTO_DO_CONECTOR : -COMPRIMENTO_DO_CONECTOR);\n\n return (\n <g className={styles.leader} key={indice}>\n <polyline\n className={styles.connector}\n points={`${xBorda},${yBorda} ${xCotovelo},${yCotovelo} ${xFim},${yCotovelo}`}\n />\n <text\n className={styles.label}\n dominantBaseline=\"middle\"\n textAnchor={paraDireita ? 'start' : 'end'}\n x={xFim + (paraDireita ? CHART_LABEL_OFFSET : -CHART_LABEL_OFFSET)}\n y={yCotovelo}\n >\n {truncateToWidth(arco.data.label, font, larguraDoRotulo)}\n </text>\n </g>\n );\n })}\n </ChartFrame>\n );\n}\n"],"names":["ANGULO_MINIMO_DO_ROTULO","COMPRIMENTO_DO_CONECTOR","rotulosPorNivel","nodes","nivel","por","no","_a","tomDoNivel","cor","profundidade","clareamento","ChartSunburst","accent","defaultHiddenGroups","emptyMessage","formatPercent","fracao","formatValue","formatarNumero","height","hiddenGroups","legend","legendAlign","onHiddenGroupsChange","ringGap","showLabels","sliceRadius","title","font","alturaMedida","raioDoCanto","ref","width","useChartMetrics","fillHeight","alturaDoDesenho","chartHeight","isHidden","toggle","useSeriesToggle","emFoco","setEmFoco","useState","coresDeNivelZero","useMemo","resolveSeriesColors","visiveis","grupo","rotulosExternos","niveis","externo","larguraDoRotulo","widestLabel","CHART_LABEL_BAND","banda","CHART_LABEL_OFFSET","raio","ringDiameter","arcos","arvore","hierarchy","a","b","partition","VOLTA","profundidadeMaxima","maior","arco","total","soma","foco","aceso","corDe","raizDoRamo","ancestral","base","descreverArco","jsxs","ChartFrame","indice","jsx","styles","arcPath","angulos","xBorda","yBorda","arcAnchor","xCotovelo","yCotovelo","paraDireita","xFim","truncateToWidth"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e="_arc_fgn0g_1",c="_arcDim_fgn0g_9",n="_leader_fgn0g_13",r="_connector_fgn0g_17",a="_label_fgn0g_23",l={arc:e,arcDim:c,leader:n,connector:r,label:a};exports.arc=e;exports.arcDim=c;exports.connector=r;exports.default=l;exports.label=a;exports.leader=n;
|
|
2
|
+
//# sourceMappingURL=ChartSunburst.module.css.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChartSunburst.module.css.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
const c = "_arc_fgn0g_1", n = "_arcDim_fgn0g_9", e = "_leader_fgn0g_13", _ = "_connector_fgn0g_17", a = "_label_fgn0g_23", o = {
|
|
2
|
+
arc: c,
|
|
3
|
+
arcDim: n,
|
|
4
|
+
leader: e,
|
|
5
|
+
connector: _,
|
|
6
|
+
label: a
|
|
7
|
+
};
|
|
8
|
+
export {
|
|
9
|
+
c as arc,
|
|
10
|
+
n as arcDim,
|
|
11
|
+
_ as connector,
|
|
12
|
+
o as default,
|
|
13
|
+
a as label,
|
|
14
|
+
e as leader
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=ChartSunburst.module.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChartSunburst.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),h=require("react"),P=require("react-dom"),t=require("./ChartTooltip.module.css.cjs"),b=require("../../../utils/formatters/formatarNumero.cjs"),f=16,j=8;function y(r){return r.reduce((n,i)=>n+i,0)}function D(r,n){return typeof r=="function"?r(n):r==="average"?n.length===0?0:y(n)/n.length:y(n)}function S({x:r,y:n},i,u){const p=r+f+i<=window.innerWidth-j,d=n+f+u<=window.innerHeight-j;return{x:p?r+f:Math.max(r-f-i,j),y:d?n+f:Math.max(n-f-u,j)}}function R({children:r,columns:n,computed:i,rows:u,showTotal:p=!1,subtitle:d,title:x,totalLabel:N="Total"}){const[v,c]=h.useState(null),g=v!==null&&u.length>0;h.useEffect(()=>{if(!g)return;const s=()=>c(null);return window.addEventListener("scroll",s,!0),window.addEventListener("resize",s),window.addEventListener("keydown",s),()=>{window.removeEventListener("scroll",s,!0),window.removeEventListener("resize",s),window.removeEventListener("keydown",s)}},[g]);const w=s=>c({x:s.clientX,y:s.clientY});return a.jsxs("div",{className:t.default.area,onPointerLeave:()=>c(null),onPointerMove:w,children:[r,g&&P.createPortal(a.jsx(k,{columns:n,computed:i,ponteiro:v,rows:u,showTotal:p,subtitle:d,title:x,totalLabel:N}),document.body)]})}function k({columns:r,computed:n,ponteiro:i,rows:u,showTotal:p,subtitle:d,title:x,totalLabel:N}){const v=h.useRef(null),[c,g]=h.useState({altura:0,largura:0});h.useLayoutEffect(()=>{const e=v.current;if(!e)return;const{height:o,width:m}=e.getBoundingClientRect();(o!==c.altura||m!==c.largura)&&g({altura:o,largura:m})});const w=u.reduce((e,o)=>Math.max(e,o.values.length),0),s=r??Array.from({length:w},()=>({})),l=n==="none"||s.length===0?void 0:n??{},E=(l==null?void 0:l.column)??s.length-1,$=y(u.map(e=>e.values[E]??0)),L=(l==null?void 0:l.compute)??((e,o)=>o===0?0:e/o),M=(l==null?void 0:l.format)??(e=>b.formatarPercentual(e,{casasDecimais:2})),{x:A,y:C}=S(i,c.largura,c.altura),q=`1fr ${"auto ".repeat(s.length+(l?1:0))}`.trim();return a.jsxs("div",{"aria-hidden":"true",className:t.default.tooltip,ref:v,style:{left:A,top:C},children:[x!==void 0&&a.jsx("p",{className:t.default.title,children:x}),d!==void 0&&a.jsx("p",{className:t.default.subtitle,children:d}),a.jsxs("div",{className:t.default.grid,style:{gridTemplateColumns:q},children:[u.map((e,o)=>a.jsxs(h.Fragment,{children:[a.jsxs("span",{className:`${t.default.label} ${e.emphasis?t.default.emphasis:""}`,children:[e.color!==void 0&&a.jsx("span",{className:t.default.swatch,style:{background:e.color}}),e.label]}),s.map((m,T)=>a.jsx("span",{className:`${t.default.value} ${e.emphasis?t.default.emphasis:""}`,children:(m.format??b.formatarNumero)(e.values[T]??0)},T)),l&&a.jsx("span",{className:`${t.default.computed} ${e.emphasis?t.default.emphasis:""}`,children:M(L(e.values[E]??0,$))})]},o)),p&&a.jsxs(a.Fragment,{children:[a.jsx("span",{className:t.default.rule}),a.jsx("span",{className:`${t.default.label} ${t.default.totalLabel}`,children:N}),s.map((e,o)=>a.jsx("span",{className:`${t.default.value} ${t.default.totalValue}`,children:e.total==="none"?"":(e.format??b.formatarNumero)(D(e.total??"sum",u.map(m=>m.values[o]??0)))},o)),l&&a.jsx("span",{className:`${t.default.computed} ${t.default.totalValue}`,children:M(L($,$))})]})]})]})}exports.ChartTooltip=R;
|
|
2
|
+
//# sourceMappingURL=ChartTooltip.cjs.map
|