victory-core 36.4.1 → 36.5.2
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/dist/victory-core.js +14463 -11478
- package/dist/victory-core.min.js +1 -1
- package/dist/victory-core.min.js.LICENSE.txt +19 -0
- package/es/index.d.ts +18 -941
- package/es/index.js +18 -73
- package/es/types/callbacks.d.ts +37 -0
- package/es/types/callbacks.js +2 -0
- package/es/types/prop-types.d.ts +130 -0
- package/es/types/prop-types.js +2 -0
- package/es/victory-accessible-group/victory-accessible-group.d.ts +26 -0
- package/es/victory-accessible-group/victory-accessible-group.js +9 -16
- package/es/victory-animation/util.d.ts +67 -0
- package/es/victory-animation/util.js +7 -4
- package/es/victory-animation/victory-animation.d.ts +70 -0
- package/es/victory-animation/victory-animation.js +60 -67
- package/es/victory-clip-container/victory-clip-container.d.ts +77 -0
- package/es/victory-clip-container/victory-clip-container.js +16 -21
- package/es/victory-container/victory-container.d.ts +100 -0
- package/es/victory-container/victory-container.js +32 -31
- package/es/victory-label/victory-label.d.ts +62 -0
- package/es/victory-label/victory-label.js +14 -9
- package/es/victory-portal/portal-context.d.ts +12 -0
- package/es/victory-portal/portal-context.js +3 -3
- package/es/victory-portal/portal.d.ts +29 -0
- package/es/victory-portal/portal.js +26 -33
- package/es/victory-portal/victory-portal.d.ts +32 -0
- package/es/victory-portal/victory-portal.js +24 -22
- package/es/victory-primitives/arc.d.ts +50 -0
- package/es/victory-primitives/arc.js +4 -5
- package/es/victory-primitives/background.d.ts +51 -0
- package/es/victory-primitives/background.js +5 -6
- package/es/victory-primitives/border.d.ts +44 -0
- package/es/victory-primitives/border.js +4 -5
- package/es/victory-primitives/circle.d.ts +3 -0
- package/es/victory-primitives/circle.js +11 -7
- package/es/victory-primitives/clip-path.d.ts +15 -0
- package/es/victory-primitives/clip-path.js +6 -5
- package/es/victory-primitives/index.d.ts +15 -0
- package/es/victory-primitives/index.js +15 -0
- package/es/victory-primitives/line-segment.d.ts +46 -0
- package/es/victory-primitives/line-segment.js +4 -5
- package/es/victory-primitives/line.d.ts +3 -0
- package/es/victory-primitives/line.js +11 -7
- package/es/victory-primitives/path.d.ts +3 -0
- package/es/victory-primitives/path.js +9 -5
- package/es/victory-primitives/point.d.ts +49 -0
- package/es/victory-primitives/point.js +10 -19
- package/es/victory-primitives/rect.d.ts +3 -0
- package/es/victory-primitives/rect.js +11 -7
- package/es/victory-primitives/text.d.ts +17 -0
- package/es/victory-primitives/text.js +7 -5
- package/es/victory-primitives/tspan.d.ts +3 -0
- package/es/victory-primitives/tspan.js +7 -5
- package/es/victory-primitives/types.d.ts +8 -0
- package/es/victory-primitives/types.js +2 -0
- package/es/victory-primitives/whisker.d.ts +59 -0
- package/es/victory-primitives/whisker.js +4 -5
- package/es/victory-state/defaults.d.ts +3 -0
- package/es/victory-state/defaults.js +3 -0
- package/es/victory-state/helpers/get-axis-data.d.ts +3 -0
- package/es/victory-state/helpers/get-axis-data.js +15 -0
- package/es/victory-state/helpers/get-data.d.ts +15 -0
- package/es/victory-state/helpers/get-data.js +88 -0
- package/es/victory-state/helpers/get-domain.d.ts +6 -0
- package/es/victory-state/helpers/get-domain.js +68 -0
- package/es/victory-state/helpers/get-range.d.ts +6 -0
- package/es/victory-state/helpers/get-range.js +37 -0
- package/es/victory-state/helpers/get-scale.d.ts +6 -0
- package/es/victory-state/helpers/get-scale.js +59 -0
- package/es/victory-state/index.d.ts +3 -0
- package/es/victory-state/index.js +3 -0
- package/es/victory-state/types.d.ts +24 -0
- package/es/victory-state/types.js +2 -0
- package/es/victory-state/victory-provider.d.ts +19 -0
- package/es/victory-state/victory-provider.js +118 -0
- package/es/victory-theme/grayscale.d.ts +3 -0
- package/es/victory-theme/grayscale.js +3 -2
- package/es/victory-theme/material.d.ts +3 -0
- package/es/victory-theme/material.js +3 -2
- package/es/victory-theme/types.d.ts +239 -0
- package/es/victory-theme/types.js +2 -0
- package/es/victory-theme/victory-theme.d.ts +6 -0
- package/es/victory-theme/victory-theme.js +8 -6
- package/es/victory-transition/victory-transition.d.ts +60 -0
- package/es/victory-transition/victory-transition.js +20 -23
- package/es/victory-util/add-events.d.ts +106 -0
- package/es/victory-util/add-events.js +44 -34
- package/es/victory-util/axis.d.ts +51 -0
- package/es/victory-util/axis.js +9 -8
- package/es/victory-util/collection.d.ts +9 -0
- package/es/victory-util/collection.js +6 -6
- package/es/victory-util/common-props.d.ts +84 -0
- package/es/victory-util/common-props.js +29 -12
- package/es/victory-util/data.d.ts +75 -0
- package/es/victory-util/data.js +2 -3
- package/es/victory-util/default-transitions.d.ts +5 -0
- package/es/victory-util/default-transitions.js +2 -2
- package/es/victory-util/domain.d.ts +91 -0
- package/es/victory-util/domain.js +6 -4
- package/es/victory-util/events.d.ts +65 -0
- package/es/victory-util/events.js +13 -8
- package/es/victory-util/helpers.d.ts +61 -0
- package/es/victory-util/helpers.js +8 -6
- package/es/victory-util/hooks/index.d.ts +3 -0
- package/es/victory-util/hooks/index.js +2 -1
- package/es/victory-util/hooks/use-animation-state.js +2 -1
- package/es/victory-util/hooks/use-previous-props.d.ts +2 -0
- package/es/victory-util/hooks/use-previous-props.js +4 -3
- package/es/victory-util/immutable.d.ts +12 -0
- package/es/victory-util/immutable.js +5 -5
- package/es/victory-util/index.d.ts +29 -0
- package/es/victory-util/index.js +48 -0
- package/es/victory-util/label-helpers.d.ts +27 -0
- package/es/victory-util/label-helpers.js +2 -3
- package/es/victory-util/line-helpers.d.ts +5 -0
- package/es/victory-util/line-helpers.js +24 -6
- package/es/victory-util/log.d.ts +2 -0
- package/es/victory-util/log.js +2 -2
- package/es/victory-util/point-path-helpers.d.ts +10 -0
- package/es/victory-util/point-path-helpers.js +60 -61
- package/es/victory-util/prop-types.d.ts +51 -0
- package/es/victory-util/prop-types.js +35 -44
- package/es/victory-util/scale.d.ts +10 -0
- package/es/victory-util/scale.js +14 -6
- package/es/victory-util/selection.d.ts +25 -0
- package/es/victory-util/selection.js +25 -16
- package/es/victory-util/style.d.ts +19 -0
- package/es/victory-util/style.js +2 -3
- package/es/victory-util/textsize.d.ts +37 -0
- package/es/victory-util/textsize.js +9 -6
- package/es/victory-util/timer-context.d.ts +12 -0
- package/es/victory-util/timer-context.js +2 -1
- package/es/victory-util/timer.d.ts +17 -0
- package/es/victory-util/timer.js +15 -9
- package/es/victory-util/transitions.d.ts +49 -0
- package/es/victory-util/transitions.js +5 -4
- package/es/victory-util/type-helpers.d.ts +10 -0
- package/es/victory-util/type-helpers.js +28 -0
- package/es/victory-util/user-props.d.ts +21 -0
- package/es/victory-util/user-props.js +6 -5
- package/es/victory-util/with-container.d.ts +5 -0
- package/es/victory-util/with-container.js +32 -0
- package/es/victory-util/wrapper.d.ts +38 -0
- package/es/victory-util/wrapper.js +4 -3
- package/lib/index.d.ts +18 -941
- package/lib/index.js +224 -311
- package/lib/types/callbacks.d.ts +37 -0
- package/lib/types/callbacks.js +2 -0
- package/lib/types/prop-types.d.ts +130 -0
- package/lib/types/prop-types.js +2 -0
- package/lib/victory-accessible-group/victory-accessible-group.d.ts +26 -0
- package/lib/victory-accessible-group/victory-accessible-group.js +10 -15
- package/lib/victory-animation/util.d.ts +67 -0
- package/lib/victory-animation/util.js +7 -4
- package/lib/victory-animation/victory-animation.d.ts +70 -0
- package/lib/victory-animation/victory-animation.js +61 -65
- package/lib/victory-clip-container/victory-clip-container.d.ts +77 -0
- package/lib/victory-clip-container/victory-clip-container.js +20 -22
- package/lib/victory-container/victory-container.d.ts +100 -0
- package/lib/victory-container/victory-container.js +35 -31
- package/lib/victory-label/victory-label.d.ts +62 -0
- package/lib/victory-label/victory-label.js +20 -14
- package/lib/victory-portal/portal-context.d.ts +12 -0
- package/lib/victory-portal/portal-context.js +3 -3
- package/lib/victory-portal/portal.d.ts +29 -0
- package/lib/victory-portal/portal.js +27 -31
- package/lib/victory-portal/victory-portal.d.ts +32 -0
- package/lib/victory-portal/victory-portal.js +25 -20
- package/lib/victory-primitives/arc.d.ts +50 -0
- package/lib/victory-primitives/arc.js +7 -7
- package/lib/victory-primitives/background.d.ts +51 -0
- package/lib/victory-primitives/background.js +9 -9
- package/lib/victory-primitives/border.d.ts +44 -0
- package/lib/victory-primitives/border.js +7 -7
- package/lib/victory-primitives/circle.d.ts +3 -0
- package/lib/victory-primitives/circle.js +12 -6
- package/lib/victory-primitives/clip-path.d.ts +15 -0
- package/lib/victory-primitives/clip-path.js +7 -4
- package/lib/victory-primitives/index.d.ts +15 -0
- package/lib/victory-primitives/index.js +188 -0
- package/lib/victory-primitives/line-segment.d.ts +46 -0
- package/lib/victory-primitives/line-segment.js +7 -7
- package/lib/victory-primitives/line.d.ts +3 -0
- package/lib/victory-primitives/line.js +12 -6
- package/lib/victory-primitives/path.d.ts +3 -0
- package/lib/victory-primitives/path.js +10 -4
- package/lib/victory-primitives/point.d.ts +49 -0
- package/lib/victory-primitives/point.js +15 -22
- package/lib/victory-primitives/rect.d.ts +3 -0
- package/lib/victory-primitives/rect.js +12 -6
- package/lib/victory-primitives/text.d.ts +17 -0
- package/lib/victory-primitives/text.js +8 -4
- package/lib/victory-primitives/tspan.d.ts +3 -0
- package/lib/victory-primitives/tspan.js +8 -4
- package/lib/victory-primitives/types.d.ts +8 -0
- package/lib/victory-primitives/types.js +2 -0
- package/lib/victory-primitives/whisker.d.ts +59 -0
- package/lib/victory-primitives/whisker.js +7 -7
- package/lib/victory-state/defaults.d.ts +3 -0
- package/lib/victory-state/defaults.js +11 -0
- package/lib/victory-state/helpers/get-axis-data.d.ts +3 -0
- package/lib/victory-state/helpers/get-axis-data.js +23 -0
- package/lib/victory-state/helpers/get-data.d.ts +15 -0
- package/lib/victory-state/helpers/get-data.js +99 -0
- package/lib/victory-state/helpers/get-domain.d.ts +6 -0
- package/lib/victory-state/helpers/get-domain.js +82 -0
- package/lib/victory-state/helpers/get-range.d.ts +6 -0
- package/lib/victory-state/helpers/get-range.js +46 -0
- package/lib/victory-state/helpers/get-scale.d.ts +6 -0
- package/lib/victory-state/helpers/get-scale.js +74 -0
- package/lib/victory-state/index.d.ts +3 -0
- package/lib/victory-state/index.js +32 -0
- package/lib/victory-state/types.d.ts +24 -0
- package/lib/victory-state/types.js +2 -0
- package/lib/victory-state/victory-provider.d.ts +19 -0
- package/lib/victory-state/victory-provider.js +144 -0
- package/lib/victory-theme/grayscale.d.ts +3 -0
- package/lib/victory-theme/grayscale.js +4 -3
- package/lib/victory-theme/material.d.ts +3 -0
- package/lib/victory-theme/material.js +4 -3
- package/lib/victory-theme/types.d.ts +239 -0
- package/lib/victory-theme/types.js +2 -0
- package/lib/victory-theme/victory-theme.d.ts +6 -0
- package/lib/victory-theme/victory-theme.js +23 -8
- package/lib/victory-transition/victory-transition.d.ts +60 -0
- package/lib/victory-transition/victory-transition.js +22 -23
- package/lib/victory-util/add-events.d.ts +106 -0
- package/lib/victory-util/add-events.js +48 -40
- package/lib/victory-util/axis.d.ts +51 -0
- package/lib/victory-util/axis.js +8 -6
- package/lib/victory-util/collection.d.ts +9 -0
- package/lib/victory-util/collection.js +6 -6
- package/lib/victory-util/common-props.d.ts +84 -0
- package/lib/victory-util/common-props.js +27 -12
- package/lib/victory-util/data.d.ts +75 -0
- package/lib/victory-util/data.js +2 -1
- package/lib/victory-util/default-transitions.d.ts +5 -0
- package/lib/victory-util/default-transitions.js +2 -2
- package/lib/victory-util/domain.d.ts +91 -0
- package/lib/victory-util/domain.js +6 -2
- package/lib/victory-util/events.d.ts +65 -0
- package/lib/victory-util/events.js +13 -9
- package/lib/victory-util/helpers.d.ts +61 -0
- package/lib/victory-util/helpers.js +8 -6
- package/lib/victory-util/hooks/index.d.ts +3 -0
- package/lib/victory-util/hooks/index.js +2 -1
- package/lib/victory-util/hooks/use-animation-state.js +2 -1
- package/lib/victory-util/hooks/use-previous-props.d.ts +2 -0
- package/lib/victory-util/hooks/use-previous-props.js +5 -6
- package/lib/victory-util/immutable.d.ts +12 -0
- package/lib/victory-util/immutable.js +5 -6
- package/lib/victory-util/index.d.ts +29 -0
- package/lib/victory-util/index.js +181 -0
- package/lib/victory-util/label-helpers.d.ts +27 -0
- package/lib/victory-util/label-helpers.js +2 -3
- package/lib/victory-util/line-helpers.d.ts +5 -0
- package/lib/victory-util/line-helpers.js +28 -7
- package/lib/victory-util/log.d.ts +2 -0
- package/lib/victory-util/log.js +2 -2
- package/lib/victory-util/point-path-helpers.d.ts +10 -0
- package/lib/victory-util/point-path-helpers.js +87 -73
- package/lib/victory-util/prop-types.d.ts +51 -0
- package/lib/victory-util/prop-types.js +36 -44
- package/lib/victory-util/scale.d.ts +10 -0
- package/lib/victory-util/scale.js +14 -5
- package/lib/victory-util/selection.d.ts +25 -0
- package/lib/victory-util/selection.js +25 -21
- package/lib/victory-util/style.d.ts +19 -0
- package/lib/victory-util/style.js +2 -3
- package/lib/victory-util/textsize.d.ts +37 -0
- package/lib/victory-util/textsize.js +9 -6
- package/lib/victory-util/timer-context.d.ts +12 -0
- package/lib/victory-util/timer-context.js +2 -1
- package/lib/victory-util/timer.d.ts +17 -0
- package/lib/victory-util/timer.js +15 -9
- package/lib/victory-util/transitions.d.ts +49 -0
- package/lib/victory-util/transitions.js +5 -4
- package/lib/victory-util/type-helpers.d.ts +10 -0
- package/lib/victory-util/type-helpers.js +45 -0
- package/lib/victory-util/user-props.d.ts +21 -0
- package/lib/victory-util/user-props.js +6 -5
- package/lib/victory-util/with-container.d.ts +5 -0
- package/lib/victory-util/with-container.js +44 -0
- package/lib/victory-util/wrapper.d.ts +38 -0
- package/lib/victory-util/wrapper.js +4 -3
- package/package.json +4 -4
- package/src/index.ts +17 -0
- package/src/types/callbacks.ts +53 -0
- package/src/types/prop-types.ts +195 -0
- package/src/victory-accessible-group/{victory-accessible-group.js → victory-accessible-group.tsx} +13 -6
- package/src/victory-animation/{util.js → util.ts} +6 -4
- package/src/victory-animation/{victory-animation.js → victory-animation.tsx} +100 -23
- package/src/victory-clip-container/{victory-clip-container.js → victory-clip-container.tsx} +52 -28
- package/src/victory-container/{victory-container.js → victory-container.tsx} +86 -42
- package/src/victory-label/{victory-label.js → victory-label.tsx} +108 -49
- package/src/victory-portal/portal-context.ts +14 -0
- package/src/victory-portal/{portal.js → portal.tsx} +24 -13
- package/src/victory-portal/{victory-portal.js → victory-portal.tsx} +24 -9
- package/src/victory-primitives/{arc.js → arc.tsx} +22 -10
- package/src/victory-primitives/{background.js → background.tsx} +24 -12
- package/src/victory-primitives/{border.js → border.tsx} +19 -10
- package/src/victory-primitives/{circle.js → circle.tsx} +4 -3
- package/src/victory-primitives/clip-path.tsx +25 -0
- package/src/victory-primitives/index.ts +14 -0
- package/src/victory-primitives/{line-segment.js → line-segment.tsx} +20 -10
- package/src/victory-primitives/{line.js → line.tsx} +4 -3
- package/src/victory-primitives/{path.js → path.tsx} +4 -3
- package/src/victory-primitives/{point.js → point.tsx} +33 -26
- package/src/victory-primitives/{rect.js → rect.tsx} +4 -2
- package/src/victory-primitives/{text.js → text.tsx} +10 -4
- package/src/victory-primitives/tspan.tsx +7 -0
- package/src/victory-primitives/types.ts +19 -0
- package/src/victory-primitives/{whisker.js → whisker.tsx} +34 -19
- package/src/victory-state/defaults.ts +2 -0
- package/src/victory-state/helpers/get-axis-data.ts +14 -0
- package/src/victory-state/helpers/get-data.ts +79 -0
- package/src/victory-state/helpers/get-domain.ts +62 -0
- package/src/victory-state/helpers/get-range.ts +39 -0
- package/src/victory-state/helpers/get-scale.ts +64 -0
- package/src/victory-state/index.ts +2 -0
- package/src/victory-state/types.ts +32 -0
- package/src/victory-state/victory-provider.tsx +116 -0
- package/src/victory-theme/{grayscale.js → grayscale.tsx} +63 -62
- package/src/victory-theme/{material.js → material.tsx} +68 -67
- package/src/victory-theme/types.ts +257 -0
- package/src/victory-theme/victory-theme.tsx +5 -0
- package/src/victory-transition/{victory-transition.js → victory-transition.tsx} +82 -33
- package/src/victory-util/{add-events.js → add-events.tsx} +142 -60
- package/src/victory-util/{axis.js → axis.tsx} +17 -19
- package/src/victory-util/{collection.js → collection.tsx} +14 -11
- package/src/victory-util/common-props.tsx +307 -0
- package/src/victory-util/{data.js → data.ts} +14 -11
- package/src/victory-util/{default-transitions.js → default-transitions.ts} +20 -19
- package/src/victory-util/{domain.js → domain.ts} +26 -24
- package/src/victory-util/{events.js → events.ts} +83 -32
- package/src/victory-util/{helpers.js → helpers.ts} +41 -23
- package/src/victory-util/hooks/{index.js → index.ts} +0 -0
- package/src/victory-util/hooks/use-animation-state.js +10 -10
- package/src/victory-util/hooks/use-previous-props.ts +9 -0
- package/src/victory-util/{immutable.js → immutable.ts} +14 -11
- package/src/victory-util/index.ts +28 -0
- package/src/victory-util/{label-helpers.js → label-helpers.ts} +7 -8
- package/src/victory-util/line-helpers.ts +104 -0
- package/src/victory-util/{log.js → log.ts} +1 -2
- package/src/victory-util/point-path-helpers.ts +119 -0
- package/src/victory-util/{prop-types.js → prop-types.ts} +103 -102
- package/src/victory-util/{scale.js → scale.ts} +29 -17
- package/src/victory-util/selection.ts +158 -0
- package/src/victory-util/{style.js → style.ts} +3 -4
- package/src/victory-util/{textsize.js → textsize.ts} +32 -17
- package/src/victory-util/{timer-context.js → timer-context.ts} +1 -1
- package/src/victory-util/{timer.js → timer.ts} +16 -6
- package/src/victory-util/{transitions.js → transitions.ts} +50 -23
- package/src/victory-util/type-helpers.ts +50 -0
- package/src/victory-util/{user-props.js → user-props.ts} +16 -11
- package/src/victory-util/with-container.tsx +41 -0
- package/src/victory-util/{wrapper.js → wrapper.tsx} +38 -34
- package/src/index.d.ts +0 -941
- package/src/index.js +0 -51
- package/src/victory-portal/portal-context.js +0 -10
- package/src/victory-primitives/clip-path.js +0 -18
- package/src/victory-primitives/tspan.js +0 -5
- package/src/victory-theme/victory-theme.js +0 -7
- package/src/victory-util/common-props.js +0 -197
- package/src/victory-util/hooks/use-previous-props.js +0 -9
- package/src/victory-util/line-helpers.js +0 -54
- package/src/victory-util/point-path-helpers.js +0 -121
- package/src/victory-util/selection.js +0 -99
|
@@ -2,8 +2,19 @@ import React from "react";
|
|
|
2
2
|
import PropTypes from "prop-types";
|
|
3
3
|
import * as Helpers from "../victory-util/helpers";
|
|
4
4
|
import { assign } from "lodash";
|
|
5
|
-
import
|
|
6
|
-
|
|
5
|
+
import {
|
|
6
|
+
CommonProps,
|
|
7
|
+
VictoryCommonPrimitiveProps,
|
|
8
|
+
} from "../victory-util/common-props";
|
|
9
|
+
import { Rect } from "./rect";
|
|
10
|
+
|
|
11
|
+
export interface BorderProps extends VictoryCommonPrimitiveProps {
|
|
12
|
+
width?: number;
|
|
13
|
+
height?: number;
|
|
14
|
+
rectComponent?: React.ReactElement;
|
|
15
|
+
x?: number;
|
|
16
|
+
y?: number;
|
|
17
|
+
}
|
|
7
18
|
|
|
8
19
|
const evaluateProps = (props) => {
|
|
9
20
|
/**
|
|
@@ -19,17 +30,17 @@ const evaluateProps = (props) => {
|
|
|
19
30
|
const id = Helpers.evaluateProp(props.id, props);
|
|
20
31
|
const style = Helpers.evaluateStyle(
|
|
21
32
|
assign({ fill: "none" }, props.style),
|
|
22
|
-
props
|
|
33
|
+
props,
|
|
23
34
|
);
|
|
24
35
|
const tabIndex = Helpers.evaluateProp(props.tabIndex, props);
|
|
25
36
|
|
|
26
37
|
return assign({}, props, { ariaLabel, desc, id, style, tabIndex });
|
|
27
38
|
};
|
|
28
39
|
|
|
29
|
-
const Border = (props) => {
|
|
40
|
+
export const Border = (props: BorderProps) => {
|
|
30
41
|
props = evaluateProps(props);
|
|
31
42
|
|
|
32
|
-
return React.cloneElement(props.rectComponent
|
|
43
|
+
return React.cloneElement(props.rectComponent!, {
|
|
33
44
|
...props.events,
|
|
34
45
|
"aria-label": props.ariaLabel,
|
|
35
46
|
style: props.style,
|
|
@@ -43,7 +54,7 @@ const Border = (props) => {
|
|
|
43
54
|
y: props.y,
|
|
44
55
|
width: props.width,
|
|
45
56
|
height: props.height,
|
|
46
|
-
clipPath: props.clipPath
|
|
57
|
+
clipPath: props.clipPath,
|
|
47
58
|
});
|
|
48
59
|
};
|
|
49
60
|
|
|
@@ -53,13 +64,11 @@ Border.propTypes = {
|
|
|
53
64
|
rectComponent: PropTypes.element,
|
|
54
65
|
width: PropTypes.number,
|
|
55
66
|
x: PropTypes.number,
|
|
56
|
-
y: PropTypes.number
|
|
67
|
+
y: PropTypes.number,
|
|
57
68
|
};
|
|
58
69
|
|
|
59
70
|
Border.defaultProps = {
|
|
60
71
|
rectComponent: <Rect />,
|
|
61
72
|
role: "presentation",
|
|
62
|
-
shapeRendering: "auto"
|
|
73
|
+
shapeRendering: "auto",
|
|
63
74
|
};
|
|
64
|
-
|
|
65
|
-
export default Border;
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
+
import { VictoryPrimitiveShapeProps } from "./types";
|
|
2
3
|
|
|
3
|
-
const Circle = (props) => {
|
|
4
|
+
export const Circle = (props: VictoryPrimitiveShapeProps) => {
|
|
4
5
|
// eslint-disable-next-line react/prop-types
|
|
5
6
|
const { desc, ...rest } = props;
|
|
6
7
|
return desc ? (
|
|
8
|
+
// @ts-expect-error FIXME: "id cannot be a number"
|
|
7
9
|
<circle vectorEffect="non-scaling-stroke" {...rest}>
|
|
8
10
|
<desc>{desc}</desc>
|
|
9
11
|
</circle>
|
|
10
12
|
) : (
|
|
13
|
+
// @ts-expect-error FIXME: "id cannot be a number"
|
|
11
14
|
<circle vectorEffect="non-scaling-stroke" {...rest} />
|
|
12
15
|
);
|
|
13
16
|
};
|
|
14
|
-
|
|
15
|
-
export default Circle;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import PropTypes from "prop-types";
|
|
3
|
+
import { VictoryCommonPrimitiveProps } from "../victory-util/common-props";
|
|
4
|
+
|
|
5
|
+
export interface ClipPathProps extends VictoryCommonPrimitiveProps {
|
|
6
|
+
children?: React.ReactNode[] | React.ReactNode;
|
|
7
|
+
clipId?: number | string;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export const ClipPath = (props: ClipPathProps) => (
|
|
11
|
+
<defs>
|
|
12
|
+
{
|
|
13
|
+
// @ts-expect-error FIXME: "id cannot be a number"
|
|
14
|
+
<clipPath id={props.clipId}>{props.children}</clipPath>
|
|
15
|
+
}
|
|
16
|
+
</defs>
|
|
17
|
+
);
|
|
18
|
+
|
|
19
|
+
ClipPath.propTypes = {
|
|
20
|
+
children: PropTypes.oneOfType([
|
|
21
|
+
PropTypes.arrayOf(PropTypes.node),
|
|
22
|
+
PropTypes.node,
|
|
23
|
+
]),
|
|
24
|
+
clipId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
|
|
25
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export * from "./arc";
|
|
2
|
+
export * from "./background";
|
|
3
|
+
export * from "./border";
|
|
4
|
+
export * from "./circle";
|
|
5
|
+
export * from "./clip-path";
|
|
6
|
+
export * from "./line";
|
|
7
|
+
export * from "./line-segment";
|
|
8
|
+
export * from "./path";
|
|
9
|
+
export * from "./point";
|
|
10
|
+
export * from "./rect";
|
|
11
|
+
export * from "./text";
|
|
12
|
+
export * from "./tspan";
|
|
13
|
+
export * from "./types";
|
|
14
|
+
export * from "./whisker";
|
|
@@ -2,8 +2,20 @@ import React from "react";
|
|
|
2
2
|
import PropTypes from "prop-types";
|
|
3
3
|
import * as Helpers from "../victory-util/helpers";
|
|
4
4
|
import { assign } from "lodash";
|
|
5
|
-
import
|
|
6
|
-
|
|
5
|
+
import {
|
|
6
|
+
CommonProps,
|
|
7
|
+
VictoryCommonPrimitiveProps,
|
|
8
|
+
} from "../victory-util/common-props";
|
|
9
|
+
import { Line } from "./line";
|
|
10
|
+
|
|
11
|
+
export interface LineSegmentProps extends VictoryCommonPrimitiveProps {
|
|
12
|
+
datum?: any;
|
|
13
|
+
lineComponent?: React.ReactElement;
|
|
14
|
+
x1?: number;
|
|
15
|
+
x2?: number;
|
|
16
|
+
y1?: number;
|
|
17
|
+
y2?: number;
|
|
18
|
+
}
|
|
7
19
|
|
|
8
20
|
const evaluateProps = (props) => {
|
|
9
21
|
/**
|
|
@@ -19,17 +31,17 @@ const evaluateProps = (props) => {
|
|
|
19
31
|
const id = Helpers.evaluateProp(props.id, props);
|
|
20
32
|
const style = Helpers.evaluateStyle(
|
|
21
33
|
assign({ stroke: "black" }, props.style),
|
|
22
|
-
props
|
|
34
|
+
props,
|
|
23
35
|
);
|
|
24
36
|
const tabIndex = Helpers.evaluateProp(props.tabIndex, props);
|
|
25
37
|
|
|
26
38
|
return assign({}, props, { ariaLabel, desc, id, style, tabIndex });
|
|
27
39
|
};
|
|
28
40
|
|
|
29
|
-
const LineSegment = (props) => {
|
|
41
|
+
export const LineSegment = (props: LineSegmentProps) => {
|
|
30
42
|
props = evaluateProps(props);
|
|
31
43
|
|
|
32
|
-
return React.cloneElement(props.lineComponent
|
|
44
|
+
return React.cloneElement(props.lineComponent!, {
|
|
33
45
|
...props.events,
|
|
34
46
|
"aria-label": props.ariaLabel,
|
|
35
47
|
style: props.style,
|
|
@@ -43,7 +55,7 @@ const LineSegment = (props) => {
|
|
|
43
55
|
y1: props.y1,
|
|
44
56
|
y2: props.y2,
|
|
45
57
|
transform: props.transform,
|
|
46
|
-
clipPath: props.clipPath
|
|
58
|
+
clipPath: props.clipPath,
|
|
47
59
|
});
|
|
48
60
|
};
|
|
49
61
|
|
|
@@ -54,13 +66,11 @@ LineSegment.propTypes = {
|
|
|
54
66
|
x1: PropTypes.number,
|
|
55
67
|
x2: PropTypes.number,
|
|
56
68
|
y1: PropTypes.number,
|
|
57
|
-
y2: PropTypes.number
|
|
69
|
+
y2: PropTypes.number,
|
|
58
70
|
};
|
|
59
71
|
|
|
60
72
|
LineSegment.defaultProps = {
|
|
61
73
|
lineComponent: <Line />,
|
|
62
74
|
role: "presentation",
|
|
63
|
-
shapeRendering: "auto"
|
|
75
|
+
shapeRendering: "auto",
|
|
64
76
|
};
|
|
65
|
-
|
|
66
|
-
export default LineSegment;
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
+
import { VictoryPrimitiveShapeProps } from "./types";
|
|
2
3
|
|
|
3
|
-
const Line = (props) => {
|
|
4
|
+
export const Line = (props: VictoryPrimitiveShapeProps) => {
|
|
4
5
|
// eslint-disable-next-line react/prop-types
|
|
5
6
|
const { desc, ...rest } = props;
|
|
6
7
|
return desc ? (
|
|
8
|
+
// @ts-expect-error FIXME: "id cannot be a number"
|
|
7
9
|
<line vectorEffect="non-scaling-stroke" {...rest}>
|
|
8
10
|
<desc>{desc}</desc>
|
|
9
11
|
</line>
|
|
10
12
|
) : (
|
|
13
|
+
// @ts-expect-error FIXME: "id cannot be a number"
|
|
11
14
|
<line vectorEffect="non-scaling-stroke" {...rest} />
|
|
12
15
|
);
|
|
13
16
|
};
|
|
14
|
-
|
|
15
|
-
export default Line;
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
+
import { VictoryPrimitiveShapeProps } from "./types";
|
|
2
3
|
|
|
3
|
-
const Path = (props) => {
|
|
4
|
+
export const Path = (props: VictoryPrimitiveShapeProps) => {
|
|
4
5
|
// eslint-disable-next-line react/prop-types
|
|
5
6
|
const { desc, ...rest } = props;
|
|
6
7
|
return desc ? (
|
|
8
|
+
// @ts-expect-error FIXME: "id cannot be a number"
|
|
7
9
|
<path {...rest}>
|
|
8
10
|
<desc>{desc}</desc>
|
|
9
11
|
</path>
|
|
10
12
|
) : (
|
|
13
|
+
// @ts-expect-error FIXME: "id cannot be a number"
|
|
11
14
|
<path {...rest} />
|
|
12
15
|
);
|
|
13
16
|
};
|
|
14
|
-
|
|
15
|
-
export default Path;
|
|
@@ -1,27 +1,34 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import PropTypes from "prop-types";
|
|
3
1
|
import { assign } from "lodash";
|
|
2
|
+
import PropTypes from "prop-types";
|
|
3
|
+
import React from "react";
|
|
4
4
|
import * as Helpers from "../victory-util/helpers";
|
|
5
|
-
import pathHelpers from "../victory-util/point-path-helpers";
|
|
6
|
-
import
|
|
7
|
-
|
|
5
|
+
import * as pathHelpers from "../victory-util/point-path-helpers";
|
|
6
|
+
import {
|
|
7
|
+
CommonProps,
|
|
8
|
+
VictoryCommonPrimitiveProps,
|
|
9
|
+
} from "../victory-util/common-props";
|
|
10
|
+
import * as UserProps from "../victory-util/user-props";
|
|
11
|
+
import { Path } from "./path";
|
|
12
|
+
import { ScatterSymbolType } from "./types";
|
|
13
|
+
|
|
14
|
+
export interface PointProps extends VictoryCommonPrimitiveProps {
|
|
15
|
+
datum?: any;
|
|
16
|
+
getPath?: (x: number, y: number, size: number) => string;
|
|
17
|
+
pathComponent?: React.ReactElement;
|
|
18
|
+
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
19
|
+
size?: number | Function;
|
|
20
|
+
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
21
|
+
symbol?: ScatterSymbolType | Function;
|
|
22
|
+
x?: number;
|
|
23
|
+
y?: number;
|
|
24
|
+
}
|
|
8
25
|
|
|
9
26
|
const getPath = (props) => {
|
|
10
27
|
const { x, y, size, symbol } = props;
|
|
11
28
|
if (props.getPath) {
|
|
12
29
|
return props.getPath(x, y, size);
|
|
13
30
|
}
|
|
14
|
-
const pathFunctions =
|
|
15
|
-
circle: pathHelpers.circle,
|
|
16
|
-
square: pathHelpers.square,
|
|
17
|
-
diamond: pathHelpers.diamond,
|
|
18
|
-
triangleDown: pathHelpers.triangleDown,
|
|
19
|
-
triangleUp: pathHelpers.triangleUp,
|
|
20
|
-
plus: pathHelpers.plus,
|
|
21
|
-
minus: pathHelpers.minus,
|
|
22
|
-
star: pathHelpers.star,
|
|
23
|
-
cross: pathHelpers.cross
|
|
24
|
-
};
|
|
31
|
+
const pathFunctions = pathHelpers;
|
|
25
32
|
const symbolFunction =
|
|
26
33
|
typeof pathFunctions[symbol] === "function"
|
|
27
34
|
? pathFunctions[symbol]
|
|
@@ -55,14 +62,15 @@ const evaluateProps = (props) => {
|
|
|
55
62
|
size,
|
|
56
63
|
style,
|
|
57
64
|
symbol,
|
|
58
|
-
tabIndex
|
|
65
|
+
tabIndex,
|
|
59
66
|
});
|
|
60
67
|
};
|
|
61
68
|
|
|
62
|
-
const Point = (props) => {
|
|
69
|
+
export const Point = (props: PointProps) => {
|
|
63
70
|
props = evaluateProps(props);
|
|
71
|
+
const userProps = UserProps.getSafeUserProps(props);
|
|
64
72
|
|
|
65
|
-
return React.cloneElement(props.pathComponent
|
|
73
|
+
return React.cloneElement(props.pathComponent!, {
|
|
66
74
|
...props.events,
|
|
67
75
|
"aria-label": props.ariaLabel,
|
|
68
76
|
d: getPath(props),
|
|
@@ -73,7 +81,8 @@ const Point = (props) => {
|
|
|
73
81
|
shapeRendering: props.shapeRendering,
|
|
74
82
|
className: props.className,
|
|
75
83
|
transform: props.transform,
|
|
76
|
-
clipPath: props.clipPath
|
|
84
|
+
clipPath: props.clipPath,
|
|
85
|
+
...userProps,
|
|
77
86
|
});
|
|
78
87
|
};
|
|
79
88
|
|
|
@@ -93,18 +102,16 @@ Point.propTypes = {
|
|
|
93
102
|
"square",
|
|
94
103
|
"star",
|
|
95
104
|
"triangleDown",
|
|
96
|
-
"triangleUp"
|
|
105
|
+
"triangleUp",
|
|
97
106
|
]),
|
|
98
|
-
PropTypes.func
|
|
107
|
+
PropTypes.func,
|
|
99
108
|
]),
|
|
100
109
|
x: PropTypes.number,
|
|
101
|
-
y: PropTypes.number
|
|
110
|
+
y: PropTypes.number,
|
|
102
111
|
};
|
|
103
112
|
|
|
104
113
|
Point.defaultProps = {
|
|
105
114
|
pathComponent: <Path />,
|
|
106
115
|
role: "presentation",
|
|
107
|
-
shapeRendering: "auto"
|
|
116
|
+
shapeRendering: "auto",
|
|
108
117
|
};
|
|
109
|
-
|
|
110
|
-
export default Point;
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
+
import { VictoryPrimitiveShapeProps } from "./types";
|
|
2
3
|
|
|
3
|
-
const Rect = (props) => {
|
|
4
|
+
export const Rect = (props: VictoryPrimitiveShapeProps) => {
|
|
4
5
|
// eslint-disable-next-line react/prop-types
|
|
5
6
|
const { desc, ...rest } = props;
|
|
6
7
|
return desc ? (
|
|
8
|
+
// @ts-expect-error FIXME: "id cannot be a number"
|
|
7
9
|
<rect vectorEffect="non-scaling-stroke" {...rest}>
|
|
8
10
|
<desc>{desc}</desc>
|
|
9
11
|
</rect>
|
|
10
12
|
) : (
|
|
13
|
+
// @ts-expect-error FIXME: "id cannot be a number"
|
|
11
14
|
<rect vectorEffect="non-scaling-stroke" {...rest} />
|
|
12
15
|
);
|
|
13
16
|
};
|
|
14
|
-
export default Rect;
|
|
@@ -1,9 +1,17 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import PropTypes from "prop-types";
|
|
3
|
+
import { VictoryCommonPrimitiveProps } from "../victory-util/common-props";
|
|
3
4
|
|
|
4
|
-
|
|
5
|
+
export interface TextProps extends VictoryCommonPrimitiveProps {
|
|
6
|
+
children?: React.ReactNode;
|
|
7
|
+
desc?: string;
|
|
8
|
+
title?: string;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export const Text = (props: TextProps) => {
|
|
5
12
|
const { children, title, desc, ...rest } = props;
|
|
6
13
|
return (
|
|
14
|
+
// @ts-expect-error FIXME: "id cannot be a number"
|
|
7
15
|
<text {...rest}>
|
|
8
16
|
{title && <title>{title}</title>}
|
|
9
17
|
{desc && <desc>{desc}</desc>}
|
|
@@ -15,7 +23,5 @@ const Text = (props) => {
|
|
|
15
23
|
Text.propTypes = {
|
|
16
24
|
children: PropTypes.node,
|
|
17
25
|
desc: PropTypes.string,
|
|
18
|
-
title: PropTypes.string
|
|
26
|
+
title: PropTypes.string,
|
|
19
27
|
};
|
|
20
|
-
|
|
21
|
-
export default Text;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { VictoryCommonPrimitiveProps } from "../victory-util/common-props";
|
|
2
|
+
|
|
3
|
+
export type ScatterSymbolType =
|
|
4
|
+
| "circle"
|
|
5
|
+
| "cross"
|
|
6
|
+
| "diamond"
|
|
7
|
+
| "plus"
|
|
8
|
+
| "minus"
|
|
9
|
+
| "square"
|
|
10
|
+
| "star"
|
|
11
|
+
| "triangleDown"
|
|
12
|
+
| "triangleUp";
|
|
13
|
+
|
|
14
|
+
export interface VictoryPrimitiveShapeProps
|
|
15
|
+
extends VictoryCommonPrimitiveProps {
|
|
16
|
+
desc?: string;
|
|
17
|
+
rx?: number;
|
|
18
|
+
ry?: number;
|
|
19
|
+
}
|
|
@@ -2,8 +2,25 @@ import React from "react";
|
|
|
2
2
|
import { assign } from "lodash";
|
|
3
3
|
import PropTypes from "prop-types";
|
|
4
4
|
import * as Helpers from "../victory-util/helpers";
|
|
5
|
-
import
|
|
6
|
-
|
|
5
|
+
import {
|
|
6
|
+
CommonProps,
|
|
7
|
+
VictoryCommonPrimitiveProps,
|
|
8
|
+
} from "../victory-util/common-props";
|
|
9
|
+
import { Line } from "./line";
|
|
10
|
+
|
|
11
|
+
export type WhiskerAxes = {
|
|
12
|
+
x1?: number;
|
|
13
|
+
x2?: number;
|
|
14
|
+
y1?: number;
|
|
15
|
+
y2?: number;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
export interface WhiskerProps extends VictoryCommonPrimitiveProps {
|
|
19
|
+
groupComponent?: React.ReactElement;
|
|
20
|
+
lineComponent?: React.ReactElement;
|
|
21
|
+
majorWhisker?: WhiskerAxes;
|
|
22
|
+
minorWhisker?: WhiskerAxes;
|
|
23
|
+
}
|
|
7
24
|
|
|
8
25
|
const evaluateProps = (props) => {
|
|
9
26
|
/**
|
|
@@ -23,7 +40,7 @@ const evaluateProps = (props) => {
|
|
|
23
40
|
return assign({}, props, { ariaLabel, desc, id, style, tabIndex });
|
|
24
41
|
};
|
|
25
42
|
|
|
26
|
-
const Whisker = (props) => {
|
|
43
|
+
export const Whisker = (props: WhiskerProps) => {
|
|
27
44
|
props = evaluateProps(props);
|
|
28
45
|
const {
|
|
29
46
|
ariaLabel,
|
|
@@ -39,7 +56,7 @@ const Whisker = (props) => {
|
|
|
39
56
|
shapeRendering,
|
|
40
57
|
style,
|
|
41
58
|
desc,
|
|
42
|
-
tabIndex
|
|
59
|
+
tabIndex,
|
|
43
60
|
} = props;
|
|
44
61
|
const baseProps = {
|
|
45
62
|
...events,
|
|
@@ -50,26 +67,26 @@ const Whisker = (props) => {
|
|
|
50
67
|
transform,
|
|
51
68
|
clipPath,
|
|
52
69
|
role,
|
|
53
|
-
shapeRendering
|
|
70
|
+
shapeRendering,
|
|
54
71
|
};
|
|
55
72
|
|
|
56
|
-
return React.cloneElement(groupComponent
|
|
73
|
+
return React.cloneElement(groupComponent!, {}, [
|
|
57
74
|
React.cloneElement(
|
|
58
|
-
lineComponent
|
|
75
|
+
lineComponent!,
|
|
59
76
|
assign(
|
|
60
77
|
{ key: "major-whisker", "aria-label": ariaLabel },
|
|
61
78
|
baseProps,
|
|
62
|
-
majorWhisker
|
|
63
|
-
)
|
|
79
|
+
majorWhisker,
|
|
80
|
+
),
|
|
64
81
|
),
|
|
65
82
|
React.cloneElement(
|
|
66
|
-
lineComponent
|
|
83
|
+
lineComponent!,
|
|
67
84
|
assign(
|
|
68
85
|
{ key: "minor-whisker", "aria-label": ariaLabel },
|
|
69
86
|
baseProps,
|
|
70
|
-
minorWhisker
|
|
71
|
-
)
|
|
72
|
-
)
|
|
87
|
+
minorWhisker,
|
|
88
|
+
),
|
|
89
|
+
),
|
|
73
90
|
]);
|
|
74
91
|
};
|
|
75
92
|
|
|
@@ -81,21 +98,19 @@ Whisker.propTypes = {
|
|
|
81
98
|
x1: PropTypes.number,
|
|
82
99
|
x2: PropTypes.number,
|
|
83
100
|
y1: PropTypes.number,
|
|
84
|
-
y2: PropTypes.number
|
|
101
|
+
y2: PropTypes.number,
|
|
85
102
|
}),
|
|
86
103
|
minorWhisker: PropTypes.shape({
|
|
87
104
|
x1: PropTypes.number,
|
|
88
105
|
x2: PropTypes.number,
|
|
89
106
|
y1: PropTypes.number,
|
|
90
|
-
y2: PropTypes.number
|
|
91
|
-
})
|
|
107
|
+
y2: PropTypes.number,
|
|
108
|
+
}),
|
|
92
109
|
};
|
|
93
110
|
|
|
94
111
|
Whisker.defaultProps = {
|
|
95
112
|
groupComponent: <g />,
|
|
96
113
|
lineComponent: <Line />,
|
|
97
114
|
role: "presentation",
|
|
98
|
-
shapeRendering: "auto"
|
|
115
|
+
shapeRendering: "auto",
|
|
99
116
|
};
|
|
100
|
-
|
|
101
|
-
export default Whisker;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { AxisType, Datum, DomainValue } from "../../types/prop-types";
|
|
2
|
+
import { isKeyValueObject } from "../../victory-util/type-helpers";
|
|
3
|
+
|
|
4
|
+
export function getAxisData(data: Datum[], axis: AxisType) {
|
|
5
|
+
return data.reduce((acc, datum) => {
|
|
6
|
+
if (isKeyValueObject(datum)) {
|
|
7
|
+
const value = datum[axis];
|
|
8
|
+
if (value && typeof value !== "string") {
|
|
9
|
+
acc.push(value);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
return acc;
|
|
13
|
+
}, [] as DomainValue[]);
|
|
14
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { get, isNil, orderBy } from "lodash";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { Datum, DatumValue } from "../../types/prop-types";
|
|
4
|
+
import { isKeyValueObject } from "../../victory-util/type-helpers";
|
|
5
|
+
import { VictoryProviderProps } from "../types";
|
|
6
|
+
|
|
7
|
+
type DataProps = Pick<
|
|
8
|
+
VictoryProviderProps,
|
|
9
|
+
"data" | "x" | "y" | "sortKey" | "sortOrder" | "samples"
|
|
10
|
+
>;
|
|
11
|
+
|
|
12
|
+
export interface FormattedDatum {
|
|
13
|
+
x: DatumValue;
|
|
14
|
+
y: DatumValue;
|
|
15
|
+
_x: number | Date;
|
|
16
|
+
_y: number | Date;
|
|
17
|
+
xName?: string;
|
|
18
|
+
yName?: string;
|
|
19
|
+
[key: string]: DatumValue;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
function getValue(datum: Datum, key: string): DatumValue {
|
|
23
|
+
if (typeof datum === "object") {
|
|
24
|
+
return get(datum, key);
|
|
25
|
+
}
|
|
26
|
+
return datum;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
function getNumericValue(value: DatumValue, fallback: number): number | Date {
|
|
30
|
+
if (typeof value === "number" || value instanceof Date) {
|
|
31
|
+
return value;
|
|
32
|
+
}
|
|
33
|
+
return fallback;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export function getData({
|
|
37
|
+
x: xAccessor = "x",
|
|
38
|
+
y: yAccessor = "y",
|
|
39
|
+
sortKey,
|
|
40
|
+
sortOrder = "ascending",
|
|
41
|
+
data = [],
|
|
42
|
+
}: DataProps = {}): FormattedDatum[] {
|
|
43
|
+
const formattedData = data.reduce((nonNullData, datum, index) => {
|
|
44
|
+
const x = getValue(datum, xAccessor);
|
|
45
|
+
const y = getValue(datum, yAccessor);
|
|
46
|
+
if (isNil(x) || isNil(y)) {
|
|
47
|
+
return nonNullData;
|
|
48
|
+
}
|
|
49
|
+
const _x = getNumericValue(x, index + 1);
|
|
50
|
+
const _y = getNumericValue(y, index + 1);
|
|
51
|
+
|
|
52
|
+
// TODO: Get this value if it is different
|
|
53
|
+
const xName = typeof x === "string" ? x : undefined;
|
|
54
|
+
const yName = typeof y === "string" ? y : undefined;
|
|
55
|
+
|
|
56
|
+
const additionalProperties = isKeyValueObject(datum) ? datum : {};
|
|
57
|
+
|
|
58
|
+
return [
|
|
59
|
+
...nonNullData,
|
|
60
|
+
{
|
|
61
|
+
x,
|
|
62
|
+
y,
|
|
63
|
+
_x,
|
|
64
|
+
_y,
|
|
65
|
+
// Only set these properties if they exist
|
|
66
|
+
...(xName ? { xName } : {}),
|
|
67
|
+
...(yName ? { yName } : {}),
|
|
68
|
+
...additionalProperties,
|
|
69
|
+
},
|
|
70
|
+
];
|
|
71
|
+
}, [] as FormattedDatum[]);
|
|
72
|
+
|
|
73
|
+
if (sortKey) {
|
|
74
|
+
const order = sortOrder === "descending" ? "desc" : "asc";
|
|
75
|
+
return orderBy(formattedData, sortKey, order);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
return formattedData;
|
|
79
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import * as d3Array from "victory-vendor/d3-array";
|
|
2
|
+
import { getAxisData } from "./get-axis-data";
|
|
3
|
+
import {
|
|
4
|
+
getValueForAxis,
|
|
5
|
+
isDate,
|
|
6
|
+
isTuple,
|
|
7
|
+
} from "../../victory-util/type-helpers";
|
|
8
|
+
import { VictoryProviderProps } from "../types";
|
|
9
|
+
import {
|
|
10
|
+
Tuple,
|
|
11
|
+
AxisType,
|
|
12
|
+
DomainTuple,
|
|
13
|
+
DomainValue,
|
|
14
|
+
} from "../../types/prop-types";
|
|
15
|
+
|
|
16
|
+
type DomainProps = Pick<
|
|
17
|
+
VictoryProviderProps,
|
|
18
|
+
"data" | "domain" | "maxDomain" | "minDomain" | "includeZero"
|
|
19
|
+
>;
|
|
20
|
+
|
|
21
|
+
// TODO: What should this default value be?
|
|
22
|
+
const DEFAULT_MIN = 0;
|
|
23
|
+
const DEFAULT_MAX = 1;
|
|
24
|
+
|
|
25
|
+
function getDomainFromMinMax(
|
|
26
|
+
min: number = DEFAULT_MIN,
|
|
27
|
+
max: number = DEFAULT_MAX,
|
|
28
|
+
): Tuple<number> {
|
|
29
|
+
// TODO: Victoy currently has some really specific logic in getDomainFromMinMax
|
|
30
|
+
// that adds or subtracts a very small number from each domain to avoid the min
|
|
31
|
+
// and max being the same value. This has resulted in some weird behavior in the
|
|
32
|
+
// past, so we should revisit this.
|
|
33
|
+
return [min, max];
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export function getDomain(
|
|
37
|
+
{ data = [], includeZero, ...props }: DomainProps,
|
|
38
|
+
axis: AxisType,
|
|
39
|
+
): DomainTuple {
|
|
40
|
+
const domainFromProps = getValueForAxis<DomainTuple>(props.domain, axis);
|
|
41
|
+
const axisData = getAxisData(data, axis);
|
|
42
|
+
|
|
43
|
+
if (includeZero && axis === "y") {
|
|
44
|
+
axisData.push(0);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
if (isTuple(domainFromProps)) {
|
|
48
|
+
return domainFromProps;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
const [min, max] = d3Array.extent(axisData) as DomainTuple | Tuple<undefined>;
|
|
52
|
+
|
|
53
|
+
const minDomain = getValueForAxis<DomainValue>(props.minDomain, axis) || min;
|
|
54
|
+
const maxDomain = getValueForAxis<DomainValue>(props.maxDomain, axis) || max;
|
|
55
|
+
|
|
56
|
+
if (isDate(minDomain) && isDate(maxDomain)) {
|
|
57
|
+
return [min, max] as Tuple<Date>;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// TODO: There might be an edge case here where we have mixed types
|
|
61
|
+
return getDomainFromMinMax(minDomain as number, maxDomain as number);
|
|
62
|
+
}
|