@octanejs/visx 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +67 -0
- package/UPSTREAM.md +52 -0
- package/package.json +161 -0
- package/src/a11y/components/ChartA11yAnnouncer.tsrx +40 -0
- package/src/a11y/components/ChartA11yAnnouncer.tsrx.d.ts +14 -0
- package/src/a11y/components/ChartA11yDataTable.tsrx +40 -0
- package/src/a11y/components/ChartA11yDataTable.tsrx.d.ts +9 -0
- package/src/a11y/generators/ariaProps.ts +79 -0
- package/src/a11y/generators/dataTableHTML.ts +24 -0
- package/src/a11y/generators/description.ts +125 -0
- package/src/a11y/index.ts +35 -0
- package/src/a11y/keyboard/stateMachine.ts +231 -0
- package/src/a11y/react/index.ts +59 -0
- package/src/a11y/server.ts +29 -0
- package/src/a11y/types.ts +104 -0
- package/src/a11y/useChartA11y.tsrx +144 -0
- package/src/a11y/useChartA11y.tsrx.d.ts +27 -0
- package/src/a11y/useChartKeyboardNav.tsrx +234 -0
- package/src/a11y/useChartKeyboardNav.tsrx.d.ts +26 -0
- package/src/a11y/utils/data.ts +80 -0
- package/src/a11y/utils/format.ts +73 -0
- package/src/a11y/utils/table.ts +81 -0
- package/src/annotation/components/Annotation.tsrx +14 -0
- package/src/annotation/components/Annotation.tsrx.d.ts +8 -0
- package/src/annotation/components/CircleSubject.tsrx +37 -0
- package/src/annotation/components/CircleSubject.tsrx.d.ts +12 -0
- package/src/annotation/components/Connector.tsrx +75 -0
- package/src/annotation/components/Connector.tsrx.d.ts +14 -0
- package/src/annotation/components/EditableAnnotation.tsrx +179 -0
- package/src/annotation/components/EditableAnnotation.tsrx.d.ts +33 -0
- package/src/annotation/components/HtmlLabel.tsrx +93 -0
- package/src/annotation/components/HtmlLabel.tsrx.d.ts +10 -0
- package/src/annotation/components/Label.tsrx +249 -0
- package/src/annotation/components/Label.tsrx.d.ts +60 -0
- package/src/annotation/components/LabelAnchorLine.tsrx +32 -0
- package/src/annotation/components/LabelAnchorLine.tsrx.d.ts +12 -0
- package/src/annotation/components/LineSubject.tsrx +50 -0
- package/src/annotation/components/LineSubject.tsrx.d.ts +21 -0
- package/src/annotation/context/AnnotationContext.tsrx +6 -0
- package/src/annotation/context/AnnotationContext.tsrx.d.ts +4 -0
- package/src/annotation/index.ts +18 -0
- package/src/annotation/types/index.ts +10 -0
- package/src/axis/axis/Axis.tsrx +54 -0
- package/src/axis/axis/Axis.tsrx.d.ts +7 -0
- package/src/axis/axis/AxisBottom.tsrx +37 -0
- package/src/axis/axis/AxisBottom.tsrx.d.ts +10 -0
- package/src/axis/axis/AxisLeft.tsrx +37 -0
- package/src/axis/axis/AxisLeft.tsrx.d.ts +11 -0
- package/src/axis/axis/AxisRenderer.tsrx +102 -0
- package/src/axis/axis/AxisRenderer.tsrx.d.ts +3 -0
- package/src/axis/axis/AxisRight.tsrx +39 -0
- package/src/axis/axis/AxisRight.tsrx.d.ts +12 -0
- package/src/axis/axis/AxisTop.tsrx +38 -0
- package/src/axis/axis/AxisTop.tsrx.d.ts +11 -0
- package/src/axis/axis/Ticks.tsrx +56 -0
- package/src/axis/axis/Ticks.tsrx.d.ts +3 -0
- package/src/axis/constants/orientation.ts +12 -0
- package/src/axis/index.ts +10 -0
- package/src/axis/react/index.ts +5 -0
- package/src/axis/react/useAxis.tsrx +89 -0
- package/src/axis/react/useAxis.tsrx.d.ts +13 -0
- package/src/axis/types.ts +145 -0
- package/src/axis/utils/createPoint.ts +5 -0
- package/src/axis/utils/getAxisRangePaddingConfig.ts +11 -0
- package/src/axis/utils/getLabelTransform.ts +44 -0
- package/src/axis/utils/getTickFormatter.ts +19 -0
- package/src/axis/utils/getTickPosition.ts +28 -0
- package/src/bounds/enhancers/withBoundingRects.tsrx +59 -0
- package/src/bounds/enhancers/withBoundingRects.tsrx.d.ts +21 -0
- package/src/bounds/index.ts +6 -0
- package/src/brush/BaseBrush.tsrx +567 -0
- package/src/brush/BaseBrush.tsrx.d.ts +39 -0
- package/src/brush/Brush.tsrx +217 -0
- package/src/brush/Brush.tsrx.d.ts +56 -0
- package/src/brush/BrushCorner.tsrx +173 -0
- package/src/brush/BrushCorner.tsrx.d.ts +21 -0
- package/src/brush/BrushHandle.tsrx +222 -0
- package/src/brush/BrushHandle.tsrx.d.ts +33 -0
- package/src/brush/BrushOverlay.tsrx +18 -0
- package/src/brush/BrushOverlay.tsrx.d.ts +15 -0
- package/src/brush/BrushSelection.tsrx +181 -0
- package/src/brush/BrushSelection.tsrx.d.ts +27 -0
- package/src/brush/index.ts +9 -0
- package/src/brush/types.ts +62 -0
- package/src/brush/utils.ts +89 -0
- package/src/chart/config.ts +50 -0
- package/src/chart/domains.ts +47 -0
- package/src/chart/index.ts +33 -0
- package/src/chart/responsive.ts +3 -0
- package/src/chart/ticks.ts +90 -0
- package/src/chart/useChartDimensions.tsrx +74 -0
- package/src/chart/useChartDimensions.tsrx.d.ts +28 -0
- package/src/chord/Chord.tsrx +42 -0
- package/src/chord/Chord.tsrx.d.ts +22 -0
- package/src/chord/Ribbon.tsrx +63 -0
- package/src/chord/Ribbon.tsrx.d.ts +26 -0
- package/src/chord/index.ts +6 -0
- package/src/clip-path/clip-paths/CircleClipPath.tsrx +26 -0
- package/src/clip-path/clip-paths/CircleClipPath.tsrx.d.ts +14 -0
- package/src/clip-path/clip-paths/ClipPath.tsrx +21 -0
- package/src/clip-path/clip-paths/ClipPath.tsrx.d.ts +10 -0
- package/src/clip-path/clip-paths/RectClipPath.tsrx +28 -0
- package/src/clip-path/clip-paths/RectClipPath.tsrx.d.ts +15 -0
- package/src/clip-path/index.ts +4 -0
- package/src/curve/index.ts +21 -0
- package/src/delaunay/components/Polygon.tsrx +32 -0
- package/src/delaunay/components/Polygon.tsrx.d.ts +14 -0
- package/src/delaunay/delaunay.ts +17 -0
- package/src/delaunay/index.ts +4 -0
- package/src/delaunay/voronoi.ts +30 -0
- package/src/drag/Drag.tsrx +66 -0
- package/src/drag/Drag.tsrx.d.ts +17 -0
- package/src/drag/index.ts +13 -0
- package/src/drag/useDrag.tsrx +214 -0
- package/src/drag/useDrag.tsrx.d.ts +60 -0
- package/src/drag/util/clampNumber.ts +4 -0
- package/src/drag/util/getClosestPoint.ts +13 -0
- package/src/drag/util/raise.ts +8 -0
- package/src/drag/util/restrictPoint.ts +18 -0
- package/src/drag/util/useSamplesAlongPath.tsrx +26 -0
- package/src/drag/util/useSamplesAlongPath.tsrx.d.ts +3 -0
- package/src/drag/util/useStateWithCallback.tsrx +26 -0
- package/src/drag/util/useStateWithCallback.tsrx.d.ts +5 -0
- package/src/event/getXAndYFromEvent.ts +36 -0
- package/src/event/index.ts +3 -0
- package/src/event/localPoint.ts +18 -0
- package/src/event/localPointGeneric.ts +34 -0
- package/src/event/touchPoint.ts +2 -0
- package/src/event/typeGuards.ts +37 -0
- package/src/event/types.ts +13 -0
- package/src/external.d.ts +3 -0
- package/src/geo/graticule/Graticule.tsrx +97 -0
- package/src/geo/graticule/Graticule.tsrx.d.ts +52 -0
- package/src/geo/index.ts +13 -0
- package/src/geo/projections/Albers.tsrx +10 -0
- package/src/geo/projections/Albers.tsrx.d.ts +7 -0
- package/src/geo/projections/AlbersUsa.tsrx +10 -0
- package/src/geo/projections/AlbersUsa.tsrx.d.ts +7 -0
- package/src/geo/projections/CustomProjection.tsrx +10 -0
- package/src/geo/projections/CustomProjection.tsrx.d.ts +7 -0
- package/src/geo/projections/EqualEarth.tsrx +10 -0
- package/src/geo/projections/EqualEarth.tsrx.d.ts +7 -0
- package/src/geo/projections/Mercator.tsrx +10 -0
- package/src/geo/projections/Mercator.tsrx.d.ts +7 -0
- package/src/geo/projections/NaturalEarth.tsrx +10 -0
- package/src/geo/projections/NaturalEarth.tsrx.d.ts +7 -0
- package/src/geo/projections/Orthographic.tsrx +10 -0
- package/src/geo/projections/Orthographic.tsrx.d.ts +7 -0
- package/src/geo/projections/Projection.tsrx +201 -0
- package/src/geo/projections/Projection.tsrx.d.ts +86 -0
- package/src/geo/types.ts +14 -0
- package/src/glyph/glyphs/Glyph.tsrx +18 -0
- package/src/glyph/glyphs/Glyph.tsrx.d.ts +13 -0
- package/src/glyph/glyphs/GlyphCircle.tsrx +46 -0
- package/src/glyph/glyphs/GlyphCircle.tsrx.d.ts +18 -0
- package/src/glyph/glyphs/GlyphCross.tsrx +46 -0
- package/src/glyph/glyphs/GlyphCross.tsrx.d.ts +18 -0
- package/src/glyph/glyphs/GlyphDiamond.tsrx +46 -0
- package/src/glyph/glyphs/GlyphDiamond.tsrx.d.ts +18 -0
- package/src/glyph/glyphs/GlyphDot.tsrx +29 -0
- package/src/glyph/glyphs/GlyphDot.tsrx.d.ts +17 -0
- package/src/glyph/glyphs/GlyphSquare.tsrx +46 -0
- package/src/glyph/glyphs/GlyphSquare.tsrx.d.ts +18 -0
- package/src/glyph/glyphs/GlyphStar.tsrx +45 -0
- package/src/glyph/glyphs/GlyphStar.tsrx.d.ts +18 -0
- package/src/glyph/glyphs/GlyphTriangle.tsrx +46 -0
- package/src/glyph/glyphs/GlyphTriangle.tsrx.d.ts +18 -0
- package/src/glyph/glyphs/GlyphWye.tsrx +45 -0
- package/src/glyph/glyphs/GlyphWye.tsrx.d.ts +18 -0
- package/src/glyph/index.ts +20 -0
- package/src/gradient/gradients/GradientDarkgreenGreen.tsrx +13 -0
- package/src/gradient/gradients/GradientDarkgreenGreen.tsrx.d.ts +6 -0
- package/src/gradient/gradients/GradientLightgreenGreen.tsrx +13 -0
- package/src/gradient/gradients/GradientLightgreenGreen.tsrx.d.ts +6 -0
- package/src/gradient/gradients/GradientOrangeRed.tsrx +13 -0
- package/src/gradient/gradients/GradientOrangeRed.tsrx.d.ts +6 -0
- package/src/gradient/gradients/GradientPinkBlue.tsrx +13 -0
- package/src/gradient/gradients/GradientPinkBlue.tsrx.d.ts +6 -0
- package/src/gradient/gradients/GradientPinkRed.tsrx +13 -0
- package/src/gradient/gradients/GradientPinkRed.tsrx.d.ts +6 -0
- package/src/gradient/gradients/GradientPurpleOrange.tsrx +13 -0
- package/src/gradient/gradients/GradientPurpleOrange.tsrx.d.ts +6 -0
- package/src/gradient/gradients/GradientPurpleRed.tsrx +13 -0
- package/src/gradient/gradients/GradientPurpleRed.tsrx.d.ts +6 -0
- package/src/gradient/gradients/GradientPurpleTeal.tsrx +13 -0
- package/src/gradient/gradients/GradientPurpleTeal.tsrx.d.ts +6 -0
- package/src/gradient/gradients/GradientSteelPurple.tsrx +13 -0
- package/src/gradient/gradients/GradientSteelPurple.tsrx.d.ts +6 -0
- package/src/gradient/gradients/GradientTealBlue.tsrx +13 -0
- package/src/gradient/gradients/GradientTealBlue.tsrx.d.ts +6 -0
- package/src/gradient/gradients/LinearGradient.tsrx +85 -0
- package/src/gradient/gradients/LinearGradient.tsrx.d.ts +37 -0
- package/src/gradient/gradients/RadialGradient.tsrx +43 -0
- package/src/gradient/gradients/RadialGradient.tsrx.d.ts +5 -0
- package/src/gradient/index.ts +16 -0
- package/src/grid/grids/Grid.tsrx +86 -0
- package/src/grid/grids/Grid.tsrx.d.ts +30 -0
- package/src/grid/grids/GridAngle.tsrx +74 -0
- package/src/grid/grids/GridAngle.tsrx.d.ts +29 -0
- package/src/grid/grids/GridColumns.tsrx +76 -0
- package/src/grid/grids/GridColumns.tsrx.d.ts +18 -0
- package/src/grid/grids/GridPolar.tsrx +189 -0
- package/src/grid/grids/GridPolar.tsrx.d.ts +123 -0
- package/src/grid/grids/GridRadial.tsrx +92 -0
- package/src/grid/grids/GridRadial.tsrx.d.ts +44 -0
- package/src/grid/grids/GridRows.tsrx +76 -0
- package/src/grid/grids/GridRows.tsrx.d.ts +18 -0
- package/src/grid/index.ts +11 -0
- package/src/grid/types.ts +40 -0
- package/src/grid/utils/getScaleBandwidth.ts +5 -0
- package/src/grid/utils/polarToCartesian.ts +16 -0
- package/src/group/Group.tsrx +33 -0
- package/src/group/Group.tsrx.d.ts +16 -0
- package/src/group/index.ts +2 -0
- package/src/heatmap/heatmaps/HeatmapCircle.tsrx +109 -0
- package/src/heatmap/heatmaps/HeatmapCircle.tsrx.d.ts +44 -0
- package/src/heatmap/heatmaps/HeatmapRect.tsrx +121 -0
- package/src/heatmap/heatmaps/HeatmapRect.tsrx.d.ts +49 -0
- package/src/heatmap/index.ts +11 -0
- package/src/heatmap/types.ts +22 -0
- package/src/hierarchy/HierarchyDefaultLink.tsrx +19 -0
- package/src/hierarchy/HierarchyDefaultLink.tsrx.d.ts +13 -0
- package/src/hierarchy/HierarchyDefaultNode.tsrx +7 -0
- package/src/hierarchy/HierarchyDefaultNode.tsrx.d.ts +9 -0
- package/src/hierarchy/HierarchyDefaultRectNode.tsrx +7 -0
- package/src/hierarchy/HierarchyDefaultRectNode.tsrx.d.ts +10 -0
- package/src/hierarchy/hierarchies/Cluster.tsrx +81 -0
- package/src/hierarchy/hierarchies/Cluster.tsrx.d.ts +40 -0
- package/src/hierarchy/hierarchies/Pack.tsrx +69 -0
- package/src/hierarchy/hierarchies/Pack.tsrx.d.ts +35 -0
- package/src/hierarchy/hierarchies/Partition.tsrx +62 -0
- package/src/hierarchy/hierarchies/Partition.tsrx.d.ts +27 -0
- package/src/hierarchy/hierarchies/Tree.tsrx +82 -0
- package/src/hierarchy/hierarchies/Tree.tsrx.d.ts +43 -0
- package/src/hierarchy/hierarchies/Treemap.tsrx +97 -0
- package/src/hierarchy/hierarchies/Treemap.tsrx.d.ts +47 -0
- package/src/hierarchy/index.ts +26 -0
- package/src/hierarchy/types.ts +21 -0
- package/src/hierarchy/utils/setNumOrNumAccessor.ts +11 -0
- package/src/index.ts +74 -0
- package/src/internal/spring.tsrx +190 -0
- package/src/internal/spring.tsrx.d.ts +28 -0
- package/src/internal/useMeasure.tsrx +120 -0
- package/src/internal/useMeasure.tsrx.d.ts +22 -0
- package/src/kernel/accessors/normalizeAccessor.ts +59 -0
- package/src/kernel/domain/useDomain.tsrx +111 -0
- package/src/kernel/domain/useDomain.tsrx.d.ts +13 -0
- package/src/kernel/format/formatNumber.ts +8 -0
- package/src/kernel/ids/useStableId.tsrx +7 -0
- package/src/kernel/ids/useStableId.tsrx.d.ts +2 -0
- package/src/kernel/index.ts +25 -0
- package/src/kernel/memo/shallowEqual.ts +65 -0
- package/src/kernel/memo/useStructuralMemo.tsrx +18 -0
- package/src/kernel/memo/useStructuralMemo.tsrx.d.ts +3 -0
- package/src/kernel/path/createPath.ts +132 -0
- package/src/kernel/path/toPath2D.ts +41 -0
- package/src/kernel/refs/useLatestRef.tsrx +7 -0
- package/src/kernel/refs/useLatestRef.tsrx.d.ts +4 -0
- package/src/kernel/refs/useStableCallback.tsrx +13 -0
- package/src/kernel/refs/useStableCallback.tsrx.d.ts +2 -0
- package/src/kernel/warnings.ts +76 -0
- package/src/legend/index.ts +27 -0
- package/src/legend/legends/Legend/LegendItem.tsrx +35 -0
- package/src/legend/legends/Legend/LegendItem.tsrx.d.ts +16 -0
- package/src/legend/legends/Legend/LegendLabel.tsrx +39 -0
- package/src/legend/legends/Legend/LegendLabel.tsrx.d.ts +16 -0
- package/src/legend/legends/Legend/LegendShape.tsrx +64 -0
- package/src/legend/legends/Legend/LegendShape.tsrx.d.ts +25 -0
- package/src/legend/legends/Legend/index.tsrx +140 -0
- package/src/legend/legends/Legend/index.tsrx.d.ts +50 -0
- package/src/legend/legends/Linear.tsrx +23 -0
- package/src/legend/legends/Linear.tsrx.d.ts +11 -0
- package/src/legend/legends/Ordinal.tsrx +13 -0
- package/src/legend/legends/Ordinal.tsrx.d.ts +8 -0
- package/src/legend/legends/Quantile.tsrx +53 -0
- package/src/legend/legends/Quantile.tsrx.d.ts +12 -0
- package/src/legend/legends/Size.tsrx +37 -0
- package/src/legend/legends/Size.tsrx.d.ts +14 -0
- package/src/legend/legends/Threshold.tsrx +108 -0
- package/src/legend/legends/Threshold.tsrx.d.ts +23 -0
- package/src/legend/shapes/Circle.tsrx +27 -0
- package/src/legend/shapes/Circle.tsrx.d.ts +13 -0
- package/src/legend/shapes/Line.tsrx +33 -0
- package/src/legend/shapes/Line.tsrx.d.ts +13 -0
- package/src/legend/shapes/Rect.tsrx +23 -0
- package/src/legend/shapes/Rect.tsrx.d.ts +13 -0
- package/src/legend/types/index.ts +64 -0
- package/src/legend/util/defaultDomain.ts +21 -0
- package/src/legend/util/identity.ts +3 -0
- package/src/legend/util/labelTransformFactory.ts +18 -0
- package/src/legend/util/renderShape.ts +67 -0
- package/src/legend/util/valueOrIdentity.ts +12 -0
- package/src/marker/index.ts +9 -0
- package/src/marker/markers/Arrow.tsrx +30 -0
- package/src/marker/markers/Arrow.tsrx.d.ts +3 -0
- package/src/marker/markers/Circle.tsrx +26 -0
- package/src/marker/markers/Circle.tsrx.d.ts +3 -0
- package/src/marker/markers/Cross.tsrx +27 -0
- package/src/marker/markers/Cross.tsrx.d.ts +3 -0
- package/src/marker/markers/Line.tsrx +29 -0
- package/src/marker/markers/Line.tsrx.d.ts +3 -0
- package/src/marker/markers/Marker.tsrx +46 -0
- package/src/marker/markers/Marker.tsrx.d.ts +25 -0
- package/src/marker/markers/X.tsrx +6 -0
- package/src/marker/markers/X.tsrx.d.ts +3 -0
- package/src/mock-data/generators/genBin.ts +28 -0
- package/src/mock-data/generators/genBins.ts +27 -0
- package/src/mock-data/generators/genDateValue.ts +22 -0
- package/src/mock-data/generators/genPhyllotaxis.ts +27 -0
- package/src/mock-data/generators/genRandomNormalPoints.ts +32 -0
- package/src/mock-data/generators/genStats.ts +96 -0
- package/src/mock-data/generators/getSeededRandom.ts +9 -0
- package/src/mock-data/index.ts +40 -0
- package/src/mock-data/mocks/appleStock.ts +1289 -0
- package/src/mock-data/mocks/bitcoinPrice.ts +382 -0
- package/src/mock-data/mocks/browserUsage.ts +4053 -0
- package/src/mock-data/mocks/cityTemperature.ts +2207 -0
- package/src/mock-data/mocks/exoplanets.ts +5295 -0
- package/src/mock-data/mocks/groupDateValue.ts +22 -0
- package/src/mock-data/mocks/lesMiserables.ts +355 -0
- package/src/mock-data/mocks/letterFrequency.ts +35 -0
- package/src/mock-data/mocks/planets.ts +55 -0
- package/src/mock-data/mocks/shakespeare.ts +1870 -0
- package/src/network/DefaultLink.tsrx +16 -0
- package/src/network/DefaultLink.tsrx.d.ts +3 -0
- package/src/network/DefaultNode.tsrx +16 -0
- package/src/network/DefaultNode.tsrx.d.ts +9 -0
- package/src/network/Graph.tsrx +43 -0
- package/src/network/Graph.tsrx.d.ts +16 -0
- package/src/network/Links.tsrx +27 -0
- package/src/network/Links.tsrx.d.ts +12 -0
- package/src/network/Nodes.tsrx +41 -0
- package/src/network/Nodes.tsrx.d.ts +17 -0
- package/src/network/index.ts +11 -0
- package/src/network/types.ts +22 -0
- package/src/pattern/constants/index.ts +8 -0
- package/src/pattern/index.ts +16 -0
- package/src/pattern/patterns/Circles.tsrx +78 -0
- package/src/pattern/patterns/Circles.tsrx.d.ts +26 -0
- package/src/pattern/patterns/Hexagons.tsrx +63 -0
- package/src/pattern/patterns/Hexagons.tsrx.d.ts +26 -0
- package/src/pattern/patterns/Lines.tsrx +95 -0
- package/src/pattern/patterns/Lines.tsrx.d.ts +31 -0
- package/src/pattern/patterns/Path.tsrx +58 -0
- package/src/pattern/patterns/Path.tsrx.d.ts +28 -0
- package/src/pattern/patterns/Pattern.tsrx +25 -0
- package/src/pattern/patterns/Pattern.tsrx.d.ts +13 -0
- package/src/pattern/patterns/Waves.tsrx +69 -0
- package/src/pattern/patterns/Waves.tsrx.d.ts +26 -0
- package/src/point/Point.ts +20 -0
- package/src/point/index.ts +4 -0
- package/src/point/subtractPoints.ts +8 -0
- package/src/point/sumPoints.ts +8 -0
- package/src/react-spring/axis/AnimatedAxis.tsrx +28 -0
- package/src/react-spring/axis/AnimatedAxis.tsrx.d.ts +7 -0
- package/src/react-spring/axis/AnimatedTicks.tsrx +85 -0
- package/src/react-spring/axis/AnimatedTicks.tsrx.d.ts +6 -0
- package/src/react-spring/grid/AnimatedGridColumns.tsrx +38 -0
- package/src/react-spring/grid/AnimatedGridColumns.tsrx.d.ts +6 -0
- package/src/react-spring/grid/AnimatedGridLines.tsrx +47 -0
- package/src/react-spring/grid/AnimatedGridLines.tsrx.d.ts +10 -0
- package/src/react-spring/grid/AnimatedGridRows.tsrx +38 -0
- package/src/react-spring/grid/AnimatedGridRows.tsrx.d.ts +6 -0
- package/src/react-spring/index.ts +7 -0
- package/src/react-spring/spring-configs/useLineTransitionConfig.tsrx +102 -0
- package/src/react-spring/spring-configs/useLineTransitionConfig.tsrx.d.ts +50 -0
- package/src/react-spring/types/index.ts +1 -0
- package/src/responsive/components/ParentSize.tsrx +66 -0
- package/src/responsive/components/ParentSize.tsrx.d.ts +21 -0
- package/src/responsive/components/ScaleSVG.tsrx +44 -0
- package/src/responsive/components/ScaleSVG.tsrx.d.ts +19 -0
- package/src/responsive/enhancers/withParentSize.tsrx +101 -0
- package/src/responsive/enhancers/withParentSize.tsrx.d.ts +17 -0
- package/src/responsive/enhancers/withScreenSize.tsrx +64 -0
- package/src/responsive/enhancers/withScreenSize.tsrx.d.ts +17 -0
- package/src/responsive/hooks/useParentSize.tsrx +103 -0
- package/src/responsive/hooks/useParentSize.tsrx.d.ts +25 -0
- package/src/responsive/hooks/useScreenSize.tsrx +53 -0
- package/src/responsive/hooks/useScreenSize.tsrx.d.ts +12 -0
- package/src/responsive/index.ts +21 -0
- package/src/responsive/types/index.ts +36 -0
- package/src/responsive/utils/debounce.ts +59 -0
- package/src/sankey/Sankey.tsrx +157 -0
- package/src/sankey/Sankey.tsrx.d.ts +54 -0
- package/src/sankey/index.ts +20 -0
- package/src/sankey/types.ts +10 -0
- package/src/scale/createScale.ts +176 -0
- package/src/scale/index.ts +31 -0
- package/src/scale/operators/align.ts +16 -0
- package/src/scale/operators/base.ts +16 -0
- package/src/scale/operators/clamp.ts +16 -0
- package/src/scale/operators/constant.ts +16 -0
- package/src/scale/operators/domain.ts +25 -0
- package/src/scale/operators/exponent.ts +16 -0
- package/src/scale/operators/interpolate.ts +23 -0
- package/src/scale/operators/nice.ts +81 -0
- package/src/scale/operators/padding.ts +30 -0
- package/src/scale/operators/range.ts +22 -0
- package/src/scale/operators/reverse.ts +23 -0
- package/src/scale/operators/round.ts +32 -0
- package/src/scale/operators/scaleOperator.ts +86 -0
- package/src/scale/operators/unknown.ts +16 -0
- package/src/scale/operators/zero.ts +21 -0
- package/src/scale/react/index.ts +3 -0
- package/src/scale/react/useScale.tsrx +48 -0
- package/src/scale/react/useScale.tsrx.d.ts +20 -0
- package/src/scale/scales/band.ts +19 -0
- package/src/scale/scales/linear.ts +21 -0
- package/src/scale/scales/log.ts +21 -0
- package/src/scale/scales/ordinal.ts +13 -0
- package/src/scale/scales/point.ts +19 -0
- package/src/scale/scales/power.ts +22 -0
- package/src/scale/scales/quantile.ts +12 -0
- package/src/scale/scales/quantize.ts +18 -0
- package/src/scale/scales/radial.ts +19 -0
- package/src/scale/scales/squareRoot.ts +21 -0
- package/src/scale/scales/symlog.ts +21 -0
- package/src/scale/scales/threshold.ts +14 -0
- package/src/scale/scales/time.ts +20 -0
- package/src/scale/scales/utc.ts +20 -0
- package/src/scale/types/Base.ts +14 -0
- package/src/scale/types/BaseScaleConfig.ts +123 -0
- package/src/scale/types/Nice.ts +1 -0
- package/src/scale/types/Scale.ts +96 -0
- package/src/scale/types/ScaleConfig.ts +210 -0
- package/src/scale/types/ScaleInterpolate.ts +14 -0
- package/src/scale/updateScale.ts +163 -0
- package/src/scale/utils/coerceNumber.ts +10 -0
- package/src/scale/utils/createColorInterpolator.ts +43 -0
- package/src/scale/utils/getTicks.ts +25 -0
- package/src/scale/utils/inferScaleType.ts +60 -0
- package/src/scale/utils/isUtcScale.ts +16 -0
- package/src/scale/utils/scaleCanBeZeroed.ts +25 -0
- package/src/scale/utils/toString.ts +5 -0
- package/src/shape/index.ts +96 -0
- package/src/shape/react/index.ts +5 -0
- package/src/shape/react/usePie.tsrx +60 -0
- package/src/shape/react/usePie.tsrx.d.ts +20 -0
- package/src/shape/shapes/Arc.tsrx +60 -0
- package/src/shape/shapes/Arc.tsrx.d.ts +17 -0
- package/src/shape/shapes/Area.tsrx +32 -0
- package/src/shape/shapes/Area.tsrx.d.ts +4 -0
- package/src/shape/shapes/AreaClosed.tsrx +47 -0
- package/src/shape/shapes/AreaClosed.tsrx.d.ts +6 -0
- package/src/shape/shapes/AreaStack.tsrx +78 -0
- package/src/shape/shapes/AreaStack.tsrx.d.ts +7 -0
- package/src/shape/shapes/Bar.tsrx +18 -0
- package/src/shape/shapes/Bar.tsrx.d.ts +10 -0
- package/src/shape/shapes/BarGroup.tsrx +131 -0
- package/src/shape/shapes/BarGroup.tsrx.d.ts +57 -0
- package/src/shape/shapes/BarGroupHorizontal.tsrx +100 -0
- package/src/shape/shapes/BarGroupHorizontal.tsrx.d.ts +21 -0
- package/src/shape/shapes/BarRounded.tsrx +153 -0
- package/src/shape/shapes/BarRounded.tsrx.d.ts +44 -0
- package/src/shape/shapes/BarStack.tsrx +103 -0
- package/src/shape/shapes/BarStack.tsrx.d.ts +13 -0
- package/src/shape/shapes/BarStackHorizontal.tsrx +99 -0
- package/src/shape/shapes/BarStackHorizontal.tsrx.d.ts +13 -0
- package/src/shape/shapes/Circle.tsrx +18 -0
- package/src/shape/shapes/Circle.tsrx.d.ts +10 -0
- package/src/shape/shapes/Line.tsrx +43 -0
- package/src/shape/shapes/Line.tsrx.d.ts +21 -0
- package/src/shape/shapes/LinePath.tsrx +44 -0
- package/src/shape/shapes/LinePath.tsrx.d.ts +19 -0
- package/src/shape/shapes/LineRadial.tsrx +42 -0
- package/src/shape/shapes/LineRadial.tsrx.d.ts +12 -0
- package/src/shape/shapes/Pie.tsrx +87 -0
- package/src/shape/shapes/Pie.tsrx.d.ts +30 -0
- package/src/shape/shapes/Polygon.tsrx +85 -0
- package/src/shape/shapes/Polygon.tsrx.d.ts +37 -0
- package/src/shape/shapes/SplitLinePath.tsrx +86 -0
- package/src/shape/shapes/SplitLinePath.tsrx.d.ts +23 -0
- package/src/shape/shapes/Stack.tsrx +83 -0
- package/src/shape/shapes/Stack.tsrx.d.ts +25 -0
- package/src/shape/shapes/link/curve/LinkHorizontalCurve.tsrx +63 -0
- package/src/shape/shapes/link/curve/LinkHorizontalCurve.tsrx.d.ts +11 -0
- package/src/shape/shapes/link/curve/LinkRadialCurve.tsrx +72 -0
- package/src/shape/shapes/link/curve/LinkRadialCurve.tsrx.d.ts +9 -0
- package/src/shape/shapes/link/curve/LinkVerticalCurve.tsrx +62 -0
- package/src/shape/shapes/link/curve/LinkVerticalCurve.tsrx.d.ts +9 -0
- package/src/shape/shapes/link/diagonal/LinkHorizontal.tsrx +47 -0
- package/src/shape/shapes/link/diagonal/LinkHorizontal.tsrx.d.ts +7 -0
- package/src/shape/shapes/link/diagonal/LinkRadial.tsrx +49 -0
- package/src/shape/shapes/link/diagonal/LinkRadial.tsrx.d.ts +9 -0
- package/src/shape/shapes/link/diagonal/LinkVertical.tsrx +46 -0
- package/src/shape/shapes/link/diagonal/LinkVertical.tsrx.d.ts +6 -0
- package/src/shape/shapes/link/line/LinkHorizontalLine.tsrx +53 -0
- package/src/shape/shapes/link/line/LinkHorizontalLine.tsrx.d.ts +7 -0
- package/src/shape/shapes/link/line/LinkRadialLine.tsrx +58 -0
- package/src/shape/shapes/link/line/LinkRadialLine.tsrx.d.ts +5 -0
- package/src/shape/shapes/link/line/LinkVerticalLine.tsrx +53 -0
- package/src/shape/shapes/link/line/LinkVerticalLine.tsrx.d.ts +5 -0
- package/src/shape/shapes/link/step/LinkHorizontalStep.tsrx +59 -0
- package/src/shape/shapes/link/step/LinkHorizontalStep.tsrx.d.ts +12 -0
- package/src/shape/shapes/link/step/LinkRadialStep.tsrx +68 -0
- package/src/shape/shapes/link/step/LinkRadialStep.tsrx.d.ts +8 -0
- package/src/shape/shapes/link/step/LinkVerticalStep.tsrx +59 -0
- package/src/shape/shapes/link/step/LinkVerticalStep.tsrx.d.ts +10 -0
- package/src/shape/types/D3ShapeConfig.ts +91 -0
- package/src/shape/types/accessor.ts +9 -0
- package/src/shape/types/area.ts +14 -0
- package/src/shape/types/barGroup.ts +57 -0
- package/src/shape/types/barStack.ts +55 -0
- package/src/shape/types/base.ts +23 -0
- package/src/shape/types/index.ts +8 -0
- package/src/shape/types/link.ts +37 -0
- package/src/shape/types/stack.ts +15 -0
- package/src/shape/util/D3ShapeFactories.ts +125 -0
- package/src/shape/util/accessors.ts +25 -0
- package/src/shape/util/getBandwidth.ts +11 -0
- package/src/shape/util/getOrCreateMeasurementElement.ts +28 -0
- package/src/shape/util/getSplitLineSegments.ts +100 -0
- package/src/shape/util/setNumberOrNumberAccessor.ts +11 -0
- package/src/shape/util/stackOffset.ts +23 -0
- package/src/shape/util/stackOrder.ts +23 -0
- package/src/shape/util/trigonometry.ts +1 -0
- package/src/stats/BoxPlot.tsrx +257 -0
- package/src/stats/BoxPlot.tsrx.d.ts +51 -0
- package/src/stats/ViolinPlot.tsrx +78 -0
- package/src/stats/ViolinPlot.tsrx.d.ts +21 -0
- package/src/stats/index.ts +8 -0
- package/src/stats/types.ts +56 -0
- package/src/stats/util/computeStats.ts +71 -0
- package/src/text/Text.tsrx +43 -0
- package/src/text/Text.tsrx.d.ts +4 -0
- package/src/text/hooks/useText.tsrx +125 -0
- package/src/text/hooks/useText.tsrx.d.ts +7 -0
- package/src/text/index.ts +5 -0
- package/src/text/types.ts +54 -0
- package/src/text/util/getStringWidth.ts +38 -0
- package/src/text/util/memoize.ts +13 -0
- package/src/theme/compat/fromXYChartTheme.ts +132 -0
- package/src/theme/index.ts +14 -0
- package/src/theme/provider/ThemeScope.tsrx +58 -0
- package/src/theme/provider/ThemeScope.tsrx.d.ts +23 -0
- package/src/theme/provider/defineTheme.ts +67 -0
- package/src/theme/react/ThemeContext.tsrx +7 -0
- package/src/theme/react/ThemeContext.tsrx.d.ts +4 -0
- package/src/theme/react/ThemeProvider.tsrx +14 -0
- package/src/theme/react/ThemeProvider.tsrx.d.ts +4 -0
- package/src/theme/react/categoricalColor.ts +32 -0
- package/src/theme/react/index.ts +29 -0
- package/src/theme/react/useAxisStyle.tsrx +100 -0
- package/src/theme/react/useAxisStyle.tsrx.d.ts +23 -0
- package/src/theme/react/useCategoricalScale.tsrx +23 -0
- package/src/theme/react/useCategoricalScale.tsrx.d.ts +3 -0
- package/src/theme/react/useChartConfig.tsrx +108 -0
- package/src/theme/react/useChartConfig.tsrx.d.ts +15 -0
- package/src/theme/react/useColor.tsrx +18 -0
- package/src/theme/react/useColor.tsrx.d.ts +4 -0
- package/src/theme/react/useColorScale.tsrx +39 -0
- package/src/theme/react/useColorScale.tsrx.d.ts +7 -0
- package/src/theme/react/useGridStyle.tsrx +15 -0
- package/src/theme/react/useGridStyle.tsrx.d.ts +6 -0
- package/src/theme/react/useTheme.tsrx +7 -0
- package/src/theme/react/useTheme.tsrx.d.ts +3 -0
- package/src/theme/react/warn.ts +3 -0
- package/src/theme/runtime/createRuntimeTheme.ts +70 -0
- package/src/theme/runtime/resolveThemeInput.ts +19 -0
- package/src/theme/tokens/categorical.ts +18 -0
- package/src/theme/tokens/cssVar.ts +5 -0
- package/src/theme/tokens/dark.ts +51 -0
- package/src/theme/tokens/light.ts +62 -0
- package/src/theme/tokens/names.ts +49 -0
- package/src/theme/tokens/style.ts +45 -0
- package/src/theme/tokens/types.ts +118 -0
- package/src/theme/utils/warn.ts +5 -0
- package/src/threshold/Threshold.tsrx +112 -0
- package/src/threshold/Threshold.tsrx.d.ts +45 -0
- package/src/threshold/index.ts +2 -0
- package/src/tooltip/Portal.tsrx +27 -0
- package/src/tooltip/Portal.tsrx.d.ts +10 -0
- package/src/tooltip/context/TooltipPositionContext.tsrx +16 -0
- package/src/tooltip/context/TooltipPositionContext.tsrx.d.ts +11 -0
- package/src/tooltip/enhancers/withTooltip.tsrx +29 -0
- package/src/tooltip/enhancers/withTooltip.tsrx.d.ts +8 -0
- package/src/tooltip/floating/ChartTooltip.tsrx +95 -0
- package/src/tooltip/floating/ChartTooltip.tsrx.d.ts +29 -0
- package/src/tooltip/floating/ChartTooltipContent.tsrx +219 -0
- package/src/tooltip/floating/ChartTooltipContent.tsrx.d.ts +57 -0
- package/src/tooltip/floating/FloatingTooltip.tsrx +269 -0
- package/src/tooltip/floating/FloatingTooltip.tsrx.d.ts +20 -0
- package/src/tooltip/floating/anchors.ts +146 -0
- package/src/tooltip/floating/context.tsrx +29 -0
- package/src/tooltip/floating/context.tsrx.d.ts +9 -0
- package/src/tooltip/floating/index.ts +61 -0
- package/src/tooltip/floating/internalTypes.ts +125 -0
- package/src/tooltip/floating/middleware.ts +104 -0
- package/src/tooltip/floating/types.ts +198 -0
- package/src/tooltip/floating/useChartTooltip.tsrx +180 -0
- package/src/tooltip/floating/useChartTooltip.tsrx.d.ts +40 -0
- package/src/tooltip/floating/useFloatingTooltip.tsrx +301 -0
- package/src/tooltip/floating/useFloatingTooltip.tsrx.d.ts +3 -0
- package/src/tooltip/hooks/useTooltip.tsrx +67 -0
- package/src/tooltip/hooks/useTooltip.tsrx.d.ts +25 -0
- package/src/tooltip/hooks/useTooltipInPortal.tsrx +92 -0
- package/src/tooltip/hooks/useTooltipInPortal.tsrx.d.ts +34 -0
- package/src/tooltip/index.ts +20 -0
- package/src/tooltip/tooltips/Tooltip.tsrx +71 -0
- package/src/tooltip/tooltips/Tooltip.tsrx.d.ts +39 -0
- package/src/tooltip/tooltips/TooltipWithBounds.tsrx +82 -0
- package/src/tooltip/tooltips/TooltipWithBounds.tsrx.d.ts +9 -0
- package/src/voronoi/components/VoronoiPolygon.tsrx +32 -0
- package/src/voronoi/components/VoronoiPolygon.tsrx.d.ts +14 -0
- package/src/voronoi/index.ts +6 -0
- package/src/voronoi/react/index.ts +5 -0
- package/src/voronoi/react/useVoronoi.tsrx +30 -0
- package/src/voronoi/react/useVoronoi.tsrx.d.ts +10 -0
- package/src/voronoi/voronoi.ts +32 -0
- package/src/wordcloud/Wordcloud.tsrx +20 -0
- package/src/wordcloud/Wordcloud.tsrx.d.ts +7 -0
- package/src/wordcloud/d3-cloud.d.ts +1 -0
- package/src/wordcloud/index.ts +3 -0
- package/src/wordcloud/types.ts +154 -0
- package/src/wordcloud/useWordcloud.tsrx +277 -0
- package/src/wordcloud/useWordcloud.tsrx.d.ts +16 -0
- package/src/xychart/classes/DataRegistry.ts +53 -0
- package/src/xychart/components/Tooltip.tsrx +356 -0
- package/src/xychart/components/Tooltip.tsrx.d.ts +57 -0
- package/src/xychart/components/XYChart.tsrx +196 -0
- package/src/xychart/components/XYChart.tsrx.d.ts +47 -0
- package/src/xychart/components/annotation/AnimatedAnnotation.tsrx +72 -0
- package/src/xychart/components/annotation/AnimatedAnnotation.tsrx.d.ts +7 -0
- package/src/xychart/components/annotation/Annotation.tsrx +20 -0
- package/src/xychart/components/annotation/Annotation.tsrx.d.ts +7 -0
- package/src/xychart/components/annotation/AnnotationCircleSubject.tsrx +12 -0
- package/src/xychart/components/annotation/AnnotationCircleSubject.tsrx.d.ts +5 -0
- package/src/xychart/components/annotation/AnnotationConnector.tsrx +12 -0
- package/src/xychart/components/annotation/AnnotationConnector.tsrx.d.ts +5 -0
- package/src/xychart/components/annotation/AnnotationLabel.tsrx +29 -0
- package/src/xychart/components/annotation/AnnotationLabel.tsrx.d.ts +5 -0
- package/src/xychart/components/annotation/AnnotationLineSubject.tsrx +28 -0
- package/src/xychart/components/annotation/AnnotationLineSubject.tsrx.d.ts +9 -0
- package/src/xychart/components/annotation/private/BaseAnnotation.tsrx +86 -0
- package/src/xychart/components/annotation/private/BaseAnnotation.tsrx.d.ts +18 -0
- package/src/xychart/components/axis/AnimatedAxis.tsrx +15 -0
- package/src/xychart/components/axis/AnimatedAxis.tsrx.d.ts +9 -0
- package/src/xychart/components/axis/Axis.tsrx +11 -0
- package/src/xychart/components/axis/Axis.tsrx.d.ts +5 -0
- package/src/xychart/components/axis/BaseAxis.tsrx +94 -0
- package/src/xychart/components/axis/BaseAxis.tsrx.d.ts +15 -0
- package/src/xychart/components/grid/AnimatedGrid.tsrx +34 -0
- package/src/xychart/components/grid/AnimatedGrid.tsrx.d.ts +8 -0
- package/src/xychart/components/grid/BaseGrid.tsrx +49 -0
- package/src/xychart/components/grid/BaseGrid.tsrx.d.ts +16 -0
- package/src/xychart/components/grid/Grid.tsrx +9 -0
- package/src/xychart/components/grid/Grid.tsrx.d.ts +4 -0
- package/src/xychart/components/series/AnimatedAreaSeries.tsrx +8 -0
- package/src/xychart/components/series/AnimatedAreaSeries.tsrx.d.ts +4 -0
- package/src/xychart/components/series/AnimatedAreaStack.tsrx +8 -0
- package/src/xychart/components/series/AnimatedAreaStack.tsrx.d.ts +4 -0
- package/src/xychart/components/series/AnimatedBarGroup.tsrx +8 -0
- package/src/xychart/components/series/AnimatedBarGroup.tsrx.d.ts +4 -0
- package/src/xychart/components/series/AnimatedBarSeries.tsrx +15 -0
- package/src/xychart/components/series/AnimatedBarSeries.tsrx.d.ts +4 -0
- package/src/xychart/components/series/AnimatedBarStack.tsrx +8 -0
- package/src/xychart/components/series/AnimatedBarStack.tsrx.d.ts +4 -0
- package/src/xychart/components/series/AnimatedGlyphSeries.tsrx +28 -0
- package/src/xychart/components/series/AnimatedGlyphSeries.tsrx.d.ts +8 -0
- package/src/xychart/components/series/AnimatedLineSeries.tsrx +8 -0
- package/src/xychart/components/series/AnimatedLineSeries.tsrx.d.ts +4 -0
- package/src/xychart/components/series/AreaSeries.tsrx +7 -0
- package/src/xychart/components/series/AreaSeries.tsrx.d.ts +4 -0
- package/src/xychart/components/series/AreaStack.tsrx +7 -0
- package/src/xychart/components/series/AreaStack.tsrx.d.ts +4 -0
- package/src/xychart/components/series/BarGroup.tsrx +8 -0
- package/src/xychart/components/series/BarGroup.tsrx.d.ts +4 -0
- package/src/xychart/components/series/BarSeries.tsrx +13 -0
- package/src/xychart/components/series/BarSeries.tsrx.d.ts +5 -0
- package/src/xychart/components/series/BarStack.tsrx +8 -0
- package/src/xychart/components/series/BarStack.tsrx.d.ts +4 -0
- package/src/xychart/components/series/GlyphSeries.tsrx +38 -0
- package/src/xychart/components/series/GlyphSeries.tsrx.d.ts +8 -0
- package/src/xychart/components/series/LineSeries.tsrx +7 -0
- package/src/xychart/components/series/LineSeries.tsrx.d.ts +4 -0
- package/src/xychart/components/series/private/AnimatedBars.tsrx +151 -0
- package/src/xychart/components/series/private/AnimatedBars.tsrx.d.ts +5 -0
- package/src/xychart/components/series/private/AnimatedGlyphs.tsrx +108 -0
- package/src/xychart/components/series/private/AnimatedGlyphs.tsrx.d.ts +40 -0
- package/src/xychart/components/series/private/AnimatedPath.tsrx +47 -0
- package/src/xychart/components/series/private/AnimatedPath.tsrx.d.ts +4 -0
- package/src/xychart/components/series/private/Bars.tsrx +45 -0
- package/src/xychart/components/series/private/Bars.tsrx.d.ts +4 -0
- package/src/xychart/components/series/private/BaseAreaSeries.tsrx +187 -0
- package/src/xychart/components/series/private/BaseAreaSeries.tsrx.d.ts +20 -0
- package/src/xychart/components/series/private/BaseAreaStack.tsrx +259 -0
- package/src/xychart/components/series/private/BaseAreaStack.tsrx.d.ts +19 -0
- package/src/xychart/components/series/private/BaseBarGroup.tsrx +198 -0
- package/src/xychart/components/series/private/BaseBarGroup.tsrx.d.ts +15 -0
- package/src/xychart/components/series/private/BaseBarSeries.tsrx +154 -0
- package/src/xychart/components/series/private/BaseBarSeries.tsrx.d.ts +16 -0
- package/src/xychart/components/series/private/BaseBarStack.tsrx +192 -0
- package/src/xychart/components/series/private/BaseBarStack.tsrx.d.ts +14 -0
- package/src/xychart/components/series/private/BaseGlyphSeries.tsrx +107 -0
- package/src/xychart/components/series/private/BaseGlyphSeries.tsrx.d.ts +14 -0
- package/src/xychart/components/series/private/BaseLineSeries.tsrx +135 -0
- package/src/xychart/components/series/private/BaseLineSeries.tsrx.d.ts +14 -0
- package/src/xychart/components/series/private/defaultRenderGlyph.tsrx +29 -0
- package/src/xychart/components/series/private/defaultRenderGlyph.tsrx.d.ts +3 -0
- package/src/xychart/constants.ts +9 -0
- package/src/xychart/context/DataContext.tsrx +23 -0
- package/src/xychart/context/DataContext.tsrx.d.ts +11 -0
- package/src/xychart/context/EventEmitterContext.tsrx +6 -0
- package/src/xychart/context/EventEmitterContext.tsrx.d.ts +3 -0
- package/src/xychart/context/ThemeContext.tsrx +7 -0
- package/src/xychart/context/ThemeContext.tsrx.d.ts +4 -0
- package/src/xychart/context/TooltipContext.tsrx +7 -0
- package/src/xychart/context/TooltipContext.tsrx.d.ts +3 -0
- package/src/xychart/hooks/useDataRegistry.tsrx +41 -0
- package/src/xychart/hooks/useDataRegistry.tsrx.d.ts +5 -0
- package/src/xychart/hooks/useDimensions.tsrx +40 -0
- package/src/xychart/hooks/useDimensions.tsrx.d.ts +15 -0
- package/src/xychart/hooks/useEventEmitter.tsrx +62 -0
- package/src/xychart/hooks/useEventEmitter.tsrx.d.ts +24 -0
- package/src/xychart/hooks/useEventEmitters.tsrx +64 -0
- package/src/xychart/hooks/useEventEmitters.tsrx.d.ts +25 -0
- package/src/xychart/hooks/useEventHandlers.tsrx +162 -0
- package/src/xychart/hooks/useEventHandlers.tsrx.d.ts +31 -0
- package/src/xychart/hooks/useScales.tsrx +113 -0
- package/src/xychart/hooks/useScales.tsrx.d.ts +15 -0
- package/src/xychart/hooks/useSeriesEvents.tsrx +82 -0
- package/src/xychart/hooks/useSeriesEvents.tsrx.d.ts +18 -0
- package/src/xychart/hooks/useStackedData.tsrx +96 -0
- package/src/xychart/hooks/useStackedData.tsrx.d.ts +14 -0
- package/src/xychart/index.ts +56 -0
- package/src/xychart/providers/DataProvider.tsrx +141 -0
- package/src/xychart/providers/DataProvider.tsrx.d.ts +22 -0
- package/src/xychart/providers/EventEmitterProvider.tsrx +10 -0
- package/src/xychart/providers/EventEmitterProvider.tsrx.d.ts +6 -0
- package/src/xychart/providers/ThemeProvider.tsrx +13 -0
- package/src/xychart/providers/ThemeProvider.tsrx.d.ts +8 -0
- package/src/xychart/providers/TooltipProvider.tsrx +101 -0
- package/src/xychart/providers/TooltipProvider.tsrx.d.ts +10 -0
- package/src/xychart/theme/buildChartTheme.ts +178 -0
- package/src/xychart/theme/colors.ts +174 -0
- package/src/xychart/theme/themes/dark.ts +24 -0
- package/src/xychart/theme/themes/light.ts +16 -0
- package/src/xychart/typeguards/events.ts +12 -0
- package/src/xychart/typeguards/isValidNumber.ts +3 -0
- package/src/xychart/types/axis.ts +3 -0
- package/src/xychart/types/data.ts +57 -0
- package/src/xychart/types/event.ts +30 -0
- package/src/xychart/types/index.ts +6 -0
- package/src/xychart/types/series.ts +219 -0
- package/src/xychart/types/theme.ts +50 -0
- package/src/xychart/types/tooltip.ts +24 -0
- package/src/xychart/utils/cleanColorString.ts +4 -0
- package/src/xychart/utils/collectDataRegistryEntries.ts +50 -0
- package/src/xychart/utils/combineBarStackData.ts +51 -0
- package/src/xychart/utils/findNearestDatumSingleDimension.ts +64 -0
- package/src/xychart/utils/findNearestDatumX.ts +34 -0
- package/src/xychart/utils/findNearestDatumXY.ts +42 -0
- package/src/xychart/utils/findNearestDatumY.ts +34 -0
- package/src/xychart/utils/findNearestGroupDatum.ts +50 -0
- package/src/xychart/utils/findNearestStackDatum.ts +44 -0
- package/src/xychart/utils/getBarStackRegistryData.ts +49 -0
- package/src/xychart/utils/getChildrenAndGrandchildrenWithProps.ts +24 -0
- package/src/xychart/utils/getScaleBandwidth.ts +7 -0
- package/src/xychart/utils/getScaleBaseline.ts +24 -0
- package/src/xychart/utils/getScaledValueFactory.ts +21 -0
- package/src/xychart/utils/isDiscreteScale.ts +9 -0
- package/src/zoom/Zoom.tsrx +375 -0
- package/src/zoom/Zoom.tsrx.d.ts +62 -0
- package/src/zoom/index.ts +16 -0
- package/src/zoom/types.ts +120 -0
- package/src/zoom/util/matrix.ts +104 -0
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { useCallback, useState } from 'octane';
|
|
2
|
+
|
|
3
|
+
const DEFAULT_DIMS = {
|
|
4
|
+
width: 0,
|
|
5
|
+
height: 0,
|
|
6
|
+
margin: { top: 0, right: 0, bottom: 0, left: 0 },
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
export type Dimensions = typeof DEFAULT_DIMS;
|
|
10
|
+
|
|
11
|
+
/** A hook for accessing and setting memoized width, height, and margin chart dimensions. */
|
|
12
|
+
export default function useDimensions(initialDims?: Partial<Dimensions>): [Dimensions, (dims: Dimensions) => void] {
|
|
13
|
+
const [dimensions, privateSetDimensions] = useState<Dimensions>({
|
|
14
|
+
width: initialDims?.width == null ? DEFAULT_DIMS.width : initialDims.width,
|
|
15
|
+
height: initialDims?.height == null ? DEFAULT_DIMS.height : initialDims.height,
|
|
16
|
+
margin: initialDims?.margin == null ? DEFAULT_DIMS.margin : initialDims.margin,
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
// expose a setter with better memoization logic
|
|
20
|
+
const publicSetDimensions = useCallback((dims: Dimensions) => {
|
|
21
|
+
if (
|
|
22
|
+
dims.width !== dimensions.width || dims.height !== dimensions.height ||
|
|
23
|
+
dims.margin.left !== dimensions.margin.left ||
|
|
24
|
+
dims.margin.right !== dimensions.margin.right ||
|
|
25
|
+
dims.margin.top !== dimensions.margin.top ||
|
|
26
|
+
dims.margin.bottom !== dimensions.margin.bottom
|
|
27
|
+
) {
|
|
28
|
+
privateSetDimensions(dims);
|
|
29
|
+
}
|
|
30
|
+
}, [
|
|
31
|
+
dimensions.width,
|
|
32
|
+
dimensions.height,
|
|
33
|
+
dimensions.margin.left,
|
|
34
|
+
dimensions.margin.right,
|
|
35
|
+
dimensions.margin.bottom,
|
|
36
|
+
dimensions.margin.top,
|
|
37
|
+
]);
|
|
38
|
+
|
|
39
|
+
return [dimensions, publicSetDimensions];
|
|
40
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// Generated by scripts/generate-tsrx-types.mjs.
|
|
2
|
+
declare const DEFAULT_DIMS: {
|
|
3
|
+
width: number;
|
|
4
|
+
height: number;
|
|
5
|
+
margin: {
|
|
6
|
+
top: number;
|
|
7
|
+
right: number;
|
|
8
|
+
bottom: number;
|
|
9
|
+
left: number;
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
export type Dimensions = typeof DEFAULT_DIMS;
|
|
13
|
+
/** A hook for accessing and setting memoized width, height, and margin chart dimensions. */
|
|
14
|
+
export default function useDimensions(initialDims?: Partial<Dimensions>): [Dimensions, (dims: Dimensions) => void];
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { PointerEvent, FocusEvent } from 'react';
|
|
2
|
+
import { useCallback, useContext, useEffect, useRef } from 'octane';
|
|
3
|
+
import { localPoint } from '@octanejs/visx/event';
|
|
4
|
+
import EventEmitterContext from '../context/EventEmitterContext.tsrx';
|
|
5
|
+
import type { EventEmitterContextType } from '../types';
|
|
6
|
+
|
|
7
|
+
export type EventType =
|
|
8
|
+
'pointermove' | 'pointerout' | 'pointerup' | 'pointerdown' | 'focus' | 'blur';
|
|
9
|
+
|
|
10
|
+
export type HandlerParams = {
|
|
11
|
+
/** The react PointerEvent or FocusEvent. */
|
|
12
|
+
event: PointerEvent | FocusEvent;
|
|
13
|
+
/** Position of the PointerEvent in svg coordinates. */
|
|
14
|
+
svgPoint: ReturnType<typeof localPoint>;
|
|
15
|
+
/** The source of the event. This can be anything, but for this package is the name of the component which emitted the event. */
|
|
16
|
+
source?: string;
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
export type Handler = (params?: HandlerParams) => void;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Hook for optionally subscribing to a specified EventType,
|
|
23
|
+
* and returns emitter for emitting events.
|
|
24
|
+
*/
|
|
25
|
+
export default function useEventEmitter(
|
|
26
|
+
/** Type of event to subscribe to. */
|
|
27
|
+
eventType?: EventType,
|
|
28
|
+
/** Handler invoked on emission of EventType event. */
|
|
29
|
+
handler?: Handler,
|
|
30
|
+
/** Optional valid sources for EventType subscription. */
|
|
31
|
+
allowedSources?: string[],
|
|
32
|
+
) {
|
|
33
|
+
const emitter = useContext(EventEmitterContext) as EventEmitterContextType | null;
|
|
34
|
+
const allowedSourcesRef = useRef<string[] | undefined>(undefined);
|
|
35
|
+
allowedSourcesRef.current = allowedSources; // use ref so allowedSources[] can change without creating new handlers
|
|
36
|
+
|
|
37
|
+
// wrap emitter.emit so we can enforce stricter type signature
|
|
38
|
+
const emit = useCallback((type: EventType, event: HandlerParams['event'], source?: string) => {
|
|
39
|
+
if (emitter) {
|
|
40
|
+
emitter.emit<HandlerParams>(type, { event, svgPoint: localPoint(event), source });
|
|
41
|
+
}
|
|
42
|
+
}, [emitter]);
|
|
43
|
+
|
|
44
|
+
useEffect(() => {
|
|
45
|
+
if (emitter && eventType && handler) {
|
|
46
|
+
// register handler, with source filtering as needed
|
|
47
|
+
const handlerWithSourceFilter: Handler = (params?: HandlerParams) => {
|
|
48
|
+
if (
|
|
49
|
+
!allowedSourcesRef.current ||
|
|
50
|
+
params?.source && allowedSourcesRef.current?.includes(params.source)
|
|
51
|
+
) {
|
|
52
|
+
handler(params);
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
emitter.on<HandlerParams>(eventType, handlerWithSourceFilter);
|
|
56
|
+
return () => emitter?.off<HandlerParams>(eventType, handlerWithSourceFilter);
|
|
57
|
+
}
|
|
58
|
+
return undefined;
|
|
59
|
+
}, [emitter, eventType, handler]);
|
|
60
|
+
|
|
61
|
+
return emitter ? emit : null;
|
|
62
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// Generated by scripts/generate-tsrx-types.mjs.
|
|
2
|
+
import type { PointerEvent, FocusEvent } from 'react';
|
|
3
|
+
import { localPoint } from '@octanejs/visx/event';
|
|
4
|
+
export type EventType = 'pointermove' | 'pointerout' | 'pointerup' | 'pointerdown' | 'focus' | 'blur';
|
|
5
|
+
export type HandlerParams = {
|
|
6
|
+
/** The react PointerEvent or FocusEvent. */
|
|
7
|
+
event: PointerEvent | FocusEvent;
|
|
8
|
+
/** Position of the PointerEvent in svg coordinates. */
|
|
9
|
+
svgPoint: ReturnType<typeof localPoint>;
|
|
10
|
+
/** The source of the event. This can be anything, but for this package is the name of the component which emitted the event. */
|
|
11
|
+
source?: string;
|
|
12
|
+
};
|
|
13
|
+
export type Handler = (params?: HandlerParams) => void;
|
|
14
|
+
/**
|
|
15
|
+
* Hook for optionally subscribing to a specified EventType,
|
|
16
|
+
* and returns emitter for emitting events.
|
|
17
|
+
*/
|
|
18
|
+
export default function useEventEmitter(
|
|
19
|
+
/** Type of event to subscribe to. */
|
|
20
|
+
eventType?: EventType,
|
|
21
|
+
/** Handler invoked on emission of EventType event. */
|
|
22
|
+
handler?: Handler,
|
|
23
|
+
/** Optional valid sources for EventType subscription. */
|
|
24
|
+
allowedSources?: string[]): ((type: EventType, event: HandlerParams["event"], source?: string) => void) | null;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import type { PointerEvent, FocusEvent } from 'react';
|
|
2
|
+
import { useCallback } from 'octane';
|
|
3
|
+
import useEventEmitter from './useEventEmitter.tsrx';
|
|
4
|
+
|
|
5
|
+
type PointerEventEmitterParams = {
|
|
6
|
+
/** Source of the events, e.g., the component name. */
|
|
7
|
+
source: string;
|
|
8
|
+
onBlur?: boolean;
|
|
9
|
+
onFocus?: boolean;
|
|
10
|
+
onPointerMove?: boolean;
|
|
11
|
+
onPointerOut?: boolean;
|
|
12
|
+
onPointerUp?: boolean;
|
|
13
|
+
onPointerDown?: boolean;
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* A hook that simplifies creation of handlers for emitting
|
|
18
|
+
* pointermove, pointerout, and pointerup events to EventEmitterContext.
|
|
19
|
+
*/
|
|
20
|
+
export default function usePointerEventEmitters({
|
|
21
|
+
source,
|
|
22
|
+
onPointerOut = true,
|
|
23
|
+
onPointerMove = true,
|
|
24
|
+
onPointerUp = true,
|
|
25
|
+
onPointerDown = true,
|
|
26
|
+
onFocus = false,
|
|
27
|
+
onBlur = false,
|
|
28
|
+
}: PointerEventEmitterParams) {
|
|
29
|
+
const emit = useEventEmitter();
|
|
30
|
+
|
|
31
|
+
const emitPointerMove = useCallback(
|
|
32
|
+
(event: PointerEvent) => emit?.('pointermove', event, source),
|
|
33
|
+
[emit, source],
|
|
34
|
+
);
|
|
35
|
+
const emitPointerOut = useCallback((event: PointerEvent) => emit?.('pointerout', event, source), [
|
|
36
|
+
emit,
|
|
37
|
+
source,
|
|
38
|
+
]);
|
|
39
|
+
const emitPointerUp = useCallback((event: PointerEvent) => emit?.('pointerup', event, source), [
|
|
40
|
+
emit,
|
|
41
|
+
source,
|
|
42
|
+
]);
|
|
43
|
+
const emitPointerDown = useCallback(
|
|
44
|
+
(event: PointerEvent) => emit?.('pointerdown', event, source),
|
|
45
|
+
[emit, source],
|
|
46
|
+
);
|
|
47
|
+
const emitFocus = useCallback((event: FocusEvent) => emit?.('focus', event, source), [
|
|
48
|
+
emit,
|
|
49
|
+
source,
|
|
50
|
+
]);
|
|
51
|
+
const emitBlur = useCallback((event: FocusEvent) => emit?.('blur', event, source), [
|
|
52
|
+
emit,
|
|
53
|
+
source,
|
|
54
|
+
]);
|
|
55
|
+
|
|
56
|
+
return {
|
|
57
|
+
onPointerMove: onPointerMove ? emitPointerMove : undefined,
|
|
58
|
+
onFocus: onFocus ? emitFocus : undefined,
|
|
59
|
+
onBlur: onBlur ? emitBlur : undefined,
|
|
60
|
+
onPointerOut: onPointerOut ? emitPointerOut : undefined,
|
|
61
|
+
onPointerUp: onPointerUp ? emitPointerUp : undefined,
|
|
62
|
+
onPointerDown: onPointerDown ? emitPointerDown : undefined,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// Generated by scripts/generate-tsrx-types.mjs.
|
|
2
|
+
import type { PointerEvent, FocusEvent } from 'react';
|
|
3
|
+
type PointerEventEmitterParams = {
|
|
4
|
+
/** Source of the events, e.g., the component name. */
|
|
5
|
+
source: string;
|
|
6
|
+
onBlur?: boolean;
|
|
7
|
+
onFocus?: boolean;
|
|
8
|
+
onPointerMove?: boolean;
|
|
9
|
+
onPointerOut?: boolean;
|
|
10
|
+
onPointerUp?: boolean;
|
|
11
|
+
onPointerDown?: boolean;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* A hook that simplifies creation of handlers for emitting
|
|
15
|
+
* pointermove, pointerout, and pointerup events to EventEmitterContext.
|
|
16
|
+
*/
|
|
17
|
+
export default function usePointerEventEmitters({ source, onPointerOut, onPointerMove, onPointerUp, onPointerDown, onFocus, onBlur, }: PointerEventEmitterParams): {
|
|
18
|
+
onPointerMove: ((event: PointerEvent) => void | undefined) | undefined;
|
|
19
|
+
onFocus: ((event: FocusEvent) => void | undefined) | undefined;
|
|
20
|
+
onBlur: ((event: FocusEvent) => void | undefined) | undefined;
|
|
21
|
+
onPointerOut: ((event: PointerEvent) => void | undefined) | undefined;
|
|
22
|
+
onPointerUp: ((event: PointerEvent) => void | undefined) | undefined;
|
|
23
|
+
onPointerDown: ((event: PointerEvent) => void | undefined) | undefined;
|
|
24
|
+
};
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import type { AxisScale } from '@octanejs/visx/axis';
|
|
2
|
+
import type { PointerEvent, FocusEvent } from 'react';
|
|
3
|
+
import { useCallback, useContext } from 'octane';
|
|
4
|
+
import DataContext from '../context/DataContext.tsrx';
|
|
5
|
+
import { isFocusEvent, isPointerEvent } from '../typeguards/events';
|
|
6
|
+
import type {
|
|
7
|
+
DataContextType,
|
|
8
|
+
EventHandlerParams,
|
|
9
|
+
NearestDatumArgs,
|
|
10
|
+
NearestDatumReturnType,
|
|
11
|
+
} from '../types';
|
|
12
|
+
import findNearestDatumX from '../utils/findNearestDatumX';
|
|
13
|
+
import findNearestDatumY from '../utils/findNearestDatumY';
|
|
14
|
+
import type { HandlerParams } from './useEventEmitter.tsrx';
|
|
15
|
+
import useEventEmitter from './useEventEmitter.tsrx';
|
|
16
|
+
|
|
17
|
+
export const POINTER_EVENTS_ALL = '__POINTER_EVENTS_ALL';
|
|
18
|
+
export const POINTER_EVENTS_NEAREST = '__POINTER_EVENTS_NEAREST';
|
|
19
|
+
|
|
20
|
+
export type PointerEventHandlerParams<XScale extends AxisScale, YScale extends AxisScale, Datum extends object> = {
|
|
21
|
+
/** Controls whether callbacks are invoked for one or more registered dataKeys, the nearest dataKey, or all dataKeys. */
|
|
22
|
+
dataKey: string | string[] | typeof POINTER_EVENTS_NEAREST | typeof POINTER_EVENTS_ALL; // last two are eaten by string
|
|
23
|
+
/** Optionally override the findNearestDatum logic. */
|
|
24
|
+
findNearestDatum?: (params: NearestDatumArgs<XScale, YScale, Datum>) => NearestDatumReturnType<Datum>;
|
|
25
|
+
/** Callback invoked onFocus for one or more series based on dataKey. */
|
|
26
|
+
onFocus?: (params: EventHandlerParams<Datum>) => void;
|
|
27
|
+
/** Callback invoked onBlur. */
|
|
28
|
+
onBlur?: (event: FocusEvent) => void;
|
|
29
|
+
/** Callback invoked onPointerMove for one or more series based on dataKey. */
|
|
30
|
+
onPointerMove?: (params: EventHandlerParams<Datum>) => void;
|
|
31
|
+
/** Callback invoked onPointerOut. */
|
|
32
|
+
onPointerOut?: (event: PointerEvent) => void;
|
|
33
|
+
/** Callback invoked onPointerUp for one or more series based on dataKey. */
|
|
34
|
+
onPointerUp?: (params: EventHandlerParams<Datum>) => void;
|
|
35
|
+
/** Callback invoked onPointerDown for one or more series based on dataKey. */
|
|
36
|
+
onPointerDown?: (params: EventHandlerParams<Datum>) => void;
|
|
37
|
+
/** Valid event sources for which to invoke handlers. */
|
|
38
|
+
allowedSources?: string[]
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Hook that returns PointerEvent handlers that invoke the passed pointer
|
|
43
|
+
* handlers with the nearest datum to the event for the passed dataKey.
|
|
44
|
+
*/
|
|
45
|
+
export default function usePointerEventHandlers<XScale extends AxisScale, YScale extends AxisScale, Datum extends object>({
|
|
46
|
+
dataKey,
|
|
47
|
+
findNearestDatum: findNearestDatumProps,
|
|
48
|
+
onBlur,
|
|
49
|
+
onFocus,
|
|
50
|
+
onPointerMove,
|
|
51
|
+
onPointerOut,
|
|
52
|
+
onPointerUp,
|
|
53
|
+
onPointerDown,
|
|
54
|
+
allowedSources,
|
|
55
|
+
}: PointerEventHandlerParams<XScale, YScale, Datum>) {
|
|
56
|
+
const { width, height, horizontal, dataRegistry, xScale, yScale } = useContext(
|
|
57
|
+
DataContext,
|
|
58
|
+
) as unknown as DataContextType<XScale, YScale, Datum>;
|
|
59
|
+
|
|
60
|
+
const findNearestDatum =
|
|
61
|
+
findNearestDatumProps || (horizontal ? findNearestDatumY : findNearestDatumX);
|
|
62
|
+
|
|
63
|
+
// this logic is shared by pointerup, pointermove, and focus handlers
|
|
64
|
+
const getHandlerParams = useCallback((params?: HandlerParams) => {
|
|
65
|
+
const { svgPoint, event } = params || {};
|
|
66
|
+
const pointerParamsByKey: { [dataKey: string]: EventHandlerParams<Datum> } = {};
|
|
67
|
+
|
|
68
|
+
// nearest Datum across all dataKeys, if relevant
|
|
69
|
+
let nearestDatumPointerParams: EventHandlerParams<Datum> | null = null;
|
|
70
|
+
let nearestDatumDistance = Infinity;
|
|
71
|
+
|
|
72
|
+
if (params && event && svgPoint && width && height) {
|
|
73
|
+
const considerAllKeys = dataKey === POINTER_EVENTS_NEAREST || dataKey === POINTER_EVENTS_ALL;
|
|
74
|
+
|
|
75
|
+
const dataKeys =
|
|
76
|
+
considerAllKeys
|
|
77
|
+
? dataRegistry?.keys() ?? []
|
|
78
|
+
: Array.isArray(dataKey)
|
|
79
|
+
? dataKey
|
|
80
|
+
: [dataKey];
|
|
81
|
+
|
|
82
|
+
// find nearestDatum for relevant dataKey(s)
|
|
83
|
+
dataKeys.forEach((key) => {
|
|
84
|
+
const entry = dataRegistry?.get(key);
|
|
85
|
+
if (entry) {
|
|
86
|
+
const nearestDatum = findNearestDatum({
|
|
87
|
+
dataKey: key,
|
|
88
|
+
data: entry.data,
|
|
89
|
+
height,
|
|
90
|
+
point: svgPoint,
|
|
91
|
+
width,
|
|
92
|
+
xAccessor: entry.xAccessor,
|
|
93
|
+
xScale,
|
|
94
|
+
yAccessor: entry.yAccessor,
|
|
95
|
+
yScale,
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
if (nearestDatum) {
|
|
99
|
+
pointerParamsByKey[key] = { key, svgPoint, event, ...nearestDatum };
|
|
100
|
+
|
|
101
|
+
// compute nearest Datum if not emitting events for all keys
|
|
102
|
+
if (dataKey === POINTER_EVENTS_NEAREST) {
|
|
103
|
+
const distance = Math.sqrt(
|
|
104
|
+
(nearestDatum.distanceX ?? Infinity ** 2) +
|
|
105
|
+
(nearestDatum.distanceY ?? Infinity ** 2),
|
|
106
|
+
);
|
|
107
|
+
nearestDatumPointerParams = distance < nearestDatumDistance
|
|
108
|
+
? pointerParamsByKey[key]
|
|
109
|
+
: nearestDatumPointerParams;
|
|
110
|
+
nearestDatumDistance = Math.min(nearestDatumDistance, distance);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
const pointerParams: (EventHandlerParams<Datum> | null)[] =
|
|
117
|
+
dataKey === POINTER_EVENTS_NEAREST
|
|
118
|
+
? [nearestDatumPointerParams]
|
|
119
|
+
: dataKey === POINTER_EVENTS_ALL || Array.isArray(dataKey)
|
|
120
|
+
? Object.values(pointerParamsByKey)
|
|
121
|
+
: [pointerParamsByKey[dataKey]];
|
|
122
|
+
|
|
123
|
+
return pointerParams.filter((param) => param) as EventHandlerParams<Datum>[];
|
|
124
|
+
}
|
|
125
|
+
return [];
|
|
126
|
+
}, [dataKey, dataRegistry, xScale, yScale, width, height, findNearestDatum]);
|
|
127
|
+
const handlePointerMove = useCallback((params?: HandlerParams) => {
|
|
128
|
+
if (onPointerMove) {
|
|
129
|
+
getHandlerParams(params).forEach((p) => onPointerMove(p));
|
|
130
|
+
}
|
|
131
|
+
}, [getHandlerParams, onPointerMove]);
|
|
132
|
+
const handlePointerUp = useCallback((params?: HandlerParams) => {
|
|
133
|
+
if (onPointerUp) {
|
|
134
|
+
getHandlerParams(params).forEach((p) => onPointerUp(p));
|
|
135
|
+
}
|
|
136
|
+
}, [getHandlerParams, onPointerUp]);
|
|
137
|
+
const handlePointerDown = useCallback((params?: HandlerParams) => {
|
|
138
|
+
if (onPointerDown) {
|
|
139
|
+
getHandlerParams(params).forEach((p) => onPointerDown(p));
|
|
140
|
+
}
|
|
141
|
+
}, [getHandlerParams, onPointerDown]);
|
|
142
|
+
const handleFocus = useCallback((params?: HandlerParams) => {
|
|
143
|
+
if (onFocus) {
|
|
144
|
+
getHandlerParams(params).forEach((p) => onFocus(p));
|
|
145
|
+
}
|
|
146
|
+
}, [getHandlerParams, onFocus]);
|
|
147
|
+
const handlePointerOut = useCallback((params?: HandlerParams) => {
|
|
148
|
+
const event = params?.event;
|
|
149
|
+
if (event && isPointerEvent(event) && onPointerOut) onPointerOut(event);
|
|
150
|
+
}, [onPointerOut]);
|
|
151
|
+
const handleBlur = useCallback((params?: HandlerParams) => {
|
|
152
|
+
const event = params?.event;
|
|
153
|
+
if (event && isFocusEvent(event) && onBlur) onBlur(event);
|
|
154
|
+
}, [onBlur]);
|
|
155
|
+
|
|
156
|
+
useEventEmitter('pointermove', onPointerMove ? handlePointerMove : undefined, allowedSources);
|
|
157
|
+
useEventEmitter('pointerout', onPointerOut ? handlePointerOut : undefined, allowedSources);
|
|
158
|
+
useEventEmitter('pointerup', onPointerUp ? handlePointerUp : undefined, allowedSources);
|
|
159
|
+
useEventEmitter('pointerdown', onPointerDown ? handlePointerDown : undefined, allowedSources);
|
|
160
|
+
useEventEmitter('focus', onFocus ? handleFocus : undefined, allowedSources);
|
|
161
|
+
useEventEmitter('blur', onBlur ? handleBlur : undefined, allowedSources);
|
|
162
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
// Generated by scripts/generate-tsrx-types.mjs.
|
|
2
|
+
import type { AxisScale } from '@octanejs/visx/axis';
|
|
3
|
+
import type { PointerEvent, FocusEvent } from 'react';
|
|
4
|
+
import type { EventHandlerParams, NearestDatumArgs, NearestDatumReturnType } from '../types';
|
|
5
|
+
export declare const POINTER_EVENTS_ALL = "__POINTER_EVENTS_ALL";
|
|
6
|
+
export declare const POINTER_EVENTS_NEAREST = "__POINTER_EVENTS_NEAREST";
|
|
7
|
+
export type PointerEventHandlerParams<XScale extends AxisScale, YScale extends AxisScale, Datum extends object> = {
|
|
8
|
+
/** Controls whether callbacks are invoked for one or more registered dataKeys, the nearest dataKey, or all dataKeys. */
|
|
9
|
+
dataKey: string | string[] | typeof POINTER_EVENTS_NEAREST | typeof POINTER_EVENTS_ALL;
|
|
10
|
+
/** Optionally override the findNearestDatum logic. */
|
|
11
|
+
findNearestDatum?: (params: NearestDatumArgs<XScale, YScale, Datum>) => NearestDatumReturnType<Datum>;
|
|
12
|
+
/** Callback invoked onFocus for one or more series based on dataKey. */
|
|
13
|
+
onFocus?: (params: EventHandlerParams<Datum>) => void;
|
|
14
|
+
/** Callback invoked onBlur. */
|
|
15
|
+
onBlur?: (event: FocusEvent) => void;
|
|
16
|
+
/** Callback invoked onPointerMove for one or more series based on dataKey. */
|
|
17
|
+
onPointerMove?: (params: EventHandlerParams<Datum>) => void;
|
|
18
|
+
/** Callback invoked onPointerOut. */
|
|
19
|
+
onPointerOut?: (event: PointerEvent) => void;
|
|
20
|
+
/** Callback invoked onPointerUp for one or more series based on dataKey. */
|
|
21
|
+
onPointerUp?: (params: EventHandlerParams<Datum>) => void;
|
|
22
|
+
/** Callback invoked onPointerDown for one or more series based on dataKey. */
|
|
23
|
+
onPointerDown?: (params: EventHandlerParams<Datum>) => void;
|
|
24
|
+
/** Valid event sources for which to invoke handlers. */
|
|
25
|
+
allowedSources?: string[];
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Hook that returns PointerEvent handlers that invoke the passed pointer
|
|
29
|
+
* handlers with the nearest datum to the event for the passed dataKey.
|
|
30
|
+
*/
|
|
31
|
+
export default function usePointerEventHandlers<XScale extends AxisScale, YScale extends AxisScale, Datum extends object>({ dataKey, findNearestDatum: findNearestDatumProps, onBlur, onFocus, onPointerMove, onPointerOut, onPointerUp, onPointerDown, allowedSources, }: PointerEventHandlerParams<XScale, YScale, Datum>): void;
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import type { AxisScaleOutput, AxisScale } from '@octanejs/visx/axis';
|
|
2
|
+
import type { ScaleConfig, ScaleInput } from '@octanejs/visx/scale';
|
|
3
|
+
import { createScale, scaleCanBeZeroed } from '@octanejs/visx/scale';
|
|
4
|
+
import { extent as d3Extent } from 'd3-array';
|
|
5
|
+
import { useMemo } from 'octane';
|
|
6
|
+
import type DataRegistry from '../classes/DataRegistry';
|
|
7
|
+
import isDiscreteScale from '../utils/isDiscreteScale';
|
|
8
|
+
|
|
9
|
+
/** A hook for creating memoized x- and y-scales. */
|
|
10
|
+
export default function useScales<XScale extends AxisScale, YScale extends AxisScale, Datum extends object>({
|
|
11
|
+
dataRegistry,
|
|
12
|
+
xRange,
|
|
13
|
+
xScaleConfig,
|
|
14
|
+
yRange,
|
|
15
|
+
yScaleConfig,
|
|
16
|
+
}: {
|
|
17
|
+
xScaleConfig: ScaleConfig<AxisScaleOutput>;
|
|
18
|
+
yScaleConfig: ScaleConfig<AxisScaleOutput>;
|
|
19
|
+
dataRegistry: Omit<DataRegistry<XScale, YScale, Datum>, 'registry' | 'registryKeys'>;
|
|
20
|
+
xRange: [number, number];
|
|
21
|
+
yRange: [number, number];
|
|
22
|
+
}) {
|
|
23
|
+
// pull out memoization keys that are less likely to change
|
|
24
|
+
const registryKeys = dataRegistry.keys();
|
|
25
|
+
const [xMin, xMax] = xRange;
|
|
26
|
+
const [yMin, yMax] = yRange;
|
|
27
|
+
|
|
28
|
+
const memoizedXScale = useMemo(() => {
|
|
29
|
+
const registryEntries = registryKeys.map((key) => dataRegistry.get(key));
|
|
30
|
+
|
|
31
|
+
type XScaleInput = ScaleInput<XScale>;
|
|
32
|
+
|
|
33
|
+
const xValues = registryEntries.reduce<XScaleInput[]>(
|
|
34
|
+
(combined, entry) => entry
|
|
35
|
+
? combined.concat(entry.data.map((d: Datum) => entry.xAccessor(d)))
|
|
36
|
+
: combined,
|
|
37
|
+
[],
|
|
38
|
+
);
|
|
39
|
+
|
|
40
|
+
const configuredDomain = xScaleConfig.domain;
|
|
41
|
+
|
|
42
|
+
// A fixed domain is sufficient for SSR even when a child component owns the
|
|
43
|
+
// series and its registration effect has not run yet.
|
|
44
|
+
if (xValues.length === 0 && configuredDomain == null) return undefined;
|
|
45
|
+
|
|
46
|
+
const xDomain =
|
|
47
|
+
configuredDomain ?? (isDiscreteScale(xScaleConfig) ? xValues : d3Extent(xValues));
|
|
48
|
+
|
|
49
|
+
let xScale = (scaleCanBeZeroed(xScaleConfig)
|
|
50
|
+
? createScale({
|
|
51
|
+
range: [xMin, xMax],
|
|
52
|
+
domain: xDomain as [XScaleInput, XScaleInput],
|
|
53
|
+
zero: true,
|
|
54
|
+
...xScaleConfig,
|
|
55
|
+
})
|
|
56
|
+
: createScale({
|
|
57
|
+
range: [xMin, xMax],
|
|
58
|
+
domain: xDomain as [XScaleInput, XScaleInput],
|
|
59
|
+
...xScaleConfig,
|
|
60
|
+
})) as XScale;
|
|
61
|
+
|
|
62
|
+
// apply any scale updates from the registry
|
|
63
|
+
registryEntries.forEach((entry) => {
|
|
64
|
+
if (entry?.xScale) xScale = entry.xScale(xScale);
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
return xScale;
|
|
68
|
+
}, [dataRegistry, xScaleConfig, registryKeys, xMin, xMax]);
|
|
69
|
+
|
|
70
|
+
// same for yScale. this logic is hard to apply generically because of the scale types / accessors
|
|
71
|
+
const memoizedYScale = useMemo(() => {
|
|
72
|
+
const registryEntries = registryKeys.map((key) => dataRegistry.get(key));
|
|
73
|
+
|
|
74
|
+
type YScaleInput = ScaleInput<YScale>;
|
|
75
|
+
|
|
76
|
+
const yValues = registryEntries.reduce<YScaleInput[]>(
|
|
77
|
+
(combined, entry) => entry
|
|
78
|
+
? combined.concat(entry.data.map((d: Datum) => entry.yAccessor(d)))
|
|
79
|
+
: combined,
|
|
80
|
+
[],
|
|
81
|
+
);
|
|
82
|
+
|
|
83
|
+
const configuredDomain = yScaleConfig.domain;
|
|
84
|
+
|
|
85
|
+
// See the x-scale branch above: explicit domains are complete server input.
|
|
86
|
+
if (yValues.length === 0 && configuredDomain == null) return undefined;
|
|
87
|
+
|
|
88
|
+
const yDomain =
|
|
89
|
+
configuredDomain ?? (isDiscreteScale(yScaleConfig) ? yValues : d3Extent(yValues));
|
|
90
|
+
|
|
91
|
+
let yScale = (scaleCanBeZeroed(yScaleConfig)
|
|
92
|
+
? createScale({
|
|
93
|
+
range: [yMin, yMax],
|
|
94
|
+
domain: yDomain as [YScaleInput, YScaleInput],
|
|
95
|
+
zero: true,
|
|
96
|
+
...yScaleConfig,
|
|
97
|
+
})
|
|
98
|
+
: createScale({
|
|
99
|
+
range: [yMin, yMax],
|
|
100
|
+
domain: yDomain as [YScaleInput, YScaleInput],
|
|
101
|
+
...yScaleConfig,
|
|
102
|
+
})) as YScale;
|
|
103
|
+
|
|
104
|
+
// apply any scale updates from the registry
|
|
105
|
+
registryEntries.forEach((entry) => {
|
|
106
|
+
if (entry?.yScale) yScale = entry.yScale(yScale);
|
|
107
|
+
});
|
|
108
|
+
|
|
109
|
+
return yScale;
|
|
110
|
+
}, [dataRegistry, yScaleConfig, registryKeys, yMin, yMax]);
|
|
111
|
+
|
|
112
|
+
return { xScale: memoizedXScale, yScale: memoizedYScale };
|
|
113
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// Generated by scripts/generate-tsrx-types.mjs.
|
|
2
|
+
import type { AxisScaleOutput, AxisScale } from '@octanejs/visx/axis';
|
|
3
|
+
import type { ScaleConfig } from '@octanejs/visx/scale';
|
|
4
|
+
import type DataRegistry from '../classes/DataRegistry';
|
|
5
|
+
/** A hook for creating memoized x- and y-scales. */
|
|
6
|
+
export default function useScales<XScale extends AxisScale, YScale extends AxisScale, Datum extends object>({ dataRegistry, xRange, xScaleConfig, yRange, yScaleConfig, }: {
|
|
7
|
+
xScaleConfig: ScaleConfig<AxisScaleOutput>;
|
|
8
|
+
yScaleConfig: ScaleConfig<AxisScaleOutput>;
|
|
9
|
+
dataRegistry: Omit<DataRegistry<XScale, YScale, Datum>, 'registry' | 'registryKeys'>;
|
|
10
|
+
xRange: [number, number];
|
|
11
|
+
yRange: [number, number];
|
|
12
|
+
}): {
|
|
13
|
+
xScale: XScale | undefined;
|
|
14
|
+
yScale: YScale | undefined;
|
|
15
|
+
};
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import type { FocusEvent, PointerEvent } from 'react';
|
|
2
|
+
import { useCallback, useContext } from 'octane';
|
|
3
|
+
import type { AxisScale } from '@octanejs/visx/axis';
|
|
4
|
+
import TooltipContext from '../context/TooltipContext.tsrx';
|
|
5
|
+
import type { EventHandlerParams, SeriesProps, TooltipContextType } from '../types';
|
|
6
|
+
import useEventEmitters from './useEventEmitters.tsrx';
|
|
7
|
+
import type { PointerEventHandlerParams } from './useEventHandlers.tsrx';
|
|
8
|
+
import useEventHandlers from './useEventHandlers.tsrx';
|
|
9
|
+
|
|
10
|
+
export type SeriesEventsParams<XScale extends AxisScale, YScale extends AxisScale, Datum extends object> =
|
|
11
|
+
Pick<SeriesProps<XScale, YScale, Datum>, | 'enableEvents'
|
|
12
|
+
| 'onBlur'
|
|
13
|
+
| 'onFocus'
|
|
14
|
+
| 'onPointerMove'
|
|
15
|
+
| 'onPointerOut'
|
|
16
|
+
| 'onPointerUp'
|
|
17
|
+
| 'onPointerDown'> & Pick<PointerEventHandlerParams<XScale, YScale, Datum>, | 'dataKey'
|
|
18
|
+
| 'allowedSources'
|
|
19
|
+
| 'findNearestDatum'> & {
|
|
20
|
+
/** The source of emitted events. */
|
|
21
|
+
source: string;
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
/** This hook simplifies the logic for initializing Series event emitters + handlers. */
|
|
25
|
+
export default function useSeriesEvents<XScale extends AxisScale, YScale extends AxisScale, Datum extends object>({
|
|
26
|
+
dataKey,
|
|
27
|
+
enableEvents,
|
|
28
|
+
findNearestDatum,
|
|
29
|
+
onBlur: onBlurProps,
|
|
30
|
+
onFocus: onFocusProps,
|
|
31
|
+
onPointerMove: onPointerMoveProps,
|
|
32
|
+
onPointerOut: onPointerOutProps,
|
|
33
|
+
onPointerUp: onPointerUpProps,
|
|
34
|
+
onPointerDown: onPointerDownProps,
|
|
35
|
+
source,
|
|
36
|
+
allowedSources,
|
|
37
|
+
}: SeriesEventsParams<XScale, YScale, Datum>) {
|
|
38
|
+
const { showTooltip, hideTooltip } =
|
|
39
|
+
useContext(TooltipContext) ?? {} as TooltipContextType<Datum>;
|
|
40
|
+
const onPointerMove = useCallback((params: EventHandlerParams<Datum>) => {
|
|
41
|
+
showTooltip(params);
|
|
42
|
+
if (onPointerMoveProps) onPointerMoveProps(params);
|
|
43
|
+
}, [showTooltip, onPointerMoveProps]);
|
|
44
|
+
const onFocus = useCallback((params: EventHandlerParams<Datum>) => {
|
|
45
|
+
showTooltip(params);
|
|
46
|
+
if (onFocusProps) onFocusProps(params);
|
|
47
|
+
}, [showTooltip, onFocusProps]);
|
|
48
|
+
const onPointerOut = useCallback((event: PointerEvent) => {
|
|
49
|
+
hideTooltip();
|
|
50
|
+
if (event && onPointerOutProps) onPointerOutProps(event);
|
|
51
|
+
}, [hideTooltip, onPointerOutProps]);
|
|
52
|
+
const onBlur = useCallback((event: FocusEvent) => {
|
|
53
|
+
hideTooltip();
|
|
54
|
+
if (event && onBlurProps) onBlurProps(event);
|
|
55
|
+
}, [hideTooltip, onBlurProps]);
|
|
56
|
+
|
|
57
|
+
const onPointerDown = useCallback((params: EventHandlerParams<Datum>) => {
|
|
58
|
+
showTooltip(params);
|
|
59
|
+
if (onPointerDownProps) onPointerDownProps(params);
|
|
60
|
+
}, [showTooltip, onPointerDownProps]);
|
|
61
|
+
|
|
62
|
+
useEventHandlers({
|
|
63
|
+
dataKey,
|
|
64
|
+
findNearestDatum,
|
|
65
|
+
onBlur: enableEvents ? onBlur : undefined,
|
|
66
|
+
onFocus: enableEvents ? onFocus : undefined,
|
|
67
|
+
onPointerMove: enableEvents ? onPointerMove : undefined,
|
|
68
|
+
onPointerOut: enableEvents ? onPointerOut : undefined,
|
|
69
|
+
onPointerUp: enableEvents ? onPointerUpProps : undefined,
|
|
70
|
+
onPointerDown: enableEvents ? onPointerDown : undefined,
|
|
71
|
+
allowedSources,
|
|
72
|
+
});
|
|
73
|
+
return useEventEmitters({
|
|
74
|
+
source,
|
|
75
|
+
onBlur: !!onBlurProps && enableEvents,
|
|
76
|
+
onFocus: !!onFocusProps && enableEvents,
|
|
77
|
+
onPointerMove: !!onPointerMoveProps && enableEvents,
|
|
78
|
+
onPointerOut: !!onPointerOutProps && enableEvents,
|
|
79
|
+
onPointerUp: !!onPointerUpProps && enableEvents,
|
|
80
|
+
onPointerDown: !!onPointerDownProps && enableEvents,
|
|
81
|
+
});
|
|
82
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// Generated by scripts/generate-tsrx-types.mjs.
|
|
2
|
+
import type { FocusEvent, PointerEvent } from 'react';
|
|
3
|
+
import type { AxisScale } from '@octanejs/visx/axis';
|
|
4
|
+
import type { SeriesProps } from '../types';
|
|
5
|
+
import type { PointerEventHandlerParams } from './useEventHandlers.tsrx';
|
|
6
|
+
export type SeriesEventsParams<XScale extends AxisScale, YScale extends AxisScale, Datum extends object> = Pick<SeriesProps<XScale, YScale, Datum>, 'enableEvents' | 'onBlur' | 'onFocus' | 'onPointerMove' | 'onPointerOut' | 'onPointerUp' | 'onPointerDown'> & Pick<PointerEventHandlerParams<XScale, YScale, Datum>, 'dataKey' | 'allowedSources' | 'findNearestDatum'> & {
|
|
7
|
+
/** The source of emitted events. */
|
|
8
|
+
source: string;
|
|
9
|
+
};
|
|
10
|
+
/** This hook simplifies the logic for initializing Series event emitters + handlers. */
|
|
11
|
+
export default function useSeriesEvents<XScale extends AxisScale, YScale extends AxisScale, Datum extends object>({ dataKey, enableEvents, findNearestDatum, onBlur: onBlurProps, onFocus: onFocusProps, onPointerMove: onPointerMoveProps, onPointerOut: onPointerOutProps, onPointerUp: onPointerUpProps, onPointerDown: onPointerDownProps, source, allowedSources, }: SeriesEventsParams<XScale, YScale, Datum>): {
|
|
12
|
+
onPointerMove: ((event: PointerEvent) => void | undefined) | undefined;
|
|
13
|
+
onFocus: ((event: FocusEvent) => void | undefined) | undefined;
|
|
14
|
+
onBlur: ((event: FocusEvent) => void | undefined) | undefined;
|
|
15
|
+
onPointerOut: ((event: PointerEvent) => void | undefined) | undefined;
|
|
16
|
+
onPointerUp: ((event: PointerEvent) => void | undefined) | undefined;
|
|
17
|
+
onPointerDown: ((event: PointerEvent) => void | undefined) | undefined;
|
|
18
|
+
};
|