victory-core 36.5.0 → 36.5.3
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 +13817 -10827
- package/dist/victory-core.min.js +1 -1
- package/es/index.d.ts +7 -27
- package/es/index.js +7 -53
- package/es/{types.d.ts → types/callbacks.d.ts} +12 -8
- 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 +1 -0
- package/es/victory-accessible-group/victory-accessible-group.js +2 -1
- package/es/victory-animation/util.d.ts +2 -1
- package/es/victory-animation/util.js +6 -4
- package/es/victory-animation/victory-animation.d.ts +1 -0
- package/es/victory-animation/victory-animation.js +2 -1
- package/es/victory-clip-container/victory-clip-container.d.ts +6 -5
- package/es/victory-clip-container/victory-clip-container.js +2 -1
- package/es/victory-container/victory-container.d.ts +8 -7
- package/es/victory-container/victory-container.js +2 -1
- package/es/victory-label/victory-label.d.ts +3 -2
- package/es/victory-label/victory-label.js +4 -4
- package/es/victory-portal/portal-context.d.ts +1 -0
- package/es/victory-portal/portal-context.js +2 -1
- package/es/victory-portal/portal.d.ts +3 -2
- package/es/victory-portal/portal.js +2 -1
- package/es/victory-portal/victory-portal.d.ts +1 -0
- package/es/victory-portal/victory-portal.js +2 -1
- package/es/victory-primitives/arc.d.ts +31 -2
- package/es/victory-primitives/arc.js +3 -2
- package/es/victory-primitives/background.d.ts +31 -2
- package/es/victory-primitives/background.js +3 -2
- package/es/victory-primitives/border.d.ts +28 -2
- package/es/victory-primitives/border.js +3 -2
- package/es/victory-primitives/circle.d.ts +1 -0
- package/es/victory-primitives/circle.js +2 -1
- package/es/victory-primitives/clip-path.d.ts +2 -1
- package/es/victory-primitives/clip-path.js +2 -1
- package/es/victory-primitives/index.d.ts +1 -0
- package/es/victory-primitives/index.js +2 -1
- package/es/victory-primitives/line-segment.d.ts +29 -2
- package/es/victory-primitives/line-segment.js +3 -2
- package/es/victory-primitives/line.d.ts +1 -0
- package/es/victory-primitives/line.js +2 -1
- package/es/victory-primitives/path.d.ts +1 -0
- package/es/victory-primitives/path.js +2 -1
- package/es/victory-primitives/point.d.ts +30 -2
- package/es/victory-primitives/point.js +3 -2
- package/es/victory-primitives/rect.d.ts +1 -0
- package/es/victory-primitives/rect.js +2 -1
- package/es/victory-primitives/text.d.ts +2 -1
- package/es/victory-primitives/text.js +2 -1
- package/es/victory-primitives/tspan.d.ts +2 -1
- package/es/victory-primitives/tspan.js +2 -1
- package/es/victory-primitives/types.d.ts +2 -1
- package/es/victory-primitives/types.js +2 -1
- package/es/victory-primitives/whisker.d.ts +37 -2
- package/es/victory-primitives/whisker.js +3 -2
- 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 +2 -1
- package/es/victory-theme/grayscale.js +2 -1
- package/es/victory-theme/material.d.ts +2 -1
- package/es/victory-theme/material.js +2 -1
- package/{lib/victory-theme/victory-theme-definition.d.ts → es/victory-theme/types.d.ts} +3 -8
- package/es/victory-theme/types.js +2 -0
- package/es/victory-theme/victory-theme.d.ts +4 -3
- package/es/victory-theme/victory-theme.js +3 -2
- package/es/victory-transition/victory-transition.d.ts +1 -0
- package/es/victory-transition/victory-transition.js +2 -1
- package/es/victory-util/add-events.d.ts +106 -0
- package/es/victory-util/add-events.js +40 -33
- package/es/victory-util/axis.d.ts +51 -0
- package/es/victory-util/axis.js +9 -7
- package/es/victory-util/collection.d.ts +9 -0
- package/es/victory-util/collection.js +6 -4
- 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 -1
- package/es/victory-util/default-transitions.d.ts +5 -0
- package/es/victory-util/default-transitions.js +2 -1
- package/es/victory-util/domain.d.ts +91 -0
- package/es/victory-util/domain.js +6 -2
- 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 -4
- 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 +4 -3
- 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 -4
- 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 -1
- 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 -1
- package/es/victory-util/point-path-helpers.d.ts +1 -0
- package/es/victory-util/point-path-helpers.js +2 -1
- 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 -23
- package/es/victory-util/selection.js +25 -14
- package/es/victory-util/style.d.ts +19 -0
- package/es/victory-util/style.js +2 -1
- package/es/victory-util/textsize.d.ts +37 -8
- package/es/victory-util/textsize.js +9 -6
- package/es/victory-util/timer-context.d.ts +1 -0
- package/es/victory-util/timer-context.js +2 -1
- package/es/victory-util/timer.d.ts +3 -2
- package/es/victory-util/timer.js +2 -1
- 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 +7 -27
- package/lib/index.js +58 -147
- package/lib/{types.d.ts → types/callbacks.d.ts} +12 -8
- 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 +1 -0
- package/lib/victory-accessible-group/victory-accessible-group.js +2 -1
- package/lib/victory-animation/util.d.ts +2 -1
- package/lib/victory-animation/util.js +6 -4
- package/lib/victory-animation/victory-animation.d.ts +1 -0
- package/lib/victory-animation/victory-animation.js +2 -1
- package/lib/victory-clip-container/victory-clip-container.d.ts +6 -5
- package/lib/victory-clip-container/victory-clip-container.js +2 -1
- package/lib/victory-container/victory-container.d.ts +8 -7
- package/lib/victory-container/victory-container.js +2 -1
- package/lib/victory-label/victory-label.d.ts +3 -2
- package/lib/victory-label/victory-label.js +4 -4
- package/lib/victory-portal/portal-context.d.ts +1 -0
- package/lib/victory-portal/portal-context.js +2 -1
- package/lib/victory-portal/portal.d.ts +3 -2
- package/lib/victory-portal/portal.js +2 -1
- package/lib/victory-portal/victory-portal.d.ts +1 -0
- package/lib/victory-portal/victory-portal.js +2 -1
- package/lib/victory-primitives/arc.d.ts +31 -2
- package/lib/victory-primitives/arc.js +4 -3
- package/lib/victory-primitives/background.d.ts +31 -2
- package/lib/victory-primitives/background.js +4 -3
- package/lib/victory-primitives/border.d.ts +28 -2
- package/lib/victory-primitives/border.js +4 -3
- package/lib/victory-primitives/circle.d.ts +1 -0
- package/lib/victory-primitives/circle.js +2 -1
- package/lib/victory-primitives/clip-path.d.ts +2 -1
- package/lib/victory-primitives/clip-path.js +2 -1
- package/lib/victory-primitives/index.d.ts +1 -0
- package/lib/victory-primitives/index.js +2 -1
- package/lib/victory-primitives/line-segment.d.ts +29 -2
- package/lib/victory-primitives/line-segment.js +4 -3
- package/lib/victory-primitives/line.d.ts +1 -0
- package/lib/victory-primitives/line.js +2 -1
- package/lib/victory-primitives/path.d.ts +1 -0
- package/lib/victory-primitives/path.js +2 -1
- package/lib/victory-primitives/point.d.ts +30 -2
- package/lib/victory-primitives/point.js +4 -3
- package/lib/victory-primitives/rect.d.ts +1 -0
- package/lib/victory-primitives/rect.js +2 -1
- package/lib/victory-primitives/text.d.ts +2 -1
- package/lib/victory-primitives/text.js +2 -1
- package/lib/victory-primitives/tspan.d.ts +2 -1
- package/lib/victory-primitives/tspan.js +2 -1
- package/lib/victory-primitives/types.d.ts +2 -1
- package/lib/victory-primitives/types.js +2 -1
- package/lib/victory-primitives/whisker.d.ts +37 -2
- package/lib/victory-primitives/whisker.js +4 -3
- 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 +2 -1
- package/lib/victory-theme/grayscale.js +2 -1
- package/lib/victory-theme/material.d.ts +2 -1
- package/lib/victory-theme/material.js +2 -1
- package/{es/victory-theme/victory-theme-definition.d.ts → lib/victory-theme/types.d.ts} +3 -8
- package/lib/victory-theme/types.js +2 -0
- package/lib/victory-theme/victory-theme.d.ts +4 -3
- package/lib/victory-theme/victory-theme.js +6 -5
- package/lib/victory-transition/victory-transition.d.ts +1 -0
- package/lib/victory-transition/victory-transition.js +2 -1
- package/lib/victory-util/add-events.d.ts +106 -0
- package/lib/victory-util/add-events.js +40 -36
- 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 -4
- 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 -1
- 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 -4
- 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 +4 -3
- 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 -4
- 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 -1
- 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 -1
- package/lib/victory-util/point-path-helpers.d.ts +1 -0
- package/lib/victory-util/point-path-helpers.js +2 -1
- 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 -23
- package/lib/victory-util/selection.js +25 -19
- package/lib/victory-util/style.d.ts +19 -0
- package/lib/victory-util/style.js +2 -1
- package/lib/victory-util/textsize.d.ts +37 -8
- package/lib/victory-util/textsize.js +9 -6
- package/lib/victory-util/timer-context.d.ts +1 -0
- package/lib/victory-util/timer-context.js +2 -1
- package/lib/victory-util/timer.d.ts +3 -2
- package/lib/victory-util/timer.js +2 -1
- 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 +3 -3
- package/src/index.ts +9 -31
- package/src/{types.ts → types/callbacks.ts} +21 -13
- package/src/types/prop-types.ts +195 -0
- package/src/victory-accessible-group/victory-accessible-group.tsx +3 -3
- package/src/victory-animation/util.ts +3 -2
- package/src/victory-animation/victory-animation.tsx +13 -13
- package/src/victory-clip-container/victory-clip-container.tsx +23 -23
- package/src/victory-container/victory-container.tsx +19 -19
- package/src/victory-label/victory-label.tsx +41 -39
- package/src/victory-portal/portal.tsx +1 -1
- package/src/victory-portal/victory-portal.tsx +3 -3
- package/src/victory-primitives/arc.tsx +8 -6
- package/src/victory-primitives/background.tsx +8 -6
- package/src/victory-primitives/border.tsx +8 -6
- package/src/victory-primitives/clip-path.tsx +3 -3
- package/src/victory-primitives/line-segment.tsx +8 -6
- package/src/victory-primitives/point.tsx +10 -8
- package/src/victory-primitives/text.tsx +2 -2
- package/src/victory-primitives/tspan.tsx +1 -1
- package/src/victory-primitives/types.ts +1 -1
- package/src/victory-primitives/whisker.tsx +15 -13
- 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.tsx +62 -62
- package/src/victory-theme/material.tsx +67 -67
- package/src/victory-theme/{victory-theme-definition.ts → types.ts} +10 -14
- package/src/victory-theme/victory-theme.tsx +1 -1
- package/src/victory-transition/victory-transition.tsx +19 -19
- package/src/victory-util/{add-events.js → add-events.tsx} +136 -59
- package/src/victory-util/{axis.js → axis.tsx} +17 -18
- package/src/victory-util/{collection.js → collection.tsx} +14 -10
- package/src/victory-util/common-props.tsx +307 -0
- package/src/victory-util/{data.js → data.ts} +14 -10
- package/src/victory-util/{default-transitions.js → default-transitions.ts} +20 -18
- package/src/victory-util/{domain.js → domain.ts} +26 -23
- package/src/victory-util/{events.js → events.ts} +82 -31
- package/src/victory-util/{helpers.js → helpers.ts} +41 -22
- package/src/victory-util/hooks/{index.js → index.ts} +0 -0
- package/src/victory-util/hooks/use-animation-state.js +12 -12
- package/src/victory-util/hooks/use-previous-props.ts +9 -0
- package/src/victory-util/{immutable.js → immutable.ts} +14 -10
- package/src/victory-util/index.ts +28 -0
- package/src/victory-util/{label-helpers.js → label-helpers.ts} +7 -7
- package/src/victory-util/line-helpers.ts +104 -0
- package/src/victory-util/{log.js → log.ts} +1 -1
- package/src/victory-util/{prop-types.js → prop-types.ts} +103 -101
- package/src/victory-util/{scale.js → scale.ts} +29 -16
- package/src/victory-util/selection.ts +158 -0
- package/src/victory-util/{style.js → style.ts} +3 -3
- package/src/victory-util/{textsize.js → textsize.ts} +32 -17
- package/src/victory-util/timer-context.ts +1 -1
- package/src/victory-util/timer.ts +5 -10
- package/src/victory-util/{transitions.js → transitions.ts} +50 -22
- 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 -33
- package/es/types.js +0 -1
- package/es/victory-theme/victory-theme-definition.js +0 -1
- package/es/victory-util/types.d.ts +0 -188
- package/es/victory-util/types.js +0 -1
- package/lib/types.js +0 -1
- package/lib/victory-theme/victory-theme-definition.js +0 -1
- package/lib/victory-util/types.d.ts +0 -188
- package/lib/victory-util/types.js +0 -1
- 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/selection.d.ts +0 -23
- package/src/victory-util/selection.js +0 -98
- package/src/victory-util/textsize.d.ts +0 -8
- package/src/victory-util/types.ts +0 -247
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import * as d3Shape from "victory-vendor/d3-shape";
|
|
2
|
+
|
|
3
|
+
const defined = (d) => {
|
|
4
|
+
const y = d._y1 !== undefined ? d._y1 : d._y;
|
|
5
|
+
return y !== null && y !== undefined && d._y0 !== null;
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
const getXAccessor = (scale) => {
|
|
9
|
+
return (d) => scale.x(d._x1 !== undefined ? d._x1 : d._x);
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
const getYAccessor = (scale) => {
|
|
13
|
+
return (d) => scale.y(d._y1 !== undefined ? d._y1 : d._y);
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
const getAngleAccessor = (scale) => {
|
|
17
|
+
return (d) => {
|
|
18
|
+
const x = scale.x(d._x1 !== undefined ? d._x1 : d._x);
|
|
19
|
+
return -1 * x + Math.PI / 2;
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
export type CurveName =
|
|
24
|
+
| "basis"
|
|
25
|
+
| "cardinal"
|
|
26
|
+
| "bumpX"
|
|
27
|
+
| "bumpY"
|
|
28
|
+
| "bundle"
|
|
29
|
+
| "catmullRom"
|
|
30
|
+
| "linear"
|
|
31
|
+
| "monotoneX"
|
|
32
|
+
| "monotoneY"
|
|
33
|
+
| "step"
|
|
34
|
+
| "stepAfter"
|
|
35
|
+
| "stepBefore"
|
|
36
|
+
| "natural";
|
|
37
|
+
|
|
38
|
+
type ShapeMethod = keyof Pick<
|
|
39
|
+
typeof d3Shape,
|
|
40
|
+
| "curveBasis"
|
|
41
|
+
| "curveCardinal"
|
|
42
|
+
| "curveBumpX"
|
|
43
|
+
| "curveBumpY"
|
|
44
|
+
| "curveBundle"
|
|
45
|
+
| "curveCatmullRom"
|
|
46
|
+
| "curveLinear"
|
|
47
|
+
| "curveMonotoneX"
|
|
48
|
+
| "curveMonotoneY"
|
|
49
|
+
| "curveStep"
|
|
50
|
+
| "curveStepAfter"
|
|
51
|
+
| "curveStepBefore"
|
|
52
|
+
| "curveNatural"
|
|
53
|
+
>;
|
|
54
|
+
type ShapeMethodClosed = keyof Pick<
|
|
55
|
+
typeof d3Shape,
|
|
56
|
+
| "curveBasisClosed"
|
|
57
|
+
| "curveCardinalClosed"
|
|
58
|
+
| "curveLinearClosed"
|
|
59
|
+
| "curveCatmullRomClosed"
|
|
60
|
+
>;
|
|
61
|
+
|
|
62
|
+
const toNewName = (interpolation: CurveName) => {
|
|
63
|
+
// d3 shape changed the naming scheme for interpolators from "basis" -> "curveBasis" etc.
|
|
64
|
+
const capitalize = (s) => s && s[0].toUpperCase() + s.slice(1);
|
|
65
|
+
return `curve${capitalize(interpolation)}` as ShapeMethod;
|
|
66
|
+
};
|
|
67
|
+
const toNewNameClosed = (interpolation: CurveName) => {
|
|
68
|
+
return `${toNewName(interpolation)}Closed` as ShapeMethodClosed;
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
export const getInterpolationFunction = (props) => {
|
|
72
|
+
const { interpolation } = props;
|
|
73
|
+
|
|
74
|
+
if (typeof interpolation === "function") {
|
|
75
|
+
return interpolation;
|
|
76
|
+
}
|
|
77
|
+
if (typeof interpolation === "string") {
|
|
78
|
+
const { polar, openCurve = !polar } = props;
|
|
79
|
+
const interpolationName = !openCurve
|
|
80
|
+
? toNewNameClosed(interpolation as CurveName)
|
|
81
|
+
: toNewName(interpolation as CurveName);
|
|
82
|
+
|
|
83
|
+
return d3Shape[interpolationName];
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
return d3Shape.curveLinear;
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
export const getLineFunction = (props) => {
|
|
90
|
+
const { polar, scale, horizontal } = props;
|
|
91
|
+
return polar
|
|
92
|
+
? d3Shape
|
|
93
|
+
.lineRadial()
|
|
94
|
+
.defined(defined)
|
|
95
|
+
.curve(getInterpolationFunction(props))
|
|
96
|
+
.angle(getAngleAccessor(scale))
|
|
97
|
+
.radius(getYAccessor(scale))
|
|
98
|
+
: d3Shape
|
|
99
|
+
.line()
|
|
100
|
+
.defined(defined)
|
|
101
|
+
.curve(getInterpolationFunction(props))
|
|
102
|
+
.x(horizontal ? getYAccessor(scale) : getXAccessor(scale))
|
|
103
|
+
.y(horizontal ? getXAccessor(scale) : getYAccessor(scale));
|
|
104
|
+
};
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/* eslint-disable no-console */
|
|
3
3
|
|
|
4
4
|
// TODO: Use "warning" npm module like React is switching to.
|
|
5
|
-
export function warn(message) {
|
|
5
|
+
export function warn(message: string) {
|
|
6
6
|
if (process.env.NODE_ENV !== "production") {
|
|
7
7
|
if (console && console.warn) {
|
|
8
8
|
console.warn(message);
|
|
@@ -1,7 +1,11 @@
|
|
|
1
|
-
/*eslint no-magic-numbers: ["error", { "ignore": [-1, 0, 1, 2] }]*/
|
|
2
|
-
|
|
1
|
+
/* eslint no-magic-numbers: ["error", { "ignore": [-1, 0, 1, 2] }] */
|
|
2
|
+
/* eslint-disable max-params */
|
|
3
|
+
|
|
4
|
+
import { find, isRegExp } from "lodash";
|
|
3
5
|
import * as Log from "./log";
|
|
4
6
|
import PropTypes from "prop-types";
|
|
7
|
+
import * as Scale from "./scale";
|
|
8
|
+
import { D3Scale, ScaleName } from "../types/prop-types";
|
|
5
9
|
|
|
6
10
|
/**
|
|
7
11
|
* Return a new validator based on `validator` but with the option to chain
|
|
@@ -10,29 +14,25 @@ import PropTypes from "prop-types";
|
|
|
10
14
|
* @param {Function} validator Validation function.
|
|
11
15
|
* @returns {Function} Validator with `isRequired` option.
|
|
12
16
|
*/
|
|
13
|
-
const makeChainable = function (validator) {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
return new Error(
|
|
26
|
-
`Required \`${propName}\` was not specified in \`${componentName}\`.`
|
|
27
|
-
);
|
|
17
|
+
const makeChainable = function <T>(validator: PropTypes.Validator<T>) {
|
|
18
|
+
const createChainable =
|
|
19
|
+
(isRequired: boolean): PropTypes.Validator<T | undefined> =>
|
|
20
|
+
(props, propName, componentName, ...rest) => {
|
|
21
|
+
const value = props[propName];
|
|
22
|
+
if (value === undefined || value === null) {
|
|
23
|
+
if (isRequired) {
|
|
24
|
+
return new Error(
|
|
25
|
+
`Required \`${propName}\` was not specified in \`${componentName}\`.`,
|
|
26
|
+
);
|
|
27
|
+
}
|
|
28
|
+
return null;
|
|
28
29
|
}
|
|
29
|
-
return
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
chainable
|
|
35
|
-
return chainable;
|
|
30
|
+
return validator(props, propName, componentName, ...rest);
|
|
31
|
+
};
|
|
32
|
+
const chainable = Object.assign(createChainable(false), {
|
|
33
|
+
isRequired: createChainable(true),
|
|
34
|
+
});
|
|
35
|
+
return chainable as PropTypes.Requireable<T | undefined>;
|
|
36
36
|
};
|
|
37
37
|
|
|
38
38
|
const nullConstructor = () => null;
|
|
@@ -56,7 +56,7 @@ const getConstructor = (value) => {
|
|
|
56
56
|
|
|
57
57
|
/**
|
|
58
58
|
* Get the name of the constructor used to create `value`, using
|
|
59
|
-
* `Object.
|
|
59
|
+
* `Object.prototype.toString`. If the value is null or undefined, return
|
|
60
60
|
* "null" or "undefined", respectively.
|
|
61
61
|
* @param {*} value Instance to return the constructor name of.
|
|
62
62
|
* @returns {String} Name of the constructor.
|
|
@@ -77,20 +77,24 @@ const getConstructorName = (value) => {
|
|
|
77
77
|
* @param {String} explanation The message to provide the user of the deprecated propType.
|
|
78
78
|
* @returns {Function} Validator which logs usage of this propType
|
|
79
79
|
*/
|
|
80
|
-
export function deprecated(
|
|
80
|
+
export function deprecated<T>(
|
|
81
|
+
propType: PropTypes.Validator<T>,
|
|
82
|
+
explanation: string,
|
|
83
|
+
): PropTypes.Validator<T> {
|
|
81
84
|
return (props, propName, componentName) => {
|
|
82
85
|
const value = props[propName];
|
|
83
86
|
if (value !== null && value !== undefined) {
|
|
84
87
|
Log.warn(
|
|
85
|
-
`"${propName}" property of "${componentName}" has been deprecated ${explanation}
|
|
88
|
+
`"${propName}" property of "${componentName}" has been deprecated ${explanation}`,
|
|
86
89
|
);
|
|
87
90
|
}
|
|
88
|
-
|
|
91
|
+
PropTypes.checkPropTypes(
|
|
89
92
|
{ [propName]: propType },
|
|
90
93
|
props,
|
|
91
94
|
propName,
|
|
92
|
-
componentName
|
|
95
|
+
componentName,
|
|
93
96
|
);
|
|
97
|
+
return null;
|
|
94
98
|
};
|
|
95
99
|
}
|
|
96
100
|
|
|
@@ -101,109 +105,105 @@ export function deprecated(propType, explanation) {
|
|
|
101
105
|
* @param {Array} validators Validation functions.
|
|
102
106
|
* @returns {Function} Combined validator function
|
|
103
107
|
*/
|
|
104
|
-
export function allOfType(validators) {
|
|
105
|
-
return makeChainable((props, propName, componentName, ...rest) =>
|
|
106
|
-
validators.reduce(
|
|
108
|
+
export function allOfType<T>(validators: Array<PropTypes.Validator<T>>) {
|
|
109
|
+
return makeChainable<T>((props, propName, componentName, ...rest) => {
|
|
110
|
+
return validators.reduce<null | Error>(
|
|
107
111
|
(result, validator) =>
|
|
108
112
|
result || validator(props, propName, componentName, ...rest),
|
|
109
|
-
|
|
110
|
-
)
|
|
111
|
-
);
|
|
113
|
+
null,
|
|
114
|
+
);
|
|
115
|
+
});
|
|
112
116
|
}
|
|
113
117
|
|
|
114
118
|
/**
|
|
115
119
|
* Check that the value is a non-negative number.
|
|
116
120
|
*/
|
|
117
|
-
export const nonNegative = makeChainable(
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
121
|
+
export const nonNegative = makeChainable<number>(
|
|
122
|
+
(props, propName, componentName) => {
|
|
123
|
+
const value = props[propName];
|
|
124
|
+
if (typeof value !== "number" || value < 0) {
|
|
125
|
+
return new Error(
|
|
126
|
+
`\`${propName}\` in \`${componentName}\` must be a non-negative number.`,
|
|
127
|
+
);
|
|
128
|
+
}
|
|
129
|
+
return null;
|
|
130
|
+
},
|
|
131
|
+
);
|
|
126
132
|
|
|
127
133
|
/**
|
|
128
134
|
* Check that the value is an integer.
|
|
129
135
|
*/
|
|
130
|
-
export const integer = makeChainable(
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
136
|
+
export const integer = makeChainable<number>(
|
|
137
|
+
(props, propName, componentName) => {
|
|
138
|
+
const value = props[propName];
|
|
139
|
+
if (typeof value !== "number" || value % 1 !== 0) {
|
|
140
|
+
return new Error(
|
|
141
|
+
`\`${propName}\` in \`${componentName}\` must be an integer.`,
|
|
142
|
+
);
|
|
143
|
+
}
|
|
144
|
+
return null;
|
|
145
|
+
},
|
|
146
|
+
);
|
|
139
147
|
|
|
140
148
|
/**
|
|
141
149
|
* Check that the value is greater than zero.
|
|
142
150
|
*/
|
|
143
|
-
export const greaterThanZero = makeChainable(
|
|
151
|
+
export const greaterThanZero = makeChainable<number>(
|
|
144
152
|
(props, propName, componentName) => {
|
|
145
153
|
const value = props[propName];
|
|
146
154
|
if (typeof value !== "number" || value <= 0) {
|
|
147
155
|
return new Error(
|
|
148
|
-
`\`${propName}\` in \`${componentName}\` must be a number greater than zero
|
|
156
|
+
`\`${propName}\` in \`${componentName}\` must be a number greater than zero.`,
|
|
149
157
|
);
|
|
150
158
|
}
|
|
151
|
-
return
|
|
152
|
-
}
|
|
159
|
+
return null;
|
|
160
|
+
},
|
|
153
161
|
);
|
|
154
162
|
|
|
155
163
|
/**
|
|
156
164
|
* Check that the value is an Array of two unique values.
|
|
157
165
|
*/
|
|
158
|
-
export const domain = makeChainable
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
166
|
+
export const domain = makeChainable<[number, number]>(
|
|
167
|
+
(props, propName, componentName) => {
|
|
168
|
+
const value = props[propName];
|
|
169
|
+
if (!Array.isArray(value) || value.length !== 2 || value[1] === value[0]) {
|
|
170
|
+
return new Error(
|
|
171
|
+
`\`${propName}\` in \`${componentName}\` must be an array of two unique numeric values.`,
|
|
172
|
+
);
|
|
173
|
+
}
|
|
174
|
+
return null;
|
|
175
|
+
},
|
|
176
|
+
);
|
|
167
177
|
|
|
168
178
|
/**
|
|
169
179
|
* Check that the value looks like a d3 `scale` function.
|
|
170
180
|
*/
|
|
171
|
-
export const scale = makeChainable
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
if (
|
|
175
|
-
return (
|
|
176
|
-
|
|
181
|
+
export const scale = makeChainable<ScaleName | D3Scale>(
|
|
182
|
+
(props, propName, componentName) => {
|
|
183
|
+
const value = props[propName];
|
|
184
|
+
if (!Scale.validScale(value)) {
|
|
185
|
+
return new Error(
|
|
186
|
+
`\`${propName}\` in \`${componentName}\` must be a d3 scale.`,
|
|
177
187
|
);
|
|
178
|
-
} else if (typeof scl === "string") {
|
|
179
|
-
return supportedScaleStrings.indexOf(scl) !== -1;
|
|
180
188
|
}
|
|
181
|
-
return
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
const value = props[propName];
|
|
185
|
-
if (!validScale(value)) {
|
|
186
|
-
return new Error(
|
|
187
|
-
`\`${propName}\` in \`${componentName}\` must be a d3 scale.`
|
|
188
|
-
);
|
|
189
|
-
}
|
|
190
|
-
return undefined;
|
|
191
|
-
});
|
|
189
|
+
return null;
|
|
190
|
+
},
|
|
191
|
+
);
|
|
192
192
|
|
|
193
193
|
/**
|
|
194
194
|
* Check that an array contains items of the same type.
|
|
195
195
|
*/
|
|
196
|
-
export const homogeneousArray = makeChainable(
|
|
196
|
+
export const homogeneousArray = makeChainable<unknown[]>(
|
|
197
197
|
(props, propName, componentName) => {
|
|
198
198
|
const values = props[propName];
|
|
199
199
|
if (!Array.isArray(values)) {
|
|
200
200
|
return new Error(
|
|
201
|
-
`\`${propName}\` in \`${componentName}\` must be an array
|
|
201
|
+
`\`${propName}\` in \`${componentName}\` must be an array.`,
|
|
202
202
|
);
|
|
203
203
|
}
|
|
204
204
|
|
|
205
205
|
if (values.length < 2) {
|
|
206
|
-
return
|
|
206
|
+
return null;
|
|
207
207
|
}
|
|
208
208
|
|
|
209
209
|
const comparisonConstructor = getConstructor(values[0]);
|
|
@@ -219,17 +219,17 @@ export const homogeneousArray = makeChainable(
|
|
|
219
219
|
return new Error(
|
|
220
220
|
`Expected \`${propName}\` in \`${componentName}\` to be a ` +
|
|
221
221
|
`homogeneous array, but found types \`${constructorName}\` and ` +
|
|
222
|
-
`\`${otherConstructorName}
|
|
222
|
+
`\`${otherConstructorName}\`.`,
|
|
223
223
|
);
|
|
224
224
|
}
|
|
225
|
-
return
|
|
226
|
-
}
|
|
225
|
+
return null;
|
|
226
|
+
},
|
|
227
227
|
);
|
|
228
228
|
|
|
229
229
|
/**
|
|
230
230
|
* Check that array prop length matches props.data.length
|
|
231
231
|
*/
|
|
232
|
-
export const matchDataLength = makeChainable((props, propName) => {
|
|
232
|
+
export const matchDataLength = makeChainable<unknown[]>((props, propName) => {
|
|
233
233
|
if (
|
|
234
234
|
props[propName] &&
|
|
235
235
|
Array.isArray(props[propName]) &&
|
|
@@ -237,17 +237,19 @@ export const matchDataLength = makeChainable((props, propName) => {
|
|
|
237
237
|
) {
|
|
238
238
|
return new Error(`Length of data and ${propName} arrays must match.`);
|
|
239
239
|
}
|
|
240
|
-
return
|
|
240
|
+
return null;
|
|
241
241
|
});
|
|
242
242
|
|
|
243
243
|
/**
|
|
244
244
|
* Check that the value is a regular expression
|
|
245
245
|
*/
|
|
246
|
-
export const regExp = makeChainable(
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
246
|
+
export const regExp = makeChainable<RegExp>(
|
|
247
|
+
(props, propName, componentName) => {
|
|
248
|
+
if (props[propName] && !isRegExp(props[propName])) {
|
|
249
|
+
return new Error(
|
|
250
|
+
`\`${propName}\` in \`${componentName}\` must be a regular expression.`,
|
|
251
|
+
);
|
|
252
|
+
}
|
|
253
|
+
return null;
|
|
254
|
+
},
|
|
255
|
+
);
|
|
@@ -3,18 +3,26 @@ import { includes, isFunction, isPlainObject } from "lodash";
|
|
|
3
3
|
import * as Helpers from "./helpers";
|
|
4
4
|
import * as Collection from "./collection";
|
|
5
5
|
import * as d3Scale from "victory-vendor/d3-scale";
|
|
6
|
+
import { D3Scale, ScaleName } from "../types/prop-types";
|
|
6
7
|
|
|
7
|
-
const supportedScaleStrings = ["linear", "time", "log", "sqrt"];
|
|
8
|
+
const supportedScaleStrings = ["linear", "time", "log", "sqrt"] as const;
|
|
9
|
+
|
|
10
|
+
type D3ScaleMethods = Pick<
|
|
11
|
+
typeof d3Scale,
|
|
12
|
+
"scaleLinear" | "scaleTime" | "scaleLog" | "scaleSqrt"
|
|
13
|
+
>;
|
|
8
14
|
|
|
9
15
|
// Private Functions
|
|
10
16
|
|
|
11
|
-
function toNewName(scale) {
|
|
17
|
+
function toNewName(scale: ScaleName): keyof D3ScaleMethods {
|
|
12
18
|
// d3 scale changed the naming scheme for scale from "linear" -> "scaleLinear" etc.
|
|
13
19
|
const capitalize = (s) => s && s[0].toUpperCase() + s.slice(1);
|
|
14
|
-
return `scale${capitalize(scale)}
|
|
20
|
+
return `scale${capitalize(scale)}` as keyof D3ScaleMethods;
|
|
15
21
|
}
|
|
16
22
|
|
|
17
|
-
function validScale(
|
|
23
|
+
export function validScale(
|
|
24
|
+
scale: string | D3Scale,
|
|
25
|
+
): scale is ScaleName | D3Scale {
|
|
18
26
|
if (typeof scale === "function") {
|
|
19
27
|
return (
|
|
20
28
|
isFunction(scale.copy) &&
|
|
@@ -27,7 +35,7 @@ function validScale(scale) {
|
|
|
27
35
|
return false;
|
|
28
36
|
}
|
|
29
37
|
|
|
30
|
-
function isScaleDefined(props, axis) {
|
|
38
|
+
function isScaleDefined(props, axis: "x" | "y") {
|
|
31
39
|
if (!props.scale) {
|
|
32
40
|
return false;
|
|
33
41
|
} else if (props.scale.x || props.scale.y) {
|
|
@@ -36,7 +44,7 @@ function isScaleDefined(props, axis) {
|
|
|
36
44
|
return true;
|
|
37
45
|
}
|
|
38
46
|
|
|
39
|
-
function getScaleTypeFromProps(props, axis) {
|
|
47
|
+
function getScaleTypeFromProps(props, axis: "x" | "y"): string | undefined {
|
|
40
48
|
if (!isScaleDefined(props, axis)) {
|
|
41
49
|
return undefined;
|
|
42
50
|
}
|
|
@@ -44,7 +52,7 @@ function getScaleTypeFromProps(props, axis) {
|
|
|
44
52
|
return typeof scale === "string" ? scale : getType(scale);
|
|
45
53
|
}
|
|
46
54
|
|
|
47
|
-
function getScaleFromDomain(props, axis) {
|
|
55
|
+
function getScaleFromDomain(props, axis: "x" | "y"): ScaleName | undefined {
|
|
48
56
|
let domain;
|
|
49
57
|
if (props.domain && props.domain[axis]) {
|
|
50
58
|
domain = props.domain[axis];
|
|
@@ -57,7 +65,7 @@ function getScaleFromDomain(props, axis) {
|
|
|
57
65
|
return Collection.containsDates(domain) ? "time" : "linear";
|
|
58
66
|
}
|
|
59
67
|
|
|
60
|
-
function getScaleTypeFromData(props, axis) {
|
|
68
|
+
function getScaleTypeFromData(props, axis): ScaleName {
|
|
61
69
|
if (!props.data) {
|
|
62
70
|
return "linear";
|
|
63
71
|
}
|
|
@@ -73,36 +81,41 @@ function getScaleTypeFromData(props, axis) {
|
|
|
73
81
|
|
|
74
82
|
// Exported Functions
|
|
75
83
|
|
|
76
|
-
export function getScaleFromName(name) {
|
|
77
|
-
|
|
84
|
+
export function getScaleFromName(name: ScaleName | string): D3Scale {
|
|
85
|
+
if (validScale(name)) {
|
|
86
|
+
const methodName = toNewName(name as ScaleName);
|
|
87
|
+
// @ts-expect-error scaleTime is not directly compatible with our D3Scale definition
|
|
88
|
+
return d3Scale[methodName]();
|
|
89
|
+
}
|
|
90
|
+
return d3Scale.scaleLinear();
|
|
78
91
|
}
|
|
79
92
|
|
|
80
|
-
export function getBaseScale(props, axis) {
|
|
93
|
+
export function getBaseScale(props, axis: "x" | "y") {
|
|
81
94
|
const scale = getScaleFromProps(props, axis);
|
|
82
95
|
if (scale) {
|
|
83
96
|
return typeof scale === "string" ? getScaleFromName(scale) : scale;
|
|
84
97
|
}
|
|
85
98
|
const defaultScale =
|
|
86
99
|
getScaleFromDomain(props, axis) || getScaleTypeFromData(props, axis);
|
|
87
|
-
return
|
|
100
|
+
return getScaleFromName(defaultScale);
|
|
88
101
|
}
|
|
89
102
|
|
|
90
103
|
export function getDefaultScale() {
|
|
91
104
|
return d3Scale.scaleLinear();
|
|
92
105
|
}
|
|
93
106
|
|
|
94
|
-
export function getScaleFromProps(props, axis) {
|
|
107
|
+
export function getScaleFromProps(props, axis): D3Scale | undefined {
|
|
95
108
|
if (!isScaleDefined(props, axis)) {
|
|
96
109
|
return undefined;
|
|
97
110
|
}
|
|
98
111
|
const scale = props.scale[axis] || props.scale;
|
|
99
112
|
if (validScale(scale)) {
|
|
100
|
-
return isFunction(scale) ? scale :
|
|
113
|
+
return isFunction(scale) ? scale : getScaleFromName(scale);
|
|
101
114
|
}
|
|
102
115
|
return undefined;
|
|
103
116
|
}
|
|
104
117
|
|
|
105
|
-
export function getScaleType(props, axis) {
|
|
118
|
+
export function getScaleType(props, axis): string {
|
|
106
119
|
// if the scale was not given in props, it will be set to linear or time depending on data
|
|
107
120
|
return (
|
|
108
121
|
getScaleTypeFromProps(props, axis) || getScaleTypeFromData(props, axis)
|
|
@@ -113,7 +126,7 @@ export function getScaleType(props, axis) {
|
|
|
113
126
|
// **Note**: Brittle because reliant on d3 internals.
|
|
114
127
|
const DUCK_TYPES = [
|
|
115
128
|
{ name: "quantile", method: "quantiles" },
|
|
116
|
-
{ name: "log", method: "base" }
|
|
129
|
+
{ name: "log", method: "base" },
|
|
117
130
|
// TODO(2214): Re-evaluate (1) duck typing approach, and (2) if duck typing,
|
|
118
131
|
// do we need a different approach? (Multiple keys? Stringifying functions?)
|
|
119
132
|
// https://github.com/FormidableLabs/victory/issues/2214
|