@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,66 @@
|
|
|
1
|
+
import type { CSSProperties, ReactNode, HTMLAttributes } from 'react';
|
|
2
|
+
import type { ParentSizeState, UseParentSizeConfig } from '../hooks/useParentSize.tsrx';
|
|
3
|
+
import useParentSize from '../hooks/useParentSize.tsrx';
|
|
4
|
+
|
|
5
|
+
export type ParentSizeProvidedProps = ParentSizeState & {
|
|
6
|
+
ref: HTMLDivElement | null;
|
|
7
|
+
resize: (state: ParentSizeState) => void;
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
export type ParentSizeProps = {
|
|
11
|
+
/** Optional `className` to add to the outer wrapper `div`. */
|
|
12
|
+
className?: string;
|
|
13
|
+
/**
|
|
14
|
+
* @deprecated - use `style` prop as all other props are passed directly to the outer `div`.
|
|
15
|
+
* @TODO remove in the next major version.
|
|
16
|
+
* Optional `style` object to apply to the outer wrapper `div`. Merged with default styles
|
|
17
|
+
* (`width: 100%; height: 100%; position: relative`); your values take precedence.
|
|
18
|
+
* */
|
|
19
|
+
parentSizeStyles?: CSSProperties;
|
|
20
|
+
/** Child render function `({ width, height, top, left, ref, resize }) => ReactNode`. */
|
|
21
|
+
children: (args: ParentSizeProvidedProps) => ReactNode;
|
|
22
|
+
} & UseParentSizeConfig;
|
|
23
|
+
|
|
24
|
+
const defaultOuterStyles: CSSProperties = { width: '100%', height: '100%', position: 'relative' };
|
|
25
|
+
|
|
26
|
+
const measurementStyles: CSSProperties = {
|
|
27
|
+
position: 'absolute',
|
|
28
|
+
top: 0,
|
|
29
|
+
right: 0,
|
|
30
|
+
bottom: 0,
|
|
31
|
+
left: 0,
|
|
32
|
+
overflow: 'hidden',
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
export default function ParentSize({
|
|
36
|
+
className,
|
|
37
|
+
children,
|
|
38
|
+
debounceTime,
|
|
39
|
+
ignoreDimensions,
|
|
40
|
+
initialSize,
|
|
41
|
+
parentSizeStyles,
|
|
42
|
+
enableDebounceLeadingCall = true,
|
|
43
|
+
resizeObserverPolyfill,
|
|
44
|
+
style,
|
|
45
|
+
...restProps
|
|
46
|
+
}: ParentSizeProps & Omit<HTMLAttributes<HTMLDivElement>, keyof ParentSizeProps>) {
|
|
47
|
+
const { parentRef, node, resize, ...dimensions } = useParentSize({
|
|
48
|
+
initialSize,
|
|
49
|
+
debounceTime,
|
|
50
|
+
ignoreDimensions,
|
|
51
|
+
enableDebounceLeadingCall,
|
|
52
|
+
resizeObserverPolyfill,
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
const outerStyle: CSSProperties = parentSizeStyles
|
|
56
|
+
? { position: 'relative', ...parentSizeStyles, ...style }
|
|
57
|
+
: { ...defaultOuterStyles, ...style };
|
|
58
|
+
|
|
59
|
+
return <div style={outerStyle} className={className} {...restProps}>
|
|
60
|
+
<div style={measurementStyles} ref={parentRef}>{children({
|
|
61
|
+
...dimensions,
|
|
62
|
+
ref: node,
|
|
63
|
+
resize,
|
|
64
|
+
})}</div>
|
|
65
|
+
</div>;
|
|
66
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// Generated by scripts/generate-tsrx-types.mjs.
|
|
2
|
+
import type { CSSProperties, ReactNode, HTMLAttributes } from 'react';
|
|
3
|
+
import type { ParentSizeState, UseParentSizeConfig } from '../hooks/useParentSize.tsrx';
|
|
4
|
+
export type ParentSizeProvidedProps = ParentSizeState & {
|
|
5
|
+
ref: HTMLDivElement | null;
|
|
6
|
+
resize: (state: ParentSizeState) => void;
|
|
7
|
+
};
|
|
8
|
+
export type ParentSizeProps = {
|
|
9
|
+
/** Optional `className` to add to the outer wrapper `div`. */
|
|
10
|
+
className?: string;
|
|
11
|
+
/**
|
|
12
|
+
* @deprecated - use `style` prop as all other props are passed directly to the outer `div`.
|
|
13
|
+
* @TODO remove in the next major version.
|
|
14
|
+
* Optional `style` object to apply to the outer wrapper `div`. Merged with default styles
|
|
15
|
+
* (`width: 100%; height: 100%; position: relative`); your values take precedence.
|
|
16
|
+
* */
|
|
17
|
+
parentSizeStyles?: CSSProperties;
|
|
18
|
+
/** Child render function `({ width, height, top, left, ref, resize }) => ReactNode`. */
|
|
19
|
+
children: (args: ParentSizeProvidedProps) => ReactNode;
|
|
20
|
+
} & UseParentSizeConfig;
|
|
21
|
+
export default function ParentSize({ className, children, debounceTime, ignoreDimensions, initialSize, parentSizeStyles, enableDebounceLeadingCall, resizeObserverPolyfill, style, ...restProps }: ParentSizeProps & Omit<HTMLAttributes<HTMLDivElement>, keyof ParentSizeProps>): import("react").JSX.Element;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { ReactNode, Ref } from 'react';
|
|
2
|
+
|
|
3
|
+
export type ScaleSVGProps = {
|
|
4
|
+
/** Child SVG to scale, rendered as the child of the parent wrappers provided by this component `<div><svg>{children}</svg></div>`. */
|
|
5
|
+
children?: ReactNode;
|
|
6
|
+
/** Width of the desired SVG. */
|
|
7
|
+
width?: number | string;
|
|
8
|
+
/** Height of the desired SVG. */
|
|
9
|
+
height?: number | string;
|
|
10
|
+
/** xOrigin of the desired SVG. */
|
|
11
|
+
xOrigin?: number | string;
|
|
12
|
+
/** yOrigin of the desired SVG. */
|
|
13
|
+
yOrigin?: number | string;
|
|
14
|
+
/** Whether to preserve SVG aspect ratio. */
|
|
15
|
+
preserveAspectRatio?: string;
|
|
16
|
+
/** Ref to the parent `<svg />` used for scaling. */
|
|
17
|
+
innerRef?: Ref<SVGSVGElement>;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export default function ScaleSVG({
|
|
21
|
+
children,
|
|
22
|
+
width,
|
|
23
|
+
height,
|
|
24
|
+
xOrigin = 0,
|
|
25
|
+
yOrigin = 0,
|
|
26
|
+
preserveAspectRatio = 'xMinYMin meet',
|
|
27
|
+
innerRef,
|
|
28
|
+
}: ScaleSVGProps) {
|
|
29
|
+
return <div
|
|
30
|
+
style={{
|
|
31
|
+
display: 'inline-block',
|
|
32
|
+
position: 'relative',
|
|
33
|
+
width: '100%',
|
|
34
|
+
verticalAlign: 'top',
|
|
35
|
+
overflow: 'hidden',
|
|
36
|
+
}}
|
|
37
|
+
>
|
|
38
|
+
<svg
|
|
39
|
+
preserveAspectRatio={preserveAspectRatio}
|
|
40
|
+
viewBox={`${xOrigin} ${yOrigin} ${width} ${height}`}
|
|
41
|
+
ref={innerRef}
|
|
42
|
+
>{children}</svg>
|
|
43
|
+
</div>;
|
|
44
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// Generated by scripts/generate-tsrx-types.mjs.
|
|
2
|
+
import type { ReactNode, Ref } from 'react';
|
|
3
|
+
export type ScaleSVGProps = {
|
|
4
|
+
/** Child SVG to scale, rendered as the child of the parent wrappers provided by this component `<div><svg>{children}</svg></div>`. */
|
|
5
|
+
children?: ReactNode;
|
|
6
|
+
/** Width of the desired SVG. */
|
|
7
|
+
width?: number | string;
|
|
8
|
+
/** Height of the desired SVG. */
|
|
9
|
+
height?: number | string;
|
|
10
|
+
/** xOrigin of the desired SVG. */
|
|
11
|
+
xOrigin?: number | string;
|
|
12
|
+
/** yOrigin of the desired SVG. */
|
|
13
|
+
yOrigin?: number | string;
|
|
14
|
+
/** Whether to preserve SVG aspect ratio. */
|
|
15
|
+
preserveAspectRatio?: string;
|
|
16
|
+
/** Ref to the parent `<svg />` used for scaling. */
|
|
17
|
+
innerRef?: Ref<SVGSVGElement>;
|
|
18
|
+
};
|
|
19
|
+
export default function ScaleSVG({ children, width, height, xOrigin, yOrigin, preserveAspectRatio, innerRef, }: ScaleSVGProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { useCallback, useEffect, useMemo, useRef, useState } from 'octane';
|
|
2
|
+
import type { ComponentType, CSSProperties } from 'react';
|
|
3
|
+
import type { DebounceSettings, Simplify, PrivateWindow, ResizeObserverPolyfill } from '../types';
|
|
4
|
+
import { debounce } from '../utils/debounce';
|
|
5
|
+
|
|
6
|
+
const CONTAINER_STYLES: CSSProperties = {
|
|
7
|
+
width: '100%',
|
|
8
|
+
height: '100%',
|
|
9
|
+
position: 'relative',
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
const MEASUREMENT_STYLES: CSSProperties = {
|
|
13
|
+
position: 'absolute',
|
|
14
|
+
top: 0,
|
|
15
|
+
right: 0,
|
|
16
|
+
bottom: 0,
|
|
17
|
+
left: 0,
|
|
18
|
+
overflow: 'hidden',
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
/** @deprecated @TODO remove in the next major version - exported for backwards compatibility */
|
|
22
|
+
export type WithParentSizeProps = DebounceSettings;
|
|
23
|
+
|
|
24
|
+
type WithParentSizeConfig = {
|
|
25
|
+
initialWidth?: number;
|
|
26
|
+
initialHeight?: number;
|
|
27
|
+
} & DebounceSettings;
|
|
28
|
+
|
|
29
|
+
type WithParentSizeState = {
|
|
30
|
+
parentWidth?: number;
|
|
31
|
+
parentHeight?: number;
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
export type WithParentSizeProvidedProps = WithParentSizeState;
|
|
35
|
+
|
|
36
|
+
type WithParentSizeComponentProps<P extends WithParentSizeProvidedProps> = Simplify<
|
|
37
|
+
Omit<P, keyof WithParentSizeProvidedProps> & WithParentSizeConfig
|
|
38
|
+
>;
|
|
39
|
+
|
|
40
|
+
export default function withParentSize<P extends WithParentSizeProvidedProps>(
|
|
41
|
+
BaseComponent: ComponentType<P>,
|
|
42
|
+
resizeObserverPolyfill?: ResizeObserverPolyfill,
|
|
43
|
+
): ComponentType<WithParentSizeComponentProps<P>> {
|
|
44
|
+
function WrappedComponent(props: WithParentSizeComponentProps<P>) {
|
|
45
|
+
const [size, setSize] = useState<WithParentSizeState>({});
|
|
46
|
+
const containerRef = useRef<HTMLDivElement | null>(null);
|
|
47
|
+
const animationFrameRef = useRef(0);
|
|
48
|
+
const resize = useMemo(
|
|
49
|
+
() =>
|
|
50
|
+
debounce(
|
|
51
|
+
({ width, height }: { width: number; height: number }) => {
|
|
52
|
+
setSize({ parentWidth: width, parentHeight: height });
|
|
53
|
+
},
|
|
54
|
+
props.debounceTime ?? 300,
|
|
55
|
+
{ leading: props.enableDebounceLeadingCall ?? true },
|
|
56
|
+
),
|
|
57
|
+
[props.debounceTime, props.enableDebounceLeadingCall],
|
|
58
|
+
);
|
|
59
|
+
const setContainerRef = useCallback((node: HTMLDivElement | null) => {
|
|
60
|
+
containerRef.current = node;
|
|
61
|
+
}, []);
|
|
62
|
+
|
|
63
|
+
useEffect(() => {
|
|
64
|
+
const ResizeObserverLocal =
|
|
65
|
+
resizeObserverPolyfill || (window as unknown as PrivateWindow).ResizeObserver;
|
|
66
|
+
const observer = new ResizeObserverLocal((entries) => {
|
|
67
|
+
entries.forEach((entry) => {
|
|
68
|
+
const { width, height } = entry.contentRect;
|
|
69
|
+
animationFrameRef.current = window.requestAnimationFrame(() => {
|
|
70
|
+
resize({ width, height });
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
if (containerRef.current) observer.observe(containerRef.current);
|
|
75
|
+
return () => {
|
|
76
|
+
window.cancelAnimationFrame(animationFrameRef.current);
|
|
77
|
+
observer.disconnect();
|
|
78
|
+
resize.cancel();
|
|
79
|
+
};
|
|
80
|
+
}, [resize]);
|
|
81
|
+
|
|
82
|
+
const parentWidth = size.parentWidth ?? props.initialWidth;
|
|
83
|
+
const parentHeight = size.parentHeight ?? props.initialHeight;
|
|
84
|
+
return (
|
|
85
|
+
<div style={CONTAINER_STYLES}>
|
|
86
|
+
<div style={MEASUREMENT_STYLES} ref={setContainerRef}>
|
|
87
|
+
{parentWidth != null && parentHeight != null && (
|
|
88
|
+
<BaseComponent
|
|
89
|
+
parentWidth={parentWidth}
|
|
90
|
+
parentHeight={parentHeight}
|
|
91
|
+
{...(props as P)}
|
|
92
|
+
/>
|
|
93
|
+
)}
|
|
94
|
+
</div>
|
|
95
|
+
</div>
|
|
96
|
+
);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
WrappedComponent.displayName = `withParentSize(${BaseComponent.displayName ?? BaseComponent.name ?? 'Component'})`;
|
|
100
|
+
return WrappedComponent as ComponentType<WithParentSizeComponentProps<P>>;
|
|
101
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// Generated by scripts/generate-tsrx-types.mjs.
|
|
2
|
+
import type { ComponentType } from 'react';
|
|
3
|
+
import type { DebounceSettings, Simplify, ResizeObserverPolyfill } from '../types';
|
|
4
|
+
/** @deprecated @TODO remove in the next major version - exported for backwards compatibility */
|
|
5
|
+
export type WithParentSizeProps = DebounceSettings;
|
|
6
|
+
type WithParentSizeConfig = {
|
|
7
|
+
initialWidth?: number;
|
|
8
|
+
initialHeight?: number;
|
|
9
|
+
} & DebounceSettings;
|
|
10
|
+
type WithParentSizeState = {
|
|
11
|
+
parentWidth?: number;
|
|
12
|
+
parentHeight?: number;
|
|
13
|
+
};
|
|
14
|
+
export type WithParentSizeProvidedProps = WithParentSizeState;
|
|
15
|
+
type WithParentSizeComponentProps<P extends WithParentSizeProvidedProps> = Simplify<Omit<P, keyof WithParentSizeProvidedProps> & WithParentSizeConfig>;
|
|
16
|
+
export default function withParentSize<P extends WithParentSizeProvidedProps>(BaseComponent: ComponentType<P>, resizeObserverPolyfill?: ResizeObserverPolyfill): ComponentType<WithParentSizeComponentProps<P>>;
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { useEffect, useMemo, useState } from 'octane';
|
|
2
|
+
import type { ComponentType } from 'react';
|
|
3
|
+
import type { Simplify, DebounceSettings } from '../types';
|
|
4
|
+
import { debounce } from '../utils/debounce';
|
|
5
|
+
|
|
6
|
+
type WithScreenSizeConfig = {
|
|
7
|
+
/** @deprecated use `debounceTime` instead */
|
|
8
|
+
windowResizeDebounceTime?: number;
|
|
9
|
+
} & DebounceSettings;
|
|
10
|
+
|
|
11
|
+
/** @deprecated @TODO remove in the next major version - exported for backwards compatibility */
|
|
12
|
+
export type WithParentSizeProps = Omit<WithScreenSizeConfig, 'debounceTime'>;
|
|
13
|
+
|
|
14
|
+
type WithScreenSizeState = {
|
|
15
|
+
screenWidth?: number;
|
|
16
|
+
screenHeight?: number;
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
export type WithScreenSizeProvidedProps = WithScreenSizeState;
|
|
20
|
+
|
|
21
|
+
type WithScreenSizeComponentProps<P extends WithScreenSizeProvidedProps> = Simplify<
|
|
22
|
+
Omit<P, keyof WithScreenSizeProvidedProps> & WithScreenSizeConfig
|
|
23
|
+
>;
|
|
24
|
+
|
|
25
|
+
export default function withScreenSize<P extends WithScreenSizeProvidedProps>(
|
|
26
|
+
BaseComponent: ComponentType<P>,
|
|
27
|
+
): ComponentType<WithScreenSizeComponentProps<P>> {
|
|
28
|
+
function WrappedComponent(props: WithScreenSizeComponentProps<P>) {
|
|
29
|
+
const [size, setSize] = useState<WithScreenSizeState>({});
|
|
30
|
+
const resize = useMemo(
|
|
31
|
+
() =>
|
|
32
|
+
debounce(
|
|
33
|
+
() =>
|
|
34
|
+
setSize({
|
|
35
|
+
screenWidth: window.innerWidth,
|
|
36
|
+
screenHeight: window.innerHeight,
|
|
37
|
+
}),
|
|
38
|
+
props.debounceTime ?? props.windowResizeDebounceTime ?? 300,
|
|
39
|
+
{ leading: props.enableDebounceLeadingCall ?? true },
|
|
40
|
+
),
|
|
41
|
+
[props.debounceTime, props.enableDebounceLeadingCall, props.windowResizeDebounceTime],
|
|
42
|
+
);
|
|
43
|
+
|
|
44
|
+
useEffect(() => {
|
|
45
|
+
window.addEventListener('resize', resize, false);
|
|
46
|
+
resize();
|
|
47
|
+
return () => {
|
|
48
|
+
window.removeEventListener('resize', resize, false);
|
|
49
|
+
resize.cancel();
|
|
50
|
+
};
|
|
51
|
+
}, [resize]);
|
|
52
|
+
|
|
53
|
+
return size.screenWidth == null || size.screenHeight == null ? null : (
|
|
54
|
+
<BaseComponent
|
|
55
|
+
screenWidth={size.screenWidth}
|
|
56
|
+
screenHeight={size.screenHeight}
|
|
57
|
+
{...(props as P)}
|
|
58
|
+
/>
|
|
59
|
+
);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
WrappedComponent.displayName = `withScreenSize(${BaseComponent.displayName ?? BaseComponent.name ?? 'Component'})`;
|
|
63
|
+
return WrappedComponent as ComponentType<WithScreenSizeComponentProps<P>>;
|
|
64
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// Generated by scripts/generate-tsrx-types.mjs.
|
|
2
|
+
import type { ComponentType } from 'react';
|
|
3
|
+
import type { Simplify, DebounceSettings } from '../types';
|
|
4
|
+
type WithScreenSizeConfig = {
|
|
5
|
+
/** @deprecated use `debounceTime` instead */
|
|
6
|
+
windowResizeDebounceTime?: number;
|
|
7
|
+
} & DebounceSettings;
|
|
8
|
+
/** @deprecated @TODO remove in the next major version - exported for backwards compatibility */
|
|
9
|
+
export type WithParentSizeProps = Omit<WithScreenSizeConfig, 'debounceTime'>;
|
|
10
|
+
type WithScreenSizeState = {
|
|
11
|
+
screenWidth?: number;
|
|
12
|
+
screenHeight?: number;
|
|
13
|
+
};
|
|
14
|
+
export type WithScreenSizeProvidedProps = WithScreenSizeState;
|
|
15
|
+
type WithScreenSizeComponentProps<P extends WithScreenSizeProvidedProps> = Simplify<Omit<P, keyof WithScreenSizeProvidedProps> & WithScreenSizeConfig>;
|
|
16
|
+
export default function withScreenSize<P extends WithScreenSizeProvidedProps>(BaseComponent: ComponentType<P>): ComponentType<WithScreenSizeComponentProps<P>>;
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import type { Ref } from 'react';
|
|
2
|
+
import { useCallback, useEffect, useMemo, useRef, useState } from 'octane';
|
|
3
|
+
import type { DebounceSettings, PrivateWindow, ResizeObserverPolyfill } from '../types';
|
|
4
|
+
import { debounce } from '../utils/debounce';
|
|
5
|
+
|
|
6
|
+
export type ParentSizeState = {
|
|
7
|
+
width: number;
|
|
8
|
+
height: number;
|
|
9
|
+
top: number;
|
|
10
|
+
left: number;
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export type UseParentSizeConfig<T extends HTMLElement = HTMLDivElement> = {
|
|
14
|
+
/** Initial size before measuring the parent. */
|
|
15
|
+
initialSize?: Partial<ParentSizeState>;
|
|
16
|
+
/** Optionally inject a ResizeObserver polyfill, else this *must* be globally available. */
|
|
17
|
+
resizeObserverPolyfill?: ResizeObserverPolyfill;
|
|
18
|
+
/** Optional dimensions provided won't trigger a state change when changed. */
|
|
19
|
+
ignoreDimensions?: keyof ParentSizeState | (keyof ParentSizeState)[];
|
|
20
|
+
/** Optional external ref that also receives the measured DOM node. */
|
|
21
|
+
externalRef?: Ref<T>;
|
|
22
|
+
} & DebounceSettings;
|
|
23
|
+
|
|
24
|
+
export type UseParentSizeResult<T extends HTMLElement = HTMLDivElement> = ParentSizeState & {
|
|
25
|
+
parentRef: (node: T | null) => void;
|
|
26
|
+
node: T | null;
|
|
27
|
+
resize: (state: ParentSizeState) => void;
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
const defaultIgnoreDimensions: UseParentSizeConfig['ignoreDimensions'] = [];
|
|
31
|
+
const defaultInitialSize: ParentSizeState = {
|
|
32
|
+
width: 0,
|
|
33
|
+
height: 0,
|
|
34
|
+
top: 0,
|
|
35
|
+
left: 0,
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
export default function useParentSize<T extends HTMLElement = HTMLDivElement>(
|
|
39
|
+
{
|
|
40
|
+
initialSize = defaultInitialSize,
|
|
41
|
+
debounceTime = 300,
|
|
42
|
+
ignoreDimensions = defaultIgnoreDimensions,
|
|
43
|
+
enableDebounceLeadingCall = true,
|
|
44
|
+
resizeObserverPolyfill,
|
|
45
|
+
externalRef,
|
|
46
|
+
}: UseParentSizeConfig<T> = {},
|
|
47
|
+
): UseParentSizeResult<T> {
|
|
48
|
+
const [node, setNode] = useState<T | null>(null);
|
|
49
|
+
const parentRef = useCallback((el: T | null) => {
|
|
50
|
+
setNode(el);
|
|
51
|
+
if (typeof externalRef === 'function') {
|
|
52
|
+
externalRef(el);
|
|
53
|
+
} else if (externalRef != null) {
|
|
54
|
+
// eslint-disable-next-line no-param-reassign -- standard ref-merging pattern
|
|
55
|
+
(externalRef as { current: T | null }).current = el;
|
|
56
|
+
}
|
|
57
|
+
}, [externalRef]);
|
|
58
|
+
const animationFrameID = useRef(0);
|
|
59
|
+
|
|
60
|
+
const [state, setState] = useState<ParentSizeState>({ ...defaultInitialSize, ...initialSize });
|
|
61
|
+
|
|
62
|
+
const resize = useMemo(() => {
|
|
63
|
+
const normalized = Array.isArray(ignoreDimensions) ? ignoreDimensions : [ignoreDimensions];
|
|
64
|
+
|
|
65
|
+
return debounce((incoming: ParentSizeState) => {
|
|
66
|
+
setState((existing) => {
|
|
67
|
+
const stateKeys = Object.keys(existing) as (keyof ParentSizeState)[];
|
|
68
|
+
const keysWithChanges = stateKeys.filter((key) => existing[key] !== incoming[key]);
|
|
69
|
+
const shouldBail = keysWithChanges.every((key) => normalized.includes(key));
|
|
70
|
+
|
|
71
|
+
return shouldBail ? existing : incoming;
|
|
72
|
+
});
|
|
73
|
+
}, debounceTime, { leading: enableDebounceLeadingCall });
|
|
74
|
+
}, [debounceTime, enableDebounceLeadingCall, ignoreDimensions]);
|
|
75
|
+
|
|
76
|
+
useEffect(() => {
|
|
77
|
+
if (!node) {
|
|
78
|
+
resize.cancel();
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
const LocalResizeObserver =
|
|
83
|
+
resizeObserverPolyfill || (window as unknown as PrivateWindow).ResizeObserver;
|
|
84
|
+
|
|
85
|
+
const observer = new LocalResizeObserver((entries) => {
|
|
86
|
+
entries.forEach((entry) => {
|
|
87
|
+
const { left, top, width, height } = entry?.contentRect ?? {};
|
|
88
|
+
animationFrameID.current = window.requestAnimationFrame(() => {
|
|
89
|
+
resize({ width, height, top, left });
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
observer.observe(node);
|
|
94
|
+
|
|
95
|
+
return () => {
|
|
96
|
+
window.cancelAnimationFrame(animationFrameID.current);
|
|
97
|
+
observer.disconnect();
|
|
98
|
+
resize.cancel();
|
|
99
|
+
};
|
|
100
|
+
}, [node, resize, resizeObserverPolyfill]);
|
|
101
|
+
|
|
102
|
+
return { parentRef, node, resize, ...state };
|
|
103
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// Generated by scripts/generate-tsrx-types.mjs.
|
|
2
|
+
import type { Ref } from 'react';
|
|
3
|
+
import type { DebounceSettings, ResizeObserverPolyfill } from '../types';
|
|
4
|
+
export type ParentSizeState = {
|
|
5
|
+
width: number;
|
|
6
|
+
height: number;
|
|
7
|
+
top: number;
|
|
8
|
+
left: number;
|
|
9
|
+
};
|
|
10
|
+
export type UseParentSizeConfig<T extends HTMLElement = HTMLDivElement> = {
|
|
11
|
+
/** Initial size before measuring the parent. */
|
|
12
|
+
initialSize?: Partial<ParentSizeState>;
|
|
13
|
+
/** Optionally inject a ResizeObserver polyfill, else this *must* be globally available. */
|
|
14
|
+
resizeObserverPolyfill?: ResizeObserverPolyfill;
|
|
15
|
+
/** Optional dimensions provided won't trigger a state change when changed. */
|
|
16
|
+
ignoreDimensions?: keyof ParentSizeState | (keyof ParentSizeState)[];
|
|
17
|
+
/** Optional external ref that also receives the measured DOM node. */
|
|
18
|
+
externalRef?: Ref<T>;
|
|
19
|
+
} & DebounceSettings;
|
|
20
|
+
export type UseParentSizeResult<T extends HTMLElement = HTMLDivElement> = ParentSizeState & {
|
|
21
|
+
parentRef: (node: T | null) => void;
|
|
22
|
+
node: T | null;
|
|
23
|
+
resize: (state: ParentSizeState) => void;
|
|
24
|
+
};
|
|
25
|
+
export default function useParentSize<T extends HTMLElement = HTMLDivElement>({ initialSize, debounceTime, ignoreDimensions, enableDebounceLeadingCall, resizeObserverPolyfill, externalRef, }?: UseParentSizeConfig<T>): UseParentSizeResult<T>;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { useEffect, useMemo, useState } from 'octane';
|
|
2
|
+
import type { DebounceSettings } from '../types/index';
|
|
3
|
+
import { debounce } from '../utils/debounce';
|
|
4
|
+
|
|
5
|
+
interface ScreenSize {
|
|
6
|
+
width: number;
|
|
7
|
+
height: number;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
const defaultInitialSize: ScreenSize = {
|
|
11
|
+
width: 0,
|
|
12
|
+
height: 0,
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
export type UseScreenSizeConfig = {
|
|
16
|
+
/** Initial size before measuring the screen. */
|
|
17
|
+
initialSize?: ScreenSize;
|
|
18
|
+
} & DebounceSettings;
|
|
19
|
+
|
|
20
|
+
const useScreenSize = (
|
|
21
|
+
{
|
|
22
|
+
initialSize = defaultInitialSize,
|
|
23
|
+
debounceTime = 300,
|
|
24
|
+
enableDebounceLeadingCall = true,
|
|
25
|
+
}: UseScreenSizeConfig = {},
|
|
26
|
+
) => {
|
|
27
|
+
const [screenSize, setScreenSize] = useState<ScreenSize>(initialSize);
|
|
28
|
+
|
|
29
|
+
const handleResize = useMemo(
|
|
30
|
+
() => debounce(() => {
|
|
31
|
+
setScreenSize(
|
|
32
|
+
() => ({
|
|
33
|
+
width: window.innerWidth,
|
|
34
|
+
height: window.innerHeight,
|
|
35
|
+
}),
|
|
36
|
+
);
|
|
37
|
+
}, debounceTime, { leading: enableDebounceLeadingCall }),
|
|
38
|
+
[debounceTime, enableDebounceLeadingCall],
|
|
39
|
+
);
|
|
40
|
+
|
|
41
|
+
useEffect(() => {
|
|
42
|
+
handleResize();
|
|
43
|
+
window.addEventListener('resize', handleResize, false);
|
|
44
|
+
return () => {
|
|
45
|
+
window.removeEventListener('resize', handleResize, false);
|
|
46
|
+
handleResize.cancel();
|
|
47
|
+
};
|
|
48
|
+
}, [handleResize]);
|
|
49
|
+
|
|
50
|
+
return screenSize;
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
export default useScreenSize
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// Generated by scripts/generate-tsrx-types.mjs.
|
|
2
|
+
import type { DebounceSettings } from '../types/index';
|
|
3
|
+
interface ScreenSize {
|
|
4
|
+
width: number;
|
|
5
|
+
height: number;
|
|
6
|
+
}
|
|
7
|
+
export type UseScreenSizeConfig = {
|
|
8
|
+
/** Initial size before measuring the screen. */
|
|
9
|
+
initialSize?: ScreenSize;
|
|
10
|
+
} & DebounceSettings;
|
|
11
|
+
declare const useScreenSize: ({ initialSize, debounceTime, enableDebounceLeadingCall, }?: UseScreenSizeConfig) => ScreenSize;
|
|
12
|
+
export default useScreenSize;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// @octanejs/visx/responsive
|
|
2
|
+
export { default as ParentSize } from './components/ParentSize.tsrx';
|
|
3
|
+
export { default as ScaleSVG } from './components/ScaleSVG.tsrx';
|
|
4
|
+
export { default as withParentSize } from './enhancers/withParentSize.tsrx';
|
|
5
|
+
export type { WithParentSizeProvidedProps } from './enhancers/withParentSize.tsrx';
|
|
6
|
+
export { default as withScreenSize } from './enhancers/withScreenSize.tsrx';
|
|
7
|
+
export type { WithScreenSizeProvidedProps } from './enhancers/withScreenSize.tsrx';
|
|
8
|
+
export { default as useParentSize } from './hooks/useParentSize.tsrx';
|
|
9
|
+
export type {
|
|
10
|
+
UseParentSizeConfig,
|
|
11
|
+
UseParentSizeResult,
|
|
12
|
+
ParentSizeState,
|
|
13
|
+
} from './hooks/useParentSize.tsrx';
|
|
14
|
+
export { default as useScreenSize } from './hooks/useScreenSize.tsrx';
|
|
15
|
+
export type { UseScreenSizeConfig } from './hooks/useScreenSize.tsrx';
|
|
16
|
+
|
|
17
|
+
export type { ParentSizeProps, ParentSizeProvidedProps } from './components/ParentSize.tsrx';
|
|
18
|
+
export type { ScaleSVGProps } from './components/ScaleSVG.tsrx';
|
|
19
|
+
export type * from './types';
|
|
20
|
+
export { debounce } from './utils/debounce';
|
|
21
|
+
export type { DebouncedFunction } from './utils/debounce';
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
// @TODO remove all these types when upgraded to TS 4 which has its own declaration
|
|
2
|
+
interface ResizeObserverEntry {
|
|
3
|
+
contentRect: {
|
|
4
|
+
left: number;
|
|
5
|
+
top: number;
|
|
6
|
+
width: number;
|
|
7
|
+
height: number;
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
type ResizeObserverCallback = (entries: ResizeObserverEntry[], observer: ResizeObserver) => void;
|
|
12
|
+
|
|
13
|
+
export declare class ResizeObserver {
|
|
14
|
+
constructor(callback: ResizeObserverCallback);
|
|
15
|
+
observe(target: Element, options?: any): void;
|
|
16
|
+
unobserve(target: Element): void;
|
|
17
|
+
disconnect(): void;
|
|
18
|
+
static toString(): string;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export interface ResizeObserverPolyfill {
|
|
22
|
+
new (callback: ResizeObserverCallback): ResizeObserver;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export interface PrivateWindow {
|
|
26
|
+
ResizeObserver: ResizeObserverPolyfill;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export type Simplify<T> = { [Key in keyof T]: T[Key] } & {};
|
|
30
|
+
|
|
31
|
+
export interface DebounceSettings {
|
|
32
|
+
/** Child render updates upon resize are delayed until `debounceTime` milliseconds _after_ the last resize event is observed. Defaults to `300`. */
|
|
33
|
+
debounceTime?: number;
|
|
34
|
+
/** Optional flag to toggle leading debounce calls. When set to true this will ensure that the component always renders immediately. Defaults to `true`. */
|
|
35
|
+
enableDebounceLeadingCall?: boolean;
|
|
36
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
export interface DebouncedFunction<T extends (...args: any[]) => any> {
|
|
2
|
+
(...args: Parameters<T>): void;
|
|
3
|
+
cancel(): void;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
interface DebounceOptions {
|
|
7
|
+
leading?: boolean;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Creates a debounced function that delays invoking `func` until after `wait` milliseconds
|
|
12
|
+
* have elapsed since the last invocation.
|
|
13
|
+
*
|
|
14
|
+
* When `leading` is true, the function fires immediately on the first call (leading edge),
|
|
15
|
+
* and also fires on the trailing edge if there were subsequent calls during the wait period
|
|
16
|
+
* (matching lodash behavior with leading:true, trailing:true).
|
|
17
|
+
*/
|
|
18
|
+
export function debounce<T extends (...args: any[]) => any>(
|
|
19
|
+
func: T,
|
|
20
|
+
wait: number,
|
|
21
|
+
options: DebounceOptions = {},
|
|
22
|
+
): DebouncedFunction<T> {
|
|
23
|
+
const { leading = false } = options;
|
|
24
|
+
let timeoutId: ReturnType<typeof setTimeout> | undefined;
|
|
25
|
+
// Track args for the trailing call; null means no subsequent calls after leading
|
|
26
|
+
let pendingArgs: Parameters<T> | null = null;
|
|
27
|
+
let pendingContext: unknown;
|
|
28
|
+
|
|
29
|
+
function debounced(this: unknown, ...args: Parameters<T>) {
|
|
30
|
+
if (leading && timeoutId === undefined) {
|
|
31
|
+
// Fire immediately on the leading edge, no pending trailing needed yet
|
|
32
|
+
func.apply(this, args);
|
|
33
|
+
pendingArgs = null;
|
|
34
|
+
} else {
|
|
35
|
+
// Record these args for the trailing call
|
|
36
|
+
pendingArgs = args;
|
|
37
|
+
pendingContext = this;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
clearTimeout(timeoutId);
|
|
41
|
+
timeoutId = setTimeout(() => {
|
|
42
|
+
timeoutId = undefined;
|
|
43
|
+
if (pendingArgs !== null) {
|
|
44
|
+
func.apply(pendingContext, pendingArgs);
|
|
45
|
+
pendingArgs = null;
|
|
46
|
+
pendingContext = undefined;
|
|
47
|
+
}
|
|
48
|
+
}, wait);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
debounced.cancel = function cancel() {
|
|
52
|
+
clearTimeout(timeoutId);
|
|
53
|
+
timeoutId = undefined;
|
|
54
|
+
pendingArgs = null;
|
|
55
|
+
pendingContext = undefined;
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
return debounced as DebouncedFunction<T>;
|
|
59
|
+
}
|