@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,214 @@
|
|
|
1
|
+
import type { MouseEvent, TouchEvent, PointerEvent } from 'react';
|
|
2
|
+
import { useCallback, useEffect, useRef, useState } from 'octane';
|
|
3
|
+
import { Point, subtractPoints, sumPoints } from '@octanejs/visx/point';
|
|
4
|
+
import { localPoint } from '@octanejs/visx/event';
|
|
5
|
+
import useStateWithCallback from './util/useStateWithCallback.tsrx';
|
|
6
|
+
import restrictPoint from './util/restrictPoint';
|
|
7
|
+
import useSamplesAlongPath from './util/useSamplesAlongPath.tsrx';
|
|
8
|
+
|
|
9
|
+
export type MouseTouchOrPointerEvent = MouseEvent | TouchEvent | PointerEvent;
|
|
10
|
+
|
|
11
|
+
export type HandlerArgs = DragState & {
|
|
12
|
+
/** Drag event. */
|
|
13
|
+
event: MouseTouchOrPointerEvent;
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
export type UseDragOptions = {
|
|
17
|
+
/** Whether to reset drag state upon the start of a new drag. */
|
|
18
|
+
resetOnStart?: boolean;
|
|
19
|
+
/** Optional callback invoked upon drag end. */
|
|
20
|
+
onDragEnd?: (args: HandlerArgs) => void;
|
|
21
|
+
/** Optional callback invoked upon drag movement. */
|
|
22
|
+
onDragMove?: (args: HandlerArgs) => void;
|
|
23
|
+
/** Optional callback invoked upon drag start. */
|
|
24
|
+
onDragStart?: (args: HandlerArgs) => void;
|
|
25
|
+
/** Optionally set the initial drag x, or override the current drag x. */
|
|
26
|
+
x?: number;
|
|
27
|
+
/** Optionally set the initial drag y, or override the current drag y. */
|
|
28
|
+
y?: number;
|
|
29
|
+
/** Optionally set the initial drag dx, or override the current drag dx. */
|
|
30
|
+
dx?: number;
|
|
31
|
+
/** Optionally set the initial drag dy, or override the current drag dy. */
|
|
32
|
+
dy?: number;
|
|
33
|
+
/** If defined, parent controls dragging state. */
|
|
34
|
+
isDragging?: boolean;
|
|
35
|
+
/** Snap element being dragged to middle of pointer. */
|
|
36
|
+
snapToPointer?: boolean;
|
|
37
|
+
/** Options for limiting dragging in the x and y plane. */
|
|
38
|
+
restrict?: {
|
|
39
|
+
xMin?: number;
|
|
40
|
+
xMax?: number;
|
|
41
|
+
yMin?: number;
|
|
42
|
+
yMax?: number;
|
|
43
|
+
};
|
|
44
|
+
/** Limit drag to an SVG path. Overrides `restrict` constraints. */
|
|
45
|
+
restrictToPath?: SVGGeometryElement | null;
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
export type DragState = {
|
|
49
|
+
/** x position of drag at drag start time, reset to 0 if `resetOnStart=true`. */
|
|
50
|
+
x?: number;
|
|
51
|
+
/** y position of drag at drag start time, reset to 0 if `resetOnStart=true`. */
|
|
52
|
+
y?: number;
|
|
53
|
+
/** Change in x position since drag start, reset to 0 on drag start if `resetOnStart=true`. */
|
|
54
|
+
dx: number;
|
|
55
|
+
/** Change in y position since drag start, reset to 0 on drag start if `resetOnStart=true`. */
|
|
56
|
+
dy: number;
|
|
57
|
+
/** Whether a drag is currently in progress. */
|
|
58
|
+
isDragging: boolean;
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
export type UseDrag = DragState & {
|
|
62
|
+
/** Callback to be be invoked on drag end. */
|
|
63
|
+
dragEnd: (event: MouseTouchOrPointerEvent) => void;
|
|
64
|
+
/** Callback to be be invoked on drag move. */
|
|
65
|
+
dragMove: (event: MouseTouchOrPointerEvent) => void;
|
|
66
|
+
/** Callback to be be invoked on drag start. */
|
|
67
|
+
dragStart: (event: MouseTouchOrPointerEvent) => void;
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
/** Hook for dragging, returns a `UseDrag` object. */
|
|
71
|
+
export default function useDrag(
|
|
72
|
+
{
|
|
73
|
+
resetOnStart = false,
|
|
74
|
+
snapToPointer = true,
|
|
75
|
+
onDragEnd,
|
|
76
|
+
onDragMove,
|
|
77
|
+
onDragStart,
|
|
78
|
+
x,
|
|
79
|
+
y,
|
|
80
|
+
dx,
|
|
81
|
+
dy,
|
|
82
|
+
isDragging,
|
|
83
|
+
restrict = {},
|
|
84
|
+
restrictToPath,
|
|
85
|
+
}: UseDragOptions | undefined = {},
|
|
86
|
+
): UseDrag {
|
|
87
|
+
// use ref to detect prop changes
|
|
88
|
+
const positionPropsRef = useRef({ x, y, dx, dy });
|
|
89
|
+
|
|
90
|
+
const [dragState, setDragStateWithCallback] = useStateWithCallback<DragState>({
|
|
91
|
+
x,
|
|
92
|
+
y,
|
|
93
|
+
dx: dx ?? 0,
|
|
94
|
+
dy: dy ?? 0,
|
|
95
|
+
isDragging: false,
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
// Track distance between pointer on dragStart and position of element being dragged
|
|
99
|
+
const [dragStartPointerOffset, setDragStartPointerOffset] = useState<Point>(
|
|
100
|
+
new Point({ x: 0, y: 0 }),
|
|
101
|
+
);
|
|
102
|
+
|
|
103
|
+
// if prop position changes, update state
|
|
104
|
+
useEffect(() => {
|
|
105
|
+
if (
|
|
106
|
+
positionPropsRef.current.x !== x || positionPropsRef.current.y !== y ||
|
|
107
|
+
positionPropsRef.current.dx !== dx ||
|
|
108
|
+
positionPropsRef.current.dy !== dy
|
|
109
|
+
) {
|
|
110
|
+
positionPropsRef.current = { x, y, dx, dy };
|
|
111
|
+
setDragStateWithCallback(
|
|
112
|
+
(currState) => ({
|
|
113
|
+
...currState,
|
|
114
|
+
x,
|
|
115
|
+
y,
|
|
116
|
+
dx: dx ?? 0,
|
|
117
|
+
dy: dy ?? 0,
|
|
118
|
+
}),
|
|
119
|
+
);
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
|
|
123
|
+
useEffect(() => {
|
|
124
|
+
if (isDragging !== undefined && dragState.isDragging !== isDragging) {
|
|
125
|
+
setDragStateWithCallback((currState) => ({ ...currState, isDragging }));
|
|
126
|
+
}
|
|
127
|
+
}, [dragState.isDragging, isDragging, setDragStateWithCallback]);
|
|
128
|
+
|
|
129
|
+
const restrictToPathSamples = useSamplesAlongPath(restrictToPath);
|
|
130
|
+
|
|
131
|
+
const handleDragStart = useCallback((event: MouseTouchOrPointerEvent) => {
|
|
132
|
+
event.persist?.();
|
|
133
|
+
|
|
134
|
+
setDragStateWithCallback((currState) => {
|
|
135
|
+
// eslint-disable-next-line no-shadow
|
|
136
|
+
const { x = 0, y = 0, dx, dy } = currState;
|
|
137
|
+
const currentPoint = new Point({
|
|
138
|
+
x: (x || 0) + dx,
|
|
139
|
+
y: (y || 0) + dy,
|
|
140
|
+
});
|
|
141
|
+
const eventPoint = localPoint(event) || new Point({ x: 0, y: 0 });
|
|
142
|
+
const point = snapToPointer ? eventPoint : currentPoint;
|
|
143
|
+
const dragPoint = restrictPoint(point, restrictToPathSamples, restrict);
|
|
144
|
+
|
|
145
|
+
setDragStartPointerOffset(subtractPoints(currentPoint, eventPoint));
|
|
146
|
+
|
|
147
|
+
return {
|
|
148
|
+
isDragging: true,
|
|
149
|
+
dx: resetOnStart ? 0 : currState.dx,
|
|
150
|
+
dy: resetOnStart ? 0 : currState.dy,
|
|
151
|
+
x: resetOnStart ? dragPoint.x : dragPoint.x - currState.dx,
|
|
152
|
+
y: resetOnStart ? dragPoint.y : dragPoint.y - currState.dy,
|
|
153
|
+
};
|
|
154
|
+
}, onDragStart &&
|
|
155
|
+
((currState) => {
|
|
156
|
+
onDragStart({ ...currState, event });
|
|
157
|
+
}));
|
|
158
|
+
}, [
|
|
159
|
+
onDragStart,
|
|
160
|
+
resetOnStart,
|
|
161
|
+
restrict,
|
|
162
|
+
restrictToPathSamples,
|
|
163
|
+
setDragStateWithCallback,
|
|
164
|
+
snapToPointer,
|
|
165
|
+
]);
|
|
166
|
+
|
|
167
|
+
const handleDragMove = useCallback((event: MouseTouchOrPointerEvent) => {
|
|
168
|
+
event.persist?.();
|
|
169
|
+
|
|
170
|
+
setDragStateWithCallback((currState) => {
|
|
171
|
+
if (!currState.isDragging) return currState;
|
|
172
|
+
// eslint-disable-next-line no-shadow
|
|
173
|
+
const { x = 0, y = 0 } = currState;
|
|
174
|
+
const pointerPoint = localPoint(event) || new Point({ x: 0, y: 0 });
|
|
175
|
+
const point =
|
|
176
|
+
snapToPointer ? pointerPoint : sumPoints(pointerPoint, dragStartPointerOffset);
|
|
177
|
+
const dragPoint = restrictPoint(point, restrictToPathSamples, restrict);
|
|
178
|
+
return {
|
|
179
|
+
...currState,
|
|
180
|
+
dx: dragPoint.x - x,
|
|
181
|
+
dy: dragPoint.y - y,
|
|
182
|
+
};
|
|
183
|
+
}, onDragMove &&
|
|
184
|
+
((currState) => {
|
|
185
|
+
if (currState.isDragging) onDragMove({ ...currState, event });
|
|
186
|
+
}));
|
|
187
|
+
}, [
|
|
188
|
+
setDragStateWithCallback,
|
|
189
|
+
onDragMove,
|
|
190
|
+
snapToPointer,
|
|
191
|
+
dragStartPointerOffset,
|
|
192
|
+
restrictToPathSamples,
|
|
193
|
+
restrict,
|
|
194
|
+
]);
|
|
195
|
+
|
|
196
|
+
const handleDragEnd = useCallback((event: MouseTouchOrPointerEvent) => {
|
|
197
|
+
event.persist?.();
|
|
198
|
+
|
|
199
|
+
setDragStateWithCallback(
|
|
200
|
+
(currState) => ({ ...currState, isDragging: false }),
|
|
201
|
+
onDragEnd &&
|
|
202
|
+
((currState) => {
|
|
203
|
+
onDragEnd({ ...currState, event });
|
|
204
|
+
}),
|
|
205
|
+
);
|
|
206
|
+
}, [onDragEnd, setDragStateWithCallback]);
|
|
207
|
+
|
|
208
|
+
return {
|
|
209
|
+
...dragState,
|
|
210
|
+
dragEnd: handleDragEnd,
|
|
211
|
+
dragMove: handleDragMove,
|
|
212
|
+
dragStart: handleDragStart,
|
|
213
|
+
};
|
|
214
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
// Generated by scripts/generate-tsrx-types.mjs.
|
|
2
|
+
import type { MouseEvent, TouchEvent, PointerEvent } from 'react';
|
|
3
|
+
export type MouseTouchOrPointerEvent = MouseEvent | TouchEvent | PointerEvent;
|
|
4
|
+
export type HandlerArgs = DragState & {
|
|
5
|
+
/** Drag event. */
|
|
6
|
+
event: MouseTouchOrPointerEvent;
|
|
7
|
+
};
|
|
8
|
+
export type UseDragOptions = {
|
|
9
|
+
/** Whether to reset drag state upon the start of a new drag. */
|
|
10
|
+
resetOnStart?: boolean;
|
|
11
|
+
/** Optional callback invoked upon drag end. */
|
|
12
|
+
onDragEnd?: (args: HandlerArgs) => void;
|
|
13
|
+
/** Optional callback invoked upon drag movement. */
|
|
14
|
+
onDragMove?: (args: HandlerArgs) => void;
|
|
15
|
+
/** Optional callback invoked upon drag start. */
|
|
16
|
+
onDragStart?: (args: HandlerArgs) => void;
|
|
17
|
+
/** Optionally set the initial drag x, or override the current drag x. */
|
|
18
|
+
x?: number;
|
|
19
|
+
/** Optionally set the initial drag y, or override the current drag y. */
|
|
20
|
+
y?: number;
|
|
21
|
+
/** Optionally set the initial drag dx, or override the current drag dx. */
|
|
22
|
+
dx?: number;
|
|
23
|
+
/** Optionally set the initial drag dy, or override the current drag dy. */
|
|
24
|
+
dy?: number;
|
|
25
|
+
/** If defined, parent controls dragging state. */
|
|
26
|
+
isDragging?: boolean;
|
|
27
|
+
/** Snap element being dragged to middle of pointer. */
|
|
28
|
+
snapToPointer?: boolean;
|
|
29
|
+
/** Options for limiting dragging in the x and y plane. */
|
|
30
|
+
restrict?: {
|
|
31
|
+
xMin?: number;
|
|
32
|
+
xMax?: number;
|
|
33
|
+
yMin?: number;
|
|
34
|
+
yMax?: number;
|
|
35
|
+
};
|
|
36
|
+
/** Limit drag to an SVG path. Overrides `restrict` constraints. */
|
|
37
|
+
restrictToPath?: SVGGeometryElement | null;
|
|
38
|
+
};
|
|
39
|
+
export type DragState = {
|
|
40
|
+
/** x position of drag at drag start time, reset to 0 if `resetOnStart=true`. */
|
|
41
|
+
x?: number;
|
|
42
|
+
/** y position of drag at drag start time, reset to 0 if `resetOnStart=true`. */
|
|
43
|
+
y?: number;
|
|
44
|
+
/** Change in x position since drag start, reset to 0 on drag start if `resetOnStart=true`. */
|
|
45
|
+
dx: number;
|
|
46
|
+
/** Change in y position since drag start, reset to 0 on drag start if `resetOnStart=true`. */
|
|
47
|
+
dy: number;
|
|
48
|
+
/** Whether a drag is currently in progress. */
|
|
49
|
+
isDragging: boolean;
|
|
50
|
+
};
|
|
51
|
+
export type UseDrag = DragState & {
|
|
52
|
+
/** Callback to be be invoked on drag end. */
|
|
53
|
+
dragEnd: (event: MouseTouchOrPointerEvent) => void;
|
|
54
|
+
/** Callback to be be invoked on drag move. */
|
|
55
|
+
dragMove: (event: MouseTouchOrPointerEvent) => void;
|
|
56
|
+
/** Callback to be be invoked on drag start. */
|
|
57
|
+
dragStart: (event: MouseTouchOrPointerEvent) => void;
|
|
58
|
+
};
|
|
59
|
+
/** Hook for dragging, returns a `UseDrag` object. */
|
|
60
|
+
export default function useDrag({ resetOnStart, snapToPointer, onDragEnd, onDragMove, onDragStart, x, y, dx, dy, isDragging, restrict, restrictToPath, }?: UseDragOptions | undefined): UseDrag;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/** Gets closest point from list of points */
|
|
2
|
+
export default function getClosestPoint(point: { x: number; y: number }, samples: DOMPoint[]) {
|
|
3
|
+
let closestPoint = point;
|
|
4
|
+
let minDistance = Infinity;
|
|
5
|
+
for (const sample of samples) {
|
|
6
|
+
const distance = Math.sqrt((sample.x - point.x) ** 2 + (sample.y - point.y) ** 2);
|
|
7
|
+
if (distance < minDistance) {
|
|
8
|
+
minDistance = distance;
|
|
9
|
+
closestPoint = { x: sample.x, y: sample.y };
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
return closestPoint;
|
|
13
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/** Given at an array of items, moves the item at the specified index to the end of the array. */
|
|
2
|
+
export default function raise<T>(items: T[], raiseIndex: number) {
|
|
3
|
+
const array = [...items];
|
|
4
|
+
const lastIndex = array.length - 1;
|
|
5
|
+
const [raiseItem] = array.splice(raiseIndex, 1);
|
|
6
|
+
array.splice(lastIndex, 0, raiseItem);
|
|
7
|
+
return array;
|
|
8
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { UseDragOptions } from '../useDrag.tsrx';
|
|
2
|
+
import clampNumber from './clampNumber';
|
|
3
|
+
import getClosestPoint from './getClosestPoint';
|
|
4
|
+
|
|
5
|
+
/** Restrict a point to an area, or samples along a path. */
|
|
6
|
+
export default function restrictPoint(
|
|
7
|
+
point: { x: number; y: number },
|
|
8
|
+
samples: DOMPoint[],
|
|
9
|
+
restrict: UseDragOptions['restrict'] = {},
|
|
10
|
+
) {
|
|
11
|
+
if (samples.length > 0) {
|
|
12
|
+
return getClosestPoint(point, samples);
|
|
13
|
+
}
|
|
14
|
+
return {
|
|
15
|
+
x: clampNumber(point.x, restrict.xMin ?? -Infinity, restrict.xMax ?? Infinity),
|
|
16
|
+
y: clampNumber(point.y, restrict.yMin ?? -Infinity, restrict.yMax ?? Infinity),
|
|
17
|
+
};
|
|
18
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { useMemo } from 'octane';
|
|
2
|
+
|
|
3
|
+
function getSamples(restrictToPath: SVGGeometryElement, transform?: DOMMatrix, precision = 1) {
|
|
4
|
+
if (!restrictToPath) return [];
|
|
5
|
+
const samples = [];
|
|
6
|
+
const pathLength = restrictToPath.getTotalLength();
|
|
7
|
+
for (let sampleLength = 0; sampleLength <= pathLength; sampleLength += precision) {
|
|
8
|
+
const sample = restrictToPath.getPointAtLength(sampleLength);
|
|
9
|
+
const transformedSample = sample.matrixTransform(transform);
|
|
10
|
+
samples.push(transformedSample);
|
|
11
|
+
}
|
|
12
|
+
return samples;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/** Return samples along a path, relative to the parent SVG */
|
|
16
|
+
export default function useSamplesAlongPath(restrictToPath?: SVGGeometryElement | null) {
|
|
17
|
+
const samples = useMemo(() => {
|
|
18
|
+
if (!restrictToPath) return [];
|
|
19
|
+
const transform = restrictToPath.getCTM() || new DOMMatrix();
|
|
20
|
+
return getSamples(restrictToPath, transform);
|
|
21
|
+
// The path can transform without triggering a re-render,
|
|
22
|
+
// so we need to update the samples whenever the length changes.
|
|
23
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
24
|
+
}, [restrictToPath?.getTotalLength()]);
|
|
25
|
+
return samples;
|
|
26
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { useCallback, useLayoutEffect, useRef, useState } from 'octane';
|
|
2
|
+
|
|
3
|
+
type SetStateWithCallback<State> =
|
|
4
|
+
(nextState: State | ((currState: State) => State), callback?: (currState: State) => void) => void;
|
|
5
|
+
|
|
6
|
+
/** A hook that exposes a setState(state, callback) API similar to a component class. */
|
|
7
|
+
export default function useStateWithCallback<State>(initialState: State): [State, SetStateWithCallback<State>] {
|
|
8
|
+
const [state, setState] = useState(initialState);
|
|
9
|
+
const callbackRef = useRef<null | ((s: State) => void)>(null);
|
|
10
|
+
|
|
11
|
+
const setStateCallback = useCallback<SetStateWithCallback<State>>((nextState, callback) => {
|
|
12
|
+
callbackRef.current = callback || null;
|
|
13
|
+
setState(nextState);
|
|
14
|
+
}, [setState]);
|
|
15
|
+
|
|
16
|
+
// if we use useEffect, some callback invocations are skipped
|
|
17
|
+
useLayoutEffect(() => {
|
|
18
|
+
// `null` on initial render, so we only execute callback on state *updates*
|
|
19
|
+
if (callbackRef.current) {
|
|
20
|
+
callbackRef.current(state);
|
|
21
|
+
callbackRef.current = null; // reset callback after execution
|
|
22
|
+
}
|
|
23
|
+
}, [state]);
|
|
24
|
+
|
|
25
|
+
return [state, setStateCallback];
|
|
26
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
// Generated by scripts/generate-tsrx-types.mjs.
|
|
2
|
+
type SetStateWithCallback<State> = (nextState: State | ((currState: State) => State), callback?: (currState: State) => void) => void;
|
|
3
|
+
/** A hook that exposes a setState(state, callback) API similar to a component class. */
|
|
4
|
+
export default function useStateWithCallback<State>(initialState: State): [State, SetStateWithCallback<State>];
|
|
5
|
+
export {};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { EventType } from './types';
|
|
2
|
+
import { isMouseEvent, isTouchEvent } from './typeGuards';
|
|
3
|
+
|
|
4
|
+
const DEFAULT_POINT = { x: 0, y: 0 };
|
|
5
|
+
|
|
6
|
+
export default function getXAndYFromEvent(event?: EventType) {
|
|
7
|
+
if (!event) return { ...DEFAULT_POINT };
|
|
8
|
+
|
|
9
|
+
if (isTouchEvent(event)) {
|
|
10
|
+
return event.changedTouches.length > 0
|
|
11
|
+
? {
|
|
12
|
+
x: event.changedTouches[0].clientX,
|
|
13
|
+
y: event.changedTouches[0].clientY,
|
|
14
|
+
}
|
|
15
|
+
: { ...DEFAULT_POINT };
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
if (isMouseEvent(event)) {
|
|
19
|
+
return {
|
|
20
|
+
x: event.clientX,
|
|
21
|
+
y: event.clientY,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
// for focus events try to extract the center position of the target element
|
|
26
|
+
const target = event?.target;
|
|
27
|
+
const boundingClientRect =
|
|
28
|
+
target && 'getBoundingClientRect' in target ? target.getBoundingClientRect() : null;
|
|
29
|
+
|
|
30
|
+
if (!boundingClientRect) return { ...DEFAULT_POINT };
|
|
31
|
+
|
|
32
|
+
return {
|
|
33
|
+
x: boundingClientRect.x + boundingClientRect.width / 2,
|
|
34
|
+
y: boundingClientRect.y + boundingClientRect.height / 2,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import localPointGeneric from './localPointGeneric';
|
|
2
|
+
import type { EventType } from './types';
|
|
3
|
+
import { isElement, isEvent } from './typeGuards';
|
|
4
|
+
|
|
5
|
+
/** Handles two signatures for backwards compatibility. */
|
|
6
|
+
export default function localPoint(nodeOrEvent: Element | EventType, maybeEvent?: EventType) {
|
|
7
|
+
// localPoint(node, event)
|
|
8
|
+
if (isElement(nodeOrEvent) && maybeEvent) {
|
|
9
|
+
return localPointGeneric(nodeOrEvent, maybeEvent);
|
|
10
|
+
}
|
|
11
|
+
// localPoint(event)
|
|
12
|
+
if (isEvent(nodeOrEvent)) {
|
|
13
|
+
const event = nodeOrEvent;
|
|
14
|
+
const node = event.target as Element;
|
|
15
|
+
if (node) return localPointGeneric(node, event);
|
|
16
|
+
}
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Point } from '@octanejs/visx/point';
|
|
2
|
+
import type { EventType } from './types';
|
|
3
|
+
import { isSVGElement, isSVGGraphicsElement, isSVGSVGElement } from './typeGuards';
|
|
4
|
+
import getXAndYFromEvent from './getXAndYFromEvent';
|
|
5
|
+
|
|
6
|
+
export default function localPoint(node: Element, event: EventType) {
|
|
7
|
+
if (!node || !event) return null;
|
|
8
|
+
|
|
9
|
+
const coords = getXAndYFromEvent(event);
|
|
10
|
+
|
|
11
|
+
// find top-most SVG
|
|
12
|
+
const svg = isSVGElement(node) ? node.ownerSVGElement : node;
|
|
13
|
+
const screenCTM = isSVGGraphicsElement(svg) ? svg.getScreenCTM() : null;
|
|
14
|
+
|
|
15
|
+
if (isSVGSVGElement(svg) && screenCTM) {
|
|
16
|
+
let point = svg.createSVGPoint();
|
|
17
|
+
point.x = coords.x;
|
|
18
|
+
point.y = coords.y;
|
|
19
|
+
point = point.matrixTransform(screenCTM.inverse());
|
|
20
|
+
|
|
21
|
+
return new Point({
|
|
22
|
+
x: point.x,
|
|
23
|
+
y: point.y,
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// fall back to bounding box
|
|
28
|
+
const rect = node.getBoundingClientRect();
|
|
29
|
+
|
|
30
|
+
return new Point({
|
|
31
|
+
x: coords.x - rect.left - node.clientLeft,
|
|
32
|
+
y: coords.y - rect.top - node.clientTop,
|
|
33
|
+
});
|
|
34
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { EventType } from './types';
|
|
2
|
+
|
|
3
|
+
export function isElement(elem?: Element | EventType): elem is Element {
|
|
4
|
+
return !!elem && elem instanceof Element;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
// functional definition of isSVGElement. Note that SVGSVGElements are HTMLElements
|
|
8
|
+
export function isSVGElement(elem?: Element): elem is SVGElement {
|
|
9
|
+
return !!elem && (elem instanceof SVGElement || 'ownerSVGElement' in elem);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
// functional definition of SVGGElement
|
|
13
|
+
export function isSVGSVGElement(elem?: Element | null): elem is SVGSVGElement {
|
|
14
|
+
return !!elem && 'createSVGPoint' in elem;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export function isSVGGraphicsElement(elem?: Element | null): elem is SVGGraphicsElement {
|
|
18
|
+
return !!elem && 'getScreenCTM' in elem;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// functional definition of TouchEvent
|
|
22
|
+
export function isTouchEvent(event?: EventType): event is TouchEvent {
|
|
23
|
+
return !!event && 'changedTouches' in event;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// functional definition of MouseEvent
|
|
27
|
+
export function isMouseEvent(event?: EventType): event is MouseEvent {
|
|
28
|
+
return !!event && 'clientX' in event;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// functional definition of event
|
|
32
|
+
export function isEvent(event?: EventType | Element): event is EventType {
|
|
33
|
+
return (
|
|
34
|
+
!!event &&
|
|
35
|
+
(event instanceof Event || ('nativeEvent' in event && event.nativeEvent instanceof Event))
|
|
36
|
+
);
|
|
37
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
FocusEvent as ReactFocusEvent,
|
|
3
|
+
MouseEvent as ReactMouseEvent,
|
|
4
|
+
TouchEvent as ReactTouchEvent,
|
|
5
|
+
} from 'react';
|
|
6
|
+
|
|
7
|
+
export type EventType =
|
|
8
|
+
| MouseEvent
|
|
9
|
+
| TouchEvent
|
|
10
|
+
| FocusEvent
|
|
11
|
+
| ReactFocusEvent
|
|
12
|
+
| ReactMouseEvent
|
|
13
|
+
| ReactTouchEvent;
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import type { ReactNode, SVGProps } from 'react';
|
|
2
|
+
import { Group } from '@octanejs/visx/group';
|
|
3
|
+
import type { GeoGraticuleGenerator } from 'd3-geo';
|
|
4
|
+
import { geoGraticule } from 'd3-geo';
|
|
5
|
+
// eslint-disable-next-line import/no-unresolved
|
|
6
|
+
import type { LineString, MultiLineString, Polygon } from 'geojson';
|
|
7
|
+
|
|
8
|
+
export type GraticuleProps = {
|
|
9
|
+
/**
|
|
10
|
+
* Render function for graticules which is passed a GeoJSON MultiLineString geometry object
|
|
11
|
+
* representing all meridians and parallels for the graticule.
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* Render function for graticules which is passed a GeoJSON MultiLineString geometry object
|
|
15
|
+
* representing all meridians and parallels for the graticule.
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* Render function for graticules which is passed a GeoJSON MultiLineString geometry object
|
|
19
|
+
* representing all meridians and parallels for the graticule.
|
|
20
|
+
*/
|
|
21
|
+
/**
|
|
22
|
+
* Render function for graticules which is passed a GeoJSON MultiLineString geometry object
|
|
23
|
+
* representing all meridians and parallels for the graticule.
|
|
24
|
+
*/
|
|
25
|
+
graticule?: (multiLineString: MultiLineString) => string;
|
|
26
|
+
/**
|
|
27
|
+
* Render function for graticule lines, which is invoked once for each meridian or parallel for the graticule,
|
|
28
|
+
* and is passed the GeoJSON LineString object representing said meridian or parallel.
|
|
29
|
+
*/
|
|
30
|
+
lines?: (lineString: LineString) => string;
|
|
31
|
+
/**
|
|
32
|
+
* Render function for the outline of the graticule (i.e. along the meridians and parallels defining its extent).
|
|
33
|
+
* It is passed a GeoJSON Polygon geometry object representing the outline.
|
|
34
|
+
*/
|
|
35
|
+
outline?: (polygon: Polygon) => string;
|
|
36
|
+
/** Override render function, which is passed the configured graticule generator. */
|
|
37
|
+
children?: ({
|
|
38
|
+
graticule,
|
|
39
|
+
}: {
|
|
40
|
+
graticule: GeoGraticuleGenerator;
|
|
41
|
+
}) => ReactNode;
|
|
42
|
+
/** Sets the major and minor extents of the graticule generator, which defaults to ⟨⟨-180°, -80° - ε⟩, ⟨180°, 80° + ε⟩⟩. */
|
|
43
|
+
extent?: [[number, number], [number, number]];
|
|
44
|
+
/** Sets the major extent of the graticule generator, which defaults to ⟨⟨-180°, -90° + ε⟩, ⟨180°, 90° - ε⟩⟩. */
|
|
45
|
+
extentMajor?: [[number, number], [number, number]];
|
|
46
|
+
/** Sets the major extent of the graticule generator, which defaults to ⟨⟨-180°, -80° - ε⟩, ⟨180°, 80° + ε⟩⟩. */
|
|
47
|
+
extentMinor?: [[number, number], [number, number]];
|
|
48
|
+
/** Sets both the major and minor step of the graticule generator. */
|
|
49
|
+
step?: [number, number];
|
|
50
|
+
/** Sets the major step of the graticule generator, which defaults to ⟨90°, 360°⟩. */
|
|
51
|
+
stepMajor?: [number, number];
|
|
52
|
+
/** Sets the major step of the graticule generator, which defaults to ⟨10°, 10°⟩. */
|
|
53
|
+
stepMinor?: [number, number];
|
|
54
|
+
/** Sets the precision of the graticule generator, which defaults to 2.5°. */
|
|
55
|
+
precision?: number;
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
export default function Graticule({
|
|
59
|
+
graticule,
|
|
60
|
+
lines,
|
|
61
|
+
outline,
|
|
62
|
+
extent,
|
|
63
|
+
extentMajor,
|
|
64
|
+
extentMinor,
|
|
65
|
+
step,
|
|
66
|
+
stepMajor,
|
|
67
|
+
stepMinor,
|
|
68
|
+
precision,
|
|
69
|
+
children,
|
|
70
|
+
...restProps
|
|
71
|
+
}: GraticuleProps & Omit<SVGProps<SVGPathElement>, keyof GraticuleProps>) {
|
|
72
|
+
const currGraticule = geoGraticule();
|
|
73
|
+
|
|
74
|
+
if (extent) currGraticule.extent(extent);
|
|
75
|
+
if (extentMajor) currGraticule.extentMajor(extentMajor);
|
|
76
|
+
if (extentMinor) currGraticule.extentMinor(extentMinor);
|
|
77
|
+
if (step) currGraticule.step(step);
|
|
78
|
+
if (stepMajor) currGraticule.stepMajor(stepMajor);
|
|
79
|
+
if (stepMinor) currGraticule.stepMinor(stepMinor);
|
|
80
|
+
if (precision) currGraticule.precision(precision);
|
|
81
|
+
|
|
82
|
+
if (children) return <>
|
|
83
|
+
{children({ graticule: currGraticule })}
|
|
84
|
+
</>;
|
|
85
|
+
|
|
86
|
+
return <Group className="visx-geo-graticule">
|
|
87
|
+
{graticule && <path d={graticule(currGraticule())} fill="none" stroke="black" {...restProps} />}
|
|
88
|
+
{lines &&
|
|
89
|
+
currGraticule.lines().map(
|
|
90
|
+
(line, i) => <g key={i}>
|
|
91
|
+
<path d={lines(line)} fill="none" stroke="black" {...restProps} />
|
|
92
|
+
</g>,
|
|
93
|
+
)}
|
|
94
|
+
{outline &&
|
|
95
|
+
<path d={outline(currGraticule.outline())} fill="none" stroke="black" {...restProps} />}
|
|
96
|
+
</Group>;
|
|
97
|
+
}
|