react-native-chart-kit 7.0.0-next.1 → 7.0.0-next.3
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/README.md +89 -521
- package/dist/charts/line/LineChart.d.ts +3 -3
- package/dist/charts/line/LineChart.js +1 -1
- package/dist/v2/core/data/index.d.ts +3 -0
- package/dist/v2/core/data/index.d.ts.map +1 -0
- package/dist/v2/core/data/index.js +1 -0
- package/dist/v2/core/data/normalize.d.ts +8 -0
- package/dist/v2/core/data/normalize.d.ts.map +1 -0
- package/dist/v2/core/data/normalize.js +229 -0
- package/dist/v2/core/data/normalizeValues.d.ts +16 -0
- package/dist/v2/core/data/normalizeValues.d.ts.map +1 -0
- package/dist/v2/core/data/normalizeValues.js +96 -0
- package/dist/v2/core/data/types.d.ts +161 -0
- package/dist/v2/core/data/types.d.ts.map +1 -0
- package/dist/v2/core/data/types.js +1 -0
- package/dist/v2/core/geometry/areaPath.d.ts +3 -0
- package/dist/v2/core/geometry/areaPath.d.ts.map +1 -0
- package/dist/v2/core/geometry/areaPath.js +36 -0
- package/dist/v2/core/geometry/barRects.d.ts +44 -0
- package/dist/v2/core/geometry/barRects.d.ts.map +1 -0
- package/dist/v2/core/geometry/barRects.js +201 -0
- package/dist/v2/core/geometry/contributionHeatmap.d.ts +49 -0
- package/dist/v2/core/geometry/contributionHeatmap.d.ts.map +1 -0
- package/dist/v2/core/geometry/contributionHeatmap.js +107 -0
- package/dist/v2/core/geometry/horizontalBarRects.d.ts +27 -0
- package/dist/v2/core/geometry/horizontalBarRects.d.ts.map +1 -0
- package/dist/v2/core/geometry/horizontalBarRects.js +202 -0
- package/dist/v2/core/geometry/index.d.ts +12 -0
- package/dist/v2/core/geometry/index.d.ts.map +1 -0
- package/dist/v2/core/geometry/index.js +11 -0
- package/dist/v2/core/geometry/lineDecimation.d.ts +8 -0
- package/dist/v2/core/geometry/lineDecimation.d.ts.map +1 -0
- package/dist/v2/core/geometry/lineDecimation.js +110 -0
- package/dist/v2/core/geometry/linePath.d.ts +5 -0
- package/dist/v2/core/geometry/linePath.d.ts.map +1 -0
- package/dist/v2/core/geometry/linePath.js +98 -0
- package/dist/v2/core/geometry/lineSeries.d.ts +29 -0
- package/dist/v2/core/geometry/lineSeries.d.ts.map +1 -0
- package/dist/v2/core/geometry/lineSeries.js +51 -0
- package/dist/v2/core/geometry/path.d.ts +6 -0
- package/dist/v2/core/geometry/path.d.ts.map +1 -0
- package/dist/v2/core/geometry/path.js +24 -0
- package/dist/v2/core/geometry/pieArcs.d.ts +29 -0
- package/dist/v2/core/geometry/pieArcs.d.ts.map +1 -0
- package/dist/v2/core/geometry/pieArcs.js +142 -0
- package/dist/v2/core/geometry/progressRings.d.ts +30 -0
- package/dist/v2/core/geometry/progressRings.d.ts.map +1 -0
- package/dist/v2/core/geometry/progressRings.js +104 -0
- package/dist/v2/core/geometry/types.d.ts +32 -0
- package/dist/v2/core/geometry/types.d.ts.map +1 -0
- package/dist/v2/core/geometry/types.js +1 -0
- package/dist/v2/core/index.d.ts +6 -0
- package/dist/v2/core/index.d.ts.map +1 -0
- package/dist/v2/core/index.js +6 -0
- package/dist/v2/core/interaction/index.d.ts +5 -0
- package/dist/v2/core/interaction/index.d.ts.map +1 -0
- package/dist/v2/core/interaction/index.js +2 -0
- package/dist/v2/core/interaction/viewport.d.ts +71 -0
- package/dist/v2/core/interaction/viewport.d.ts.map +1 -0
- package/dist/v2/core/interaction/viewport.js +216 -0
- package/dist/v2/core/interaction/viewportTransform.d.ts +17 -0
- package/dist/v2/core/interaction/viewportTransform.d.ts.map +1 -0
- package/dist/v2/core/interaction/viewportTransform.js +70 -0
- package/dist/v2/core/layout/autoPadding.d.ts +3 -0
- package/dist/v2/core/layout/autoPadding.d.ts.map +1 -0
- package/dist/v2/core/layout/autoPadding.js +33 -0
- package/dist/v2/core/layout/chartBox.d.ts +5 -0
- package/dist/v2/core/layout/chartBox.d.ts.map +1 -0
- package/dist/v2/core/layout/chartBox.js +22 -0
- package/dist/v2/core/layout/debugLayout.d.ts +3 -0
- package/dist/v2/core/layout/debugLayout.d.ts.map +1 -0
- package/dist/v2/core/layout/debugLayout.js +20 -0
- package/dist/v2/core/layout/index.d.ts +8 -0
- package/dist/v2/core/layout/index.d.ts.map +1 -0
- package/dist/v2/core/layout/index.js +6 -0
- package/dist/v2/core/layout/labelCollision.d.ts +3 -0
- package/dist/v2/core/layout/labelCollision.d.ts.map +1 -0
- package/dist/v2/core/layout/labelCollision.js +90 -0
- package/dist/v2/core/layout/legendLayout.d.ts +3 -0
- package/dist/v2/core/layout/legendLayout.d.ts.map +1 -0
- package/dist/v2/core/layout/legendLayout.js +39 -0
- package/dist/v2/core/layout/tooltipPlacement.d.ts +3 -0
- package/dist/v2/core/layout/tooltipPlacement.d.ts.map +1 -0
- package/dist/v2/core/layout/tooltipPlacement.js +76 -0
- package/dist/v2/core/layout/types.d.ts +114 -0
- package/dist/v2/core/layout/types.d.ts.map +1 -0
- package/dist/v2/core/layout/types.js +1 -0
- package/dist/v2/core/scales/band.d.ts +15 -0
- package/dist/v2/core/scales/band.d.ts.map +1 -0
- package/dist/v2/core/scales/band.js +34 -0
- package/dist/v2/core/scales/domain.d.ts +6 -0
- package/dist/v2/core/scales/domain.d.ts.map +1 -0
- package/dist/v2/core/scales/domain.js +109 -0
- package/dist/v2/core/scales/index.d.ts +7 -0
- package/dist/v2/core/scales/index.d.ts.map +1 -0
- package/dist/v2/core/scales/index.js +5 -0
- package/dist/v2/core/scales/linear.d.ts +8 -0
- package/dist/v2/core/scales/linear.d.ts.map +1 -0
- package/dist/v2/core/scales/linear.js +22 -0
- package/dist/v2/core/scales/ticks.d.ts +4 -0
- package/dist/v2/core/scales/ticks.d.ts.map +1 -0
- package/dist/v2/core/scales/ticks.js +111 -0
- package/dist/v2/core/scales/time.d.ts +8 -0
- package/dist/v2/core/scales/time.d.ts.map +1 -0
- package/dist/v2/core/scales/time.js +23 -0
- package/dist/v2/core/scales/types.d.ts +46 -0
- package/dist/v2/core/scales/types.d.ts.map +1 -0
- package/dist/v2/core/scales/types.js +1 -0
- package/dist/v2/index.d.ts +1 -0
- package/dist/v2/index.js +1 -0
- package/dist/v2/react-native/charts/bar/BarChart.d.ts +6 -0
- package/dist/v2/react-native/charts/bar/BarChart.d.ts.map +1 -0
- package/dist/v2/react-native/charts/bar/BarChart.js +199 -0
- package/dist/v2/react-native/charts/bar/BarChartSurface.d.ts +36 -0
- package/dist/v2/react-native/charts/bar/BarChartSurface.d.ts.map +1 -0
- package/dist/v2/react-native/charts/bar/BarChartSurface.js +134 -0
- package/dist/v2/react-native/charts/bar/StackedBarChart.d.ts +4 -0
- package/dist/v2/react-native/charts/bar/StackedBarChart.d.ts.map +1 -0
- package/dist/v2/react-native/charts/bar/StackedBarChart.js +9 -0
- package/dist/v2/react-native/charts/bar/accessibility.d.ts +31 -0
- package/dist/v2/react-native/charts/bar/accessibility.d.ts.map +1 -0
- package/dist/v2/react-native/charts/bar/accessibility.js +87 -0
- package/dist/v2/react-native/charts/bar/interaction.d.ts +18 -0
- package/dist/v2/react-native/charts/bar/interaction.d.ts.map +1 -0
- package/dist/v2/react-native/charts/bar/interaction.js +62 -0
- package/dist/v2/react-native/charts/bar/model.d.ts +3 -0
- package/dist/v2/react-native/charts/bar/model.d.ts.map +1 -0
- package/dist/v2/react-native/charts/bar/model.js +326 -0
- package/dist/v2/react-native/charts/bar/modelUtils.d.ts +27 -0
- package/dist/v2/react-native/charts/bar/modelUtils.d.ts.map +1 -0
- package/dist/v2/react-native/charts/bar/modelUtils.js +58 -0
- package/dist/v2/react-native/charts/bar/options.d.ts +7 -0
- package/dist/v2/react-native/charts/bar/options.d.ts.map +1 -0
- package/dist/v2/react-native/charts/bar/options.js +49 -0
- package/dist/v2/react-native/charts/bar/rendererSafety.d.ts +12 -0
- package/dist/v2/react-native/charts/bar/rendererSafety.d.ts.map +1 -0
- package/dist/v2/react-native/charts/bar/rendererSafety.js +31 -0
- package/dist/v2/react-native/charts/bar/selectionAnimation.d.ts +42 -0
- package/dist/v2/react-native/charts/bar/selectionAnimation.d.ts.map +1 -0
- package/dist/v2/react-native/charts/bar/selectionAnimation.js +158 -0
- package/dist/v2/react-native/charts/bar/stackedCompat.d.ts +55 -0
- package/dist/v2/react-native/charts/bar/stackedCompat.d.ts.map +1 -0
- package/dist/v2/react-native/charts/bar/stackedCompat.js +105 -0
- package/dist/v2/react-native/charts/bar/tooltip.d.ts +11 -0
- package/dist/v2/react-native/charts/bar/tooltip.d.ts.map +1 -0
- package/dist/v2/react-native/charts/bar/tooltip.js +18 -0
- package/dist/v2/react-native/charts/bar/tooltipModel.d.ts +33 -0
- package/dist/v2/react-native/charts/bar/tooltipModel.d.ts.map +1 -0
- package/dist/v2/react-native/charts/bar/tooltipModel.js +46 -0
- package/dist/v2/react-native/charts/bar/tooltipPlacement.d.ts +9 -0
- package/dist/v2/react-native/charts/bar/tooltipPlacement.d.ts.map +1 -0
- package/dist/v2/react-native/charts/bar/tooltipPlacement.js +9 -0
- package/dist/v2/react-native/charts/bar/types.d.ts +211 -0
- package/dist/v2/react-native/charts/bar/types.d.ts.map +1 -0
- package/dist/v2/react-native/charts/bar/types.js +1 -0
- package/dist/v2/react-native/charts/bar/useAnimatedTooltipModel.d.ts +10 -0
- package/dist/v2/react-native/charts/bar/useAnimatedTooltipModel.d.ts.map +1 -0
- package/dist/v2/react-native/charts/bar/useAnimatedTooltipModel.js +87 -0
- package/dist/v2/react-native/charts/bar/viewport.d.ts +20 -0
- package/dist/v2/react-native/charts/bar/viewport.d.ts.map +1 -0
- package/dist/v2/react-native/charts/bar/viewport.js +47 -0
- package/dist/v2/react-native/charts/contribution/ContributionGraph.d.ts +13 -0
- package/dist/v2/react-native/charts/contribution/ContributionGraph.d.ts.map +1 -0
- package/dist/v2/react-native/charts/contribution/ContributionGraph.js +159 -0
- package/dist/v2/react-native/charts/contribution/accessibility.d.ts +25 -0
- package/dist/v2/react-native/charts/contribution/accessibility.d.ts.map +1 -0
- package/dist/v2/react-native/charts/contribution/accessibility.js +50 -0
- package/dist/v2/react-native/charts/contribution/interaction.d.ts +23 -0
- package/dist/v2/react-native/charts/contribution/interaction.d.ts.map +1 -0
- package/dist/v2/react-native/charts/contribution/interaction.js +75 -0
- package/dist/v2/react-native/charts/contribution/model.d.ts +17 -0
- package/dist/v2/react-native/charts/contribution/model.d.ts.map +1 -0
- package/dist/v2/react-native/charts/contribution/model.js +102 -0
- package/dist/v2/react-native/charts/contribution/types.d.ts +71 -0
- package/dist/v2/react-native/charts/contribution/types.d.ts.map +1 -0
- package/dist/v2/react-native/charts/contribution/types.js +1 -0
- package/dist/v2/react-native/charts/line/AreaChart.d.ts +3 -0
- package/dist/v2/react-native/charts/line/AreaChart.d.ts.map +1 -0
- package/dist/v2/react-native/charts/line/AreaChart.js +3 -0
- package/dist/v2/react-native/charts/line/ChartSurface.d.ts +16 -0
- package/dist/v2/react-native/charts/line/ChartSurface.d.ts.map +1 -0
- package/dist/v2/react-native/charts/line/ChartSurface.js +151 -0
- package/dist/v2/react-native/charts/line/LineChart.d.ts +6 -0
- package/dist/v2/react-native/charts/line/LineChart.d.ts.map +1 -0
- package/dist/v2/react-native/charts/line/LineChart.js +294 -0
- package/dist/v2/react-native/charts/line/StickyYAxis.d.ts +15 -0
- package/dist/v2/react-native/charts/line/StickyYAxis.d.ts.map +1 -0
- package/dist/v2/react-native/charts/line/StickyYAxis.js +26 -0
- package/dist/v2/react-native/charts/line/accessibility.d.ts +34 -0
- package/dist/v2/react-native/charts/line/accessibility.d.ts.map +1 -0
- package/dist/v2/react-native/charts/line/accessibility.js +103 -0
- package/dist/v2/react-native/charts/line/axisLabels.d.ts +37 -0
- package/dist/v2/react-native/charts/line/axisLabels.d.ts.map +1 -0
- package/dist/v2/react-native/charts/line/axisLabels.js +55 -0
- package/dist/v2/react-native/charts/line/debugLayout.d.ts +26 -0
- package/dist/v2/react-native/charts/line/debugLayout.d.ts.map +1 -0
- package/dist/v2/react-native/charts/line/debugLayout.js +77 -0
- package/dist/v2/react-native/charts/line/debugOverlay.d.ts +9 -0
- package/dist/v2/react-native/charts/line/debugOverlay.d.ts.map +1 -0
- package/dist/v2/react-native/charts/line/debugOverlay.js +30 -0
- package/dist/v2/react-native/charts/line/defaultTooltip.d.ts +3 -0
- package/dist/v2/react-native/charts/line/defaultTooltip.d.ts.map +1 -0
- package/dist/v2/react-native/charts/line/defaultTooltip.js +17 -0
- package/dist/v2/react-native/charts/line/interaction.d.ts +82 -0
- package/dist/v2/react-native/charts/line/interaction.d.ts.map +1 -0
- package/dist/v2/react-native/charts/line/interaction.js +94 -0
- package/dist/v2/react-native/charts/line/legend.d.ts +35 -0
- package/dist/v2/react-native/charts/line/legend.d.ts.map +1 -0
- package/dist/v2/react-native/charts/line/legend.js +95 -0
- package/dist/v2/react-native/charts/line/markers.d.ts +11 -0
- package/dist/v2/react-native/charts/line/markers.d.ts.map +1 -0
- package/dist/v2/react-native/charts/line/markers.js +52 -0
- package/dist/v2/react-native/charts/line/options.d.ts +172 -0
- package/dist/v2/react-native/charts/line/options.d.ts.map +1 -0
- package/dist/v2/react-native/charts/line/options.js +168 -0
- package/dist/v2/react-native/charts/line/outsidePressSurfaces.d.ts +15 -0
- package/dist/v2/react-native/charts/line/outsidePressSurfaces.d.ts.map +1 -0
- package/dist/v2/react-native/charts/line/outsidePressSurfaces.js +37 -0
- package/dist/v2/react-native/charts/line/overviewProps.d.ts +45 -0
- package/dist/v2/react-native/charts/line/overviewProps.d.ts.map +1 -0
- package/dist/v2/react-native/charts/line/overviewProps.js +4 -0
- package/dist/v2/react-native/charts/line/rangeSelector.d.ts +19 -0
- package/dist/v2/react-native/charts/line/rangeSelector.d.ts.map +1 -0
- package/dist/v2/react-native/charts/line/rangeSelector.js +185 -0
- package/dist/v2/react-native/charts/line/rangeSelectorConfig.d.ts +38 -0
- package/dist/v2/react-native/charts/line/rangeSelectorConfig.d.ts.map +1 -0
- package/dist/v2/react-native/charts/line/rangeSelectorConfig.js +41 -0
- package/dist/v2/react-native/charts/line/referenceLabelPlacement.d.ts +21 -0
- package/dist/v2/react-native/charts/line/referenceLabelPlacement.d.ts.map +1 -0
- package/dist/v2/react-native/charts/line/referenceLabelPlacement.js +113 -0
- package/dist/v2/react-native/charts/line/references.d.ts +62 -0
- package/dist/v2/react-native/charts/line/references.d.ts.map +1 -0
- package/dist/v2/react-native/charts/line/references.js +156 -0
- package/dist/v2/react-native/charts/line/renderer.d.ts +4 -0
- package/dist/v2/react-native/charts/line/renderer.d.ts.map +1 -0
- package/dist/v2/react-native/charts/line/renderer.js +23 -0
- package/dist/v2/react-native/charts/line/responders.d.ts +13 -0
- package/dist/v2/react-native/charts/line/responders.d.ts.map +1 -0
- package/dist/v2/react-native/charts/line/responders.js +62 -0
- package/dist/v2/react-native/charts/line/selection.d.ts +31 -0
- package/dist/v2/react-native/charts/line/selection.d.ts.map +1 -0
- package/dist/v2/react-native/charts/line/selection.js +26 -0
- package/dist/v2/react-native/charts/line/seriesInput.d.ts +4 -0
- package/dist/v2/react-native/charts/line/seriesInput.d.ts.map +1 -0
- package/dist/v2/react-native/charts/line/seriesInput.js +13 -0
- package/dist/v2/react-native/charts/line/seriesStyles.d.ts +20 -0
- package/dist/v2/react-native/charts/line/seriesStyles.d.ts.map +1 -0
- package/dist/v2/react-native/charts/line/seriesStyles.js +33 -0
- package/dist/v2/react-native/charts/line/stickyYAxisLayout.d.ts +6 -0
- package/dist/v2/react-native/charts/line/stickyYAxisLayout.d.ts.map +1 -0
- package/dist/v2/react-native/charts/line/stickyYAxisLayout.js +2 -0
- package/dist/v2/react-native/charts/line/text.d.ts +7 -0
- package/dist/v2/react-native/charts/line/text.d.ts.map +1 -0
- package/dist/v2/react-native/charts/line/text.js +7 -0
- package/dist/v2/react-native/charts/line/thresholdRendering.d.ts +28 -0
- package/dist/v2/react-native/charts/line/thresholdRendering.d.ts.map +1 -0
- package/dist/v2/react-native/charts/line/thresholdRendering.js +145 -0
- package/dist/v2/react-native/charts/line/tooltip.d.ts +70 -0
- package/dist/v2/react-native/charts/line/tooltip.d.ts.map +1 -0
- package/dist/v2/react-native/charts/line/tooltip.js +87 -0
- package/dist/v2/react-native/charts/line/types.d.ts +371 -0
- package/dist/v2/react-native/charts/line/types.d.ts.map +1 -0
- package/dist/v2/react-native/charts/line/types.js +1 -0
- package/dist/v2/react-native/charts/line/useAnimatedTooltipModel.d.ts +13 -0
- package/dist/v2/react-native/charts/line/useAnimatedTooltipModel.d.ts.map +1 -0
- package/dist/v2/react-native/charts/line/useAnimatedTooltipModel.js +84 -0
- package/dist/v2/react-native/charts/line/useAnimatedYAxisLabels.d.ts +5 -0
- package/dist/v2/react-native/charts/line/useAnimatedYAxisLabels.d.ts.map +1 -0
- package/dist/v2/react-native/charts/line/useAnimatedYAxisLabels.js +141 -0
- package/dist/v2/react-native/charts/line/useChartModel.d.ts +103 -0
- package/dist/v2/react-native/charts/line/useChartModel.d.ts.map +1 -0
- package/dist/v2/react-native/charts/line/useChartModel.js +367 -0
- package/dist/v2/react-native/charts/line/useDebugLayout.d.ts +16 -0
- package/dist/v2/react-native/charts/line/useDebugLayout.d.ts.map +1 -0
- package/dist/v2/react-native/charts/line/useDebugLayout.js +35 -0
- package/dist/v2/react-native/charts/line/utils.d.ts +10 -0
- package/dist/v2/react-native/charts/line/utils.d.ts.map +1 -0
- package/dist/v2/react-native/charts/line/utils.js +40 -0
- package/dist/v2/react-native/charts/line/viewportInteraction.d.ts +3 -0
- package/dist/v2/react-native/charts/line/viewportInteraction.d.ts.map +1 -0
- package/dist/v2/react-native/charts/line/viewportInteraction.js +1 -0
- package/dist/v2/react-native/charts/line/viewportPinchZoom.d.ts +2 -0
- package/dist/v2/react-native/charts/line/viewportPinchZoom.d.ts.map +1 -0
- package/dist/v2/react-native/charts/line/viewportPinchZoom.js +1 -0
- package/dist/v2/react-native/charts/line/xLabelCandidates.d.ts +13 -0
- package/dist/v2/react-native/charts/line/xLabelCandidates.d.ts.map +1 -0
- package/dist/v2/react-native/charts/line/xLabelCandidates.js +23 -0
- package/dist/v2/react-native/charts/line/xLabels.d.ts +39 -0
- package/dist/v2/react-native/charts/line/xLabels.d.ts.map +1 -0
- package/dist/v2/react-native/charts/line/xLabels.js +289 -0
- package/dist/v2/react-native/charts/line/xScale.d.ts +6 -0
- package/dist/v2/react-native/charts/line/xScale.d.ts.map +1 -0
- package/dist/v2/react-native/charts/line/xScale.js +25 -0
- package/dist/v2/react-native/charts/line/yAxisModel.d.ts +29 -0
- package/dist/v2/react-native/charts/line/yAxisModel.d.ts.map +1 -0
- package/dist/v2/react-native/charts/line/yAxisModel.js +39 -0
- package/dist/v2/react-native/charts/pie/PieChart.d.ts +7 -0
- package/dist/v2/react-native/charts/pie/PieChart.d.ts.map +1 -0
- package/dist/v2/react-native/charts/pie/PieChart.js +253 -0
- package/dist/v2/react-native/charts/pie/accessibility.d.ts +28 -0
- package/dist/v2/react-native/charts/pie/accessibility.d.ts.map +1 -0
- package/dist/v2/react-native/charts/pie/accessibility.js +49 -0
- package/dist/v2/react-native/charts/pie/activeSlice.d.ts +15 -0
- package/dist/v2/react-native/charts/pie/activeSlice.d.ts.map +1 -0
- package/dist/v2/react-native/charts/pie/activeSlice.js +26 -0
- package/dist/v2/react-native/charts/pie/arcLabels.d.ts +32 -0
- package/dist/v2/react-native/charts/pie/arcLabels.d.ts.map +1 -0
- package/dist/v2/react-native/charts/pie/arcLabels.js +191 -0
- package/dist/v2/react-native/charts/pie/interaction.d.ts +26 -0
- package/dist/v2/react-native/charts/pie/interaction.d.ts.map +1 -0
- package/dist/v2/react-native/charts/pie/interaction.js +66 -0
- package/dist/v2/react-native/charts/pie/model.d.ts +15 -0
- package/dist/v2/react-native/charts/pie/model.d.ts.map +1 -0
- package/dist/v2/react-native/charts/pie/model.js +157 -0
- package/dist/v2/react-native/charts/pie/selectionAnimation.d.ts +33 -0
- package/dist/v2/react-native/charts/pie/selectionAnimation.d.ts.map +1 -0
- package/dist/v2/react-native/charts/pie/selectionAnimation.js +121 -0
- package/dist/v2/react-native/charts/pie/sliceSeparator.d.ts +7 -0
- package/dist/v2/react-native/charts/pie/sliceSeparator.d.ts.map +1 -0
- package/dist/v2/react-native/charts/pie/sliceSeparator.js +26 -0
- package/dist/v2/react-native/charts/pie/slices.d.ts +20 -0
- package/dist/v2/react-native/charts/pie/slices.d.ts.map +1 -0
- package/dist/v2/react-native/charts/pie/slices.js +54 -0
- package/dist/v2/react-native/charts/pie/types.d.ts +165 -0
- package/dist/v2/react-native/charts/pie/types.d.ts.map +1 -0
- package/dist/v2/react-native/charts/pie/types.js +1 -0
- package/dist/v2/react-native/charts/progress/ProgressChart.d.ts +7 -0
- package/dist/v2/react-native/charts/progress/ProgressChart.d.ts.map +1 -0
- package/dist/v2/react-native/charts/progress/ProgressChart.js +111 -0
- package/dist/v2/react-native/charts/progress/accessibility.d.ts +26 -0
- package/dist/v2/react-native/charts/progress/accessibility.d.ts.map +1 -0
- package/dist/v2/react-native/charts/progress/accessibility.js +71 -0
- package/dist/v2/react-native/charts/progress/animation.d.ts +36 -0
- package/dist/v2/react-native/charts/progress/animation.d.ts.map +1 -0
- package/dist/v2/react-native/charts/progress/animation.js +103 -0
- package/dist/v2/react-native/charts/progress/model.d.ts +14 -0
- package/dist/v2/react-native/charts/progress/model.d.ts.map +1 -0
- package/dist/v2/react-native/charts/progress/model.js +133 -0
- package/dist/v2/react-native/charts/progress/types.d.ts +72 -0
- package/dist/v2/react-native/charts/progress/types.d.ts.map +1 -0
- package/dist/v2/react-native/charts/progress/types.js +1 -0
- package/dist/v2/react-native/index.d.ts +24 -0
- package/dist/v2/react-native/index.d.ts.map +1 -0
- package/dist/v2/react-native/index.js +14 -0
- package/dist/v2/react-native/selection/ChartSelectionProvider.d.ts +27 -0
- package/dist/v2/react-native/selection/ChartSelectionProvider.d.ts.map +1 -0
- package/dist/v2/react-native/selection/ChartSelectionProvider.js +92 -0
- package/dist/v2/react-native/selection/index.d.ts +2 -0
- package/dist/v2/react-native/selection/index.d.ts.map +1 -0
- package/dist/v2/react-native/selection/index.js +1 -0
- package/dist/v2/react-native/selection/scope.d.ts +16 -0
- package/dist/v2/react-native/selection/scope.d.ts.map +1 -0
- package/dist/v2/react-native/selection/scope.js +18 -0
- package/dist/v2/react-native/theme/index.d.ts +4 -0
- package/dist/v2/react-native/theme/index.d.ts.map +1 -0
- package/dist/v2/react-native/theme/index.js +2 -0
- package/dist/v2/react-native/theme/presets.d.ts +84 -0
- package/dist/v2/react-native/theme/presets.d.ts.map +1 -0
- package/dist/v2/react-native/theme/presets.js +298 -0
- package/dist/v2/react-native/theme/provider.d.ts +20 -0
- package/dist/v2/react-native/theme/provider.d.ts.map +1 -0
- package/dist/v2/react-native/theme/provider.js +27 -0
- package/dist/v2/react-native/viewport/bounds.d.ts +7 -0
- package/dist/v2/react-native/viewport/bounds.d.ts.map +1 -0
- package/dist/v2/react-native/viewport/bounds.js +7 -0
- package/dist/v2/react-native/viewport/config.d.ts +13 -0
- package/dist/v2/react-native/viewport/config.d.ts.map +1 -0
- package/dist/v2/react-native/viewport/config.js +64 -0
- package/dist/v2/react-native/viewport/pan.d.ts +23 -0
- package/dist/v2/react-native/viewport/pan.d.ts.map +1 -0
- package/dist/v2/react-native/viewport/pan.js +110 -0
- package/dist/v2/react-native/viewport/pinchZoom.d.ts +17 -0
- package/dist/v2/react-native/viewport/pinchZoom.d.ts.map +1 -0
- package/dist/v2/react-native/viewport/pinchZoom.js +131 -0
- package/dist/v2/react-native/viewport/types.d.ts +55 -0
- package/dist/v2/react-native/viewport/types.d.ts.map +1 -0
- package/dist/v2/react-native/viewport/types.js +1 -0
- package/dist/v2/svg-renderer/capabilities.d.ts +3 -0
- package/dist/v2/svg-renderer/capabilities.d.ts.map +1 -0
- package/dist/v2/svg-renderer/capabilities.js +12 -0
- package/dist/v2/svg-renderer/clipPath.d.ts +4 -0
- package/dist/v2/svg-renderer/clipPath.d.ts.map +1 -0
- package/dist/v2/svg-renderer/clipPath.js +35 -0
- package/dist/v2/svg-renderer/defs.d.ts +6 -0
- package/dist/v2/svg-renderer/defs.d.ts.map +1 -0
- package/dist/v2/svg-renderer/defs.js +18 -0
- package/dist/v2/svg-renderer/ensureConsole.d.ts +4 -0
- package/dist/v2/svg-renderer/ensureConsole.d.ts.map +1 -0
- package/dist/v2/svg-renderer/ensureConsole.js +54 -0
- package/dist/v2/svg-renderer/hitRegions.d.ts +3 -0
- package/dist/v2/svg-renderer/hitRegions.d.ts.map +1 -0
- package/dist/v2/svg-renderer/hitRegions.js +6 -0
- package/dist/v2/svg-renderer/index.d.ts +14 -0
- package/dist/v2/svg-renderer/index.d.ts.map +1 -0
- package/dist/v2/svg-renderer/index.js +13 -0
- package/dist/v2/svg-renderer/layerOrder.d.ts +19 -0
- package/dist/v2/svg-renderer/layerOrder.d.ts.map +1 -0
- package/dist/v2/svg-renderer/layerOrder.js +18 -0
- package/dist/v2/svg-renderer/layers.d.ts +3 -0
- package/dist/v2/svg-renderer/layers.d.ts.map +1 -0
- package/dist/v2/svg-renderer/layers.js +4 -0
- package/dist/v2/svg-renderer/primitives.d.ts +12 -0
- package/dist/v2/svg-renderer/primitives.d.ts.map +1 -0
- package/dist/v2/svg-renderer/primitives.js +13 -0
- package/dist/v2/svg-renderer/renderer.d.ts +4 -0
- package/dist/v2/svg-renderer/renderer.d.ts.map +1 -0
- package/dist/v2/svg-renderer/renderer.js +24 -0
- package/dist/v2/svg-renderer/symbolGeometry.d.ts +6 -0
- package/dist/v2/svg-renderer/symbolGeometry.d.ts.map +1 -0
- package/dist/v2/svg-renderer/symbolGeometry.js +10 -0
- package/dist/v2/svg-renderer/symbols.d.ts +3 -0
- package/dist/v2/svg-renderer/symbols.d.ts.map +1 -0
- package/dist/v2/svg-renderer/symbols.js +23 -0
- package/dist/v2/svg-renderer/testIds.d.ts +2 -0
- package/dist/v2/svg-renderer/testIds.d.ts.map +1 -0
- package/dist/v2/svg-renderer/testIds.js +10 -0
- package/dist/v2/svg-renderer/textMeasurement.d.ts +4 -0
- package/dist/v2/svg-renderer/textMeasurement.d.ts.map +1 -0
- package/dist/v2/svg-renderer/textMeasurement.js +37 -0
- package/dist/v2/svg-renderer/types.d.ts +134 -0
- package/dist/v2/svg-renderer/types.d.ts.map +1 -0
- package/dist/v2/svg-renderer/types.js +1 -0
- package/package.json +56 -50
- package/v2/index.d.ts +1 -0
- package/v2/index.js +1 -0
- package/v2/package.json +6 -0
- package/scripts/chartkit-codemod.mjs +0 -256
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
const fullCircle = Math.PI * 2;
|
|
2
|
+
const normalizeAngleFromStart = (angle, startAngle) => {
|
|
3
|
+
let normalizedAngle = angle;
|
|
4
|
+
while (normalizedAngle < startAngle) {
|
|
5
|
+
normalizedAngle += fullCircle;
|
|
6
|
+
}
|
|
7
|
+
while (normalizedAngle >= startAngle + fullCircle) {
|
|
8
|
+
normalizedAngle -= fullCircle;
|
|
9
|
+
}
|
|
10
|
+
return normalizedAngle;
|
|
11
|
+
};
|
|
12
|
+
export const getPieChartInteractionConfig = (interaction) => {
|
|
13
|
+
if (!interaction) {
|
|
14
|
+
return {
|
|
15
|
+
mode: "none",
|
|
16
|
+
deselectOnOutsidePress: true,
|
|
17
|
+
onDeselect: undefined,
|
|
18
|
+
onSelect: undefined
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
if (interaction === "tap" || interaction === "none") {
|
|
22
|
+
return {
|
|
23
|
+
mode: interaction,
|
|
24
|
+
deselectOnOutsidePress: true,
|
|
25
|
+
onDeselect: undefined,
|
|
26
|
+
onSelect: undefined
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
return {
|
|
30
|
+
mode: interaction.mode ?? "tap",
|
|
31
|
+
deselectOnOutsidePress: interaction.deselectOnOutsidePress !== false,
|
|
32
|
+
onDeselect: interaction.onDeselect,
|
|
33
|
+
onSelect: interaction.onSelect
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
export const isPieChartInteractionEnabled = (config) => config.mode === "tap";
|
|
37
|
+
export const normalizePieChartSelectedIndex = (selectedIndex) => typeof selectedIndex === "number" && Number.isFinite(selectedIndex)
|
|
38
|
+
? Math.max(0, Math.floor(selectedIndex))
|
|
39
|
+
: undefined;
|
|
40
|
+
export const getPieChartSliceAtPoint = ({ arcs, centerX, centerY, innerRadius, locationX, locationY, radius }) => {
|
|
41
|
+
const dx = locationX - centerX;
|
|
42
|
+
const dy = locationY - centerY;
|
|
43
|
+
const distance = Math.sqrt(dx * dx + dy * dy);
|
|
44
|
+
if (distance < innerRadius || distance > radius) {
|
|
45
|
+
return undefined;
|
|
46
|
+
}
|
|
47
|
+
const firstDefinedArc = arcs.find((arc) => arc.defined);
|
|
48
|
+
if (!firstDefinedArc) {
|
|
49
|
+
return undefined;
|
|
50
|
+
}
|
|
51
|
+
const angle = normalizeAngleFromStart(Math.atan2(dy, dx), firstDefinedArc.startAngle);
|
|
52
|
+
return arcs.find((arc) => arc.defined && angle >= arc.startAngle && angle <= arc.endAngle);
|
|
53
|
+
};
|
|
54
|
+
export const buildPieChartSelectEvent = (arc) => {
|
|
55
|
+
if (!arc || !arc.defined) {
|
|
56
|
+
return undefined;
|
|
57
|
+
}
|
|
58
|
+
return {
|
|
59
|
+
index: arc.index,
|
|
60
|
+
label: arc.label,
|
|
61
|
+
value: arc.value,
|
|
62
|
+
percentage: arc.percentage,
|
|
63
|
+
...(arc.color !== undefined ? { color: arc.color } : {}),
|
|
64
|
+
...(arc.raw !== undefined ? { raw: arc.raw } : {})
|
|
65
|
+
};
|
|
66
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { CartesianChartPresetRegistry, CartesianChartPresetValue, CartesianChartTheme, ResolvedChartKitThemeMode } from "../../theme/presets";
|
|
2
|
+
import type { PieChartModel, PieChartProps } from "./types";
|
|
3
|
+
type PieChartThemeContextValue = {
|
|
4
|
+
mode: ResolvedChartKitThemeMode;
|
|
5
|
+
preset: CartesianChartPresetValue;
|
|
6
|
+
presets: CartesianChartPresetRegistry;
|
|
7
|
+
theme: CartesianChartTheme | undefined;
|
|
8
|
+
};
|
|
9
|
+
export declare const buildPieChartModel: <TData extends Record<string, unknown>>({ chartKitTheme, props, selectedIndex }: {
|
|
10
|
+
chartKitTheme: PieChartThemeContextValue;
|
|
11
|
+
props: PieChartProps<TData>;
|
|
12
|
+
selectedIndex?: number | undefined;
|
|
13
|
+
}) => PieChartModel<TData>;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../src/charts/pie/model.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,4BAA4B,EAC5B,yBAAyB,EACzB,mBAAmB,EACnB,yBAAyB,EAC1B,MAAM,qBAAqB,CAAC;AAgB7B,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE5D,KAAK,yBAAyB,GAAG;IAC/B,IAAI,EAAE,yBAAyB,CAAC;IAChC,MAAM,EAAE,yBAAyB,CAAC;IAClC,OAAO,EAAE,4BAA4B,CAAC;IACtC,KAAK,EAAE,mBAAmB,GAAG,SAAS,CAAC;CACxC,CAAC;AAoFF,eAAO,MAAM,kBAAkB,GAAI,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,yCAIvE;IACD,aAAa,EAAE,yBAAyB,CAAC;IACzC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACpC,KAAG,aAAa,CAAC,KAAK,CA4ItB,CAAC"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import { buildPieArcs, normalizeLegacyPieData } from "../../../core/index";
|
|
2
|
+
import { resolveCartesianChartThemeConfig } from "../../theme/presets";
|
|
3
|
+
import { buildPieChartArcLabels, getPieChartArcLabelHorizontalReserve, getPieChartArcLabelsVisible, resolvePieChartArcLabelsConfig } from "./arcLabels";
|
|
4
|
+
import { getPieChartActiveSliceGutter, resolvePieChartActiveSliceConfig, shouldReservePieChartActiveSliceGutter } from "./activeSlice";
|
|
5
|
+
import { getPieChartSliceSeparatorGutter, resolvePieChartSliceSeparatorConfig } from "./sliceSeparator";
|
|
6
|
+
const defaultLabelKey = "name";
|
|
7
|
+
const defaultColorKey = "color";
|
|
8
|
+
const defaultLegendHeight = 54;
|
|
9
|
+
const defaultFormatValue = (value) => String(value);
|
|
10
|
+
const defaultFormatPercentage = (percentage) => `${Math.round(percentage * 100)}%`;
|
|
11
|
+
const clamp = (value, min, max) => {
|
|
12
|
+
if (max < min) {
|
|
13
|
+
return min;
|
|
14
|
+
}
|
|
15
|
+
return Math.min(Math.max(value, min), max);
|
|
16
|
+
};
|
|
17
|
+
const getStringValue = (value, fallback) => typeof value === "string" && value.length > 0 ? value : fallback;
|
|
18
|
+
const getLegendVisible = (legend) => {
|
|
19
|
+
if (legend === false) {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
if (typeof legend === "object") {
|
|
23
|
+
return legend.visible !== false;
|
|
24
|
+
}
|
|
25
|
+
return true;
|
|
26
|
+
};
|
|
27
|
+
const getLegendReservedHeight = (legend) => {
|
|
28
|
+
if (!getLegendVisible(legend)) {
|
|
29
|
+
return 0;
|
|
30
|
+
}
|
|
31
|
+
const config = typeof legend === "object" ? legend : {};
|
|
32
|
+
return typeof config.reservedHeight === "number" &&
|
|
33
|
+
Number.isFinite(config.reservedHeight)
|
|
34
|
+
? Math.max(0, config.reservedHeight)
|
|
35
|
+
: defaultLegendHeight;
|
|
36
|
+
};
|
|
37
|
+
const normalizePieInput = ({ colorKey, colors, data, labelKey, valueKey }) => data.map((item, index) => {
|
|
38
|
+
const label = getStringValue(item[labelKey ?? defaultLabelKey], `Slice ${index + 1}`);
|
|
39
|
+
const color = getStringValue(item[colorKey ?? defaultColorKey], colors?.[index] ?? "");
|
|
40
|
+
const normalized = {
|
|
41
|
+
...item,
|
|
42
|
+
name: label,
|
|
43
|
+
[valueKey]: item[valueKey]
|
|
44
|
+
};
|
|
45
|
+
if (color) {
|
|
46
|
+
normalized.color = color;
|
|
47
|
+
}
|
|
48
|
+
return normalized;
|
|
49
|
+
});
|
|
50
|
+
export const buildPieChartModel = ({ chartKitTheme, props, selectedIndex }) => {
|
|
51
|
+
const { arcLabels, colors, colorKey, data, formatPercentage = defaultFormatPercentage, formatValue = defaultFormatValue, height, innerRadius, innerRadiusRatio, labelKey, legend, preset, theme, valueKey, width } = props;
|
|
52
|
+
const resolvedTheme = resolveCartesianChartThemeConfig({
|
|
53
|
+
mode: typeof theme === "string" && theme !== "system"
|
|
54
|
+
? theme
|
|
55
|
+
: chartKitTheme.mode,
|
|
56
|
+
preset: preset ?? chartKitTheme.preset,
|
|
57
|
+
presets: chartKitTheme.presets,
|
|
58
|
+
theme: typeof theme === "object" ? theme : chartKitTheme.theme
|
|
59
|
+
});
|
|
60
|
+
const legendVisible = getLegendVisible(legend);
|
|
61
|
+
const legendReservedHeight = getLegendReservedHeight(legend);
|
|
62
|
+
const sliceSeparator = resolvePieChartSliceSeparatorConfig({
|
|
63
|
+
backgroundColor: resolvedTheme.background,
|
|
64
|
+
sliceSeparator: props.sliceSeparator
|
|
65
|
+
});
|
|
66
|
+
const arcLabelConfig = resolvePieChartArcLabelsConfig(arcLabels);
|
|
67
|
+
const arcLabelsVisible = getPieChartArcLabelsVisible(arcLabels);
|
|
68
|
+
const chartHeight = Math.max(120, height - legendReservedHeight);
|
|
69
|
+
const centerX = width / 2;
|
|
70
|
+
const centerY = chartHeight / 2;
|
|
71
|
+
const arcLabelHorizontalReserve = arcLabelsVisible
|
|
72
|
+
? getPieChartArcLabelHorizontalReserve(arcLabelConfig)
|
|
73
|
+
: 0;
|
|
74
|
+
const arcLabelVerticalReserve = arcLabelsVisible
|
|
75
|
+
? arcLabelConfig.reservedWidth
|
|
76
|
+
: 0;
|
|
77
|
+
const sliceSeparatorGutter = getPieChartSliceSeparatorGutter(sliceSeparator);
|
|
78
|
+
const availableRadius = Math.max(0, Math.min(Math.max(0, width - arcLabelHorizontalReserve * 2), Math.max(0, chartHeight - arcLabelVerticalReserve * 0.48)) /
|
|
79
|
+
2 -
|
|
80
|
+
6 -
|
|
81
|
+
sliceSeparatorGutter);
|
|
82
|
+
const activeSlice = resolvePieChartActiveSliceConfig({
|
|
83
|
+
activeSlice: props.activeSlice,
|
|
84
|
+
backgroundColor: resolvedTheme.background
|
|
85
|
+
});
|
|
86
|
+
const activeSliceGutter = shouldReservePieChartActiveSliceGutter({
|
|
87
|
+
props,
|
|
88
|
+
selectedIndex
|
|
89
|
+
})
|
|
90
|
+
? getPieChartActiveSliceGutter({
|
|
91
|
+
activeSlice,
|
|
92
|
+
radius: availableRadius
|
|
93
|
+
})
|
|
94
|
+
: 0;
|
|
95
|
+
const radius = Math.max(0, availableRadius - activeSliceGutter);
|
|
96
|
+
const resolvedInnerRadius = typeof innerRadius === "number" && Number.isFinite(innerRadius)
|
|
97
|
+
? innerRadius
|
|
98
|
+
: radius * clamp(innerRadiusRatio ?? 0, 0, 0.92);
|
|
99
|
+
const normalized = normalizeLegacyPieData(normalizePieInput({ colorKey, colors, data, labelKey, valueKey }), { accessor: valueKey });
|
|
100
|
+
const arcs = buildPieArcs({
|
|
101
|
+
slices: normalized.slices,
|
|
102
|
+
centerX,
|
|
103
|
+
centerY,
|
|
104
|
+
radius,
|
|
105
|
+
innerRadius: resolvedInnerRadius
|
|
106
|
+
}).map((arc, index) => {
|
|
107
|
+
const { color: _color, raw: _raw, ...rest } = arc;
|
|
108
|
+
const color = arc.color ??
|
|
109
|
+
resolvedTheme.series[index % resolvedTheme.series.length] ??
|
|
110
|
+
resolvedTheme.text;
|
|
111
|
+
const raw = data[arc.index];
|
|
112
|
+
return {
|
|
113
|
+
...rest,
|
|
114
|
+
color,
|
|
115
|
+
...(raw !== undefined ? { raw } : {})
|
|
116
|
+
};
|
|
117
|
+
});
|
|
118
|
+
const total = arcs.reduce((sum, arc) => (arc.value !== null ? sum + arc.value : sum), 0);
|
|
119
|
+
const legendItems = arcs
|
|
120
|
+
.filter((arc) => arc.defined)
|
|
121
|
+
.map((arc) => ({
|
|
122
|
+
index: arc.index,
|
|
123
|
+
key: `${arc.index}-${arc.label}`,
|
|
124
|
+
label: arc.label,
|
|
125
|
+
valueLabel: formatValue(arc.value ?? 0),
|
|
126
|
+
percentageLabel: formatPercentage(arc.percentage),
|
|
127
|
+
color: arc.color ?? resolvedTheme.series[0] ?? resolvedTheme.text,
|
|
128
|
+
arc
|
|
129
|
+
}));
|
|
130
|
+
const resolvedArcLabels = buildPieChartArcLabels({
|
|
131
|
+
arcs,
|
|
132
|
+
centerX,
|
|
133
|
+
centerY,
|
|
134
|
+
chartHeight,
|
|
135
|
+
chartWidth: width,
|
|
136
|
+
config: arcLabelConfig,
|
|
137
|
+
legendItems,
|
|
138
|
+
radius,
|
|
139
|
+
selectedIndex,
|
|
140
|
+
theme: resolvedTheme
|
|
141
|
+
});
|
|
142
|
+
return {
|
|
143
|
+
arcLabels: resolvedArcLabels,
|
|
144
|
+
arcLabelsVisible,
|
|
145
|
+
arcs,
|
|
146
|
+
centerX,
|
|
147
|
+
centerY,
|
|
148
|
+
chartHeight,
|
|
149
|
+
innerRadius: resolvedInnerRadius,
|
|
150
|
+
legendItems,
|
|
151
|
+
legendVisible,
|
|
152
|
+
radius,
|
|
153
|
+
resolvedTheme,
|
|
154
|
+
sliceSeparator,
|
|
155
|
+
total
|
|
156
|
+
};
|
|
157
|
+
};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { type PieArcModel } from "../../../core/index";
|
|
2
|
+
import type { PieChartSelectionAnimationConfig } from "./types";
|
|
3
|
+
export type PieChartSelectionAnimationState = {
|
|
4
|
+
fromIndex: number | undefined;
|
|
5
|
+
toIndex: number | undefined;
|
|
6
|
+
progress: number;
|
|
7
|
+
};
|
|
8
|
+
export type ResolvedPieChartSelectionAnimationConfig = {
|
|
9
|
+
enabled: boolean;
|
|
10
|
+
duration: number;
|
|
11
|
+
};
|
|
12
|
+
export declare const resolvePieChartSelectionAnimationConfig: (animation: boolean | PieChartSelectionAnimationConfig | undefined) => ResolvedPieChartSelectionAnimationConfig;
|
|
13
|
+
export declare const getAnimatedPieSliceOpacity: ({ activeOpacity, inactiveOpacity, index, state }: {
|
|
14
|
+
activeOpacity: number;
|
|
15
|
+
inactiveOpacity: number;
|
|
16
|
+
index: number;
|
|
17
|
+
state: PieChartSelectionAnimationState;
|
|
18
|
+
}) => number;
|
|
19
|
+
export declare const getAnimatedPieSlicePath: <TData>({ activeOffset, activeScale, arc, centerX, centerY, innerRadius, radius, state }: {
|
|
20
|
+
activeOffset: number;
|
|
21
|
+
activeScale: number;
|
|
22
|
+
arc: PieArcModel<TData>;
|
|
23
|
+
centerX: number;
|
|
24
|
+
centerY: number;
|
|
25
|
+
innerRadius: number;
|
|
26
|
+
radius: number;
|
|
27
|
+
state: PieChartSelectionAnimationState;
|
|
28
|
+
}) => string;
|
|
29
|
+
export declare const usePieChartSelectionAnimation: ({ animation, selectedIndex }: {
|
|
30
|
+
animation: boolean | PieChartSelectionAnimationConfig | undefined;
|
|
31
|
+
selectedIndex: number | undefined;
|
|
32
|
+
}) => PieChartSelectionAnimationState;
|
|
33
|
+
//# sourceMappingURL=selectionAnimation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selectionAnimation.d.ts","sourceRoot":"","sources":["../../../src/charts/pie/selectionAnimation.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgB,KAAK,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEjE,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,SAAS,CAAC;AAIhE,MAAM,MAAM,+BAA+B,GAAG;IAC5C,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,wCAAwC,GAAG;IACrD,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,eAAO,MAAM,uCAAuC,GAClD,WAAW,OAAO,GAAG,gCAAgC,GAAG,SAAS,KAChE,wCAeF,CAAC;AAqCF,eAAO,MAAM,0BAA0B,GAAI,kDAKxC;IACD,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,+BAA+B,CAAC;CACxC,WAeE,CAAC;AAEJ,eAAO,MAAM,uBAAuB,GAAI,KAAK,EAAE,kFAS5C;IACD,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,+BAA+B,CAAC;CACxC,WA6CA,CAAC;AAEF,eAAO,MAAM,6BAA6B,GAAI,8BAG3C;IACD,SAAS,EAAE,OAAO,GAAG,gCAAgC,GAAG,SAAS,CAAC;IAClE,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;CACnC,KAAG,+BA8DH,CAAC"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { useEffect, useRef, useState } from "react";
|
|
2
|
+
import { buildPieArcs } from "../../../core/index";
|
|
3
|
+
const defaultSelectionAnimationDuration = 180;
|
|
4
|
+
export const resolvePieChartSelectionAnimationConfig = (animation) => {
|
|
5
|
+
if (animation === false) {
|
|
6
|
+
return { enabled: false, duration: 0 };
|
|
7
|
+
}
|
|
8
|
+
const config = typeof animation === "object" ? animation : {};
|
|
9
|
+
const duration = typeof config.duration === "number" && Number.isFinite(config.duration)
|
|
10
|
+
? Math.max(0, config.duration)
|
|
11
|
+
: defaultSelectionAnimationDuration;
|
|
12
|
+
return {
|
|
13
|
+
enabled: true,
|
|
14
|
+
duration
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
const easeOutCubic = (progress) => {
|
|
18
|
+
const clampedProgress = Math.min(Math.max(progress, 0), 1);
|
|
19
|
+
return 1 - Math.pow(1 - clampedProgress, 3);
|
|
20
|
+
};
|
|
21
|
+
const interpolate = (from, to, progress) => from + (to - from) * progress;
|
|
22
|
+
const getSliceSelectedAmount = ({ index, selectedIndex }) => (selectedIndex === index ? 1 : 0);
|
|
23
|
+
const getSliceOpacity = ({ activeOpacity, inactiveOpacity, index, selectedIndex }) => {
|
|
24
|
+
if (selectedIndex === undefined) {
|
|
25
|
+
return 1;
|
|
26
|
+
}
|
|
27
|
+
return selectedIndex === index ? activeOpacity : inactiveOpacity;
|
|
28
|
+
};
|
|
29
|
+
export const getAnimatedPieSliceOpacity = ({ activeOpacity, inactiveOpacity, index, state }) => interpolate(getSliceOpacity({
|
|
30
|
+
activeOpacity,
|
|
31
|
+
inactiveOpacity,
|
|
32
|
+
index,
|
|
33
|
+
selectedIndex: state.fromIndex
|
|
34
|
+
}), getSliceOpacity({
|
|
35
|
+
activeOpacity,
|
|
36
|
+
inactiveOpacity,
|
|
37
|
+
index,
|
|
38
|
+
selectedIndex: state.toIndex
|
|
39
|
+
}), state.progress);
|
|
40
|
+
export const getAnimatedPieSlicePath = ({ activeOffset, activeScale, arc, centerX, centerY, innerRadius, radius, state }) => {
|
|
41
|
+
const selectedAmount = interpolate(getSliceSelectedAmount({
|
|
42
|
+
index: arc.index,
|
|
43
|
+
selectedIndex: state.fromIndex
|
|
44
|
+
}), getSliceSelectedAmount({ index: arc.index, selectedIndex: state.toIndex }), state.progress);
|
|
45
|
+
if (selectedAmount <= 0.001) {
|
|
46
|
+
return arc.path;
|
|
47
|
+
}
|
|
48
|
+
const vectorX = arc.centroid.x - centerX;
|
|
49
|
+
const vectorY = arc.centroid.y - centerY;
|
|
50
|
+
const length = Math.hypot(vectorX, vectorY);
|
|
51
|
+
if (length <= 0) {
|
|
52
|
+
return arc.path;
|
|
53
|
+
}
|
|
54
|
+
const offset = activeOffset * selectedAmount;
|
|
55
|
+
const scale = interpolate(1, activeScale, selectedAmount);
|
|
56
|
+
const dx = (vectorX / length) * offset;
|
|
57
|
+
const dy = (vectorY / length) * offset;
|
|
58
|
+
const shiftedArc = buildPieArcs({
|
|
59
|
+
centerX: centerX + dx,
|
|
60
|
+
centerY: centerY + dy,
|
|
61
|
+
endAngle: arc.endAngle,
|
|
62
|
+
innerRadius: innerRadius * scale,
|
|
63
|
+
radius: radius * scale,
|
|
64
|
+
slices: [
|
|
65
|
+
{
|
|
66
|
+
defined: true,
|
|
67
|
+
index: arc.index,
|
|
68
|
+
label: arc.label,
|
|
69
|
+
raw: arc.raw,
|
|
70
|
+
value: 1
|
|
71
|
+
}
|
|
72
|
+
],
|
|
73
|
+
startAngle: arc.startAngle
|
|
74
|
+
})[0];
|
|
75
|
+
return shiftedArc?.path ?? arc.path;
|
|
76
|
+
};
|
|
77
|
+
export const usePieChartSelectionAnimation = ({ animation, selectedIndex }) => {
|
|
78
|
+
const config = resolvePieChartSelectionAnimationConfig(animation);
|
|
79
|
+
const previousTargetRef = useRef(selectedIndex);
|
|
80
|
+
const [state, setState] = useState({
|
|
81
|
+
fromIndex: selectedIndex,
|
|
82
|
+
toIndex: selectedIndex,
|
|
83
|
+
progress: 1
|
|
84
|
+
});
|
|
85
|
+
useEffect(() => {
|
|
86
|
+
const fromIndex = previousTargetRef.current;
|
|
87
|
+
if (fromIndex === selectedIndex) {
|
|
88
|
+
return undefined;
|
|
89
|
+
}
|
|
90
|
+
previousTargetRef.current = selectedIndex;
|
|
91
|
+
if (!config.enabled || config.duration <= 0) {
|
|
92
|
+
const animationFrame = requestAnimationFrame(() => {
|
|
93
|
+
setState({
|
|
94
|
+
fromIndex: selectedIndex,
|
|
95
|
+
toIndex: selectedIndex,
|
|
96
|
+
progress: 1
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
return () => cancelAnimationFrame(animationFrame);
|
|
100
|
+
}
|
|
101
|
+
let animationFrame = 0;
|
|
102
|
+
let startTime;
|
|
103
|
+
const tick = (timestamp) => {
|
|
104
|
+
startTime ?? (startTime = timestamp);
|
|
105
|
+
const rawProgress = Math.min((timestamp - startTime) / config.duration, 1);
|
|
106
|
+
const progress = easeOutCubic(rawProgress);
|
|
107
|
+
setState(rawProgress >= 1
|
|
108
|
+
? { fromIndex: selectedIndex, toIndex: selectedIndex, progress: 1 }
|
|
109
|
+
: { fromIndex, toIndex: selectedIndex, progress });
|
|
110
|
+
if (rawProgress < 1) {
|
|
111
|
+
animationFrame = requestAnimationFrame(tick);
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
animationFrame = requestAnimationFrame((timestamp) => {
|
|
115
|
+
setState({ fromIndex, toIndex: selectedIndex, progress: 0 });
|
|
116
|
+
tick(timestamp);
|
|
117
|
+
});
|
|
118
|
+
return () => cancelAnimationFrame(animationFrame);
|
|
119
|
+
}, [config.duration, config.enabled, selectedIndex]);
|
|
120
|
+
return state;
|
|
121
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { PieChartSliceSeparatorConfig, ResolvedPieChartSliceSeparatorConfig } from "./types";
|
|
2
|
+
export declare const resolvePieChartSliceSeparatorConfig: ({ backgroundColor, sliceSeparator }: {
|
|
3
|
+
backgroundColor: string;
|
|
4
|
+
sliceSeparator: boolean | PieChartSliceSeparatorConfig | undefined;
|
|
5
|
+
}) => ResolvedPieChartSliceSeparatorConfig;
|
|
6
|
+
export declare const getPieChartSliceSeparatorGutter: (sliceSeparator: ResolvedPieChartSliceSeparatorConfig) => number;
|
|
7
|
+
//# sourceMappingURL=sliceSeparator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sliceSeparator.d.ts","sourceRoot":"","sources":["../../../src/charts/pie/sliceSeparator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,4BAA4B,EAC5B,oCAAoC,EACrC,MAAM,SAAS,CAAC;AAiBjB,eAAO,MAAM,mCAAmC,GAAI,qCAGjD;IACD,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,OAAO,GAAG,4BAA4B,GAAG,SAAS,CAAC;CACpE,KAAG,oCAsBH,CAAC;AAEF,eAAO,MAAM,+BAA+B,GAC1C,gBAAgB,oCAAoC,WACiB,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
const defaultSliceSeparatorWidth = 2;
|
|
2
|
+
const clampOpacity = (value, fallback) => typeof value === "number" && Number.isFinite(value)
|
|
3
|
+
? Math.max(0, Math.min(1, value))
|
|
4
|
+
: fallback;
|
|
5
|
+
const resolveNonNegativeNumber = (value, fallback) => typeof value === "number" && Number.isFinite(value)
|
|
6
|
+
? Math.max(0, value)
|
|
7
|
+
: fallback;
|
|
8
|
+
export const resolvePieChartSliceSeparatorConfig = ({ backgroundColor, sliceSeparator }) => {
|
|
9
|
+
if (sliceSeparator === undefined || sliceSeparator === false) {
|
|
10
|
+
return {
|
|
11
|
+
color: backgroundColor,
|
|
12
|
+
opacity: 1,
|
|
13
|
+
visible: false,
|
|
14
|
+
width: 0
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
const config = typeof sliceSeparator === "object" ? sliceSeparator : {};
|
|
18
|
+
const width = resolveNonNegativeNumber(config.width, defaultSliceSeparatorWidth);
|
|
19
|
+
return {
|
|
20
|
+
color: config.color ?? backgroundColor,
|
|
21
|
+
opacity: clampOpacity(config.opacity, 1),
|
|
22
|
+
visible: config.visible !== false && width > 0,
|
|
23
|
+
width
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
export const getPieChartSliceSeparatorGutter = (sliceSeparator) => (sliceSeparator.visible ? Math.ceil(sliceSeparator.width / 2) : 0);
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { PieArcModel } from "../../../core/index";
|
|
2
|
+
import type { ResolvedCartesianChartTheme } from "../../theme";
|
|
3
|
+
import { type PieChartSelectionAnimationState } from "./selectionAnimation";
|
|
4
|
+
import type { ResolvedPieChartActiveSliceConfig } from "./activeSlice";
|
|
5
|
+
import type { PieChartRenderer, ResolvedPieChartSliceSeparatorConfig } from "./types";
|
|
6
|
+
export declare const PieChartSlices: <TData>({ activeSlice, arcs, centerX, centerY, innerRadius, radius, renderer, resolvedTheme, selectedIndex, selectionAnimationState, sliceSeparator, testID }: {
|
|
7
|
+
activeSlice: ResolvedPieChartActiveSliceConfig;
|
|
8
|
+
arcs: Array<PieArcModel<TData>>;
|
|
9
|
+
centerX: number;
|
|
10
|
+
centerY: number;
|
|
11
|
+
innerRadius: number;
|
|
12
|
+
radius: number;
|
|
13
|
+
renderer: PieChartRenderer;
|
|
14
|
+
resolvedTheme: ResolvedCartesianChartTheme;
|
|
15
|
+
selectedIndex: number | undefined;
|
|
16
|
+
selectionAnimationState: PieChartSelectionAnimationState;
|
|
17
|
+
sliceSeparator: ResolvedPieChartSliceSeparatorConfig;
|
|
18
|
+
testID: string | undefined;
|
|
19
|
+
}) => import("react").JSX.Element;
|
|
20
|
+
//# sourceMappingURL=slices.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slices.d.ts","sourceRoot":"","sources":["../../../src/charts/pie/slices.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAGL,KAAK,+BAA+B,EACrC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,KAAK,EACV,gBAAgB,EAChB,oCAAoC,EACrC,MAAM,SAAS,CAAC;AAEjB,eAAO,MAAM,cAAc,GAAI,KAAK,EAAG,uJAapC;IACD,WAAW,EAAE,iCAAiC,CAAC;IAC/C,IAAI,EAAE,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,aAAa,EAAE,2BAA2B,CAAC;IAC3C,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,uBAAuB,EAAE,+BAA+B,CAAC;IACzD,cAAc,EAAE,oCAAoC,CAAC;IACrD,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B,gCAqEA,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { getAnimatedPieSliceOpacity, getAnimatedPieSlicePath } from "./selectionAnimation";
|
|
3
|
+
export const PieChartSlices = ({ activeSlice, arcs, centerX, centerY, innerRadius, radius, renderer, resolvedTheme, selectedIndex, selectionAnimationState, sliceSeparator, testID }) => {
|
|
4
|
+
const Group = renderer.Group;
|
|
5
|
+
const Path = renderer.Path;
|
|
6
|
+
const renderedArcs = selectedIndex === undefined
|
|
7
|
+
? arcs
|
|
8
|
+
: [
|
|
9
|
+
...arcs.filter((arc) => arc.index !== selectedIndex),
|
|
10
|
+
...arcs.filter((arc) => arc.index === selectedIndex)
|
|
11
|
+
];
|
|
12
|
+
return (_jsx(_Fragment, { children: renderedArcs.map((arc) => {
|
|
13
|
+
if (!arc.defined) {
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
const isSelected = selectedIndex === arc.index;
|
|
17
|
+
const opacity = getAnimatedPieSliceOpacity({
|
|
18
|
+
activeOpacity: activeSlice.activeOpacity,
|
|
19
|
+
inactiveOpacity: activeSlice.inactiveOpacity,
|
|
20
|
+
index: arc.index,
|
|
21
|
+
state: selectionAnimationState
|
|
22
|
+
});
|
|
23
|
+
const path = getAnimatedPieSlicePath({
|
|
24
|
+
activeOffset: activeSlice.activeOffset,
|
|
25
|
+
activeScale: activeSlice.activeScale,
|
|
26
|
+
arc,
|
|
27
|
+
centerX,
|
|
28
|
+
centerY,
|
|
29
|
+
innerRadius,
|
|
30
|
+
radius,
|
|
31
|
+
state: selectionAnimationState
|
|
32
|
+
});
|
|
33
|
+
const separatorStrokeProps = sliceSeparator.visible
|
|
34
|
+
? {
|
|
35
|
+
stroke: sliceSeparator.color,
|
|
36
|
+
strokeLinejoin: "round",
|
|
37
|
+
strokeOpacity: sliceSeparator.opacity,
|
|
38
|
+
strokeWidth: sliceSeparator.width
|
|
39
|
+
}
|
|
40
|
+
: {};
|
|
41
|
+
const activeStrokeProps = isSelected && activeSlice.strokeWidth > 0
|
|
42
|
+
? {
|
|
43
|
+
stroke: activeSlice.strokeColor,
|
|
44
|
+
strokeLinejoin: "round",
|
|
45
|
+
strokeOpacity: 1,
|
|
46
|
+
strokeWidth: activeSlice.strokeWidth
|
|
47
|
+
}
|
|
48
|
+
: {};
|
|
49
|
+
const strokeProps = isSelected
|
|
50
|
+
? { ...separatorStrokeProps, ...activeStrokeProps }
|
|
51
|
+
: separatorStrokeProps;
|
|
52
|
+
return (_jsx(Group, { opacity: opacity, children: _jsx(Path, { d: path, fill: arc.color ?? resolvedTheme.text, testID: `${testID ?? "pie-chart"}-slice.${arc.index}`, ...strokeProps }) }, `pie-slice-${arc.index}`));
|
|
53
|
+
}) }));
|
|
54
|
+
};
|