@chipmobilesdk/rn-chart 0.3.0 → 0.5.0
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/CHANGELOG.md +129 -0
- package/README.md +45 -3
- package/lib/commonjs/a11y/summary.js +190 -0
- package/lib/commonjs/a11y/summary.js.map +1 -0
- package/lib/commonjs/contract/datasource.js +64 -0
- package/lib/commonjs/contract/datasource.js.map +1 -0
- package/lib/commonjs/contract/distribution.js +45 -0
- package/lib/commonjs/contract/distribution.js.map +1 -0
- package/lib/commonjs/contract/errors.js +88 -0
- package/lib/commonjs/contract/errors.js.map +1 -0
- package/lib/commonjs/contract/format.js +133 -0
- package/lib/commonjs/contract/format.js.map +1 -0
- package/lib/commonjs/contract/interaction.js +24 -0
- package/lib/commonjs/contract/interaction.js.map +1 -0
- package/lib/commonjs/contract/marker.js +55 -0
- package/lib/commonjs/contract/marker.js.map +1 -0
- package/lib/commonjs/contract/props.js +6 -0
- package/lib/commonjs/contract/props.js.map +1 -0
- package/lib/commonjs/contract/state.js +68 -0
- package/lib/commonjs/contract/state.js.map +1 -0
- package/lib/commonjs/contract/strings.js +54 -0
- package/lib/commonjs/contract/strings.js.map +1 -0
- package/lib/commonjs/contract/theme.js +116 -0
- package/lib/commonjs/contract/theme.js.map +1 -0
- package/lib/commonjs/contract/value.js +112 -0
- package/lib/commonjs/contract/value.js.map +1 -0
- package/lib/commonjs/geometry/bar.js +257 -0
- package/lib/commonjs/geometry/bar.js.map +1 -0
- package/lib/commonjs/geometry/distribution.js +197 -0
- package/lib/commonjs/geometry/distribution.js.map +1 -0
- package/lib/commonjs/geometry/heatmap.js +186 -0
- package/lib/commonjs/geometry/heatmap.js.map +1 -0
- package/lib/commonjs/geometry/hitTest.js +117 -0
- package/lib/commonjs/geometry/hitTest.js.map +1 -0
- package/lib/commonjs/geometry/layout.js +134 -0
- package/lib/commonjs/geometry/layout.js.map +1 -0
- package/lib/commonjs/geometry/markers.js +59 -0
- package/lib/commonjs/geometry/markers.js.map +1 -0
- package/lib/commonjs/geometry/path.js +166 -0
- package/lib/commonjs/geometry/path.js.map +1 -0
- package/lib/commonjs/geometry/progress.js +203 -0
- package/lib/commonjs/geometry/progress.js.map +1 -0
- package/lib/commonjs/geometry/scale.js +127 -0
- package/lib/commonjs/geometry/scale.js.map +1 -0
- package/lib/commonjs/geometry/ticks.js +120 -0
- package/lib/commonjs/geometry/ticks.js.map +1 -0
- package/lib/commonjs/geometry/timeSeries.js +157 -0
- package/lib/commonjs/geometry/timeSeries.js.map +1 -0
- package/lib/commonjs/geometry/types.js +43 -0
- package/lib/commonjs/geometry/types.js.map +1 -0
- package/lib/commonjs/index.js +284 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/package.json +1 -0
- package/lib/commonjs/react/ChartBoundary.js +82 -0
- package/lib/commonjs/react/ChartBoundary.js.map +1 -0
- package/lib/commonjs/react/ChartFrame.js +270 -0
- package/lib/commonjs/react/ChartFrame.js.map +1 -0
- package/lib/commonjs/react/ChartLegend.js +242 -0
- package/lib/commonjs/react/ChartLegend.js.map +1 -0
- package/lib/commonjs/react/ChartPlot.js +62 -0
- package/lib/commonjs/react/ChartPlot.js.map +1 -0
- package/lib/commonjs/react/ChartStateOverlay.js +89 -0
- package/lib/commonjs/react/ChartStateOverlay.js.map +1 -0
- package/lib/commonjs/react/ChartThemeProvider.js +51 -0
- package/lib/commonjs/react/ChartThemeProvider.js.map +1 -0
- package/lib/commonjs/react/charts.js +108 -0
- package/lib/commonjs/react/charts.js.map +1 -0
- package/lib/commonjs/react/pointEvent.js +35 -0
- package/lib/commonjs/react/pointEvent.js.map +1 -0
- package/lib/commonjs/react/useChartA11y.js +97 -0
- package/lib/commonjs/react/useChartA11y.js.map +1 -0
- package/lib/commonjs/react/useChartFormatters.js +66 -0
- package/lib/commonjs/react/useChartFormatters.js.map +1 -0
- package/lib/commonjs/react/useChartLayout.js +100 -0
- package/lib/commonjs/react/useChartLayout.js.map +1 -0
- package/lib/commonjs/react/useChartSelection.js +131 -0
- package/lib/commonjs/react/useChartSelection.js.map +1 -0
- package/lib/commonjs/react/useChartStatus.js +74 -0
- package/lib/commonjs/react/useChartStatus.js.map +1 -0
- package/lib/commonjs/render/Axis.js +88 -0
- package/lib/commonjs/render/Axis.js.map +1 -0
- package/lib/commonjs/render/Marks.js +184 -0
- package/lib/commonjs/render/Marks.js.map +1 -0
- package/lib/commonjs/validation/budgets.js +106 -0
- package/lib/commonjs/validation/budgets.js.map +1 -0
- package/lib/commonjs/validation/validateDatasource.js +189 -0
- package/lib/commonjs/validation/validateDatasource.js.map +1 -0
- package/lib/module/a11y/summary.js +184 -0
- package/lib/module/a11y/summary.js.map +1 -0
- package/lib/module/contract/datasource.js +57 -0
- package/lib/module/contract/datasource.js.map +1 -0
- package/lib/module/contract/distribution.js +40 -0
- package/lib/module/contract/distribution.js.map +1 -0
- package/lib/module/contract/errors.js +80 -0
- package/lib/module/contract/errors.js.map +1 -0
- package/lib/module/contract/format.js +123 -0
- package/lib/module/contract/format.js.map +1 -0
- package/lib/module/contract/interaction.js +20 -0
- package/lib/module/contract/interaction.js.map +1 -0
- package/lib/module/contract/marker.js +49 -0
- package/lib/module/contract/marker.js.map +1 -0
- package/lib/module/contract/props.js +4 -0
- package/lib/module/contract/props.js.map +1 -0
- package/lib/module/contract/state.js +61 -0
- package/lib/module/contract/state.js.map +1 -0
- package/lib/module/contract/strings.js +49 -0
- package/lib/module/contract/strings.js.map +1 -0
- package/lib/module/contract/theme.js +109 -0
- package/lib/module/contract/theme.js.map +1 -0
- package/lib/module/contract/value.js +101 -0
- package/lib/module/contract/value.js.map +1 -0
- package/lib/module/geometry/bar.js +253 -0
- package/lib/module/geometry/bar.js.map +1 -0
- package/lib/module/geometry/distribution.js +193 -0
- package/lib/module/geometry/distribution.js.map +1 -0
- package/lib/module/geometry/heatmap.js +182 -0
- package/lib/module/geometry/heatmap.js.map +1 -0
- package/lib/module/geometry/hitTest.js +110 -0
- package/lib/module/geometry/hitTest.js.map +1 -0
- package/lib/module/geometry/layout.js +122 -0
- package/lib/module/geometry/layout.js.map +1 -0
- package/lib/module/geometry/markers.js +53 -0
- package/lib/module/geometry/markers.js.map +1 -0
- package/lib/module/geometry/path.js +157 -0
- package/lib/module/geometry/path.js.map +1 -0
- package/lib/module/geometry/progress.js +199 -0
- package/lib/module/geometry/progress.js.map +1 -0
- package/lib/module/geometry/scale.js +119 -0
- package/lib/module/geometry/scale.js.map +1 -0
- package/lib/module/geometry/ticks.js +112 -0
- package/lib/module/geometry/ticks.js.map +1 -0
- package/lib/module/geometry/timeSeries.js +153 -0
- package/lib/module/geometry/timeSeries.js.map +1 -0
- package/lib/module/geometry/types.js +39 -0
- package/lib/module/geometry/types.js.map +1 -0
- package/lib/module/index.js +85 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/module/react/ChartBoundary.js +75 -0
- package/lib/module/react/ChartBoundary.js.map +1 -0
- package/lib/module/react/ChartFrame.js +263 -0
- package/lib/module/react/ChartFrame.js.map +1 -0
- package/lib/module/react/ChartLegend.js +234 -0
- package/lib/module/react/ChartLegend.js.map +1 -0
- package/lib/module/react/ChartPlot.js +56 -0
- package/lib/module/react/ChartPlot.js.map +1 -0
- package/lib/module/react/ChartStateOverlay.js +82 -0
- package/lib/module/react/ChartStateOverlay.js.map +1 -0
- package/lib/module/react/ChartThemeProvider.js +44 -0
- package/lib/module/react/ChartThemeProvider.js.map +1 -0
- package/lib/module/react/charts.js +102 -0
- package/lib/module/react/charts.js.map +1 -0
- package/lib/module/react/pointEvent.js +30 -0
- package/lib/module/react/pointEvent.js.map +1 -0
- package/lib/module/react/useChartA11y.js +92 -0
- package/lib/module/react/useChartA11y.js.map +1 -0
- package/lib/module/react/useChartFormatters.js +61 -0
- package/lib/module/react/useChartFormatters.js.map +1 -0
- package/lib/module/react/useChartLayout.js +95 -0
- package/lib/module/react/useChartLayout.js.map +1 -0
- package/lib/module/react/useChartSelection.js +125 -0
- package/lib/module/react/useChartSelection.js.map +1 -0
- package/lib/module/react/useChartStatus.js +69 -0
- package/lib/module/react/useChartStatus.js.map +1 -0
- package/lib/module/render/Axis.js +80 -0
- package/lib/module/render/Axis.js.map +1 -0
- package/lib/module/render/Marks.js +173 -0
- package/lib/module/render/Marks.js.map +1 -0
- package/lib/module/validation/budgets.js +97 -0
- package/lib/module/validation/budgets.js.map +1 -0
- package/lib/module/validation/validateDatasource.js +184 -0
- package/lib/module/validation/validateDatasource.js.map +1 -0
- package/lib/typescript/commonjs/a11y/summary.d.ts +38 -0
- package/lib/typescript/commonjs/a11y/summary.d.ts.map +1 -0
- package/lib/typescript/commonjs/contract/datasource.d.ts +94 -0
- package/lib/typescript/commonjs/contract/datasource.d.ts.map +1 -0
- package/lib/typescript/commonjs/contract/distribution.d.ts +17 -0
- package/lib/typescript/commonjs/contract/distribution.d.ts.map +1 -0
- package/lib/typescript/commonjs/contract/errors.d.ts +53 -0
- package/lib/typescript/commonjs/contract/errors.d.ts.map +1 -0
- package/lib/typescript/commonjs/contract/format.d.ts +63 -0
- package/lib/typescript/commonjs/contract/format.d.ts.map +1 -0
- package/lib/typescript/commonjs/contract/interaction.d.ts +53 -0
- package/lib/typescript/commonjs/contract/interaction.d.ts.map +1 -0
- package/lib/typescript/commonjs/contract/marker.d.ts +39 -0
- package/lib/typescript/commonjs/contract/marker.d.ts.map +1 -0
- package/lib/typescript/commonjs/contract/props.d.ts +58 -0
- package/lib/typescript/commonjs/contract/props.d.ts.map +1 -0
- package/lib/typescript/commonjs/contract/state.d.ts +45 -0
- package/lib/typescript/commonjs/contract/state.d.ts.map +1 -0
- package/lib/typescript/commonjs/contract/strings.d.ts +39 -0
- package/lib/typescript/commonjs/contract/strings.d.ts.map +1 -0
- package/lib/typescript/commonjs/contract/theme.d.ts +85 -0
- package/lib/typescript/commonjs/contract/theme.d.ts.map +1 -0
- package/lib/typescript/commonjs/contract/value.d.ts +69 -0
- package/lib/typescript/commonjs/contract/value.d.ts.map +1 -0
- package/lib/typescript/commonjs/geometry/bar.d.ts +18 -0
- package/lib/typescript/commonjs/geometry/bar.d.ts.map +1 -0
- package/lib/typescript/commonjs/geometry/distribution.d.ts +23 -0
- package/lib/typescript/commonjs/geometry/distribution.d.ts.map +1 -0
- package/lib/typescript/commonjs/geometry/heatmap.d.ts +24 -0
- package/lib/typescript/commonjs/geometry/heatmap.d.ts.map +1 -0
- package/lib/typescript/commonjs/geometry/hitTest.d.ts +68 -0
- package/lib/typescript/commonjs/geometry/hitTest.d.ts.map +1 -0
- package/lib/typescript/commonjs/geometry/layout.d.ts +67 -0
- package/lib/typescript/commonjs/geometry/layout.d.ts.map +1 -0
- package/lib/typescript/commonjs/geometry/markers.d.ts +29 -0
- package/lib/typescript/commonjs/geometry/markers.d.ts.map +1 -0
- package/lib/typescript/commonjs/geometry/path.d.ts +66 -0
- package/lib/typescript/commonjs/geometry/path.d.ts.map +1 -0
- package/lib/typescript/commonjs/geometry/progress.d.ts +17 -0
- package/lib/typescript/commonjs/geometry/progress.d.ts.map +1 -0
- package/lib/typescript/commonjs/geometry/scale.d.ts +55 -0
- package/lib/typescript/commonjs/geometry/scale.d.ts.map +1 -0
- package/lib/typescript/commonjs/geometry/ticks.d.ts +48 -0
- package/lib/typescript/commonjs/geometry/ticks.d.ts.map +1 -0
- package/lib/typescript/commonjs/geometry/timeSeries.d.ts +20 -0
- package/lib/typescript/commonjs/geometry/timeSeries.d.ts.map +1 -0
- package/lib/typescript/commonjs/geometry/types.d.ts +91 -0
- package/lib/typescript/commonjs/geometry/types.d.ts.map +1 -0
- package/lib/typescript/commonjs/index.d.ts +47 -0
- package/lib/typescript/commonjs/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/package.json +1 -0
- package/lib/typescript/commonjs/react/ChartBoundary.d.ts +47 -0
- package/lib/typescript/commonjs/react/ChartBoundary.d.ts.map +1 -0
- package/lib/typescript/commonjs/react/ChartFrame.d.ts +31 -0
- package/lib/typescript/commonjs/react/ChartFrame.d.ts.map +1 -0
- package/lib/typescript/commonjs/react/ChartLegend.d.ts +31 -0
- package/lib/typescript/commonjs/react/ChartLegend.d.ts.map +1 -0
- package/lib/typescript/commonjs/react/ChartPlot.d.ts +19 -0
- package/lib/typescript/commonjs/react/ChartPlot.d.ts.map +1 -0
- package/lib/typescript/commonjs/react/ChartStateOverlay.d.ts +25 -0
- package/lib/typescript/commonjs/react/ChartStateOverlay.d.ts.map +1 -0
- package/lib/typescript/commonjs/react/ChartThemeProvider.d.ts +21 -0
- package/lib/typescript/commonjs/react/ChartThemeProvider.d.ts.map +1 -0
- package/lib/typescript/commonjs/react/charts.d.ts +51 -0
- package/lib/typescript/commonjs/react/charts.d.ts.map +1 -0
- package/lib/typescript/commonjs/react/pointEvent.d.ts +13 -0
- package/lib/typescript/commonjs/react/pointEvent.d.ts.map +1 -0
- package/lib/typescript/commonjs/react/useChartA11y.d.ts +37 -0
- package/lib/typescript/commonjs/react/useChartA11y.d.ts.map +1 -0
- package/lib/typescript/commonjs/react/useChartFormatters.d.ts +21 -0
- package/lib/typescript/commonjs/react/useChartFormatters.d.ts.map +1 -0
- package/lib/typescript/commonjs/react/useChartLayout.d.ts +27 -0
- package/lib/typescript/commonjs/react/useChartLayout.d.ts.map +1 -0
- package/lib/typescript/commonjs/react/useChartSelection.d.ts +52 -0
- package/lib/typescript/commonjs/react/useChartSelection.d.ts.map +1 -0
- package/lib/typescript/commonjs/react/useChartStatus.d.ts +22 -0
- package/lib/typescript/commonjs/react/useChartStatus.d.ts.map +1 -0
- package/lib/typescript/commonjs/render/Axis.d.ts +31 -0
- package/lib/typescript/commonjs/render/Axis.d.ts.map +1 -0
- package/lib/typescript/commonjs/render/Marks.d.ts +44 -0
- package/lib/typescript/commonjs/render/Marks.d.ts.map +1 -0
- package/lib/typescript/commonjs/validation/budgets.d.ts +24 -0
- package/lib/typescript/commonjs/validation/budgets.d.ts.map +1 -0
- package/lib/typescript/commonjs/validation/validateDatasource.d.ts +26 -0
- package/lib/typescript/commonjs/validation/validateDatasource.d.ts.map +1 -0
- package/lib/typescript/module/a11y/summary.d.ts +38 -0
- package/lib/typescript/module/a11y/summary.d.ts.map +1 -0
- package/lib/typescript/module/contract/datasource.d.ts +94 -0
- package/lib/typescript/module/contract/datasource.d.ts.map +1 -0
- package/lib/typescript/module/contract/distribution.d.ts +17 -0
- package/lib/typescript/module/contract/distribution.d.ts.map +1 -0
- package/lib/typescript/module/contract/errors.d.ts +53 -0
- package/lib/typescript/module/contract/errors.d.ts.map +1 -0
- package/lib/typescript/module/contract/format.d.ts +63 -0
- package/lib/typescript/module/contract/format.d.ts.map +1 -0
- package/lib/typescript/module/contract/interaction.d.ts +53 -0
- package/lib/typescript/module/contract/interaction.d.ts.map +1 -0
- package/lib/typescript/module/contract/marker.d.ts +39 -0
- package/lib/typescript/module/contract/marker.d.ts.map +1 -0
- package/lib/typescript/module/contract/props.d.ts +58 -0
- package/lib/typescript/module/contract/props.d.ts.map +1 -0
- package/lib/typescript/module/contract/state.d.ts +45 -0
- package/lib/typescript/module/contract/state.d.ts.map +1 -0
- package/lib/typescript/module/contract/strings.d.ts +39 -0
- package/lib/typescript/module/contract/strings.d.ts.map +1 -0
- package/lib/typescript/module/contract/theme.d.ts +85 -0
- package/lib/typescript/module/contract/theme.d.ts.map +1 -0
- package/lib/typescript/module/contract/value.d.ts +69 -0
- package/lib/typescript/module/contract/value.d.ts.map +1 -0
- package/lib/typescript/module/geometry/bar.d.ts +18 -0
- package/lib/typescript/module/geometry/bar.d.ts.map +1 -0
- package/lib/typescript/module/geometry/distribution.d.ts +23 -0
- package/lib/typescript/module/geometry/distribution.d.ts.map +1 -0
- package/lib/typescript/module/geometry/heatmap.d.ts +24 -0
- package/lib/typescript/module/geometry/heatmap.d.ts.map +1 -0
- package/lib/typescript/module/geometry/hitTest.d.ts +68 -0
- package/lib/typescript/module/geometry/hitTest.d.ts.map +1 -0
- package/lib/typescript/module/geometry/layout.d.ts +67 -0
- package/lib/typescript/module/geometry/layout.d.ts.map +1 -0
- package/lib/typescript/module/geometry/markers.d.ts +29 -0
- package/lib/typescript/module/geometry/markers.d.ts.map +1 -0
- package/lib/typescript/module/geometry/path.d.ts +66 -0
- package/lib/typescript/module/geometry/path.d.ts.map +1 -0
- package/lib/typescript/module/geometry/progress.d.ts +17 -0
- package/lib/typescript/module/geometry/progress.d.ts.map +1 -0
- package/lib/typescript/module/geometry/scale.d.ts +55 -0
- package/lib/typescript/module/geometry/scale.d.ts.map +1 -0
- package/lib/typescript/module/geometry/ticks.d.ts +48 -0
- package/lib/typescript/module/geometry/ticks.d.ts.map +1 -0
- package/lib/typescript/module/geometry/timeSeries.d.ts +20 -0
- package/lib/typescript/module/geometry/timeSeries.d.ts.map +1 -0
- package/lib/typescript/module/geometry/types.d.ts +91 -0
- package/lib/typescript/module/geometry/types.d.ts.map +1 -0
- package/lib/typescript/module/index.d.ts +47 -0
- package/lib/typescript/module/index.d.ts.map +1 -0
- package/lib/typescript/module/package.json +1 -0
- package/lib/typescript/module/react/ChartBoundary.d.ts +47 -0
- package/lib/typescript/module/react/ChartBoundary.d.ts.map +1 -0
- package/lib/typescript/module/react/ChartFrame.d.ts +31 -0
- package/lib/typescript/module/react/ChartFrame.d.ts.map +1 -0
- package/lib/typescript/module/react/ChartLegend.d.ts +31 -0
- package/lib/typescript/module/react/ChartLegend.d.ts.map +1 -0
- package/lib/typescript/module/react/ChartPlot.d.ts +19 -0
- package/lib/typescript/module/react/ChartPlot.d.ts.map +1 -0
- package/lib/typescript/module/react/ChartStateOverlay.d.ts +25 -0
- package/lib/typescript/module/react/ChartStateOverlay.d.ts.map +1 -0
- package/lib/typescript/module/react/ChartThemeProvider.d.ts +21 -0
- package/lib/typescript/module/react/ChartThemeProvider.d.ts.map +1 -0
- package/lib/typescript/module/react/charts.d.ts +51 -0
- package/lib/typescript/module/react/charts.d.ts.map +1 -0
- package/lib/typescript/module/react/pointEvent.d.ts +13 -0
- package/lib/typescript/module/react/pointEvent.d.ts.map +1 -0
- package/lib/typescript/module/react/useChartA11y.d.ts +37 -0
- package/lib/typescript/module/react/useChartA11y.d.ts.map +1 -0
- package/lib/typescript/module/react/useChartFormatters.d.ts +21 -0
- package/lib/typescript/module/react/useChartFormatters.d.ts.map +1 -0
- package/lib/typescript/module/react/useChartLayout.d.ts +27 -0
- package/lib/typescript/module/react/useChartLayout.d.ts.map +1 -0
- package/lib/typescript/module/react/useChartSelection.d.ts +52 -0
- package/lib/typescript/module/react/useChartSelection.d.ts.map +1 -0
- package/lib/typescript/module/react/useChartStatus.d.ts +22 -0
- package/lib/typescript/module/react/useChartStatus.d.ts.map +1 -0
- package/lib/typescript/module/render/Axis.d.ts +31 -0
- package/lib/typescript/module/render/Axis.d.ts.map +1 -0
- package/lib/typescript/module/render/Marks.d.ts +44 -0
- package/lib/typescript/module/render/Marks.d.ts.map +1 -0
- package/lib/typescript/module/validation/budgets.d.ts +24 -0
- package/lib/typescript/module/validation/budgets.d.ts.map +1 -0
- package/lib/typescript/module/validation/validateDatasource.d.ts +26 -0
- package/lib/typescript/module/validation/validateDatasource.d.ts.map +1 -0
- package/package.json +40 -15
- package/skills/sdk-rn-chart/SKILL.md +49 -14
- package/src/a11y/summary.ts +34 -15
- package/src/contract/distribution.ts +44 -0
- package/src/contract/errors.ts +6 -0
- package/src/contract/interaction.ts +2 -2
- package/src/contract/strings.ts +2 -0
- package/src/geometry/bar.ts +27 -16
- package/src/geometry/distribution.ts +11 -6
- package/src/geometry/heatmap.ts +34 -17
- package/src/geometry/hitTest.ts +35 -0
- package/src/geometry/progress.ts +0 -1
- package/src/geometry/ticks.ts +0 -13
- package/src/geometry/timeSeries.ts +7 -2
- package/src/geometry/types.ts +11 -0
- package/src/index.ts +4 -1
- package/src/react/ChartFrame.tsx +126 -373
- package/src/react/ChartLegend.tsx +60 -3
- package/src/react/ChartPlot.tsx +57 -0
- package/src/react/ChartStateOverlay.tsx +94 -0
- package/src/react/charts.tsx +27 -12
- package/src/react/pointEvent.ts +40 -0
- package/src/react/useChartA11y.ts +113 -0
- package/src/react/useChartFormatters.ts +105 -0
- package/src/react/useChartLayout.ts +5 -2
- package/src/react/useChartSelection.ts +77 -40
- package/src/react/useChartStatus.ts +85 -0
- package/src/render/Axis.tsx +26 -22
- package/src/render/Marks.tsx +2 -9
- package/src/validation/budgets.ts +6 -4
- package/src/validation/validateDatasource.ts +38 -14
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_value","require","_layout","_path","_ticks","buildHeatmapGeometry","datasource","input","options","rows","columns","rowSeen","Set","colSeen","series","point","points","position","kind","has","row","add","push","column","length","plot","width","paths","markers","labels","xTicks","yTicks","hitRegions","incomplete","columnLabels","map","formatCategory","rowLabels","insetForAxes","xLabels","yLabels","fontSize","columnIndex","Map","index","rowIndex","gap","cellGap","cellWidth","cellHeight","height","ramp","heatmapRamp","bucketCount","Math","max","min","buckets","Infinity","isKnown","value","hasKnown","Number","isFinite","span","byBucket","byTexture","excluded","hidden","col","get","undefined","rect","x","y","radius","cellRadius","cell","t","bucket","floor","list","set","seriesId","id","pointId","bounds","selectable","isWithheld","rects","key","d","rectBatchPath","color","pattern","filled","texture","nonValueTextures","thinTicks","label","i","colorScale","colors","slice"],"sourceRoot":"../../../src","sources":["geometry/heatmap.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.DEFAULT_HIT_RADIUS = void 0;
|
|
7
|
+
exports.findRegion = findRegion;
|
|
8
|
+
exports.hitTest = hitTest;
|
|
9
|
+
exports.hitTestByX = hitTestByX;
|
|
10
|
+
/**
|
|
11
|
+
* Hit-testing for batched marks.
|
|
12
|
+
*
|
|
13
|
+
* Because marks are batched into one path per series, there are no per-element
|
|
14
|
+
* press handlers to rely on — a touch is resolved against geometry instead.
|
|
15
|
+
* That work would be needed anyway (a mobile time-series chart needs
|
|
16
|
+
* nearest-point search regardless of how it is drawn), and doing it in one
|
|
17
|
+
* place means a single implementation serves every family.
|
|
18
|
+
*
|
|
19
|
+
* PURE. No React, no SVG.
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
/** Touch slop: how far from a mark a tap still counts, in px. */
|
|
23
|
+
const DEFAULT_HIT_RADIUS = exports.DEFAULT_HIT_RADIUS = 44;
|
|
24
|
+
function inBounds(region, x, y) {
|
|
25
|
+
const b = region.bounds;
|
|
26
|
+
if (!b) {
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
return x >= b.x && x <= b.x + b.width && y >= b.y && y <= b.y + b.height;
|
|
30
|
+
}
|
|
31
|
+
const TAU = Math.PI * 2;
|
|
32
|
+
function inArc(arc, x, y) {
|
|
33
|
+
const dx = x - arc.cx;
|
|
34
|
+
const dy = y - arc.cy;
|
|
35
|
+
const radius = Math.sqrt(dx * dx + dy * dy);
|
|
36
|
+
if (radius < arc.innerRadius || radius > arc.outerRadius) {
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
// Clockwise from the top, the convention the arcs are drawn in.
|
|
40
|
+
const angle = (Math.atan2(dy, dx) + Math.PI / 2 + TAU) % TAU;
|
|
41
|
+
return angle >= arc.startAngle && angle < arc.endAngle;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Resolves a touch to a mark.
|
|
46
|
+
*
|
|
47
|
+
* Containment wins over proximity where bounds exist — tapping inside a bar
|
|
48
|
+
* should select that bar even if a neighbouring bar's centre happens to be
|
|
49
|
+
* closer. Otherwise the nearest selectable mark within the hit radius wins.
|
|
50
|
+
*/
|
|
51
|
+
function hitTest(regions, x, y, hitRadius = DEFAULT_HIT_RADIUS) {
|
|
52
|
+
let best = null;
|
|
53
|
+
for (const region of regions) {
|
|
54
|
+
if (!region.selectable) {
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
57
|
+
if (inBounds(region, x, y)) {
|
|
58
|
+
return {
|
|
59
|
+
seriesId: region.seriesId,
|
|
60
|
+
pointId: region.pointId,
|
|
61
|
+
distance: 0
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
if (region.arc) {
|
|
65
|
+
// A large segment's edge is far from its midpoint, and a neighbour's
|
|
66
|
+
// midpoint can be nearer: only the segment under the finger counts.
|
|
67
|
+
if (inArc(region.arc, x, y)) {
|
|
68
|
+
return {
|
|
69
|
+
seriesId: region.seriesId,
|
|
70
|
+
pointId: region.pointId,
|
|
71
|
+
distance: 0
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
continue;
|
|
75
|
+
}
|
|
76
|
+
const dx = region.x - x;
|
|
77
|
+
const dy = region.y - y;
|
|
78
|
+
const distance = Math.sqrt(dx * dx + dy * dy);
|
|
79
|
+
if (distance <= hitRadius && (best === null || distance < best.distance)) {
|
|
80
|
+
best = {
|
|
81
|
+
seriesId: region.seriesId,
|
|
82
|
+
pointId: region.pointId,
|
|
83
|
+
distance
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return best;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Nearest mark by horizontal distance only.
|
|
92
|
+
*
|
|
93
|
+
* The right model for a time-series chart: a user aiming at "that Tuesday
|
|
94
|
+
* spike" cares about the x position, and demanding vertical accuracy on a line
|
|
95
|
+
* that may sit anywhere in the plot makes selection frustrating.
|
|
96
|
+
*/
|
|
97
|
+
function hitTestByX(regions, x) {
|
|
98
|
+
let best = null;
|
|
99
|
+
for (const region of regions) {
|
|
100
|
+
if (!region.selectable) {
|
|
101
|
+
continue;
|
|
102
|
+
}
|
|
103
|
+
const distance = Math.abs(region.x - x);
|
|
104
|
+
if (best === null || distance < best.distance) {
|
|
105
|
+
best = {
|
|
106
|
+
seriesId: region.seriesId,
|
|
107
|
+
pointId: region.pointId,
|
|
108
|
+
distance
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
return best;
|
|
113
|
+
}
|
|
114
|
+
function findRegion(regions, seriesId, pointId) {
|
|
115
|
+
return regions.find(r => r.seriesId === seriesId && (pointId === undefined || r.pointId === pointId));
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=hitTest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["DEFAULT_HIT_RADIUS","exports","inBounds","region","x","y","b","bounds","width","height","TAU","Math","PI","inArc","arc","dx","cx","dy","cy","radius","sqrt","innerRadius","outerRadius","angle","atan2","startAngle","endAngle","hitTest","regions","hitRadius","best","selectable","seriesId","pointId","distance","hitTestByX","abs","findRegion","find","r","undefined"],"sourceRoot":"../../../src","sources":["geometry/hitTest.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.MAX_FONT_SCALE = exports.EMPTY_PLOT = void 0;
|
|
7
|
+
exports.containsPoint = containsPoint;
|
|
8
|
+
exports.effectiveFontSize = effectiveFontSize;
|
|
9
|
+
exports.insetForAxes = insetForAxes;
|
|
10
|
+
exports.isMeasurable = isMeasurable;
|
|
11
|
+
exports.plotBottom = plotBottom;
|
|
12
|
+
exports.plotRight = plotRight;
|
|
13
|
+
exports.resolvePlotRect = resolvePlotRect;
|
|
14
|
+
var _ticks = require("./ticks.js");
|
|
15
|
+
/**
|
|
16
|
+
* Plot layout: turning a container size into a drawable plot rectangle.
|
|
17
|
+
*
|
|
18
|
+
* Font scale arrives as a parameter rather than being read from `PixelRatio`
|
|
19
|
+
* here, so this module stays pure and testable at any scale without mocking a
|
|
20
|
+
* platform API. The React layer reads the real value and passes it in.
|
|
21
|
+
*
|
|
22
|
+
* PURE. No React, no SVG.
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Ceiling on how far system text scaling may inflate chart labels.
|
|
27
|
+
*
|
|
28
|
+
* Beyond this the plot area collapses faster than the labels become useful, so
|
|
29
|
+
* we cap the growth rather than let the chart squeeze itself out of existence.
|
|
30
|
+
* The cap is documented in the README as the supported dynamic-type range.
|
|
31
|
+
*/
|
|
32
|
+
const MAX_FONT_SCALE = exports.MAX_FONT_SCALE = 1.6;
|
|
33
|
+
function effectiveFontSize(baseFontSize, fontScale) {
|
|
34
|
+
const clamped = Math.max(1, Math.min(fontScale, MAX_FONT_SCALE));
|
|
35
|
+
return Math.round(baseFontSize * clamped);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/** A container that has not been measured yet, or has collapsed (FR-078). */
|
|
39
|
+
function isMeasurable(size) {
|
|
40
|
+
return Number.isFinite(size.width) && Number.isFinite(size.height) && size.width > 0 && size.height > 0;
|
|
41
|
+
}
|
|
42
|
+
const EMPTY_PLOT = exports.EMPTY_PLOT = {
|
|
43
|
+
x: 0,
|
|
44
|
+
y: 0,
|
|
45
|
+
width: 0,
|
|
46
|
+
height: 0
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Reserves axis space from estimated label widths, then hands back what is
|
|
51
|
+
* left for the marks.
|
|
52
|
+
*
|
|
53
|
+
* If the reservations would leave nothing to draw on, they are scaled back:
|
|
54
|
+
* a cramped axis beats a zero-area plot.
|
|
55
|
+
*/
|
|
56
|
+
function resolvePlotRect(options) {
|
|
57
|
+
if (!isMeasurable(options.container)) {
|
|
58
|
+
return EMPTY_PLOT;
|
|
59
|
+
}
|
|
60
|
+
const pad = options.padding ?? 0;
|
|
61
|
+
const fontSize = effectiveFontSize(options.baseFontSize, options.fontScale);
|
|
62
|
+
let left = pad;
|
|
63
|
+
let bottom = pad;
|
|
64
|
+
if (options.yLabels && options.yLabels.length > 0) {
|
|
65
|
+
left += (0, _ticks.reserveAxisSpace)(options.yLabels, fontSize, 'vertical');
|
|
66
|
+
}
|
|
67
|
+
if (options.xLabels && options.xLabels.length > 0) {
|
|
68
|
+
bottom += (0, _ticks.reserveAxisSpace)(options.xLabels, fontSize, 'horizontal');
|
|
69
|
+
}
|
|
70
|
+
const availableWidth = options.container.width - pad;
|
|
71
|
+
const availableHeight = options.container.height - pad;
|
|
72
|
+
|
|
73
|
+
// Never let axis reservations consume more than 40% of either dimension.
|
|
74
|
+
const maxLeft = availableWidth * 0.4;
|
|
75
|
+
const maxBottom = availableHeight * 0.4;
|
|
76
|
+
left = Math.min(left, maxLeft);
|
|
77
|
+
bottom = Math.min(bottom, maxBottom);
|
|
78
|
+
return {
|
|
79
|
+
x: left,
|
|
80
|
+
y: pad,
|
|
81
|
+
width: Math.max(0, options.container.width - left - pad),
|
|
82
|
+
height: Math.max(0, options.container.height - bottom - pad)
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Shrinks a plot so its own axis labels fit inside the container.
|
|
87
|
+
*
|
|
88
|
+
* Builders call this once they know their tick labels (which depend only on
|
|
89
|
+
* the data domain) and before projecting anything, so the reservation costs no
|
|
90
|
+
* second pass. Without it the frame handed every builder the full container:
|
|
91
|
+
* Y labels, drawn right-aligned left of the plot, landed at negative x, and X
|
|
92
|
+
* labels below the baseline fell past the bottom of the SVG (CHT-01).
|
|
93
|
+
*
|
|
94
|
+
* - left: the widest Y label plus a gutter, and at least half the widest X
|
|
95
|
+
* label, because the first X label is centred on the plot's left edge;
|
|
96
|
+
* - right: half the widest X label, for the last one;
|
|
97
|
+
* - top: the part of the topmost Y label that rises above its tick;
|
|
98
|
+
* - bottom: one line of X labels plus a gutter.
|
|
99
|
+
*
|
|
100
|
+
* Each side is capped so labels can never squeeze the plot out of existence.
|
|
101
|
+
*/
|
|
102
|
+
function insetForAxes(outer, labels) {
|
|
103
|
+
const {
|
|
104
|
+
fontSize
|
|
105
|
+
} = labels;
|
|
106
|
+
let widestX = 0;
|
|
107
|
+
for (const label of labels.xLabels) {
|
|
108
|
+
widestX = Math.max(widestX, (0, _ticks.estimateTextWidth)(label, fontSize));
|
|
109
|
+
}
|
|
110
|
+
const hasY = labels.yLabels.length > 0;
|
|
111
|
+
const hasX = labels.xLabels.length > 0;
|
|
112
|
+
const left = Math.min(Math.max(hasY ? (0, _ticks.reserveAxisSpace)(labels.yLabels, fontSize, 'vertical') : 0, widestX / 2), outer.width * 0.4);
|
|
113
|
+
const right = Math.min(widestX / 2, outer.width * 0.25);
|
|
114
|
+
// Y labels sit on their tick at `position + fontSize / 3`, so two thirds of
|
|
115
|
+
// the glyph box rise above it.
|
|
116
|
+
const top = hasY ? Math.min(Math.ceil(fontSize * 2 / 3), outer.height * 0.2) : 0;
|
|
117
|
+
const bottom = hasX ? Math.min((0, _ticks.reserveAxisSpace)(labels.xLabels, fontSize, 'horizontal'), outer.height * 0.4) : 0;
|
|
118
|
+
return {
|
|
119
|
+
x: outer.x + left,
|
|
120
|
+
y: outer.y + top,
|
|
121
|
+
width: Math.max(0, outer.width - left - right),
|
|
122
|
+
height: Math.max(0, outer.height - top - bottom)
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
function plotBottom(plot) {
|
|
126
|
+
return plot.y + plot.height;
|
|
127
|
+
}
|
|
128
|
+
function plotRight(plot) {
|
|
129
|
+
return plot.x + plot.width;
|
|
130
|
+
}
|
|
131
|
+
function containsPoint(plot, x, y) {
|
|
132
|
+
return x >= plot.x && x <= plotRight(plot) && y >= plot.y && y <= plotBottom(plot);
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=layout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_ticks","require","MAX_FONT_SCALE","exports","effectiveFontSize","baseFontSize","fontScale","clamped","Math","max","min","round","isMeasurable","size","Number","isFinite","width","height","EMPTY_PLOT","x","y","resolvePlotRect","options","container","pad","padding","fontSize","left","bottom","yLabels","length","reserveAxisSpace","xLabels","availableWidth","availableHeight","maxLeft","maxBottom","insetForAxes","outer","labels","widestX","label","estimateTextWidth","hasY","hasX","right","top","ceil","plotBottom","plot","plotRight","containsPoint"],"sourceRoot":"../../../src","sources":["geometry/layout.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.horizontalMarkers = horizontalMarkers;
|
|
7
|
+
exports.markerDomainValues = markerDomainValues;
|
|
8
|
+
exports.placeableMarkers = placeableMarkers;
|
|
9
|
+
var _value = require("../contract/value.js");
|
|
10
|
+
var _layout = require("./layout.js");
|
|
11
|
+
/**
|
|
12
|
+
* Reference markers on a value axis: thresholds, baselines and targets drawn
|
|
13
|
+
* as horizontal lines across the plot (FR-008, FR-072).
|
|
14
|
+
*
|
|
15
|
+
* Every builder used to return `markers: []`, so a threshold the app supplied
|
|
16
|
+
* reached the accessibility summary and nowhere else (CHT-03).
|
|
17
|
+
*
|
|
18
|
+
* PURE. No React, no SVG.
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
/** Markers that can be placed on a value axis: those with a known value. */
|
|
22
|
+
function placeableMarkers(markers) {
|
|
23
|
+
return (markers ?? []).filter(m => (0, _value.isKnown)(m.value));
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/** Values the domain must include so every marker lands inside the plot. */
|
|
27
|
+
function markerDomainValues(markers) {
|
|
28
|
+
return placeableMarkers(markers).map(m => m.value.value);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/** One line per marker across the plot, plus its label when it has one. */
|
|
32
|
+
function horizontalMarkers(markers, plot, project) {
|
|
33
|
+
const lines = [];
|
|
34
|
+
const labels = [];
|
|
35
|
+
for (const marker of placeableMarkers(markers)) {
|
|
36
|
+
const y = project(marker.value.value);
|
|
37
|
+
lines.push({
|
|
38
|
+
id: `marker-${marker.id}`,
|
|
39
|
+
d: `M${plot.x},${y}H${(0, _layout.plotRight)(plot)}`,
|
|
40
|
+
label: marker.label,
|
|
41
|
+
kind: marker.kind
|
|
42
|
+
});
|
|
43
|
+
if (marker.label) {
|
|
44
|
+
labels.push({
|
|
45
|
+
key: `marker-label-${marker.id}`,
|
|
46
|
+
text: marker.label,
|
|
47
|
+
x: (0, _layout.plotRight)(plot),
|
|
48
|
+
// Above the line, unless that would leave the plot.
|
|
49
|
+
y: y - 4 >= plot.y + 8 ? y - 4 : y + 12,
|
|
50
|
+
anchor: 'end'
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return {
|
|
55
|
+
lines,
|
|
56
|
+
labels
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=markers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_value","require","_layout","placeableMarkers","markers","filter","m","isKnown","value","markerDomainValues","map","horizontalMarkers","plot","project","lines","labels","marker","y","push","id","d","x","plotRight","label","kind","key","text","anchor"],"sourceRoot":"../../../src","sources":["geometry/markers.ts"],"mappings":";;;;;;;;AAUA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AAXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAQA;AACO,SAASE,gBAAgBA,CAACC,OAA+C,EAAkB;EACjG,OAAO,CAACA,OAAO,IAAI,EAAE,EAAEC,MAAM,CAAEC,CAAC,IAAwB,IAAAC,cAAO,EAACD,CAAC,CAACE,KAAK,CAAC,CAAC;AAC1E;;AAEA;AACO,SAASC,kBAAkBA,CAACL,OAA+C,EAAY;EAC7F,OAAOD,gBAAgB,CAACC,OAAO,CAAC,CAACM,GAAG,CAACJ,CAAC,IAAIA,CAAC,CAACE,KAAK,CAACA,KAAK,CAAC;AACzD;;AAEA;AACO,SAASG,iBAAiBA,CAChCP,OAA+C,EAC/CQ,IAAc,EACdC,OAAkC,EACiB;EACnD,MAAMC,KAAmB,GAAG,EAAE;EAC9B,MAAMC,MAAuB,GAAG,EAAE;EAClC,KAAK,MAAMC,MAAM,IAAIb,gBAAgB,CAACC,OAAO,CAAC,EAAE;IAC/C,MAAMa,CAAC,GAAGJ,OAAO,CAACG,MAAM,CAACR,KAAK,CAACA,KAAK,CAAC;IACrCM,KAAK,CAACI,IAAI,CAAC;MACVC,EAAE,EAAE,UAAUH,MAAM,CAACG,EAAE,EAAE;MACzBC,CAAC,EAAE,IAAIR,IAAI,CAACS,CAAC,IAAIJ,CAAC,IAAI,IAAAK,iBAAS,EAACV,IAAI,CAAC,EAAE;MACvCW,KAAK,EAAEP,MAAM,CAACO,KAAK;MACnBC,IAAI,EAAER,MAAM,CAACQ;IACd,CAAC,CAAC;IACF,IAAIR,MAAM,CAACO,KAAK,EAAE;MACjBR,MAAM,CAACG,IAAI,CAAC;QACXO,GAAG,EAAE,gBAAgBT,MAAM,CAACG,EAAE,EAAE;QAChCO,IAAI,EAAEV,MAAM,CAACO,KAAK;QAClBF,CAAC,EAAE,IAAAC,iBAAS,EAACV,IAAI,CAAC;QAClB;QACAK,CAAC,EAAEA,CAAC,GAAG,CAAC,IAAIL,IAAI,CAACK,CAAC,GAAG,CAAC,GAAGA,CAAC,GAAG,CAAC,GAAGA,CAAC,GAAG,EAAE;QACvCU,MAAM,EAAE;MACT,CAAC,CAAC;IACH;EACD;EACA,OAAO;IAAEb,KAAK;IAAEC;EAAO,CAAC;AACzB","ignoreList":[]}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.arcPath = arcPath;
|
|
7
|
+
exports.areaPath = areaPath;
|
|
8
|
+
exports.linePath = linePath;
|
|
9
|
+
exports.linearSegment = linearSegment;
|
|
10
|
+
exports.rectBatchPath = rectBatchPath;
|
|
11
|
+
exports.rectSubpath = rectSubpath;
|
|
12
|
+
/**
|
|
13
|
+
* SVG path-string builders.
|
|
14
|
+
*
|
|
15
|
+
* This is where the "never bridge a gap" guarantee (FR-012) becomes
|
|
16
|
+
* structural rather than a rule someone has to remember. A missing value does
|
|
17
|
+
* not produce a coordinate — it ends the current subpath. The next known value
|
|
18
|
+
* starts a fresh one with an `M` command. There is physically no line segment
|
|
19
|
+
* spanning the gap, so no amount of downstream carelessness can draw one.
|
|
20
|
+
*
|
|
21
|
+
* Batching into path data is also what keeps element counts flat: one `Path`
|
|
22
|
+
* per series regardless of point count (research.md R2).
|
|
23
|
+
*
|
|
24
|
+
* PURE. No React, no SVG imports — this module emits strings.
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
/** A point that may be absent, mirroring the value contract. */
|
|
28
|
+
|
|
29
|
+
function n(value) {
|
|
30
|
+
// Two decimals is well below sub-pixel visibility and keeps `d` strings
|
|
31
|
+
// short, which matters when they cross the bridge on every data change.
|
|
32
|
+
return Number.isFinite(value) ? value.toFixed(2) : '0';
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Polyline through the known points, broken at every gap.
|
|
37
|
+
*
|
|
38
|
+
* `null` entries are missing values. They terminate the current subpath; they
|
|
39
|
+
* are never interpolated, carried forward, or skipped over.
|
|
40
|
+
*/
|
|
41
|
+
function linePath(points) {
|
|
42
|
+
let d = '';
|
|
43
|
+
let penDown = false;
|
|
44
|
+
for (const p of points) {
|
|
45
|
+
if (p === null) {
|
|
46
|
+
// Lift the pen. The gap stays a gap.
|
|
47
|
+
penDown = false;
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
if (!penDown) {
|
|
51
|
+
d += `M${n(p.x)} ${n(p.y)}`;
|
|
52
|
+
penDown = true;
|
|
53
|
+
} else {
|
|
54
|
+
d += `L${n(p.x)} ${n(p.y)}`;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return d;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Filled area between the polyline and a baseline, broken at gaps in the same
|
|
62
|
+
* way: each contiguous run of known points becomes its own closed shape.
|
|
63
|
+
*/
|
|
64
|
+
function areaPath(points, baselineY) {
|
|
65
|
+
let d = '';
|
|
66
|
+
let run = [];
|
|
67
|
+
const flush = () => {
|
|
68
|
+
if (run.length === 0) {
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
d += `M${n(run[0].x)} ${n(baselineY)}`;
|
|
72
|
+
for (const p of run) {
|
|
73
|
+
d += `L${n(p.x)} ${n(p.y)}`;
|
|
74
|
+
}
|
|
75
|
+
d += `L${n(run[run.length - 1].x)} ${n(baselineY)}Z`;
|
|
76
|
+
run = [];
|
|
77
|
+
};
|
|
78
|
+
for (const p of points) {
|
|
79
|
+
if (p === null) {
|
|
80
|
+
flush();
|
|
81
|
+
} else {
|
|
82
|
+
run.push(p);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
flush();
|
|
86
|
+
return d;
|
|
87
|
+
}
|
|
88
|
+
/** One rectangle as a subpath, with optional corner rounding. */
|
|
89
|
+
function rectSubpath(r) {
|
|
90
|
+
const radius = Math.min(r.radius ?? 0, r.width / 2, Math.abs(r.height) / 2);
|
|
91
|
+
if (radius <= 0) {
|
|
92
|
+
return `M${n(r.x)} ${n(r.y)}` + `h${n(r.width)}v${n(r.height)}h${n(-r.width)}Z`;
|
|
93
|
+
}
|
|
94
|
+
const {
|
|
95
|
+
x,
|
|
96
|
+
y,
|
|
97
|
+
width: w,
|
|
98
|
+
height: h
|
|
99
|
+
} = r;
|
|
100
|
+
return `M${n(x + radius)} ${n(y)}` + `h${n(w - radius * 2)}` + `a${n(radius)} ${n(radius)} 0 0 1 ${n(radius)} ${n(radius)}` + `v${n(h - radius * 2)}` + `a${n(radius)} ${n(radius)} 0 0 1 ${n(-radius)} ${n(radius)}` + `h${n(-(w - radius * 2))}` + `a${n(radius)} ${n(radius)} 0 0 1 ${n(-radius)} ${n(-radius)}` + `v${n(-(h - radius * 2))}` + `a${n(radius)} ${n(radius)} 0 0 1 ${n(radius)} ${n(-radius)}Z`;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Many rectangles batched into one path — how bars and heatmap cells stay at
|
|
105
|
+
* one element per series or per intensity bucket.
|
|
106
|
+
*/
|
|
107
|
+
function rectBatchPath(rects) {
|
|
108
|
+
let d = '';
|
|
109
|
+
for (const r of rects) {
|
|
110
|
+
d += rectSubpath(r);
|
|
111
|
+
}
|
|
112
|
+
return d;
|
|
113
|
+
}
|
|
114
|
+
function polar(cx, cy, r, angle) {
|
|
115
|
+
// Offset by -90 degrees so 0 radians is 12 o'clock, which is where users
|
|
116
|
+
// expect a donut to start.
|
|
117
|
+
const a = angle - Math.PI / 2;
|
|
118
|
+
return {
|
|
119
|
+
x: cx + r * Math.cos(a),
|
|
120
|
+
y: cy + r * Math.sin(a)
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Donut or pie segment. An inner radius of 0 yields a pie wedge.
|
|
126
|
+
*
|
|
127
|
+
* A full-circle segment is drawn as two half-arcs, because SVG cannot express
|
|
128
|
+
* a 360-degree arc in a single command — start and end would coincide and
|
|
129
|
+
* nothing would be drawn.
|
|
130
|
+
*/
|
|
131
|
+
function arcPath(spec) {
|
|
132
|
+
const {
|
|
133
|
+
cx,
|
|
134
|
+
cy,
|
|
135
|
+
outerRadius: ro,
|
|
136
|
+
innerRadius: ri
|
|
137
|
+
} = spec;
|
|
138
|
+
const sweep = spec.endAngle - spec.startAngle;
|
|
139
|
+
const full = Math.abs(sweep) >= Math.PI * 2 - 1e-9;
|
|
140
|
+
if (full) {
|
|
141
|
+
const mid = spec.startAngle + Math.PI;
|
|
142
|
+
return arcPath({
|
|
143
|
+
...spec,
|
|
144
|
+
endAngle: mid
|
|
145
|
+
}) + arcPath({
|
|
146
|
+
...spec,
|
|
147
|
+
startAngle: mid,
|
|
148
|
+
endAngle: spec.startAngle + Math.PI * 2
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
const largeArc = Math.abs(sweep) > Math.PI ? 1 : 0;
|
|
152
|
+
const o0 = polar(cx, cy, ro, spec.startAngle);
|
|
153
|
+
const o1 = polar(cx, cy, ro, spec.endAngle);
|
|
154
|
+
if (ri <= 0) {
|
|
155
|
+
return `M${n(cx)} ${n(cy)}` + `L${n(o0.x)} ${n(o0.y)}` + `A${n(ro)} ${n(ro)} 0 ${largeArc} 1 ${n(o1.x)} ${n(o1.y)}Z`;
|
|
156
|
+
}
|
|
157
|
+
const i1 = polar(cx, cy, ri, spec.endAngle);
|
|
158
|
+
const i0 = polar(cx, cy, ri, spec.startAngle);
|
|
159
|
+
return `M${n(o0.x)} ${n(o0.y)}` + `A${n(ro)} ${n(ro)} 0 ${largeArc} 1 ${n(o1.x)} ${n(o1.y)}` + `L${n(i1.x)} ${n(i1.y)}` + `A${n(ri)} ${n(ri)} 0 ${largeArc} 0 ${n(i0.x)} ${n(i0.y)}Z`;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/** Straight line, for axes, baselines, and threshold markers. */
|
|
163
|
+
function linearSegment(from, to) {
|
|
164
|
+
return `M${n(from.x)} ${n(from.y)}L${n(to.x)} ${n(to.y)}`;
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=path.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["n","value","Number","isFinite","toFixed","linePath","points","d","penDown","p","x","y","areaPath","baselineY","run","flush","length","push","rectSubpath","r","radius","Math","min","width","abs","height","w","h","rectBatchPath","rects","polar","cx","cy","angle","a","PI","cos","sin","arcPath","spec","outerRadius","ro","innerRadius","ri","sweep","endAngle","startAngle","full","mid","largeArc","o0","o1","i1","i0","linearSegment","from","to"],"sourceRoot":"../../../src","sources":["geometry/path.ts"],"mappings":"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","ignoreList":[]}
|