@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,147 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @file ChartAxis.tsx
|
|
5
|
+
* @output Renders an axis (top, right, bottom, left) using the chart's scales
|
|
6
|
+
* @position Child of Chart; reads scales from context
|
|
7
|
+
*
|
|
8
|
+
* Ticks use CSS transitions for smooth sliding during streaming updates.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import { useMemo } from 'react';
|
|
12
|
+
import { useChart } from "./ChartContext.js";
|
|
13
|
+
import { isBandScale } from "./utils.js";
|
|
14
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
15
|
+
/**
|
|
16
|
+
* Chart axis. Renders tick marks and labels for the x or y dimension.
|
|
17
|
+
* Ticks transition smoothly when the scale domain shifts (e.g. streaming).
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```
|
|
21
|
+
* <ChartAxis position="bottom" />
|
|
22
|
+
* <ChartAxis position="left" tickCount={5} tickFormat={currency} />
|
|
23
|
+
* <ChartAxis position="bottom" maxTicks={6} truncate={10} />
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export function ChartAxis({
|
|
27
|
+
position,
|
|
28
|
+
tickCount = 5,
|
|
29
|
+
maxTicks,
|
|
30
|
+
tickFormat,
|
|
31
|
+
truncate,
|
|
32
|
+
animated = true
|
|
33
|
+
}) {
|
|
34
|
+
const {
|
|
35
|
+
width,
|
|
36
|
+
height,
|
|
37
|
+
xScale,
|
|
38
|
+
yScale
|
|
39
|
+
} = useChart();
|
|
40
|
+
const isHorizontal = position === 'top' || position === 'bottom';
|
|
41
|
+
const scale = isHorizontal ? xScale : yScale;
|
|
42
|
+
const ticks = useMemo(() => {
|
|
43
|
+
let allTicks;
|
|
44
|
+
if (isBandScale(scale)) {
|
|
45
|
+
allTicks = scale.domain().map(d => ({
|
|
46
|
+
value: d,
|
|
47
|
+
offset: (scale(d) ?? 0) + scale.bandwidth() / 2
|
|
48
|
+
}));
|
|
49
|
+
} else {
|
|
50
|
+
const linearScale = scale;
|
|
51
|
+
allTicks = linearScale.ticks(tickCount).map(d => ({
|
|
52
|
+
value: d,
|
|
53
|
+
offset: linearScale(d)
|
|
54
|
+
}));
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// Auto-skip: show every Nth label if maxTicks is exceeded
|
|
58
|
+
if (maxTicks && allTicks.length > maxTicks) {
|
|
59
|
+
const step = Math.ceil(allTicks.length / maxTicks);
|
|
60
|
+
allTicks = allTicks.filter((_, i) => i % step === 0);
|
|
61
|
+
}
|
|
62
|
+
return allTicks;
|
|
63
|
+
}, [scale, tickCount, maxTicks]);
|
|
64
|
+
const transform = position === 'bottom' ? `translate(0,${height})` : position === 'right' ? `translate(${width},0)` : undefined;
|
|
65
|
+
|
|
66
|
+
// For the bottom axis, draw the axis line at y=0 when the domain spans negative values
|
|
67
|
+
const axisLineY = (() => {
|
|
68
|
+
if (position !== 'bottom') {
|
|
69
|
+
return 0;
|
|
70
|
+
}
|
|
71
|
+
const domain = yScale.domain();
|
|
72
|
+
if (domain[0] < 0 && domain[1] > 0) {
|
|
73
|
+
// The axis line should appear at the zero mark relative to the bottom edge
|
|
74
|
+
return yScale(0) - height;
|
|
75
|
+
}
|
|
76
|
+
return 0;
|
|
77
|
+
})();
|
|
78
|
+
const baseFormat = tickFormat ?? String;
|
|
79
|
+
const format = truncate ? value => {
|
|
80
|
+
const str = baseFormat(value);
|
|
81
|
+
return str.length > truncate ? str.slice(0, truncate) + '\u2026' : str;
|
|
82
|
+
} : baseFormat;
|
|
83
|
+
const tickSize = 6;
|
|
84
|
+
|
|
85
|
+
// Transition style for smooth tick movement during streaming
|
|
86
|
+
const tickTransition = animated ? 'transform 150ms linear, opacity 150ms ease' : undefined;
|
|
87
|
+
return /*#__PURE__*/_jsxs("g", {
|
|
88
|
+
transform: transform,
|
|
89
|
+
children: [/*#__PURE__*/_jsx("line", {
|
|
90
|
+
x1: isHorizontal ? 0 : 0,
|
|
91
|
+
x2: isHorizontal ? width : 0,
|
|
92
|
+
y1: isHorizontal ? axisLineY : 0,
|
|
93
|
+
y2: isHorizontal ? axisLineY : height,
|
|
94
|
+
stroke: "var(--color-border-emphasized)",
|
|
95
|
+
strokeWidth: 1
|
|
96
|
+
}), ticks.map(({
|
|
97
|
+
value,
|
|
98
|
+
offset
|
|
99
|
+
}) => {
|
|
100
|
+
const label = format(value);
|
|
101
|
+
// Clip ticks that are outside the visible area
|
|
102
|
+
const isVisible = isHorizontal ? offset >= -10 && offset <= width + 10 : offset >= -10 && offset <= height + 10;
|
|
103
|
+
if (isHorizontal) {
|
|
104
|
+
const y = position === 'bottom' ? tickSize : -tickSize;
|
|
105
|
+
return /*#__PURE__*/_jsxs("g", {
|
|
106
|
+
style: {
|
|
107
|
+
transform: `translateX(${offset}px)`,
|
|
108
|
+
transition: tickTransition,
|
|
109
|
+
opacity: isVisible ? 1 : 0
|
|
110
|
+
},
|
|
111
|
+
children: [/*#__PURE__*/_jsx("line", {
|
|
112
|
+
y2: y,
|
|
113
|
+
stroke: "var(--color-border-emphasized)",
|
|
114
|
+
strokeWidth: 1
|
|
115
|
+
}), /*#__PURE__*/_jsx("text", {
|
|
116
|
+
y: position === 'bottom' ? tickSize + 12 : -(tickSize + 4),
|
|
117
|
+
textAnchor: "middle",
|
|
118
|
+
fill: "var(--color-text-secondary)",
|
|
119
|
+
fontSize: 12,
|
|
120
|
+
children: label
|
|
121
|
+
})]
|
|
122
|
+
}, label);
|
|
123
|
+
}
|
|
124
|
+
// Vertical axis
|
|
125
|
+
const x = position === 'left' ? -tickSize : tickSize;
|
|
126
|
+
return /*#__PURE__*/_jsxs("g", {
|
|
127
|
+
style: {
|
|
128
|
+
transform: `translateY(${offset}px)`,
|
|
129
|
+
transition: tickTransition,
|
|
130
|
+
opacity: isVisible ? 1 : 0
|
|
131
|
+
},
|
|
132
|
+
children: [/*#__PURE__*/_jsx("line", {
|
|
133
|
+
x2: x,
|
|
134
|
+
stroke: "var(--color-border-emphasized)",
|
|
135
|
+
strokeWidth: 1
|
|
136
|
+
}), /*#__PURE__*/_jsx("text", {
|
|
137
|
+
x: position === 'left' ? -(tickSize + 4) : tickSize + 4,
|
|
138
|
+
dy: "0.32em",
|
|
139
|
+
textAnchor: position === 'left' ? 'end' : 'start',
|
|
140
|
+
fill: "var(--color-text-secondary)",
|
|
141
|
+
fontSize: 12,
|
|
142
|
+
children: label
|
|
143
|
+
})]
|
|
144
|
+
}, label);
|
|
145
|
+
})]
|
|
146
|
+
});
|
|
147
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export interface ChartBarProps {
|
|
2
|
+
/** Which data key to visualize */
|
|
3
|
+
dataKey: string;
|
|
4
|
+
/** Bar fill color (hex string, CSS var, etc.) */
|
|
5
|
+
color: string;
|
|
6
|
+
/** Corner radius on bar tops */
|
|
7
|
+
radius?: number;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Bar marks. Requires a band xScale (categorical x-axis).
|
|
11
|
+
* Bars grow from the zero line — handles both positive and negative values.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```
|
|
15
|
+
* <ChartBar dataKey="revenue" color={useChartColors().categorical(1)[0]} />
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
export declare function ChartBar({ dataKey, color, radius }: ChartBarProps): import("react").JSX.Element | null;
|
|
19
|
+
//# sourceMappingURL=ChartBar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChartBar.d.ts","sourceRoot":"","sources":["../../src/Chart/ChartBar.tsx"],"names":[],"mappings":"AAWA,MAAM,WAAW,aAAa;IAC5B,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAC;IACd,gCAAgC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,EAAC,OAAO,EAAE,KAAK,EAAE,MAAU,EAAC,EAAE,aAAa,sCAyCnE"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @file ChartBar.tsx
|
|
5
|
+
* @output Renders vertical bars for a data key
|
|
6
|
+
* @position Child of Chart; reads scales from context
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import { useChart } from "./ChartContext.js";
|
|
10
|
+
import { isBandScale } from "./utils.js";
|
|
11
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
12
|
+
/**
|
|
13
|
+
* Bar marks. Requires a band xScale (categorical x-axis).
|
|
14
|
+
* Bars grow from the zero line — handles both positive and negative values.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```
|
|
18
|
+
* <ChartBar dataKey="revenue" color={useChartColors().categorical(1)[0]} />
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export function ChartBar({
|
|
22
|
+
dataKey,
|
|
23
|
+
color,
|
|
24
|
+
radius = 4
|
|
25
|
+
}) {
|
|
26
|
+
const {
|
|
27
|
+
data,
|
|
28
|
+
xKey,
|
|
29
|
+
xScale,
|
|
30
|
+
yScale
|
|
31
|
+
} = useChart();
|
|
32
|
+
if (!isBandScale(xScale)) {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// Zero line position — bars grow from here
|
|
37
|
+
const zeroY = yScale(0);
|
|
38
|
+
return /*#__PURE__*/_jsx("g", {
|
|
39
|
+
children: data.map((d, i) => {
|
|
40
|
+
const xVal = xScale(String(d[xKey]));
|
|
41
|
+
if (xVal == null) {
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
const yVal = typeof d[dataKey] === 'number' ? d[dataKey] : 0;
|
|
45
|
+
const yPos = yScale(yVal);
|
|
46
|
+
|
|
47
|
+
// Bar grows from zero line toward the value
|
|
48
|
+
const barY = Math.min(yPos, zeroY);
|
|
49
|
+
const barHeight = Math.abs(yPos - zeroY);
|
|
50
|
+
return /*#__PURE__*/_jsx("rect", {
|
|
51
|
+
x: xVal,
|
|
52
|
+
y: barY,
|
|
53
|
+
width: xScale.bandwidth(),
|
|
54
|
+
height: Math.max(0, barHeight),
|
|
55
|
+
fill: color,
|
|
56
|
+
rx: radius,
|
|
57
|
+
ry: radius
|
|
58
|
+
}, i);
|
|
59
|
+
})
|
|
60
|
+
});
|
|
61
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file ChartBrush.tsx
|
|
3
|
+
* @output Drag-to-select region. Supports x-only or 2D (xy) brush modes.
|
|
4
|
+
* @position Child of Chart; reads scales from context
|
|
5
|
+
*/
|
|
6
|
+
import React from 'react';
|
|
7
|
+
/**
|
|
8
|
+
* Brush direction mode:
|
|
9
|
+
* - `'x'` — horizontal range selection (default)
|
|
10
|
+
* - `'xy'` — 2D rectangular selection
|
|
11
|
+
*/
|
|
12
|
+
export type BrushMode = 'x' | 'xy';
|
|
13
|
+
export interface BrushRange {
|
|
14
|
+
x: [number, number];
|
|
15
|
+
y?: [number, number];
|
|
16
|
+
}
|
|
17
|
+
export interface ChartBrushProps {
|
|
18
|
+
/**
|
|
19
|
+
* Brush direction mode.
|
|
20
|
+
* - `'x'` — horizontal selection (default, good for time ranges)
|
|
21
|
+
* - `'xy'` — rectangular 2D selection (good for scatter plots)
|
|
22
|
+
*
|
|
23
|
+
* @default 'x'
|
|
24
|
+
*/
|
|
25
|
+
mode?: BrushMode;
|
|
26
|
+
/**
|
|
27
|
+
* Called when the user finishes a brush gesture.
|
|
28
|
+
* Receives the selected range in data coordinates and the matching data points.
|
|
29
|
+
*/
|
|
30
|
+
onBrush?: (range: BrushRange, data: Record<string, unknown>[]) => void;
|
|
31
|
+
/**
|
|
32
|
+
* Called when the brush is cleared (click without drag).
|
|
33
|
+
*/
|
|
34
|
+
onClear?: () => void;
|
|
35
|
+
/**
|
|
36
|
+
* Brush overlay color.
|
|
37
|
+
* @default 'var(--color-accent)'
|
|
38
|
+
*/
|
|
39
|
+
color?: string;
|
|
40
|
+
/**
|
|
41
|
+
* Brush overlay opacity.
|
|
42
|
+
* @default 0.15
|
|
43
|
+
*/
|
|
44
|
+
opacity?: number;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Brush interaction for range selection.
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* ```tsx
|
|
51
|
+
* // X-only (default)
|
|
52
|
+
* <ChartBrush onBrush={({x}) => setZoom(x)} />
|
|
53
|
+
*
|
|
54
|
+
* // 2D rectangular
|
|
55
|
+
* <ChartBrush mode="xy" onBrush={({x, y}, points) => setSelected(points)} />
|
|
56
|
+
* ```
|
|
57
|
+
*/
|
|
58
|
+
export declare function ChartBrush({ mode, onBrush, onClear, color, opacity, }: ChartBrushProps): React.JSX.Element;
|
|
59
|
+
//# sourceMappingURL=ChartBrush.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChartBrush.d.ts","sourceRoot":"","sources":["../../src/Chart/ChartBrush.tsx"],"names":[],"mappings":"AAEA;;;;GAIG;AAEH,OAAO,KAAsC,MAAM,OAAO,CAAC;AAK3D;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG,GAAG,GAAG,IAAI,CAAC;AAEnC,MAAM,WAAW,UAAU;IACzB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpB,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IAEjB;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,IAAI,CAAC;IAEvE;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAErB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAiBD;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CAAC,EACzB,IAAU,EACV,OAAO,EACP,OAAO,EACP,KAA6B,EAC7B,OAAc,GACf,EAAE,eAAe,qBAgJjB"}
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @file ChartBrush.tsx
|
|
5
|
+
* @output Drag-to-select region. Supports x-only or 2D (xy) brush modes.
|
|
6
|
+
* @position Child of Chart; reads scales from context
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import React, { useState, useCallback, useRef } from 'react';
|
|
10
|
+
import { useChart } from "./ChartContext.js";
|
|
11
|
+
import { isBandScale } from "./utils.js";
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Brush direction mode:
|
|
15
|
+
* - `'x'` — horizontal range selection (default)
|
|
16
|
+
* - `'xy'` — 2D rectangular selection
|
|
17
|
+
*/
|
|
18
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
19
|
+
function localCoords(e) {
|
|
20
|
+
const svg = e.currentTarget.ownerSVGElement;
|
|
21
|
+
if (!svg) {
|
|
22
|
+
return {
|
|
23
|
+
x: 0,
|
|
24
|
+
y: 0
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
const pt = svg.createSVGPoint();
|
|
28
|
+
pt.x = e.clientX;
|
|
29
|
+
pt.y = e.clientY;
|
|
30
|
+
const local = pt.matrixTransform(e.currentTarget.getScreenCTM()?.inverse());
|
|
31
|
+
return {
|
|
32
|
+
x: local.x,
|
|
33
|
+
y: local.y
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Brush interaction for range selection.
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```tsx
|
|
42
|
+
* // X-only (default)
|
|
43
|
+
* <ChartBrush onBrush={({x}) => setZoom(x)} />
|
|
44
|
+
*
|
|
45
|
+
* // 2D rectangular
|
|
46
|
+
* <ChartBrush mode="xy" onBrush={({x, y}, points) => setSelected(points)} />
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
49
|
+
export function ChartBrush({
|
|
50
|
+
mode = 'x',
|
|
51
|
+
onBrush,
|
|
52
|
+
onClear,
|
|
53
|
+
color = 'var(--color-accent)',
|
|
54
|
+
opacity = 0.15
|
|
55
|
+
}) {
|
|
56
|
+
const {
|
|
57
|
+
width,
|
|
58
|
+
height,
|
|
59
|
+
data,
|
|
60
|
+
xKey,
|
|
61
|
+
xScale,
|
|
62
|
+
yScale
|
|
63
|
+
} = useChart();
|
|
64
|
+
const [brush, setBrush] = useState(null);
|
|
65
|
+
const dragging = useRef(false);
|
|
66
|
+
const startRef = useRef({
|
|
67
|
+
x: 0,
|
|
68
|
+
y: 0
|
|
69
|
+
});
|
|
70
|
+
const onPointerDown = useCallback(e => {
|
|
71
|
+
e.target.setPointerCapture(e.pointerId);
|
|
72
|
+
dragging.current = true;
|
|
73
|
+
const {
|
|
74
|
+
x,
|
|
75
|
+
y
|
|
76
|
+
} = localCoords(e);
|
|
77
|
+
startRef.current = {
|
|
78
|
+
x,
|
|
79
|
+
y
|
|
80
|
+
};
|
|
81
|
+
setBrush({
|
|
82
|
+
x0: x,
|
|
83
|
+
y0: y,
|
|
84
|
+
x1: x,
|
|
85
|
+
y1: y
|
|
86
|
+
});
|
|
87
|
+
}, []);
|
|
88
|
+
const onPointerMove = useCallback(e => {
|
|
89
|
+
if (!dragging.current) {
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
const {
|
|
93
|
+
x,
|
|
94
|
+
y
|
|
95
|
+
} = localCoords(e);
|
|
96
|
+
const {
|
|
97
|
+
x: sx,
|
|
98
|
+
y: sy
|
|
99
|
+
} = startRef.current;
|
|
100
|
+
if (mode === 'x') {
|
|
101
|
+
setBrush({
|
|
102
|
+
x0: Math.min(sx, x),
|
|
103
|
+
y0: 0,
|
|
104
|
+
x1: Math.max(sx, x),
|
|
105
|
+
y1: height
|
|
106
|
+
});
|
|
107
|
+
} else {
|
|
108
|
+
setBrush({
|
|
109
|
+
x0: Math.min(sx, x),
|
|
110
|
+
y0: Math.min(sy, y),
|
|
111
|
+
x1: Math.max(sx, x),
|
|
112
|
+
y1: Math.max(sy, y)
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
}, [mode, height]);
|
|
116
|
+
const onPointerUp = useCallback(() => {
|
|
117
|
+
dragging.current = false;
|
|
118
|
+
if (!brush) {
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
const dx = Math.abs(brush.x1 - brush.x0);
|
|
122
|
+
const dy = Math.abs(brush.y1 - brush.y0);
|
|
123
|
+
|
|
124
|
+
// Too small — treat as click (clear)
|
|
125
|
+
if (dx < 3 && (mode === 'x' || dy < 3)) {
|
|
126
|
+
setBrush(null);
|
|
127
|
+
onClear?.();
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
if (isBandScale(xScale)) {
|
|
131
|
+
// Band scale — can't invert meaningfully for range
|
|
132
|
+
setBrush(null);
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
const linear = xScale;
|
|
136
|
+
const xMin = linear.invert(brush.x0);
|
|
137
|
+
const xMax = linear.invert(brush.x1);
|
|
138
|
+
const range = {
|
|
139
|
+
x: [xMin, xMax]
|
|
140
|
+
};
|
|
141
|
+
let selected;
|
|
142
|
+
if (mode === 'xy') {
|
|
143
|
+
const yMin = yScale.invert(brush.y1); // y is inverted (top=0)
|
|
144
|
+
const yMax = yScale.invert(brush.y0);
|
|
145
|
+
range.y = [yMin, yMax];
|
|
146
|
+
selected = data.filter(d => {
|
|
147
|
+
const xv = d[xKey];
|
|
148
|
+
if (typeof xv !== 'number' || xv < xMin || xv > xMax) {
|
|
149
|
+
return false;
|
|
150
|
+
}
|
|
151
|
+
// Check all numeric values against y range
|
|
152
|
+
return Object.entries(d).some(([k, v]) => k !== xKey && typeof v === 'number' && v >= yMin && v <= yMax);
|
|
153
|
+
});
|
|
154
|
+
} else {
|
|
155
|
+
selected = data.filter(d => {
|
|
156
|
+
const v = d[xKey];
|
|
157
|
+
return typeof v === 'number' && v >= xMin && v <= xMax;
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
onBrush?.(range, selected);
|
|
161
|
+
}, [brush, mode, xScale, yScale, data, xKey, onBrush, onClear]);
|
|
162
|
+
const rectX = brush ? brush.x0 : 0;
|
|
163
|
+
const rectY = brush ? brush.y0 : 0;
|
|
164
|
+
const rectW = brush ? brush.x1 - brush.x0 : 0;
|
|
165
|
+
const rectH = brush ? brush.y1 - brush.y0 : 0;
|
|
166
|
+
const brushRectStyle = {
|
|
167
|
+
cursor: 'crosshair',
|
|
168
|
+
touchAction: 'none',
|
|
169
|
+
userSelect: 'none'
|
|
170
|
+
};
|
|
171
|
+
return /*#__PURE__*/_jsxs("g", {
|
|
172
|
+
children: [/*#__PURE__*/_jsx("rect", {
|
|
173
|
+
x: 0,
|
|
174
|
+
y: 0,
|
|
175
|
+
width: width,
|
|
176
|
+
height: height,
|
|
177
|
+
fill: "transparent",
|
|
178
|
+
style: brushRectStyle,
|
|
179
|
+
onPointerDown: onPointerDown,
|
|
180
|
+
onPointerMove: onPointerMove,
|
|
181
|
+
onPointerUp: onPointerUp,
|
|
182
|
+
onPointerCancel: onPointerUp
|
|
183
|
+
}), brush && (rectW > 1 || rectH > 1) && /*#__PURE__*/_jsx("rect", {
|
|
184
|
+
x: rectX,
|
|
185
|
+
y: rectY,
|
|
186
|
+
width: rectW,
|
|
187
|
+
height: rectH,
|
|
188
|
+
fill: color,
|
|
189
|
+
fillOpacity: opacity,
|
|
190
|
+
stroke: color,
|
|
191
|
+
strokeWidth: 1,
|
|
192
|
+
strokeOpacity: 0.4,
|
|
193
|
+
rx: mode === 'xy' ? 2 : 0,
|
|
194
|
+
pointerEvents: "none"
|
|
195
|
+
})]
|
|
196
|
+
});
|
|
197
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
export interface ChartCandlestickProps {
|
|
2
|
+
/** Data key for the high/max value (top of whisker) */
|
|
3
|
+
high: string;
|
|
4
|
+
/** Data key for the low/min value (bottom of whisker) */
|
|
5
|
+
low: string;
|
|
6
|
+
/** Data key for the open/Q1 value (bottom of body) */
|
|
7
|
+
open: string;
|
|
8
|
+
/** Data key for the close/Q3 value (top of body) */
|
|
9
|
+
close: string;
|
|
10
|
+
/**
|
|
11
|
+
* Visual variant:
|
|
12
|
+
* - `'default'` — filled body with whiskers
|
|
13
|
+
* - `'bar'` — OHLC bar — vertical range line, left tick at open, right tick at close
|
|
14
|
+
*/
|
|
15
|
+
variant?: 'default' | 'bar';
|
|
16
|
+
/** Color when close >= open (bullish / positive) */
|
|
17
|
+
upColor?: string;
|
|
18
|
+
/** Color when close < open (bearish / negative) */
|
|
19
|
+
downColor?: string;
|
|
20
|
+
/** Fixed color — overrides up/down logic. Use for box plots. */
|
|
21
|
+
color?: string;
|
|
22
|
+
/** Body width as fraction of band width (default: 0.6) */
|
|
23
|
+
bodyWidth?: number;
|
|
24
|
+
/** Stroke width for whiskers and bar lines */
|
|
25
|
+
strokeWidth?: number;
|
|
26
|
+
/** Corner radius on body (default variant only) */
|
|
27
|
+
radius?: number;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Candlestick / box-whisker marks.
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```
|
|
34
|
+
* // Financial OHLC
|
|
35
|
+
* <ChartCandlestick
|
|
36
|
+
* high="high" low="low" open="open" close="close"
|
|
37
|
+
* upColor={useChartColors().semantic.positive}
|
|
38
|
+
* downColor={useChartColors().semantic.negative}
|
|
39
|
+
* />
|
|
40
|
+
*
|
|
41
|
+
* // OHLC bar
|
|
42
|
+
* <ChartCandlestick
|
|
43
|
+
* variant="bar"
|
|
44
|
+
* high="max" low="min" open="q1" close="median"
|
|
45
|
+
* color={useChartColors().categorical(1)[0]}
|
|
46
|
+
* />
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
49
|
+
export declare function ChartCandlestick({ high, low, open, close, variant, upColor, downColor, color, bodyWidth, strokeWidth, radius, }: ChartCandlestickProps): import("react").JSX.Element | null;
|
|
50
|
+
//# sourceMappingURL=ChartCandlestick.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChartCandlestick.d.ts","sourceRoot":"","sources":["../../src/Chart/ChartCandlestick.tsx"],"names":[],"mappings":"AAeA,MAAM,WAAW,qBAAqB;IACpC,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,yDAAyD;IACzD,GAAG,EAAE,MAAM,CAAC;IACZ,sDAAsD;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,OAAO,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC;IAC5B,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mDAAmD;IACnD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0DAA0D;IAC1D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8CAA8C;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,IAAI,EACJ,GAAG,EACH,IAAI,EACJ,KAAK,EACL,OAAmB,EACnB,OAAO,EACP,SAAS,EACT,KAAK,EACL,SAAe,EACf,WAAiB,EACjB,MAAU,GACX,EAAE,qBAAqB,sCA6GvB"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @file ChartCandlestick.tsx
|
|
5
|
+
* @output Renders candlestick/box-whisker marks for OHLC or statistical data
|
|
6
|
+
* @position Child of Chart; reads scales from context
|
|
7
|
+
*
|
|
8
|
+
* Two variants:
|
|
9
|
+
* - `'default'` — filled body with whiskers (traditional candlestick/box plot)
|
|
10
|
+
* - `'bar'` — OHLC bar — vertical line with open/close ticks
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import { useChart } from "./ChartContext.js";
|
|
14
|
+
import { isBandScale } from "./utils.js";
|
|
15
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
16
|
+
/**
|
|
17
|
+
* Candlestick / box-whisker marks.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```
|
|
21
|
+
* // Financial OHLC
|
|
22
|
+
* <ChartCandlestick
|
|
23
|
+
* high="high" low="low" open="open" close="close"
|
|
24
|
+
* upColor={useChartColors().semantic.positive}
|
|
25
|
+
* downColor={useChartColors().semantic.negative}
|
|
26
|
+
* />
|
|
27
|
+
*
|
|
28
|
+
* // OHLC bar
|
|
29
|
+
* <ChartCandlestick
|
|
30
|
+
* variant="bar"
|
|
31
|
+
* high="max" low="min" open="q1" close="median"
|
|
32
|
+
* color={useChartColors().categorical(1)[0]}
|
|
33
|
+
* />
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export function ChartCandlestick({
|
|
37
|
+
high,
|
|
38
|
+
low,
|
|
39
|
+
open,
|
|
40
|
+
close,
|
|
41
|
+
variant = 'default',
|
|
42
|
+
upColor,
|
|
43
|
+
downColor,
|
|
44
|
+
color,
|
|
45
|
+
bodyWidth = 0.6,
|
|
46
|
+
strokeWidth = 1.5,
|
|
47
|
+
radius = 2
|
|
48
|
+
}) {
|
|
49
|
+
const {
|
|
50
|
+
data,
|
|
51
|
+
xKey,
|
|
52
|
+
xScale,
|
|
53
|
+
yScale
|
|
54
|
+
} = useChart();
|
|
55
|
+
if (!isBandScale(xScale)) {
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
const bw = xScale.bandwidth();
|
|
59
|
+
return /*#__PURE__*/_jsx("g", {
|
|
60
|
+
children: data.map((d, i) => {
|
|
61
|
+
const xVal = xScale(String(d[xKey]));
|
|
62
|
+
if (xVal == null) {
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
const hVal = typeof d[high] === 'number' ? d[high] : 0;
|
|
66
|
+
const lVal = typeof d[low] === 'number' ? d[low] : 0;
|
|
67
|
+
const oVal = typeof d[open] === 'number' ? d[open] : 0;
|
|
68
|
+
const cVal = typeof d[close] === 'number' ? d[close] : 0;
|
|
69
|
+
const isUp = cVal >= oVal;
|
|
70
|
+
const fill = color ?? (isUp ? upColor ?? 'var(--color-data-categorical-green)' : downColor ?? 'var(--color-data-categorical-red)');
|
|
71
|
+
const centerX = xVal + bw / 2;
|
|
72
|
+
const yHigh = yScale(hVal);
|
|
73
|
+
const yLow = yScale(lVal);
|
|
74
|
+
const yOpen = yScale(oVal);
|
|
75
|
+
const yClose = yScale(cVal);
|
|
76
|
+
const bodyTop = Math.min(yOpen, yClose);
|
|
77
|
+
const bodyBot = Math.max(yOpen, yClose);
|
|
78
|
+
if (variant === 'bar') {
|
|
79
|
+
// OHLC bar: vertical line (high→low), left tick at open, right tick at close
|
|
80
|
+
const tickLen = bw * bodyWidth * 0.4;
|
|
81
|
+
return /*#__PURE__*/_jsxs("g", {
|
|
82
|
+
children: [/*#__PURE__*/_jsx("line", {
|
|
83
|
+
x1: centerX,
|
|
84
|
+
x2: centerX,
|
|
85
|
+
y1: yHigh,
|
|
86
|
+
y2: yLow,
|
|
87
|
+
stroke: fill,
|
|
88
|
+
strokeWidth: strokeWidth
|
|
89
|
+
}), /*#__PURE__*/_jsx("line", {
|
|
90
|
+
x1: centerX - tickLen,
|
|
91
|
+
x2: centerX,
|
|
92
|
+
y1: yOpen,
|
|
93
|
+
y2: yOpen,
|
|
94
|
+
stroke: fill,
|
|
95
|
+
strokeWidth: strokeWidth
|
|
96
|
+
}), /*#__PURE__*/_jsx("line", {
|
|
97
|
+
x1: centerX,
|
|
98
|
+
x2: centerX + tickLen,
|
|
99
|
+
y1: yClose,
|
|
100
|
+
y2: yClose,
|
|
101
|
+
stroke: fill,
|
|
102
|
+
strokeWidth: strokeWidth
|
|
103
|
+
})]
|
|
104
|
+
}, i);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
// Default variant: filled body with whiskers
|
|
108
|
+
const bodyW = bw * bodyWidth;
|
|
109
|
+
const bodyX = centerX - bodyW / 2;
|
|
110
|
+
const bodyH = Math.max(1, bodyBot - bodyTop);
|
|
111
|
+
return /*#__PURE__*/_jsxs("g", {
|
|
112
|
+
children: [/*#__PURE__*/_jsx("line", {
|
|
113
|
+
x1: centerX,
|
|
114
|
+
x2: centerX,
|
|
115
|
+
y1: yHigh,
|
|
116
|
+
y2: bodyTop,
|
|
117
|
+
stroke: fill,
|
|
118
|
+
strokeWidth: strokeWidth
|
|
119
|
+
}), /*#__PURE__*/_jsx("line", {
|
|
120
|
+
x1: centerX,
|
|
121
|
+
x2: centerX,
|
|
122
|
+
y1: bodyBot,
|
|
123
|
+
y2: yLow,
|
|
124
|
+
stroke: fill,
|
|
125
|
+
strokeWidth: strokeWidth
|
|
126
|
+
}), /*#__PURE__*/_jsx("rect", {
|
|
127
|
+
x: bodyX,
|
|
128
|
+
y: bodyTop,
|
|
129
|
+
width: bodyW,
|
|
130
|
+
height: bodyH,
|
|
131
|
+
fill: fill,
|
|
132
|
+
rx: radius,
|
|
133
|
+
ry: radius
|
|
134
|
+
})]
|
|
135
|
+
}, i);
|
|
136
|
+
})
|
|
137
|
+
});
|
|
138
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ChartContext } from './types';
|
|
2
|
+
export declare const ChartProvider: import("react").Provider<ChartContext | null>;
|
|
3
|
+
/** Access the chart context. Throws if used outside <Chart>. */
|
|
4
|
+
export declare function useChart(): ChartContext;
|
|
5
|
+
//# sourceMappingURL=ChartContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChartContext.d.ts","sourceRoot":"","sources":["../../src/Chart/ChartContext.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,SAAS,CAAC;AAI1C,eAAO,MAAM,aAAa,+CAAoB,CAAC;AAE/C,gEAAgE;AAChE,wBAAgB,QAAQ,IAAI,YAAY,CAMvC"}
|