react-native-metrify 0.1.0-alpha.1
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 +16 -0
- package/LICENSE +21 -0
- package/README.md +332 -0
- package/dist/cjs/core/animation/index.js +99 -0
- package/dist/cjs/core/animation/index.js.map +1 -0
- package/dist/cjs/core/animation/index.web.js +95 -0
- package/dist/cjs/core/animation/index.web.js.map +1 -0
- package/dist/cjs/core/hooks/index.js +50 -0
- package/dist/cjs/core/hooks/index.js.map +1 -0
- package/dist/cjs/core/index.js +36 -0
- package/dist/cjs/core/index.js.map +1 -0
- package/dist/cjs/core/layout/index.js +80 -0
- package/dist/cjs/core/layout/index.js.map +1 -0
- package/dist/cjs/core/math/index.js +62 -0
- package/dist/cjs/core/math/index.js.map +1 -0
- package/dist/cjs/core/theme/ThemeProvider.js +63 -0
- package/dist/cjs/core/theme/ThemeProvider.js.map +1 -0
- package/dist/cjs/core/theme/index.js +13 -0
- package/dist/cjs/core/theme/index.js.map +1 -0
- package/dist/cjs/core/theme/themes.js +120 -0
- package/dist/cjs/core/theme/themes.js.map +1 -0
- package/dist/cjs/core/types/index.js +11 -0
- package/dist/cjs/core/types/index.js.map +1 -0
- package/dist/cjs/core/utils/responsive.js +118 -0
- package/dist/cjs/core/utils/responsive.js.map +1 -0
- package/dist/cjs/core/utils/time.js +84 -0
- package/dist/cjs/core/utils/time.js.map +1 -0
- package/dist/cjs/index.js +28 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/renderer-svg/adapters/index.js +67 -0
- package/dist/cjs/renderer-svg/adapters/index.js.map +1 -0
- package/dist/cjs/renderer-svg/index.js +25 -0
- package/dist/cjs/renderer-svg/index.js.map +1 -0
- package/dist/cjs/renderer-svg/paths/arc.js +79 -0
- package/dist/cjs/renderer-svg/paths/arc.js.map +1 -0
- package/dist/cjs/renderer-svg/paths/index.js +23 -0
- package/dist/cjs/renderer-svg/paths/index.js.map +1 -0
- package/dist/cjs/renderer-svg/paths/line.js +70 -0
- package/dist/cjs/renderer-svg/paths/line.js.map +1 -0
- package/dist/cjs/renderer-svg/paths/rect.js +54 -0
- package/dist/cjs/renderer-svg/paths/rect.js.map +1 -0
- package/dist/cjs/renderer-svg/primitives/AnimatedCircle.js +54 -0
- package/dist/cjs/renderer-svg/primitives/AnimatedCircle.js.map +1 -0
- package/dist/cjs/renderer-svg/primitives/AnimatedPath.js +54 -0
- package/dist/cjs/renderer-svg/primitives/AnimatedPath.js.map +1 -0
- package/dist/cjs/renderer-svg/primitives/Text.js +66 -0
- package/dist/cjs/renderer-svg/primitives/Text.js.map +1 -0
- package/dist/cjs/renderer-svg/primitives/index.js +23 -0
- package/dist/cjs/renderer-svg/primitives/index.js.map +1 -0
- package/dist/cjs/widgets/AreaChart/AreaChart.js +179 -0
- package/dist/cjs/widgets/AreaChart/AreaChart.js.map +1 -0
- package/dist/cjs/widgets/AreaChart/index.js +6 -0
- package/dist/cjs/widgets/AreaChart/index.js.map +1 -0
- package/dist/cjs/widgets/AreaChart/types.js +3 -0
- package/dist/cjs/widgets/AreaChart/types.js.map +1 -0
- package/dist/cjs/widgets/BarChart/BarChart.js +203 -0
- package/dist/cjs/widgets/BarChart/BarChart.js.map +1 -0
- package/dist/cjs/widgets/BarChart/index.js +9 -0
- package/dist/cjs/widgets/BarChart/index.js.map +1 -0
- package/dist/cjs/widgets/BarChart/types.js +3 -0
- package/dist/cjs/widgets/BarChart/types.js.map +1 -0
- package/dist/cjs/widgets/BoxPlot/BoxPlot.js +186 -0
- package/dist/cjs/widgets/BoxPlot/BoxPlot.js.map +1 -0
- package/dist/cjs/widgets/BoxPlot/index.js +6 -0
- package/dist/cjs/widgets/BoxPlot/index.js.map +1 -0
- package/dist/cjs/widgets/BoxPlot/types.js +3 -0
- package/dist/cjs/widgets/BoxPlot/types.js.map +1 -0
- package/dist/cjs/widgets/BubbleChart/BubbleChart.js +158 -0
- package/dist/cjs/widgets/BubbleChart/BubbleChart.js.map +1 -0
- package/dist/cjs/widgets/BubbleChart/index.js +6 -0
- package/dist/cjs/widgets/BubbleChart/index.js.map +1 -0
- package/dist/cjs/widgets/BubbleChart/types.js +3 -0
- package/dist/cjs/widgets/BubbleChart/types.js.map +1 -0
- package/dist/cjs/widgets/CandlestickChart/CandlestickChart.js +168 -0
- package/dist/cjs/widgets/CandlestickChart/CandlestickChart.js.map +1 -0
- package/dist/cjs/widgets/CandlestickChart/index.js +6 -0
- package/dist/cjs/widgets/CandlestickChart/index.js.map +1 -0
- package/dist/cjs/widgets/CandlestickChart/types.js +3 -0
- package/dist/cjs/widgets/CandlestickChart/types.js.map +1 -0
- package/dist/cjs/widgets/FunnelChart/FunnelChart.js +149 -0
- package/dist/cjs/widgets/FunnelChart/FunnelChart.js.map +1 -0
- package/dist/cjs/widgets/FunnelChart/index.js +6 -0
- package/dist/cjs/widgets/FunnelChart/index.js.map +1 -0
- package/dist/cjs/widgets/FunnelChart/types.js +3 -0
- package/dist/cjs/widgets/FunnelChart/types.js.map +1 -0
- package/dist/cjs/widgets/Gauge/Gauge.js +171 -0
- package/dist/cjs/widgets/Gauge/Gauge.js.map +1 -0
- package/dist/cjs/widgets/Gauge/index.js +9 -0
- package/dist/cjs/widgets/Gauge/index.js.map +1 -0
- package/dist/cjs/widgets/Gauge/types.js +3 -0
- package/dist/cjs/widgets/Gauge/types.js.map +1 -0
- package/dist/cjs/widgets/GroupedBarChart/GroupedBarChart.js +155 -0
- package/dist/cjs/widgets/GroupedBarChart/GroupedBarChart.js.map +1 -0
- package/dist/cjs/widgets/GroupedBarChart/index.js +6 -0
- package/dist/cjs/widgets/GroupedBarChart/index.js.map +1 -0
- package/dist/cjs/widgets/GroupedBarChart/types.js +3 -0
- package/dist/cjs/widgets/GroupedBarChart/types.js.map +1 -0
- package/dist/cjs/widgets/Heatmap/Heatmap.js +182 -0
- package/dist/cjs/widgets/Heatmap/Heatmap.js.map +1 -0
- package/dist/cjs/widgets/Heatmap/index.js +6 -0
- package/dist/cjs/widgets/Heatmap/index.js.map +1 -0
- package/dist/cjs/widgets/Heatmap/types.js +3 -0
- package/dist/cjs/widgets/Heatmap/types.js.map +1 -0
- package/dist/cjs/widgets/Histogram/Histogram.js +152 -0
- package/dist/cjs/widgets/Histogram/Histogram.js.map +1 -0
- package/dist/cjs/widgets/Histogram/index.js +6 -0
- package/dist/cjs/widgets/Histogram/index.js.map +1 -0
- package/dist/cjs/widgets/Histogram/types.js +3 -0
- package/dist/cjs/widgets/Histogram/types.js.map +1 -0
- package/dist/cjs/widgets/HorizontalBarChart/HorizontalBarChart.js +124 -0
- package/dist/cjs/widgets/HorizontalBarChart/HorizontalBarChart.js.map +1 -0
- package/dist/cjs/widgets/HorizontalBarChart/index.js +6 -0
- package/dist/cjs/widgets/HorizontalBarChart/index.js.map +1 -0
- package/dist/cjs/widgets/HorizontalBarChart/types.js +3 -0
- package/dist/cjs/widgets/HorizontalBarChart/types.js.map +1 -0
- package/dist/cjs/widgets/KPI/KPI.js +195 -0
- package/dist/cjs/widgets/KPI/KPI.js.map +1 -0
- package/dist/cjs/widgets/KPI/index.js +9 -0
- package/dist/cjs/widgets/KPI/index.js.map +1 -0
- package/dist/cjs/widgets/KPI/types.js +3 -0
- package/dist/cjs/widgets/KPI/types.js.map +1 -0
- package/dist/cjs/widgets/LineChart/LineChart.js +298 -0
- package/dist/cjs/widgets/LineChart/LineChart.js.map +1 -0
- package/dist/cjs/widgets/LineChart/index.js +9 -0
- package/dist/cjs/widgets/LineChart/index.js.map +1 -0
- package/dist/cjs/widgets/LineChart/types.js +3 -0
- package/dist/cjs/widgets/LineChart/types.js.map +1 -0
- package/dist/cjs/widgets/MultiLineSparkline/MultiLineSparkline.js +192 -0
- package/dist/cjs/widgets/MultiLineSparkline/MultiLineSparkline.js.map +1 -0
- package/dist/cjs/widgets/MultiLineSparkline/index.js +9 -0
- package/dist/cjs/widgets/MultiLineSparkline/index.js.map +1 -0
- package/dist/cjs/widgets/MultiLineSparkline/types.js +3 -0
- package/dist/cjs/widgets/MultiLineSparkline/types.js.map +1 -0
- package/dist/cjs/widgets/PieChart/PieChart.js +241 -0
- package/dist/cjs/widgets/PieChart/PieChart.js.map +1 -0
- package/dist/cjs/widgets/PieChart/index.js +9 -0
- package/dist/cjs/widgets/PieChart/index.js.map +1 -0
- package/dist/cjs/widgets/PieChart/types.js +3 -0
- package/dist/cjs/widgets/PieChart/types.js.map +1 -0
- package/dist/cjs/widgets/Progress/Progress.js +166 -0
- package/dist/cjs/widgets/Progress/Progress.js.map +1 -0
- package/dist/cjs/widgets/Progress/index.js +9 -0
- package/dist/cjs/widgets/Progress/index.js.map +1 -0
- package/dist/cjs/widgets/Progress/types.js +3 -0
- package/dist/cjs/widgets/Progress/types.js.map +1 -0
- package/dist/cjs/widgets/RadarChart/RadarChart.js +162 -0
- package/dist/cjs/widgets/RadarChart/RadarChart.js.map +1 -0
- package/dist/cjs/widgets/RadarChart/index.js +6 -0
- package/dist/cjs/widgets/RadarChart/index.js.map +1 -0
- package/dist/cjs/widgets/RadarChart/types.js +3 -0
- package/dist/cjs/widgets/RadarChart/types.js.map +1 -0
- package/dist/cjs/widgets/SankeyDiagram/SankeyDiagram.js +211 -0
- package/dist/cjs/widgets/SankeyDiagram/SankeyDiagram.js.map +1 -0
- package/dist/cjs/widgets/SankeyDiagram/index.js +6 -0
- package/dist/cjs/widgets/SankeyDiagram/index.js.map +1 -0
- package/dist/cjs/widgets/SankeyDiagram/types.js +3 -0
- package/dist/cjs/widgets/SankeyDiagram/types.js.map +1 -0
- package/dist/cjs/widgets/ScatterPlot/ScatterPlot.js +152 -0
- package/dist/cjs/widgets/ScatterPlot/ScatterPlot.js.map +1 -0
- package/dist/cjs/widgets/ScatterPlot/index.js +6 -0
- package/dist/cjs/widgets/ScatterPlot/index.js.map +1 -0
- package/dist/cjs/widgets/ScatterPlot/types.js +3 -0
- package/dist/cjs/widgets/ScatterPlot/types.js.map +1 -0
- package/dist/cjs/widgets/Sparkline/Sparkline.js +154 -0
- package/dist/cjs/widgets/Sparkline/Sparkline.js.map +1 -0
- package/dist/cjs/widgets/Sparkline/index.js +9 -0
- package/dist/cjs/widgets/Sparkline/index.js.map +1 -0
- package/dist/cjs/widgets/Sparkline/types.js +3 -0
- package/dist/cjs/widgets/Sparkline/types.js.map +1 -0
- package/dist/cjs/widgets/StackedBarChart/StackedBarChart.js +152 -0
- package/dist/cjs/widgets/StackedBarChart/StackedBarChart.js.map +1 -0
- package/dist/cjs/widgets/StackedBarChart/index.js +6 -0
- package/dist/cjs/widgets/StackedBarChart/index.js.map +1 -0
- package/dist/cjs/widgets/StackedBarChart/types.js +3 -0
- package/dist/cjs/widgets/StackedBarChart/types.js.map +1 -0
- package/dist/cjs/widgets/SunburstChart/SunburstChart.js +134 -0
- package/dist/cjs/widgets/SunburstChart/SunburstChart.js.map +1 -0
- package/dist/cjs/widgets/SunburstChart/index.js +6 -0
- package/dist/cjs/widgets/SunburstChart/index.js.map +1 -0
- package/dist/cjs/widgets/SunburstChart/types.js +3 -0
- package/dist/cjs/widgets/SunburstChart/types.js.map +1 -0
- package/dist/cjs/widgets/Treemap/Treemap.js +145 -0
- package/dist/cjs/widgets/Treemap/Treemap.js.map +1 -0
- package/dist/cjs/widgets/Treemap/index.js +6 -0
- package/dist/cjs/widgets/Treemap/index.js.map +1 -0
- package/dist/cjs/widgets/Treemap/types.js +3 -0
- package/dist/cjs/widgets/Treemap/types.js.map +1 -0
- package/dist/cjs/widgets/WaterfallChart/WaterfallChart.js +175 -0
- package/dist/cjs/widgets/WaterfallChart/WaterfallChart.js.map +1 -0
- package/dist/cjs/widgets/WaterfallChart/index.js +6 -0
- package/dist/cjs/widgets/WaterfallChart/index.js.map +1 -0
- package/dist/cjs/widgets/WaterfallChart/types.js +3 -0
- package/dist/cjs/widgets/WaterfallChart/types.js.map +1 -0
- package/dist/cjs/widgets/index.js +51 -0
- package/dist/cjs/widgets/index.js.map +1 -0
- package/dist/core/animation/index.d.ts +66 -0
- package/dist/core/animation/index.d.ts.map +1 -0
- package/dist/core/animation/index.web.d.ts +63 -0
- package/dist/core/animation/index.web.d.ts.map +1 -0
- package/dist/core/hooks/index.d.ts +34 -0
- package/dist/core/hooks/index.d.ts.map +1 -0
- package/dist/core/index.d.ts +13 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/layout/index.d.ts +39 -0
- package/dist/core/layout/index.d.ts.map +1 -0
- package/dist/core/math/index.d.ts +37 -0
- package/dist/core/math/index.d.ts.map +1 -0
- package/dist/core/theme/ThemeProvider.d.ts +19 -0
- package/dist/core/theme/ThemeProvider.d.ts.map +1 -0
- package/dist/core/theme/index.d.ts +6 -0
- package/dist/core/theme/index.d.ts.map +1 -0
- package/dist/core/theme/themes.d.ts +13 -0
- package/dist/core/theme/themes.d.ts.map +1 -0
- package/dist/core/types/index.d.ts +137 -0
- package/dist/core/types/index.d.ts.map +1 -0
- package/dist/core/utils/responsive.d.ts +92 -0
- package/dist/core/utils/responsive.d.ts.map +1 -0
- package/dist/core/utils/time.d.ts +20 -0
- package/dist/core/utils/time.d.ts.map +1 -0
- package/dist/esm/core/animation/index.js +88 -0
- package/dist/esm/core/animation/index.js.map +1 -0
- package/dist/esm/core/animation/index.web.js +81 -0
- package/dist/esm/core/animation/index.web.js.map +1 -0
- package/dist/esm/core/hooks/index.js +44 -0
- package/dist/esm/core/hooks/index.js.map +1 -0
- package/dist/esm/core/index.js +20 -0
- package/dist/esm/core/index.js.map +1 -0
- package/dist/esm/core/layout/index.js +73 -0
- package/dist/esm/core/layout/index.js.map +1 -0
- package/dist/esm/core/math/index.js +54 -0
- package/dist/esm/core/math/index.js.map +1 -0
- package/dist/esm/core/theme/ThemeProvider.js +26 -0
- package/dist/esm/core/theme/ThemeProvider.js.map +1 -0
- package/dist/esm/core/theme/index.js +6 -0
- package/dist/esm/core/theme/index.js.map +1 -0
- package/dist/esm/core/theme/themes.js +117 -0
- package/dist/esm/core/theme/themes.js.map +1 -0
- package/dist/esm/core/types/index.js +10 -0
- package/dist/esm/core/types/index.js.map +1 -0
- package/dist/esm/core/utils/responsive.js +112 -0
- package/dist/esm/core/utils/responsive.js.map +1 -0
- package/dist/esm/core/utils/time.js +79 -0
- package/dist/esm/core/utils/time.js.map +1 -0
- package/dist/esm/index.js +11 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/renderer-svg/adapters/index.js +62 -0
- package/dist/esm/renderer-svg/adapters/index.js.map +1 -0
- package/dist/esm/renderer-svg/index.js +9 -0
- package/dist/esm/renderer-svg/index.js.map +1 -0
- package/dist/esm/renderer-svg/paths/arc.js +74 -0
- package/dist/esm/renderer-svg/paths/arc.js.map +1 -0
- package/dist/esm/renderer-svg/paths/index.js +7 -0
- package/dist/esm/renderer-svg/paths/index.js.map +1 -0
- package/dist/esm/renderer-svg/paths/line.js +64 -0
- package/dist/esm/renderer-svg/paths/line.js.map +1 -0
- package/dist/esm/renderer-svg/paths/rect.js +50 -0
- package/dist/esm/renderer-svg/paths/rect.js.map +1 -0
- package/dist/esm/renderer-svg/primitives/AnimatedCircle.js +15 -0
- package/dist/esm/renderer-svg/primitives/AnimatedCircle.js.map +1 -0
- package/dist/esm/renderer-svg/primitives/AnimatedPath.js +15 -0
- package/dist/esm/renderer-svg/primitives/AnimatedPath.js.map +1 -0
- package/dist/esm/renderer-svg/primitives/Text.js +29 -0
- package/dist/esm/renderer-svg/primitives/Text.js.map +1 -0
- package/dist/esm/renderer-svg/primitives/index.js +7 -0
- package/dist/esm/renderer-svg/primitives/index.js.map +1 -0
- package/dist/esm/widgets/AreaChart/AreaChart.js +143 -0
- package/dist/esm/widgets/AreaChart/AreaChart.js.map +1 -0
- package/dist/esm/widgets/AreaChart/index.js +2 -0
- package/dist/esm/widgets/AreaChart/index.js.map +1 -0
- package/dist/esm/widgets/AreaChart/types.js +2 -0
- package/dist/esm/widgets/AreaChart/types.js.map +1 -0
- package/dist/esm/widgets/BarChart/BarChart.js +167 -0
- package/dist/esm/widgets/BarChart/BarChart.js.map +1 -0
- package/dist/esm/widgets/BarChart/index.js +5 -0
- package/dist/esm/widgets/BarChart/index.js.map +1 -0
- package/dist/esm/widgets/BarChart/types.js +2 -0
- package/dist/esm/widgets/BarChart/types.js.map +1 -0
- package/dist/esm/widgets/BoxPlot/BoxPlot.js +150 -0
- package/dist/esm/widgets/BoxPlot/BoxPlot.js.map +1 -0
- package/dist/esm/widgets/BoxPlot/index.js +2 -0
- package/dist/esm/widgets/BoxPlot/index.js.map +1 -0
- package/dist/esm/widgets/BoxPlot/types.js +2 -0
- package/dist/esm/widgets/BoxPlot/types.js.map +1 -0
- package/dist/esm/widgets/BubbleChart/BubbleChart.js +122 -0
- package/dist/esm/widgets/BubbleChart/BubbleChart.js.map +1 -0
- package/dist/esm/widgets/BubbleChart/index.js +2 -0
- package/dist/esm/widgets/BubbleChart/index.js.map +1 -0
- package/dist/esm/widgets/BubbleChart/types.js +2 -0
- package/dist/esm/widgets/BubbleChart/types.js.map +1 -0
- package/dist/esm/widgets/CandlestickChart/CandlestickChart.js +132 -0
- package/dist/esm/widgets/CandlestickChart/CandlestickChart.js.map +1 -0
- package/dist/esm/widgets/CandlestickChart/index.js +2 -0
- package/dist/esm/widgets/CandlestickChart/index.js.map +1 -0
- package/dist/esm/widgets/CandlestickChart/types.js +2 -0
- package/dist/esm/widgets/CandlestickChart/types.js.map +1 -0
- package/dist/esm/widgets/FunnelChart/FunnelChart.js +113 -0
- package/dist/esm/widgets/FunnelChart/FunnelChart.js.map +1 -0
- package/dist/esm/widgets/FunnelChart/index.js +2 -0
- package/dist/esm/widgets/FunnelChart/index.js.map +1 -0
- package/dist/esm/widgets/FunnelChart/types.js +2 -0
- package/dist/esm/widgets/FunnelChart/types.js.map +1 -0
- package/dist/esm/widgets/Gauge/Gauge.js +132 -0
- package/dist/esm/widgets/Gauge/Gauge.js.map +1 -0
- package/dist/esm/widgets/Gauge/index.js +5 -0
- package/dist/esm/widgets/Gauge/index.js.map +1 -0
- package/dist/esm/widgets/Gauge/types.js +2 -0
- package/dist/esm/widgets/Gauge/types.js.map +1 -0
- package/dist/esm/widgets/GroupedBarChart/GroupedBarChart.js +119 -0
- package/dist/esm/widgets/GroupedBarChart/GroupedBarChart.js.map +1 -0
- package/dist/esm/widgets/GroupedBarChart/index.js +2 -0
- package/dist/esm/widgets/GroupedBarChart/index.js.map +1 -0
- package/dist/esm/widgets/GroupedBarChart/types.js +2 -0
- package/dist/esm/widgets/GroupedBarChart/types.js.map +1 -0
- package/dist/esm/widgets/Heatmap/Heatmap.js +146 -0
- package/dist/esm/widgets/Heatmap/Heatmap.js.map +1 -0
- package/dist/esm/widgets/Heatmap/index.js +2 -0
- package/dist/esm/widgets/Heatmap/index.js.map +1 -0
- package/dist/esm/widgets/Heatmap/types.js +2 -0
- package/dist/esm/widgets/Heatmap/types.js.map +1 -0
- package/dist/esm/widgets/Histogram/Histogram.js +116 -0
- package/dist/esm/widgets/Histogram/Histogram.js.map +1 -0
- package/dist/esm/widgets/Histogram/index.js +2 -0
- package/dist/esm/widgets/Histogram/index.js.map +1 -0
- package/dist/esm/widgets/Histogram/types.js +2 -0
- package/dist/esm/widgets/Histogram/types.js.map +1 -0
- package/dist/esm/widgets/HorizontalBarChart/HorizontalBarChart.js +88 -0
- package/dist/esm/widgets/HorizontalBarChart/HorizontalBarChart.js.map +1 -0
- package/dist/esm/widgets/HorizontalBarChart/index.js +2 -0
- package/dist/esm/widgets/HorizontalBarChart/index.js.map +1 -0
- package/dist/esm/widgets/HorizontalBarChart/types.js +2 -0
- package/dist/esm/widgets/HorizontalBarChart/types.js.map +1 -0
- package/dist/esm/widgets/KPI/KPI.js +159 -0
- package/dist/esm/widgets/KPI/KPI.js.map +1 -0
- package/dist/esm/widgets/KPI/index.js +5 -0
- package/dist/esm/widgets/KPI/index.js.map +1 -0
- package/dist/esm/widgets/KPI/types.js +2 -0
- package/dist/esm/widgets/KPI/types.js.map +1 -0
- package/dist/esm/widgets/LineChart/LineChart.js +262 -0
- package/dist/esm/widgets/LineChart/LineChart.js.map +1 -0
- package/dist/esm/widgets/LineChart/index.js +5 -0
- package/dist/esm/widgets/LineChart/index.js.map +1 -0
- package/dist/esm/widgets/LineChart/types.js +2 -0
- package/dist/esm/widgets/LineChart/types.js.map +1 -0
- package/dist/esm/widgets/MultiLineSparkline/MultiLineSparkline.js +153 -0
- package/dist/esm/widgets/MultiLineSparkline/MultiLineSparkline.js.map +1 -0
- package/dist/esm/widgets/MultiLineSparkline/index.js +5 -0
- package/dist/esm/widgets/MultiLineSparkline/index.js.map +1 -0
- package/dist/esm/widgets/MultiLineSparkline/types.js +2 -0
- package/dist/esm/widgets/MultiLineSparkline/types.js.map +1 -0
- package/dist/esm/widgets/PieChart/PieChart.js +205 -0
- package/dist/esm/widgets/PieChart/PieChart.js.map +1 -0
- package/dist/esm/widgets/PieChart/index.js +5 -0
- package/dist/esm/widgets/PieChart/index.js.map +1 -0
- package/dist/esm/widgets/PieChart/types.js +2 -0
- package/dist/esm/widgets/PieChart/types.js.map +1 -0
- package/dist/esm/widgets/Progress/Progress.js +130 -0
- package/dist/esm/widgets/Progress/Progress.js.map +1 -0
- package/dist/esm/widgets/Progress/index.js +5 -0
- package/dist/esm/widgets/Progress/index.js.map +1 -0
- package/dist/esm/widgets/Progress/types.js +2 -0
- package/dist/esm/widgets/Progress/types.js.map +1 -0
- package/dist/esm/widgets/RadarChart/RadarChart.js +126 -0
- package/dist/esm/widgets/RadarChart/RadarChart.js.map +1 -0
- package/dist/esm/widgets/RadarChart/index.js +2 -0
- package/dist/esm/widgets/RadarChart/index.js.map +1 -0
- package/dist/esm/widgets/RadarChart/types.js +2 -0
- package/dist/esm/widgets/RadarChart/types.js.map +1 -0
- package/dist/esm/widgets/SankeyDiagram/SankeyDiagram.js +175 -0
- package/dist/esm/widgets/SankeyDiagram/SankeyDiagram.js.map +1 -0
- package/dist/esm/widgets/SankeyDiagram/index.js +2 -0
- package/dist/esm/widgets/SankeyDiagram/index.js.map +1 -0
- package/dist/esm/widgets/SankeyDiagram/types.js +2 -0
- package/dist/esm/widgets/SankeyDiagram/types.js.map +1 -0
- package/dist/esm/widgets/ScatterPlot/ScatterPlot.js +116 -0
- package/dist/esm/widgets/ScatterPlot/ScatterPlot.js.map +1 -0
- package/dist/esm/widgets/ScatterPlot/index.js +2 -0
- package/dist/esm/widgets/ScatterPlot/index.js.map +1 -0
- package/dist/esm/widgets/ScatterPlot/types.js +2 -0
- package/dist/esm/widgets/ScatterPlot/types.js.map +1 -0
- package/dist/esm/widgets/Sparkline/Sparkline.js +118 -0
- package/dist/esm/widgets/Sparkline/Sparkline.js.map +1 -0
- package/dist/esm/widgets/Sparkline/index.js +5 -0
- package/dist/esm/widgets/Sparkline/index.js.map +1 -0
- package/dist/esm/widgets/Sparkline/types.js +2 -0
- package/dist/esm/widgets/Sparkline/types.js.map +1 -0
- package/dist/esm/widgets/StackedBarChart/StackedBarChart.js +116 -0
- package/dist/esm/widgets/StackedBarChart/StackedBarChart.js.map +1 -0
- package/dist/esm/widgets/StackedBarChart/index.js +2 -0
- package/dist/esm/widgets/StackedBarChart/index.js.map +1 -0
- package/dist/esm/widgets/StackedBarChart/types.js +2 -0
- package/dist/esm/widgets/StackedBarChart/types.js.map +1 -0
- package/dist/esm/widgets/SunburstChart/SunburstChart.js +98 -0
- package/dist/esm/widgets/SunburstChart/SunburstChart.js.map +1 -0
- package/dist/esm/widgets/SunburstChart/index.js +2 -0
- package/dist/esm/widgets/SunburstChart/index.js.map +1 -0
- package/dist/esm/widgets/SunburstChart/types.js +2 -0
- package/dist/esm/widgets/SunburstChart/types.js.map +1 -0
- package/dist/esm/widgets/Treemap/Treemap.js +109 -0
- package/dist/esm/widgets/Treemap/Treemap.js.map +1 -0
- package/dist/esm/widgets/Treemap/index.js +2 -0
- package/dist/esm/widgets/Treemap/index.js.map +1 -0
- package/dist/esm/widgets/Treemap/types.js +2 -0
- package/dist/esm/widgets/Treemap/types.js.map +1 -0
- package/dist/esm/widgets/WaterfallChart/WaterfallChart.js +139 -0
- package/dist/esm/widgets/WaterfallChart/WaterfallChart.js.map +1 -0
- package/dist/esm/widgets/WaterfallChart/index.js +2 -0
- package/dist/esm/widgets/WaterfallChart/index.js.map +1 -0
- package/dist/esm/widgets/WaterfallChart/types.js +2 -0
- package/dist/esm/widgets/WaterfallChart/types.js.map +1 -0
- package/dist/esm/widgets/index.js +35 -0
- package/dist/esm/widgets/index.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/renderer-svg/adapters/index.d.ts +21 -0
- package/dist/renderer-svg/adapters/index.d.ts.map +1 -0
- package/dist/renderer-svg/index.d.ts +9 -0
- package/dist/renderer-svg/index.d.ts.map +1 -0
- package/dist/renderer-svg/paths/arc.d.ts +24 -0
- package/dist/renderer-svg/paths/arc.d.ts.map +1 -0
- package/dist/renderer-svg/paths/index.d.ts +7 -0
- package/dist/renderer-svg/paths/index.d.ts.map +1 -0
- package/dist/renderer-svg/paths/line.d.ts +21 -0
- package/dist/renderer-svg/paths/line.d.ts.map +1 -0
- package/dist/renderer-svg/paths/rect.d.ts +24 -0
- package/dist/renderer-svg/paths/rect.d.ts.map +1 -0
- package/dist/renderer-svg/primitives/AnimatedCircle.d.ts +19 -0
- package/dist/renderer-svg/primitives/AnimatedCircle.d.ts.map +1 -0
- package/dist/renderer-svg/primitives/AnimatedPath.d.ts +19 -0
- package/dist/renderer-svg/primitives/AnimatedPath.d.ts.map +1 -0
- package/dist/renderer-svg/primitives/Text.d.ts +25 -0
- package/dist/renderer-svg/primitives/Text.d.ts.map +1 -0
- package/dist/renderer-svg/primitives/index.d.ts +7 -0
- package/dist/renderer-svg/primitives/index.d.ts.map +1 -0
- package/dist/widgets/AreaChart/AreaChart.d.ts +7 -0
- package/dist/widgets/AreaChart/AreaChart.d.ts.map +1 -0
- package/dist/widgets/AreaChart/index.d.ts +3 -0
- package/dist/widgets/AreaChart/index.d.ts.map +1 -0
- package/dist/widgets/AreaChart/types.d.ts +30 -0
- package/dist/widgets/AreaChart/types.d.ts.map +1 -0
- package/dist/widgets/BarChart/BarChart.d.ts +10 -0
- package/dist/widgets/BarChart/BarChart.d.ts.map +1 -0
- package/dist/widgets/BarChart/index.d.ts +6 -0
- package/dist/widgets/BarChart/index.d.ts.map +1 -0
- package/dist/widgets/BarChart/types.d.ts +24 -0
- package/dist/widgets/BarChart/types.d.ts.map +1 -0
- package/dist/widgets/BoxPlot/BoxPlot.d.ts +7 -0
- package/dist/widgets/BoxPlot/BoxPlot.d.ts.map +1 -0
- package/dist/widgets/BoxPlot/index.d.ts +3 -0
- package/dist/widgets/BoxPlot/index.d.ts.map +1 -0
- package/dist/widgets/BoxPlot/types.d.ts +25 -0
- package/dist/widgets/BoxPlot/types.d.ts.map +1 -0
- package/dist/widgets/BubbleChart/BubbleChart.d.ts +7 -0
- package/dist/widgets/BubbleChart/BubbleChart.d.ts.map +1 -0
- package/dist/widgets/BubbleChart/index.d.ts +3 -0
- package/dist/widgets/BubbleChart/index.d.ts.map +1 -0
- package/dist/widgets/BubbleChart/types.d.ts +30 -0
- package/dist/widgets/BubbleChart/types.d.ts.map +1 -0
- package/dist/widgets/CandlestickChart/CandlestickChart.d.ts +7 -0
- package/dist/widgets/CandlestickChart/CandlestickChart.d.ts.map +1 -0
- package/dist/widgets/CandlestickChart/index.d.ts +3 -0
- package/dist/widgets/CandlestickChart/index.d.ts.map +1 -0
- package/dist/widgets/CandlestickChart/types.d.ts +27 -0
- package/dist/widgets/CandlestickChart/types.d.ts.map +1 -0
- package/dist/widgets/FunnelChart/FunnelChart.d.ts +7 -0
- package/dist/widgets/FunnelChart/FunnelChart.d.ts.map +1 -0
- package/dist/widgets/FunnelChart/index.d.ts +3 -0
- package/dist/widgets/FunnelChart/index.d.ts.map +1 -0
- package/dist/widgets/FunnelChart/types.d.ts +20 -0
- package/dist/widgets/FunnelChart/types.d.ts.map +1 -0
- package/dist/widgets/Gauge/Gauge.d.ts +11 -0
- package/dist/widgets/Gauge/Gauge.d.ts.map +1 -0
- package/dist/widgets/Gauge/index.d.ts +6 -0
- package/dist/widgets/Gauge/index.d.ts.map +1 -0
- package/dist/widgets/Gauge/types.d.ts +18 -0
- package/dist/widgets/Gauge/types.d.ts.map +1 -0
- package/dist/widgets/GroupedBarChart/GroupedBarChart.d.ts +7 -0
- package/dist/widgets/GroupedBarChart/GroupedBarChart.d.ts.map +1 -0
- package/dist/widgets/GroupedBarChart/index.d.ts +3 -0
- package/dist/widgets/GroupedBarChart/index.d.ts.map +1 -0
- package/dist/widgets/GroupedBarChart/types.d.ts +27 -0
- package/dist/widgets/GroupedBarChart/types.d.ts.map +1 -0
- package/dist/widgets/Heatmap/Heatmap.d.ts +7 -0
- package/dist/widgets/Heatmap/Heatmap.d.ts.map +1 -0
- package/dist/widgets/Heatmap/index.d.ts +3 -0
- package/dist/widgets/Heatmap/index.d.ts.map +1 -0
- package/dist/widgets/Heatmap/types.d.ts +25 -0
- package/dist/widgets/Heatmap/types.d.ts.map +1 -0
- package/dist/widgets/Histogram/Histogram.d.ts +7 -0
- package/dist/widgets/Histogram/Histogram.d.ts.map +1 -0
- package/dist/widgets/Histogram/index.d.ts +3 -0
- package/dist/widgets/Histogram/index.d.ts.map +1 -0
- package/dist/widgets/Histogram/types.d.ts +17 -0
- package/dist/widgets/Histogram/types.d.ts.map +1 -0
- package/dist/widgets/HorizontalBarChart/HorizontalBarChart.d.ts +7 -0
- package/dist/widgets/HorizontalBarChart/HorizontalBarChart.d.ts.map +1 -0
- package/dist/widgets/HorizontalBarChart/index.d.ts +3 -0
- package/dist/widgets/HorizontalBarChart/index.d.ts.map +1 -0
- package/dist/widgets/HorizontalBarChart/types.d.ts +21 -0
- package/dist/widgets/HorizontalBarChart/types.d.ts.map +1 -0
- package/dist/widgets/KPI/KPI.d.ts +11 -0
- package/dist/widgets/KPI/KPI.d.ts.map +1 -0
- package/dist/widgets/KPI/index.d.ts +6 -0
- package/dist/widgets/KPI/index.d.ts.map +1 -0
- package/dist/widgets/KPI/types.d.ts +17 -0
- package/dist/widgets/KPI/types.d.ts.map +1 -0
- package/dist/widgets/LineChart/LineChart.d.ts +10 -0
- package/dist/widgets/LineChart/LineChart.d.ts.map +1 -0
- package/dist/widgets/LineChart/index.d.ts +6 -0
- package/dist/widgets/LineChart/index.d.ts.map +1 -0
- package/dist/widgets/LineChart/types.d.ts +31 -0
- package/dist/widgets/LineChart/types.d.ts.map +1 -0
- package/dist/widgets/MultiLineSparkline/MultiLineSparkline.d.ts +10 -0
- package/dist/widgets/MultiLineSparkline/MultiLineSparkline.d.ts.map +1 -0
- package/dist/widgets/MultiLineSparkline/index.d.ts +6 -0
- package/dist/widgets/MultiLineSparkline/index.d.ts.map +1 -0
- package/dist/widgets/MultiLineSparkline/types.d.ts +22 -0
- package/dist/widgets/MultiLineSparkline/types.d.ts.map +1 -0
- package/dist/widgets/PieChart/PieChart.d.ts +10 -0
- package/dist/widgets/PieChart/PieChart.d.ts.map +1 -0
- package/dist/widgets/PieChart/index.d.ts +6 -0
- package/dist/widgets/PieChart/index.d.ts.map +1 -0
- package/dist/widgets/PieChart/types.d.ts +23 -0
- package/dist/widgets/PieChart/types.d.ts.map +1 -0
- package/dist/widgets/Progress/Progress.d.ts +11 -0
- package/dist/widgets/Progress/Progress.d.ts.map +1 -0
- package/dist/widgets/Progress/index.d.ts +6 -0
- package/dist/widgets/Progress/index.d.ts.map +1 -0
- package/dist/widgets/Progress/types.d.ts +17 -0
- package/dist/widgets/Progress/types.d.ts.map +1 -0
- package/dist/widgets/RadarChart/RadarChart.d.ts +7 -0
- package/dist/widgets/RadarChart/RadarChart.d.ts.map +1 -0
- package/dist/widgets/RadarChart/index.d.ts +3 -0
- package/dist/widgets/RadarChart/index.d.ts.map +1 -0
- package/dist/widgets/RadarChart/types.d.ts +26 -0
- package/dist/widgets/RadarChart/types.d.ts.map +1 -0
- package/dist/widgets/SankeyDiagram/SankeyDiagram.d.ts +7 -0
- package/dist/widgets/SankeyDiagram/SankeyDiagram.d.ts.map +1 -0
- package/dist/widgets/SankeyDiagram/index.d.ts +3 -0
- package/dist/widgets/SankeyDiagram/index.d.ts.map +1 -0
- package/dist/widgets/SankeyDiagram/types.d.ts +26 -0
- package/dist/widgets/SankeyDiagram/types.d.ts.map +1 -0
- package/dist/widgets/ScatterPlot/ScatterPlot.d.ts +7 -0
- package/dist/widgets/ScatterPlot/ScatterPlot.d.ts.map +1 -0
- package/dist/widgets/ScatterPlot/index.d.ts +3 -0
- package/dist/widgets/ScatterPlot/index.d.ts.map +1 -0
- package/dist/widgets/ScatterPlot/types.d.ts +29 -0
- package/dist/widgets/ScatterPlot/types.d.ts.map +1 -0
- package/dist/widgets/Sparkline/Sparkline.d.ts +11 -0
- package/dist/widgets/Sparkline/Sparkline.d.ts.map +1 -0
- package/dist/widgets/Sparkline/index.d.ts +6 -0
- package/dist/widgets/Sparkline/index.d.ts.map +1 -0
- package/dist/widgets/Sparkline/types.d.ts +16 -0
- package/dist/widgets/Sparkline/types.d.ts.map +1 -0
- package/dist/widgets/StackedBarChart/StackedBarChart.d.ts +7 -0
- package/dist/widgets/StackedBarChart/StackedBarChart.d.ts.map +1 -0
- package/dist/widgets/StackedBarChart/index.d.ts +3 -0
- package/dist/widgets/StackedBarChart/index.d.ts.map +1 -0
- package/dist/widgets/StackedBarChart/types.d.ts +26 -0
- package/dist/widgets/StackedBarChart/types.d.ts.map +1 -0
- package/dist/widgets/SunburstChart/SunburstChart.d.ts +7 -0
- package/dist/widgets/SunburstChart/SunburstChart.d.ts.map +1 -0
- package/dist/widgets/SunburstChart/index.d.ts +3 -0
- package/dist/widgets/SunburstChart/index.d.ts.map +1 -0
- package/dist/widgets/SunburstChart/types.d.ts +20 -0
- package/dist/widgets/SunburstChart/types.d.ts.map +1 -0
- package/dist/widgets/Treemap/Treemap.d.ts +7 -0
- package/dist/widgets/Treemap/Treemap.d.ts.map +1 -0
- package/dist/widgets/Treemap/index.d.ts +3 -0
- package/dist/widgets/Treemap/index.d.ts.map +1 -0
- package/dist/widgets/Treemap/types.d.ts +21 -0
- package/dist/widgets/Treemap/types.d.ts.map +1 -0
- package/dist/widgets/WaterfallChart/WaterfallChart.d.ts +7 -0
- package/dist/widgets/WaterfallChart/WaterfallChart.d.ts.map +1 -0
- package/dist/widgets/WaterfallChart/index.d.ts +3 -0
- package/dist/widgets/WaterfallChart/index.d.ts.map +1 -0
- package/dist/widgets/WaterfallChart/types.d.ts +24 -0
- package/dist/widgets/WaterfallChart/types.d.ts.map +1 -0
- package/dist/widgets/index.d.ts +29 -0
- package/dist/widgets/index.d.ts.map +1 -0
- package/package.json +84 -0
- package/src/core/animation/index.ts +113 -0
- package/src/core/animation/index.web.ts +112 -0
- package/src/core/hooks/index.ts +66 -0
- package/src/core/index.ts +26 -0
- package/src/core/layout/index.ts +101 -0
- package/src/core/math/index.ts +72 -0
- package/src/core/package.json +13 -0
- package/src/core/theme/ThemeProvider.tsx +36 -0
- package/src/core/theme/index.ts +5 -0
- package/src/core/theme/themes.ts +132 -0
- package/src/core/types/index.ts +164 -0
- package/src/core/utils/responsive.ts +203 -0
- package/src/core/utils/time.ts +100 -0
- package/src/index.ts +13 -0
- package/src/renderer-svg/adapters/index.ts +84 -0
- package/src/renderer-svg/index.ts +8 -0
- package/src/renderer-svg/package.json +17 -0
- package/src/renderer-svg/paths/arc.ts +93 -0
- package/src/renderer-svg/paths/index.ts +6 -0
- package/src/renderer-svg/paths/line.ts +83 -0
- package/src/renderer-svg/paths/rect.ts +80 -0
- package/src/renderer-svg/primitives/AnimatedCircle.tsx +48 -0
- package/src/renderer-svg/primitives/AnimatedPath.tsx +48 -0
- package/src/renderer-svg/primitives/Text.tsx +73 -0
- package/src/renderer-svg/primitives/index.ts +6 -0
- package/src/widgets/AreaChart/AreaChart.tsx +213 -0
- package/src/widgets/AreaChart/index.ts +2 -0
- package/src/widgets/AreaChart/types.ts +34 -0
- package/src/widgets/BarChart/BarChart.tsx +249 -0
- package/src/widgets/BarChart/index.ts +10 -0
- package/src/widgets/BarChart/types.ts +27 -0
- package/src/widgets/BoxPlot/BoxPlot.tsx +252 -0
- package/src/widgets/BoxPlot/index.ts +2 -0
- package/src/widgets/BoxPlot/types.ts +27 -0
- package/src/widgets/BubbleChart/BubbleChart.tsx +175 -0
- package/src/widgets/BubbleChart/index.ts +2 -0
- package/src/widgets/BubbleChart/types.ts +33 -0
- package/src/widgets/CandlestickChart/CandlestickChart.tsx +204 -0
- package/src/widgets/CandlestickChart/index.ts +2 -0
- package/src/widgets/CandlestickChart/types.ts +29 -0
- package/src/widgets/FunnelChart/FunnelChart.tsx +172 -0
- package/src/widgets/FunnelChart/index.ts +2 -0
- package/src/widgets/FunnelChart/types.ts +22 -0
- package/src/widgets/Gauge/Gauge.tsx +235 -0
- package/src/widgets/Gauge/index.ts +5 -0
- package/src/widgets/Gauge/types.ts +19 -0
- package/src/widgets/GroupedBarChart/GroupedBarChart.tsx +190 -0
- package/src/widgets/GroupedBarChart/index.ts +2 -0
- package/src/widgets/GroupedBarChart/types.ts +30 -0
- package/src/widgets/Heatmap/Heatmap.tsx +216 -0
- package/src/widgets/Heatmap/index.ts +2 -0
- package/src/widgets/Heatmap/types.ts +27 -0
- package/src/widgets/Histogram/Histogram.tsx +173 -0
- package/src/widgets/Histogram/index.ts +2 -0
- package/src/widgets/Histogram/types.ts +18 -0
- package/src/widgets/HorizontalBarChart/HorizontalBarChart.tsx +125 -0
- package/src/widgets/HorizontalBarChart/index.ts +2 -0
- package/src/widgets/HorizontalBarChart/types.ts +23 -0
- package/src/widgets/KPI/KPI.tsx +222 -0
- package/src/widgets/KPI/index.ts +5 -0
- package/src/widgets/KPI/types.ts +19 -0
- package/src/widgets/LineChart/LineChart.tsx +364 -0
- package/src/widgets/LineChart/index.ts +10 -0
- package/src/widgets/LineChart/types.ts +34 -0
- package/src/widgets/MultiLineSparkline/MultiLineSparkline.tsx +234 -0
- package/src/widgets/MultiLineSparkline/index.ts +10 -0
- package/src/widgets/MultiLineSparkline/types.ts +25 -0
- package/src/widgets/PieChart/PieChart.tsx +275 -0
- package/src/widgets/PieChart/index.ts +10 -0
- package/src/widgets/PieChart/types.ts +26 -0
- package/src/widgets/Progress/Progress.tsx +201 -0
- package/src/widgets/Progress/index.ts +5 -0
- package/src/widgets/Progress/types.ts +19 -0
- package/src/widgets/RadarChart/RadarChart.tsx +213 -0
- package/src/widgets/RadarChart/index.ts +2 -0
- package/src/widgets/RadarChart/types.ts +29 -0
- package/src/widgets/SankeyDiagram/SankeyDiagram.tsx +272 -0
- package/src/widgets/SankeyDiagram/index.ts +2 -0
- package/src/widgets/SankeyDiagram/types.ts +29 -0
- package/src/widgets/ScatterPlot/ScatterPlot.tsx +167 -0
- package/src/widgets/ScatterPlot/index.ts +2 -0
- package/src/widgets/ScatterPlot/types.ts +32 -0
- package/src/widgets/Sparkline/Sparkline.tsx +203 -0
- package/src/widgets/Sparkline/index.ts +5 -0
- package/src/widgets/Sparkline/types.ts +18 -0
- package/src/widgets/StackedBarChart/StackedBarChart.tsx +181 -0
- package/src/widgets/StackedBarChart/index.ts +2 -0
- package/src/widgets/StackedBarChart/types.ts +29 -0
- package/src/widgets/SunburstChart/SunburstChart.tsx +176 -0
- package/src/widgets/SunburstChart/index.ts +2 -0
- package/src/widgets/SunburstChart/types.ts +22 -0
- package/src/widgets/Treemap/Treemap.tsx +191 -0
- package/src/widgets/Treemap/index.ts +2 -0
- package/src/widgets/Treemap/types.ts +23 -0
- package/src/widgets/WaterfallChart/WaterfallChart.tsx +226 -0
- package/src/widgets/WaterfallChart/index.ts +2 -0
- package/src/widgets/WaterfallChart/types.ts +26 -0
- package/src/widgets/index.ts +40 -0
- package/src/widgets/package.json +18 -0
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Responsive sizing utilities for widgets
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import type { FontSizeConfig } from '../types';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Scale factor type for responsive sizing
|
|
9
|
+
*/
|
|
10
|
+
export type ScaleFactor = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Base font sizes - used as reference for scaling
|
|
14
|
+
*/
|
|
15
|
+
const BASE_FONT_SIZES = {
|
|
16
|
+
xs: 10,
|
|
17
|
+
sm: 12,
|
|
18
|
+
md: 14,
|
|
19
|
+
lg: 18,
|
|
20
|
+
xl: 24,
|
|
21
|
+
xxl: 32,
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Calculate responsive font size based on widget dimensions
|
|
26
|
+
*
|
|
27
|
+
* @param baseFontSize - Base font size (from theme or custom)
|
|
28
|
+
* @param width - Widget width
|
|
29
|
+
* @param height - Widget height
|
|
30
|
+
* @param referenceSize - Reference dimension (default: 300 for width-based scaling)
|
|
31
|
+
* @returns Scaled font size
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* // For a widget that's 150px wide (half of reference 300px)
|
|
35
|
+
* getResponsiveFontSize(16, 150, 100, 300) // Returns 8 (50% of 16)
|
|
36
|
+
*
|
|
37
|
+
* // For a widget that's 600px wide (2x reference)
|
|
38
|
+
* getResponsiveFontSize(16, 600, 200, 300) // Returns 32 (200% of 16)
|
|
39
|
+
*/
|
|
40
|
+
export function getResponsiveFontSize(
|
|
41
|
+
baseFontSize: number,
|
|
42
|
+
width: number,
|
|
43
|
+
height: number,
|
|
44
|
+
referenceSize: number = 300
|
|
45
|
+
): number {
|
|
46
|
+
// Use the smaller dimension to ensure text fits in both directions
|
|
47
|
+
const dimension = Math.min(width, height);
|
|
48
|
+
const scaleFactor = dimension / referenceSize;
|
|
49
|
+
|
|
50
|
+
// Clamp the scale factor to prevent text from becoming too small or too large
|
|
51
|
+
const clampedScale = Math.max(0.5, Math.min(scaleFactor, 2.5));
|
|
52
|
+
|
|
53
|
+
return Math.round(baseFontSize * clampedScale);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Get scaled font sizes for all scale factors
|
|
58
|
+
*
|
|
59
|
+
* @param width - Widget width
|
|
60
|
+
* @param height - Widget height
|
|
61
|
+
* @param referenceSize - Reference dimension for scaling
|
|
62
|
+
* @returns Object with scaled font sizes for each scale factor
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
* const fontSizes = getScaledFontSizes(150, 100, 300);
|
|
66
|
+
* // Returns: { xs: 5, sm: 6, md: 7, lg: 9, xl: 12, xxl: 16 }
|
|
67
|
+
*/
|
|
68
|
+
export function getScaledFontSizes(
|
|
69
|
+
width: number,
|
|
70
|
+
height: number,
|
|
71
|
+
referenceSize: number = 300
|
|
72
|
+
): Record<ScaleFactor, number> {
|
|
73
|
+
return {
|
|
74
|
+
xs: getResponsiveFontSize(BASE_FONT_SIZES.xs, width, height, referenceSize),
|
|
75
|
+
sm: getResponsiveFontSize(BASE_FONT_SIZES.sm, width, height, referenceSize),
|
|
76
|
+
md: getResponsiveFontSize(BASE_FONT_SIZES.md, width, height, referenceSize),
|
|
77
|
+
lg: getResponsiveFontSize(BASE_FONT_SIZES.lg, width, height, referenceSize),
|
|
78
|
+
xl: getResponsiveFontSize(BASE_FONT_SIZES.xl, width, height, referenceSize),
|
|
79
|
+
xxl: getResponsiveFontSize(BASE_FONT_SIZES.xxl, width, height, referenceSize),
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Options for responsive font scaling
|
|
85
|
+
*/
|
|
86
|
+
export interface ResponsiveFontOptions {
|
|
87
|
+
/**
|
|
88
|
+
* Enable/disable responsive scaling (default: true)
|
|
89
|
+
*/
|
|
90
|
+
enabled?: boolean;
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Minimum font size to prevent text from becoming unreadable
|
|
94
|
+
*/
|
|
95
|
+
minSize?: number;
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* Maximum font size to prevent text from becoming too large
|
|
99
|
+
*/
|
|
100
|
+
maxSize?: number;
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Reference size for scaling calculations (default: 300)
|
|
104
|
+
*/
|
|
105
|
+
referenceSize?: number;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Calculate font size with options
|
|
110
|
+
*
|
|
111
|
+
* @param baseFontSize - Base font size
|
|
112
|
+
* @param width - Widget width
|
|
113
|
+
* @param height - Widget height
|
|
114
|
+
* @param options - Responsive font options
|
|
115
|
+
* @returns Calculated font size
|
|
116
|
+
*/
|
|
117
|
+
export function calculateFontSize(
|
|
118
|
+
baseFontSize: number,
|
|
119
|
+
width: number,
|
|
120
|
+
height: number,
|
|
121
|
+
options: ResponsiveFontOptions = {}
|
|
122
|
+
): number {
|
|
123
|
+
const {
|
|
124
|
+
enabled = true,
|
|
125
|
+
minSize = 8,
|
|
126
|
+
maxSize = 48,
|
|
127
|
+
referenceSize = 300,
|
|
128
|
+
} = options;
|
|
129
|
+
|
|
130
|
+
// If responsive scaling is disabled, return base size
|
|
131
|
+
if (!enabled) {
|
|
132
|
+
return baseFontSize;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
// Calculate responsive size
|
|
136
|
+
const responsiveSize = getResponsiveFontSize(
|
|
137
|
+
baseFontSize,
|
|
138
|
+
width,
|
|
139
|
+
height,
|
|
140
|
+
referenceSize
|
|
141
|
+
);
|
|
142
|
+
|
|
143
|
+
// Apply min/max constraints
|
|
144
|
+
return Math.max(minSize, Math.min(responsiveSize, maxSize));
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* Create font size calculator for a widget
|
|
149
|
+
*
|
|
150
|
+
* @param width - Widget width
|
|
151
|
+
* @param height - Widget height
|
|
152
|
+
* @param fontConfig - Font size configuration from props
|
|
153
|
+
* @returns Function to calculate responsive font sizes
|
|
154
|
+
*/
|
|
155
|
+
export function createFontSizeCalculator(
|
|
156
|
+
width: number,
|
|
157
|
+
height: number,
|
|
158
|
+
fontConfig: FontSizeConfig = {}
|
|
159
|
+
) {
|
|
160
|
+
const {
|
|
161
|
+
responsive = true,
|
|
162
|
+
minSize = 8,
|
|
163
|
+
maxSize = 48,
|
|
164
|
+
} = fontConfig;
|
|
165
|
+
|
|
166
|
+
return {
|
|
167
|
+
/**
|
|
168
|
+
* Get font size for labels
|
|
169
|
+
*/
|
|
170
|
+
label: (baseFontSize: number): number => {
|
|
171
|
+
return fontConfig.labelSize ?? calculateFontSize(
|
|
172
|
+
baseFontSize,
|
|
173
|
+
width,
|
|
174
|
+
height,
|
|
175
|
+
{ enabled: responsive, minSize, maxSize }
|
|
176
|
+
);
|
|
177
|
+
},
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* Get font size for values
|
|
181
|
+
*/
|
|
182
|
+
value: (baseFontSize: number): number => {
|
|
183
|
+
return fontConfig.valueSize ?? calculateFontSize(
|
|
184
|
+
baseFontSize,
|
|
185
|
+
width,
|
|
186
|
+
height,
|
|
187
|
+
{ enabled: responsive, minSize, maxSize }
|
|
188
|
+
);
|
|
189
|
+
},
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* Get font size for secondary text
|
|
193
|
+
*/
|
|
194
|
+
secondary: (baseFontSize: number): number => {
|
|
195
|
+
return fontConfig.secondarySize ?? calculateFontSize(
|
|
196
|
+
baseFontSize,
|
|
197
|
+
width,
|
|
198
|
+
height,
|
|
199
|
+
{ enabled: responsive, minSize, maxSize }
|
|
200
|
+
);
|
|
201
|
+
},
|
|
202
|
+
};
|
|
203
|
+
}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Time formatting utilities for chart labels
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
export type TimeInterval = 'minute' | 'hour' | 'day' | 'week' | 'month' | 'year';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Format date based on interval
|
|
9
|
+
*/
|
|
10
|
+
export function formatTimeLabel(date: Date, interval: TimeInterval): string {
|
|
11
|
+
switch (interval) {
|
|
12
|
+
case 'minute':
|
|
13
|
+
return date.toLocaleTimeString('en-US', { hour: '2-digit', minute: '2-digit' });
|
|
14
|
+
|
|
15
|
+
case 'hour':
|
|
16
|
+
return date.toLocaleTimeString('en-US', { hour: '2-digit' });
|
|
17
|
+
|
|
18
|
+
case 'day':
|
|
19
|
+
return date.toLocaleDateString('en-US', { month: 'short', day: 'numeric' });
|
|
20
|
+
|
|
21
|
+
case 'week':
|
|
22
|
+
return `Week ${getWeekNumber(date)}`;
|
|
23
|
+
|
|
24
|
+
case 'month':
|
|
25
|
+
return date.toLocaleDateString('en-US', { month: 'short', year: 'numeric' });
|
|
26
|
+
|
|
27
|
+
case 'year':
|
|
28
|
+
return date.getFullYear().toString();
|
|
29
|
+
|
|
30
|
+
default:
|
|
31
|
+
return date.toLocaleDateString();
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Get week number of year
|
|
37
|
+
*/
|
|
38
|
+
function getWeekNumber(date: Date): number {
|
|
39
|
+
const firstDayOfYear = new Date(date.getFullYear(), 0, 1);
|
|
40
|
+
const pastDaysOfYear = (date.getTime() - firstDayOfYear.getTime()) / 86400000;
|
|
41
|
+
return Math.ceil((pastDaysOfYear + firstDayOfYear.getDay() + 1) / 7);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Generate array of dates for a time range
|
|
46
|
+
*/
|
|
47
|
+
export function generateTimeLabels(
|
|
48
|
+
start: Date,
|
|
49
|
+
count: number,
|
|
50
|
+
interval: TimeInterval
|
|
51
|
+
): string[] {
|
|
52
|
+
const labels: string[] = [];
|
|
53
|
+
const current = new Date(start);
|
|
54
|
+
|
|
55
|
+
for (let i = 0; i < count; i++) {
|
|
56
|
+
labels.push(formatTimeLabel(current, interval));
|
|
57
|
+
|
|
58
|
+
// Increment based on interval
|
|
59
|
+
switch (interval) {
|
|
60
|
+
case 'minute':
|
|
61
|
+
current.setMinutes(current.getMinutes() + 1);
|
|
62
|
+
break;
|
|
63
|
+
case 'hour':
|
|
64
|
+
current.setHours(current.getHours() + 1);
|
|
65
|
+
break;
|
|
66
|
+
case 'day':
|
|
67
|
+
current.setDate(current.getDate() + 1);
|
|
68
|
+
break;
|
|
69
|
+
case 'week':
|
|
70
|
+
current.setDate(current.getDate() + 7);
|
|
71
|
+
break;
|
|
72
|
+
case 'month':
|
|
73
|
+
current.setMonth(current.getMonth() + 1);
|
|
74
|
+
break;
|
|
75
|
+
case 'year':
|
|
76
|
+
current.setFullYear(current.getFullYear() + 1);
|
|
77
|
+
break;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
return labels;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Reduce labels to fit width (show every Nth label)
|
|
86
|
+
*/
|
|
87
|
+
export function reduceLabels(labels: string[], maxLabels: number): { label: string; index: number }[] {
|
|
88
|
+
if (labels.length <= maxLabels) {
|
|
89
|
+
return labels.map((label, index) => ({ label, index }));
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
const step = Math.ceil(labels.length / maxLabels);
|
|
93
|
+
const reduced: { label: string; index: number }[] = [];
|
|
94
|
+
|
|
95
|
+
for (let i = 0; i < labels.length; i += step) {
|
|
96
|
+
reduced.push({ label: labels[i], index: i });
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
return reduced;
|
|
100
|
+
}
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dashboard Widgets - Main entry point
|
|
3
|
+
* Mobile-first dashboard widget library for React Native
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
// Core exports
|
|
7
|
+
export * from './core';
|
|
8
|
+
|
|
9
|
+
// Widget exports
|
|
10
|
+
export * from './widgets';
|
|
11
|
+
|
|
12
|
+
// Version
|
|
13
|
+
export const VERSION = '0.1.0';
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adapters for bridging core utilities with SVG rendering
|
|
3
|
+
*/
|
|
4
|
+
import { Point } from '../../core/layout';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Converts data array to SVG points
|
|
8
|
+
*/
|
|
9
|
+
export function dataToPoints(
|
|
10
|
+
data: number[],
|
|
11
|
+
width: number,
|
|
12
|
+
height: number,
|
|
13
|
+
padding: number = 0
|
|
14
|
+
): Point[] {
|
|
15
|
+
if (data.length === 0) return [];
|
|
16
|
+
|
|
17
|
+
const min = Math.min(...data);
|
|
18
|
+
const max = Math.max(...data);
|
|
19
|
+
const range = max - min || 1;
|
|
20
|
+
|
|
21
|
+
const innerWidth = width - padding * 2;
|
|
22
|
+
const innerHeight = height - padding * 2;
|
|
23
|
+
const stepX = data.length > 1 ? innerWidth / (data.length - 1) : 0;
|
|
24
|
+
|
|
25
|
+
return data.map((value, index) => {
|
|
26
|
+
const normalizedY = (value - min) / range;
|
|
27
|
+
return {
|
|
28
|
+
x: padding + index * stepX,
|
|
29
|
+
y: padding + innerHeight - normalizedY * innerHeight,
|
|
30
|
+
};
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Formats numbers for display
|
|
36
|
+
*/
|
|
37
|
+
export function formatNumber(
|
|
38
|
+
value: number,
|
|
39
|
+
format?: 'number' | 'currency' | 'percent' | 'compact'
|
|
40
|
+
): string {
|
|
41
|
+
switch (format) {
|
|
42
|
+
case 'currency':
|
|
43
|
+
return new Intl.NumberFormat('en-US', {
|
|
44
|
+
style: 'currency',
|
|
45
|
+
currency: 'USD',
|
|
46
|
+
minimumFractionDigits: 0,
|
|
47
|
+
maximumFractionDigits: 0,
|
|
48
|
+
}).format(value);
|
|
49
|
+
|
|
50
|
+
case 'percent':
|
|
51
|
+
return `${value.toFixed(1)}%`;
|
|
52
|
+
|
|
53
|
+
case 'compact':
|
|
54
|
+
if (value >= 1_000_000) {
|
|
55
|
+
return `${(value / 1_000_000).toFixed(1)}M`;
|
|
56
|
+
}
|
|
57
|
+
if (value >= 1_000) {
|
|
58
|
+
return `${(value / 1_000).toFixed(1)}K`;
|
|
59
|
+
}
|
|
60
|
+
return value.toString();
|
|
61
|
+
|
|
62
|
+
case 'number':
|
|
63
|
+
default:
|
|
64
|
+
return new Intl.NumberFormat('en-US').format(value);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Gets color for trend direction
|
|
70
|
+
*/
|
|
71
|
+
export function getTrendColor(
|
|
72
|
+
trend: 'up' | 'down' | 'neutral',
|
|
73
|
+
colors: { positive: string; negative: string; neutral: string }
|
|
74
|
+
): string {
|
|
75
|
+
switch (trend) {
|
|
76
|
+
case 'up':
|
|
77
|
+
return colors.positive;
|
|
78
|
+
case 'down':
|
|
79
|
+
return colors.negative;
|
|
80
|
+
case 'neutral':
|
|
81
|
+
default:
|
|
82
|
+
return colors.neutral;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@dashboard-widgets/renderer-svg",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "SVG renderer for dashboard widgets - primitives, paths, adapters",
|
|
5
|
+
"main": "index.ts",
|
|
6
|
+
"types": "index.ts",
|
|
7
|
+
"private": true,
|
|
8
|
+
"dependencies": {
|
|
9
|
+
"@dashboard-widgets/core": "*"
|
|
10
|
+
},
|
|
11
|
+
"peerDependencies": {
|
|
12
|
+
"react": ">=18.0.0",
|
|
13
|
+
"react-native": ">=0.70.0",
|
|
14
|
+
"react-native-svg": ">=13.0.0",
|
|
15
|
+
"react-native-reanimated": ">=3.0.0"
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SVG arc path generator
|
|
3
|
+
* Translates geometry to SVG path strings
|
|
4
|
+
*/
|
|
5
|
+
import { polarToCartesian } from '../../core/math';
|
|
6
|
+
|
|
7
|
+
export interface ArcPathConfig {
|
|
8
|
+
cx: number;
|
|
9
|
+
cy: number;
|
|
10
|
+
radius: number;
|
|
11
|
+
startAngle: number;
|
|
12
|
+
endAngle: number;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Creates an SVG arc path
|
|
17
|
+
* @param config - Arc configuration
|
|
18
|
+
* @returns SVG path string
|
|
19
|
+
*/
|
|
20
|
+
export function createArcPath(config: ArcPathConfig): string {
|
|
21
|
+
const { cx, cy, radius, startAngle, endAngle } = config;
|
|
22
|
+
|
|
23
|
+
const start = polarToCartesian(cx, cy, radius, endAngle);
|
|
24
|
+
const end = polarToCartesian(cx, cy, radius, startAngle);
|
|
25
|
+
|
|
26
|
+
const largeArcFlag = endAngle - startAngle <= 180 ? '0' : '1';
|
|
27
|
+
|
|
28
|
+
return [
|
|
29
|
+
'M',
|
|
30
|
+
start.x,
|
|
31
|
+
start.y,
|
|
32
|
+
'A',
|
|
33
|
+
radius,
|
|
34
|
+
radius,
|
|
35
|
+
0,
|
|
36
|
+
largeArcFlag,
|
|
37
|
+
0,
|
|
38
|
+
end.x,
|
|
39
|
+
end.y,
|
|
40
|
+
].join(' ');
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Creates a filled arc (pie slice) path
|
|
45
|
+
*/
|
|
46
|
+
export function createFilledArcPath(config: ArcPathConfig): string {
|
|
47
|
+
const { cx, cy } = config;
|
|
48
|
+
const arcPath = createArcPath(config);
|
|
49
|
+
|
|
50
|
+
return `${arcPath} L ${cx} ${cy} Z`;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Creates a donut arc path with inner and outer radius
|
|
55
|
+
*/
|
|
56
|
+
export function createDonutArcPath(
|
|
57
|
+
config: ArcPathConfig & { innerRadius: number }
|
|
58
|
+
): string {
|
|
59
|
+
const { cx, cy, radius, innerRadius, startAngle, endAngle } = config;
|
|
60
|
+
|
|
61
|
+
const outerStart = polarToCartesian(cx, cy, radius, endAngle);
|
|
62
|
+
const outerEnd = polarToCartesian(cx, cy, radius, startAngle);
|
|
63
|
+
const innerStart = polarToCartesian(cx, cy, innerRadius, endAngle);
|
|
64
|
+
const innerEnd = polarToCartesian(cx, cy, innerRadius, startAngle);
|
|
65
|
+
|
|
66
|
+
const largeArcFlag = endAngle - startAngle <= 180 ? '0' : '1';
|
|
67
|
+
|
|
68
|
+
return [
|
|
69
|
+
'M',
|
|
70
|
+
outerStart.x,
|
|
71
|
+
outerStart.y,
|
|
72
|
+
'A',
|
|
73
|
+
radius,
|
|
74
|
+
radius,
|
|
75
|
+
0,
|
|
76
|
+
largeArcFlag,
|
|
77
|
+
0,
|
|
78
|
+
outerEnd.x,
|
|
79
|
+
outerEnd.y,
|
|
80
|
+
'L',
|
|
81
|
+
innerEnd.x,
|
|
82
|
+
innerEnd.y,
|
|
83
|
+
'A',
|
|
84
|
+
innerRadius,
|
|
85
|
+
innerRadius,
|
|
86
|
+
0,
|
|
87
|
+
largeArcFlag,
|
|
88
|
+
1,
|
|
89
|
+
innerStart.x,
|
|
90
|
+
innerStart.y,
|
|
91
|
+
'Z',
|
|
92
|
+
].join(' ');
|
|
93
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SVG line path generators
|
|
3
|
+
*/
|
|
4
|
+
import { Point } from '../../core/layout';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Creates a simple line path from points
|
|
8
|
+
*/
|
|
9
|
+
export function createLinePath(points: Point[]): string {
|
|
10
|
+
if (points.length === 0) return '';
|
|
11
|
+
|
|
12
|
+
const pathParts = points.map((point, index) => {
|
|
13
|
+
const command = index === 0 ? 'M' : 'L';
|
|
14
|
+
return `${command} ${point.x} ${point.y}`;
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
return pathParts.join(' ');
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Creates a smooth curve path using quadratic bezier curves
|
|
22
|
+
*/
|
|
23
|
+
export function createSmoothLinePath(points: Point[]): string {
|
|
24
|
+
if (points.length === 0) return '';
|
|
25
|
+
if (points.length === 1) return `M ${points[0].x} ${points[0].y}`;
|
|
26
|
+
|
|
27
|
+
const pathParts: string[] = [`M ${points[0].x} ${points[0].y}`];
|
|
28
|
+
|
|
29
|
+
for (let i = 0; i < points.length - 1; i++) {
|
|
30
|
+
const current = points[i];
|
|
31
|
+
const next = points[i + 1];
|
|
32
|
+
|
|
33
|
+
// Calculate control point (midpoint)
|
|
34
|
+
const controlX = (current.x + next.x) / 2;
|
|
35
|
+
const controlY = (current.y + next.y) / 2;
|
|
36
|
+
|
|
37
|
+
if (i === 0) {
|
|
38
|
+
// First segment: use simple control point
|
|
39
|
+
pathParts.push(`Q ${current.x} ${current.y} ${controlX} ${controlY}`);
|
|
40
|
+
} else {
|
|
41
|
+
// Subsequent segments: smooth curve
|
|
42
|
+
pathParts.push(`T ${controlX} ${controlY}`);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// Final point
|
|
47
|
+
const lastPoint = points[points.length - 1];
|
|
48
|
+
pathParts.push(`T ${lastPoint.x} ${lastPoint.y}`);
|
|
49
|
+
|
|
50
|
+
return pathParts.join(' ');
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Creates an area path (filled under line)
|
|
55
|
+
*/
|
|
56
|
+
export function createAreaPath(
|
|
57
|
+
points: Point[],
|
|
58
|
+
baselineY: number
|
|
59
|
+
): string {
|
|
60
|
+
if (points.length === 0) return '';
|
|
61
|
+
|
|
62
|
+
const linePath = createLinePath(points);
|
|
63
|
+
const lastPoint = points[points.length - 1];
|
|
64
|
+
const firstPoint = points[0];
|
|
65
|
+
|
|
66
|
+
return `${linePath} L ${lastPoint.x} ${baselineY} L ${firstPoint.x} ${baselineY} Z`;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Creates a smooth area path
|
|
71
|
+
*/
|
|
72
|
+
export function createSmoothAreaPath(
|
|
73
|
+
points: Point[],
|
|
74
|
+
baselineY: number
|
|
75
|
+
): string {
|
|
76
|
+
if (points.length === 0) return '';
|
|
77
|
+
|
|
78
|
+
const linePath = createSmoothLinePath(points);
|
|
79
|
+
const lastPoint = points[points.length - 1];
|
|
80
|
+
const firstPoint = points[0];
|
|
81
|
+
|
|
82
|
+
return `${linePath} L ${lastPoint.x} ${baselineY} L ${firstPoint.x} ${baselineY} Z`;
|
|
83
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SVG rectangle path generators
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
export interface RectConfig {
|
|
6
|
+
x: number;
|
|
7
|
+
y: number;
|
|
8
|
+
width: number;
|
|
9
|
+
height: number;
|
|
10
|
+
radius?: number;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Creates a rounded rectangle path
|
|
15
|
+
*/
|
|
16
|
+
export function createRoundedRectPath(config: RectConfig): string {
|
|
17
|
+
const { x, y, width, height, radius = 0 } = config;
|
|
18
|
+
|
|
19
|
+
if (radius === 0) {
|
|
20
|
+
return `M ${x} ${y} L ${x + width} ${y} L ${x + width} ${y + height} L ${x} ${y + height} Z`;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const r = Math.min(radius, width / 2, height / 2);
|
|
24
|
+
|
|
25
|
+
return [
|
|
26
|
+
`M ${x + r} ${y}`,
|
|
27
|
+
`L ${x + width - r} ${y}`,
|
|
28
|
+
`Q ${x + width} ${y} ${x + width} ${y + r}`,
|
|
29
|
+
`L ${x + width} ${y + height - r}`,
|
|
30
|
+
`Q ${x + width} ${y + height} ${x + width - r} ${y + height}`,
|
|
31
|
+
`L ${x + r} ${y + height}`,
|
|
32
|
+
`Q ${x} ${y + height} ${x} ${y + height - r}`,
|
|
33
|
+
`L ${x} ${y + r}`,
|
|
34
|
+
`Q ${x} ${y} ${x + r} ${y}`,
|
|
35
|
+
'Z',
|
|
36
|
+
].join(' ');
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Creates a rectangle with only specific corners rounded
|
|
41
|
+
*/
|
|
42
|
+
export function createPartiallyRoundedRectPath(
|
|
43
|
+
config: RectConfig & {
|
|
44
|
+
radiusTopLeft?: number;
|
|
45
|
+
radiusTopRight?: number;
|
|
46
|
+
radiusBottomRight?: number;
|
|
47
|
+
radiusBottomLeft?: number;
|
|
48
|
+
}
|
|
49
|
+
): string {
|
|
50
|
+
const {
|
|
51
|
+
x,
|
|
52
|
+
y,
|
|
53
|
+
width,
|
|
54
|
+
height,
|
|
55
|
+
radiusTopLeft = 0,
|
|
56
|
+
radiusTopRight = 0,
|
|
57
|
+
radiusBottomRight = 0,
|
|
58
|
+
radiusBottomLeft = 0,
|
|
59
|
+
} = config;
|
|
60
|
+
|
|
61
|
+
const rtl = Math.min(radiusTopLeft, width / 2, height / 2);
|
|
62
|
+
const rtr = Math.min(radiusTopRight, width / 2, height / 2);
|
|
63
|
+
const rbr = Math.min(radiusBottomRight, width / 2, height / 2);
|
|
64
|
+
const rbl = Math.min(radiusBottomLeft, width / 2, height / 2);
|
|
65
|
+
|
|
66
|
+
return [
|
|
67
|
+
`M ${x + rtl} ${y}`,
|
|
68
|
+
`L ${x + width - rtr} ${y}`,
|
|
69
|
+
rtr > 0 ? `Q ${x + width} ${y} ${x + width} ${y + rtr}` : '',
|
|
70
|
+
`L ${x + width} ${y + height - rbr}`,
|
|
71
|
+
rbr > 0 ? `Q ${x + width} ${y + height} ${x + width - rbr} ${y + height}` : '',
|
|
72
|
+
`L ${x + rbl} ${y + height}`,
|
|
73
|
+
rbl > 0 ? `Q ${x} ${y + height} ${x} ${y + height - rbl}` : '',
|
|
74
|
+
`L ${x} ${y + rtl}`,
|
|
75
|
+
rtl > 0 ? `Q ${x} ${y} ${x + rtl} ${y}` : '',
|
|
76
|
+
'Z',
|
|
77
|
+
]
|
|
78
|
+
.filter(Boolean)
|
|
79
|
+
.join(' ');
|
|
80
|
+
}
|