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 @@
|
|
|
1
|
+
{"version":3,"file":"BarChart.d.ts","sourceRoot":"","sources":["../../../src/charts/bar/BarChart.tsx"],"names":[],"mappings":"AAqCA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,mBAAmB,SAAS,CAAC;AAC7B,OAAO,EACL,+BAA+B,EAC/B,oBAAoB,EACrB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,iBAAiB,EACjB,uBAAuB,EACvB,oBAAoB,EACrB,MAAM,iBAAiB,CAAC;AAEzB,eAAO,MAAM,QAAQ,GAAI,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5D,OAAO,aAAa,CAAC,KAAK,CAAC,gCA4S5B,CAAC"}
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useCallback, useEffect, useId, useMemo, useRef, useState } from "react";
|
|
3
|
+
import { ScrollView, StyleSheet, View } from "react-native";
|
|
4
|
+
import { useChartKitTheme } from "../../theme";
|
|
5
|
+
import { useScopedChartSelection } from "../../selection/ChartSelectionProvider";
|
|
6
|
+
import { getBarChartAccessibilitySummary } from "./accessibility";
|
|
7
|
+
import { BarChartSurface, BarChartTooltipOverlay, StickyBarChartYAxis } from "./BarChartSurface";
|
|
8
|
+
import { buildBarChartSelectEvent, getBarChartBarAtPoint, getBarChartBarKey, getBarChartInteractionConfig, isBarChartInteractionEnabled } from "./interaction";
|
|
9
|
+
import { buildBarChartModel } from "./model";
|
|
10
|
+
import { getBarChartTooltipConfig } from "./options";
|
|
11
|
+
import { getSafeBarChartContentWidth, getSafeBarChartRenderer } from "./rendererSafety";
|
|
12
|
+
import { getBarChartTooltipModel } from "./tooltipModel";
|
|
13
|
+
import { resolveBarChartViewport, resolveBarChartViewportInitialOffset } from "./viewport";
|
|
14
|
+
export { getBarChartAccessibilitySummary, getBarChartDataTable } from "./accessibility";
|
|
15
|
+
export const BarChart = (props) => {
|
|
16
|
+
const generatedChartId = useId().replace(/:/g, "");
|
|
17
|
+
const scopedChartId = props.id ?? generatedChartId;
|
|
18
|
+
const chartKitTheme = useChartKitTheme();
|
|
19
|
+
const renderer = props.renderer ?? chartKitTheme.renderer;
|
|
20
|
+
const scrollViewRef = useRef(null);
|
|
21
|
+
const interactionConfig = useMemo(() => getBarChartInteractionConfig(props.interaction), [props.interaction]);
|
|
22
|
+
const [gestureSelectedBarKey, setGestureSelectedBarKey] = useState(() => getBarChartBarKey(props.defaultSelectedBar));
|
|
23
|
+
const [gestureSelectionPointer, setGestureSelectionPointer] = useState();
|
|
24
|
+
const [scrollOffsetX, setScrollOffsetX] = useState(0);
|
|
25
|
+
const viewport = useMemo(() => resolveBarChartViewport({
|
|
26
|
+
itemCount: props.data.length,
|
|
27
|
+
scrollable: props.scrollable,
|
|
28
|
+
viewportWidth: props.width,
|
|
29
|
+
visiblePoints: props.visiblePoints
|
|
30
|
+
}), [props.data.length, props.scrollable, props.visiblePoints, props.width]);
|
|
31
|
+
const safeContentWidth = getSafeBarChartContentWidth({
|
|
32
|
+
contentWidth: viewport.contentWidth,
|
|
33
|
+
renderer,
|
|
34
|
+
scrollable: viewport.scrollable
|
|
35
|
+
});
|
|
36
|
+
const safeViewport = useMemo(() => ({
|
|
37
|
+
...viewport,
|
|
38
|
+
contentWidth: safeContentWidth,
|
|
39
|
+
maxOffset: Math.max(0, safeContentWidth - viewport.viewportWidth),
|
|
40
|
+
scrollable: viewport.scrollable && safeContentWidth > viewport.viewportWidth
|
|
41
|
+
}), [safeContentWidth, viewport]);
|
|
42
|
+
const initialScrollOffset = useMemo(() => resolveBarChartViewportInitialOffset({
|
|
43
|
+
initialIndex: props.initialIndex,
|
|
44
|
+
viewport: safeViewport
|
|
45
|
+
}), [props.initialIndex, safeViewport]);
|
|
46
|
+
const model = useMemo(() => buildBarChartModel({
|
|
47
|
+
...props,
|
|
48
|
+
chartKitTheme,
|
|
49
|
+
width: safeViewport.contentWidth
|
|
50
|
+
}), [chartKitTheme, props, safeViewport.contentWidth]);
|
|
51
|
+
const { bars, boxes, resolvedTheme } = model;
|
|
52
|
+
const safeRenderer = getSafeBarChartRenderer({
|
|
53
|
+
contentWidth: viewport.contentWidth,
|
|
54
|
+
renderer,
|
|
55
|
+
scrollable: viewport.scrollable
|
|
56
|
+
});
|
|
57
|
+
const scrollInitialOffset = safeViewport.scrollable && props.initialIndex === "end"
|
|
58
|
+
? Math.max(0, initialScrollOffset - boxes.plot.x * 0.66)
|
|
59
|
+
: initialScrollOffset;
|
|
60
|
+
const barRadius = Math.max(0, props.barRadius ?? 5);
|
|
61
|
+
const controlledSelectedBarKey = getBarChartBarKey(props.selectedBar);
|
|
62
|
+
const selectedBarKey = controlledSelectedBarKey ?? gestureSelectedBarKey;
|
|
63
|
+
const clearGestureSelection = useCallback((reason) => {
|
|
64
|
+
setGestureSelectionPointer(undefined);
|
|
65
|
+
if (props.selectedBar === undefined) {
|
|
66
|
+
setGestureSelectedBarKey(undefined);
|
|
67
|
+
}
|
|
68
|
+
interactionConfig.onDeselect?.({ reason });
|
|
69
|
+
}, [interactionConfig, props.selectedBar]);
|
|
70
|
+
const clearSelectionFromScope = useCallback((reason) => {
|
|
71
|
+
if (reason === "scopeChange") {
|
|
72
|
+
if (props.selectedBar === undefined) {
|
|
73
|
+
setGestureSelectedBarKey(undefined);
|
|
74
|
+
}
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
clearGestureSelection(reason);
|
|
78
|
+
}, [clearGestureSelection, props.selectedBar]);
|
|
79
|
+
const scopedSelection = useScopedChartSelection({
|
|
80
|
+
chartId: scopedChartId,
|
|
81
|
+
controlled: props.selectedBar !== undefined,
|
|
82
|
+
hasSelection: selectedBarKey !== undefined,
|
|
83
|
+
onClear: clearSelectionFromScope
|
|
84
|
+
});
|
|
85
|
+
const clearScopedGestureSelection = useCallback((reason) => {
|
|
86
|
+
clearGestureSelection(reason);
|
|
87
|
+
if (reason !== "programmatic") {
|
|
88
|
+
scopedSelection.dismissSelection?.(reason);
|
|
89
|
+
}
|
|
90
|
+
}, [clearGestureSelection, scopedSelection]);
|
|
91
|
+
const selectedBar = bars.find((bar) => bar.key === selectedBarKey);
|
|
92
|
+
const tooltipConfig = useMemo(() => getBarChartTooltipConfig({
|
|
93
|
+
themeTooltip: resolvedTheme.tooltip,
|
|
94
|
+
tooltip: props.tooltip
|
|
95
|
+
}), [props.tooltip, resolvedTheme.tooltip]);
|
|
96
|
+
const tooltipModel = useMemo(() => getBarChartTooltipModel({
|
|
97
|
+
bar: selectedBar,
|
|
98
|
+
boxes,
|
|
99
|
+
config: tooltipConfig,
|
|
100
|
+
pointer: gestureSelectionPointer?.key === selectedBarKey
|
|
101
|
+
? gestureSelectionPointer
|
|
102
|
+
: undefined
|
|
103
|
+
}), [boxes, gestureSelectionPointer, selectedBar, selectedBarKey, tooltipConfig]);
|
|
104
|
+
const isInteractionEnabled = isBarChartInteractionEnabled(interactionConfig);
|
|
105
|
+
const handleResponderRelease = useCallback((event) => {
|
|
106
|
+
event.preventDefault();
|
|
107
|
+
const { locationX, locationY } = event.nativeEvent;
|
|
108
|
+
const tappedBar = getBarChartBarAtPoint({
|
|
109
|
+
bars,
|
|
110
|
+
locationX,
|
|
111
|
+
locationY
|
|
112
|
+
});
|
|
113
|
+
if (!tappedBar) {
|
|
114
|
+
if (interactionConfig.deselectOnOutsidePress) {
|
|
115
|
+
clearScopedGestureSelection("outsidePress");
|
|
116
|
+
}
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
if (props.selectedBar === undefined) {
|
|
120
|
+
setGestureSelectedBarKey(tappedBar.key);
|
|
121
|
+
}
|
|
122
|
+
setGestureSelectionPointer({
|
|
123
|
+
key: tappedBar.key,
|
|
124
|
+
x: locationX,
|
|
125
|
+
y: locationY
|
|
126
|
+
});
|
|
127
|
+
scopedSelection.selectChart();
|
|
128
|
+
const selectEvent = buildBarChartSelectEvent(tappedBar);
|
|
129
|
+
if (selectEvent) {
|
|
130
|
+
interactionConfig.onSelect?.(selectEvent);
|
|
131
|
+
}
|
|
132
|
+
}, [
|
|
133
|
+
bars,
|
|
134
|
+
clearScopedGestureSelection,
|
|
135
|
+
interactionConfig,
|
|
136
|
+
props.selectedBar,
|
|
137
|
+
scopedSelection
|
|
138
|
+
]);
|
|
139
|
+
const responderProps = isInteractionEnabled
|
|
140
|
+
? {
|
|
141
|
+
onStartShouldSetResponderCapture: () => true,
|
|
142
|
+
onStartShouldSetResponder: () => true,
|
|
143
|
+
onResponderGrant: (event) => {
|
|
144
|
+
event.preventDefault();
|
|
145
|
+
},
|
|
146
|
+
onResponderRelease: handleResponderRelease,
|
|
147
|
+
onResponderTerminationRequest: () => true
|
|
148
|
+
}
|
|
149
|
+
: {};
|
|
150
|
+
const accessibilityLabel = props.accessibilityLabel ??
|
|
151
|
+
getBarChartAccessibilitySummary({
|
|
152
|
+
data: props.data,
|
|
153
|
+
formatXLabel: props.formatXLabel,
|
|
154
|
+
formatYLabel: props.formatYLabel,
|
|
155
|
+
series: props.series,
|
|
156
|
+
xKey: props.xKey,
|
|
157
|
+
yKey: props.yKey,
|
|
158
|
+
yKeys: props.yKeys
|
|
159
|
+
});
|
|
160
|
+
const chartSurface = (_jsx(BarChartSurface, { barRadius: barRadius, height: props.height, model: model, responderProps: responderProps, renderBar: props.renderBar, renderer: safeRenderer, selectedBarKey: selectedBarKey, selectionAnimation: props.selectionAnimation, showYAxis: !safeViewport.scrollable, width: safeViewport.contentWidth }));
|
|
161
|
+
const tooltipOverlay = (_jsx(BarChartTooltipOverlay, { height: props.height, model: model, tooltipConfig: tooltipConfig, tooltipModel: tooltipModel, viewportOffsetX: safeViewport.scrollable ? scrollOffsetX : 0, width: props.width, renderer: safeRenderer }));
|
|
162
|
+
useEffect(() => {
|
|
163
|
+
if (!safeViewport.scrollable) {
|
|
164
|
+
const frame = requestAnimationFrame(() => {
|
|
165
|
+
setScrollOffsetX(0);
|
|
166
|
+
});
|
|
167
|
+
return () => {
|
|
168
|
+
cancelAnimationFrame(frame);
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
const frame = requestAnimationFrame(() => {
|
|
172
|
+
setScrollOffsetX(scrollInitialOffset);
|
|
173
|
+
scrollViewRef.current?.scrollTo({
|
|
174
|
+
animated: false,
|
|
175
|
+
x: scrollInitialOffset
|
|
176
|
+
});
|
|
177
|
+
});
|
|
178
|
+
return () => {
|
|
179
|
+
cancelAnimationFrame(frame);
|
|
180
|
+
};
|
|
181
|
+
}, [safeViewport.scrollable, scrollInitialOffset]);
|
|
182
|
+
return (_jsx(View, { accessible: true, accessibilityLabel: accessibilityLabel, accessibilityRole: "image", style: { width: props.width, height: props.height }, testID: props.testID, children: safeViewport.scrollable ? (_jsxs(_Fragment, { children: [_jsx(ScrollView, { ref: scrollViewRef, horizontal: true, bounces: false, showsHorizontalScrollIndicator: true, style: [
|
|
183
|
+
styles.scroller,
|
|
184
|
+
{ width: props.width, height: props.height }
|
|
185
|
+
], contentContainerStyle: [
|
|
186
|
+
styles.scrollerContent,
|
|
187
|
+
{ width: safeViewport.contentWidth, height: props.height }
|
|
188
|
+
], onScroll: (event) => {
|
|
189
|
+
setScrollOffsetX(event.nativeEvent.contentOffset.x);
|
|
190
|
+
}, scrollEventThrottle: 16, children: chartSurface }), _jsx(StickyBarChartYAxis, { height: props.height, model: model, renderer: safeRenderer, width: props.width }), tooltipOverlay] })) : (_jsxs(_Fragment, { children: [chartSurface, tooltipOverlay] })) }));
|
|
191
|
+
};
|
|
192
|
+
const styles = StyleSheet.create({
|
|
193
|
+
scroller: {
|
|
194
|
+
overflow: "hidden"
|
|
195
|
+
},
|
|
196
|
+
scrollerContent: {
|
|
197
|
+
flexGrow: 0
|
|
198
|
+
}
|
|
199
|
+
});
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
import type { ViewProps } from "react-native";
|
|
3
|
+
import type { BarChartModel, BarChartRenderer, BarChartRenderBarProps, ResolvedBarChartTooltipConfig } from "./types";
|
|
4
|
+
import type { BarChartTooltipModel } from "./tooltip";
|
|
5
|
+
import type { BarChartSelectionAnimationConfig } from "./types";
|
|
6
|
+
export type BarChartSurfaceProps<TData = unknown> = {
|
|
7
|
+
barRadius: number;
|
|
8
|
+
height: number;
|
|
9
|
+
model: BarChartModel<TData>;
|
|
10
|
+
responderProps: ViewProps;
|
|
11
|
+
renderBar?: ((props: BarChartRenderBarProps<TData>) => ReactNode) | undefined;
|
|
12
|
+
renderer?: BarChartRenderer | undefined;
|
|
13
|
+
selectedBarKey: string | undefined;
|
|
14
|
+
selectionAnimation: boolean | BarChartSelectionAnimationConfig | undefined;
|
|
15
|
+
showYAxis: boolean;
|
|
16
|
+
width: number;
|
|
17
|
+
};
|
|
18
|
+
export declare const BarChartSurface: <TData>({ barRadius, height, model, responderProps, renderBar, selectedBarKey, selectionAnimation, showYAxis, width, renderer: rendererProp }: BarChartSurfaceProps<TData>) => import("react").JSX.Element;
|
|
19
|
+
export type BarChartTooltipOverlayProps<TData = unknown> = {
|
|
20
|
+
height: number;
|
|
21
|
+
model: BarChartModel<TData>;
|
|
22
|
+
tooltipConfig: ResolvedBarChartTooltipConfig;
|
|
23
|
+
tooltipModel: BarChartTooltipModel<TData> | undefined;
|
|
24
|
+
viewportOffsetX: number;
|
|
25
|
+
width: number;
|
|
26
|
+
renderer?: BarChartRenderer | undefined;
|
|
27
|
+
};
|
|
28
|
+
export declare const BarChartTooltipOverlay: <TData>({ height, model, tooltipConfig, tooltipModel, viewportOffsetX, width, renderer: rendererProp }: BarChartTooltipOverlayProps<TData>) => import("react").JSX.Element;
|
|
29
|
+
export type StickyBarChartYAxisProps<TData = unknown> = {
|
|
30
|
+
height: number;
|
|
31
|
+
model: BarChartModel<TData>;
|
|
32
|
+
width: number;
|
|
33
|
+
renderer?: BarChartRenderer | undefined;
|
|
34
|
+
};
|
|
35
|
+
export declare const StickyBarChartYAxis: <TData>({ height, model, width, renderer: rendererProp }: StickyBarChartYAxisProps<TData>) => import("react").JSX.Element;
|
|
36
|
+
//# sourceMappingURL=BarChartSurface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BarChartSurface.d.ts","sourceRoot":"","sources":["../../../src/charts/bar/BarChartSurface.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAgB9C,OAAO,KAAK,EACV,aAAa,EACb,gBAAgB,EAChB,sBAAsB,EACtB,6BAA6B,EAC9B,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,SAAS,CAAC;AAEhE,MAAM,MAAM,oBAAoB,CAAC,KAAK,GAAG,OAAO,IAAI;IAClD,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;IAC5B,cAAc,EAAE,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,sBAAsB,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC,GAAG,SAAS,CAAC;IAC9E,QAAQ,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;IACxC,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,kBAAkB,EAAE,OAAO,GAAG,gCAAgC,GAAG,SAAS,CAAC;IAC3E,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AASF,eAAO,MAAM,eAAe,GAAI,KAAK,EAAG,uIAWrC,oBAAoB,CAAC,KAAK,CAAC,gCA+P7B,CAAC;AAEF,MAAM,MAAM,2BAA2B,CAAC,KAAK,GAAG,OAAO,IAAI;IACzD,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;IAC5B,aAAa,EAAE,6BAA6B,CAAC;IAC7C,YAAY,EAAE,oBAAoB,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC;IACtD,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;CACzC,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAI,KAAK,EAAG,gGAQ5C,2BAA2B,CAAC,KAAK,CAAC,gCAsCpC,CAAC;AAEF,MAAM,MAAM,wBAAwB,CAAC,KAAK,GAAG,OAAO,IAAI;IACtD,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;CACzC,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,KAAK,EAAG,kDAKzC,wBAAwB,CAAC,KAAK,CAAC,gCA8CjC,CAAC"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Fragment } from "react";
|
|
3
|
+
import { StyleSheet, View } from "react-native";
|
|
4
|
+
import { createSvgTestId } from "../../../svg-renderer/index";
|
|
5
|
+
import { getLineChartRenderer as getBarChartRenderer } from "../line/renderer";
|
|
6
|
+
import { getFontFamilyProps } from "../line/text";
|
|
7
|
+
import { getAnimatedBarSelectionFill, getAnimatedBarSelectionStrokeOpacity, getBarChartSelectionGridOpacity, shouldRenderBarChartGridLines, useBarChartSelectionAnimation } from "./selectionAnimation";
|
|
8
|
+
import { renderDefaultBarChartTooltip } from "./tooltip";
|
|
9
|
+
import { offsetBarChartTooltipForViewport } from "./tooltipPlacement";
|
|
10
|
+
import { useAnimatedBarChartTooltipModel } from "./useAnimatedTooltipModel";
|
|
11
|
+
const RendererLayer = ({ children }) => _jsx(_Fragment, { children: children });
|
|
12
|
+
export const BarChartSurface = ({ barRadius, height, model, responderProps, renderBar, selectedBarKey, selectionAnimation, showYAxis, width, renderer: rendererProp }) => {
|
|
13
|
+
const { bars, boxes, legendItems, orientation, resolvedTheme, showHorizontalGridLines, showXAxisLabels, showYAxisLabels, valueLabels, xLabels, yLabels, yTicks } = model;
|
|
14
|
+
const fontProps = getFontFamilyProps(resolvedTheme.typography.fontFamily);
|
|
15
|
+
const selectionAnimationState = useBarChartSelectionAnimation({
|
|
16
|
+
animation: selectionAnimation,
|
|
17
|
+
selectedBarKey
|
|
18
|
+
});
|
|
19
|
+
const gridStrokeOpacity = getBarChartSelectionGridOpacity({
|
|
20
|
+
selectedBarKey,
|
|
21
|
+
state: selectionAnimationState
|
|
22
|
+
});
|
|
23
|
+
const shouldRenderGridLines = shouldRenderBarChartGridLines({
|
|
24
|
+
selectedBarKey,
|
|
25
|
+
state: selectionAnimationState
|
|
26
|
+
});
|
|
27
|
+
const shouldCoverSelectionGrid = !shouldRenderGridLines;
|
|
28
|
+
const renderer = getBarChartRenderer(rendererProp);
|
|
29
|
+
const Layer = renderer.Layer ?? RendererLayer;
|
|
30
|
+
const Line = renderer.Line;
|
|
31
|
+
const Rect = renderer.Rect;
|
|
32
|
+
const Surface = renderer.Surface;
|
|
33
|
+
const Text = renderer.Text;
|
|
34
|
+
const isInteractive = Object.keys(responderProps).length > 0;
|
|
35
|
+
return (_jsxs(View, { collapsable: false, style: { width, height, position: "relative" }, children: [_jsxs(Surface, { width: width, height: height, children: [_jsxs(Layer, { name: "background", children: [_jsx(Rect, { x: 0, y: 0, width: width, height: height, rx: 8, fill: resolvedTheme.background }), _jsx(Rect, { x: boxes.plot.x, y: boxes.plot.y, width: boxes.plot.width, height: boxes.plot.height, rx: 6, fill: resolvedTheme.plotBackground })] }), _jsxs(Layer, { name: "grid", children: [shouldRenderGridLines &&
|
|
36
|
+
showHorizontalGridLines &&
|
|
37
|
+
orientation === "horizontal"
|
|
38
|
+
? xLabels.map((label) => (_jsx(Line, { x1: label.x, x2: label.x, y1: boxes.plot.y, y2: boxes.plot.y + boxes.plot.height, stroke: resolvedTheme.grid, strokeOpacity: gridStrokeOpacity, strokeWidth: 1 }, `grid-x-${label.index}`)))
|
|
39
|
+
: null, shouldRenderGridLines &&
|
|
40
|
+
showHorizontalGridLines &&
|
|
41
|
+
orientation === "vertical"
|
|
42
|
+
? yTicks.map((tick) => {
|
|
43
|
+
const label = yLabels.find((item) => item.key === `tick-${tick}`);
|
|
44
|
+
return label ? (_jsx(Line, { x1: boxes.plot.x, x2: boxes.plot.x + boxes.plot.width, y1: label.y - resolvedTheme.typography.axisLabelSize / 2 + 2, y2: label.y - resolvedTheme.typography.axisLabelSize / 2 + 2, stroke: resolvedTheme.grid, strokeOpacity: gridStrokeOpacity, strokeWidth: 1 }, `grid-y-${tick}`)) : null;
|
|
45
|
+
})
|
|
46
|
+
: null] }), _jsxs(Layer, { name: "data", children: [shouldCoverSelectionGrid ? (_jsx(Rect, { x: boxes.plot.x, y: boxes.plot.y, width: boxes.plot.width, height: boxes.plot.height, rx: 6, fill: resolvedTheme.plotBackground, testID: createSvgTestId("bar-chart-selection-grid-cover") })) : null, bars.map((bar) => {
|
|
47
|
+
const fill = getAnimatedBarSelectionFill({
|
|
48
|
+
backgroundColor: resolvedTheme.plotBackground,
|
|
49
|
+
barKey: bar.key,
|
|
50
|
+
color: bar.color,
|
|
51
|
+
state: selectionAnimationState
|
|
52
|
+
});
|
|
53
|
+
const strokeOpacity = getAnimatedBarSelectionStrokeOpacity({
|
|
54
|
+
barKey: bar.key,
|
|
55
|
+
state: selectionAnimationState
|
|
56
|
+
});
|
|
57
|
+
const radius = Math.min(barRadius, bar.width / 2, bar.height / 2);
|
|
58
|
+
const barNode = renderBar?.({
|
|
59
|
+
bar,
|
|
60
|
+
fill,
|
|
61
|
+
radius,
|
|
62
|
+
selected: selectedBarKey === bar.key,
|
|
63
|
+
strokeColor: resolvedTheme.text,
|
|
64
|
+
strokeOpacity,
|
|
65
|
+
strokeWidth: 1.5,
|
|
66
|
+
theme: resolvedTheme
|
|
67
|
+
});
|
|
68
|
+
return (_jsxs(Fragment, { children: [_jsx(Rect, { x: bar.x, y: bar.y, width: bar.width, height: bar.height, rx: 0, fill: resolvedTheme.plotBackground }), barNode ?? (_jsx(Rect, { x: bar.x, y: bar.y, width: bar.width, height: bar.height, rx: radius, fill: fill, ...(strokeOpacity > 0
|
|
69
|
+
? {
|
|
70
|
+
stroke: resolvedTheme.text,
|
|
71
|
+
strokeOpacity,
|
|
72
|
+
strokeWidth: 1.5
|
|
73
|
+
}
|
|
74
|
+
: {}), testID: createSvgTestId("bar-chart-bar", bar.seriesKey, bar.dataIndex) }))] }, bar.key));
|
|
75
|
+
})] }), _jsxs(Layer, { name: "axes", children: [showYAxis && showYAxisLabels
|
|
76
|
+
? yLabels.map((label) => (_jsx(Text, { x: label.x, y: label.y, fill: resolvedTheme.mutedText, fontSize: resolvedTheme.typography.axisLabelSize, textAnchor: "end", ...fontProps, children: label.text }, `label-y-${label.key}`)))
|
|
77
|
+
: null, showXAxisLabels
|
|
78
|
+
? xLabels.map((label) => (_jsx(Text, { x: label.x, y: label.y, fill: resolvedTheme.mutedText, fontSize: resolvedTheme.typography.axisLabelSize, textAnchor: label.textAnchor, ...fontProps, children: label.text }, `label-x-${label.index}`)))
|
|
79
|
+
: null, valueLabels.map((label) => (_jsx(Text, { x: label.x, y: label.y, fill: label.color, fontSize: resolvedTheme.typography.axisLabelSize, textAnchor: label.textAnchor ?? "middle", ...fontProps, children: label.text }, label.key))), legendItems.map((item) => (_jsx(Rect, { x: item.markerX, y: item.markerY, width: 8, height: 8, rx: 2, fill: item.color }, `legend-marker-${item.key}`))), legendItems.map((item) => (_jsx(Text, { x: item.labelX, y: item.labelY, fill: resolvedTheme.mutedText, fontSize: resolvedTheme.typography.legendLabelSize, textAnchor: "start", ...fontProps, children: item.label }, `legend-label-${item.key}`)))] })] }), isInteractive ? (_jsx(View, { accessible: false, collapsable: false, importantForAccessibility: "no", pointerEvents: "auto", style: styles.interactionOverlay, ...responderProps })) : null] }));
|
|
80
|
+
};
|
|
81
|
+
export const BarChartTooltipOverlay = ({ height, model, tooltipConfig, tooltipModel, viewportOffsetX, width, renderer: rendererProp }) => {
|
|
82
|
+
const animatedTooltipModel = useAnimatedBarChartTooltipModel(tooltipModel, tooltipConfig.positionAnimationDuration);
|
|
83
|
+
const viewportTooltipModel = animatedTooltipModel
|
|
84
|
+
? offsetBarChartTooltipForViewport({
|
|
85
|
+
leftInset: model.boxes.plot.x + tooltipConfig.edgePadding,
|
|
86
|
+
rightInset: tooltipConfig.edgePadding,
|
|
87
|
+
tooltip: animatedTooltipModel,
|
|
88
|
+
viewportOffsetX,
|
|
89
|
+
viewportWidth: width
|
|
90
|
+
})
|
|
91
|
+
: undefined;
|
|
92
|
+
const renderer = getBarChartRenderer(rendererProp);
|
|
93
|
+
const Layer = renderer.Layer ?? RendererLayer;
|
|
94
|
+
const Surface = renderer.Surface;
|
|
95
|
+
return (_jsx(View, { pointerEvents: "none", style: [styles.tooltipOverlay, { width, height }], children: _jsx(Surface, { width: width, height: height, children: _jsx(Layer, { name: "interaction", children: viewportTooltipModel
|
|
96
|
+
? renderDefaultBarChartTooltip({
|
|
97
|
+
...viewportTooltipModel,
|
|
98
|
+
config: tooltipConfig
|
|
99
|
+
}, renderer)
|
|
100
|
+
: null }) }) }));
|
|
101
|
+
};
|
|
102
|
+
export const StickyBarChartYAxis = ({ height, model, width, renderer: rendererProp }) => {
|
|
103
|
+
const { boxes, resolvedTheme, showYAxisLabels, yLabels } = model;
|
|
104
|
+
const fontProps = getFontFamilyProps(resolvedTheme.typography.fontFamily);
|
|
105
|
+
const renderer = getBarChartRenderer(rendererProp);
|
|
106
|
+
const Layer = renderer.Layer ?? RendererLayer;
|
|
107
|
+
const Rect = renderer.Rect;
|
|
108
|
+
const Surface = renderer.Surface;
|
|
109
|
+
const Text = renderer.Text;
|
|
110
|
+
return (_jsx(View, { pointerEvents: "none", style: [styles.stickyYAxis, { width, height }], children: _jsx(Surface, { width: width, height: height, children: _jsxs(Layer, { name: "axes", children: [_jsx(Rect, { x: 0, y: 0, width: Math.max(0, boxes.plot.x), height: boxes.plot.y + boxes.plot.height, fill: resolvedTheme.background }), _jsx(Rect, { x: 0, y: boxes.plot.y + boxes.plot.height, width: Math.max(0, boxes.plot.x), height: Math.max(0, height - (boxes.plot.y + boxes.plot.height)), fill: resolvedTheme.background }), showYAxisLabels
|
|
111
|
+
? yLabels.map((label) => (_jsx(Text, { x: label.x, y: label.y, fill: resolvedTheme.mutedText, fontSize: resolvedTheme.typography.axisLabelSize, textAnchor: "end", ...fontProps, children: label.text }, `sticky-label-y-${label.key}`)))
|
|
112
|
+
: null] }) }) }));
|
|
113
|
+
};
|
|
114
|
+
const styles = StyleSheet.create({
|
|
115
|
+
stickyYAxis: {
|
|
116
|
+
left: 0,
|
|
117
|
+
position: "absolute",
|
|
118
|
+
top: 0,
|
|
119
|
+
zIndex: 1
|
|
120
|
+
},
|
|
121
|
+
tooltipOverlay: {
|
|
122
|
+
left: 0,
|
|
123
|
+
position: "absolute",
|
|
124
|
+
top: 0,
|
|
125
|
+
zIndex: 2
|
|
126
|
+
},
|
|
127
|
+
interactionOverlay: {
|
|
128
|
+
bottom: 0,
|
|
129
|
+
left: 0,
|
|
130
|
+
position: "absolute",
|
|
131
|
+
right: 0,
|
|
132
|
+
top: 0
|
|
133
|
+
}
|
|
134
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StackedBarChart.d.ts","sourceRoot":"","sources":["../../../src/charts/bar/StackedBarChart.tsx"],"names":[],"mappings":"AAIA,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,iBAAiB,CAAC;AAEzB,mBAAmB,iBAAiB,CAAC;AAErC,eAAO,MAAM,eAAe,GAAI,OAAO,oBAAoB,gCAW1D,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useMemo } from "react";
|
|
3
|
+
import { View } from "react-native";
|
|
4
|
+
import { BarChart } from "./BarChart";
|
|
5
|
+
import { buildStackedBarChartCompatProps } from "./stackedCompat";
|
|
6
|
+
export const StackedBarChart = (props) => {
|
|
7
|
+
const { barChartProps, style } = useMemo(() => buildStackedBarChartCompatProps(props), [props]);
|
|
8
|
+
return (_jsx(View, { style: style, children: _jsx(BarChart, { ...barChartProps }) }));
|
|
9
|
+
};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { ChartXValue } from "../../../core/index";
|
|
2
|
+
import type { BarChartProps } from "./types";
|
|
3
|
+
export type BarChartDataTableColumn = {
|
|
4
|
+
key: string;
|
|
5
|
+
label: string;
|
|
6
|
+
};
|
|
7
|
+
export type BarChartDataTableRow<TData = unknown> = {
|
|
8
|
+
index: number;
|
|
9
|
+
x: ChartXValue;
|
|
10
|
+
xLabel: string;
|
|
11
|
+
values: Record<string, number | null>;
|
|
12
|
+
formattedValues: Record<string, string>;
|
|
13
|
+
raw: TData;
|
|
14
|
+
};
|
|
15
|
+
export type BarChartDataTable<TData = unknown> = {
|
|
16
|
+
columns: BarChartDataTableColumn[];
|
|
17
|
+
rows: Array<BarChartDataTableRow<TData>>;
|
|
18
|
+
};
|
|
19
|
+
type BarChartAccessibilityInput<TData extends Record<string, unknown>> = {
|
|
20
|
+
data: BarChartProps<TData>["data"];
|
|
21
|
+
formatXLabel?: BarChartProps<TData>["formatXLabel"] | undefined;
|
|
22
|
+
formatYLabel?: BarChartProps<TData>["formatYLabel"] | undefined;
|
|
23
|
+
series?: BarChartProps<TData>["series"] | undefined;
|
|
24
|
+
xKey: BarChartProps<TData>["xKey"];
|
|
25
|
+
yKey?: BarChartProps<TData>["yKey"] | undefined;
|
|
26
|
+
yKeys?: BarChartProps<TData>["yKeys"] | undefined;
|
|
27
|
+
};
|
|
28
|
+
export declare const getBarChartDataTable: <TData extends Record<string, unknown>>({ data, formatXLabel, formatYLabel, series, xKey, yKey, yKeys }: BarChartAccessibilityInput<TData>) => BarChartDataTable<TData>;
|
|
29
|
+
export declare const getBarChartAccessibilitySummary: <TData extends Record<string, unknown>>(input: BarChartAccessibilityInput<TData>) => string;
|
|
30
|
+
export {};
|
|
31
|
+
//# sourceMappingURL=accessibility.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accessibility.d.ts","sourceRoot":"","sources":["../../../src/charts/bar/accessibility.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD,OAAO,KAAK,EAAE,aAAa,EAAkB,MAAM,SAAS,CAAC;AAM7D,MAAM,MAAM,uBAAuB,GAAG;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,oBAAoB,CAAC,KAAK,GAAG,OAAO,IAAI;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,CAAC,EAAE,WAAW,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;IACtC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,GAAG,EAAE,KAAK,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,iBAAiB,CAAC,KAAK,GAAG,OAAO,IAAI;IAC/C,OAAO,EAAE,uBAAuB,EAAE,CAAC;IACnC,IAAI,EAAE,KAAK,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC;CAC1C,CAAC;AAEF,KAAK,0BAA0B,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI;IACvE,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;IACnC,YAAY,CAAC,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,GAAG,SAAS,CAAC;IAChE,YAAY,CAAC,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,GAAG,SAAS,CAAC;IAChE,MAAM,CAAC,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC;IACpD,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;IACnC,IAAI,CAAC,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IAChD,KAAK,CAAC,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;CACnD,CAAC;AAuEF,eAAO,MAAM,oBAAoB,GAAI,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,iEAQzE,0BAA0B,CAAC,KAAK,CAAC,KAAG,iBAAiB,CAAC,KAAK,CAqC7D,CAAC;AAEF,eAAO,MAAM,+BAA+B,GAC1C,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAErC,OAAO,0BAA0B,CAAC,KAAK,CAAC,WAwCzC,CAAC"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { normalizeCartesianData } from "../../../core/index";
|
|
2
|
+
import { defaultFormatBarChartXLabel, defaultFormatBarChartYLabel } from "./modelUtils";
|
|
3
|
+
const pluralize = (count, singular, plural = `${singular}s`) => `${count} ${count === 1 ? singular : plural}`;
|
|
4
|
+
const resolveSeriesInput = (yKey, yKeys, series) => {
|
|
5
|
+
if (series && series.length > 0) {
|
|
6
|
+
return series;
|
|
7
|
+
}
|
|
8
|
+
if (yKeys && yKeys.length > 0) {
|
|
9
|
+
return yKeys.map((key) => ({ yKey: key }));
|
|
10
|
+
}
|
|
11
|
+
return yKey ? [{ yKey }] : [];
|
|
12
|
+
};
|
|
13
|
+
const getDefinedPoints = (table) => table.rows.flatMap((row) => table.columns.flatMap((column) => {
|
|
14
|
+
const value = row.values[column.key];
|
|
15
|
+
return typeof value === "number"
|
|
16
|
+
? [
|
|
17
|
+
{
|
|
18
|
+
formattedValue: row.formattedValues[column.key] ?? String(value),
|
|
19
|
+
raw: row.raw,
|
|
20
|
+
seriesLabel: column.label,
|
|
21
|
+
value,
|
|
22
|
+
xLabel: row.xLabel
|
|
23
|
+
}
|
|
24
|
+
]
|
|
25
|
+
: [];
|
|
26
|
+
}));
|
|
27
|
+
const getMinPoint = (points) => points.reduce((min, point) => (!min || point.value < min.value ? point : min), undefined);
|
|
28
|
+
const getMaxPoint = (points) => points.reduce((max, point) => (!max || point.value > max.value ? point : max), undefined);
|
|
29
|
+
const getPointLabel = ({ point, seriesCount }) => seriesCount > 1 ? `${point.seriesLabel} in ${point.xLabel}` : point.xLabel;
|
|
30
|
+
export const getBarChartDataTable = ({ data, formatXLabel = defaultFormatBarChartXLabel, formatYLabel = defaultFormatBarChartYLabel, series, xKey, yKey, yKeys }) => {
|
|
31
|
+
const seriesInput = resolveSeriesInput(yKey, yKeys, series);
|
|
32
|
+
const normalized = normalizeCartesianData({
|
|
33
|
+
data,
|
|
34
|
+
xKey,
|
|
35
|
+
series: seriesInput
|
|
36
|
+
});
|
|
37
|
+
return {
|
|
38
|
+
columns: normalized.series.map((item) => ({
|
|
39
|
+
key: item.key,
|
|
40
|
+
label: item.label
|
|
41
|
+
})),
|
|
42
|
+
rows: data.map((row, rowIndex) => {
|
|
43
|
+
const values = {};
|
|
44
|
+
const formattedValues = {};
|
|
45
|
+
normalized.series.forEach((seriesItem) => {
|
|
46
|
+
const value = seriesItem.points[rowIndex]?.value ?? null;
|
|
47
|
+
values[seriesItem.key] = value;
|
|
48
|
+
formattedValues[seriesItem.key] =
|
|
49
|
+
value === null ? "No value" : formatYLabel(value);
|
|
50
|
+
});
|
|
51
|
+
const x = normalized.series[0]?.points[rowIndex]?.x ?? rowIndex;
|
|
52
|
+
return {
|
|
53
|
+
index: rowIndex,
|
|
54
|
+
x,
|
|
55
|
+
xLabel: formatXLabel(x, rowIndex),
|
|
56
|
+
values,
|
|
57
|
+
formattedValues,
|
|
58
|
+
raw: row
|
|
59
|
+
};
|
|
60
|
+
})
|
|
61
|
+
};
|
|
62
|
+
};
|
|
63
|
+
export const getBarChartAccessibilitySummary = (input) => {
|
|
64
|
+
const table = getBarChartDataTable(input);
|
|
65
|
+
if (table.columns.length === 0 || table.rows.length === 0) {
|
|
66
|
+
return "Bar chart with no data.";
|
|
67
|
+
}
|
|
68
|
+
const points = getDefinedPoints(table);
|
|
69
|
+
if (points.length === 0) {
|
|
70
|
+
return `Bar chart with ${pluralize(table.rows.length, "category", "categories")} and no defined values.`;
|
|
71
|
+
}
|
|
72
|
+
const intro = table.columns.length === 1
|
|
73
|
+
? `Bar chart with ${pluralize(points.length, "bar")}.`
|
|
74
|
+
: `Bar chart with ${pluralize(table.columns.length, "series", "series")} across ${pluralize(table.rows.length, "category", "categories")}.`;
|
|
75
|
+
const minPoint = getMinPoint(points);
|
|
76
|
+
const maxPoint = getMaxPoint(points);
|
|
77
|
+
if (!minPoint || !maxPoint) {
|
|
78
|
+
return intro;
|
|
79
|
+
}
|
|
80
|
+
return `${intro} Highest value is ${getPointLabel({
|
|
81
|
+
point: maxPoint,
|
|
82
|
+
seriesCount: table.columns.length
|
|
83
|
+
})} at ${maxPoint.formattedValue}. Lowest value is ${getPointLabel({
|
|
84
|
+
point: minPoint,
|
|
85
|
+
seriesCount: table.columns.length
|
|
86
|
+
})} at ${minPoint.formattedValue}.`;
|
|
87
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { BarChartBarModel, BarChartDeselectEvent, BarChartInteraction, BarChartSelectEvent, BarChartSelectedBar } from "./types";
|
|
2
|
+
export type ResolvedBarChartInteractionConfig<TData = unknown> = {
|
|
3
|
+
mode: "none" | "tap";
|
|
4
|
+
deselectOnOutsidePress: boolean;
|
|
5
|
+
onSelect?: (event: BarChartSelectEvent<TData>) => void;
|
|
6
|
+
onDeselect?: (event: BarChartDeselectEvent) => void;
|
|
7
|
+
};
|
|
8
|
+
export declare const getBarChartBarKey: (selectedBar: BarChartSelectedBar | undefined) => string | undefined;
|
|
9
|
+
export declare const getBarChartInteractionConfig: <TData>(interaction: BarChartInteraction<TData> | undefined) => ResolvedBarChartInteractionConfig<TData>;
|
|
10
|
+
export declare const isBarChartInteractionEnabled: <TData>(config: ResolvedBarChartInteractionConfig<TData>) => boolean;
|
|
11
|
+
export declare const getBarChartBarAtPoint: <TData>({ bars, hitSlop, locationX, locationY }: {
|
|
12
|
+
bars: Array<BarChartBarModel<TData>>;
|
|
13
|
+
hitSlop?: number;
|
|
14
|
+
locationX: number;
|
|
15
|
+
locationY: number;
|
|
16
|
+
}) => BarChartBarModel<TData> | undefined;
|
|
17
|
+
export declare const buildBarChartSelectEvent: <TData>(bar: BarChartBarModel<TData> | undefined) => BarChartSelectEvent<TData> | undefined;
|
|
18
|
+
//# sourceMappingURL=interaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interaction.d.ts","sourceRoot":"","sources":["../../../src/charts/bar/interaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,SAAS,CAAC;AAEjB,MAAM,MAAM,iCAAiC,CAAC,KAAK,GAAG,OAAO,IAAI;IAC/D,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;IACrB,sBAAsB,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,mBAAmB,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC;IACvD,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI,CAAC;CACrD,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,aAAa,mBAAmB,GAAG,SAAS,uBAEiC,CAAC;AAEhF,eAAO,MAAM,4BAA4B,GAAI,KAAK,EAChD,aAAa,mBAAmB,CAAC,KAAK,CAAC,GAAG,SAAS,KAClD,iCAAiC,CAAC,KAAK,CAqBzC,CAAC;AAEF,eAAO,MAAM,4BAA4B,GAAI,KAAK,EAChD,QAAQ,iCAAiC,CAAC,KAAK,CAAC,YACvB,CAAC;AAE5B,eAAO,MAAM,qBAAqB,GAAI,KAAK,EAAE,yCAK1C;IACD,IAAI,EAAE,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB,wCAyBA,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAI,KAAK,EAC5C,KAAK,gBAAgB,CAAC,KAAK,CAAC,GAAG,SAAS,KACvC,mBAAmB,CAAC,KAAK,CAAC,GAAG,SAoB/B,CAAC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
export const getBarChartBarKey = (selectedBar) => selectedBar ? `${selectedBar.seriesKey}-${selectedBar.dataIndex}` : undefined;
|
|
2
|
+
export const getBarChartInteractionConfig = (interaction) => {
|
|
3
|
+
if (!interaction) {
|
|
4
|
+
return {
|
|
5
|
+
mode: "none",
|
|
6
|
+
deselectOnOutsidePress: false
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
if (typeof interaction === "string") {
|
|
10
|
+
return {
|
|
11
|
+
mode: interaction,
|
|
12
|
+
deselectOnOutsidePress: interaction !== "none"
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
return {
|
|
16
|
+
mode: interaction.mode ?? "tap",
|
|
17
|
+
deselectOnOutsidePress: interaction.deselectOnOutsidePress ?? true,
|
|
18
|
+
...(interaction.onSelect ? { onSelect: interaction.onSelect } : {}),
|
|
19
|
+
...(interaction.onDeselect ? { onDeselect: interaction.onDeselect } : {})
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
export const isBarChartInteractionEnabled = (config) => config.mode !== "none";
|
|
23
|
+
export const getBarChartBarAtPoint = ({ bars, hitSlop = 6, locationX, locationY }) => {
|
|
24
|
+
const candidates = bars.filter((bar) => {
|
|
25
|
+
const top = bar.y;
|
|
26
|
+
const bottom = bar.y + bar.height;
|
|
27
|
+
return (locationX >= bar.x - hitSlop &&
|
|
28
|
+
locationX <= bar.x + bar.width + hitSlop &&
|
|
29
|
+
locationY >= top - hitSlop &&
|
|
30
|
+
locationY <= bottom + hitSlop);
|
|
31
|
+
});
|
|
32
|
+
if (candidates.length <= 1) {
|
|
33
|
+
return candidates[0];
|
|
34
|
+
}
|
|
35
|
+
return candidates
|
|
36
|
+
.map((bar) => ({
|
|
37
|
+
bar,
|
|
38
|
+
distance: Math.abs(locationX - (bar.x + bar.width / 2)) +
|
|
39
|
+
Math.abs(locationY - (bar.y + bar.height / 2))
|
|
40
|
+
}))
|
|
41
|
+
.sort((a, b) => a.distance - b.distance)[0]?.bar;
|
|
42
|
+
};
|
|
43
|
+
export const buildBarChartSelectEvent = (bar) => {
|
|
44
|
+
if (!bar) {
|
|
45
|
+
return undefined;
|
|
46
|
+
}
|
|
47
|
+
return {
|
|
48
|
+
color: bar.color,
|
|
49
|
+
dataIndex: bar.dataIndex,
|
|
50
|
+
formattedValue: bar.formattedValue,
|
|
51
|
+
position: {
|
|
52
|
+
x: bar.x + bar.width / 2,
|
|
53
|
+
y: bar.y
|
|
54
|
+
},
|
|
55
|
+
raw: bar.raw,
|
|
56
|
+
seriesKey: bar.seriesKey,
|
|
57
|
+
seriesLabel: bar.seriesLabel,
|
|
58
|
+
value: bar.value,
|
|
59
|
+
x: bar.xValue,
|
|
60
|
+
xLabel: bar.xLabel
|
|
61
|
+
};
|
|
62
|
+
};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { BarChartModel, BuildBarChartModelOptions } from "./types";
|
|
2
|
+
export declare const buildBarChartModel: <TData extends Record<string, unknown>>({ data, xKey, yKey, yKeys, series, width, height, theme, preset, mode, orientation, yDomain, barWidthRatio, barGapRatio, showValuesOnTopOfBars, showHorizontalGridLines, showXAxisLabels, showYAxisLabels, yTickCount, legend, labelStrategy, formatXLabel, formatYLabel, chartKitTheme }: BuildBarChartModelOptions<TData>) => BarChartModel<TData>;
|
|
3
|
+
//# sourceMappingURL=model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../src/charts/bar/model.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAEV,aAAa,EAGb,yBAAyB,EAC1B,MAAM,SAAS,CAAC;AAoEjB,eAAO,MAAM,kBAAkB,GAAI,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,2RAyBvE,yBAAyB,CAAC,KAAK,CAAC,KAAG,aAAa,CAAC,KAAK,CAkUxD,CAAC"}
|