@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,22 @@
|
|
|
1
|
+
function u(n) {
|
|
2
|
+
return Number.isFinite(n.value) ? Math.max(n.value, 0) : 0;
|
|
3
|
+
}
|
|
4
|
+
function p(n, { label: c, threshold: t }) {
|
|
5
|
+
const a = n.reduce((e, r) => e + u(r), 0);
|
|
6
|
+
if (t <= 0 || a <= 0)
|
|
7
|
+
return n;
|
|
8
|
+
const i = (e) => Number.isFinite(e.value) && u(e) / a < t, o = n.filter(i);
|
|
9
|
+
if (o.length < 2)
|
|
10
|
+
return n;
|
|
11
|
+
const f = {
|
|
12
|
+
intent: "neutral",
|
|
13
|
+
label: c,
|
|
14
|
+
value: o.reduce((e, r) => e + u(r), 0)
|
|
15
|
+
};
|
|
16
|
+
let l = !1;
|
|
17
|
+
return n.flatMap((e) => i(e) ? l ? [] : (l = !0, [f]) : [e]);
|
|
18
|
+
}
|
|
19
|
+
export {
|
|
20
|
+
p as groupSmallSlices
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=slices.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slices.js","sources":["../../../../src/components/charts/core/slices.ts"],"sourcesContent":["import type { SeriesAppearance } from '../palette';\n\nexport interface ChartSlice extends SeriesAppearance {\n label: string;\n value: number;\n}\n\nexport interface GroupSmallSlicesOptions {\n label: string;\n threshold: number;\n}\n\n/**\n * Reune as fatias pequenas numa so. Abaixo de um limiar a fatia deixa de ser\n * legivel no anel e ainda ocupa uma linha da legenda; o agrupamento e a regra\n * de percentual minimo da referencia.\n *\n * A fatia reunida entra no lugar da primeira pequena, para que a ordem das\n * demais, que a legenda repete, permaneca a mesma.\n */\n/** Valor que a fatia ocupa no anel. Invalido tem o destino do ausente; um so desligava o agrupamento. */\nfunction ocupacao(fatia: ChartSlice) {\n return Number.isFinite(fatia.value) ? Math.max(fatia.value, 0) : 0;\n}\n\nexport function groupSmallSlices(\n slices: readonly ChartSlice[],\n { label, threshold }: GroupSmallSlicesOptions,\n): readonly ChartSlice[] {\n const total = slices.reduce((soma, fatia) => soma + ocupacao(fatia), 0);\n\n if (threshold <= 0 || total <= 0) {\n return slices;\n }\n\n const pequena = (fatia: ChartSlice) => Number.isFinite(fatia.value) && ocupacao(fatia) / total < threshold;\n const pequenas = slices.filter(pequena);\n\n if (pequenas.length < 2) {\n return slices;\n }\n\n const reunida: ChartSlice = {\n intent: 'neutral',\n label,\n value: pequenas.reduce((soma, fatia) => soma + ocupacao(fatia), 0),\n };\n\n let inserida = false;\n\n return slices.flatMap((fatia) => {\n if (!pequena(fatia)) {\n return [fatia];\n }\n\n if (inserida) {\n return [];\n }\n\n inserida = true;\n\n return [reunida];\n });\n}\n"],"names":["ocupacao","fatia","groupSmallSlices","slices","label","threshold","total","soma","pequena","pequenas","reunida","inserida"],"mappings":"AAqBA,SAASA,EAASC,GAAmB;AACnC,SAAO,OAAO,SAASA,EAAM,KAAK,IAAI,KAAK,IAAIA,EAAM,OAAO,CAAC,IAAI;AACnE;AAEO,SAASC,EACdC,GACA,EAAE,OAAAC,GAAO,WAAAC,KACc;AACvB,QAAMC,IAAQH,EAAO,OAAO,CAACI,GAAMN,MAAUM,IAAOP,EAASC,CAAK,GAAG,CAAC;AAEtE,MAAII,KAAa,KAAKC,KAAS;AAC7B,WAAOH;AAGT,QAAMK,IAAU,CAACP,MAAsB,OAAO,SAASA,EAAM,KAAK,KAAKD,EAASC,CAAK,IAAIK,IAAQD,GAC3FI,IAAWN,EAAO,OAAOK,CAAO;AAEtC,MAAIC,EAAS,SAAS;AACpB,WAAON;AAGT,QAAMO,IAAsB;AAAA,IAC1B,QAAQ;AAAA,IACR,OAAAN;AAAA,IACA,OAAOK,EAAS,OAAO,CAACF,GAAMN,MAAUM,IAAOP,EAASC,CAAK,GAAG,CAAC;AAAA,EAAA;AAGnE,MAAIU,IAAW;AAEf,SAAOR,EAAO,QAAQ,CAACF,MAChBO,EAAQP,CAAK,IAIdU,IACK,CAAA,KAGTA,IAAW,IAEJ,CAACD,CAAO,KATN,CAACT,CAAK,CAUhB;AACH;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=8,s=12,u=.24;function R(t){return t.lineHeight+a/2}const A=2,T={offset:0,thickness:0};function l(t,e){const _=e.reduce((n,o)=>n+o,0),i=Math.max((t-A*Math.max(_-1,0))/Math.max(_,1),0);return e.map((n,o)=>({offset:e.slice(0,o).reduce((r,c)=>r+(i+A)*c,0),thickness:i*n}))}function L(t,e){return Math.max(Math.min(t,e)-a*2,0)}exports.CHART_BAR_GAP=A;exports.CHART_EDGE_GAP=s;exports.CHART_LABEL_BAND=u;exports.CHART_LABEL_OFFSET=a;exports.NO_BAR_SLOT=T;exports.barSlots=l;exports.ringDiameter=L;exports.valueLabelRoom=R;
|
|
2
|
+
//# sourceMappingURL=spacing.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spacing.cjs","sources":["../../../../src/components/charts/core/spacing.ts"],"sourcesContent":["import type { LabelFont } from './measureText';\n\n/**\n * Medidas de espaco do desenho. Elas vivem aqui, e nao em cada grafico, porque\n * sao a mesma decisao visual repetida: quando cada arquivo guardava a sua, o\n * mesmo conceito aparecia com valores diferentes em dois vizinhos.\n *\n * Geometria em SVG nao le variavel CSS, entao estes sao numeros — mas numeros\n * de um lugar so.\n */\n\n/** Distancia entre uma marca e o rotulo que a descreve. */\nexport const CHART_LABEL_OFFSET = 8;\n\n/** Folga minima nas bordas, para o rotulo das pontas nao encostar no limite. */\nexport const CHART_EDGE_GAP = 12;\n\n/** Teto da banda de rotulos projetados, como fracao da largura. */\nexport const CHART_LABEL_BAND = 0.24;\n\n/**\n * Espaco que um rotulo de valor ocupa acima da marca. Sai da entrelinha medida,\n * e nao de um numero fixo: o rotulo ocupa o que o texto ocupa.\n */\nexport function valueLabelRoom(font: LabelFont) {\n return font.lineHeight + CHART_LABEL_OFFSET / 2;\n}\n\n/** Folga entre duas barras vizinhas dentro da mesma faixa. */\nexport const CHART_BAR_GAP = 2;\n\nexport interface BarSlot {\n offset: number;\n thickness: number;\n}\n\n/**\n * Faixa de um indice que ainda nao existe. Quando entra uma serie, o tween\n * devolve o array anterior por um render, e ali a nova nao tem presenca.\n */\nexport const NO_BAR_SLOT: BarSlot = { offset: 0, thickness: 0 };\n\n/**\n * Espessura e deslocamento de cada barra dentro da faixa, a partir da presenca\n * de cada serie. A barra desligada encolhe a zero e as demais ocupam o lugar\n * dela, sem deixar a folga sobrando no fim.\n */\nexport function barSlots(band: number, presences: readonly number[]): BarSlot[] {\n const total = presences.reduce((soma, presenca) => soma + presenca, 0);\n const unit = Math.max((band - CHART_BAR_GAP * Math.max(total - 1, 0)) / Math.max(total, 1), 0);\n\n return presences.map((presenca, indice) => ({\n offset: presences\n .slice(0, indice)\n .reduce((soma, anterior) => soma + (unit + CHART_BAR_GAP) * anterior, 0),\n thickness: unit * presenca,\n }));\n}\n\n/** Diametro do anel: o lado menor da area disponivel, menos a folga. */\nexport function ringDiameter(width: number, height: number) {\n return Math.max(Math.min(width, height) - CHART_LABEL_OFFSET * 2, 0);\n}\n"],"names":["CHART_LABEL_OFFSET","CHART_EDGE_GAP","CHART_LABEL_BAND","valueLabelRoom","font","CHART_BAR_GAP","NO_BAR_SLOT","barSlots","band","presences","total","soma","presenca","unit","indice","anterior","ringDiameter","width","height"],"mappings":"gFAYO,MAAMA,EAAqB,EAGrBC,EAAiB,GAGjBC,EAAmB,IAMzB,SAASC,EAAeC,EAAiB,CAC9C,OAAOA,EAAK,WAAaJ,EAAqB,CAChD,CAGO,MAAMK,EAAgB,EAWhBC,EAAuB,CAAE,OAAQ,EAAG,UAAW,CAAA,EAOrD,SAASC,EAASC,EAAcC,EAAyC,CAC9E,MAAMC,EAAQD,EAAU,OAAO,CAACE,EAAMC,IAAaD,EAAOC,EAAU,CAAC,EAC/DC,EAAO,KAAK,KAAKL,EAAOH,EAAgB,KAAK,IAAIK,EAAQ,EAAG,CAAC,GAAK,KAAK,IAAIA,EAAO,CAAC,EAAG,CAAC,EAE7F,OAAOD,EAAU,IAAI,CAACG,EAAUE,KAAY,CAC1C,OAAQL,EACL,MAAM,EAAGK,CAAM,EACf,OAAO,CAACH,EAAMI,IAAaJ,GAAQE,EAAOR,GAAiBU,EAAU,CAAC,EACzE,UAAWF,EAAOD,CAAA,EAClB,CACJ,CAGO,SAASI,EAAaC,EAAeC,EAAgB,CAC1D,OAAO,KAAK,IAAI,KAAK,IAAID,EAAOC,CAAM,EAAIlB,EAAqB,EAAG,CAAC,CACrE"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
const s = 8, r = 12, u = 0.24;
|
|
2
|
+
function L(t) {
|
|
3
|
+
return t.lineHeight + 8 / 2;
|
|
4
|
+
}
|
|
5
|
+
const c = 2, T = { offset: 0, thickness: 0 };
|
|
6
|
+
function E(t, n) {
|
|
7
|
+
const A = n.reduce((o, a) => o + a, 0), _ = Math.max((t - c * Math.max(A - 1, 0)) / Math.max(A, 1), 0);
|
|
8
|
+
return n.map((o, a) => ({
|
|
9
|
+
offset: n.slice(0, a).reduce((e, i) => e + (_ + c) * i, 0),
|
|
10
|
+
thickness: _ * o
|
|
11
|
+
}));
|
|
12
|
+
}
|
|
13
|
+
function R(t, n) {
|
|
14
|
+
return Math.max(Math.min(t, n) - 16, 0);
|
|
15
|
+
}
|
|
16
|
+
export {
|
|
17
|
+
c as CHART_BAR_GAP,
|
|
18
|
+
r as CHART_EDGE_GAP,
|
|
19
|
+
u as CHART_LABEL_BAND,
|
|
20
|
+
s as CHART_LABEL_OFFSET,
|
|
21
|
+
T as NO_BAR_SLOT,
|
|
22
|
+
E as barSlots,
|
|
23
|
+
R as ringDiameter,
|
|
24
|
+
L as valueLabelRoom
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=spacing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spacing.js","sources":["../../../../src/components/charts/core/spacing.ts"],"sourcesContent":["import type { LabelFont } from './measureText';\n\n/**\n * Medidas de espaco do desenho. Elas vivem aqui, e nao em cada grafico, porque\n * sao a mesma decisao visual repetida: quando cada arquivo guardava a sua, o\n * mesmo conceito aparecia com valores diferentes em dois vizinhos.\n *\n * Geometria em SVG nao le variavel CSS, entao estes sao numeros — mas numeros\n * de um lugar so.\n */\n\n/** Distancia entre uma marca e o rotulo que a descreve. */\nexport const CHART_LABEL_OFFSET = 8;\n\n/** Folga minima nas bordas, para o rotulo das pontas nao encostar no limite. */\nexport const CHART_EDGE_GAP = 12;\n\n/** Teto da banda de rotulos projetados, como fracao da largura. */\nexport const CHART_LABEL_BAND = 0.24;\n\n/**\n * Espaco que um rotulo de valor ocupa acima da marca. Sai da entrelinha medida,\n * e nao de um numero fixo: o rotulo ocupa o que o texto ocupa.\n */\nexport function valueLabelRoom(font: LabelFont) {\n return font.lineHeight + CHART_LABEL_OFFSET / 2;\n}\n\n/** Folga entre duas barras vizinhas dentro da mesma faixa. */\nexport const CHART_BAR_GAP = 2;\n\nexport interface BarSlot {\n offset: number;\n thickness: number;\n}\n\n/**\n * Faixa de um indice que ainda nao existe. Quando entra uma serie, o tween\n * devolve o array anterior por um render, e ali a nova nao tem presenca.\n */\nexport const NO_BAR_SLOT: BarSlot = { offset: 0, thickness: 0 };\n\n/**\n * Espessura e deslocamento de cada barra dentro da faixa, a partir da presenca\n * de cada serie. A barra desligada encolhe a zero e as demais ocupam o lugar\n * dela, sem deixar a folga sobrando no fim.\n */\nexport function barSlots(band: number, presences: readonly number[]): BarSlot[] {\n const total = presences.reduce((soma, presenca) => soma + presenca, 0);\n const unit = Math.max((band - CHART_BAR_GAP * Math.max(total - 1, 0)) / Math.max(total, 1), 0);\n\n return presences.map((presenca, indice) => ({\n offset: presences\n .slice(0, indice)\n .reduce((soma, anterior) => soma + (unit + CHART_BAR_GAP) * anterior, 0),\n thickness: unit * presenca,\n }));\n}\n\n/** Diametro do anel: o lado menor da area disponivel, menos a folga. */\nexport function ringDiameter(width: number, height: number) {\n return Math.max(Math.min(width, height) - CHART_LABEL_OFFSET * 2, 0);\n}\n"],"names":["CHART_LABEL_OFFSET","CHART_EDGE_GAP","CHART_LABEL_BAND","valueLabelRoom","font","CHART_BAR_GAP","NO_BAR_SLOT","barSlots","band","presences","total","soma","presenca","unit","indice","anterior","ringDiameter","width","height"],"mappings":"AAYO,MAAMA,IAAqB,GAGrBC,IAAiB,IAGjBC,IAAmB;AAMzB,SAASC,EAAeC,GAAiB;AAC9C,SAAOA,EAAK,aAAa,IAAqB;AAChD;AAGO,MAAMC,IAAgB,GAWhBC,IAAuB,EAAE,QAAQ,GAAG,WAAW,EAAA;AAOrD,SAASC,EAASC,GAAcC,GAAyC;AAC9E,QAAMC,IAAQD,EAAU,OAAO,CAACE,GAAMC,MAAaD,IAAOC,GAAU,CAAC,GAC/DC,IAAO,KAAK,KAAKL,IAAOH,IAAgB,KAAK,IAAIK,IAAQ,GAAG,CAAC,KAAK,KAAK,IAAIA,GAAO,CAAC,GAAG,CAAC;AAE7F,SAAOD,EAAU,IAAI,CAACG,GAAUE,OAAY;AAAA,IAC1C,QAAQL,EACL,MAAM,GAAGK,CAAM,EACf,OAAO,CAACH,GAAMI,MAAaJ,KAAQE,IAAOR,KAAiBU,GAAU,CAAC;AAAA,IACzE,WAAWF,IAAOD;AAAA,EAAA,EAClB;AACJ;AAGO,SAASI,EAAaC,GAAeC,GAAgB;AAC1D,SAAO,KAAK,IAAI,KAAK,IAAID,GAAOC,CAAM,IAAI,IAAwB,CAAC;AACrE;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react"),l=require("./measureText.cjs"),u=5;function p(r){return!r||typeof getComputedStyle!="function"?u:Number.parseFloat(getComputedStyle(r).getPropertyValue("--pl-radius-sm"))||u}function y(){const[r,a]=s.useState(()=>({font:l.labelFontOf(null),height:0,radius:u,width:0})),c=s.useRef(null),o=s.useCallback(()=>{const e=c.current,n=(e==null?void 0:e.clientWidth)??0,f=(e==null?void 0:e.clientHeight)??0,i=l.labelFontOf(e),d=p(e);a(t=>t.width===n&&t.height===f&&t.radius===d&&t.font.family===i.family&&t.font.size===i.size&&t.font.lineHeight===i.lineHeight&&t.font.centerSteps.every((b,m)=>{var h;return b.size===((h=i.centerSteps[m])==null?void 0:h.size)})?t:{font:i,height:f,radius:d,width:n})},[]),g=s.useCallback(e=>{c.current=e,o()},[o]);return s.useEffect(()=>{const e=c.current;if(!e||typeof ResizeObserver>"u")return;const n=new ResizeObserver(o);return n.observe(e),()=>n.disconnect()},[o]),{font:r.font,height:r.height,radius:r.radius,ref:g,width:r.width}}exports.useChartMetrics=y;
|
|
2
|
+
//# sourceMappingURL=useChartMetrics.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useChartMetrics.cjs","sources":["../../../../src/components/charts/core/useChartMetrics.ts"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from 'react';\nimport { labelFontOf, type LabelFont } from './measureText';\n\nexport interface ChartMetrics {\n font: LabelFont;\n height: number;\n /** Raio dos cantos, lido do token: geometria de caminho nao le variavel CSS. */\n radius: number;\n ref: (node: HTMLElement | null) => void;\n width: number;\n}\n\nconst RAIO_PADRAO = 5;\n\nfunction raioDe(node: Element | null) {\n if (!node || typeof getComputedStyle !== 'function') {\n return RAIO_PADRAO;\n }\n\n return Number.parseFloat(getComputedStyle(node).getPropertyValue('--pl-radius-sm')) || RAIO_PADRAO;\n}\n\n/**\n * Mede o espaco em que o grafico sera desenhado: largura, altura e a fonte que\n * os rotulos vao usar. A area de desenho nao entra no fluxo, entao a medida e\n * sempre o que o layout concedeu, e nunca o que o proprio grafico ocupou.\n *\n * A fonte sai da mesma medida porque as duas vem do elemento e mudam juntas:\n * as margens do grafico dependem da largura dos rotulos, e a largura de um\n * rotulo depende da fonte resolvida ali.\n */\nexport function useChartMetrics(): ChartMetrics {\n const [medida, setMedida] = useState<{\n font: LabelFont;\n height: number;\n radius: number;\n width: number;\n }>(() => ({ font: labelFontOf(null), height: 0, radius: RAIO_PADRAO, width: 0 }));\n const elemento = useRef<HTMLElement | null>(null);\n\n const medir = useCallback(() => {\n const node = elemento.current;\n const width = node?.clientWidth ?? 0;\n const height = node?.clientHeight ?? 0;\n const font = labelFontOf(node);\n const radius = raioDe(node);\n\n setMedida((atual) =>\n atual.width === width &&\n atual.height === height &&\n atual.radius === radius &&\n atual.font.family === font.family &&\n atual.font.size === font.size &&\n atual.font.lineHeight === font.lineHeight &&\n atual.font.centerSteps.every((degrau, indice) => degrau.size === font.centerSteps[indice]?.size)\n ? atual\n : { font, height, radius, width },\n );\n }, []);\n\n const ref = useCallback(\n (node: HTMLElement | null) => {\n elemento.current = node;\n medir();\n },\n [medir],\n );\n\n useEffect(() => {\n const node = elemento.current;\n\n if (!node || typeof ResizeObserver === 'undefined') {\n return;\n }\n\n const observador = new ResizeObserver(medir);\n observador.observe(node);\n\n return () => observador.disconnect();\n }, [medir]);\n\n return {\n font: medida.font,\n height: medida.height,\n radius: medida.radius,\n ref,\n width: medida.width,\n };\n}\n"],"names":["RAIO_PADRAO","raioDe","node","useChartMetrics","medida","setMedida","useState","labelFontOf","elemento","useRef","medir","useCallback","width","height","font","radius","atual","degrau","indice","_a","ref","useEffect","observador"],"mappings":"wIAYMA,EAAc,EAEpB,SAASC,EAAOC,EAAsB,CACpC,MAAI,CAACA,GAAQ,OAAO,kBAAqB,WAChCF,EAGF,OAAO,WAAW,iBAAiBE,CAAI,EAAE,iBAAiB,gBAAgB,CAAC,GAAKF,CACzF,CAWO,SAASG,GAAgC,CAC9C,KAAM,CAACC,EAAQC,CAAS,EAAIC,EAAAA,SAKzB,KAAO,CAAE,KAAMC,EAAAA,YAAY,IAAI,EAAG,OAAQ,EAAG,OAAQP,EAAa,MAAO,GAAI,EAC1EQ,EAAWC,EAAAA,OAA2B,IAAI,EAE1CC,EAAQC,EAAAA,YAAY,IAAM,CAC9B,MAAMT,EAAOM,EAAS,QAChBI,GAAQV,GAAA,YAAAA,EAAM,cAAe,EAC7BW,GAASX,GAAA,YAAAA,EAAM,eAAgB,EAC/BY,EAAOP,EAAAA,YAAYL,CAAI,EACvBa,EAASd,EAAOC,CAAI,EAE1BG,EAAWW,GACTA,EAAM,QAAUJ,GAChBI,EAAM,SAAWH,GACjBG,EAAM,SAAWD,GACjBC,EAAM,KAAK,SAAWF,EAAK,QAC3BE,EAAM,KAAK,OAASF,EAAK,MACzBE,EAAM,KAAK,aAAeF,EAAK,YAC/BE,EAAM,KAAK,YAAY,MAAM,CAACC,EAAQC,WAAW,OAAAD,EAAO,SAASE,EAAAL,EAAK,YAAYI,CAAM,IAAvB,YAAAC,EAA0B,MAAI,EAC3FH,EACA,CAAE,KAAAF,EAAM,OAAAD,EAAQ,OAAAE,EAAQ,MAAAH,CAAA,CAAM,CAEtC,EAAG,CAAA,CAAE,EAECQ,EAAMT,EAAAA,YACTT,GAA6B,CAC5BM,EAAS,QAAUN,EACnBQ,EAAA,CACF,EACA,CAACA,CAAK,CAAA,EAGRW,OAAAA,EAAAA,UAAU,IAAM,CACd,MAAMnB,EAAOM,EAAS,QAEtB,GAAI,CAACN,GAAQ,OAAO,eAAmB,IACrC,OAGF,MAAMoB,EAAa,IAAI,eAAeZ,CAAK,EAC3C,OAAAY,EAAW,QAAQpB,CAAI,EAEhB,IAAMoB,EAAW,WAAA,CAC1B,EAAG,CAACZ,CAAK,CAAC,EAEH,CACL,KAAMN,EAAO,KACb,OAAQA,EAAO,OACf,OAAQA,EAAO,OACf,IAAAgB,EACA,MAAOhB,EAAO,KAAA,CAElB"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { useState as b, useRef as a, useCallback as h, useEffect as w } from "react";
|
|
2
|
+
import { labelFontOf as l } from "./measureText.js";
|
|
3
|
+
const c = 5;
|
|
4
|
+
function z(i) {
|
|
5
|
+
return !i || typeof getComputedStyle != "function" ? c : Number.parseFloat(getComputedStyle(i).getPropertyValue("--pl-radius-sm")) || c;
|
|
6
|
+
}
|
|
7
|
+
function R() {
|
|
8
|
+
const [i, m] = b(() => ({ font: l(null), height: 0, radius: c, width: 0 })), o = a(null), s = h(() => {
|
|
9
|
+
const e = o.current, n = (e == null ? void 0 : e.clientWidth) ?? 0, f = (e == null ? void 0 : e.clientHeight) ?? 0, r = l(e), u = z(e);
|
|
10
|
+
m(
|
|
11
|
+
(t) => t.width === n && t.height === f && t.radius === u && t.font.family === r.family && t.font.size === r.size && t.font.lineHeight === r.lineHeight && t.font.centerSteps.every((g, y) => {
|
|
12
|
+
var d;
|
|
13
|
+
return g.size === ((d = r.centerSteps[y]) == null ? void 0 : d.size);
|
|
14
|
+
}) ? t : { font: r, height: f, radius: u, width: n }
|
|
15
|
+
);
|
|
16
|
+
}, []), p = h(
|
|
17
|
+
(e) => {
|
|
18
|
+
o.current = e, s();
|
|
19
|
+
},
|
|
20
|
+
[s]
|
|
21
|
+
);
|
|
22
|
+
return w(() => {
|
|
23
|
+
const e = o.current;
|
|
24
|
+
if (!e || typeof ResizeObserver > "u")
|
|
25
|
+
return;
|
|
26
|
+
const n = new ResizeObserver(s);
|
|
27
|
+
return n.observe(e), () => n.disconnect();
|
|
28
|
+
}, [s]), {
|
|
29
|
+
font: i.font,
|
|
30
|
+
height: i.height,
|
|
31
|
+
radius: i.radius,
|
|
32
|
+
ref: p,
|
|
33
|
+
width: i.width
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
export {
|
|
37
|
+
R as useChartMetrics
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=useChartMetrics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useChartMetrics.js","sources":["../../../../src/components/charts/core/useChartMetrics.ts"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from 'react';\nimport { labelFontOf, type LabelFont } from './measureText';\n\nexport interface ChartMetrics {\n font: LabelFont;\n height: number;\n /** Raio dos cantos, lido do token: geometria de caminho nao le variavel CSS. */\n radius: number;\n ref: (node: HTMLElement | null) => void;\n width: number;\n}\n\nconst RAIO_PADRAO = 5;\n\nfunction raioDe(node: Element | null) {\n if (!node || typeof getComputedStyle !== 'function') {\n return RAIO_PADRAO;\n }\n\n return Number.parseFloat(getComputedStyle(node).getPropertyValue('--pl-radius-sm')) || RAIO_PADRAO;\n}\n\n/**\n * Mede o espaco em que o grafico sera desenhado: largura, altura e a fonte que\n * os rotulos vao usar. A area de desenho nao entra no fluxo, entao a medida e\n * sempre o que o layout concedeu, e nunca o que o proprio grafico ocupou.\n *\n * A fonte sai da mesma medida porque as duas vem do elemento e mudam juntas:\n * as margens do grafico dependem da largura dos rotulos, e a largura de um\n * rotulo depende da fonte resolvida ali.\n */\nexport function useChartMetrics(): ChartMetrics {\n const [medida, setMedida] = useState<{\n font: LabelFont;\n height: number;\n radius: number;\n width: number;\n }>(() => ({ font: labelFontOf(null), height: 0, radius: RAIO_PADRAO, width: 0 }));\n const elemento = useRef<HTMLElement | null>(null);\n\n const medir = useCallback(() => {\n const node = elemento.current;\n const width = node?.clientWidth ?? 0;\n const height = node?.clientHeight ?? 0;\n const font = labelFontOf(node);\n const radius = raioDe(node);\n\n setMedida((atual) =>\n atual.width === width &&\n atual.height === height &&\n atual.radius === radius &&\n atual.font.family === font.family &&\n atual.font.size === font.size &&\n atual.font.lineHeight === font.lineHeight &&\n atual.font.centerSteps.every((degrau, indice) => degrau.size === font.centerSteps[indice]?.size)\n ? atual\n : { font, height, radius, width },\n );\n }, []);\n\n const ref = useCallback(\n (node: HTMLElement | null) => {\n elemento.current = node;\n medir();\n },\n [medir],\n );\n\n useEffect(() => {\n const node = elemento.current;\n\n if (!node || typeof ResizeObserver === 'undefined') {\n return;\n }\n\n const observador = new ResizeObserver(medir);\n observador.observe(node);\n\n return () => observador.disconnect();\n }, [medir]);\n\n return {\n font: medida.font,\n height: medida.height,\n radius: medida.radius,\n ref,\n width: medida.width,\n };\n}\n"],"names":["RAIO_PADRAO","raioDe","node","useChartMetrics","medida","setMedida","useState","labelFontOf","elemento","useRef","medir","useCallback","width","height","font","radius","atual","degrau","indice","_a","ref","useEffect","observador"],"mappings":";;AAYA,MAAMA,IAAc;AAEpB,SAASC,EAAOC,GAAsB;AACpC,SAAI,CAACA,KAAQ,OAAO,oBAAqB,aAChCF,IAGF,OAAO,WAAW,iBAAiBE,CAAI,EAAE,iBAAiB,gBAAgB,CAAC,KAAKF;AACzF;AAWO,SAASG,IAAgC;AAC9C,QAAM,CAACC,GAAQC,CAAS,IAAIC,EAKzB,OAAO,EAAE,MAAMC,EAAY,IAAI,GAAG,QAAQ,GAAG,QAAQP,GAAa,OAAO,IAAI,GAC1EQ,IAAWC,EAA2B,IAAI,GAE1CC,IAAQC,EAAY,MAAM;AAC9B,UAAMT,IAAOM,EAAS,SAChBI,KAAQV,KAAA,gBAAAA,EAAM,gBAAe,GAC7BW,KAASX,KAAA,gBAAAA,EAAM,iBAAgB,GAC/BY,IAAOP,EAAYL,CAAI,GACvBa,IAASd,EAAOC,CAAI;AAE1B,IAAAG;AAAA,MAAU,CAACW,MACTA,EAAM,UAAUJ,KAChBI,EAAM,WAAWH,KACjBG,EAAM,WAAWD,KACjBC,EAAM,KAAK,WAAWF,EAAK,UAC3BE,EAAM,KAAK,SAASF,EAAK,QACzBE,EAAM,KAAK,eAAeF,EAAK,cAC/BE,EAAM,KAAK,YAAY,MAAM,CAACC,GAAQC;;AAAW,eAAAD,EAAO,WAASE,IAAAL,EAAK,YAAYI,CAAM,MAAvB,gBAAAC,EAA0B;AAAA,OAAI,IAC3FH,IACA,EAAE,MAAAF,GAAM,QAAAD,GAAQ,QAAAE,GAAQ,OAAAH,EAAA;AAAA,IAAM;AAAA,EAEtC,GAAG,CAAA,CAAE,GAECQ,IAAMT;AAAA,IACV,CAACT,MAA6B;AAC5B,MAAAM,EAAS,UAAUN,GACnBQ,EAAA;AAAA,IACF;AAAA,IACA,CAACA,CAAK;AAAA,EAAA;AAGR,SAAAW,EAAU,MAAM;AACd,UAAMnB,IAAOM,EAAS;AAEtB,QAAI,CAACN,KAAQ,OAAO,iBAAmB;AACrC;AAGF,UAAMoB,IAAa,IAAI,eAAeZ,CAAK;AAC3C,WAAAY,EAAW,QAAQpB,CAAI,GAEhB,MAAMoB,EAAW,WAAA;AAAA,EAC1B,GAAG,CAACZ,CAAK,CAAC,GAEH;AAAA,IACL,MAAMN,EAAO;AAAA,IACb,QAAQA,EAAO;AAAA,IACf,QAAQA,EAAO;AAAA,IACf,KAAAgB;AAAA,IACA,OAAOhB,EAAO;AAAA,EAAA;AAElB;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useHoveredBand.cjs","sources":["../../../../src/components/charts/core/useHoveredBand.ts"],"sourcesContent":["import { useState } from 'react';\n\nexport interface HoveredBand {\n hover: (index: number | null) => void;\n hovered: number | null;\n}\n\n/**\n * Faixa sob o ponteiro. O grafico a usa para o realce e o consumidor recebe o\n * aviso pela mesma porta, em vez de cada grafico repetir estado e callback.\n */\nexport function useHoveredBand(onHover?: (index: number | null) => void): HoveredBand {\n const [hovered, setHovered] = useState<number | null>(null);\n\n return {\n hover: (index) => {\n setHovered(index);\n onHover?.(index);\n },\n hovered,\n };\n}\n"],"names":["useHoveredBand","onHover","hovered","setHovered","useState","index"],"mappings":"yGAWO,SAASA,EAAeC,EAAuD,CACpF,KAAM,CAACC,EAASC,CAAU,EAAIC,EAAAA,SAAwB,IAAI,EAE1D,MAAO,CACL,MAAQC,GAAU,CAChBF,EAAWE,CAAK,EAChBJ,GAAA,MAAAA,EAAUI,EACZ,EACA,QAAAH,CAAA,CAEJ"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { useState as s } from "react";
|
|
2
|
+
function a(e) {
|
|
3
|
+
const [r, u] = s(null);
|
|
4
|
+
return {
|
|
5
|
+
hover: (t) => {
|
|
6
|
+
u(t), e == null || e(t);
|
|
7
|
+
},
|
|
8
|
+
hovered: r
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
export {
|
|
12
|
+
a as useHoveredBand
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=useHoveredBand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useHoveredBand.js","sources":["../../../../src/components/charts/core/useHoveredBand.ts"],"sourcesContent":["import { useState } from 'react';\n\nexport interface HoveredBand {\n hover: (index: number | null) => void;\n hovered: number | null;\n}\n\n/**\n * Faixa sob o ponteiro. O grafico a usa para o realce e o consumidor recebe o\n * aviso pela mesma porta, em vez de cada grafico repetir estado e callback.\n */\nexport function useHoveredBand(onHover?: (index: number | null) => void): HoveredBand {\n const [hovered, setHovered] = useState<number | null>(null);\n\n return {\n hover: (index) => {\n setHovered(index);\n onHover?.(index);\n },\n hovered,\n };\n}\n"],"names":["useHoveredBand","onHover","hovered","setHovered","useState","index"],"mappings":";AAWO,SAASA,EAAeC,GAAuD;AACpF,QAAM,CAACC,GAASC,CAAU,IAAIC,EAAwB,IAAI;AAE1D,SAAO;AAAA,IACL,OAAO,CAACC,MAAU;AAChB,MAAAF,EAAWE,CAAK,GAChBJ,KAAA,QAAAA,EAAUI;AAAA,IACZ;AAAA,IACA,SAAAH;AAAA,EAAA;AAEJ;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react");function T({defaultHiddenSeries:r=[],hiddenSeries:u,onHiddenSeriesChange:c}){const[a,f]=o.useState(r),t=u??a,e=o.useCallback(s=>{const l=t.includes(s)?t.filter(g=>g!==s):[...t,s];u===void 0&&f(l),c==null||c(l)},[u,t,c]);return{isHidden:o.useCallback(s=>t.includes(s),[t]),toggle:e}}exports.useSeriesToggle=T;
|
|
2
|
+
//# sourceMappingURL=useSeriesToggle.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSeriesToggle.cjs","sources":["../../../../src/components/charts/core/useSeriesToggle.ts"],"sourcesContent":["import { useCallback, useState } from 'react';\n\nexport interface UseSeriesToggleOptions {\n defaultHiddenSeries?: readonly string[];\n hiddenSeries?: readonly string[];\n onHiddenSeriesChange?: (hidden: readonly string[]) => void;\n}\n\nexport interface SeriesToggle {\n isHidden: (label: string) => boolean;\n toggle: (label: string) => void;\n}\n\n/**\n * Quais series estao ocultas. Controlado quando o produto informa\n * `hiddenSeries`, nao controlado em caso contrario, conforme `COMPONENTS.md`\n * secao 6. Trabalha com rotulos porque e o rotulo que a legenda exibe e o que\n * o produto reconhece; indices mudariam de significado ao reordenar as series.\n */\nexport function useSeriesToggle({\n defaultHiddenSeries = [],\n hiddenSeries,\n onHiddenSeriesChange,\n}: UseSeriesToggleOptions): SeriesToggle {\n const [internas, setInternas] = useState<readonly string[]>(defaultHiddenSeries);\n const ocultas = hiddenSeries ?? internas;\n\n const toggle = useCallback(\n (label: string) => {\n const proximas = ocultas.includes(label)\n ? ocultas.filter((oculta) => oculta !== label)\n : [...ocultas, label];\n\n if (hiddenSeries === undefined) {\n setInternas(proximas);\n }\n\n onHiddenSeriesChange?.(proximas);\n },\n [hiddenSeries, ocultas, onHiddenSeriesChange],\n );\n\n return {\n isHidden: useCallback((label: string) => ocultas.includes(label), [ocultas]),\n toggle,\n };\n}\n"],"names":["useSeriesToggle","defaultHiddenSeries","hiddenSeries","onHiddenSeriesChange","internas","setInternas","useState","ocultas","toggle","useCallback","label","proximas","oculta"],"mappings":"yGAmBO,SAASA,EAAgB,CAC9B,oBAAAC,EAAsB,CAAA,EACtB,aAAAC,EACA,qBAAAC,CACF,EAAyC,CACvC,KAAM,CAACC,EAAUC,CAAW,EAAIC,EAAAA,SAA4BL,CAAmB,EACzEM,EAAUL,GAAgBE,EAE1BI,EAASC,EAAAA,YACZC,GAAkB,CACjB,MAAMC,EAAWJ,EAAQ,SAASG,CAAK,EACnCH,EAAQ,OAAQK,GAAWA,IAAWF,CAAK,EAC3C,CAAC,GAAGH,EAASG,CAAK,EAElBR,IAAiB,QACnBG,EAAYM,CAAQ,EAGtBR,GAAA,MAAAA,EAAuBQ,EACzB,EACA,CAACT,EAAcK,EAASJ,CAAoB,CAAA,EAG9C,MAAO,CACL,SAAUM,EAAAA,YAAaC,GAAkBH,EAAQ,SAASG,CAAK,EAAG,CAACH,CAAO,CAAC,EAC3E,OAAAC,CAAA,CAEJ"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { useState as k, useCallback as f } from "react";
|
|
2
|
+
function I({
|
|
3
|
+
defaultHiddenSeries: l = [],
|
|
4
|
+
hiddenSeries: o,
|
|
5
|
+
onHiddenSeriesChange: s
|
|
6
|
+
}) {
|
|
7
|
+
const [m, p] = k(l), t = o ?? m, r = f(
|
|
8
|
+
(c) => {
|
|
9
|
+
const u = t.includes(c) ? t.filter((x) => x !== c) : [...t, c];
|
|
10
|
+
o === void 0 && p(u), s == null || s(u);
|
|
11
|
+
},
|
|
12
|
+
[o, t, s]
|
|
13
|
+
);
|
|
14
|
+
return {
|
|
15
|
+
isHidden: f((c) => t.includes(c), [t]),
|
|
16
|
+
toggle: r
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
export {
|
|
20
|
+
I as useSeriesToggle
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=useSeriesToggle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSeriesToggle.js","sources":["../../../../src/components/charts/core/useSeriesToggle.ts"],"sourcesContent":["import { useCallback, useState } from 'react';\n\nexport interface UseSeriesToggleOptions {\n defaultHiddenSeries?: readonly string[];\n hiddenSeries?: readonly string[];\n onHiddenSeriesChange?: (hidden: readonly string[]) => void;\n}\n\nexport interface SeriesToggle {\n isHidden: (label: string) => boolean;\n toggle: (label: string) => void;\n}\n\n/**\n * Quais series estao ocultas. Controlado quando o produto informa\n * `hiddenSeries`, nao controlado em caso contrario, conforme `COMPONENTS.md`\n * secao 6. Trabalha com rotulos porque e o rotulo que a legenda exibe e o que\n * o produto reconhece; indices mudariam de significado ao reordenar as series.\n */\nexport function useSeriesToggle({\n defaultHiddenSeries = [],\n hiddenSeries,\n onHiddenSeriesChange,\n}: UseSeriesToggleOptions): SeriesToggle {\n const [internas, setInternas] = useState<readonly string[]>(defaultHiddenSeries);\n const ocultas = hiddenSeries ?? internas;\n\n const toggle = useCallback(\n (label: string) => {\n const proximas = ocultas.includes(label)\n ? ocultas.filter((oculta) => oculta !== label)\n : [...ocultas, label];\n\n if (hiddenSeries === undefined) {\n setInternas(proximas);\n }\n\n onHiddenSeriesChange?.(proximas);\n },\n [hiddenSeries, ocultas, onHiddenSeriesChange],\n );\n\n return {\n isHidden: useCallback((label: string) => ocultas.includes(label), [ocultas]),\n toggle,\n };\n}\n"],"names":["useSeriesToggle","defaultHiddenSeries","hiddenSeries","onHiddenSeriesChange","internas","setInternas","useState","ocultas","toggle","useCallback","label","proximas","oculta"],"mappings":";AAmBO,SAASA,EAAgB;AAAA,EAC9B,qBAAAC,IAAsB,CAAA;AAAA,EACtB,cAAAC;AAAA,EACA,sBAAAC;AACF,GAAyC;AACvC,QAAM,CAACC,GAAUC,CAAW,IAAIC,EAA4BL,CAAmB,GACzEM,IAAUL,KAAgBE,GAE1BI,IAASC;AAAA,IACb,CAACC,MAAkB;AACjB,YAAMC,IAAWJ,EAAQ,SAASG,CAAK,IACnCH,EAAQ,OAAO,CAACK,MAAWA,MAAWF,CAAK,IAC3C,CAAC,GAAGH,GAASG,CAAK;AAEtB,MAAIR,MAAiB,UACnBG,EAAYM,CAAQ,GAGtBR,KAAA,QAAAA,EAAuBQ;AAAA,IACzB;AAAA,IACA,CAACT,GAAcK,GAASJ,CAAoB;AAAA,EAAA;AAG9C,SAAO;AAAA,IACL,UAAUM,EAAY,CAACC,MAAkBH,EAAQ,SAASG,CAAK,GAAG,CAACH,CAAO,CAAC;AAAA,IAC3E,QAAAC;AAAA,EAAA;AAEJ;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react"),T=require("./arcs.cjs"),C=require("./slices.cjs"),N=require("./useSeriesToggle.cjs"),h=require("./useTweenedNumbers.cjs"),j=require("../palette/seriesColor.cjs");function v({accent:o,defaultHiddenSlices:S,hiddenSlices:b,onHiddenSlicesChange:f,onHoverSlice:t,otherLabel:i,slices:a,smallSliceThreshold:c}){const{isHidden:g,toggle:p}=N.useSeriesToggle({defaultHiddenSeries:S,hiddenSeries:b,onHiddenSeriesChange:f}),[q,M]=r.useState(null),s=r.useMemo(()=>C.groupSmallSlices(a,{label:i,threshold:c}),[i,a,c]),A=r.useMemo(()=>j.resolveSeriesColors(s,{accent:o}),[o,s]),n=s.map(e=>g(e.label)||!Number.isFinite(e.value)?0:Math.max(e.value,0)),l=n.reduce((e,u)=>e+u,0),d=r.useMemo(()=>T.sliceAngles(n).flatMap(e=>[e.startAngle,e.endAngle]),[n.join()]),m=h.useTweenedNumbers(d,{from:d.map(()=>0)});return{angles:s.map((e,u)=>({startAngle:m[u*2]??0,endAngle:m[u*2+1]??0})),colors:A,focus:e=>{M(e),t==null||t(e===null?null:s[e]??null)},focused:q,isHidden:g,ratioOf:e=>l>0?(n[e]??0)/l:0,slices:s,toggle:p,total:l,values:n}}exports.useSliceRing=v;
|
|
2
|
+
//# sourceMappingURL=useSliceRing.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSliceRing.cjs","sources":["../../../../src/components/charts/core/useSliceRing.ts"],"sourcesContent":["import { useMemo, useState } from 'react';\nimport { resolveSeriesColors } from '../palette';\nimport { sliceAngles, type ArcAngles } from './arcs';\nimport { groupSmallSlices, type ChartSlice } from './slices';\nimport { useSeriesToggle } from './useSeriesToggle';\nimport { useTweenedNumbers } from './useTweenedNumbers';\n\nexport interface UseSliceRingOptions {\n accent?: string;\n defaultHiddenSlices?: readonly string[];\n hiddenSlices?: readonly string[];\n onHiddenSlicesChange?: (hidden: readonly string[]) => void;\n /** Fatia sob o ponteiro, ja agrupada, ou `null` ao sair dela. */\n onHoverSlice?: (slice: ChartSlice | null) => void;\n otherLabel: string;\n slices: readonly ChartSlice[];\n smallSliceThreshold: number;\n}\n\nexport interface SliceRing {\n angles: readonly ArcAngles[];\n colors: readonly string[];\n focus: (index: number | null) => void;\n focused: number | null;\n isHidden: (label: string) => boolean;\n ratioOf: (index: number) => number;\n slices: readonly ChartSlice[];\n toggle: (label: string) => void;\n total: number;\n values: readonly number[];\n}\n\n/**\n * O anel repartido: fatias pequenas ja reunidas, cores resolvidas, valores das\n * fatias ligadas e os angulos em movimento. E o que `ChartPie` e `ChartDonut`\n * compartilham — o anel, nao o componente.\n */\nexport function useSliceRing({\n accent,\n defaultHiddenSlices,\n hiddenSlices,\n onHiddenSlicesChange,\n onHoverSlice,\n otherLabel,\n slices,\n smallSliceThreshold,\n}: UseSliceRingOptions): SliceRing {\n const { isHidden, toggle } = useSeriesToggle({\n defaultHiddenSeries: defaultHiddenSlices,\n hiddenSeries: hiddenSlices,\n onHiddenSeriesChange: onHiddenSlicesChange,\n });\n const [focused, setFocused] = useState<number | null>(null);\n\n const reunidas = useMemo(\n () => groupSmallSlices(slices, { label: otherLabel, threshold: smallSliceThreshold }),\n [otherLabel, slices, smallSliceThreshold],\n );\n\n // A cor sai da lista inteira, e nao das visiveis: desligar uma fatia nao pode\n // repintar as demais.\n const colors = useMemo(() => resolveSeriesColors(reunidas, { accent }), [accent, reunidas]);\n\n const values = reunidas.map((fatia) =>\n isHidden(fatia.label) || !Number.isFinite(fatia.value) ? 0 : Math.max(fatia.value, 0),\n );\n const total = values.reduce((soma, valor) => soma + valor, 0);\n\n // Os angulos caminham ate o alvo, entao desligar uma fatia reparte o anel em\n // movimento. Partindo de zero, o anel tambem varre ao aparecer.\n const alvo = useMemo(\n () => sliceAngles(values).flatMap((angulo) => [angulo.startAngle, angulo.endAngle]),\n // A chave resume os valores: o alvo muda com o numero, nao com a identidade\n // do array, que e outra a cada render.\n [values.join()],\n );\n const animados = useTweenedNumbers(alvo, { from: alvo.map(() => 0) });\n\n const angles = reunidas.map((_, indice) => ({\n startAngle: animados[indice * 2] ?? 0,\n endAngle: animados[indice * 2 + 1] ?? 0,\n }));\n\n return {\n angles,\n colors,\n // A fatia entregue e a **agrupada**: as pequenas ja viraram uma so, entao o\n // indice do anel nao corresponde ao que o consumidor informou.\n focus: (indice) => {\n setFocused(indice);\n onHoverSlice?.(indice === null ? null : reunidas[indice] ?? null);\n },\n focused,\n isHidden,\n ratioOf: (indice) => (total > 0 ? (values[indice] ?? 0) / total : 0),\n slices: reunidas,\n toggle,\n total,\n values,\n };\n}\n"],"names":["useSliceRing","accent","defaultHiddenSlices","hiddenSlices","onHiddenSlicesChange","onHoverSlice","otherLabel","slices","smallSliceThreshold","isHidden","toggle","useSeriesToggle","focused","setFocused","useState","reunidas","useMemo","groupSmallSlices","colors","resolveSeriesColors","values","fatia","total","soma","valor","alvo","sliceAngles","angulo","animados","useTweenedNumbers","_","indice"],"mappings":"2QAqCO,SAASA,EAAa,CAC3B,OAAAC,EACA,oBAAAC,EACA,aAAAC,EACA,qBAAAC,EACA,aAAAC,EACA,WAAAC,EAAA,OACAC,EACA,oBAAAC,CACF,EAAmC,CACjC,KAAM,CAAE,SAAAC,EAAU,OAAAC,CAAA,EAAWC,kBAAgB,CAC3C,oBAAqBT,EACrB,aAAcC,EACd,qBAAsBC,CAAA,CACvB,EACK,CAACQ,EAASC,CAAU,EAAIC,EAAAA,SAAwB,IAAI,EAEpDC,EAAWC,EAAAA,QACf,IAAMC,EAAAA,iBAAiBV,EAAQ,CAAE,MAAOD,EAAY,UAAWE,EAAqB,EACpF,CAACF,EAAYC,EAAQC,CAAmB,CAAA,EAKpCU,EAASF,EAAAA,QAAQ,IAAMG,EAAAA,oBAAoBJ,EAAU,CAAE,OAAAd,CAAA,CAAQ,EAAG,CAACA,EAAQc,CAAQ,CAAC,EAEpFK,EAASL,EAAS,IAAKM,GAC3BZ,EAASY,EAAM,KAAK,GAAK,CAAC,OAAO,SAASA,EAAM,KAAK,EAAI,EAAI,KAAK,IAAIA,EAAM,MAAO,CAAC,CAAA,EAEhFC,EAAQF,EAAO,OAAO,CAACG,EAAMC,IAAUD,EAAOC,EAAO,CAAC,EAItDC,EAAOT,EAAAA,QACX,IAAMU,cAAYN,CAAM,EAAE,QAASO,GAAW,CAACA,EAAO,WAAYA,EAAO,QAAQ,CAAC,EAGlF,CAACP,EAAO,KAAA,CAAM,CAAA,EAEVQ,EAAWC,oBAAkBJ,EAAM,CAAE,KAAMA,EAAK,IAAI,IAAM,CAAC,EAAG,EAOpE,MAAO,CACL,OANaV,EAAS,IAAI,CAACe,EAAGC,KAAY,CAC1C,WAAYH,EAASG,EAAS,CAAC,GAAK,EACpC,SAAUH,EAASG,EAAS,EAAI,CAAC,GAAK,CAAA,EACtC,EAIA,OAAAb,EAGA,MAAQa,GAAW,CACjBlB,EAAWkB,CAAM,EACjB1B,GAAA,MAAAA,EAAe0B,IAAW,KAAO,KAAOhB,EAASgB,CAAM,GAAK,KAC9D,EACA,QAAAnB,EACA,SAAAH,EACA,QAAUsB,GAAYT,EAAQ,GAAKF,EAAOW,CAAM,GAAK,GAAKT,EAAQ,EAClE,OAAQP,EACR,OAAAL,EACA,MAAAY,EACA,OAAAF,CAAA,CAEJ"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { useState as x, useMemo as r } from "react";
|
|
2
|
+
import { sliceAngles as C } from "./arcs.js";
|
|
3
|
+
import { groupSmallSlices as F } from "./slices.js";
|
|
4
|
+
import { useSeriesToggle as N } from "./useSeriesToggle.js";
|
|
5
|
+
import { useTweenedNumbers as j } from "./useTweenedNumbers.js";
|
|
6
|
+
import { resolveSeriesColors as v } from "../palette/seriesColor.js";
|
|
7
|
+
function y({
|
|
8
|
+
accent: u,
|
|
9
|
+
defaultHiddenSlices: f,
|
|
10
|
+
hiddenSlices: c,
|
|
11
|
+
onHiddenSlicesChange: A,
|
|
12
|
+
onHoverSlice: n,
|
|
13
|
+
otherLabel: m,
|
|
14
|
+
slices: a,
|
|
15
|
+
smallSliceThreshold: i
|
|
16
|
+
}) {
|
|
17
|
+
const { isHidden: d, toggle: S } = N({
|
|
18
|
+
defaultHiddenSeries: f,
|
|
19
|
+
hiddenSeries: c,
|
|
20
|
+
onHiddenSeriesChange: A
|
|
21
|
+
}), [b, M] = x(null), s = r(
|
|
22
|
+
() => F(a, { label: m, threshold: i }),
|
|
23
|
+
[m, a, i]
|
|
24
|
+
), h = r(() => v(s, { accent: u }), [u, s]), o = s.map(
|
|
25
|
+
(e) => d(e.label) || !Number.isFinite(e.value) ? 0 : Math.max(e.value, 0)
|
|
26
|
+
), l = o.reduce((e, t) => e + t, 0), g = r(
|
|
27
|
+
() => C(o).flatMap((e) => [e.startAngle, e.endAngle]),
|
|
28
|
+
// A chave resume os valores: o alvo muda com o numero, nao com a identidade
|
|
29
|
+
// do array, que e outra a cada render.
|
|
30
|
+
[o.join()]
|
|
31
|
+
), p = j(g, { from: g.map(() => 0) });
|
|
32
|
+
return {
|
|
33
|
+
angles: s.map((e, t) => ({
|
|
34
|
+
startAngle: p[t * 2] ?? 0,
|
|
35
|
+
endAngle: p[t * 2 + 1] ?? 0
|
|
36
|
+
})),
|
|
37
|
+
colors: h,
|
|
38
|
+
// A fatia entregue e a **agrupada**: as pequenas ja viraram uma so, entao o
|
|
39
|
+
// indice do anel nao corresponde ao que o consumidor informou.
|
|
40
|
+
focus: (e) => {
|
|
41
|
+
M(e), n == null || n(e === null ? null : s[e] ?? null);
|
|
42
|
+
},
|
|
43
|
+
focused: b,
|
|
44
|
+
isHidden: d,
|
|
45
|
+
ratioOf: (e) => l > 0 ? (o[e] ?? 0) / l : 0,
|
|
46
|
+
slices: s,
|
|
47
|
+
toggle: S,
|
|
48
|
+
total: l,
|
|
49
|
+
values: o
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
export {
|
|
53
|
+
y as useSliceRing
|
|
54
|
+
};
|
|
55
|
+
//# sourceMappingURL=useSliceRing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSliceRing.js","sources":["../../../../src/components/charts/core/useSliceRing.ts"],"sourcesContent":["import { useMemo, useState } from 'react';\nimport { resolveSeriesColors } from '../palette';\nimport { sliceAngles, type ArcAngles } from './arcs';\nimport { groupSmallSlices, type ChartSlice } from './slices';\nimport { useSeriesToggle } from './useSeriesToggle';\nimport { useTweenedNumbers } from './useTweenedNumbers';\n\nexport interface UseSliceRingOptions {\n accent?: string;\n defaultHiddenSlices?: readonly string[];\n hiddenSlices?: readonly string[];\n onHiddenSlicesChange?: (hidden: readonly string[]) => void;\n /** Fatia sob o ponteiro, ja agrupada, ou `null` ao sair dela. */\n onHoverSlice?: (slice: ChartSlice | null) => void;\n otherLabel: string;\n slices: readonly ChartSlice[];\n smallSliceThreshold: number;\n}\n\nexport interface SliceRing {\n angles: readonly ArcAngles[];\n colors: readonly string[];\n focus: (index: number | null) => void;\n focused: number | null;\n isHidden: (label: string) => boolean;\n ratioOf: (index: number) => number;\n slices: readonly ChartSlice[];\n toggle: (label: string) => void;\n total: number;\n values: readonly number[];\n}\n\n/**\n * O anel repartido: fatias pequenas ja reunidas, cores resolvidas, valores das\n * fatias ligadas e os angulos em movimento. E o que `ChartPie` e `ChartDonut`\n * compartilham — o anel, nao o componente.\n */\nexport function useSliceRing({\n accent,\n defaultHiddenSlices,\n hiddenSlices,\n onHiddenSlicesChange,\n onHoverSlice,\n otherLabel,\n slices,\n smallSliceThreshold,\n}: UseSliceRingOptions): SliceRing {\n const { isHidden, toggle } = useSeriesToggle({\n defaultHiddenSeries: defaultHiddenSlices,\n hiddenSeries: hiddenSlices,\n onHiddenSeriesChange: onHiddenSlicesChange,\n });\n const [focused, setFocused] = useState<number | null>(null);\n\n const reunidas = useMemo(\n () => groupSmallSlices(slices, { label: otherLabel, threshold: smallSliceThreshold }),\n [otherLabel, slices, smallSliceThreshold],\n );\n\n // A cor sai da lista inteira, e nao das visiveis: desligar uma fatia nao pode\n // repintar as demais.\n const colors = useMemo(() => resolveSeriesColors(reunidas, { accent }), [accent, reunidas]);\n\n const values = reunidas.map((fatia) =>\n isHidden(fatia.label) || !Number.isFinite(fatia.value) ? 0 : Math.max(fatia.value, 0),\n );\n const total = values.reduce((soma, valor) => soma + valor, 0);\n\n // Os angulos caminham ate o alvo, entao desligar uma fatia reparte o anel em\n // movimento. Partindo de zero, o anel tambem varre ao aparecer.\n const alvo = useMemo(\n () => sliceAngles(values).flatMap((angulo) => [angulo.startAngle, angulo.endAngle]),\n // A chave resume os valores: o alvo muda com o numero, nao com a identidade\n // do array, que e outra a cada render.\n [values.join()],\n );\n const animados = useTweenedNumbers(alvo, { from: alvo.map(() => 0) });\n\n const angles = reunidas.map((_, indice) => ({\n startAngle: animados[indice * 2] ?? 0,\n endAngle: animados[indice * 2 + 1] ?? 0,\n }));\n\n return {\n angles,\n colors,\n // A fatia entregue e a **agrupada**: as pequenas ja viraram uma so, entao o\n // indice do anel nao corresponde ao que o consumidor informou.\n focus: (indice) => {\n setFocused(indice);\n onHoverSlice?.(indice === null ? null : reunidas[indice] ?? null);\n },\n focused,\n isHidden,\n ratioOf: (indice) => (total > 0 ? (values[indice] ?? 0) / total : 0),\n slices: reunidas,\n toggle,\n total,\n values,\n };\n}\n"],"names":["useSliceRing","accent","defaultHiddenSlices","hiddenSlices","onHiddenSlicesChange","onHoverSlice","otherLabel","slices","smallSliceThreshold","isHidden","toggle","useSeriesToggle","focused","setFocused","useState","reunidas","useMemo","groupSmallSlices","colors","resolveSeriesColors","values","fatia","total","soma","valor","alvo","sliceAngles","angulo","animados","useTweenedNumbers","_","indice"],"mappings":";;;;;;AAqCO,SAASA,EAAa;AAAA,EAC3B,QAAAC;AAAA,EACA,qBAAAC;AAAA,EACA,cAAAC;AAAA,EACA,sBAAAC;AAAA,EACA,cAAAC;AAAA,EACA,YAAAC;AAAA,EACA,QAAAC;AAAA,EACA,qBAAAC;AACF,GAAmC;AACjC,QAAM,EAAE,UAAAC,GAAU,QAAAC,EAAA,IAAWC,EAAgB;AAAA,IAC3C,qBAAqBT;AAAA,IACrB,cAAcC;AAAA,IACd,sBAAsBC;AAAA,EAAA,CACvB,GACK,CAACQ,GAASC,CAAU,IAAIC,EAAwB,IAAI,GAEpDC,IAAWC;AAAA,IACf,MAAMC,EAAiBV,GAAQ,EAAE,OAAOD,GAAY,WAAWE,GAAqB;AAAA,IACpF,CAACF,GAAYC,GAAQC,CAAmB;AAAA,EAAA,GAKpCU,IAASF,EAAQ,MAAMG,EAAoBJ,GAAU,EAAE,QAAAd,EAAA,CAAQ,GAAG,CAACA,GAAQc,CAAQ,CAAC,GAEpFK,IAASL,EAAS;AAAA,IAAI,CAACM,MAC3BZ,EAASY,EAAM,KAAK,KAAK,CAAC,OAAO,SAASA,EAAM,KAAK,IAAI,IAAI,KAAK,IAAIA,EAAM,OAAO,CAAC;AAAA,EAAA,GAEhFC,IAAQF,EAAO,OAAO,CAACG,GAAMC,MAAUD,IAAOC,GAAO,CAAC,GAItDC,IAAOT;AAAA,IACX,MAAMU,EAAYN,CAAM,EAAE,QAAQ,CAACO,MAAW,CAACA,EAAO,YAAYA,EAAO,QAAQ,CAAC;AAAA;AAAA;AAAA,IAGlF,CAACP,EAAO,KAAA,CAAM;AAAA,EAAA,GAEVQ,IAAWC,EAAkBJ,GAAM,EAAE,MAAMA,EAAK,IAAI,MAAM,CAAC,GAAG;AAOpE,SAAO;AAAA,IACL,QANaV,EAAS,IAAI,CAACe,GAAGC,OAAY;AAAA,MAC1C,YAAYH,EAASG,IAAS,CAAC,KAAK;AAAA,MACpC,UAAUH,EAASG,IAAS,IAAI,CAAC,KAAK;AAAA,IAAA,EACtC;AAAA,IAIA,QAAAb;AAAA;AAAA;AAAA,IAGA,OAAO,CAACa,MAAW;AACjB,MAAAlB,EAAWkB,CAAM,GACjB1B,KAAA,QAAAA,EAAe0B,MAAW,OAAO,OAAOhB,EAASgB,CAAM,KAAK;AAAA,IAC9D;AAAA,IACA,SAAAnB;AAAA,IACA,UAAAH;AAAA,IACA,SAAS,CAACsB,MAAYT,IAAQ,KAAKF,EAAOW,CAAM,KAAK,KAAKT,IAAQ;AAAA,IAClE,QAAQP;AAAA,IACR,QAAAL;AAAA,IACA,OAAAY;AAAA,IACA,QAAAF;AAAA,EAAA;AAEJ;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react"),b=320;function q(){return typeof matchMedia=="function"&&!matchMedia("(prefers-reduced-motion: reduce)").matches}function w(e){return 1-(1-e)**3}function M(e,{duration:t=b,from:r}={}){const[f,d]=o.useState(r??e),s=o.useRef(r??e),l=e.join(",");return o.useEffect(()=>{const u=s.current,i=n=>{s.current=n,d(n)};if(u.length!==e.length||t<=0||!q()){i(e);return}const h=performance.now();let c=0;const a=()=>{const n=Math.min((performance.now()-h)/t,1),p=w(n);i(u.map((m,A)=>m+(e[A]-m)*p)),n<1&&(c=requestAnimationFrame(a))};return c=requestAnimationFrame(a),()=>cancelAnimationFrame(c)},[l,t]),f}exports.useTweenedNumbers=M;
|
|
2
|
+
//# sourceMappingURL=useTweenedNumbers.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTweenedNumbers.cjs","sources":["../../../../src/components/charts/core/useTweenedNumbers.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\n/**\n * Duracao do movimento dos dados. Ela e mais longa que os tokens de `speed`,\n * que medem resposta a um gesto: aqui o olho precisa acompanhar uma barra\n * mudando de altura, nao apenas notar que algo respondeu.\n */\nconst DURACAO = 320;\n\n/**\n * Sem `matchMedia` nao ha navegador para animar, e sem preferencia conhecida o\n * salto e a escolha segura. Isso tambem mantem o resultado deterministico fora\n * do navegador, onde nao existe quadro a quadro.\n */\nfunction podeAnimar() {\n return typeof matchMedia === 'function' && !matchMedia('(prefers-reduced-motion: reduce)').matches;\n}\n\n/** Desacelera no fim, para o valor chegar ao alvo sem parecer que bateu nele. */\nfunction suavizar(t: number) {\n return 1 - (1 - t) ** 3;\n}\n\n/**\n * Numeros que caminham ate o alvo em vez de saltar. Animar o dominio de uma\n * escala move o grafico inteiro — barras, curvas, grade e marcas do eixo — com\n * uma unica animacao, em vez de uma por marca.\n *\n * Quando a quantidade de numeros muda nao existe par para interpolar, e o valor\n * assume o alvo de imediato.\n */\nexport interface TweenOptions {\n duration?: number;\n /** Ponto de partida do primeiro quadro, para o grafico entrar em vez de surgir pronto. */\n from?: readonly number[];\n}\n\nexport function useTweenedNumbers(target: readonly number[], { duration = DURACAO, from }: TweenOptions = {}) {\n const [valores, setValores] = useState(from ?? target);\n const atual = useRef(from ?? target);\n\n // A chave resume os numeros: o efeito reage ao valor, e nao a identidade do\n // array, que e outra a cada render.\n const chave = target.join(',');\n\n useEffect(() => {\n const inicio = atual.current;\n\n const assumir = (proximos: readonly number[]) => {\n atual.current = proximos;\n setValores(proximos);\n };\n\n if (inicio.length !== target.length || duration <= 0 || !podeAnimar()) {\n assumir(target);\n return;\n }\n\n const comeco = performance.now();\n let quadro = 0;\n\n const passo = () => {\n const decorrido = Math.min((performance.now() - comeco) / duration, 1);\n const fator = suavizar(decorrido);\n\n assumir(inicio.map((valor, indice) => valor + (target[indice] - valor) * fator));\n\n if (decorrido < 1) {\n quadro = requestAnimationFrame(passo);\n }\n };\n\n quadro = requestAnimationFrame(passo);\n\n return () => cancelAnimationFrame(quadro);\n }, [chave, duration]);\n\n return valores;\n}\n"],"names":["DURACAO","podeAnimar","suavizar","t","useTweenedNumbers","target","duration","from","valores","setValores","useState","atual","useRef","chave","useEffect","inicio","assumir","proximos","comeco","quadro","passo","decorrido","fator","valor","indice"],"mappings":"yGAOMA,EAAU,IAOhB,SAASC,GAAa,CACpB,OAAO,OAAO,YAAe,YAAc,CAAC,WAAW,kCAAkC,EAAE,OAC7F,CAGA,SAASC,EAASC,EAAW,CAC3B,MAAO,IAAK,EAAIA,IAAM,CACxB,CAgBO,SAASC,EAAkBC,EAA2B,CAAE,SAAAC,EAAWN,EAAS,KAAAO,CAAA,EAAuB,GAAI,CAC5G,KAAM,CAACC,EAASC,CAAU,EAAIC,EAAAA,SAASH,GAAQF,CAAM,EAC/CM,EAAQC,EAAAA,OAAOL,GAAQF,CAAM,EAI7BQ,EAAQR,EAAO,KAAK,GAAG,EAE7BS,OAAAA,EAAAA,UAAU,IAAM,CACd,MAAMC,EAASJ,EAAM,QAEfK,EAAWC,GAAgC,CAC/CN,EAAM,QAAUM,EAChBR,EAAWQ,CAAQ,CACrB,EAEA,GAAIF,EAAO,SAAWV,EAAO,QAAUC,GAAY,GAAK,CAACL,IAAc,CACrEe,EAAQX,CAAM,EACd,MACF,CAEA,MAAMa,EAAS,YAAY,IAAA,EAC3B,IAAIC,EAAS,EAEb,MAAMC,EAAQ,IAAM,CAClB,MAAMC,EAAY,KAAK,KAAK,YAAY,MAAQH,GAAUZ,EAAU,CAAC,EAC/DgB,EAAQpB,EAASmB,CAAS,EAEhCL,EAAQD,EAAO,IAAI,CAACQ,EAAOC,IAAWD,GAASlB,EAAOmB,CAAM,EAAID,GAASD,CAAK,CAAC,EAE3ED,EAAY,IACdF,EAAS,sBAAsBC,CAAK,EAExC,EAEA,OAAAD,EAAS,sBAAsBC,CAAK,EAE7B,IAAM,qBAAqBD,CAAM,CAC1C,EAAG,CAACN,EAAOP,CAAQ,CAAC,EAEbE,CACT"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { useState as A, useRef as q, useEffect as w } from "react";
|
|
2
|
+
const F = 320;
|
|
3
|
+
function M() {
|
|
4
|
+
return typeof matchMedia == "function" && !matchMedia("(prefers-reduced-motion: reduce)").matches;
|
|
5
|
+
}
|
|
6
|
+
function v(e) {
|
|
7
|
+
return 1 - (1 - e) ** 3;
|
|
8
|
+
}
|
|
9
|
+
function b(e, { duration: o = F, from: t } = {}) {
|
|
10
|
+
const [m, f] = A(t ?? e), r = q(t ?? e), d = e.join(",");
|
|
11
|
+
return w(() => {
|
|
12
|
+
const s = r.current, i = (n) => {
|
|
13
|
+
r.current = n, f(n);
|
|
14
|
+
};
|
|
15
|
+
if (s.length !== e.length || o <= 0 || !M()) {
|
|
16
|
+
i(e);
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
const p = performance.now();
|
|
20
|
+
let c = 0;
|
|
21
|
+
const u = () => {
|
|
22
|
+
const n = Math.min((performance.now() - p) / o, 1), h = v(n);
|
|
23
|
+
i(s.map((a, l) => a + (e[l] - a) * h)), n < 1 && (c = requestAnimationFrame(u));
|
|
24
|
+
};
|
|
25
|
+
return c = requestAnimationFrame(u), () => cancelAnimationFrame(c);
|
|
26
|
+
}, [d, o]), m;
|
|
27
|
+
}
|
|
28
|
+
export {
|
|
29
|
+
b as useTweenedNumbers
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=useTweenedNumbers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTweenedNumbers.js","sources":["../../../../src/components/charts/core/useTweenedNumbers.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\n/**\n * Duracao do movimento dos dados. Ela e mais longa que os tokens de `speed`,\n * que medem resposta a um gesto: aqui o olho precisa acompanhar uma barra\n * mudando de altura, nao apenas notar que algo respondeu.\n */\nconst DURACAO = 320;\n\n/**\n * Sem `matchMedia` nao ha navegador para animar, e sem preferencia conhecida o\n * salto e a escolha segura. Isso tambem mantem o resultado deterministico fora\n * do navegador, onde nao existe quadro a quadro.\n */\nfunction podeAnimar() {\n return typeof matchMedia === 'function' && !matchMedia('(prefers-reduced-motion: reduce)').matches;\n}\n\n/** Desacelera no fim, para o valor chegar ao alvo sem parecer que bateu nele. */\nfunction suavizar(t: number) {\n return 1 - (1 - t) ** 3;\n}\n\n/**\n * Numeros que caminham ate o alvo em vez de saltar. Animar o dominio de uma\n * escala move o grafico inteiro — barras, curvas, grade e marcas do eixo — com\n * uma unica animacao, em vez de uma por marca.\n *\n * Quando a quantidade de numeros muda nao existe par para interpolar, e o valor\n * assume o alvo de imediato.\n */\nexport interface TweenOptions {\n duration?: number;\n /** Ponto de partida do primeiro quadro, para o grafico entrar em vez de surgir pronto. */\n from?: readonly number[];\n}\n\nexport function useTweenedNumbers(target: readonly number[], { duration = DURACAO, from }: TweenOptions = {}) {\n const [valores, setValores] = useState(from ?? target);\n const atual = useRef(from ?? target);\n\n // A chave resume os numeros: o efeito reage ao valor, e nao a identidade do\n // array, que e outra a cada render.\n const chave = target.join(',');\n\n useEffect(() => {\n const inicio = atual.current;\n\n const assumir = (proximos: readonly number[]) => {\n atual.current = proximos;\n setValores(proximos);\n };\n\n if (inicio.length !== target.length || duration <= 0 || !podeAnimar()) {\n assumir(target);\n return;\n }\n\n const comeco = performance.now();\n let quadro = 0;\n\n const passo = () => {\n const decorrido = Math.min((performance.now() - comeco) / duration, 1);\n const fator = suavizar(decorrido);\n\n assumir(inicio.map((valor, indice) => valor + (target[indice] - valor) * fator));\n\n if (decorrido < 1) {\n quadro = requestAnimationFrame(passo);\n }\n };\n\n quadro = requestAnimationFrame(passo);\n\n return () => cancelAnimationFrame(quadro);\n }, [chave, duration]);\n\n return valores;\n}\n"],"names":["DURACAO","podeAnimar","suavizar","t","useTweenedNumbers","target","duration","from","valores","setValores","useState","atual","useRef","chave","useEffect","inicio","assumir","proximos","comeco","quadro","passo","decorrido","fator","valor","indice"],"mappings":";AAOA,MAAMA,IAAU;AAOhB,SAASC,IAAa;AACpB,SAAO,OAAO,cAAe,cAAc,CAAC,WAAW,kCAAkC,EAAE;AAC7F;AAGA,SAASC,EAASC,GAAW;AAC3B,SAAO,KAAK,IAAIA,MAAM;AACxB;AAgBO,SAASC,EAAkBC,GAA2B,EAAE,UAAAC,IAAWN,GAAS,MAAAO,EAAA,IAAuB,IAAI;AAC5G,QAAM,CAACC,GAASC,CAAU,IAAIC,EAASH,KAAQF,CAAM,GAC/CM,IAAQC,EAAOL,KAAQF,CAAM,GAI7BQ,IAAQR,EAAO,KAAK,GAAG;AAE7B,SAAAS,EAAU,MAAM;AACd,UAAMC,IAASJ,EAAM,SAEfK,IAAU,CAACC,MAAgC;AAC/C,MAAAN,EAAM,UAAUM,GAChBR,EAAWQ,CAAQ;AAAA,IACrB;AAEA,QAAIF,EAAO,WAAWV,EAAO,UAAUC,KAAY,KAAK,CAACL,KAAc;AACrE,MAAAe,EAAQX,CAAM;AACd;AAAA,IACF;AAEA,UAAMa,IAAS,YAAY,IAAA;AAC3B,QAAIC,IAAS;AAEb,UAAMC,IAAQ,MAAM;AAClB,YAAMC,IAAY,KAAK,KAAK,YAAY,QAAQH,KAAUZ,GAAU,CAAC,GAC/DgB,IAAQpB,EAASmB,CAAS;AAEhC,MAAAL,EAAQD,EAAO,IAAI,CAACQ,GAAOC,MAAWD,KAASlB,EAAOmB,CAAM,IAAID,KAASD,CAAK,CAAC,GAE3ED,IAAY,MACdF,IAAS,sBAAsBC,CAAK;AAAA,IAExC;AAEA,WAAAD,IAAS,sBAAsBC,CAAK,GAE7B,MAAM,qBAAqBD,CAAM;AAAA,EAC1C,GAAG,CAACN,GAAOP,CAAQ,CAAC,GAEbE;AACT;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=6;function c(t){return Array.from({length:Math.max(t,0)},(r,e)=>`var(--pl-chart-series-${e%n+1})`)}const a={"#49619c":1,"#f26b35":2,"#6e2a92":3};function l(t,r){if(r<=0)return[];const e=a[t.trim().toLowerCase()],s=c(n).filter((i,o)=>e===void 0||o+1!==e);return[t,...Array.from({length:r-1},(i,o)=>s[o%s.length])]}exports.SERIES_TOKENS=n;exports.paletteWithAccent=l;exports.seriesColors=c;
|
|
2
|
+
//# sourceMappingURL=palette.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"palette.cjs","sources":["../../../../src/components/charts/palette/palette.ts"],"sourcesContent":["/** Quantidade de series que a paleta do Design System cobre. */\nexport const SERIES_TOKENS = 6;\n\n/**\n * Cores das series na paleta do Design System, como variaveis CSS. Resolvem\n * tema claro e escuro sozinhas, e a serie N usa sempre o mesmo token, para que\n * um filtro que reduza as series nao repinte as restantes.\n */\nexport function seriesColors(quantidade: number) {\n return Array.from(\n { length: Math.max(quantidade, 0) },\n (_, indice) => `var(--pl-chart-series-${(indice % SERIES_TOKENS) + 1})`,\n );\n}\n\n/** Cores de marca que ja ocupam uma posicao fixa na paleta do sistema. */\nconst POSICAO_NA_PALETA: Record<string, number> = {\n '#49619c': 1,\n '#f26b35': 2,\n '#6e2a92': 3,\n};\n\n/**\n * Paleta que abre com a cor escolhida pela aplicacao e segue com as do Design\n * System, saltando a posicao que repetiria essa cor.\n *\n * Gerar as demais a partir da cor escolhida foi medido e descartado: girar a\n * matiz em passos iguais nao separa as series de forma perceptivel, e a paleta\n * resultante reprova na verificacao de deficiencia de visao de cores.\n */\nexport function paletteWithAccent(accent: string, quantidade: number) {\n if (quantidade <= 0) {\n return [];\n }\n\n const ocupada = POSICAO_NA_PALETA[accent.trim().toLowerCase()];\n const restantes = seriesColors(SERIES_TOKENS).filter(\n (_, indice) => ocupada === undefined || indice + 1 !== ocupada,\n );\n\n return [accent, ...Array.from({ length: quantidade - 1 }, (_, i) => restantes[i % restantes.length])];\n}\n"],"names":["SERIES_TOKENS","seriesColors","quantidade","_","indice","POSICAO_NA_PALETA","paletteWithAccent","accent","ocupada","restantes","i"],"mappings":"gFACO,MAAMA,EAAgB,EAOtB,SAASC,EAAaC,EAAoB,CAC/C,OAAO,MAAM,KACX,CAAE,OAAQ,KAAK,IAAIA,EAAY,CAAC,CAAA,EAChC,CAACC,EAAGC,IAAW,yBAA0BA,EAASJ,EAAiB,CAAC,GAAA,CAExE,CAGA,MAAMK,EAA4C,CAChD,UAAW,EACX,UAAW,EACX,UAAW,CACb,EAUO,SAASC,EAAkBC,EAAgBL,EAAoB,CACpE,GAAIA,GAAc,EAChB,MAAO,CAAA,EAGT,MAAMM,EAAUH,EAAkBE,EAAO,KAAA,EAAO,aAAa,EACvDE,EAAYR,EAAaD,CAAa,EAAE,OAC5C,CAACG,EAAGC,IAAWI,IAAY,QAAaJ,EAAS,IAAMI,CAAA,EAGzD,MAAO,CAACD,EAAQ,GAAG,MAAM,KAAK,CAAE,OAAQL,EAAa,CAAA,EAAK,CAACC,EAAGO,IAAMD,EAAUC,EAAID,EAAU,MAAM,CAAC,CAAC,CACtG"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
const a = 6;
|
|
2
|
+
function E(r) {
|
|
3
|
+
return Array.from(
|
|
4
|
+
{ length: Math.max(r, 0) },
|
|
5
|
+
(e, t) => `var(--pl-chart-series-${t % 6 + 1})`
|
|
6
|
+
);
|
|
7
|
+
}
|
|
8
|
+
const S = {
|
|
9
|
+
"#49619c": 1,
|
|
10
|
+
"#f26b35": 2,
|
|
11
|
+
"#6e2a92": 3
|
|
12
|
+
};
|
|
13
|
+
function c(r, e) {
|
|
14
|
+
if (e <= 0)
|
|
15
|
+
return [];
|
|
16
|
+
const t = S[r.trim().toLowerCase()], n = E(6).filter(
|
|
17
|
+
(s, o) => t === void 0 || o + 1 !== t
|
|
18
|
+
);
|
|
19
|
+
return [r, ...Array.from({ length: e - 1 }, (s, o) => n[o % n.length])];
|
|
20
|
+
}
|
|
21
|
+
export {
|
|
22
|
+
a as SERIES_TOKENS,
|
|
23
|
+
c as paletteWithAccent,
|
|
24
|
+
E as seriesColors
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=palette.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"palette.js","sources":["../../../../src/components/charts/palette/palette.ts"],"sourcesContent":["/** Quantidade de series que a paleta do Design System cobre. */\nexport const SERIES_TOKENS = 6;\n\n/**\n * Cores das series na paleta do Design System, como variaveis CSS. Resolvem\n * tema claro e escuro sozinhas, e a serie N usa sempre o mesmo token, para que\n * um filtro que reduza as series nao repinte as restantes.\n */\nexport function seriesColors(quantidade: number) {\n return Array.from(\n { length: Math.max(quantidade, 0) },\n (_, indice) => `var(--pl-chart-series-${(indice % SERIES_TOKENS) + 1})`,\n );\n}\n\n/** Cores de marca que ja ocupam uma posicao fixa na paleta do sistema. */\nconst POSICAO_NA_PALETA: Record<string, number> = {\n '#49619c': 1,\n '#f26b35': 2,\n '#6e2a92': 3,\n};\n\n/**\n * Paleta que abre com a cor escolhida pela aplicacao e segue com as do Design\n * System, saltando a posicao que repetiria essa cor.\n *\n * Gerar as demais a partir da cor escolhida foi medido e descartado: girar a\n * matiz em passos iguais nao separa as series de forma perceptivel, e a paleta\n * resultante reprova na verificacao de deficiencia de visao de cores.\n */\nexport function paletteWithAccent(accent: string, quantidade: number) {\n if (quantidade <= 0) {\n return [];\n }\n\n const ocupada = POSICAO_NA_PALETA[accent.trim().toLowerCase()];\n const restantes = seriesColors(SERIES_TOKENS).filter(\n (_, indice) => ocupada === undefined || indice + 1 !== ocupada,\n );\n\n return [accent, ...Array.from({ length: quantidade - 1 }, (_, i) => restantes[i % restantes.length])];\n}\n"],"names":["SERIES_TOKENS","seriesColors","quantidade","_","indice","POSICAO_NA_PALETA","paletteWithAccent","accent","ocupada","restantes","i"],"mappings":"AACO,MAAMA,IAAgB;AAOtB,SAASC,EAAaC,GAAoB;AAC/C,SAAO,MAAM;AAAA,IACX,EAAE,QAAQ,KAAK,IAAIA,GAAY,CAAC,EAAA;AAAA,IAChC,CAACC,GAAGC,MAAW,yBAA0BA,IAAS,IAAiB,CAAC;AAAA,EAAA;AAExE;AAGA,MAAMC,IAA4C;AAAA,EAChD,WAAW;AAAA,EACX,WAAW;AAAA,EACX,WAAW;AACb;AAUO,SAASC,EAAkBC,GAAgBL,GAAoB;AACpE,MAAIA,KAAc;AAChB,WAAO,CAAA;AAGT,QAAMM,IAAUH,EAAkBE,EAAO,KAAA,EAAO,aAAa,GACvDE,IAAYR,EAAa,CAAa,EAAE;AAAA,IAC5C,CAACE,GAAGC,MAAWI,MAAY,UAAaJ,IAAS,MAAMI;AAAA,EAAA;AAGzD,SAAO,CAACD,GAAQ,GAAG,MAAM,KAAK,EAAE,QAAQL,IAAa,EAAA,GAAK,CAACC,GAAGO,MAAMD,EAAUC,IAAID,EAAU,MAAM,CAAC,CAAC;AACtG;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("./palette.cjs"),s={positive:"var(--pl-chart-positive)",negative:"var(--pl-chart-negative)",warning:"var(--pl-chart-warning)",neutral:"var(--pl-chart-neutral)"},u=/^var\(--pl-chart-(series-\d|positive|negative|warning|neutral)\)$/,p=Math.sqrt(1.05*.05)-.05;function v(e){const n=e.trim().replace(/^#([0-9a-f])([0-9a-f])([0-9a-f])$/i,"#$1$1$2$2$3$3"),r=/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i.exec(n);if(!r)return;const[a,o,t]=r.slice(1).map(c=>{const l=parseInt(c,16)/255;return l<=.04045?l/12.92:((l+.055)/1.055)**2.4});return .2126*a+.7152*o+.0722*t}function f(e){var a;const n=(a=u.exec(e.trim()))==null?void 0:a[1];if(n)return`var(--pl-chart-on-${n})`;const r=v(e);return r!==void 0&&r>p?"var(--pl-chart-on-light)":"var(--pl-chart-on-dark)"}function E(e,{accent:n}={}){const r=e.filter(t=>!t.color&&!t.intent).length,a=n?i.paletteWithAccent(n,r):i.seriesColors(r);let o=0;return e.map(t=>{if(t.color)return t.color;if(t.intent)return s[t.intent];const c=a[o]??i.seriesColors(i.SERIES_TOKENS)[o%i.SERIES_TOKENS];return o+=1,c})}exports.INTENT_TOKENS=s;exports.resolveSeriesColors=E;exports.textColorOn=f;
|
|
2
|
+
//# sourceMappingURL=seriesColor.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seriesColor.cjs","sources":["../../../../src/components/charts/palette/seriesColor.ts"],"sourcesContent":["import { SERIES_TOKENS, paletteWithAccent, seriesColors } from './palette';\n\n/**\n * Papel da serie quando a cor carrega significado. Uma serie com intencao nao\n * entra na rotacao categorica: pintar despesa com a cor de tema do usuario\n * trocaria o significado da barra a cada usuario.\n */\nexport type SeriesIntent = 'positive' | 'negative' | 'warning' | 'neutral';\n\nexport interface SeriesAppearance {\n color?: string;\n intent?: SeriesIntent;\n}\n\nexport interface ResolveSeriesColorsOptions {\n accent?: string;\n}\n\n/** Token de cada intencao. A paleta e quem detem esse mapa. */\nexport const INTENT_TOKENS: Record<SeriesIntent, string> = {\n positive: 'var(--pl-chart-positive)',\n negative: 'var(--pl-chart-negative)',\n warning: 'var(--pl-chart-warning)',\n neutral: 'var(--pl-chart-neutral)',\n};\n\n/** Cores da paleta e das intencoes, que tem token de texto proprio, medido em cada tema. */\nconst COR_COM_TEXTO_PROPRIO = /^var\\(--pl-chart-(series-\\d|positive|negative|warning|neutral)\\)$/;\n\n/** Luminancia em que branco e preto medem o mesmo contraste; acima dela, o preto mede mais. */\nconst LUMINANCIA_DE_EMPATE = Math.sqrt(1.05 * 0.05) - 0.05;\n\nfunction luminanciaDoHexadecimal(cor: string) {\n const hexadecimal = cor.trim().replace(/^#([0-9a-f])([0-9a-f])([0-9a-f])$/i, '#$1$1$2$2$3$3');\n const canais = /^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i.exec(hexadecimal);\n\n if (!canais) {\n return undefined;\n }\n\n const [r, g, b] = canais.slice(1).map((canal) => {\n const valor = parseInt(canal, 16) / 255;\n\n return valor <= 0.04045 ? valor / 12.92 : ((valor + 0.055) / 1.055) ** 2.4;\n });\n\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n}\n\n/**\n * Cor do texto escrito sobre a marca, como a porcentagem dentro da fatia. A cor\n * informada em hexadecimal e medida; em outro formato, o texto fica branco.\n */\nexport function textColorOn(color: string) {\n const token = COR_COM_TEXTO_PROPRIO.exec(color.trim())?.[1];\n\n if (token) {\n return `var(--pl-chart-on-${token})`;\n }\n\n const luminancia = luminanciaDoHexadecimal(color);\n\n return luminancia !== undefined && luminancia > LUMINANCIA_DE_EMPATE\n ? 'var(--pl-chart-on-light)'\n : 'var(--pl-chart-on-dark)';\n}\n\n/**\n * Cor de cada serie, em tres niveis de precedencia: a cor informada pelo\n * implementador vence; depois a intencao semantica; por fim a paleta\n * categorica, que abre com a cor de tema quando houver.\n *\n * Series com cor ou intencao nao consomem posicao da paleta, para que as\n * categoricas sigam a ordem sem deixar buracos.\n */\nexport function resolveSeriesColors(\n series: readonly SeriesAppearance[],\n { accent }: ResolveSeriesColorsOptions = {},\n) {\n const categoricas = series.filter((serie) => !serie.color && !serie.intent).length;\n const paleta = accent ? paletteWithAccent(accent, categoricas) : seriesColors(categoricas);\n let proxima = 0;\n\n return series.map((serie) => {\n if (serie.color) {\n return serie.color;\n }\n\n if (serie.intent) {\n return INTENT_TOKENS[serie.intent];\n }\n\n const cor = paleta[proxima] ?? seriesColors(SERIES_TOKENS)[proxima % SERIES_TOKENS];\n proxima += 1;\n\n return cor;\n });\n}\n"],"names":["INTENT_TOKENS","COR_COM_TEXTO_PROPRIO","LUMINANCIA_DE_EMPATE","luminanciaDoHexadecimal","cor","hexadecimal","canais","r","g","b","canal","valor","textColorOn","color","token","_a","luminancia","resolveSeriesColors","series","accent","categoricas","serie","paleta","paletteWithAccent","seriesColors","proxima","SERIES_TOKENS"],"mappings":"iHAmBaA,EAA8C,CACzD,SAAU,2BACV,SAAU,2BACV,QAAS,0BACT,QAAS,yBACX,EAGMC,EAAwB,oEAGxBC,EAAuB,KAAK,KAAK,KAAO,GAAI,EAAI,IAEtD,SAASC,EAAwBC,EAAa,CAC5C,MAAMC,EAAcD,EAAI,KAAA,EAAO,QAAQ,qCAAsC,eAAe,EACtFE,EAAS,8CAA8C,KAAKD,CAAW,EAE7E,GAAI,CAACC,EACH,OAGF,KAAM,CAACC,EAAGC,EAAGC,CAAC,EAAIH,EAAO,MAAM,CAAC,EAAE,IAAKI,GAAU,CAC/C,MAAMC,EAAQ,SAASD,EAAO,EAAE,EAAI,IAEpC,OAAOC,GAAS,OAAUA,EAAQ,QAAUA,EAAQ,MAAS,QAAU,GACzE,CAAC,EAED,MAAO,OAASJ,EAAI,MAASC,EAAI,MAASC,CAC5C,CAMO,SAASG,EAAYC,EAAe,OACzC,MAAMC,GAAQC,EAAAd,EAAsB,KAAKY,EAAM,KAAA,CAAM,IAAvC,YAAAE,EAA2C,GAEzD,GAAID,EACF,MAAO,qBAAqBA,CAAK,IAGnC,MAAME,EAAab,EAAwBU,CAAK,EAEhD,OAAOG,IAAe,QAAaA,EAAad,EAC5C,2BACA,yBACN,CAUO,SAASe,EACdC,EACA,CAAE,OAAAC,CAAA,EAAuC,CAAA,EACzC,CACA,MAAMC,EAAcF,EAAO,OAAQG,GAAU,CAACA,EAAM,OAAS,CAACA,EAAM,MAAM,EAAE,OACtEC,EAASH,EAASI,EAAAA,kBAAkBJ,EAAQC,CAAW,EAAII,EAAAA,aAAaJ,CAAW,EACzF,IAAIK,EAAU,EAEd,OAAOP,EAAO,IAAKG,GAAU,CAC3B,GAAIA,EAAM,MACR,OAAOA,EAAM,MAGf,GAAIA,EAAM,OACR,OAAOrB,EAAcqB,EAAM,MAAM,EAGnC,MAAMjB,EAAMkB,EAAOG,CAAO,GAAKD,EAAAA,aAAaE,eAAa,EAAED,EAAUC,eAAa,EAClF,OAAAD,GAAW,EAEJrB,CACT,CAAC,CACH"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { paletteWithAccent as p, seriesColors as l, SERIES_TOKENS as s } from "./palette.js";
|
|
2
|
+
const v = {
|
|
3
|
+
positive: "var(--pl-chart-positive)",
|
|
4
|
+
negative: "var(--pl-chart-negative)",
|
|
5
|
+
warning: "var(--pl-chart-warning)",
|
|
6
|
+
neutral: "var(--pl-chart-neutral)"
|
|
7
|
+
}, u = /^var\(--pl-chart-(series-\d|positive|negative|warning|neutral)\)$/, f = Math.sqrt(1.05 * 0.05) - 0.05;
|
|
8
|
+
function h(n) {
|
|
9
|
+
const a = n.trim().replace(/^#([0-9a-f])([0-9a-f])([0-9a-f])$/i, "#$1$1$2$2$3$3"), r = /^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i.exec(a);
|
|
10
|
+
if (!r)
|
|
11
|
+
return;
|
|
12
|
+
const [e, o, t] = r.slice(1).map((i) => {
|
|
13
|
+
const c = parseInt(i, 16) / 255;
|
|
14
|
+
return c <= 0.04045 ? c / 12.92 : ((c + 0.055) / 1.055) ** 2.4;
|
|
15
|
+
});
|
|
16
|
+
return 0.2126 * e + 0.7152 * o + 0.0722 * t;
|
|
17
|
+
}
|
|
18
|
+
function g(n) {
|
|
19
|
+
var e;
|
|
20
|
+
const a = (e = u.exec(n.trim())) == null ? void 0 : e[1];
|
|
21
|
+
if (a)
|
|
22
|
+
return `var(--pl-chart-on-${a})`;
|
|
23
|
+
const r = h(n);
|
|
24
|
+
return r !== void 0 && r > f ? "var(--pl-chart-on-light)" : "var(--pl-chart-on-dark)";
|
|
25
|
+
}
|
|
26
|
+
function $(n, { accent: a } = {}) {
|
|
27
|
+
const r = n.filter((t) => !t.color && !t.intent).length, e = a ? p(a, r) : l(r);
|
|
28
|
+
let o = 0;
|
|
29
|
+
return n.map((t) => {
|
|
30
|
+
if (t.color)
|
|
31
|
+
return t.color;
|
|
32
|
+
if (t.intent)
|
|
33
|
+
return v[t.intent];
|
|
34
|
+
const i = e[o] ?? l(s)[o % s];
|
|
35
|
+
return o += 1, i;
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
export {
|
|
39
|
+
v as INTENT_TOKENS,
|
|
40
|
+
$ as resolveSeriesColors,
|
|
41
|
+
g as textColorOn
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=seriesColor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seriesColor.js","sources":["../../../../src/components/charts/palette/seriesColor.ts"],"sourcesContent":["import { SERIES_TOKENS, paletteWithAccent, seriesColors } from './palette';\n\n/**\n * Papel da serie quando a cor carrega significado. Uma serie com intencao nao\n * entra na rotacao categorica: pintar despesa com a cor de tema do usuario\n * trocaria o significado da barra a cada usuario.\n */\nexport type SeriesIntent = 'positive' | 'negative' | 'warning' | 'neutral';\n\nexport interface SeriesAppearance {\n color?: string;\n intent?: SeriesIntent;\n}\n\nexport interface ResolveSeriesColorsOptions {\n accent?: string;\n}\n\n/** Token de cada intencao. A paleta e quem detem esse mapa. */\nexport const INTENT_TOKENS: Record<SeriesIntent, string> = {\n positive: 'var(--pl-chart-positive)',\n negative: 'var(--pl-chart-negative)',\n warning: 'var(--pl-chart-warning)',\n neutral: 'var(--pl-chart-neutral)',\n};\n\n/** Cores da paleta e das intencoes, que tem token de texto proprio, medido em cada tema. */\nconst COR_COM_TEXTO_PROPRIO = /^var\\(--pl-chart-(series-\\d|positive|negative|warning|neutral)\\)$/;\n\n/** Luminancia em que branco e preto medem o mesmo contraste; acima dela, o preto mede mais. */\nconst LUMINANCIA_DE_EMPATE = Math.sqrt(1.05 * 0.05) - 0.05;\n\nfunction luminanciaDoHexadecimal(cor: string) {\n const hexadecimal = cor.trim().replace(/^#([0-9a-f])([0-9a-f])([0-9a-f])$/i, '#$1$1$2$2$3$3');\n const canais = /^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i.exec(hexadecimal);\n\n if (!canais) {\n return undefined;\n }\n\n const [r, g, b] = canais.slice(1).map((canal) => {\n const valor = parseInt(canal, 16) / 255;\n\n return valor <= 0.04045 ? valor / 12.92 : ((valor + 0.055) / 1.055) ** 2.4;\n });\n\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n}\n\n/**\n * Cor do texto escrito sobre a marca, como a porcentagem dentro da fatia. A cor\n * informada em hexadecimal e medida; em outro formato, o texto fica branco.\n */\nexport function textColorOn(color: string) {\n const token = COR_COM_TEXTO_PROPRIO.exec(color.trim())?.[1];\n\n if (token) {\n return `var(--pl-chart-on-${token})`;\n }\n\n const luminancia = luminanciaDoHexadecimal(color);\n\n return luminancia !== undefined && luminancia > LUMINANCIA_DE_EMPATE\n ? 'var(--pl-chart-on-light)'\n : 'var(--pl-chart-on-dark)';\n}\n\n/**\n * Cor de cada serie, em tres niveis de precedencia: a cor informada pelo\n * implementador vence; depois a intencao semantica; por fim a paleta\n * categorica, que abre com a cor de tema quando houver.\n *\n * Series com cor ou intencao nao consomem posicao da paleta, para que as\n * categoricas sigam a ordem sem deixar buracos.\n */\nexport function resolveSeriesColors(\n series: readonly SeriesAppearance[],\n { accent }: ResolveSeriesColorsOptions = {},\n) {\n const categoricas = series.filter((serie) => !serie.color && !serie.intent).length;\n const paleta = accent ? paletteWithAccent(accent, categoricas) : seriesColors(categoricas);\n let proxima = 0;\n\n return series.map((serie) => {\n if (serie.color) {\n return serie.color;\n }\n\n if (serie.intent) {\n return INTENT_TOKENS[serie.intent];\n }\n\n const cor = paleta[proxima] ?? seriesColors(SERIES_TOKENS)[proxima % SERIES_TOKENS];\n proxima += 1;\n\n return cor;\n });\n}\n"],"names":["INTENT_TOKENS","COR_COM_TEXTO_PROPRIO","LUMINANCIA_DE_EMPATE","luminanciaDoHexadecimal","cor","hexadecimal","canais","r","g","b","canal","valor","textColorOn","color","token","_a","luminancia","resolveSeriesColors","series","accent","categoricas","serie","paleta","paletteWithAccent","seriesColors","proxima","SERIES_TOKENS"],"mappings":";AAmBO,MAAMA,IAA8C;AAAA,EACzD,UAAU;AAAA,EACV,UAAU;AAAA,EACV,SAAS;AAAA,EACT,SAAS;AACX,GAGMC,IAAwB,qEAGxBC,IAAuB,KAAK,KAAK,OAAO,IAAI,IAAI;AAEtD,SAASC,EAAwBC,GAAa;AAC5C,QAAMC,IAAcD,EAAI,KAAA,EAAO,QAAQ,sCAAsC,eAAe,GACtFE,IAAS,8CAA8C,KAAKD,CAAW;AAE7E,MAAI,CAACC;AACH;AAGF,QAAM,CAACC,GAAGC,GAAGC,CAAC,IAAIH,EAAO,MAAM,CAAC,EAAE,IAAI,CAACI,MAAU;AAC/C,UAAMC,IAAQ,SAASD,GAAO,EAAE,IAAI;AAEpC,WAAOC,KAAS,UAAUA,IAAQ,UAAUA,IAAQ,SAAS,UAAU;AAAA,EACzE,CAAC;AAED,SAAO,SAASJ,IAAI,SAASC,IAAI,SAASC;AAC5C;AAMO,SAASG,EAAYC,GAAe;;AACzC,QAAMC,KAAQC,IAAAd,EAAsB,KAAKY,EAAM,KAAA,CAAM,MAAvC,gBAAAE,EAA2C;AAEzD,MAAID;AACF,WAAO,qBAAqBA,CAAK;AAGnC,QAAME,IAAab,EAAwBU,CAAK;AAEhD,SAAOG,MAAe,UAAaA,IAAad,IAC5C,6BACA;AACN;AAUO,SAASe,EACdC,GACA,EAAE,QAAAC,EAAA,IAAuC,CAAA,GACzC;AACA,QAAMC,IAAcF,EAAO,OAAO,CAACG,MAAU,CAACA,EAAM,SAAS,CAACA,EAAM,MAAM,EAAE,QACtEC,IAASH,IAASI,EAAkBJ,GAAQC,CAAW,IAAII,EAAaJ,CAAW;AACzF,MAAIK,IAAU;AAEd,SAAOP,EAAO,IAAI,CAACG,MAAU;AAC3B,QAAIA,EAAM;AACR,aAAOA,EAAM;AAGf,QAAIA,EAAM;AACR,aAAOrB,EAAcqB,EAAM,MAAM;AAGnC,UAAMjB,IAAMkB,EAAOG,CAAO,KAAKD,EAAaE,CAAa,EAAED,IAAUC,CAAa;AAClF,WAAAD,KAAW,GAEJrB;AAAA,EACT,CAAC;AACH;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("d3-scale"),c=require("d3-array");function l(n,{includeZero:t=!0}={}){const i=n.filter(Number.isFinite);if(i.length===0)return{min:0,max:0};const[e=0,r=0]=c.extent(i);return{min:t?Math.min(e,0):e,max:t?Math.max(r,0):r}}function f(n){let t=0,i=0;return n.map(e=>{const r=Number.isFinite(e)?e:0;if(r<0){const s=i;return i+=r,[s,i]}const m=t;return t+=r,[m,t]})}function g(n){return n.length===0?{min:0,max:0}:{min:c.min(n,t=>t.min)??0,max:c.max(n,t=>t.max)??0}}function o({min:n,max:t}){return t>n?-n/(t-n):void 0}function u(n,t,i){return t>i?{min:n.min,max:-n.min*(1-i)/i}:t<i?{min:-n.max*i/(1-i),max:n.max}:n}function d(n,t){const i=o(n),e=o(t);if(i===void 0||e===void 0)return[n,t];const r=Math.max(i,e)/(1+Math.abs(i-e));return[u(n,i,r),u(t,e,r)]}function S({min:n,max:t}){return n===t?[n,n+1]:[n,t]}function p({clamp:n=!1,domain:t,nice:i=!0,range:e}){const r=a.scaleLinear().domain(S(t)).range(e).clamp(n);return i?r.nice():r}function x({domain:n,padding:t=.2,range:i}){return a.scaleBand().domain([...n]).range(i).paddingInner(t).paddingOuter(t/2)}function h({domain:n,padding:t=.5,range:i}){return a.scalePoint().domain([...n]).range(i).padding(t)}function v(n,t){return a.scaleSqrt().domain([0,n>0?n:1]).range(t)}function M(n,t,i){return n.ticks(Math.max(2,Math.min(10,Math.floor(t/64))))}exports.alignZeros=d;exports.bandScale=x;exports.domainOf=l;exports.linearScale=p;exports.mergeDomains=g;exports.pointScale=h;exports.radiusScale=v;exports.stackDiverging=f;exports.ticksFor=M;
|
|
2
|
+
//# sourceMappingURL=scales.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scales.cjs","sources":["../../../../src/components/charts/scales/scales.ts"],"sourcesContent":["import { scaleBand, scaleLinear, scalePoint, scaleSqrt } from 'd3-scale';\nimport { extent, max, min } from 'd3-array';\n\nexport interface NumericRange {\n max: number;\n min: number;\n}\n\nexport interface ContinuousScaleOptions {\n clamp?: boolean;\n domain: NumericRange;\n nice?: boolean;\n range: [number, number];\n}\n\nexport interface CategoricalScaleOptions {\n domain: readonly string[];\n padding?: number;\n range: [number, number];\n}\n\n/**\n * Faixa que cobre os valores, com o zero incluido por padrao. Uma barra que\n * nao parte do zero exagera a diferenca entre os valores.\n */\nexport function domainOf(values: readonly number[], { includeZero = true } = {}): NumericRange {\n const finitos = values.filter(Number.isFinite);\n\n if (finitos.length === 0) {\n return { min: 0, max: 0 };\n }\n\n const [menor = 0, maior = 0] = extent(finitos);\n\n return {\n min: includeZero ? Math.min(menor, 0) : menor,\n max: includeZero ? Math.max(maior, 0) : maior,\n };\n}\n\n/**\n * Pilha divergente: positivos sobem do zero e negativos descem dele, cada sinal com o proprio acumulado.\n * Na soma corrida, `+10` e `-5` desenhavam o negativo por cima do positivo.\n */\nexport function stackDiverging(contributions: readonly number[]): [number, number][] {\n let positivos = 0;\n let negativos = 0;\n\n return contributions.map((valor) => {\n const parcela = Number.isFinite(valor) ? valor : 0;\n\n if (parcela < 0) {\n const inicio = negativos;\n negativos += parcela;\n return [inicio, negativos];\n }\n\n const inicio = positivos;\n positivos += parcela;\n return [inicio, positivos];\n });\n}\n\n/** Une varias series na mesma faixa, para que compartilhem um unico eixo. */\nexport function mergeDomains(domains: readonly NumericRange[]): NumericRange {\n if (domains.length === 0) {\n return { min: 0, max: 0 };\n }\n\n return {\n min: min(domains, (faixa) => faixa.min) ?? 0,\n max: max(domains, (faixa) => faixa.max) ?? 0,\n };\n}\n\n/** Parte da faixa abaixo do zero; sem amplitude, nao ha o que alinhar. */\nfunction parteNegativa({ min: menor, max: maior }: NumericRange) {\n return maior > menor ? -menor / (maior - menor) : undefined;\n}\n\n/** Estende a faixa do lado que falta para o zero ficar na altura pedida, em fracao do eixo. */\nfunction levarZeroA(faixa: NumericRange, parte: number, altura: number): NumericRange {\n if (parte > altura) {\n return { min: faixa.min, max: (-faixa.min * (1 - altura)) / altura };\n }\n\n if (parte < altura) {\n return { min: (-faixa.max * altura) / (1 - altura), max: faixa.max };\n }\n\n return faixa;\n}\n\n/**\n * Estende dois dominios que contem o zero para que ele caia na mesma altura nos\n * dois eixos. Cada um cresce so do lado que precisa, e a folga sai igual nos dois.\n */\nexport function alignZeros(a: NumericRange, b: NumericRange): [NumericRange, NumericRange] {\n const parteA = parteNegativa(a);\n const parteB = parteNegativa(b);\n\n if (parteA === undefined || parteB === undefined) {\n return [a, b];\n }\n\n const altura = Math.max(parteA, parteB) / (1 + Math.abs(parteA - parteB));\n\n return [levarZeroA(a, parteA, altura), levarZeroA(b, parteB, altura)];\n}\n\nfunction guardFlat({ min: menor, max: maior }: NumericRange): [number, number] {\n return menor === maior ? [menor, menor + 1] : [menor, maior];\n}\n\nexport function linearScale({ clamp = false, domain, nice = true, range }: ContinuousScaleOptions) {\n const escala = scaleLinear().domain(guardFlat(domain)).range(range).clamp(clamp);\n\n return nice ? escala.nice() : escala;\n}\n\n/** Faixas de largura igual, uma por categoria. Serve barras. */\nexport function bandScale({ domain, padding = 0.2, range }: CategoricalScaleOptions) {\n return scaleBand().domain([...domain]).range(range).paddingInner(padding).paddingOuter(padding / 2);\n}\n\n/** Pontos sem largura, um por categoria. Serve linhas e dispersao. */\nexport function pointScale({ domain, padding = 0.5, range }: CategoricalScaleOptions) {\n return scalePoint().domain([...domain]).range(range).padding(padding);\n}\n\n/**\n * Raio pela raiz do valor, para que a area da bolha acompanhe o dado em vez do\n * raio. Mapeando o valor direto ao raio, a area cresceria com o quadrado dele e\n * exageraria a diferenca.\n */\nexport function radiusScale(maxValue: number, range: [number, number]) {\n return scaleSqrt().domain([0, maxValue > 0 ? maxValue : 1]).range(range);\n}\n\n/**\n * Marcas de um eixo continuo. Sem contagem informada, o eixo decide pelo\n * espaco que tem, para nao amontoar rotulos em area estreita. Em escala\n * categorica as marcas sao o proprio dominio.\n */\nexport function ticksFor(scale: { ticks: (count?: number) => number[] }, length: number, count?: number) {\n return scale.ticks(count ?? Math.max(2, Math.min(10, Math.floor(length / 64))));\n}\n"],"names":["domainOf","values","includeZero","finitos","menor","maior","extent","stackDiverging","contributions","positivos","negativos","valor","parcela","inicio","mergeDomains","domains","min","faixa","max","parteNegativa","levarZeroA","parte","altura","alignZeros","a","b","parteA","parteB","guardFlat","linearScale","clamp","domain","nice","range","escala","scaleLinear","bandScale","padding","scaleBand","pointScale","scalePoint","radiusScale","maxValue","scaleSqrt","ticksFor","scale","length","count"],"mappings":"kIAyBO,SAASA,EAASC,EAA2B,CAAE,YAAAC,EAAc,EAAA,EAAS,CAAA,EAAkB,CAC7F,MAAMC,EAAUF,EAAO,OAAO,OAAO,QAAQ,EAE7C,GAAIE,EAAQ,SAAW,EACrB,MAAO,CAAE,IAAK,EAAG,IAAK,CAAA,EAGxB,KAAM,CAACC,EAAQ,EAAGC,EAAQ,CAAC,EAAIC,EAAAA,OAAOH,CAAO,EAE7C,MAAO,CACL,IAAKD,EAAc,KAAK,IAAIE,EAAO,CAAC,EAAIA,EACxC,IAAKF,EAAc,KAAK,IAAIG,EAAO,CAAC,EAAIA,CAAA,CAE5C,CAMO,SAASE,EAAeC,EAAsD,CACnF,IAAIC,EAAY,EACZC,EAAY,EAEhB,OAAOF,EAAc,IAAKG,GAAU,CAClC,MAAMC,EAAU,OAAO,SAASD,CAAK,EAAIA,EAAQ,EAEjD,GAAIC,EAAU,EAAG,CACf,MAAMC,EAASH,EACf,OAAAA,GAAaE,EACN,CAACC,EAAQH,CAAS,CAC3B,CAEA,MAAMG,EAASJ,EACf,OAAAA,GAAaG,EACN,CAACC,EAAQJ,CAAS,CAC3B,CAAC,CACH,CAGO,SAASK,EAAaC,EAAgD,CAC3E,OAAIA,EAAQ,SAAW,EACd,CAAE,IAAK,EAAG,IAAK,CAAA,EAGjB,CACL,IAAKC,EAAAA,IAAID,EAAUE,GAAUA,EAAM,GAAG,GAAK,EAC3C,IAAKC,EAAAA,IAAIH,EAAUE,GAAUA,EAAM,GAAG,GAAK,CAAA,CAE/C,CAGA,SAASE,EAAc,CAAE,IAAKf,EAAO,IAAKC,GAAuB,CAC/D,OAAOA,EAAQD,EAAQ,CAACA,GAASC,EAAQD,GAAS,MACpD,CAGA,SAASgB,EAAWH,EAAqBI,EAAeC,EAA8B,CACpF,OAAID,EAAQC,EACH,CAAE,IAAKL,EAAM,IAAK,IAAM,CAACA,EAAM,KAAO,EAAIK,GAAWA,CAAA,EAG1DD,EAAQC,EACH,CAAE,IAAM,CAACL,EAAM,IAAMK,GAAW,EAAIA,GAAS,IAAKL,EAAM,GAAA,EAG1DA,CACT,CAMO,SAASM,EAAWC,EAAiBC,EAA+C,CACzF,MAAMC,EAASP,EAAcK,CAAC,EACxBG,EAASR,EAAcM,CAAC,EAE9B,GAAIC,IAAW,QAAaC,IAAW,OACrC,MAAO,CAACH,EAAGC,CAAC,EAGd,MAAMH,EAAS,KAAK,IAAII,EAAQC,CAAM,GAAK,EAAI,KAAK,IAAID,EAASC,CAAM,GAEvE,MAAO,CAACP,EAAWI,EAAGE,EAAQJ,CAAM,EAAGF,EAAWK,EAAGE,EAAQL,CAAM,CAAC,CACtE,CAEA,SAASM,EAAU,CAAE,IAAKxB,EAAO,IAAKC,GAAyC,CAC7E,OAAOD,IAAUC,EAAQ,CAACD,EAAOA,EAAQ,CAAC,EAAI,CAACA,EAAOC,CAAK,CAC7D,CAEO,SAASwB,EAAY,CAAE,MAAAC,EAAQ,GAAO,OAAAC,EAAQ,KAAAC,EAAO,GAAM,MAAAC,GAAiC,CACjG,MAAMC,EAASC,EAAAA,cAAc,OAAOP,EAAUG,CAAM,CAAC,EAAE,MAAME,CAAK,EAAE,MAAMH,CAAK,EAE/E,OAAOE,EAAOE,EAAO,KAAA,EAASA,CAChC,CAGO,SAASE,EAAU,CAAE,OAAAL,EAAQ,QAAAM,EAAU,GAAK,MAAAJ,GAAkC,CACnF,OAAOK,EAAAA,YAAY,OAAO,CAAC,GAAGP,CAAM,CAAC,EAAE,MAAME,CAAK,EAAE,aAAaI,CAAO,EAAE,aAAaA,EAAU,CAAC,CACpG,CAGO,SAASE,EAAW,CAAE,OAAAR,EAAQ,QAAAM,EAAU,GAAK,MAAAJ,GAAkC,CACpF,OAAOO,aAAA,EAAa,OAAO,CAAC,GAAGT,CAAM,CAAC,EAAE,MAAME,CAAK,EAAE,QAAQI,CAAO,CACtE,CAOO,SAASI,EAAYC,EAAkBT,EAAyB,CACrE,OAAOU,YAAA,EAAY,OAAO,CAAC,EAAGD,EAAW,EAAIA,EAAW,CAAC,CAAC,EAAE,MAAMT,CAAK,CACzE,CAOO,SAASW,EAASC,EAAgDC,EAAgBC,EAAgB,CACvG,OAAOF,EAAM,MAAe,KAAK,IAAI,EAAG,KAAK,IAAI,GAAI,KAAK,MAAMC,EAAS,EAAE,CAAC,CAAC,CAAC,CAChF"}
|