@astryxdesign/lab 0.0.0-bootstrap.0 → 0.1.2-canary.04e71b2
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 +67 -0
- package/LICENSE +21 -0
- package/README.md +47 -1
- package/dist/Chart/Chart.d.ts +77 -0
- package/dist/Chart/Chart.d.ts.map +1 -0
- package/dist/Chart/Chart.js +247 -0
- package/dist/Chart/ChartArea.d.ts +28 -0
- package/dist/Chart/ChartArea.d.ts.map +1 -0
- package/dist/Chart/ChartArea.js +71 -0
- package/dist/Chart/ChartAxis.d.ts +27 -0
- package/dist/Chart/ChartAxis.d.ts.map +1 -0
- package/dist/Chart/ChartAxis.js +147 -0
- package/dist/Chart/ChartBar.d.ts +19 -0
- package/dist/Chart/ChartBar.d.ts.map +1 -0
- package/dist/Chart/ChartBar.js +61 -0
- package/dist/Chart/ChartBrush.d.ts +59 -0
- package/dist/Chart/ChartBrush.d.ts.map +1 -0
- package/dist/Chart/ChartBrush.js +197 -0
- package/dist/Chart/ChartCandlestick.d.ts +50 -0
- package/dist/Chart/ChartCandlestick.d.ts.map +1 -0
- package/dist/Chart/ChartCandlestick.js +138 -0
- package/dist/Chart/ChartContext.d.ts +5 -0
- package/dist/Chart/ChartContext.d.ts.map +1 -0
- package/dist/Chart/ChartContext.js +20 -0
- package/dist/Chart/ChartDot.d.ts +18 -0
- package/dist/Chart/ChartDot.d.ts.map +1 -0
- package/dist/Chart/ChartDot.js +43 -0
- package/dist/Chart/ChartDotGL.d.ts +16 -0
- package/dist/Chart/ChartDotGL.d.ts.map +1 -0
- package/dist/Chart/ChartDotGL.js +135 -0
- package/dist/Chart/ChartDotGLInteractive.d.ts +41 -0
- package/dist/Chart/ChartDotGLInteractive.d.ts.map +1 -0
- package/dist/Chart/ChartDotGLInteractive.js +446 -0
- package/dist/Chart/ChartErrorBar.d.ts +23 -0
- package/dist/Chart/ChartErrorBar.d.ts.map +1 -0
- package/dist/Chart/ChartErrorBar.js +68 -0
- package/dist/Chart/ChartGrid.d.ts +17 -0
- package/dist/Chart/ChartGrid.d.ts.map +1 -0
- package/dist/Chart/ChartGrid.js +67 -0
- package/dist/Chart/ChartHeatmapGL.d.ts +10 -0
- package/dist/Chart/ChartHeatmapGL.d.ts.map +1 -0
- package/dist/Chart/ChartHeatmapGL.js +171 -0
- package/dist/Chart/ChartLegend.d.ts +60 -0
- package/dist/Chart/ChartLegend.d.ts.map +1 -0
- package/dist/Chart/ChartLegend.js +161 -0
- package/dist/Chart/ChartLine.d.ts +23 -0
- package/dist/Chart/ChartLine.d.ts.map +1 -0
- package/dist/Chart/ChartLine.js +64 -0
- package/dist/Chart/ChartReferenceLine.d.ts +11 -0
- package/dist/Chart/ChartReferenceLine.d.ts.map +1 -0
- package/dist/Chart/ChartReferenceLine.js +109 -0
- package/dist/Chart/ChartSelect.d.ts +9 -0
- package/dist/Chart/ChartSelect.d.ts.map +1 -0
- package/dist/Chart/ChartSelect.js +90 -0
- package/dist/Chart/ChartStreamGL.d.ts +17 -0
- package/dist/Chart/ChartStreamGL.d.ts.map +1 -0
- package/dist/Chart/ChartStreamGL.js +157 -0
- package/dist/Chart/ChartTooltip.d.ts +85 -0
- package/dist/Chart/ChartTooltip.d.ts.map +1 -0
- package/dist/Chart/ChartTooltip.js +335 -0
- package/dist/Chart/ChartZoom.d.ts +23 -0
- package/dist/Chart/ChartZoom.d.ts.map +1 -0
- package/dist/Chart/ChartZoom.js +314 -0
- package/dist/Chart/formatters.d.ts +33 -0
- package/dist/Chart/formatters.d.ts.map +1 -0
- package/dist/Chart/formatters.js +101 -0
- package/dist/Chart/getChartColors.d.ts +56 -0
- package/dist/Chart/getChartColors.d.ts.map +1 -0
- package/dist/Chart/getChartColors.js +150 -0
- package/dist/Chart/index.d.ts +29 -0
- package/dist/Chart/index.d.ts.map +1 -0
- package/dist/Chart/index.js +29 -0
- package/dist/Chart/m4.d.ts +36 -0
- package/dist/Chart/m4.d.ts.map +1 -0
- package/dist/Chart/m4.js +106 -0
- package/dist/Chart/types.d.ts +55 -0
- package/dist/Chart/types.d.ts.map +1 -0
- package/dist/Chart/types.js +1 -0
- package/dist/Chart/useChartColors.d.ts +16 -0
- package/dist/Chart/useChartColors.d.ts.map +1 -0
- package/dist/Chart/useChartColors.js +30 -0
- package/dist/Chart/useChartRange.d.ts +50 -0
- package/dist/Chart/useChartRange.d.ts.map +1 -0
- package/dist/Chart/useChartRange.js +90 -0
- package/dist/Chart/utils.d.ts +15 -0
- package/dist/Chart/utils.d.ts.map +1 -0
- package/dist/Chart/utils.js +24 -0
- package/dist/Chart/webgl.d.ts +62 -0
- package/dist/Chart/webgl.d.ts.map +1 -0
- package/dist/Chart/webgl.js +169 -0
- package/dist/ChartV2/Chart.d.ts +32 -0
- package/dist/ChartV2/Chart.d.ts.map +1 -0
- package/dist/ChartV2/Chart.js +281 -0
- package/dist/ChartV2/ChartAxis.d.ts +36 -0
- package/dist/ChartV2/ChartAxis.d.ts.map +1 -0
- package/dist/ChartV2/ChartAxis.js +161 -0
- package/dist/ChartV2/ChartGrid.d.ts +20 -0
- package/dist/ChartV2/ChartGrid.d.ts.map +1 -0
- package/dist/ChartV2/ChartGrid.js +76 -0
- package/dist/ChartV2/ChartLegend.d.ts +14 -0
- package/dist/ChartV2/ChartLegend.d.ts.map +1 -0
- package/dist/ChartV2/ChartLegend.js +54 -0
- package/dist/ChartV2/ChartSwatch.d.ts +36 -0
- package/dist/ChartV2/ChartSwatch.d.ts.map +1 -0
- package/dist/ChartV2/ChartSwatch.js +82 -0
- package/dist/ChartV2/ChartTooltip.d.ts +46 -0
- package/dist/ChartV2/ChartTooltip.d.ts.map +1 -0
- package/dist/ChartV2/ChartTooltip.js +267 -0
- package/dist/ChartV2/ChartV2Context.d.ts +4 -0
- package/dist/ChartV2/ChartV2Context.d.ts.map +1 -0
- package/dist/ChartV2/ChartV2Context.js +12 -0
- package/dist/ChartV2/index.d.ts +13 -0
- package/dist/ChartV2/index.d.ts.map +1 -0
- package/dist/ChartV2/index.js +10 -0
- package/dist/ChartV2/layout.d.ts +25 -0
- package/dist/ChartV2/layout.d.ts.map +1 -0
- package/dist/ChartV2/layout.js +195 -0
- package/dist/ChartV2/legend.d.ts +18 -0
- package/dist/ChartV2/legend.d.ts.map +1 -0
- package/dist/ChartV2/legend.js +24 -0
- package/dist/ChartV2/marks/area.d.ts +19 -0
- package/dist/ChartV2/marks/area.d.ts.map +1 -0
- package/dist/ChartV2/marks/area.js +109 -0
- package/dist/ChartV2/marks/band.d.ts +9 -0
- package/dist/ChartV2/marks/band.d.ts.map +1 -0
- package/dist/ChartV2/marks/band.js +59 -0
- package/dist/ChartV2/marks/bar.d.ts +17 -0
- package/dist/ChartV2/marks/bar.d.ts.map +1 -0
- package/dist/ChartV2/marks/bar.js +120 -0
- package/dist/ChartV2/marks/candlestick.d.ts +15 -0
- package/dist/ChartV2/marks/candlestick.d.ts.map +1 -0
- package/dist/ChartV2/marks/candlestick.js +83 -0
- package/dist/ChartV2/marks/dot.d.ts +15 -0
- package/dist/ChartV2/marks/dot.d.ts.map +1 -0
- package/dist/ChartV2/marks/dot.js +65 -0
- package/dist/ChartV2/marks/dotGL.d.ts +16 -0
- package/dist/ChartV2/marks/dotGL.d.ts.map +1 -0
- package/dist/ChartV2/marks/dotGL.js +178 -0
- package/dist/ChartV2/marks/dotGLInteractive.d.ts +30 -0
- package/dist/ChartV2/marks/dotGLInteractive.d.ts.map +1 -0
- package/dist/ChartV2/marks/dotGLInteractive.js +464 -0
- package/dist/ChartV2/marks/errorBar.d.ts +27 -0
- package/dist/ChartV2/marks/errorBar.d.ts.map +1 -0
- package/dist/ChartV2/marks/errorBar.js +87 -0
- package/dist/ChartV2/marks/heatmapGL.d.ts +23 -0
- package/dist/ChartV2/marks/heatmapGL.d.ts.map +1 -0
- package/dist/ChartV2/marks/heatmapGL.js +242 -0
- package/dist/ChartV2/marks/index.d.ts +13 -0
- package/dist/ChartV2/marks/index.d.ts.map +1 -0
- package/dist/ChartV2/marks/index.js +14 -0
- package/dist/ChartV2/marks/line.d.ts +18 -0
- package/dist/ChartV2/marks/line.d.ts.map +1 -0
- package/dist/ChartV2/marks/line.js +76 -0
- package/dist/ChartV2/marks/referenceLine.d.ts +35 -0
- package/dist/ChartV2/marks/referenceLine.d.ts.map +1 -0
- package/dist/ChartV2/marks/referenceLine.js +186 -0
- package/dist/ChartV2/marks/streamGL.d.ts +36 -0
- package/dist/ChartV2/marks/streamGL.d.ts.map +1 -0
- package/dist/ChartV2/marks/streamGL.js +204 -0
- package/dist/ChartV2/tooltip.d.ts +38 -0
- package/dist/ChartV2/tooltip.d.ts.map +1 -0
- package/dist/ChartV2/tooltip.js +54 -0
- package/dist/ChartV2/types.d.ts +115 -0
- package/dist/ChartV2/types.d.ts.map +1 -0
- package/dist/ChartV2/types.js +35 -0
- package/dist/ChatReasoning/ChatReasoning.d.ts +51 -0
- package/dist/ChatReasoning/ChatReasoning.d.ts.map +1 -0
- package/dist/ChatReasoning/ChatReasoning.js +236 -0
- package/dist/CircularProgress/CircularProgress.d.ts +101 -0
- package/dist/CircularProgress/CircularProgress.d.ts.map +1 -0
- package/dist/CircularProgress/CircularProgress.js +263 -0
- package/dist/CircularProgress/index.d.ts +6 -0
- package/dist/CircularProgress/index.d.ts.map +1 -0
- package/dist/CircularProgress/index.js +8 -0
- package/dist/CodeBlock/index.d.ts +8 -0
- package/dist/CodeBlock/index.d.ts.map +1 -0
- package/dist/CodeBlock/index.js +9 -0
- package/dist/CodeEditor/CodeEditor.d.ts +46 -0
- package/dist/CodeEditor/CodeEditor.d.ts.map +1 -0
- package/dist/CodeEditor/CodeEditor.js +396 -0
- package/dist/CodeEditor/index.d.ts +6 -0
- package/dist/CodeEditor/index.d.ts.map +1 -0
- package/dist/CodeEditor/index.js +7 -0
- package/dist/Radial/RadialArea.d.ts +25 -0
- package/dist/Radial/RadialArea.d.ts.map +1 -0
- package/dist/Radial/RadialArea.js +91 -0
- package/dist/Radial/RadialAxis.d.ts +14 -0
- package/dist/Radial/RadialAxis.d.ts.map +1 -0
- package/dist/Radial/RadialAxis.js +55 -0
- package/dist/Radial/RadialChart.d.ts +70 -0
- package/dist/Radial/RadialChart.d.ts.map +1 -0
- package/dist/Radial/RadialChart.js +174 -0
- package/dist/Radial/RadialContext.d.ts +5 -0
- package/dist/Radial/RadialContext.d.ts.map +1 -0
- package/dist/Radial/RadialContext.js +19 -0
- package/dist/Radial/RadialGrid.d.ts +14 -0
- package/dist/Radial/RadialGrid.d.ts.map +1 -0
- package/dist/Radial/RadialGrid.js +70 -0
- package/dist/Radial/RadialSlice.d.ts +23 -0
- package/dist/Radial/RadialSlice.d.ts.map +1 -0
- package/dist/Radial/RadialSlice.js +85 -0
- package/dist/Radial/RadialTooltip.d.ts +44 -0
- package/dist/Radial/RadialTooltip.d.ts.map +1 -0
- package/dist/Radial/RadialTooltip.js +284 -0
- package/dist/Radial/index.d.ts +9 -0
- package/dist/Radial/index.d.ts.map +1 -0
- package/dist/Radial/index.js +9 -0
- package/dist/Radial/types.d.ts +39 -0
- package/dist/Radial/types.d.ts.map +1 -0
- package/dist/Radial/types.js +1 -0
- package/dist/SVGIcon/SVGIcon.d.ts +87 -0
- package/dist/SVGIcon/SVGIcon.d.ts.map +1 -0
- package/dist/SVGIcon/SVGIcon.js +299 -0
- package/dist/SVGIcon/icons.d.ts +49 -0
- package/dist/SVGIcon/icons.d.ts.map +1 -0
- package/dist/SVGIcon/icons.js +326 -0
- package/dist/SVGIcon/index.d.ts +15 -0
- package/dist/SVGIcon/index.d.ts.map +1 -0
- package/dist/SVGIcon/index.js +22 -0
- package/dist/SVGIcon/pathTransforms.d.ts +35 -0
- package/dist/SVGIcon/pathTransforms.d.ts.map +1 -0
- package/dist/SVGIcon/pathTransforms.js +644 -0
- package/dist/SVGIcon/tokens.stylex.d.ts +37 -0
- package/dist/SVGIcon/tokens.stylex.d.ts.map +1 -0
- package/dist/SVGIcon/tokens.stylex.js +40 -0
- package/dist/SVGIcon/variations.stylex.d.ts +44 -0
- package/dist/SVGIcon/variations.stylex.d.ts.map +1 -0
- package/dist/SVGIcon/variations.stylex.js +119 -0
- package/dist/SVGIcon/xif-examples.d.ts +22 -0
- package/dist/SVGIcon/xif-examples.d.ts.map +1 -0
- package/dist/SVGIcon/xif-examples.js +202 -0
- package/dist/SVGIcon/xif-types.d.ts +129 -0
- package/dist/SVGIcon/xif-types.d.ts.map +1 -0
- package/dist/SVGIcon/xif-types.js +1 -0
- package/dist/Sankey/SankeyChart.d.ts +72 -0
- package/dist/Sankey/SankeyChart.d.ts.map +1 -0
- package/dist/Sankey/SankeyChart.js +162 -0
- package/dist/Sankey/SankeyContext.d.ts +5 -0
- package/dist/Sankey/SankeyContext.d.ts.map +1 -0
- package/dist/Sankey/SankeyContext.js +20 -0
- package/dist/Sankey/SankeyGrid.d.ts +20 -0
- package/dist/Sankey/SankeyGrid.d.ts.map +1 -0
- package/dist/Sankey/SankeyGrid.js +53 -0
- package/dist/Sankey/SankeyLabel.d.ts +11 -0
- package/dist/Sankey/SankeyLabel.d.ts.map +1 -0
- package/dist/Sankey/SankeyLabel.js +179 -0
- package/dist/Sankey/SankeyLink.d.ts +29 -0
- package/dist/Sankey/SankeyLink.d.ts.map +1 -0
- package/dist/Sankey/SankeyLink.js +139 -0
- package/dist/Sankey/SankeyNode.d.ts +15 -0
- package/dist/Sankey/SankeyNode.d.ts.map +1 -0
- package/dist/Sankey/SankeyNode.js +56 -0
- package/dist/Sankey/index.d.ts +8 -0
- package/dist/Sankey/index.d.ts.map +1 -0
- package/dist/Sankey/index.js +8 -0
- package/dist/Sankey/layout.d.ts +26 -0
- package/dist/Sankey/layout.d.ts.map +1 -0
- package/dist/Sankey/layout.js +157 -0
- package/dist/Sankey/types.d.ts +84 -0
- package/dist/Sankey/types.d.ts.map +1 -0
- package/dist/Sankey/types.js +1 -0
- package/dist/Schedule/CalendarEvent.d.ts +36 -0
- package/dist/Schedule/CalendarEvent.d.ts.map +1 -0
- package/dist/Schedule/CalendarEvent.js +35 -0
- package/dist/Schedule/DayView.d.ts +8 -0
- package/dist/Schedule/DayView.d.ts.map +1 -0
- package/dist/Schedule/DayView.js +105 -0
- package/dist/Schedule/ListView.d.ts +6 -0
- package/dist/Schedule/ListView.d.ts.map +1 -0
- package/dist/Schedule/ListView.js +171 -0
- package/dist/Schedule/MonthlyView.d.ts +6 -0
- package/dist/Schedule/MonthlyView.d.ts.map +1 -0
- package/dist/Schedule/MonthlyView.js +270 -0
- package/dist/Schedule/Schedule.d.ts +22 -0
- package/dist/Schedule/Schedule.d.ts.map +1 -0
- package/dist/Schedule/Schedule.js +185 -0
- package/dist/Schedule/TimeGridView.d.ts +12 -0
- package/dist/Schedule/TimeGridView.d.ts.map +1 -0
- package/dist/Schedule/TimeGridView.js +364 -0
- package/dist/Schedule/WeeklyView.d.ts +9 -0
- package/dist/Schedule/WeeklyView.d.ts.map +1 -0
- package/dist/Schedule/WeeklyView.js +112 -0
- package/dist/Schedule/context.d.ts +20 -0
- package/dist/Schedule/context.d.ts.map +1 -0
- package/dist/Schedule/context.js +19 -0
- package/dist/Schedule/dateMath.d.ts +21 -0
- package/dist/Schedule/dateMath.d.ts.map +1 -0
- package/dist/Schedule/dateMath.js +63 -0
- package/dist/Schedule/index.d.ts +19 -0
- package/dist/Schedule/index.d.ts.map +1 -0
- package/dist/Schedule/index.js +17 -0
- package/dist/Schedule/plugins/PaginationPlugin.d.ts +7 -0
- package/dist/Schedule/plugins/PaginationPlugin.d.ts.map +1 -0
- package/dist/Schedule/plugins/PaginationPlugin.js +81 -0
- package/dist/Schedule/plugins/ViewSelectorPlugin.d.ts +11 -0
- package/dist/Schedule/plugins/ViewSelectorPlugin.d.ts.map +1 -0
- package/dist/Schedule/plugins/ViewSelectorPlugin.js +78 -0
- package/dist/Schedule/plugins/index.d.ts +5 -0
- package/dist/Schedule/plugins/index.d.ts.map +1 -0
- package/dist/Schedule/plugins/index.js +14 -0
- package/dist/Schedule/shared.d.ts +923 -0
- package/dist/Schedule/shared.d.ts.map +1 -0
- package/dist/Schedule/shared.js +1325 -0
- package/dist/Schedule/types.d.ts +51 -0
- package/dist/Schedule/types.d.ts.map +1 -0
- package/dist/Schedule/types.js +1 -0
- package/dist/Schedule/useCurrentTime.d.ts +3 -0
- package/dist/Schedule/useCurrentTime.d.ts.map +1 -0
- package/dist/Schedule/useCurrentTime.js +43 -0
- package/dist/Schedule/zonedDateTime.d.ts +20 -0
- package/dist/Schedule/zonedDateTime.d.ts.map +1 -0
- package/dist/Schedule/zonedDateTime.js +31 -0
- package/dist/Stepper/Step.d.ts +120 -0
- package/dist/Stepper/Step.d.ts.map +1 -0
- package/dist/Stepper/Step.js +573 -0
- package/dist/Stepper/StepStatus.d.ts +24 -0
- package/dist/Stepper/StepStatus.d.ts.map +1 -0
- package/dist/Stepper/StepStatus.js +1 -0
- package/dist/Stepper/Stepper.d.ts +77 -0
- package/dist/Stepper/Stepper.d.ts.map +1 -0
- package/dist/Stepper/Stepper.js +104 -0
- package/dist/Stepper/StepperContext.d.ts +12 -0
- package/dist/Stepper/StepperContext.d.ts.map +1 -0
- package/dist/Stepper/StepperContext.js +24 -0
- package/dist/Stepper/index.d.ts +8 -0
- package/dist/Stepper/index.d.ts.map +1 -0
- package/dist/Stepper/index.js +7 -0
- package/dist/ThreeD/ThreeDAxis.d.ts +6 -0
- package/dist/ThreeD/ThreeDAxis.d.ts.map +1 -0
- package/dist/ThreeD/ThreeDAxis.js +75 -0
- package/dist/ThreeD/ThreeDBar.d.ts +7 -0
- package/dist/ThreeD/ThreeDBar.d.ts.map +1 -0
- package/dist/ThreeD/ThreeDBar.js +98 -0
- package/dist/ThreeD/ThreeDChart.d.ts +24 -0
- package/dist/ThreeD/ThreeDChart.d.ts.map +1 -0
- package/dist/ThreeD/ThreeDChart.js +202 -0
- package/dist/ThreeD/ThreeDContext.d.ts +5 -0
- package/dist/ThreeD/ThreeDContext.d.ts.map +1 -0
- package/dist/ThreeD/ThreeDContext.js +19 -0
- package/dist/ThreeD/ThreeDGrid.d.ts +5 -0
- package/dist/ThreeD/ThreeDGrid.d.ts.map +1 -0
- package/dist/ThreeD/ThreeDGrid.js +55 -0
- package/dist/ThreeD/ThreeDScatter.d.ts +7 -0
- package/dist/ThreeD/ThreeDScatter.d.ts.map +1 -0
- package/dist/ThreeD/ThreeDScatter.js +57 -0
- package/dist/ThreeD/ThreeDScatterGL.d.ts +7 -0
- package/dist/ThreeD/ThreeDScatterGL.d.ts.map +1 -0
- package/dist/ThreeD/ThreeDScatterGL.js +243 -0
- package/dist/ThreeD/ThreeDSurface.d.ts +15 -0
- package/dist/ThreeD/ThreeDSurface.d.ts.map +1 -0
- package/dist/ThreeD/ThreeDSurface.js +97 -0
- package/dist/ThreeD/index.d.ts +10 -0
- package/dist/ThreeD/index.d.ts.map +1 -0
- package/dist/ThreeD/index.js +10 -0
- package/dist/ThreeD/types.d.ts +57 -0
- package/dist/ThreeD/types.d.ts.map +1 -0
- package/dist/ThreeD/types.js +1 -0
- package/dist/index.d.ts +26 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +47 -0
- package/dist/lab.css +423 -0
- package/package.json +69 -4
- package/src/Chart/Chart.tsx +312 -0
- package/src/Chart/ChartArea.doc.mjs +16 -0
- package/src/Chart/ChartArea.tsx +91 -0
- package/src/Chart/ChartAxis.tsx +186 -0
- package/src/Chart/ChartBar.doc.mjs +16 -0
- package/src/Chart/ChartBar.tsx +71 -0
- package/src/Chart/ChartBrush.tsx +237 -0
- package/src/Chart/ChartCandlestick.doc.mjs +16 -0
- package/src/Chart/ChartCandlestick.tsx +186 -0
- package/src/Chart/ChartContext.ts +23 -0
- package/src/Chart/ChartDot.doc.mjs +16 -0
- package/src/Chart/ChartDot.tsx +44 -0
- package/src/Chart/ChartDotGL.doc.mjs +16 -0
- package/src/Chart/ChartDotGL.tsx +151 -0
- package/src/Chart/ChartDotGLInteractive.doc.mjs +16 -0
- package/src/Chart/ChartDotGLInteractive.tsx +519 -0
- package/src/Chart/ChartErrorBar.tsx +84 -0
- package/src/Chart/ChartGrid.tsx +86 -0
- package/src/Chart/ChartHeatmapGL.doc.mjs +16 -0
- package/src/Chart/ChartHeatmapGL.tsx +219 -0
- package/src/Chart/ChartLegend.tsx +181 -0
- package/src/Chart/ChartLine.doc.mjs +16 -0
- package/src/Chart/ChartLine.tsx +70 -0
- package/src/Chart/ChartReferenceLine.tsx +76 -0
- package/src/Chart/ChartSelect.tsx +111 -0
- package/src/Chart/ChartStreamGL.doc.mjs +16 -0
- package/src/Chart/ChartStreamGL.tsx +189 -0
- package/src/Chart/ChartTooltip.tsx +451 -0
- package/src/Chart/ChartZoom.tsx +400 -0
- package/src/Chart/formatters.ts +95 -0
- package/src/Chart/getChartColors.ts +249 -0
- package/src/Chart/index.ts +90 -0
- package/src/Chart/m4.test.ts +66 -0
- package/src/Chart/m4.ts +128 -0
- package/src/Chart/types.ts +64 -0
- package/src/Chart/useChartColors.ts +34 -0
- package/src/Chart/useChartRange.test.ts +101 -0
- package/src/Chart/useChartRange.ts +146 -0
- package/src/Chart/utils.ts +31 -0
- package/src/Chart/webgl.ts +192 -0
- package/src/ChartV2/Chart.tsx +348 -0
- package/src/ChartV2/ChartAxis.tsx +209 -0
- package/src/ChartV2/ChartGrid.tsx +99 -0
- package/src/ChartV2/ChartLegend.tsx +69 -0
- package/src/ChartV2/ChartSwatch.doc.mjs +17 -0
- package/src/ChartV2/ChartSwatch.tsx +86 -0
- package/src/ChartV2/ChartTooltip.tsx +382 -0
- package/src/ChartV2/ChartV2.doc.mjs +16 -0
- package/src/ChartV2/ChartV2Context.ts +15 -0
- package/src/ChartV2/index.ts +62 -0
- package/src/ChartV2/layout.ts +223 -0
- package/src/ChartV2/legend.ts +32 -0
- package/src/ChartV2/marks/area.tsx +122 -0
- package/src/ChartV2/marks/band.tsx +70 -0
- package/src/ChartV2/marks/bar.tsx +159 -0
- package/src/ChartV2/marks/candlestick.tsx +106 -0
- package/src/ChartV2/marks/dot.tsx +64 -0
- package/src/ChartV2/marks/dotGL.tsx +202 -0
- package/src/ChartV2/marks/dotGLInteractive.tsx +546 -0
- package/src/ChartV2/marks/errorBar.tsx +89 -0
- package/src/ChartV2/marks/heatmapGL.tsx +299 -0
- package/src/ChartV2/marks/index.ts +14 -0
- package/src/ChartV2/marks/line.tsx +94 -0
- package/src/ChartV2/marks/referenceLine.tsx +224 -0
- package/src/ChartV2/marks/streamGL.tsx +251 -0
- package/src/ChartV2/tooltip.ts +70 -0
- package/src/ChartV2/types.ts +129 -0
- package/src/ChatReasoning/ChatReasoning.doc.mjs +16 -0
- package/src/ChatReasoning/ChatReasoning.test.tsx +56 -0
- package/src/ChatReasoning/ChatReasoning.tsx +322 -0
- package/src/CircularProgress/CircularProgress.doc.mjs +174 -0
- package/src/CircularProgress/CircularProgress.test.tsx +157 -0
- package/src/CircularProgress/CircularProgress.tsx +373 -0
- package/src/CircularProgress/index.ts +15 -0
- package/src/CodeBlock/index.ts +10 -0
- package/src/CodeEditor/CodeEditor.doc.mjs +16 -0
- package/src/CodeEditor/CodeEditor.tsx +466 -0
- package/src/CodeEditor/index.ts +8 -0
- package/src/Radial/RadialArea.tsx +103 -0
- package/src/Radial/RadialAxis.tsx +60 -0
- package/src/Radial/RadialChart.doc.mjs +16 -0
- package/src/Radial/RadialChart.tsx +219 -0
- package/src/Radial/RadialContext.ts +22 -0
- package/src/Radial/RadialGrid.tsx +81 -0
- package/src/Radial/RadialSlice.tsx +130 -0
- package/src/Radial/RadialTooltip.tsx +347 -0
- package/src/Radial/index.ts +14 -0
- package/src/Radial/types.ts +46 -0
- package/src/SVGIcon/SVGIcon.doc.mjs +16 -0
- package/src/SVGIcon/SVGIcon.tsx +406 -0
- package/src/SVGIcon/icons.ts +283 -0
- package/src/SVGIcon/index.ts +73 -0
- package/src/SVGIcon/pathTransforms.ts +612 -0
- package/src/SVGIcon/tokens.stylex.ts +53 -0
- package/src/SVGIcon/variations.stylex.ts +122 -0
- package/src/SVGIcon/xif-examples.ts +191 -0
- package/src/SVGIcon/xif-types.ts +181 -0
- package/src/Sankey/SankeyChart.doc.mjs +16 -0
- package/src/Sankey/SankeyChart.tsx +220 -0
- package/src/Sankey/SankeyContext.ts +23 -0
- package/src/Sankey/SankeyGrid.tsx +69 -0
- package/src/Sankey/SankeyLabel.tsx +234 -0
- package/src/Sankey/SankeyLink.tsx +167 -0
- package/src/Sankey/SankeyNode.tsx +66 -0
- package/src/Sankey/index.ts +22 -0
- package/src/Sankey/layout.ts +219 -0
- package/src/Sankey/types.ts +93 -0
- package/src/Schedule/CalendarEvent.ts +74 -0
- package/src/Schedule/DayView.tsx +112 -0
- package/src/Schedule/ListView.tsx +236 -0
- package/src/Schedule/MonthlyView.tsx +401 -0
- package/src/Schedule/Schedule.doc.mjs +16 -0
- package/src/Schedule/Schedule.test.tsx +405 -0
- package/src/Schedule/Schedule.tsx +307 -0
- package/src/Schedule/TimeGridView.tsx +589 -0
- package/src/Schedule/WeeklyView.tsx +130 -0
- package/src/Schedule/context.tsx +49 -0
- package/src/Schedule/dateMath.ts +112 -0
- package/src/Schedule/index.ts +61 -0
- package/src/Schedule/plugins/PaginationPlugin.tsx +98 -0
- package/src/Schedule/plugins/ViewSelectorPlugin.tsx +128 -0
- package/src/Schedule/plugins/index.tsx +20 -0
- package/src/Schedule/shared.tsx +1304 -0
- package/src/Schedule/types.ts +86 -0
- package/src/Schedule/useCurrentTime.ts +50 -0
- package/src/Schedule/zonedDateTime.ts +71 -0
- package/src/Stepper/Step.doc.mjs +17 -0
- package/src/Stepper/Step.tsx +756 -0
- package/src/Stepper/StepStatus.ts +26 -0
- package/src/Stepper/Stepper.doc.mjs +265 -0
- package/src/Stepper/Stepper.test.tsx +281 -0
- package/src/Stepper/Stepper.tsx +157 -0
- package/src/Stepper/StepperContext.ts +43 -0
- package/src/Stepper/index.ts +14 -0
- package/src/ThreeD/3DBar.doc.mjs +16 -0
- package/src/ThreeD/3DChart.doc.mjs +16 -0
- package/src/ThreeD/3DScatter.doc.mjs +16 -0
- package/src/ThreeD/3DScatterGL.doc.mjs +16 -0
- package/src/ThreeD/3DSurface.doc.mjs +16 -0
- package/src/ThreeD/ThreeDAxis.tsx +86 -0
- package/src/ThreeD/ThreeDBar.tsx +130 -0
- package/src/ThreeD/ThreeDChart.tsx +262 -0
- package/src/ThreeD/ThreeDContext.ts +22 -0
- package/src/ThreeD/ThreeDGrid.tsx +68 -0
- package/src/ThreeD/ThreeDScatter.tsx +63 -0
- package/src/ThreeD/ThreeDScatterGL.tsx +270 -0
- package/src/ThreeD/ThreeDSurface.tsx +142 -0
- package/src/ThreeD/index.ts +11 -0
- package/src/ThreeD/projection.test.ts +132 -0
- package/src/ThreeD/types.ts +62 -0
- package/src/index.ts +250 -0
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export { Chart, type ChartProps, type YBaseline } from './Chart';
|
|
2
|
+
export { ChartAxis, type ChartAxisProps } from './ChartAxis';
|
|
3
|
+
export { compactNumber, currency, percent, shortDate, monthYear, } from './formatters';
|
|
4
|
+
export { ChartGrid, type ChartGridProps } from './ChartGrid';
|
|
5
|
+
export { ChartBar, type ChartBarProps } from './ChartBar';
|
|
6
|
+
export { ChartLine, type ChartLineProps } from './ChartLine';
|
|
7
|
+
export { ChartArea, type ChartAreaProps } from './ChartArea';
|
|
8
|
+
export { ChartErrorBar, type ChartErrorBarProps } from './ChartErrorBar';
|
|
9
|
+
export { ChartCandlestick, type ChartCandlestickProps, } from './ChartCandlestick';
|
|
10
|
+
export { ChartDot, type ChartDotProps } from './ChartDot';
|
|
11
|
+
export { ChartDotGL, type ChartDotGLProps } from './ChartDotGL';
|
|
12
|
+
export { ChartDotGLInteractive, type ChartDotGLInteractiveProps, } from './ChartDotGLInteractive';
|
|
13
|
+
export { ChartHeatmapGL, type ChartHeatmapGLProps, } from './ChartHeatmapGL';
|
|
14
|
+
export { ChartStreamGL, type ChartStreamGLProps, type ChartStreamGLHandle, } from './ChartStreamGL';
|
|
15
|
+
export { ChartTooltip, type ChartTooltipProps, type ChartCrosshairMode, } from './ChartTooltip';
|
|
16
|
+
export { ChartLegend, type ChartLegendProps, type ChartLegendItem, } from './ChartLegend';
|
|
17
|
+
export { useChart } from './ChartContext';
|
|
18
|
+
export type { ChartContext, ChartMargin, ChartScale, DataPoint } from './types';
|
|
19
|
+
export { m4Reduce, type M4Point } from './m4';
|
|
20
|
+
export { isBandScale, xPixel } from './utils';
|
|
21
|
+
export { useChartColors } from './useChartColors';
|
|
22
|
+
export { getChartColors, getChartColorsFromResolver, type ChartColorsAPI, type SequentialHue, type TokenResolver, } from './getChartColors';
|
|
23
|
+
export { useChartRange, type UseChartRangeOptions, type UseChartRangeReturn, } from './useChartRange';
|
|
24
|
+
export { hexToGL, getCanvasDPR, getWebGLContext, setupGLState, sizeCanvas, mountCanvasOverSVG, compileShader, createProgram as createGLProgram, CIRCLE_FRAG_BODY, POINT_SIZE_COMPENSATION, } from './webgl';
|
|
25
|
+
export { ChartBrush, type ChartBrushProps, type BrushMode, type BrushRange, } from './ChartBrush';
|
|
26
|
+
export { ChartZoom, type ChartZoomProps, type ZoomToolbarPosition, } from './ChartZoom';
|
|
27
|
+
export { ChartSelect, type ChartSelectProps } from './ChartSelect';
|
|
28
|
+
export { ChartReferenceLine, type ChartReferenceLineProps, } from './ChartReferenceLine';
|
|
29
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Chart/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,KAAK,EAAE,KAAK,UAAU,EAAE,KAAK,SAAS,EAAC,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAC,SAAS,EAAE,KAAK,cAAc,EAAC,MAAM,aAAa,CAAC;AAC3D,OAAO,EACL,aAAa,EACb,QAAQ,EACR,OAAO,EACP,SAAS,EACT,SAAS,GACV,MAAM,cAAc,CAAC;AACtB,OAAO,EAAC,SAAS,EAAE,KAAK,cAAc,EAAC,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAC,QAAQ,EAAE,KAAK,aAAa,EAAC,MAAM,YAAY,CAAC;AACxD,OAAO,EAAC,SAAS,EAAE,KAAK,cAAc,EAAC,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAC,SAAS,EAAE,KAAK,cAAc,EAAC,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAC,aAAa,EAAE,KAAK,kBAAkB,EAAC,MAAM,iBAAiB,CAAC;AACvE,OAAO,EACL,gBAAgB,EAChB,KAAK,qBAAqB,GAC3B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAC,QAAQ,EAAE,KAAK,aAAa,EAAC,MAAM,YAAY,CAAC;AACxD,OAAO,EAAC,UAAU,EAAE,KAAK,eAAe,EAAC,MAAM,cAAc,CAAC;AAC9D,OAAO,EACL,qBAAqB,EACrB,KAAK,0BAA0B,GAChC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,cAAc,EACd,KAAK,mBAAmB,GACzB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,aAAa,EACb,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,GACzB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,YAAY,EACZ,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,GACxB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,WAAW,EACX,KAAK,gBAAgB,EACrB,KAAK,eAAe,GACrB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAC,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AACxC,YAAY,EAAC,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAC,MAAM,SAAS,CAAC;AAC9E,OAAO,EAAC,QAAQ,EAAE,KAAK,OAAO,EAAC,MAAM,MAAM,CAAC;AAC5C,OAAO,EAAC,WAAW,EAAE,MAAM,EAAC,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAC;AAChD,OAAO,EACL,cAAc,EACd,0BAA0B,EAC1B,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,aAAa,GACnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,aAAa,EACb,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,GACzB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,OAAO,EACP,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,UAAU,EACV,kBAAkB,EAClB,aAAa,EACb,aAAa,IAAI,eAAe,EAChC,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,UAAU,EACV,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,UAAU,GAChB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,SAAS,EACT,KAAK,cAAc,EACnB,KAAK,mBAAmB,GACzB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAC,WAAW,EAAE,KAAK,gBAAgB,EAAC,MAAM,eAAe,CAAC;AACjE,OAAO,EACL,kBAAkB,EAClB,KAAK,uBAAuB,GAC7B,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
export { Chart } from "./Chart.js";
|
|
4
|
+
export { ChartAxis } from "./ChartAxis.js";
|
|
5
|
+
export { compactNumber, currency, percent, shortDate, monthYear } from "./formatters.js";
|
|
6
|
+
export { ChartGrid } from "./ChartGrid.js";
|
|
7
|
+
export { ChartBar } from "./ChartBar.js";
|
|
8
|
+
export { ChartLine } from "./ChartLine.js";
|
|
9
|
+
export { ChartArea } from "./ChartArea.js";
|
|
10
|
+
export { ChartErrorBar } from "./ChartErrorBar.js";
|
|
11
|
+
export { ChartCandlestick } from "./ChartCandlestick.js";
|
|
12
|
+
export { ChartDot } from "./ChartDot.js";
|
|
13
|
+
export { ChartDotGL } from "./ChartDotGL.js";
|
|
14
|
+
export { ChartDotGLInteractive } from "./ChartDotGLInteractive.js";
|
|
15
|
+
export { ChartHeatmapGL } from "./ChartHeatmapGL.js";
|
|
16
|
+
export { ChartStreamGL } from "./ChartStreamGL.js";
|
|
17
|
+
export { ChartTooltip } from "./ChartTooltip.js";
|
|
18
|
+
export { ChartLegend } from "./ChartLegend.js";
|
|
19
|
+
export { useChart } from "./ChartContext.js";
|
|
20
|
+
export { m4Reduce } from "./m4.js";
|
|
21
|
+
export { isBandScale, xPixel } from "./utils.js";
|
|
22
|
+
export { useChartColors } from "./useChartColors.js";
|
|
23
|
+
export { getChartColors, getChartColorsFromResolver } from "./getChartColors.js";
|
|
24
|
+
export { useChartRange } from "./useChartRange.js";
|
|
25
|
+
export { hexToGL, getCanvasDPR, getWebGLContext, setupGLState, sizeCanvas, mountCanvasOverSVG, compileShader, createProgram as createGLProgram, CIRCLE_FRAG_BODY, POINT_SIZE_COMPENSATION } from "./webgl.js";
|
|
26
|
+
export { ChartBrush } from "./ChartBrush.js";
|
|
27
|
+
export { ChartZoom } from "./ChartZoom.js";
|
|
28
|
+
export { ChartSelect } from "./ChartSelect.js";
|
|
29
|
+
export { ChartReferenceLine } from "./ChartReferenceLine.js";
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file m4.ts
|
|
3
|
+
* @output m4Reduce — pixel-aware time series data reduction
|
|
4
|
+
* @position Utility consumed by chart line/stream components for large datasets
|
|
5
|
+
*
|
|
6
|
+
* Implements the M4 algorithm from "M4: A Visualization-Oriented Time Series
|
|
7
|
+
* Data Aggregation" (Jugel et al., VLDB 2014).
|
|
8
|
+
*
|
|
9
|
+
* For each pixel column, retains 4 values: first, last, min, max.
|
|
10
|
+
* This is the minimum set needed to visually reproduce a line chart at the
|
|
11
|
+
* target resolution. A 1M-point dataset becomes ~4×width points.
|
|
12
|
+
*/
|
|
13
|
+
export interface M4Point {
|
|
14
|
+
x: number;
|
|
15
|
+
y: number;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Reduce a time-series dataset to at most 4 points per pixel column.
|
|
19
|
+
*
|
|
20
|
+
* The output preserves all visual features (peaks, troughs, trends) that
|
|
21
|
+
* are distinguishable at the given pixel width. Points within the same
|
|
22
|
+
* pixel column are collapsed to first/min/max/last.
|
|
23
|
+
*
|
|
24
|
+
* @param data — input points, must be sorted by x ascending
|
|
25
|
+
* @param width — chart width in pixels (determines bucket count)
|
|
26
|
+
* @param xDomain — [min, max] of the x-axis. If omitted, derived from data.
|
|
27
|
+
* @returns reduced points (at most 4 × width, typically much fewer)
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```
|
|
31
|
+
* // Reduce 100k points to fit a 600px chart
|
|
32
|
+
* const reduced = m4Reduce(rawData, 600);
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export declare function m4Reduce(data: M4Point[], width: number, xDomain?: [number, number]): M4Point[];
|
|
36
|
+
//# sourceMappingURL=m4.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"m4.d.ts","sourceRoot":"","sources":["../../src/Chart/m4.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AAEH,MAAM,WAAW,OAAO;IACtB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,QAAQ,CACtB,IAAI,EAAE,OAAO,EAAE,EACf,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GACzB,OAAO,EAAE,CAqFX"}
|
package/dist/Chart/m4.js
ADDED
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @file m4.ts
|
|
5
|
+
* @output m4Reduce — pixel-aware time series data reduction
|
|
6
|
+
* @position Utility consumed by chart line/stream components for large datasets
|
|
7
|
+
*
|
|
8
|
+
* Implements the M4 algorithm from "M4: A Visualization-Oriented Time Series
|
|
9
|
+
* Data Aggregation" (Jugel et al., VLDB 2014).
|
|
10
|
+
*
|
|
11
|
+
* For each pixel column, retains 4 values: first, last, min, max.
|
|
12
|
+
* This is the minimum set needed to visually reproduce a line chart at the
|
|
13
|
+
* target resolution. A 1M-point dataset becomes ~4×width points.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Reduce a time-series dataset to at most 4 points per pixel column.
|
|
18
|
+
*
|
|
19
|
+
* The output preserves all visual features (peaks, troughs, trends) that
|
|
20
|
+
* are distinguishable at the given pixel width. Points within the same
|
|
21
|
+
* pixel column are collapsed to first/min/max/last.
|
|
22
|
+
*
|
|
23
|
+
* @param data — input points, must be sorted by x ascending
|
|
24
|
+
* @param width — chart width in pixels (determines bucket count)
|
|
25
|
+
* @param xDomain — [min, max] of the x-axis. If omitted, derived from data.
|
|
26
|
+
* @returns reduced points (at most 4 × width, typically much fewer)
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ```
|
|
30
|
+
* // Reduce 100k points to fit a 600px chart
|
|
31
|
+
* const reduced = m4Reduce(rawData, 600);
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
export function m4Reduce(data, width, xDomain) {
|
|
35
|
+
if (data.length === 0 || width <= 0) {
|
|
36
|
+
return [];
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// If data fits without reduction, return as-is
|
|
40
|
+
if (data.length <= width * 4) {
|
|
41
|
+
return data;
|
|
42
|
+
}
|
|
43
|
+
const xMin = xDomain ? xDomain[0] : data[0].x;
|
|
44
|
+
const xMax = xDomain ? xDomain[1] : data[data.length - 1].x;
|
|
45
|
+
const xRange = xMax - xMin;
|
|
46
|
+
if (xRange <= 0) {
|
|
47
|
+
return [data[0]];
|
|
48
|
+
}
|
|
49
|
+
const bucketCount = Math.ceil(width);
|
|
50
|
+
|
|
51
|
+
// Each bucket tracks: first, last, min, max
|
|
52
|
+
|
|
53
|
+
const buckets = Array.from({
|
|
54
|
+
length: bucketCount
|
|
55
|
+
}, () => ({
|
|
56
|
+
first: null,
|
|
57
|
+
last: null,
|
|
58
|
+
min: null,
|
|
59
|
+
max: null
|
|
60
|
+
}));
|
|
61
|
+
|
|
62
|
+
// Single pass through the data
|
|
63
|
+
for (const point of data) {
|
|
64
|
+
const bucketIdx = Math.min(bucketCount - 1, Math.floor((point.x - xMin) / xRange * bucketCount));
|
|
65
|
+
const bucket = buckets[bucketIdx];
|
|
66
|
+
if (!bucket.first) {
|
|
67
|
+
bucket.first = point;
|
|
68
|
+
bucket.last = point;
|
|
69
|
+
bucket.min = point;
|
|
70
|
+
bucket.max = point;
|
|
71
|
+
} else {
|
|
72
|
+
bucket.last = point;
|
|
73
|
+
if (bucket.min && point.y < bucket.min.y) {
|
|
74
|
+
bucket.min = point;
|
|
75
|
+
}
|
|
76
|
+
if (bucket.max && point.y > bucket.max.y) {
|
|
77
|
+
bucket.max = point;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// Emit points in order: first, min, max, last per bucket
|
|
83
|
+
// Sort min/max by x within bucket to maintain temporal order
|
|
84
|
+
const result = [];
|
|
85
|
+
for (const bucket of buckets) {
|
|
86
|
+
if (!bucket.first || !bucket.min || !bucket.max || !bucket.last) {
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
const points = [bucket.first, bucket.min, bucket.max, bucket.last];
|
|
90
|
+
|
|
91
|
+
// Deduplicate (some may be the same point)
|
|
92
|
+
const seen = new Set();
|
|
93
|
+
const unique = [];
|
|
94
|
+
for (const p of points) {
|
|
95
|
+
if (!seen.has(p)) {
|
|
96
|
+
seen.add(p);
|
|
97
|
+
unique.push(p);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
// Sort by x to maintain line continuity
|
|
102
|
+
unique.sort((a, b) => a.x - b.x);
|
|
103
|
+
result.push(...unique);
|
|
104
|
+
}
|
|
105
|
+
return result;
|
|
106
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file types.ts
|
|
3
|
+
* @output Chart types, scale context, and margin convention
|
|
4
|
+
* @position Foundation types consumed by all chart sub-components
|
|
5
|
+
*/
|
|
6
|
+
import type { ScaleLinear, ScaleBand, ScaleTime } from 'd3-scale';
|
|
7
|
+
/** Margin convention for chart SVG */
|
|
8
|
+
export interface ChartMargin {
|
|
9
|
+
top: number;
|
|
10
|
+
right: number;
|
|
11
|
+
bottom: number;
|
|
12
|
+
left: number;
|
|
13
|
+
}
|
|
14
|
+
/** Any d3 scale that maps a domain to a pixel range */
|
|
15
|
+
export type ChartScale = ScaleLinear<number, number> | ScaleBand<string> | ScaleTime<number, number>;
|
|
16
|
+
/** Resolved data coordinates from pixel position */
|
|
17
|
+
export interface DataPoint {
|
|
18
|
+
/** X value in data space (number for linear, string for band) */
|
|
19
|
+
x: number | string | null;
|
|
20
|
+
/** Y value in data space */
|
|
21
|
+
y: number;
|
|
22
|
+
/** Pixel x within the plot area */
|
|
23
|
+
px: number;
|
|
24
|
+
/** Pixel y within the plot area */
|
|
25
|
+
py: number;
|
|
26
|
+
}
|
|
27
|
+
/** Scale context provided by Chart to children */
|
|
28
|
+
export interface ChartContext {
|
|
29
|
+
/** Inner width (SVG width minus margins) */
|
|
30
|
+
width: number;
|
|
31
|
+
/** Inner height (SVG height minus margins) */
|
|
32
|
+
height: number;
|
|
33
|
+
/** Margin offsets */
|
|
34
|
+
margin: ChartMargin;
|
|
35
|
+
/** The data key used for x-axis values */
|
|
36
|
+
xKey: string;
|
|
37
|
+
/** The full dataset */
|
|
38
|
+
data: Record<string, unknown>[];
|
|
39
|
+
/** X scale — band for categorical, linear/time for continuous */
|
|
40
|
+
xScale: ChartScale;
|
|
41
|
+
/** Y scale — typically linear */
|
|
42
|
+
yScale: ScaleLinear<number, number>;
|
|
43
|
+
/** Ref to the SVG element — used for coordinate transforms */
|
|
44
|
+
svgRef: React.RefObject<SVGSVGElement | null>;
|
|
45
|
+
/**
|
|
46
|
+
* Convert a pointer event to data coordinates.
|
|
47
|
+
* Handles SVG coordinate transform (margin offset) automatically.
|
|
48
|
+
*/
|
|
49
|
+
pointerToData: (e: React.PointerEvent) => DataPoint;
|
|
50
|
+
/**
|
|
51
|
+
* Convert pixel coordinates (relative to plot area) to data values.
|
|
52
|
+
*/
|
|
53
|
+
pixelToData: (px: number, py: number) => DataPoint;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/Chart/types.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AAEH,OAAO,KAAK,EAAC,WAAW,EAAE,SAAS,EAAE,SAAS,EAAC,MAAM,UAAU,CAAC;AAEhE,sCAAsC;AACtC,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,uDAAuD;AACvD,MAAM,MAAM,UAAU,GAClB,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAC3B,SAAS,CAAC,MAAM,CAAC,GACjB,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAE9B,oDAAoD;AACpD,MAAM,WAAW,SAAS;IACxB,iEAAiE;IACjE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC1B,4BAA4B;IAC5B,CAAC,EAAE,MAAM,CAAC;IACV,mCAAmC;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,mCAAmC;IACnC,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,kDAAkD;AAClD,MAAM,WAAW,YAAY;IAC3B,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,8CAA8C;IAC9C,MAAM,EAAE,MAAM,CAAC;IACf,qBAAqB;IACrB,MAAM,EAAE,WAAW,CAAC;IACpB,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAChC,iEAAiE;IACjE,MAAM,EAAE,UAAU,CAAC;IACnB,iCAAiC;IACjC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,8DAA8D;IAC9D,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IAC9C;;;OAGG;IACH,aAAa,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC;IACpD;;OAEG;IACH,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,SAAS,CAAC;CACpD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { ChartColorsAPI } from './getChartColors';
|
|
2
|
+
/**
|
|
3
|
+
* Theme-aware chart colors. Resolves data-viz tokens from the current
|
|
4
|
+
* theme context — respects light/dark mode and custom themes.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```
|
|
8
|
+
* const colors = useChartColors();
|
|
9
|
+
* colors.categorical(5)
|
|
10
|
+
* colors.sequential.blue(3)
|
|
11
|
+
* colors.diverging.positiveNegative(5)
|
|
12
|
+
* colors.alpha('#0171E3', 0.5)
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
export declare function useChartColors(): ChartColorsAPI;
|
|
16
|
+
//# sourceMappingURL=useChartColors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useChartColors.d.ts","sourceRoot":"","sources":["../../src/Chart/useChartColors.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAC;AAErD;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,IAAI,cAAc,CAO/C"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @file useChartColors.ts
|
|
5
|
+
* @output Theme-aware chart color palette hook
|
|
6
|
+
* @position React hook wrapping getChartColors — resolves from live theme context
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import { useMemo } from 'react';
|
|
10
|
+
import { useTheme } from '@astryxdesign/core/theme';
|
|
11
|
+
import { getChartColorsFromResolver } from "./getChartColors.js";
|
|
12
|
+
/**
|
|
13
|
+
* Theme-aware chart colors. Resolves data-viz tokens from the current
|
|
14
|
+
* theme context — respects light/dark mode and custom themes.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```
|
|
18
|
+
* const colors = useChartColors();
|
|
19
|
+
* colors.categorical(5)
|
|
20
|
+
* colors.sequential.blue(3)
|
|
21
|
+
* colors.diverging.positiveNegative(5)
|
|
22
|
+
* colors.alpha('#0171E3', 0.5)
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
export function useChartColors() {
|
|
26
|
+
const {
|
|
27
|
+
token
|
|
28
|
+
} = useTheme();
|
|
29
|
+
return useMemo(() => getChartColorsFromResolver(name => token(name) || ''), [token]);
|
|
30
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { ChartStreamGLHandle } from './ChartStreamGL';
|
|
2
|
+
export interface UseChartRangeOptions {
|
|
3
|
+
/** Sliding window size for x-axis (number of ticks visible). Required. */
|
|
4
|
+
xWindow: number;
|
|
5
|
+
/**
|
|
6
|
+
* Fixed y-axis domain. When provided, y auto-tracking is disabled.
|
|
7
|
+
* Use when the range is known (e.g. 0-100 for percentages).
|
|
8
|
+
*/
|
|
9
|
+
yDomain?: [number, number];
|
|
10
|
+
/**
|
|
11
|
+
* Padding factor for auto-tracked y-axis (default: 0.1 = 10%).
|
|
12
|
+
* Applied symmetrically above max and below min.
|
|
13
|
+
*/
|
|
14
|
+
yPadding?: number;
|
|
15
|
+
/**
|
|
16
|
+
* Anchor y=0 in the center of the y-axis (default: false).
|
|
17
|
+
* When true, y-domain is always symmetric around 0.
|
|
18
|
+
*/
|
|
19
|
+
yCenter?: boolean;
|
|
20
|
+
}
|
|
21
|
+
export interface UseChartRangeReturn {
|
|
22
|
+
/** Current x-axis domain — pass to Chart xDomain prop */
|
|
23
|
+
xDomain: [number, number];
|
|
24
|
+
/** Current y-axis domain — pass to Chart yDomain prop */
|
|
25
|
+
yDomain: [number, number];
|
|
26
|
+
/**
|
|
27
|
+
* Push a data point. Updates domains synchronously, then optionally
|
|
28
|
+
* forwards to a stream ref.
|
|
29
|
+
*/
|
|
30
|
+
push(x: number, y: number, streamRef?: React.RefObject<ChartStreamGLHandle | null>): void;
|
|
31
|
+
/** Reset all tracking state */
|
|
32
|
+
reset(): void;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Tracks streaming data ranges and provides xDomain/yDomain for Chart.
|
|
36
|
+
*
|
|
37
|
+
* Domain updates are synchronous with every push — no throttling, no lag.
|
|
38
|
+
* This ensures the chart's declared domain always matches the rendered data.
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```
|
|
42
|
+
* const {xDomain, yDomain, push} = useChartRange({xWindow: 300, yPadding: 0.1});
|
|
43
|
+
*
|
|
44
|
+
* <Chart xDomain={xDomain} yDomain={yDomain} ...>
|
|
45
|
+
* <ChartStreamGL handleRef={streamRef} ... />
|
|
46
|
+
* </Chart>
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
49
|
+
export declare function useChartRange({ xWindow, yDomain: fixedYDomain, yPadding, yCenter, }: UseChartRangeOptions): UseChartRangeReturn;
|
|
50
|
+
//# sourceMappingURL=useChartRange.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useChartRange.d.ts","sourceRoot":"","sources":["../../src/Chart/useChartRange.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,iBAAiB,CAAC;AAEzD,MAAM,WAAW,oBAAoB;IACnC,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,yDAAyD;IACzD,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1B,yDAAyD;IACzD,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1B;;;OAGG;IACH,IAAI,CACF,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,mBAAmB,GAAG,IAAI,CAAC,GACtD,IAAI,CAAC;IACR,+BAA+B;IAC/B,KAAK,IAAI,IAAI,CAAC;CACf;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,aAAa,CAAC,EAC5B,OAAO,EACP,OAAO,EAAE,YAAY,EACrB,QAAc,EACd,OAAe,GAChB,EAAE,oBAAoB,GAAG,mBAAmB,CAwE5C"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @file useChartRange.ts
|
|
5
|
+
* @output Hook that tracks streaming data ranges and provides domains for Chart
|
|
6
|
+
* @position Helper hook; sits between the data source and Chart props
|
|
7
|
+
*
|
|
8
|
+
* Manages xDomain/yDomain as state. Domain updates are synchronous with
|
|
9
|
+
* every push — no throttling. The chart's declared domain must always
|
|
10
|
+
* match the data being rendered (Tier 1 guarantee).
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import { useState, useRef, useCallback } from 'react';
|
|
14
|
+
/**
|
|
15
|
+
* Tracks streaming data ranges and provides xDomain/yDomain for Chart.
|
|
16
|
+
*
|
|
17
|
+
* Domain updates are synchronous with every push — no throttling, no lag.
|
|
18
|
+
* This ensures the chart's declared domain always matches the rendered data.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```
|
|
22
|
+
* const {xDomain, yDomain, push} = useChartRange({xWindow: 300, yPadding: 0.1});
|
|
23
|
+
*
|
|
24
|
+
* <Chart xDomain={xDomain} yDomain={yDomain} ...>
|
|
25
|
+
* <ChartStreamGL handleRef={streamRef} ... />
|
|
26
|
+
* </Chart>
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export function useChartRange({
|
|
30
|
+
xWindow,
|
|
31
|
+
yDomain: fixedYDomain,
|
|
32
|
+
yPadding = 0.1,
|
|
33
|
+
yCenter = false
|
|
34
|
+
}) {
|
|
35
|
+
const [xDomain, setXDomain] = useState([0, 0]);
|
|
36
|
+
const [yDomain, setYDomain] = useState(fixedYDomain ?? [0, 1]);
|
|
37
|
+
const rangeRef = useRef({
|
|
38
|
+
yMin: fixedYDomain ? fixedYDomain[0] : Infinity,
|
|
39
|
+
yMax: fixedYDomain ? fixedYDomain[1] : -Infinity
|
|
40
|
+
});
|
|
41
|
+
const push = useCallback((x, y, streamRef) => {
|
|
42
|
+
// Forward to stream
|
|
43
|
+
streamRef?.current?.push(x, y);
|
|
44
|
+
|
|
45
|
+
// x domain: during warmup grow from [0, x], once full slide
|
|
46
|
+
const xMin = x >= xWindow ? x - xWindow : 0;
|
|
47
|
+
const xMax = x >= xWindow ? x : Math.max(x, 1);
|
|
48
|
+
setXDomain([xMin, xMax]);
|
|
49
|
+
|
|
50
|
+
// y domain: track min/max, update on every push
|
|
51
|
+
if (!fixedYDomain) {
|
|
52
|
+
const r = rangeRef.current;
|
|
53
|
+
let changed = false;
|
|
54
|
+
if (y < r.yMin) {
|
|
55
|
+
r.yMin = y;
|
|
56
|
+
changed = true;
|
|
57
|
+
}
|
|
58
|
+
if (y > r.yMax) {
|
|
59
|
+
r.yMax = y;
|
|
60
|
+
changed = true;
|
|
61
|
+
}
|
|
62
|
+
if (changed) {
|
|
63
|
+
const range = r.yMax - r.yMin || 1;
|
|
64
|
+
const pad = range * yPadding;
|
|
65
|
+
let min = r.yMin - pad;
|
|
66
|
+
let max = r.yMax + pad;
|
|
67
|
+
if (yCenter) {
|
|
68
|
+
const abs = Math.max(Math.abs(min), Math.abs(max));
|
|
69
|
+
min = -abs;
|
|
70
|
+
max = abs;
|
|
71
|
+
}
|
|
72
|
+
setYDomain([min, max]);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}, [xWindow, fixedYDomain, yPadding, yCenter]);
|
|
76
|
+
const reset = useCallback(() => {
|
|
77
|
+
rangeRef.current = {
|
|
78
|
+
yMin: fixedYDomain ? fixedYDomain[0] : Infinity,
|
|
79
|
+
yMax: fixedYDomain ? fixedYDomain[1] : -Infinity
|
|
80
|
+
};
|
|
81
|
+
setXDomain([0, 0]);
|
|
82
|
+
setYDomain(fixedYDomain ?? [0, 1]);
|
|
83
|
+
}, [fixedYDomain]);
|
|
84
|
+
return {
|
|
85
|
+
xDomain,
|
|
86
|
+
yDomain: fixedYDomain ?? yDomain,
|
|
87
|
+
push,
|
|
88
|
+
reset
|
|
89
|
+
};
|
|
90
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file utils.ts
|
|
3
|
+
* @output Shared utilities for chart components
|
|
4
|
+
* @position Internal helpers; consumed by mark, axis, and interaction components
|
|
5
|
+
*/
|
|
6
|
+
import type { ScaleBand } from 'd3-scale';
|
|
7
|
+
import type { ChartScale } from './types';
|
|
8
|
+
/** Type guard for d3 band scales */
|
|
9
|
+
export declare function isBandScale(scale: ChartScale): scale is ScaleBand<string>;
|
|
10
|
+
/**
|
|
11
|
+
* Get the x pixel position for a datum using the chart's xKey and xScale.
|
|
12
|
+
* For band scales, returns the center of the band.
|
|
13
|
+
*/
|
|
14
|
+
export declare function xPixel(d: Record<string, unknown>, xKey: string, xScale: ChartScale): number;
|
|
15
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/Chart/utils.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,UAAU,CAAC;AACxC,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,SAAS,CAAC;AAExC,oCAAoC;AACpC,wBAAgB,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,KAAK,IAAI,SAAS,CAAC,MAAM,CAAC,CAEzE;AAED;;;GAGG;AACH,wBAAgB,MAAM,CACpB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC1B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,UAAU,GACjB,MAAM,CAMR"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @file utils.ts
|
|
5
|
+
* @output Shared utilities for chart components
|
|
6
|
+
* @position Internal helpers; consumed by mark, axis, and interaction components
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
/** Type guard for d3 band scales */
|
|
10
|
+
export function isBandScale(scale) {
|
|
11
|
+
return typeof scale === 'function' && 'bandwidth' in scale;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Get the x pixel position for a datum using the chart's xKey and xScale.
|
|
16
|
+
* For band scales, returns the center of the band.
|
|
17
|
+
*/
|
|
18
|
+
export function xPixel(d, xKey, xScale) {
|
|
19
|
+
const raw = d[xKey];
|
|
20
|
+
if (isBandScale(xScale)) {
|
|
21
|
+
return (xScale(String(raw)) ?? 0) + xScale.bandwidth() / 2;
|
|
22
|
+
}
|
|
23
|
+
return xScale(raw);
|
|
24
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file webgl.ts
|
|
3
|
+
* @output Shared WebGL utilities for chart components
|
|
4
|
+
* @position Internal helpers; consumed by all GL mark components
|
|
5
|
+
*
|
|
6
|
+
* Provides:
|
|
7
|
+
* - Canvas mounting outside SVG (avoids foreignObject DPR blur)
|
|
8
|
+
* - Premultiplied alpha setup (correct compositing over page)
|
|
9
|
+
* - Shader compilation helpers
|
|
10
|
+
* - Smoothstep circle fragment for crisp point sprites
|
|
11
|
+
*/
|
|
12
|
+
/** Compile a WebGL shader, returns null on failure */
|
|
13
|
+
export declare function compileShader(gl: WebGLRenderingContext, type: number, src: string): WebGLShader | null;
|
|
14
|
+
/** Link a vertex + fragment shader into a program */
|
|
15
|
+
export declare function createProgram(gl: WebGLRenderingContext, vertSrc: string, fragSrc: string): WebGLProgram | null;
|
|
16
|
+
/** Parse hex (#RRGGBB) to [r, g, b] floats 0-1 */
|
|
17
|
+
export declare function hexToGL(hex: string): [number, number, number];
|
|
18
|
+
/** DPR with supersampling for crisp circles */
|
|
19
|
+
export declare function getCanvasDPR(): number;
|
|
20
|
+
/**
|
|
21
|
+
* Create or get a WebGL context with correct alpha settings.
|
|
22
|
+
* Uses premultiplied alpha for correct compositing over the page.
|
|
23
|
+
*/
|
|
24
|
+
export declare function getWebGLContext(canvas: HTMLCanvasElement): WebGLRenderingContext | null;
|
|
25
|
+
/**
|
|
26
|
+
* Set up standard GL state for chart rendering:
|
|
27
|
+
* - Clear with transparent
|
|
28
|
+
* - Enable premultiplied alpha blending
|
|
29
|
+
*/
|
|
30
|
+
export declare function setupGLState(gl: WebGLRenderingContext): void;
|
|
31
|
+
/**
|
|
32
|
+
* Size a canvas for sharp rendering, accounting for DPR.
|
|
33
|
+
* Returns the DPR used.
|
|
34
|
+
*/
|
|
35
|
+
export declare function sizeCanvas(canvas: HTMLCanvasElement, width: number, height: number): number;
|
|
36
|
+
/**
|
|
37
|
+
* Mount a canvas as an absolute-positioned sibling to an SVG element.
|
|
38
|
+
* Automatically aligns with the SVG marker's position — no manual margin
|
|
39
|
+
* offset needed. This is a Tier 1 guarantee: the canvas lands exactly
|
|
40
|
+
* where the SVG content area is, regardless of chart margins or transforms.
|
|
41
|
+
*
|
|
42
|
+
* Call from a useEffect. Returns a cleanup function.
|
|
43
|
+
*/
|
|
44
|
+
export declare function mountCanvasOverSVG(svgMarker: SVGGraphicsElement, canvas: HTMLCanvasElement, width: number, height: number): (() => void) | undefined;
|
|
45
|
+
/**
|
|
46
|
+
* GLSL fragment for premultiplied-alpha circle with smoothstep AA.
|
|
47
|
+
* Use in fragment shaders that render point sprites.
|
|
48
|
+
*
|
|
49
|
+
* Expects:
|
|
50
|
+
* - varying float v_alpha (the final alpha before edge AA)
|
|
51
|
+
* - uniform vec3 u_color
|
|
52
|
+
*
|
|
53
|
+
* Returns: gl_FragColor with premultiplied alpha
|
|
54
|
+
*/
|
|
55
|
+
export declare const CIRCLE_FRAG_BODY = "\n vec2 coord = gl_PointCoord - vec2(0.5);\n float dist = length(coord);\n if (dist > 0.5) discard;\n float edge = 1.0 - smoothstep(0.48, 0.5, dist);\n float a = v_alpha * edge;\n gl_FragColor = vec4(u_color * a, a);\n";
|
|
56
|
+
/**
|
|
57
|
+
* Smoothstep compensation factor for gl_PointSize.
|
|
58
|
+
* The visible circle radius is 0.48 of the point sprite (smoothstep starts there),
|
|
59
|
+
* so we scale up by 1/0.96 to match SVG circle radius exactly.
|
|
60
|
+
*/
|
|
61
|
+
export declare const POINT_SIZE_COMPENSATION: number;
|
|
62
|
+
//# sourceMappingURL=webgl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webgl.d.ts","sourceRoot":"","sources":["../../src/Chart/webgl.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AAEH,sDAAsD;AACtD,wBAAgB,aAAa,CAC3B,EAAE,EAAE,qBAAqB,EACzB,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GACV,WAAW,GAAG,IAAI,CAYpB;AAED,qDAAqD;AACrD,wBAAgB,aAAa,CAC3B,EAAE,EAAE,qBAAqB,EACzB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,YAAY,GAAG,IAAI,CAkBrB;AAED,kDAAkD;AAClD,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAG7D;AAED,+CAA+C;AAC/C,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,iBAAiB,GACxB,qBAAqB,GAAG,IAAI,CAM9B;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,qBAAqB,GAAG,IAAI,CAK5D;AAED;;;GAGG;AACH,wBAAgB,UAAU,CACxB,MAAM,EAAE,iBAAiB,EACzB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,MAAM,CAOR;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,kBAAkB,EAC7B,MAAM,EAAE,iBAAiB,EACzB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAwC1B;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,gBAAgB,iPAO5B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,QAAa,CAAC"}
|