@plenustech/design-system 0.2.2 → 0.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/actions/ButtonTile/ButtonTile.cjs +2 -0
- package/dist/components/actions/ButtonTile/ButtonTile.cjs.map +1 -0
- package/dist/components/actions/ButtonTile/ButtonTile.js +23 -0
- package/dist/components/actions/ButtonTile/ButtonTile.js.map +1 -0
- package/dist/components/actions/ButtonTile/ButtonTile.module.css.cjs +2 -0
- package/dist/components/actions/ButtonTile/ButtonTile.module.css.cjs.map +1 -0
- package/dist/components/actions/ButtonTile/ButtonTile.module.css.js +16 -0
- package/dist/components/actions/ButtonTile/ButtonTile.module.css.js.map +1 -0
- package/dist/components/actions/Toolbar/Toolbar.cjs +2 -0
- package/dist/components/actions/Toolbar/Toolbar.cjs.map +1 -0
- package/dist/components/actions/Toolbar/Toolbar.js +118 -0
- package/dist/components/actions/Toolbar/Toolbar.js.map +1 -0
- package/dist/components/actions/Toolbar/Toolbar.module.css.cjs +2 -0
- package/dist/components/actions/Toolbar/Toolbar.module.css.cjs.map +1 -0
- package/dist/components/actions/Toolbar/Toolbar.module.css.js +20 -0
- package/dist/components/actions/Toolbar/Toolbar.module.css.js.map +1 -0
- package/dist/components/charts/ChartArea/ChartArea.cjs +1 -1
- package/dist/components/charts/ChartArea/ChartArea.cjs.map +1 -1
- package/dist/components/charts/ChartArea/ChartArea.js +196 -148
- package/dist/components/charts/ChartArea/ChartArea.js.map +1 -1
- package/dist/components/charts/ChartArea/ChartArea.module.css.cjs +1 -1
- package/dist/components/charts/ChartArea/ChartArea.module.css.js +12 -10
- package/dist/components/charts/ChartArea/ChartArea.module.css.js.map +1 -1
- package/dist/components/charts/ChartBar/ChartBar.cjs +1 -1
- package/dist/components/charts/ChartBar/ChartBar.cjs.map +1 -1
- package/dist/components/charts/ChartBar/ChartBar.js +168 -145
- package/dist/components/charts/ChartBar/ChartBar.js.map +1 -1
- package/dist/components/charts/ChartBar/ChartBar.module.css.cjs +1 -1
- package/dist/components/charts/ChartBar/ChartBar.module.css.js +12 -10
- package/dist/components/charts/ChartBar/ChartBar.module.css.js.map +1 -1
- package/dist/components/charts/ChartCombo/ChartCombo.cjs +1 -1
- package/dist/components/charts/ChartCombo/ChartCombo.cjs.map +1 -1
- package/dist/components/charts/ChartCombo/ChartCombo.js +179 -154
- package/dist/components/charts/ChartCombo/ChartCombo.js.map +1 -1
- package/dist/components/charts/ChartCombo/ChartCombo.module.css.cjs +1 -1
- package/dist/components/charts/ChartCombo/ChartCombo.module.css.js +16 -14
- package/dist/components/charts/ChartCombo/ChartCombo.module.css.js.map +1 -1
- package/dist/components/charts/ChartDonut/ChartDonut.cjs +1 -1
- package/dist/components/charts/ChartDonut/ChartDonut.cjs.map +1 -1
- package/dist/components/charts/ChartDonut/ChartDonut.js +72 -61
- package/dist/components/charts/ChartDonut/ChartDonut.js.map +1 -1
- package/dist/components/charts/ChartGauge/ChartGauge.cjs +2 -0
- package/dist/components/charts/ChartGauge/ChartGauge.cjs.map +1 -0
- package/dist/components/charts/ChartGauge/ChartGauge.js +307 -0
- package/dist/components/charts/ChartGauge/ChartGauge.js.map +1 -0
- package/dist/components/charts/ChartGauge/ChartGauge.module.css.cjs +2 -0
- package/dist/components/charts/ChartGauge/ChartGauge.module.css.cjs.map +1 -0
- package/dist/components/charts/ChartGauge/ChartGauge.module.css.js +76 -0
- package/dist/components/charts/ChartGauge/ChartGauge.module.css.js.map +1 -0
- package/dist/components/charts/ChartGauge/gaugeLayout.cjs +2 -0
- package/dist/components/charts/ChartGauge/gaugeLayout.cjs.map +1 -0
- package/dist/components/charts/ChartGauge/gaugeLayout.js +107 -0
- package/dist/components/charts/ChartGauge/gaugeLayout.js.map +1 -0
- package/dist/components/charts/ChartGauge/gaugeReading.cjs +2 -0
- package/dist/components/charts/ChartGauge/gaugeReading.cjs.map +1 -0
- package/dist/components/charts/ChartGauge/gaugeReading.js +112 -0
- package/dist/components/charts/ChartGauge/gaugeReading.js.map +1 -0
- package/dist/components/charts/ChartGauge/gaugeScale.cjs +2 -0
- package/dist/components/charts/ChartGauge/gaugeScale.cjs.map +1 -0
- package/dist/components/charts/ChartGauge/gaugeScale.js +57 -0
- package/dist/components/charts/ChartGauge/gaugeScale.js.map +1 -0
- package/dist/components/charts/ChartLine/ChartLine.cjs +1 -1
- package/dist/components/charts/ChartLine/ChartLine.cjs.map +1 -1
- package/dist/components/charts/ChartLine/ChartLine.js +196 -143
- package/dist/components/charts/ChartLine/ChartLine.js.map +1 -1
- package/dist/components/charts/ChartLine/ChartLine.module.css.cjs +1 -1
- package/dist/components/charts/ChartLine/ChartLine.module.css.js +16 -14
- package/dist/components/charts/ChartLine/ChartLine.module.css.js.map +1 -1
- package/dist/components/charts/ChartMap/ChartMap.cjs +2 -0
- package/dist/components/charts/ChartMap/ChartMap.cjs.map +1 -0
- package/dist/components/charts/ChartMap/ChartMap.js +523 -0
- package/dist/components/charts/ChartMap/ChartMap.js.map +1 -0
- package/dist/components/charts/ChartMap/ChartMap.module.css.cjs +2 -0
- package/dist/components/charts/ChartMap/ChartMap.module.css.cjs.map +1 -0
- package/dist/components/charts/ChartMap/ChartMap.module.css.js +124 -0
- package/dist/components/charts/ChartMap/ChartMap.module.css.js.map +1 -0
- package/dist/components/charts/ChartMap/ChartMapLegend.cjs +2 -0
- package/dist/components/charts/ChartMap/ChartMapLegend.cjs.map +1 -0
- package/dist/components/charts/ChartMap/ChartMapLegend.js +102 -0
- package/dist/components/charts/ChartMap/ChartMapLegend.js.map +1 -0
- package/dist/components/charts/ChartMap/ChartMapTable.cjs +2 -0
- package/dist/components/charts/ChartMap/ChartMapTable.cjs.map +1 -0
- package/dist/components/charts/ChartMap/ChartMapTable.js +118 -0
- package/dist/components/charts/ChartMap/ChartMapTable.js.map +1 -0
- package/dist/components/charts/ChartMap/mapGeometry.cjs +2 -0
- package/dist/components/charts/ChartMap/mapGeometry.cjs.map +1 -0
- package/dist/components/charts/ChartMap/mapGeometry.js +113 -0
- package/dist/components/charts/ChartMap/mapGeometry.js.map +1 -0
- package/dist/components/charts/ChartMap/mapLabels.cjs +2 -0
- package/dist/components/charts/ChartMap/mapLabels.cjs.map +1 -0
- package/dist/components/charts/ChartMap/mapLabels.js +80 -0
- package/dist/components/charts/ChartMap/mapLabels.js.map +1 -0
- package/dist/components/charts/ChartMap/mapScales.cjs +2 -0
- package/dist/components/charts/ChartMap/mapScales.cjs.map +1 -0
- package/dist/components/charts/ChartMap/mapScales.js +131 -0
- package/dist/components/charts/ChartMap/mapScales.js.map +1 -0
- package/dist/components/charts/ChartMap/polylabel.cjs +2 -0
- package/dist/components/charts/ChartMap/polylabel.cjs.map +1 -0
- package/dist/components/charts/ChartMap/polylabel.js +50 -0
- package/dist/components/charts/ChartMap/polylabel.js.map +1 -0
- package/dist/components/charts/ChartPie/ChartPie.cjs +1 -1
- package/dist/components/charts/ChartPie/ChartPie.cjs.map +1 -1
- package/dist/components/charts/ChartPie/ChartPie.js +71 -60
- package/dist/components/charts/ChartPie/ChartPie.js.map +1 -1
- package/dist/components/charts/ChartRadial/ChartRadial.cjs +1 -1
- package/dist/components/charts/ChartRadial/ChartRadial.cjs.map +1 -1
- package/dist/components/charts/ChartRadial/ChartRadial.js +101 -84
- package/dist/components/charts/ChartRadial/ChartRadial.js.map +1 -1
- package/dist/components/charts/ChartSankey/ChartSankey.cjs +1 -1
- package/dist/components/charts/ChartSankey/ChartSankey.cjs.map +1 -1
- package/dist/components/charts/ChartSankey/ChartSankey.js +148 -125
- package/dist/components/charts/ChartSankey/ChartSankey.js.map +1 -1
- package/dist/components/charts/ChartScatter/ChartScatter.cjs +1 -1
- package/dist/components/charts/ChartScatter/ChartScatter.cjs.map +1 -1
- package/dist/components/charts/ChartScatter/ChartScatter.js +138 -106
- package/dist/components/charts/ChartScatter/ChartScatter.js.map +1 -1
- package/dist/components/charts/ChartScatter/ChartScatter.module.css.cjs +1 -1
- package/dist/components/charts/ChartScatter/ChartScatter.module.css.js +3 -3
- package/dist/components/charts/ChartSunburst/ChartSunburst.cjs +1 -1
- package/dist/components/charts/ChartSunburst/ChartSunburst.cjs.map +1 -1
- package/dist/components/charts/ChartSunburst/ChartSunburst.js +115 -100
- package/dist/components/charts/ChartSunburst/ChartSunburst.js.map +1 -1
- package/dist/components/charts/ChartTimeline/ChartTimeline.cjs +2 -0
- package/dist/components/charts/ChartTimeline/ChartTimeline.cjs.map +1 -0
- package/dist/components/charts/ChartTimeline/ChartTimeline.js +703 -0
- package/dist/components/charts/ChartTimeline/ChartTimeline.js.map +1 -0
- package/dist/components/charts/ChartTimeline/ChartTimeline.module.css.cjs +2 -0
- package/dist/components/charts/ChartTimeline/ChartTimeline.module.css.cjs.map +1 -0
- package/dist/components/charts/ChartTimeline/ChartTimeline.module.css.js +124 -0
- package/dist/components/charts/ChartTimeline/ChartTimeline.module.css.js.map +1 -0
- package/dist/components/charts/ChartTimeline/ChartTimelineTable.cjs +2 -0
- package/dist/components/charts/ChartTimeline/ChartTimelineTable.cjs.map +1 -0
- package/dist/components/charts/ChartTimeline/ChartTimelineTable.js +42 -0
- package/dist/components/charts/ChartTimeline/ChartTimelineTable.js.map +1 -0
- package/dist/components/charts/ChartTimeline/timelineLayout.cjs +2 -0
- package/dist/components/charts/ChartTimeline/timelineLayout.cjs.map +1 -0
- package/dist/components/charts/ChartTimeline/timelineLayout.js +109 -0
- package/dist/components/charts/ChartTimeline/timelineLayout.js.map +1 -0
- package/dist/components/charts/ChartTimeline/timelineTime.cjs +2 -0
- package/dist/components/charts/ChartTimeline/timelineTime.cjs.map +1 -0
- package/dist/components/charts/ChartTimeline/timelineTime.js +91 -0
- package/dist/components/charts/ChartTimeline/timelineTime.js.map +1 -0
- package/dist/components/charts/ChartTimeline/timelineTooltip.cjs +2 -0
- package/dist/components/charts/ChartTimeline/timelineTooltip.cjs.map +1 -0
- package/dist/components/charts/ChartTimeline/timelineTooltip.js +77 -0
- package/dist/components/charts/ChartTimeline/timelineTooltip.js.map +1 -0
- package/dist/components/charts/ChartTooltip/ChartTooltip.cjs +1 -1
- package/dist/components/charts/ChartTooltip/ChartTooltip.cjs.map +1 -1
- package/dist/components/charts/ChartTooltip/ChartTooltip.js +1 -1
- package/dist/components/charts/ChartTooltip/ChartTooltip.js.map +1 -1
- package/dist/components/charts/ChartTreemap/ChartTreemap.cjs +1 -1
- package/dist/components/charts/ChartTreemap/ChartTreemap.cjs.map +1 -1
- package/dist/components/charts/ChartTreemap/ChartTreemap.js +100 -89
- package/dist/components/charts/ChartTreemap/ChartTreemap.js.map +1 -1
- package/dist/components/charts/ChartWaterfall/ChartWaterfall.cjs +1 -1
- package/dist/components/charts/ChartWaterfall/ChartWaterfall.cjs.map +1 -1
- package/dist/components/charts/ChartWaterfall/ChartWaterfall.js +125 -105
- package/dist/components/charts/ChartWaterfall/ChartWaterfall.js.map +1 -1
- package/dist/components/charts/ChartWaterfall/ChartWaterfall.module.css.cjs +1 -1
- package/dist/components/charts/ChartWaterfall/ChartWaterfall.module.css.js +8 -6
- package/dist/components/charts/ChartWaterfall/ChartWaterfall.module.css.js.map +1 -1
- package/dist/components/charts/core/CartesianFrame.cjs +1 -1
- package/dist/components/charts/core/CartesianFrame.cjs.map +1 -1
- package/dist/components/charts/core/CartesianFrame.js +61 -96
- package/dist/components/charts/core/CartesianFrame.js.map +1 -1
- package/dist/components/charts/core/Chart.module.css.cjs +1 -1
- package/dist/components/charts/core/Chart.module.css.js +52 -54
- package/dist/components/charts/core/Chart.module.css.js.map +1 -1
- package/dist/components/charts/core/ChartFrame.cjs +1 -1
- package/dist/components/charts/core/ChartFrame.cjs.map +1 -1
- package/dist/components/charts/core/ChartFrame.js +53 -47
- package/dist/components/charts/core/ChartFrame.js.map +1 -1
- package/dist/components/charts/core/ChartLegend.cjs +1 -1
- package/dist/components/charts/core/ChartLegend.cjs.map +1 -1
- package/dist/components/charts/core/ChartLegend.js +37 -25
- package/dist/components/charts/core/ChartLegend.js.map +1 -1
- package/dist/components/charts/core/PointBands.cjs +2 -0
- package/dist/components/charts/core/PointBands.cjs.map +1 -0
- package/dist/components/charts/core/PointBands.js +41 -0
- package/dist/components/charts/core/PointBands.js.map +1 -0
- package/dist/components/charts/core/cartesianLayout.cjs +1 -1
- package/dist/components/charts/core/cartesianLayout.cjs.map +1 -1
- package/dist/components/charts/core/cartesianLayout.js +49 -41
- package/dist/components/charts/core/cartesianLayout.js.map +1 -1
- package/dist/components/charts/core/hoverPath.cjs +2 -0
- package/dist/components/charts/core/hoverPath.cjs.map +1 -0
- package/dist/components/charts/core/hoverPath.js +7 -0
- package/dist/components/charts/core/hoverPath.js.map +1 -0
- package/dist/components/charts/core/pointLabels.cjs +2 -0
- package/dist/components/charts/core/pointLabels.cjs.map +1 -0
- package/dist/components/charts/core/pointLabels.js +12 -0
- package/dist/components/charts/core/pointLabels.js.map +1 -0
- package/dist/components/charts/core/tooltips.cjs +2 -0
- package/dist/components/charts/core/tooltips.cjs.map +1 -0
- package/dist/components/charts/core/tooltips.js +48 -0
- package/dist/components/charts/core/tooltips.js.map +1 -0
- package/dist/components/charts/core/useCartesianLayout.cjs +2 -0
- package/dist/components/charts/core/useCartesianLayout.cjs.map +1 -0
- package/dist/components/charts/core/useCartesianLayout.js +38 -0
- package/dist/components/charts/core/useCartesianLayout.js.map +1 -0
- package/dist/components/charts/core/useChartMetrics.cjs +1 -1
- package/dist/components/charts/core/useChartMetrics.cjs.map +1 -1
- package/dist/components/charts/core/useChartMetrics.js +20 -25
- package/dist/components/charts/core/useChartMetrics.js.map +1 -1
- package/dist/components/charts/core/useSeriesToggle.cjs +1 -1
- package/dist/components/charts/core/useSeriesToggle.cjs.map +1 -1
- package/dist/components/charts/core/useSeriesToggle.js +19 -12
- package/dist/components/charts/core/useSeriesToggle.js.map +1 -1
- package/dist/components/data-display/Accordion/Accordion.cjs +1 -1
- package/dist/components/data-display/Accordion/Accordion.cjs.map +1 -1
- package/dist/components/data-display/Accordion/Accordion.js +56 -46
- package/dist/components/data-display/Accordion/Accordion.js.map +1 -1
- package/dist/components/data-display/Accordion/Accordion.module.css.cjs +1 -1
- package/dist/components/data-display/Accordion/Accordion.module.css.js +16 -16
- package/dist/components/data-display/List/List.cjs.map +1 -1
- package/dist/components/data-display/List/List.js.map +1 -1
- package/dist/components/data-display/List/List.module.css.cjs +1 -1
- package/dist/components/data-display/List/List.module.css.js +34 -24
- package/dist/components/data-display/List/List.module.css.js.map +1 -1
- package/dist/components/data-display/List/ListingOptions.cjs +1 -1
- package/dist/components/data-display/List/ListingOptions.cjs.map +1 -1
- package/dist/components/data-display/List/ListingOptions.js +98 -74
- package/dist/components/data-display/List/ListingOptions.js.map +1 -1
- package/dist/components/data-display/List/useListing.cjs.map +1 -1
- package/dist/components/data-display/List/useListing.js.map +1 -1
- package/dist/components/data-display/SortableList/SortableList.cjs +2 -0
- package/dist/components/data-display/SortableList/SortableList.cjs.map +1 -0
- package/dist/components/data-display/SortableList/SortableList.js +168 -0
- package/dist/components/data-display/SortableList/SortableList.js.map +1 -0
- package/dist/components/data-display/SortableList/SortableList.module.css.cjs +2 -0
- package/dist/components/data-display/SortableList/SortableList.module.css.cjs.map +1 -0
- package/dist/components/data-display/SortableList/SortableList.module.css.js +34 -0
- package/dist/components/data-display/SortableList/SortableList.module.css.js.map +1 -0
- package/dist/components/data-display/Table/Table.cjs +1 -1
- package/dist/components/data-display/Table/Table.cjs.map +1 -1
- package/dist/components/data-display/Table/Table.js +86 -85
- package/dist/components/data-display/Table/Table.js.map +1 -1
- package/dist/components/data-display/Table/Table.module.css.cjs +1 -1
- package/dist/components/data-display/Table/Table.module.css.js +50 -51
- package/dist/components/data-display/Table/Table.module.css.js.map +1 -1
- package/dist/components/data-display/Tag/Tag.cjs +2 -0
- package/dist/components/data-display/Tag/Tag.cjs.map +1 -0
- package/dist/components/data-display/Tag/Tag.js +50 -0
- package/dist/components/data-display/Tag/Tag.js.map +1 -0
- package/dist/components/data-display/Tag/Tag.module.css.cjs +2 -0
- package/dist/components/data-display/Tag/Tag.module.css.cjs.map +1 -0
- package/dist/components/data-display/Tag/Tag.module.css.js +22 -0
- package/dist/components/data-display/Tag/Tag.module.css.js.map +1 -0
- package/dist/components/data-display/Timeline/Timeline.cjs +2 -0
- package/dist/components/data-display/Timeline/Timeline.cjs.map +1 -0
- package/dist/components/data-display/Timeline/Timeline.js +31 -0
- package/dist/components/data-display/Timeline/Timeline.js.map +1 -0
- package/dist/components/data-display/Timeline/Timeline.module.css.cjs +2 -0
- package/dist/components/data-display/Timeline/Timeline.module.css.cjs.map +1 -0
- package/dist/components/data-display/Timeline/Timeline.module.css.js +30 -0
- package/dist/components/data-display/Timeline/Timeline.module.css.js.map +1 -0
- package/dist/components/feedback/Skeleton/Skeleton.cjs +2 -0
- package/dist/components/feedback/Skeleton/Skeleton.cjs.map +1 -0
- package/dist/components/feedback/Skeleton/Skeleton.js +17 -0
- package/dist/components/feedback/Skeleton/Skeleton.js.map +1 -0
- package/dist/components/feedback/Skeleton/Skeleton.module.css.cjs +2 -0
- package/dist/components/feedback/Skeleton/Skeleton.module.css.cjs.map +1 -0
- package/dist/components/feedback/Skeleton/Skeleton.module.css.js +15 -0
- package/dist/components/feedback/Skeleton/Skeleton.module.css.js.map +1 -0
- package/dist/components/feedback/Toast/Toast.module.css.cjs +2 -0
- package/dist/components/feedback/Toast/Toast.module.css.cjs.map +1 -0
- package/dist/components/feedback/Toast/Toast.module.css.js +31 -0
- package/dist/components/feedback/Toast/Toast.module.css.js.map +1 -0
- package/dist/components/feedback/Toast/ToastRegion.cjs +2 -0
- package/dist/components/feedback/Toast/ToastRegion.cjs.map +1 -0
- package/dist/components/feedback/Toast/ToastRegion.js +62 -0
- package/dist/components/feedback/Toast/ToastRegion.js.map +1 -0
- package/dist/components/feedback/Toast/toastStore.cjs +2 -0
- package/dist/components/feedback/Toast/toastStore.cjs.map +1 -0
- package/dist/components/feedback/Toast/toastStore.js +33 -0
- package/dist/components/feedback/Toast/toastStore.js.map +1 -0
- package/dist/components/forms/Checkbox/Checkbox.cjs +1 -1
- package/dist/components/forms/Checkbox/Checkbox.cjs.map +1 -1
- package/dist/components/forms/Checkbox/Checkbox.js +43 -31
- package/dist/components/forms/Checkbox/Checkbox.js.map +1 -1
- package/dist/components/forms/Checkbox/Checkbox.module.css.cjs +1 -1
- package/dist/components/forms/Checkbox/Checkbox.module.css.js +1 -1
- package/dist/components/forms/CheckboxGroup/CheckboxGroup.cjs +2 -0
- package/dist/components/forms/CheckboxGroup/CheckboxGroup.cjs.map +1 -0
- package/dist/components/forms/CheckboxGroup/CheckboxGroup.js +54 -0
- package/dist/components/forms/CheckboxGroup/CheckboxGroup.js.map +1 -0
- package/dist/components/forms/CheckboxGroup/CheckboxGroup.module.css.cjs +2 -0
- package/dist/components/forms/CheckboxGroup/CheckboxGroup.module.css.cjs.map +1 -0
- package/dist/components/forms/CheckboxGroup/CheckboxGroup.module.css.js +22 -0
- package/dist/components/forms/CheckboxGroup/CheckboxGroup.module.css.js.map +1 -0
- package/dist/components/forms/ColorPicker/ColorPicker.cjs +2 -0
- package/dist/components/forms/ColorPicker/ColorPicker.cjs.map +1 -0
- package/dist/components/forms/ColorPicker/ColorPicker.js +57 -0
- package/dist/components/forms/ColorPicker/ColorPicker.js.map +1 -0
- package/dist/components/forms/ColorPicker/ColorPicker.module.css.cjs +2 -0
- package/dist/components/forms/ColorPicker/ColorPicker.module.css.cjs.map +1 -0
- package/dist/components/forms/ColorPicker/ColorPicker.module.css.js +22 -0
- package/dist/components/forms/ColorPicker/ColorPicker.module.css.js.map +1 -0
- package/dist/components/forms/ComboBox/ComboBox.cjs.map +1 -1
- package/dist/components/forms/ComboBox/ComboBox.js.map +1 -1
- package/dist/components/forms/ComboBox/ComboBox.module.css.cjs +1 -1
- package/dist/components/forms/ComboBox/ComboBox.module.css.js +20 -20
- package/dist/components/forms/Field/Field.cjs +1 -1
- package/dist/components/forms/Field/Field.cjs.map +1 -1
- package/dist/components/forms/Field/Field.js +21 -20
- package/dist/components/forms/Field/Field.js.map +1 -1
- package/dist/components/forms/Field/Field.module.css.cjs +1 -1
- package/dist/components/forms/Field/Field.module.css.js +18 -12
- package/dist/components/forms/Field/Field.module.css.js.map +1 -1
- package/dist/components/forms/FileUpload/FileUpload.cjs +2 -0
- package/dist/components/forms/FileUpload/FileUpload.cjs.map +1 -0
- package/dist/components/forms/FileUpload/FileUpload.js +142 -0
- package/dist/components/forms/FileUpload/FileUpload.js.map +1 -0
- package/dist/components/forms/FileUpload/FileUpload.module.css.cjs +2 -0
- package/dist/components/forms/FileUpload/FileUpload.module.css.cjs.map +1 -0
- package/dist/components/forms/FileUpload/FileUpload.module.css.js +46 -0
- package/dist/components/forms/FileUpload/FileUpload.module.css.js.map +1 -0
- package/dist/components/forms/InputPassword/InputPassword.module.css.cjs +1 -1
- package/dist/components/forms/InputPassword/InputPassword.module.css.js +12 -12
- package/dist/components/forms/InputText/InputText.cjs +1 -1
- package/dist/components/forms/InputText/InputText.cjs.map +1 -1
- package/dist/components/forms/InputText/InputText.js +55 -47
- package/dist/components/forms/InputText/InputText.js.map +1 -1
- package/dist/components/forms/InputText/InputText.module.css.cjs +1 -1
- package/dist/components/forms/InputText/InputText.module.css.js +10 -10
- package/dist/components/forms/RadioGroup/RadioGroup.module.css.cjs +1 -1
- package/dist/components/forms/RadioGroup/RadioGroup.module.css.js +4 -4
- package/dist/components/forms/SegmentedControl/SegmentedControl.cjs +2 -0
- package/dist/components/forms/SegmentedControl/SegmentedControl.cjs.map +1 -0
- package/dist/components/forms/SegmentedControl/SegmentedControl.js +52 -0
- package/dist/components/forms/SegmentedControl/SegmentedControl.js.map +1 -0
- package/dist/components/forms/SegmentedControl/SegmentedControl.module.css.cjs +2 -0
- package/dist/components/forms/SegmentedControl/SegmentedControl.module.css.cjs.map +1 -0
- package/dist/components/forms/SegmentedControl/SegmentedControl.module.css.js +22 -0
- package/dist/components/forms/SegmentedControl/SegmentedControl.module.css.js.map +1 -0
- package/dist/components/forms/Select/Select.module.css.cjs +1 -1
- package/dist/components/forms/Select/Select.module.css.js +13 -13
- package/dist/components/forms/Switch/Switch.module.css.cjs +1 -1
- package/dist/components/forms/Switch/Switch.module.css.js +2 -2
- package/dist/components/icons/icons.cjs +1 -1
- package/dist/components/icons/icons.cjs.map +1 -1
- package/dist/components/icons/icons.js +198 -40
- package/dist/components/icons/icons.js.map +1 -1
- package/dist/components/navigation/SkipLink/SkipLink.cjs +2 -0
- package/dist/components/navigation/SkipLink/SkipLink.cjs.map +1 -0
- package/dist/components/navigation/SkipLink/SkipLink.js +9 -0
- package/dist/components/navigation/SkipLink/SkipLink.js.map +1 -0
- package/dist/components/navigation/SkipLink/SkipLink.module.css.cjs +2 -0
- package/dist/components/navigation/SkipLink/SkipLink.module.css.cjs.map +1 -0
- package/dist/components/navigation/SkipLink/SkipLink.module.css.js +8 -0
- package/dist/components/navigation/SkipLink/SkipLink.module.css.js.map +1 -0
- package/dist/components/navigation/Steps/Steps.cjs +2 -0
- package/dist/components/navigation/Steps/Steps.cjs.map +1 -0
- package/dist/components/navigation/Steps/Steps.js +30 -0
- package/dist/components/navigation/Steps/Steps.js.map +1 -0
- package/dist/components/navigation/Steps/Steps.module.css.cjs +2 -0
- package/dist/components/navigation/Steps/Steps.module.css.cjs.map +1 -0
- package/dist/components/navigation/Steps/Steps.module.css.js +26 -0
- package/dist/components/navigation/Steps/Steps.module.css.js.map +1 -0
- package/dist/components/navigation/Tabs/Tabs.cjs +1 -1
- package/dist/components/navigation/Tabs/Tabs.cjs.map +1 -1
- package/dist/components/navigation/Tabs/Tabs.js +88 -79
- package/dist/components/navigation/Tabs/Tabs.js.map +1 -1
- package/dist/components/navigation/Tabs/Tabs.module.css.cjs +1 -1
- package/dist/components/navigation/Tabs/Tabs.module.css.js +18 -14
- package/dist/components/navigation/Tabs/Tabs.module.css.js.map +1 -1
- package/dist/components/navigation/TabsNav/TabsNav.cjs +2 -0
- package/dist/components/navigation/TabsNav/TabsNav.cjs.map +1 -0
- package/dist/components/navigation/TabsNav/TabsNav.js +21 -0
- package/dist/components/navigation/TabsNav/TabsNav.js.map +1 -0
- package/dist/components/navigation/TabsNav/TabsNav.module.css.cjs +2 -0
- package/dist/components/navigation/TabsNav/TabsNav.module.css.cjs.map +1 -0
- package/dist/components/navigation/TabsNav/TabsNav.module.css.js +18 -0
- package/dist/components/navigation/TabsNav/TabsNav.module.css.js.map +1 -0
- package/dist/components/overlays/Dialog/Dialog.cjs +1 -1
- package/dist/components/overlays/Dialog/Dialog.cjs.map +1 -1
- package/dist/components/overlays/Dialog/Dialog.js +11 -58
- package/dist/components/overlays/Dialog/Dialog.js.map +1 -1
- package/dist/components/overlays/Dialog/DialogFrame.cjs +2 -0
- package/dist/components/overlays/Dialog/DialogFrame.cjs.map +1 -0
- package/dist/components/overlays/Dialog/DialogFrame.js +65 -0
- package/dist/components/overlays/Dialog/DialogFrame.js.map +1 -0
- package/dist/components/overlays/Drawer/Drawer.cjs +2 -0
- package/dist/components/overlays/Drawer/Drawer.cjs.map +1 -0
- package/dist/components/overlays/Drawer/Drawer.js +17 -0
- package/dist/components/overlays/Drawer/Drawer.js.map +1 -0
- package/dist/components/overlays/Drawer/Drawer.module.css.cjs +2 -0
- package/dist/components/overlays/Drawer/Drawer.module.css.cjs.map +1 -0
- package/dist/components/overlays/Drawer/Drawer.module.css.js +23 -0
- package/dist/components/overlays/Drawer/Drawer.module.css.js.map +1 -0
- package/dist/components/overlays/Menu/Menu.cjs +1 -1
- package/dist/components/overlays/Menu/Menu.cjs.map +1 -1
- package/dist/components/overlays/Menu/Menu.js +105 -86
- package/dist/components/overlays/Menu/Menu.js.map +1 -1
- package/dist/components/overlays/Menu/Menu.module.css.cjs +1 -1
- package/dist/components/overlays/Menu/Menu.module.css.js +24 -6
- package/dist/components/overlays/Menu/Menu.module.css.js.map +1 -1
- package/dist/design-system.css +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +190 -118
- package/dist/index.js.map +1 -1
- package/dist/types/components/actions/ButtonTile/ButtonTile.d.ts +14 -0
- package/dist/types/components/actions/ButtonTile/index.d.ts +2 -0
- package/dist/types/components/actions/Toolbar/Toolbar.d.ts +27 -0
- package/dist/types/components/actions/Toolbar/index.d.ts +2 -0
- package/dist/types/components/charts/ChartArea/ChartArea.d.ts +15 -4
- package/dist/types/components/charts/ChartBar/ChartBar.d.ts +11 -4
- package/dist/types/components/charts/ChartCombo/ChartCombo.d.ts +16 -4
- package/dist/types/components/charts/ChartDonut/ChartDonut.d.ts +5 -1
- package/dist/types/components/charts/ChartGauge/ChartGauge.d.ts +83 -0
- package/dist/types/components/charts/ChartGauge/gaugeLayout.d.ts +64 -0
- package/dist/types/components/charts/ChartGauge/gaugeReading.d.ts +97 -0
- package/dist/types/components/charts/ChartGauge/gaugeScale.d.ts +38 -0
- package/dist/types/components/charts/ChartGauge/index.d.ts +2 -0
- package/dist/types/components/charts/ChartLine/ChartLine.d.ts +15 -4
- package/dist/types/components/charts/ChartMap/ChartMap.d.ts +104 -0
- package/dist/types/components/charts/ChartMap/ChartMapLegend.d.ts +44 -0
- package/dist/types/components/charts/ChartMap/ChartMapTable.d.ts +38 -0
- package/dist/types/components/charts/ChartMap/index.d.ts +4 -0
- package/dist/types/components/charts/ChartMap/mapGeometry.d.ts +56 -0
- package/dist/types/components/charts/ChartMap/mapLabels.d.ts +51 -0
- package/dist/types/components/charts/ChartMap/mapScales.d.ts +76 -0
- package/dist/types/components/charts/ChartMap/polylabel.d.ts +9 -0
- package/dist/types/components/charts/ChartPie/ChartPie.d.ts +5 -1
- package/dist/types/components/charts/ChartRadial/ChartRadial.d.ts +5 -1
- package/dist/types/components/charts/ChartSankey/ChartSankey.d.ts +5 -1
- package/dist/types/components/charts/ChartScatter/ChartScatter.d.ts +7 -1
- package/dist/types/components/charts/ChartSunburst/ChartSunburst.d.ts +11 -2
- package/dist/types/components/charts/ChartTimeline/ChartTimeline.d.ts +137 -0
- package/dist/types/components/charts/ChartTimeline/ChartTimelineTable.d.ts +25 -0
- package/dist/types/components/charts/ChartTimeline/index.d.ts +2 -0
- package/dist/types/components/charts/ChartTimeline/timelineLayout.d.ts +70 -0
- package/dist/types/components/charts/ChartTimeline/timelineTime.d.ts +16 -0
- package/dist/types/components/charts/ChartTimeline/timelineTooltip.d.ts +45 -0
- package/dist/types/components/charts/ChartTooltip/ChartTooltip.d.ts +2 -0
- package/dist/types/components/charts/ChartTreemap/ChartTreemap.d.ts +11 -2
- package/dist/types/components/charts/ChartWaterfall/ChartWaterfall.d.ts +8 -3
- package/dist/types/components/charts/core/CartesianFrame.d.ts +6 -1
- package/dist/types/components/charts/core/ChartFrame.d.ts +7 -1
- package/dist/types/components/charts/core/ChartLegend.d.ts +3 -1
- package/dist/types/components/charts/core/PointBands.d.ts +22 -0
- package/dist/types/components/charts/core/cartesianLayout.d.ts +10 -4
- package/dist/types/components/charts/core/hoverPath.d.ts +10 -0
- package/dist/types/components/charts/core/index.d.ts +13 -3
- package/dist/types/components/charts/core/pointLabels.d.ts +13 -0
- package/dist/types/components/charts/core/tooltips.d.ts +49 -0
- package/dist/types/components/charts/core/useCartesianLayout.d.ts +20 -0
- package/dist/types/components/charts/core/useSeriesToggle.d.ts +15 -1
- package/dist/types/components/data-display/Accordion/Accordion.d.ts +6 -1
- package/dist/types/components/data-display/Accordion/index.d.ts +1 -1
- package/dist/types/components/data-display/List/List.d.ts +1 -1
- package/dist/types/components/data-display/List/useListing.d.ts +7 -1
- package/dist/types/components/data-display/SortableList/SortableList.d.ts +22 -0
- package/dist/types/components/data-display/SortableList/index.d.ts +2 -0
- package/dist/types/components/data-display/Tag/Tag.d.ts +13 -0
- package/dist/types/components/data-display/Tag/index.d.ts +2 -0
- package/dist/types/components/data-display/Timeline/Timeline.d.ts +15 -0
- package/dist/types/components/data-display/Timeline/index.d.ts +2 -0
- package/dist/types/components/feedback/Skeleton/Skeleton.d.ts +13 -0
- package/dist/types/components/feedback/Skeleton/index.d.ts +2 -0
- package/dist/types/components/feedback/Toast/ToastRegion.d.ts +2 -0
- package/dist/types/components/feedback/Toast/index.d.ts +3 -0
- package/dist/types/components/feedback/Toast/toastStore.d.ts +24 -0
- package/dist/types/components/forms/CheckboxGroup/CheckboxGroup.d.ts +28 -0
- package/dist/types/components/forms/CheckboxGroup/index.d.ts +2 -0
- package/dist/types/components/forms/ColorPicker/ColorPicker.d.ts +26 -0
- package/dist/types/components/forms/ColorPicker/index.d.ts +2 -0
- package/dist/types/components/forms/ComboBox/ComboBox.d.ts +7 -1
- package/dist/types/components/forms/Field/Field.d.ts +6 -2
- package/dist/types/components/forms/Field/index.d.ts +1 -1
- package/dist/types/components/forms/FileUpload/FileUpload.d.ts +37 -0
- package/dist/types/components/forms/FileUpload/index.d.ts +2 -0
- package/dist/types/components/forms/InputText/InputText.d.ts +4 -2
- package/dist/types/components/forms/SegmentedControl/SegmentedControl.d.ts +23 -0
- package/dist/types/components/forms/SegmentedControl/index.d.ts +2 -0
- package/dist/types/components/icons/icons.d.ts +29 -0
- package/dist/types/components/icons/index.d.ts +1 -1
- package/dist/types/components/navigation/SkipLink/SkipLink.d.ts +7 -0
- package/dist/types/components/navigation/SkipLink/index.d.ts +2 -0
- package/dist/types/components/navigation/Steps/Steps.d.ts +16 -0
- package/dist/types/components/navigation/Steps/index.d.ts +2 -0
- package/dist/types/components/navigation/Tabs/Tabs.d.ts +5 -1
- package/dist/types/components/navigation/TabsNav/TabsNav.d.ts +20 -0
- package/dist/types/components/navigation/TabsNav/index.d.ts +2 -0
- package/dist/types/components/overlays/Dialog/Dialog.d.ts +21 -9
- package/dist/types/components/overlays/Dialog/DialogFrame.d.ts +13 -0
- package/dist/types/components/overlays/Drawer/Drawer.d.ts +9 -0
- package/dist/types/components/overlays/Drawer/index.d.ts +2 -0
- package/dist/types/components/overlays/Menu/Menu.d.ts +16 -2
- package/dist/types/components/overlays/Menu/index.d.ts +1 -1
- package/dist/types/index.d.ts +43 -7
- package/dist/types/utils/formatters/formatarDuracao.d.ts +5 -0
- package/dist/types/utils/formatters/formatarNumero.d.ts +6 -1
- package/dist/types/utils/formatters/formatarTamanhoDeArquivo.d.ts +7 -0
- package/dist/types/utils/formatters/index.d.ts +4 -1
- package/dist/utils/formatters/formatarDuracao.cjs +2 -0
- package/dist/utils/formatters/formatarDuracao.cjs.map +1 -0
- package/dist/utils/formatters/formatarDuracao.js +10 -0
- package/dist/utils/formatters/formatarDuracao.js.map +1 -0
- package/dist/utils/formatters/formatarNumero.cjs +1 -1
- package/dist/utils/formatters/formatarNumero.cjs.map +1 -1
- package/dist/utils/formatters/formatarNumero.js +42 -17
- package/dist/utils/formatters/formatarNumero.js.map +1 -1
- package/dist/utils/formatters/formatarTamanhoDeArquivo.cjs +2 -0
- package/dist/utils/formatters/formatarTamanhoDeArquivo.cjs.map +1 -0
- package/dist/utils/formatters/formatarTamanhoDeArquivo.js +17 -0
- package/dist/utils/formatters/formatarTamanhoDeArquivo.js.map +1 -0
- package/package.json +3 -1
|
@@ -1,137 +1,169 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
import { useState as
|
|
3
|
-
import
|
|
4
|
-
import { useChartMetrics as
|
|
5
|
-
import { useSeriesToggle as
|
|
6
|
-
import { resolveSeriesColors as
|
|
7
|
-
import { mergeDomains as
|
|
8
|
-
import { valueLabelsFor as
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
1
|
+
import { jsxs as ee, jsx as h } from "react/jsx-runtime";
|
|
2
|
+
import { useState as ie, useMemo as s } from "react";
|
|
3
|
+
import b from "./ChartScatter.module.css.js";
|
|
4
|
+
import { useChartMetrics as Re } from "../core/useChartMetrics.js";
|
|
5
|
+
import { useSeriesToggle as Ye, seriesInScale as ke } from "../core/useSeriesToggle.js";
|
|
6
|
+
import { resolveSeriesColors as Oe } from "../palette/seriesColor.js";
|
|
7
|
+
import { mergeDomains as te, domainOf as ae, linearScale as x, radiusScale as Ae, ticksFor as le } from "../scales/scales.js";
|
|
8
|
+
import { valueLabelsFor as oe, chartHeight as Ce } from "../core/cartesianLayout.js";
|
|
9
|
+
import { useCartesianLayout as De } from "../core/useCartesianLayout.js";
|
|
10
|
+
import { useTweenedNumbers as Ie } from "../core/useTweenedNumbers.js";
|
|
11
|
+
import { formatarNumero as R } from "../../../utils/formatters/formatarNumero.js";
|
|
12
|
+
import { CartesianFrame as _e } from "../core/CartesianFrame.js";
|
|
13
|
+
const He = 5, Te = [4, 18];
|
|
14
|
+
function y(m) {
|
|
15
|
+
return m.z !== void 0 && Number.isFinite(m.z) ? m.z : void 0;
|
|
15
16
|
}
|
|
16
|
-
function
|
|
17
|
-
accent:
|
|
18
|
-
defaultHiddenSeries:
|
|
19
|
-
emptyMessage:
|
|
20
|
-
formatX:
|
|
21
|
-
formatY:
|
|
22
|
-
formatZ:
|
|
23
|
-
height:
|
|
24
|
-
includeZero:
|
|
25
|
-
hiddenSeries:
|
|
26
|
-
legend:
|
|
27
|
-
legendAlign:
|
|
28
|
-
onHiddenSeriesChange:
|
|
29
|
-
series:
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
17
|
+
function Ze({
|
|
18
|
+
accent: m,
|
|
19
|
+
defaultHiddenSeries: ne,
|
|
20
|
+
emptyMessage: se = "Sem dados no período",
|
|
21
|
+
formatX: g = R,
|
|
22
|
+
formatY: f = R,
|
|
23
|
+
formatZ: Y = R,
|
|
24
|
+
height: re = 280,
|
|
25
|
+
includeZero: p = !0,
|
|
26
|
+
hiddenSeries: ce,
|
|
27
|
+
legend: me = "bottom",
|
|
28
|
+
legendAlign: ue,
|
|
29
|
+
onHiddenSeriesChange: de,
|
|
30
|
+
series: l,
|
|
31
|
+
showTooltip: k = !0,
|
|
32
|
+
title: he,
|
|
33
|
+
xLabel: be = "X",
|
|
34
|
+
yLabel: ge = "Y",
|
|
35
|
+
zLabel: fe = "Tamanho",
|
|
36
|
+
xAxis: O = "visible",
|
|
37
|
+
yAxis: A = "visible",
|
|
38
|
+
yAxisRight: C = "hidden"
|
|
34
39
|
}) {
|
|
35
|
-
const { font:
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
40
|
+
const { font: pe, height: ve, ref: xe, width: $ } = Re(), { fillHeight: ye, value: z } = Ce(re, ve), { isHidden: L, isOutOfScale: D, toggle: $e } = Ye({
|
|
41
|
+
defaultHiddenSeries: ne,
|
|
42
|
+
hiddenSeries: ce,
|
|
43
|
+
labels: l.map((e) => e.label),
|
|
44
|
+
onHiddenSeriesChange: de
|
|
45
|
+
}), [r, I] = ie(null), [u, _] = ie(null), N = s(() => Oe(l, { accent: m }), [m, l]), v = s(() => ke(l, D), [D, l]), H = p === !0 || p === "x", T = p === !0 || p === "y", S = s(
|
|
46
|
+
() => te(v.map((e) => ae(e.points.map((i) => i.x), { includeZero: H }))),
|
|
47
|
+
[v, H]
|
|
48
|
+
), X = s(
|
|
49
|
+
() => te(v.map((e) => ae(e.points.map((i) => i.y), { includeZero: T }))),
|
|
50
|
+
[v, T]
|
|
51
|
+
), j = s(
|
|
52
|
+
() => l.reduce(
|
|
53
|
+
(e, i) => i.points.reduce((a, c) => Math.max(a, y(c) ?? 0), e),
|
|
44
54
|
0
|
|
45
55
|
),
|
|
46
|
-
[
|
|
47
|
-
),
|
|
48
|
-
bottomLabels:
|
|
49
|
-
font:
|
|
50
|
-
height:
|
|
56
|
+
[l]
|
|
57
|
+
), B = oe(X, z, f), ze = oe(S, $, g), { axisReveal: Le, margins: Ne, plot: t, rotation: Se } = De({
|
|
58
|
+
bottomLabels: ze,
|
|
59
|
+
font: pe,
|
|
60
|
+
height: z,
|
|
51
61
|
labelAngle: "auto",
|
|
52
|
-
leftLabels:
|
|
53
|
-
rightLabels:
|
|
62
|
+
leftLabels: B,
|
|
63
|
+
rightLabels: B,
|
|
54
64
|
topRoom: 0,
|
|
55
|
-
width:
|
|
56
|
-
xAxis:
|
|
57
|
-
yAxis:
|
|
58
|
-
yAxisRight:
|
|
59
|
-
}),
|
|
60
|
-
() =>
|
|
61
|
-
[
|
|
62
|
-
),
|
|
63
|
-
() =>
|
|
64
|
-
[
|
|
65
|
-
),
|
|
66
|
-
function
|
|
67
|
-
const
|
|
68
|
-
return
|
|
65
|
+
width: $,
|
|
66
|
+
xAxis: O,
|
|
67
|
+
yAxis: A,
|
|
68
|
+
yAxisRight: C
|
|
69
|
+
}), F = s(() => x({ domain: S, range: [0, t.width] }), [S, t.width]), G = s(() => x({ domain: X, range: [t.height, 0] }), [X, t.height]), [P, V, q, J] = Ie([...F.domain(), ...G.domain()]), w = s(
|
|
70
|
+
() => x({ domain: { min: P, max: V }, nice: !1, range: [0, t.width] }),
|
|
71
|
+
[V, P, t.width]
|
|
72
|
+
), M = s(
|
|
73
|
+
() => x({ domain: { min: q, max: J }, nice: !1, range: [t.height, 0] }),
|
|
74
|
+
[J, q, t.height]
|
|
75
|
+
), Xe = s(() => Ae(j, Te), [j]), K = le(F, t.width), Q = le(G, t.height), we = K.map((e) => ({ label: g(e), position: w(e) })), U = Q.map((e) => ({ label: f(e), position: M(e) }));
|
|
76
|
+
function W(e, i) {
|
|
77
|
+
const a = i.label ? `${e.label}, ${i.label}` : e.label, c = `${g(i.x)} × ${f(i.y)}`, d = y(i);
|
|
78
|
+
return d === void 0 ? `${a}: ${c}` : `${a}: ${c} (${Y(d)})`;
|
|
69
79
|
}
|
|
70
|
-
|
|
71
|
-
|
|
80
|
+
const o = u ? l[u.serie] : void 0, n = u ? o == null ? void 0 : o.points[u.ponto] : void 0;
|
|
81
|
+
function Me() {
|
|
82
|
+
if (!u || !o || !n)
|
|
83
|
+
return [];
|
|
84
|
+
const e = y(n), i = [
|
|
85
|
+
{ color: N[u.serie], format: g, label: be, values: [n.x] },
|
|
86
|
+
{ format: f, label: ge, values: [n.y] }
|
|
87
|
+
];
|
|
88
|
+
return e === void 0 ? i : [...i, { format: Y, label: fe, values: [e] }];
|
|
89
|
+
}
|
|
90
|
+
return /* @__PURE__ */ ee(
|
|
91
|
+
_e,
|
|
72
92
|
{
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
93
|
+
axisReveal: Le,
|
|
94
|
+
containerRef: xe,
|
|
95
|
+
empty: l.every((e) => e.points.length === 0),
|
|
96
|
+
emptyMessage: se,
|
|
76
97
|
grid: [
|
|
77
|
-
{ lines:
|
|
78
|
-
{ lines:
|
|
98
|
+
{ lines: Q.map((e) => M(e)), orientation: "horizontal" },
|
|
99
|
+
{ lines: K.map((e) => w(e)), orientation: "vertical" }
|
|
79
100
|
],
|
|
80
|
-
fillHeight:
|
|
81
|
-
height:
|
|
82
|
-
legend:
|
|
83
|
-
color:
|
|
84
|
-
hidden:
|
|
85
|
-
label:
|
|
101
|
+
fillHeight: ye,
|
|
102
|
+
height: z,
|
|
103
|
+
legend: l.map((e, i) => ({
|
|
104
|
+
color: N[i],
|
|
105
|
+
hidden: L(e.label),
|
|
106
|
+
label: e.label
|
|
86
107
|
})),
|
|
87
|
-
legendAlign:
|
|
88
|
-
legendPosition:
|
|
89
|
-
margins:
|
|
90
|
-
onToggleSeries:
|
|
108
|
+
legendAlign: ue,
|
|
109
|
+
legendPosition: me,
|
|
110
|
+
margins: Ne,
|
|
111
|
+
onToggleSeries: $e,
|
|
91
112
|
plot: t,
|
|
92
|
-
title:
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
113
|
+
title: he,
|
|
114
|
+
tooltip: k ? {
|
|
115
|
+
computed: "none",
|
|
116
|
+
rows: Me(),
|
|
117
|
+
// Com nome no ponto, ele e o titulo e a serie vira subtitulo.
|
|
118
|
+
subtitle: n != null && n.label ? o == null ? void 0 : o.label : void 0,
|
|
119
|
+
title: (n == null ? void 0 : n.label) ?? (o == null ? void 0 : o.label)
|
|
120
|
+
} : void 0,
|
|
121
|
+
width: $,
|
|
122
|
+
xAxis: { hideLine: !0, labelRotation: Se, ticks: we, visibility: O },
|
|
123
|
+
yAxis: { hideLine: !0, ticks: U, visibility: A },
|
|
124
|
+
yAxisRight: { hideLine: !0, ticks: U, visibility: C },
|
|
97
125
|
children: [
|
|
98
|
-
|
|
99
|
-
/* @__PURE__ */
|
|
100
|
-
/* @__PURE__ */
|
|
126
|
+
r && /* @__PURE__ */ ee("g", { "aria-hidden": "true", children: [
|
|
127
|
+
/* @__PURE__ */ h("line", { className: b.guide, x1: r.x, x2: r.x, y1: r.y, y2: t.height }),
|
|
128
|
+
/* @__PURE__ */ h("line", { className: b.guide, x1: 0, x2: r.x, y1: r.y, y2: r.y })
|
|
101
129
|
] }),
|
|
102
|
-
|
|
130
|
+
l.map((e, i) => /* @__PURE__ */ h(
|
|
103
131
|
"g",
|
|
104
132
|
{
|
|
105
|
-
"aria-hidden":
|
|
106
|
-
className: `${
|
|
107
|
-
children:
|
|
108
|
-
if (!Number.isFinite(
|
|
133
|
+
"aria-hidden": L(e.label) || void 0,
|
|
134
|
+
className: `${b.series} ${L(e.label) ? b.seriesOff : ""}`,
|
|
135
|
+
children: e.points.map((a, c) => {
|
|
136
|
+
if (!Number.isFinite(a.x) || !Number.isFinite(a.y))
|
|
109
137
|
return null;
|
|
110
|
-
const
|
|
111
|
-
return /* @__PURE__ */
|
|
138
|
+
const d = w(a.x), Z = M(a.y), E = y(a);
|
|
139
|
+
return /* @__PURE__ */ h(
|
|
112
140
|
"circle",
|
|
113
141
|
{
|
|
114
|
-
"aria-label":
|
|
115
|
-
className:
|
|
116
|
-
cx:
|
|
117
|
-
cy:
|
|
118
|
-
fill:
|
|
119
|
-
onMouseEnter: () =>
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
142
|
+
"aria-label": W(e, a),
|
|
143
|
+
className: b.bubble,
|
|
144
|
+
cx: d,
|
|
145
|
+
cy: Z,
|
|
146
|
+
fill: N[i],
|
|
147
|
+
onMouseEnter: () => {
|
|
148
|
+
I({ x: d, y: Z }), _({ ponto: c, serie: i });
|
|
149
|
+
},
|
|
150
|
+
onMouseLeave: () => {
|
|
151
|
+
I(null), _(null);
|
|
152
|
+
},
|
|
153
|
+
r: E === void 0 ? He : Xe(E),
|
|
154
|
+
children: !k && /* @__PURE__ */ h("title", { children: W(e, a) })
|
|
123
155
|
},
|
|
124
|
-
|
|
156
|
+
c
|
|
125
157
|
);
|
|
126
158
|
})
|
|
127
159
|
},
|
|
128
|
-
|
|
160
|
+
i
|
|
129
161
|
))
|
|
130
162
|
]
|
|
131
163
|
}
|
|
132
164
|
);
|
|
133
165
|
}
|
|
134
166
|
export {
|
|
135
|
-
|
|
167
|
+
Ze as ChartScatter
|
|
136
168
|
};
|
|
137
169
|
//# sourceMappingURL=ChartScatter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChartScatter.js","sources":["../../../../src/components/charts/ChartScatter/ChartScatter.tsx"],"sourcesContent":["import { useMemo, useState } from 'react';\nimport {\n CartesianFrame,\n cartesianLayout,\n chartHeight,\n useChartMetrics,\n useSeriesToggle,\n useTweenedNumbers,\n valueLabelsFor,\n type AxisTick,\n type AxisVisibility,\n type ChartHeight,\n type ChartLegendAlign,\n type ChartLegendPosition,\n} from '../core';\nimport { resolveSeriesColors, type SeriesAppearance } from '../palette';\nimport { domainOf, linearScale, mergeDomains, radiusScale, ticksFor } from '../scales';\nimport { formatarNumero } from '../../../utils/formatters';\nimport styles from './ChartScatter.module.css';\n\nexport interface ChartScatterPoint {\n label?: string;\n x: number;\n y: number;\n z?: number;\n}\n\nexport interface ChartScatterSeries extends SeriesAppearance {\n label: string;\n points: readonly ChartScatterPoint[];\n}\n\nexport interface ChartScatterProps {\n accent?: string;\n defaultHiddenSeries?: readonly string[];\n emptyMessage?: string;\n formatX?: (value: number) => string;\n formatY?: (value: number) => string;\n formatZ?: (value: number) => string;\n /**\n * Inclui o zero no dominio: `true` nos dois eixos, `'x'` ou `'y'` so naquele, `false` em nenhum.\n * Medida que nao se compara ao zero — um ano, uma temperatura — fica com o eixo dela de fora;\n * um ano pede tambem um formato sem separador de milhar em `formatX` ou `formatY`.\n */\n includeZero?: boolean | 'x' | 'y';\n height?: ChartHeight;\n hiddenSeries?: readonly string[];\n legend?: ChartLegendPosition;\n legendAlign?: ChartLegendAlign;\n onHiddenSeriesChange?: (hidden: readonly string[]) => void;\n series: readonly ChartScatterSeries[];\n title: string;\n xAxis?: AxisVisibility;\n yAxis?: AxisVisibility;\n yAxisRight?: AxisVisibility;\n}\n\nconst RAIO_SEM_Z = 5;\nconst FAIXA_DE_RAIO: [number, number] = [4, 18];\n\ninterface Guia {\n x: number;\n y: number;\n}\n\n/** Tamanho invalido tem o destino do ausente: a bolha fica no raio padrao. */\nfunction zValido(ponto: ChartScatterPoint) {\n return ponto.z !== undefined && Number.isFinite(ponto.z) ? ponto.z : undefined;\n}\n\nexport function ChartScatter({\n accent,\n defaultHiddenSeries,\n emptyMessage = 'Sem dados no período',\n formatX = formatarNumero,\n formatY = formatarNumero,\n formatZ = formatarNumero,\n height = 280,\n includeZero = true,\n hiddenSeries,\n legend = 'bottom',\n legendAlign,\n onHiddenSeriesChange,\n series,\n title,\n xAxis = 'visible',\n yAxis = 'visible',\n yAxisRight = 'hidden',\n}: ChartScatterProps) {\n const { font, height: alturaMedida, ref, width } = useChartMetrics();\n const { fillHeight, value: alturaDoDesenho } = chartHeight(height, alturaMedida);\n const { isHidden, toggle } = useSeriesToggle({ defaultHiddenSeries, hiddenSeries, onHiddenSeriesChange });\n const [guia, setGuia] = useState<Guia | null>(null);\n\n // A cor sai da lista inteira, e nao das visiveis: desligar uma serie nao pode\n // repintar as demais.\n const cores = useMemo(() => resolveSeriesColors(series, { accent }), [accent, series]);\n\n const visiveis = useMemo(() => series.filter((serie) => !isHidden(serie.label)), [isHidden, series]);\n\n const zeroEmX = includeZero === true || includeZero === 'x';\n const zeroEmY = includeZero === true || includeZero === 'y';\n\n const dominioX = useMemo(\n () =>\n mergeDomains(visiveis.map((serie) => domainOf(serie.points.map((p) => p.x), { includeZero: zeroEmX }))),\n [visiveis, zeroEmX],\n );\n\n const dominioY = useMemo(\n () =>\n mergeDomains(visiveis.map((serie) => domainOf(serie.points.map((p) => p.y), { includeZero: zeroEmY }))),\n [visiveis, zeroEmY],\n );\n\n const maiorZ = useMemo(\n () =>\n series.reduce(\n (maior, serie) => serie.points.reduce((parcial, ponto) => Math.max(parcial, zValido(ponto) ?? 0), maior),\n 0,\n ),\n [series],\n );\n\n const rotulosY = valueLabelsFor(dominioY, alturaDoDesenho, formatY);\n const rotulosX = valueLabelsFor(dominioX, width, formatX);\n\n const { margins, plot, rotation } = cartesianLayout({\n bottomLabels: rotulosX,\n font,\n height: alturaDoDesenho,\n labelAngle: 'auto',\n leftLabels: rotulosY,\n rightLabels: rotulosY,\n topRoom: 0,\n width,\n xAxis,\n yAxis,\n yAxisRight,\n });\n\n // As escalas alvo fixam as marcas; as animadas posicionam o desenho. Sem\n // separar as duas, as marcas exibiriam valores quebrados durante a transicao.\n const alvoX = useMemo(() => linearScale({ domain: dominioX, range: [0, plot.width] }), [dominioX, plot.width]);\n const alvoY = useMemo(() => linearScale({ domain: dominioY, range: [plot.height, 0] }), [dominioY, plot.height]);\n\n const [minX, maxX, minY, maxY] = useTweenedNumbers([...alvoX.domain(), ...alvoY.domain()]);\n\n const escalaX = useMemo(\n () => linearScale({ domain: { min: minX, max: maxX }, nice: false, range: [0, plot.width] }),\n [maxX, minX, plot.width],\n );\n const escalaY = useMemo(\n () => linearScale({ domain: { min: minY, max: maxY }, nice: false, range: [plot.height, 0] }),\n [maxY, minY, plot.height],\n );\n const escalaRaio = useMemo(() => radiusScale(maiorZ, FAIXA_DE_RAIO), [maiorZ]);\n\n const marcasX = ticksFor(alvoX, plot.width);\n const marcasY = ticksFor(alvoY, plot.height);\n\n const ticksX: AxisTick[] = marcasX.map((valor) => ({ label: formatX(valor), position: escalaX(valor) }));\n const ticksY: AxisTick[] = marcasY.map((valor) => ({ label: formatY(valor), position: escalaY(valor) }));\n\n function descrever(serie: ChartScatterSeries, ponto: ChartScatterPoint) {\n const inicio = ponto.label ? `${serie.label}, ${ponto.label}` : serie.label;\n const posicao = `${formatX(ponto.x)} × ${formatY(ponto.y)}`;\n const z = zValido(ponto);\n\n return z === undefined ? `${inicio}: ${posicao}` : `${inicio}: ${posicao} (${formatZ(z)})`;\n }\n\n return (\n <CartesianFrame\n containerRef={ref}\n empty={series.every((serie) => serie.points.length === 0)}\n emptyMessage={emptyMessage}\n grid={[\n { lines: marcasY.map((valor) => escalaY(valor)), orientation: 'horizontal' },\n { lines: marcasX.map((valor) => escalaX(valor)), orientation: 'vertical' },\n ]}\n fillHeight={fillHeight}\n height={alturaDoDesenho}\n legend={series.map((serie, indice) => ({\n color: cores[indice],\n hidden: isHidden(serie.label),\n label: serie.label,\n }))}\n legendAlign={legendAlign}\n legendPosition={legend}\n margins={margins}\n onToggleSeries={toggle}\n plot={plot}\n title={title}\n width={width}\n xAxis={{ hideLine: true, labelRotation: rotation, ticks: ticksX, visibility: xAxis }}\n yAxis={{ hideLine: true, ticks: ticksY, visibility: yAxis }}\n yAxisRight={{ hideLine: true, ticks: ticksY, visibility: yAxisRight }}\n >\n {guia && (\n <g aria-hidden=\"true\">\n <line className={styles.guide} x1={guia.x} x2={guia.x} y1={guia.y} y2={plot.height} />\n <line className={styles.guide} x1={0} x2={guia.x} y1={guia.y} y2={guia.y} />\n </g>\n )}\n\n {series.map((serie, indiceSerie) => (\n <g\n aria-hidden={isHidden(serie.label) || undefined}\n className={`${styles.series} ${isHidden(serie.label) ? styles.seriesOff : ''}`}\n key={indiceSerie}\n >\n {serie.points.map((ponto, indice) => {\n if (!Number.isFinite(ponto.x) || !Number.isFinite(ponto.y)) {\n return null;\n }\n\n const x = escalaX(ponto.x);\n const y = escalaY(ponto.y);\n const z = zValido(ponto);\n\n return (\n <circle\n aria-label={descrever(serie, ponto)}\n className={styles.bubble}\n cx={x}\n cy={y}\n fill={cores[indiceSerie]}\n key={indice}\n onMouseEnter={() => setGuia({ x, y })}\n onMouseLeave={() => setGuia(null)}\n r={z === undefined ? RAIO_SEM_Z : escalaRaio(z)}\n >\n <title>{descrever(serie, ponto)}</title>\n </circle>\n );\n })}\n </g>\n ))}\n </CartesianFrame>\n );\n}\n"],"names":["RAIO_SEM_Z","FAIXA_DE_RAIO","zValido","ponto","ChartScatter","accent","defaultHiddenSeries","emptyMessage","formatX","formatarNumero","formatY","formatZ","height","includeZero","hiddenSeries","legend","legendAlign","onHiddenSeriesChange","series","title","xAxis","yAxis","yAxisRight","font","alturaMedida","ref","width","useChartMetrics","fillHeight","alturaDoDesenho","chartHeight","isHidden","toggle","useSeriesToggle","guia","setGuia","useState","cores","useMemo","resolveSeriesColors","visiveis","serie","zeroEmX","zeroEmY","dominioX","mergeDomains","domainOf","p","dominioY","maiorZ","maior","parcial","rotulosY","valueLabelsFor","rotulosX","margins","plot","rotation","cartesianLayout","alvoX","linearScale","alvoY","minX","maxX","minY","maxY","useTweenedNumbers","escalaX","escalaY","escalaRaio","radiusScale","marcasX","ticksFor","marcasY","ticksX","valor","ticksY","descrever","inicio","posicao","z","jsxs","CartesianFrame","indice","jsx","styles","indiceSerie","x","y"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ChartScatter.js","sources":["../../../../src/components/charts/ChartScatter/ChartScatter.tsx"],"sourcesContent":["import { useMemo, useState } from 'react';\nimport {\n CartesianFrame,\n seriesInScale,\n useCartesianLayout,\n chartHeight,\n useChartMetrics,\n useSeriesToggle,\n useTweenedNumbers,\n valueLabelsFor,\n type AxisTick,\n type AxisVisibility,\n type ChartHeight,\n type ChartLegendAlign,\n type ChartLegendPosition,\n} from '../core';\nimport { resolveSeriesColors, type SeriesAppearance } from '../palette';\nimport { domainOf, linearScale, mergeDomains, radiusScale, ticksFor } from '../scales';\nimport { formatarNumero } from '../../../utils/formatters';\nimport styles from './ChartScatter.module.css';\n\nexport interface ChartScatterPoint {\n label?: string;\n x: number;\n y: number;\n z?: number;\n}\n\nexport interface ChartScatterSeries extends SeriesAppearance {\n label: string;\n points: readonly ChartScatterPoint[];\n}\n\nexport interface ChartScatterProps {\n accent?: string;\n defaultHiddenSeries?: readonly string[];\n emptyMessage?: string;\n formatX?: (value: number) => string;\n formatY?: (value: number) => string;\n formatZ?: (value: number) => string;\n /**\n * Inclui o zero no dominio: `true` nos dois eixos, `'x'` ou `'y'` so naquele, `false` em nenhum.\n * Medida que nao se compara ao zero — um ano, uma temperatura — fica com o eixo dela de fora;\n * um ano pede tambem um formato sem separador de milhar em `formatX` ou `formatY`.\n */\n includeZero?: boolean | 'x' | 'y';\n height?: ChartHeight;\n hiddenSeries?: readonly string[];\n legend?: ChartLegendPosition;\n legendAlign?: ChartLegendAlign;\n onHiddenSeriesChange?: (hidden: readonly string[]) => void;\n series: readonly ChartScatterSeries[];\n /** Balao com o detalhe do que esta sob o ponteiro. Desligue para nao mostrar nada alem do `<title>` nativo. */\n showTooltip?: boolean;\n title: string;\n /** Nome de cada medida no balao. */\n xLabel?: string;\n yLabel?: string;\n zLabel?: string;\n xAxis?: AxisVisibility;\n yAxis?: AxisVisibility;\n yAxisRight?: AxisVisibility;\n}\n\nconst RAIO_SEM_Z = 5;\nconst FAIXA_DE_RAIO: [number, number] = [4, 18];\n\ninterface Guia {\n x: number;\n y: number;\n}\n\n/** Tamanho invalido tem o destino do ausente: a bolha fica no raio padrao. */\nfunction zValido(ponto: ChartScatterPoint) {\n return ponto.z !== undefined && Number.isFinite(ponto.z) ? ponto.z : undefined;\n}\n\nexport function ChartScatter({\n accent,\n defaultHiddenSeries,\n emptyMessage = 'Sem dados no período',\n formatX = formatarNumero,\n formatY = formatarNumero,\n formatZ = formatarNumero,\n height = 280,\n includeZero = true,\n hiddenSeries,\n legend = 'bottom',\n legendAlign,\n onHiddenSeriesChange,\n series,\n showTooltip = true,\n title,\n xLabel = 'X',\n yLabel = 'Y',\n zLabel = 'Tamanho',\n xAxis = 'visible',\n yAxis = 'visible',\n yAxisRight = 'hidden',\n}: ChartScatterProps) {\n const { font, height: alturaMedida, ref, width } = useChartMetrics();\n const { fillHeight, value: alturaDoDesenho } = chartHeight(height, alturaMedida);\n const { isHidden, isOutOfScale, toggle } = useSeriesToggle({\n defaultHiddenSeries,\n hiddenSeries,\n labels: series.map((serie) => serie.label),\n onHiddenSeriesChange,\n });\n const [guia, setGuia] = useState<Guia | null>(null);\n const [emFoco, setEmFoco] = useState<{ ponto: number; serie: number } | null>(null);\n\n // A cor sai da lista inteira, e nao das visiveis: desligar uma serie nao pode\n // repintar as demais.\n const cores = useMemo(() => resolveSeriesColors(series, { accent }), [accent, series]);\n\n const naEscala = useMemo(() => seriesInScale(series, isOutOfScale), [isOutOfScale, series]);\n\n const zeroEmX = includeZero === true || includeZero === 'x';\n const zeroEmY = includeZero === true || includeZero === 'y';\n\n const dominioX = useMemo(\n () =>\n mergeDomains(naEscala.map((serie) => domainOf(serie.points.map((p) => p.x), { includeZero: zeroEmX }))),\n [naEscala, zeroEmX],\n );\n\n const dominioY = useMemo(\n () =>\n mergeDomains(naEscala.map((serie) => domainOf(serie.points.map((p) => p.y), { includeZero: zeroEmY }))),\n [naEscala, zeroEmY],\n );\n\n const maiorZ = useMemo(\n () =>\n series.reduce(\n (maior, serie) => serie.points.reduce((parcial, ponto) => Math.max(parcial, zValido(ponto) ?? 0), maior),\n 0,\n ),\n [series],\n );\n\n const rotulosY = valueLabelsFor(dominioY, alturaDoDesenho, formatY);\n const rotulosX = valueLabelsFor(dominioX, width, formatX);\n\n const { axisReveal, margins, plot, rotation } = useCartesianLayout({\n bottomLabels: rotulosX,\n font,\n height: alturaDoDesenho,\n labelAngle: 'auto',\n leftLabels: rotulosY,\n rightLabels: rotulosY,\n topRoom: 0,\n width,\n xAxis,\n yAxis,\n yAxisRight,\n });\n\n // As escalas alvo fixam as marcas; as animadas posicionam o desenho. Sem\n // separar as duas, as marcas exibiriam valores quebrados durante a transicao.\n const alvoX = useMemo(() => linearScale({ domain: dominioX, range: [0, plot.width] }), [dominioX, plot.width]);\n const alvoY = useMemo(() => linearScale({ domain: dominioY, range: [plot.height, 0] }), [dominioY, plot.height]);\n\n const [minX, maxX, minY, maxY] = useTweenedNumbers([...alvoX.domain(), ...alvoY.domain()]);\n\n const escalaX = useMemo(\n () => linearScale({ domain: { min: minX, max: maxX }, nice: false, range: [0, plot.width] }),\n [maxX, minX, plot.width],\n );\n const escalaY = useMemo(\n () => linearScale({ domain: { min: minY, max: maxY }, nice: false, range: [plot.height, 0] }),\n [maxY, minY, plot.height],\n );\n const escalaRaio = useMemo(() => radiusScale(maiorZ, FAIXA_DE_RAIO), [maiorZ]);\n\n const marcasX = ticksFor(alvoX, plot.width);\n const marcasY = ticksFor(alvoY, plot.height);\n\n const ticksX: AxisTick[] = marcasX.map((valor) => ({ label: formatX(valor), position: escalaX(valor) }));\n const ticksY: AxisTick[] = marcasY.map((valor) => ({ label: formatY(valor), position: escalaY(valor) }));\n\n function descrever(serie: ChartScatterSeries, ponto: ChartScatterPoint) {\n const inicio = ponto.label ? `${serie.label}, ${ponto.label}` : serie.label;\n const posicao = `${formatX(ponto.x)} × ${formatY(ponto.y)}`;\n const z = zValido(ponto);\n\n return z === undefined ? `${inicio}: ${posicao}` : `${inicio}: ${posicao} (${formatZ(z)})`;\n }\n\n const serieEmFoco = emFoco ? series[emFoco.serie] : undefined;\n const pontoEmFoco = emFoco ? serieEmFoco?.points[emFoco.ponto] : undefined;\n\n function linhasDoBalao() {\n if (!emFoco || !serieEmFoco || !pontoEmFoco) {\n return [];\n }\n\n const z = zValido(pontoEmFoco);\n const linhas = [\n { color: cores[emFoco.serie], format: formatX, label: xLabel, values: [pontoEmFoco.x] },\n { format: formatY, label: yLabel, values: [pontoEmFoco.y] },\n ];\n\n return z === undefined ? linhas : [...linhas, { format: formatZ, label: zLabel, values: [z] }];\n }\n\n return (\n <CartesianFrame\n axisReveal={axisReveal}\n containerRef={ref}\n empty={series.every((serie) => serie.points.length === 0)}\n emptyMessage={emptyMessage}\n grid={[\n { lines: marcasY.map((valor) => escalaY(valor)), orientation: 'horizontal' },\n { lines: marcasX.map((valor) => escalaX(valor)), orientation: 'vertical' },\n ]}\n fillHeight={fillHeight}\n height={alturaDoDesenho}\n legend={series.map((serie, indice) => ({\n color: cores[indice],\n hidden: isHidden(serie.label),\n label: serie.label,\n }))}\n legendAlign={legendAlign}\n legendPosition={legend}\n margins={margins}\n onToggleSeries={toggle}\n plot={plot}\n title={title}\n tooltip={\n showTooltip\n ? {\n computed: 'none',\n rows: linhasDoBalao(),\n // Com nome no ponto, ele e o titulo e a serie vira subtitulo.\n subtitle: pontoEmFoco?.label ? serieEmFoco?.label : undefined,\n title: pontoEmFoco?.label ?? serieEmFoco?.label,\n }\n : undefined\n }\n width={width}\n xAxis={{ hideLine: true, labelRotation: rotation, ticks: ticksX, visibility: xAxis }}\n yAxis={{ hideLine: true, ticks: ticksY, visibility: yAxis }}\n yAxisRight={{ hideLine: true, ticks: ticksY, visibility: yAxisRight }}\n >\n {guia && (\n <g aria-hidden=\"true\">\n <line className={styles.guide} x1={guia.x} x2={guia.x} y1={guia.y} y2={plot.height} />\n <line className={styles.guide} x1={0} x2={guia.x} y1={guia.y} y2={guia.y} />\n </g>\n )}\n\n {series.map((serie, indiceSerie) => (\n <g\n aria-hidden={isHidden(serie.label) || undefined}\n className={`${styles.series} ${isHidden(serie.label) ? styles.seriesOff : ''}`}\n key={indiceSerie}\n >\n {serie.points.map((ponto, indice) => {\n if (!Number.isFinite(ponto.x) || !Number.isFinite(ponto.y)) {\n return null;\n }\n\n const x = escalaX(ponto.x);\n const y = escalaY(ponto.y);\n const z = zValido(ponto);\n\n return (\n <circle\n aria-label={descrever(serie, ponto)}\n className={styles.bubble}\n cx={x}\n cy={y}\n fill={cores[indiceSerie]}\n key={indice}\n onMouseEnter={() => {\n setGuia({ x, y });\n setEmFoco({ ponto: indice, serie: indiceSerie });\n }}\n onMouseLeave={() => {\n setGuia(null);\n setEmFoco(null);\n }}\n r={z === undefined ? RAIO_SEM_Z : escalaRaio(z)}\n >\n {!showTooltip && <title>{descrever(serie, ponto)}</title>}\n </circle>\n );\n })}\n </g>\n ))}\n </CartesianFrame>\n );\n}\n"],"names":["RAIO_SEM_Z","FAIXA_DE_RAIO","zValido","ponto","ChartScatter","accent","defaultHiddenSeries","emptyMessage","formatX","formatarNumero","formatY","formatZ","height","includeZero","hiddenSeries","legend","legendAlign","onHiddenSeriesChange","series","showTooltip","title","xLabel","yLabel","zLabel","xAxis","yAxis","yAxisRight","font","alturaMedida","ref","width","useChartMetrics","fillHeight","alturaDoDesenho","chartHeight","isHidden","isOutOfScale","toggle","useSeriesToggle","serie","guia","setGuia","useState","emFoco","setEmFoco","cores","useMemo","resolveSeriesColors","naEscala","seriesInScale","zeroEmX","zeroEmY","dominioX","mergeDomains","domainOf","p","dominioY","maiorZ","maior","parcial","rotulosY","valueLabelsFor","rotulosX","axisReveal","margins","plot","rotation","useCartesianLayout","alvoX","linearScale","alvoY","minX","maxX","minY","maxY","useTweenedNumbers","escalaX","escalaY","escalaRaio","radiusScale","marcasX","ticksFor","marcasY","ticksX","valor","ticksY","descrever","inicio","posicao","z","serieEmFoco","pontoEmFoco","linhasDoBalao","linhas","jsxs","CartesianFrame","indice","jsx","styles","indiceSerie","x","y"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e="_bubble_okzta_1",s="_guide_okzta_11",
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e="_bubble_okzta_1",s="_guide_okzta_11",_="_series_okzta_23 _series_yf6oe_211",i="_seriesOff_okzta_27 _seriesOff_yf6oe_215",t={bubble:e,guide:s,series:_,seriesOff:i};exports.bubble=e;exports.default=t;exports.guide=s;exports.series=_;exports.seriesOff=i;
|
|
2
2
|
//# sourceMappingURL=ChartScatter.module.css.cjs.map
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
const e = "_bubble_okzta_1", s = "_guide_okzta_11", _ = "_series_okzta_23
|
|
1
|
+
const e = "_bubble_okzta_1", s = "_guide_okzta_11", _ = "_series_okzta_23 _series_yf6oe_211", o = "_seriesOff_okzta_27 _seriesOff_yf6oe_215", t = {
|
|
2
2
|
bubble: e,
|
|
3
3
|
guide: s,
|
|
4
4
|
series: _,
|
|
5
|
-
seriesOff:
|
|
5
|
+
seriesOff: o
|
|
6
6
|
};
|
|
7
7
|
export {
|
|
8
8
|
e as bubble,
|
|
9
9
|
t as default,
|
|
10
10
|
s as guide,
|
|
11
11
|
_ as series,
|
|
12
|
-
|
|
12
|
+
o as seriesOff
|
|
13
13
|
};
|
|
14
14
|
//# sourceMappingURL=ChartScatter.module.css.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("react/jsx-runtime"),m=require("react"),I=require("d3-hierarchy"),f=require("./ChartSunburst.module.css.cjs"),le=require("../core/useChartMetrics.cjs"),ue=require("../core/useSeriesToggle.cjs"),ce=require("../palette/seriesColor.cjs"),k=require("../core/measureText.cjs"),g=require("../core/spacing.cjs"),v=require("../core/arcs.cjs"),de=require("../core/ChartFrame.cjs"),he=require("../core/tooltips.cjs"),U=require("../core/hoverPath.cjs"),me=require("../../../utils/formatters/formatarNumero.cjs"),fe=require("../core/cartesianLayout.cjs"),ge=.18,C=14;function w(a,n=1,s=new Map){return a.forEach(o=>{var x;s.set(n,[...s.get(n)??[],o.label]),(x=o.children)!=null&&x.length&&w(o.children,n+1,s)}),s}function xe(a,n){if(n<=1)return a;const s=Math.min((n-1)*22,66);return`color-mix(in oklab, ${a} ${100-s}%, var(--pl-color-surface))`}function pe({accent:a,defaultHiddenGroups:n,emptyMessage:s="Sem dados no período",formatPercent:o=M=>`${Math.round(M*100)}%`,formatTooltipValue:x,formatValue:L=me.formatarNumero,height:G=320,hiddenGroups:W,legend:Z="bottom",legendAlign:J,nodes:i,onHiddenGroupsChange:K,onHoverNode:p,ringGap:Q=2,showLabels:A=!0,showTooltip:F=!0,sliceRadius:V,title:X}){const{font:M,height:Y,radius:z,ref:ee,width:S}=le.useChartMetrics(),{fillHeight:te,value:D}=fe.chartHeight(G,Y),{isHidden:T,toggle:re}=ue.useSeriesToggle({defaultHiddenSeries:n,hiddenSeries:W,onHiddenSeriesChange:K}),[O,ne]=m.useState(null),R=m.useMemo(()=>ce.resolveSeriesColors(i,{accent:a}),[a,i]),b=m.useMemo(()=>i.filter(e=>!T(e.label)),[T,i]),se=m.useMemo(()=>{const e=w(b),t=Math.max(0,...e.keys());return e.get(t)??[]},[b]),N=A?Math.min(k.widestLabel(se,M),S*g.CHART_LABEL_BAND):0,ae=A?C*2+g.CHART_LABEL_OFFSET+N:0,q=g.ringDiameter(Math.max(S-ae*2,0),D)/2,d=m.useMemo(()=>{if(q<=0)return[];const e=I.hierarchy({children:b,label:""}).sum(r=>Math.max(r.value??0,0)).sort((r,u)=>(u.value??0)-(r.value??0));return I.partition().size([v.VOLTA,q])(e).descendants().filter(r=>r.depth>0)},[q,b]),ie=d.reduce((e,t)=>Math.max(e,t.depth),0),y=d.filter(e=>e.depth===1).reduce((e,t)=>e+(t.value??0),0),l=O&&d.includes(O)?O:null;function oe(e){return l===null||l.ancestors().includes(e)}function j(e){ne(e),p==null||p(e&&U.hoverPath(e))}function B(e){var u;const t=(u=e.ancestors().find(h=>h.depth===1))==null?void 0:u.data,r=(t==null?void 0:t.color)??R[i.findIndex(h=>h.label===(t==null?void 0:t.label))];return xe(r??"var(--pl-chart-neutral)",e.depth)}function P(e){const t=y>0?(e.value??0)/y:0;return`${e.data.label}: ${L(e.value??0)} (${o(t)})`}return c.jsxs(de.ChartFrame,{centerOrigin:!0,containerRef:ee,empty:i.length===0,emptyMessage:s,fillHeight:te,height:D,legend:i.map((e,t)=>({color:R[t],hidden:T(e.label),label:e.label})),legendAlign:J,legendPosition:Z,onToggleSeries:re,swatch:"dot",title:X,tooltip:F?he.pathTooltip({color:l?B(l):void 0,format:x??L,formatPercent:o,path:l&&U.hoverPath(l),total:y}):void 0,width:S,children:[d.map((e,t)=>c.jsx("path",{"aria-label":P(e),className:`${f.default.arc} ${oe(e)?"":f.default.arcDim}`,d:v.arcPath({cornerRadius:V??z,endAngle:e.x1,innerRadius:e.y0+(e.depth>1?Q:0),outerRadius:e.y1,startAngle:e.x0}),fill:B(e),onMouseEnter:()=>j(e),onMouseLeave:()=>j(null),children:!F&&!p&&c.jsx("title",{children:P(e)})},t)),A&&d.filter(e=>e.depth===ie&&e.x1-e.x0>=ge).map((e,t)=>{const r={endAngle:e.x1,startAngle:e.x0},[u,h]=v.arcAnchor(r,e.y1),[_,$]=v.arcAnchor(r,e.y1+C),E=_>=0,H=_+(E?C:-C);return c.jsxs("g",{className:f.default.leader,children:[c.jsx("polyline",{className:f.default.connector,points:`${u},${h} ${_},${$} ${H},${$}`}),c.jsx("text",{className:f.default.label,dominantBaseline:"middle",textAnchor:E?"start":"end",x:H+(E?g.CHART_LABEL_OFFSET:-g.CHART_LABEL_OFFSET),y:$,children:k.truncateToWidth(e.data.label,M,N)})]},t)})]})}exports.ChartSunburst=pe;
|
|
2
2
|
//# sourceMappingURL=ChartSunburst.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChartSunburst.cjs","sources":["../../../../src/components/charts/ChartSunburst/ChartSunburst.tsx"],"sourcesContent":["import { useMemo, useState } from 'react';\nimport { hierarchy, partition, type HierarchyRectangularNode } from 'd3-hierarchy';\nimport {\n CHART_LABEL_BAND,\n CHART_LABEL_OFFSET,\n ChartFrame,\n VOLTA,\n arcAnchor,\n arcPath,\n chartHeight,\n ringDiameter,\n truncateToWidth,\n useChartMetrics,\n useSeriesToggle,\n widestLabel,\n type ChartHeight,\n type ChartLegendAlign,\n type ChartLegendPosition,\n} from '../core';\nimport { resolveSeriesColors, type SeriesAppearance } from '../palette';\nimport { formatarNumero } from '../../../utils/formatters';\nimport styles from './ChartSunburst.module.css';\n\nexport interface ChartSunburstNode extends SeriesAppearance {\n children?: readonly ChartSunburstNode[];\n label: string;\n value?: number;\n}\n\nexport interface ChartSunburstProps {\n accent?: string;\n defaultHiddenGroups?: readonly string[];\n emptyMessage?: string;\n formatPercent?: (ratio: number) => string;\n formatValue?: (value: number) => string;\n height?: ChartHeight;\n hiddenGroups?: readonly string[];\n legend?: ChartLegendPosition;\n legendAlign?: ChartLegendAlign;\n nodes: readonly ChartSunburstNode[];\n onHiddenGroupsChange?: (hidden: readonly string[]) => void;\n /** Folga entre dois aneis vizinhos. */\n ringGap?: number;\n /** Raio das pontas de cada arco. Sem valor, o token de raio pequeno. */\n sliceRadius?: number;\n showLabels?: boolean;\n title: string;\n}\n\ntype Arco = HierarchyRectangularNode<ChartSunburstNode>;\n\n/** Arco menor que isso nao comporta rotulo nem conector legivel. */\nconst ANGULO_MINIMO_DO_ROTULO = 0.18;\nconst COMPRIMENTO_DO_CONECTOR = 14;\n/**\n * Rotulos de cada nivel da arvore declarada. Medir a banda antes de montar o\n * anel exige saber os rotulos antes, e o nivel mais profundo declarado e o\n * mesmo que o anel externo tera.\n */\nfunction rotulosPorNivel(\n nodes: readonly ChartSunburstNode[],\n nivel = 1,\n por = new Map<number, string[]>(),\n) {\n nodes.forEach((no) => {\n por.set(nivel, [...(por.get(nivel) ?? []), no.label]);\n\n if (no.children?.length) {\n rotulosPorNivel(no.children, nivel + 1, por);\n }\n });\n\n return por;\n}\n\n/**\n * Cada anel clareia sobre o anterior, e o filho nasce da cor do pai. Sem isso a\n * hierarquia sumiria: os aneis externos repetiriam a cor do nivel zero e nada\n * distinguiria um filho do outro.\n */\nfunction tomDoNivel(cor: string, profundidade: number) {\n if (profundidade <= 1) {\n return cor;\n }\n\n const clareamento = Math.min((profundidade - 1) * 22, 66);\n\n return `color-mix(in oklab, ${cor} ${100 - clareamento}%, var(--pl-color-surface))`;\n}\n\nexport function ChartSunburst({\n accent,\n defaultHiddenGroups,\n emptyMessage = 'Sem dados no período',\n formatPercent = (fracao) => `${Math.round(fracao * 100)}%`,\n formatValue = formatarNumero,\n height = 320,\n hiddenGroups,\n legend = 'bottom',\n legendAlign,\n nodes,\n onHiddenGroupsChange,\n ringGap = 2,\n showLabels = true,\n sliceRadius,\n title,\n}: ChartSunburstProps) {\n const { font, height: alturaMedida, radius: raioDoCanto, ref, width } = useChartMetrics();\n const { fillHeight, value: alturaDoDesenho } = chartHeight(height, alturaMedida);\n const { isHidden, toggle } = useSeriesToggle({\n defaultHiddenSeries: defaultHiddenGroups,\n hiddenSeries: hiddenGroups,\n onHiddenSeriesChange: onHiddenGroupsChange,\n });\n const [emFoco, setEmFoco] = useState<Arco | null>(null);\n\n // A cor sai da lista inteira, e nao das visiveis: desligar um grupo nao pode\n // repintar os demais.\n const coresDeNivelZero = useMemo(() => resolveSeriesColors(nodes, { accent }), [accent, nodes]);\n\n const visiveis = useMemo(\n () => nodes.filter((grupo) => !isHidden(grupo.label)),\n [isHidden, nodes],\n );\n\n // A banda dos rotulos e reservada antes do anel, medida pelo rotulo mais\n // largo do anel externo. Sem reservar, o rotulo era desenhado no que sobrasse\n // — quase nada nas laterais — e acabava cortado ate sumir.\n const rotulosExternos = useMemo(() => {\n const niveis = rotulosPorNivel(visiveis);\n const externo = Math.max(0, ...niveis.keys());\n\n return niveis.get(externo) ?? [];\n }, [visiveis]);\n\n const larguraDoRotulo = showLabels\n ? Math.min(widestLabel(rotulosExternos, font), width * CHART_LABEL_BAND)\n : 0;\n const banda = showLabels ? COMPRIMENTO_DO_CONECTOR * 2 + CHART_LABEL_OFFSET + larguraDoRotulo : 0;\n\n const diametro = ringDiameter(Math.max(width - banda * 2, 0), alturaDoDesenho);\n const raio = diametro / 2;\n\n const arcos = useMemo(() => {\n if (raio <= 0) {\n return [];\n }\n\n const arvore = hierarchy<ChartSunburstNode>({ children: visiveis, label: '' })\n .sum((no) => Math.max(no.value ?? 0, 0))\n .sort((a, b) => (b.value ?? 0) - (a.value ?? 0));\n\n const repartir = partition<ChartSunburstNode>().size([VOLTA, raio]);\n\n return repartir(arvore)\n .descendants()\n .filter((no) => no.depth > 0);\n }, [raio, visiveis]);\n\n const profundidadeMaxima = arcos.reduce((maior, arco) => Math.max(maior, arco.depth), 0);\n const total = arcos\n .filter((arco) => arco.depth === 1)\n .reduce((soma, arco) => soma + (arco.value ?? 0), 0);\n\n // O arco guardado deixa de existir quando a arvore e remontada, num\n // redimensionamento por exemplo. Sem conferir, o foco perdido apagaria tudo.\n const foco = emFoco && arcos.includes(emFoco) ? emFoco : null;\n\n /**\n * Acende o arco sob o ponteiro e os que o originaram. O caminho ate a raiz e\n * o que explica de onde aquela fatia veio; os filhos dela nao explicam nada\n * sobre ela, entao ficam apagados junto com o resto.\n */\n function aceso(arco: Arco) {\n return foco === null || foco.ancestors().includes(arco);\n }\n\n function corDe(arco: Arco) {\n const raizDoRamo = arco.ancestors().find((ancestral) => ancestral.depth === 1)?.data;\n const base =\n raizDoRamo?.color ?? coresDeNivelZero[nodes.findIndex((no) => no.label === raizDoRamo?.label)];\n\n return tomDoNivel(base ?? 'var(--pl-chart-neutral)', arco.depth);\n }\n\n function descreverArco(arco: Arco) {\n const fracao = total > 0 ? (arco.value ?? 0) / total : 0;\n\n return `${arco.data.label}: ${formatValue(arco.value ?? 0)} (${formatPercent(fracao)})`;\n }\n\n return (\n <ChartFrame\n centerOrigin\n containerRef={ref}\n empty={nodes.length === 0}\n emptyMessage={emptyMessage}\n fillHeight={fillHeight}\n height={alturaDoDesenho}\n legend={nodes.map((grupo, indice) => ({\n color: coresDeNivelZero[indice],\n hidden: isHidden(grupo.label),\n label: grupo.label,\n }))}\n legendAlign={legendAlign}\n legendPosition={legend}\n onToggleSeries={toggle}\n swatch=\"dot\"\n title={title}\n width={width}\n >\n {arcos.map((arco, indice) => (\n <path\n aria-label={descreverArco(arco)}\n className={`${styles.arc} ${aceso(arco) ? '' : styles.arcDim}`}\n d={arcPath({\n cornerRadius: sliceRadius ?? raioDoCanto,\n endAngle: arco.x1,\n innerRadius: arco.y0 + (arco.depth > 1 ? ringGap : 0),\n outerRadius: arco.y1,\n startAngle: arco.x0,\n })}\n fill={corDe(arco)}\n key={indice}\n onMouseEnter={() => setEmFoco(arco)}\n onMouseLeave={() => setEmFoco(null)}\n >\n <title>{descreverArco(arco)}</title>\n </path>\n ))}\n\n {showLabels &&\n arcos\n .filter(\n (arco) => arco.depth === profundidadeMaxima && arco.x1 - arco.x0 >= ANGULO_MINIMO_DO_ROTULO,\n )\n .map((arco, indice) => {\n const angulos = { endAngle: arco.x1, startAngle: arco.x0 };\n const [xBorda, yBorda] = arcAnchor(angulos, arco.y1);\n const [xCotovelo, yCotovelo] = arcAnchor(angulos, arco.y1 + COMPRIMENTO_DO_CONECTOR);\n const paraDireita = xCotovelo >= 0;\n const xFim = xCotovelo + (paraDireita ? COMPRIMENTO_DO_CONECTOR : -COMPRIMENTO_DO_CONECTOR);\n\n return (\n <g className={styles.leader} key={indice}>\n <polyline\n className={styles.connector}\n points={`${xBorda},${yBorda} ${xCotovelo},${yCotovelo} ${xFim},${yCotovelo}`}\n />\n <text\n className={styles.label}\n dominantBaseline=\"middle\"\n textAnchor={paraDireita ? 'start' : 'end'}\n x={xFim + (paraDireita ? CHART_LABEL_OFFSET : -CHART_LABEL_OFFSET)}\n y={yCotovelo}\n >\n {truncateToWidth(arco.data.label, font, larguraDoRotulo)}\n </text>\n </g>\n );\n })}\n </ChartFrame>\n );\n}\n"],"names":["ANGULO_MINIMO_DO_ROTULO","COMPRIMENTO_DO_CONECTOR","rotulosPorNivel","nodes","nivel","por","no","_a","tomDoNivel","cor","profundidade","clareamento","ChartSunburst","accent","defaultHiddenGroups","emptyMessage","formatPercent","fracao","formatValue","formatarNumero","height","hiddenGroups","legend","legendAlign","onHiddenGroupsChange","ringGap","showLabels","sliceRadius","title","font","alturaMedida","raioDoCanto","ref","width","useChartMetrics","fillHeight","alturaDoDesenho","chartHeight","isHidden","toggle","useSeriesToggle","emFoco","setEmFoco","useState","coresDeNivelZero","useMemo","resolveSeriesColors","visiveis","grupo","rotulosExternos","niveis","externo","larguraDoRotulo","widestLabel","CHART_LABEL_BAND","banda","CHART_LABEL_OFFSET","raio","ringDiameter","arcos","arvore","hierarchy","a","b","partition","VOLTA","profundidadeMaxima","maior","arco","total","soma","foco","aceso","corDe","raizDoRamo","ancestral","base","descreverArco","jsxs","ChartFrame","indice","jsx","styles","arcPath","angulos","xBorda","yBorda","arcAnchor","xCotovelo","yCotovelo","paraDireita","xFim","truncateToWidth"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ChartSunburst.cjs","sources":["../../../../src/components/charts/ChartSunburst/ChartSunburst.tsx"],"sourcesContent":["import { useMemo, useState } from 'react';\nimport { hierarchy, partition, type HierarchyRectangularNode } from 'd3-hierarchy';\nimport {\n CHART_LABEL_BAND,\n CHART_LABEL_OFFSET,\n ChartFrame,\n VOLTA,\n arcAnchor,\n arcPath,\n hoverPath,\n pathTooltip,\n chartHeight,\n ringDiameter,\n truncateToWidth,\n useChartMetrics,\n useSeriesToggle,\n widestLabel,\n type ChartHeight,\n type ChartHoveredNode,\n type ChartLegendAlign,\n type ChartLegendPosition,\n} from '../core';\nimport { resolveSeriesColors, type SeriesAppearance } from '../palette';\nimport { formatarNumero } from '../../../utils/formatters';\nimport styles from './ChartSunburst.module.css';\n\nexport interface ChartSunburstNode extends SeriesAppearance {\n children?: readonly ChartSunburstNode[];\n label: string;\n value?: number;\n}\n\nexport interface ChartSunburstProps {\n accent?: string;\n defaultHiddenGroups?: readonly string[];\n emptyMessage?: string;\n formatPercent?: (ratio: number) => string;\n /** Formato dos valores no balao. Sem ele, vale o `formatValue`: o eixo pode sair compacto e o balao, exato. */\n formatTooltipValue?: (value: number) => string;\n formatValue?: (value: number) => string;\n height?: ChartHeight;\n hiddenGroups?: readonly string[];\n legend?: ChartLegendPosition;\n legendAlign?: ChartLegendAlign;\n nodes: readonly ChartSunburstNode[];\n onHiddenGroupsChange?: (hidden: readonly string[]) => void;\n /** Caminho ate o no sob o ponteiro, do grupo ao no, cada nivel com o valor somado, ou `null` ao sair. */\n onHoverNode?: (path: readonly ChartHoveredNode[] | null) => void;\n /** Folga entre dois aneis vizinhos. */\n ringGap?: number;\n /** Raio das pontas de cada arco. Sem valor, o token de raio pequeno. */\n sliceRadius?: number;\n showLabels?: boolean;\n /**\n * Balao com o caminho ate o no sob o ponteiro. Desligue para montar o proprio `ChartTooltip`\n * pela costura; sem balao nem costura, o no volta a ter o `<title>`.\n */\n showTooltip?: boolean;\n title: string;\n}\n\ntype Arco = HierarchyRectangularNode<ChartSunburstNode>;\n\n/** Arco menor que isso nao comporta rotulo nem conector legivel. */\nconst ANGULO_MINIMO_DO_ROTULO = 0.18;\nconst COMPRIMENTO_DO_CONECTOR = 14;\n/**\n * Rotulos de cada nivel da arvore declarada. Medir a banda antes de montar o\n * anel exige saber os rotulos antes, e o nivel mais profundo declarado e o\n * mesmo que o anel externo tera.\n */\nfunction rotulosPorNivel(\n nodes: readonly ChartSunburstNode[],\n nivel = 1,\n por = new Map<number, string[]>(),\n) {\n nodes.forEach((no) => {\n por.set(nivel, [...(por.get(nivel) ?? []), no.label]);\n\n if (no.children?.length) {\n rotulosPorNivel(no.children, nivel + 1, por);\n }\n });\n\n return por;\n}\n\n/**\n * Cada anel clareia sobre o anterior, e o filho nasce da cor do pai. Sem isso a\n * hierarquia sumiria: os aneis externos repetiriam a cor do nivel zero e nada\n * distinguiria um filho do outro.\n */\nfunction tomDoNivel(cor: string, profundidade: number) {\n if (profundidade <= 1) {\n return cor;\n }\n\n const clareamento = Math.min((profundidade - 1) * 22, 66);\n\n return `color-mix(in oklab, ${cor} ${100 - clareamento}%, var(--pl-color-surface))`;\n}\n\nexport function ChartSunburst({\n accent,\n defaultHiddenGroups,\n emptyMessage = 'Sem dados no período',\n formatPercent = (fracao) => `${Math.round(fracao * 100)}%`,\n formatTooltipValue,\n formatValue = formatarNumero,\n height = 320,\n hiddenGroups,\n legend = 'bottom',\n legendAlign,\n nodes,\n onHiddenGroupsChange,\n onHoverNode,\n ringGap = 2,\n showLabels = true,\n showTooltip = true,\n sliceRadius,\n title,\n}: ChartSunburstProps) {\n const { font, height: alturaMedida, radius: raioDoCanto, ref, width } = useChartMetrics();\n const { fillHeight, value: alturaDoDesenho } = chartHeight(height, alturaMedida);\n const { isHidden, toggle } = useSeriesToggle({\n defaultHiddenSeries: defaultHiddenGroups,\n hiddenSeries: hiddenGroups,\n onHiddenSeriesChange: onHiddenGroupsChange,\n });\n const [emFoco, setEmFoco] = useState<Arco | null>(null);\n\n // A cor sai da lista inteira, e nao das visiveis: desligar um grupo nao pode\n // repintar os demais.\n const coresDeNivelZero = useMemo(() => resolveSeriesColors(nodes, { accent }), [accent, nodes]);\n\n const visiveis = useMemo(\n () => nodes.filter((grupo) => !isHidden(grupo.label)),\n [isHidden, nodes],\n );\n\n // A banda dos rotulos e reservada antes do anel, medida pelo rotulo mais\n // largo do anel externo. Sem reservar, o rotulo era desenhado no que sobrasse\n // — quase nada nas laterais — e acabava cortado ate sumir.\n const rotulosExternos = useMemo(() => {\n const niveis = rotulosPorNivel(visiveis);\n const externo = Math.max(0, ...niveis.keys());\n\n return niveis.get(externo) ?? [];\n }, [visiveis]);\n\n const larguraDoRotulo = showLabels\n ? Math.min(widestLabel(rotulosExternos, font), width * CHART_LABEL_BAND)\n : 0;\n const banda = showLabels ? COMPRIMENTO_DO_CONECTOR * 2 + CHART_LABEL_OFFSET + larguraDoRotulo : 0;\n\n const diametro = ringDiameter(Math.max(width - banda * 2, 0), alturaDoDesenho);\n const raio = diametro / 2;\n\n const arcos = useMemo(() => {\n if (raio <= 0) {\n return [];\n }\n\n const arvore = hierarchy<ChartSunburstNode>({ children: visiveis, label: '' })\n .sum((no) => Math.max(no.value ?? 0, 0))\n .sort((a, b) => (b.value ?? 0) - (a.value ?? 0));\n\n const repartir = partition<ChartSunburstNode>().size([VOLTA, raio]);\n\n return repartir(arvore)\n .descendants()\n .filter((no) => no.depth > 0);\n }, [raio, visiveis]);\n\n const profundidadeMaxima = arcos.reduce((maior, arco) => Math.max(maior, arco.depth), 0);\n const total = arcos\n .filter((arco) => arco.depth === 1)\n .reduce((soma, arco) => soma + (arco.value ?? 0), 0);\n\n // O arco guardado deixa de existir quando a arvore e remontada, num\n // redimensionamento por exemplo. Sem conferir, o foco perdido apagaria tudo.\n const foco = emFoco && arcos.includes(emFoco) ? emFoco : null;\n\n /**\n * Acende o arco sob o ponteiro e os que o originaram. O caminho ate a raiz e\n * o que explica de onde aquela fatia veio; os filhos dela nao explicam nada\n * sobre ela, entao ficam apagados junto com o resto.\n */\n function aceso(arco: Arco) {\n return foco === null || foco.ancestors().includes(arco);\n }\n\n function focar(arco: Arco | null) {\n setEmFoco(arco);\n onHoverNode?.(arco && hoverPath(arco));\n }\n\n function corDe(arco: Arco) {\n const raizDoRamo = arco.ancestors().find((ancestral) => ancestral.depth === 1)?.data;\n const base =\n raizDoRamo?.color ?? coresDeNivelZero[nodes.findIndex((no) => no.label === raizDoRamo?.label)];\n\n return tomDoNivel(base ?? 'var(--pl-chart-neutral)', arco.depth);\n }\n\n function descreverArco(arco: Arco) {\n const fracao = total > 0 ? (arco.value ?? 0) / total : 0;\n\n return `${arco.data.label}: ${formatValue(arco.value ?? 0)} (${formatPercent(fracao)})`;\n }\n\n return (\n <ChartFrame\n centerOrigin\n containerRef={ref}\n empty={nodes.length === 0}\n emptyMessage={emptyMessage}\n fillHeight={fillHeight}\n height={alturaDoDesenho}\n legend={nodes.map((grupo, indice) => ({\n color: coresDeNivelZero[indice],\n hidden: isHidden(grupo.label),\n label: grupo.label,\n }))}\n legendAlign={legendAlign}\n legendPosition={legend}\n onToggleSeries={toggle}\n swatch=\"dot\"\n title={title}\n tooltip={\n showTooltip\n ? pathTooltip({\n color: foco ? corDe(foco) : undefined,\n format: formatTooltipValue ?? formatValue,\n formatPercent,\n path: foco && hoverPath(foco),\n total,\n })\n : undefined\n }\n width={width}\n >\n {arcos.map((arco, indice) => (\n <path\n aria-label={descreverArco(arco)}\n className={`${styles.arc} ${aceso(arco) ? '' : styles.arcDim}`}\n d={arcPath({\n cornerRadius: sliceRadius ?? raioDoCanto,\n endAngle: arco.x1,\n innerRadius: arco.y0 + (arco.depth > 1 ? ringGap : 0),\n outerRadius: arco.y1,\n startAngle: arco.x0,\n })}\n fill={corDe(arco)}\n key={indice}\n onMouseEnter={() => focar(arco)}\n onMouseLeave={() => focar(null)}\n >\n {!showTooltip && !onHoverNode && <title>{descreverArco(arco)}</title>}\n </path>\n ))}\n\n {showLabels &&\n arcos\n .filter(\n (arco) => arco.depth === profundidadeMaxima && arco.x1 - arco.x0 >= ANGULO_MINIMO_DO_ROTULO,\n )\n .map((arco, indice) => {\n const angulos = { endAngle: arco.x1, startAngle: arco.x0 };\n const [xBorda, yBorda] = arcAnchor(angulos, arco.y1);\n const [xCotovelo, yCotovelo] = arcAnchor(angulos, arco.y1 + COMPRIMENTO_DO_CONECTOR);\n const paraDireita = xCotovelo >= 0;\n const xFim = xCotovelo + (paraDireita ? COMPRIMENTO_DO_CONECTOR : -COMPRIMENTO_DO_CONECTOR);\n\n return (\n <g className={styles.leader} key={indice}>\n <polyline\n className={styles.connector}\n points={`${xBorda},${yBorda} ${xCotovelo},${yCotovelo} ${xFim},${yCotovelo}`}\n />\n <text\n className={styles.label}\n dominantBaseline=\"middle\"\n textAnchor={paraDireita ? 'start' : 'end'}\n x={xFim + (paraDireita ? CHART_LABEL_OFFSET : -CHART_LABEL_OFFSET)}\n y={yCotovelo}\n >\n {truncateToWidth(arco.data.label, font, larguraDoRotulo)}\n </text>\n </g>\n );\n })}\n </ChartFrame>\n );\n}\n"],"names":["ANGULO_MINIMO_DO_ROTULO","COMPRIMENTO_DO_CONECTOR","rotulosPorNivel","nodes","nivel","por","no","_a","tomDoNivel","cor","profundidade","clareamento","ChartSunburst","accent","defaultHiddenGroups","emptyMessage","formatPercent","fracao","formatTooltipValue","formatValue","formatarNumero","height","hiddenGroups","legend","legendAlign","onHiddenGroupsChange","onHoverNode","ringGap","showLabels","showTooltip","sliceRadius","title","font","alturaMedida","raioDoCanto","ref","width","useChartMetrics","fillHeight","alturaDoDesenho","chartHeight","isHidden","toggle","useSeriesToggle","emFoco","setEmFoco","useState","coresDeNivelZero","useMemo","resolveSeriesColors","visiveis","grupo","rotulosExternos","niveis","externo","larguraDoRotulo","widestLabel","CHART_LABEL_BAND","banda","CHART_LABEL_OFFSET","raio","ringDiameter","arcos","arvore","hierarchy","a","b","partition","VOLTA","profundidadeMaxima","maior","arco","total","soma","foco","aceso","focar","hoverPath","corDe","raizDoRamo","ancestral","base","descreverArco","jsxs","ChartFrame","indice","pathTooltip","jsx","styles","arcPath","angulos","xBorda","yBorda","arcAnchor","xCotovelo","yCotovelo","paraDireita","xFim","truncateToWidth"],"mappings":"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"}
|