victory-core 36.4.0 → 36.5.1
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 +45735 -12154
- package/dist/victory-core.min.js +2 -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 +19 -23
- 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 +17 -10
- 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 +45 -38
- 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 +31 -14
- 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 +17 -3
- 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 +24 -24
- 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 +24 -15
- 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 +146 -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 +49 -47
- 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 +29 -14
- 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 +25 -4
- 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 +6 -6
- 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} +55 -29
- package/src/victory-container/{victory-container.js → victory-container.tsx} +86 -42
- package/src/victory-label/{victory-label.js → victory-label.tsx} +112 -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 +121 -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} +143 -64
- 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} +26 -8
- 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
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/* eslint-disable func-style */
|
|
2
1
|
/* eslint-disable no-use-before-define */
|
|
3
2
|
import React from "react";
|
|
4
3
|
import {
|
|
@@ -7,7 +6,7 @@ import {
|
|
|
7
6
|
sortedUniq,
|
|
8
7
|
isFunction,
|
|
9
8
|
includes,
|
|
10
|
-
isDate
|
|
9
|
+
isDate,
|
|
11
10
|
} from "lodash";
|
|
12
11
|
import * as Data from "./data";
|
|
13
12
|
import * as Scale from "./scale";
|
|
@@ -48,11 +47,12 @@ function getDomainPadding(props, axis) {
|
|
|
48
47
|
: formatPadding(props.domainPadding);
|
|
49
48
|
}
|
|
50
49
|
|
|
51
|
-
function getFlatData(dataset, axis) {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
50
|
+
function getFlatData(dataset, axis: "x" | "y") {
|
|
51
|
+
const axisKey = `_${axis}`;
|
|
52
|
+
return flatten(dataset).map((datum: any) => {
|
|
53
|
+
return datum[axisKey] && datum[axisKey][1] !== undefined
|
|
54
|
+
? datum[axisKey][1]
|
|
55
|
+
: datum[axisKey];
|
|
56
56
|
});
|
|
57
57
|
}
|
|
58
58
|
|
|
@@ -61,7 +61,7 @@ function getExtremeFromData(dataset, axis, type = "min") {
|
|
|
61
61
|
type === "max" ? Math.max(...arr) : Math.min(...arr);
|
|
62
62
|
const initialValue = type === "max" ? -Infinity : Infinity;
|
|
63
63
|
let containsDate = false;
|
|
64
|
-
const result = flatten(dataset).reduce((memo, datum) => {
|
|
64
|
+
const result = flatten(dataset).reduce((memo: number, datum: any) => {
|
|
65
65
|
const current0 =
|
|
66
66
|
datum[`_${axis}0`] !== undefined ? datum[`_${axis}0`] : datum[`_${axis}`];
|
|
67
67
|
const current1 =
|
|
@@ -95,23 +95,23 @@ function padDomain(domain, props, axis) {
|
|
|
95
95
|
|
|
96
96
|
const paddedRangeExtent = Math.max(
|
|
97
97
|
rangeExtent - padding.left - padding.right,
|
|
98
|
-
1
|
|
98
|
+
1,
|
|
99
99
|
);
|
|
100
100
|
const paddedDomainExtent =
|
|
101
101
|
(Math.abs(max.valueOf() - min.valueOf()) / paddedRangeExtent) * rangeExtent;
|
|
102
102
|
|
|
103
103
|
const simplePadding = {
|
|
104
104
|
left: (paddedDomainExtent * padding.left) / rangeExtent,
|
|
105
|
-
right: (paddedDomainExtent * padding.right) / rangeExtent
|
|
105
|
+
right: (paddedDomainExtent * padding.right) / rangeExtent,
|
|
106
106
|
};
|
|
107
107
|
|
|
108
108
|
let paddedDomain = {
|
|
109
109
|
min: min.valueOf() - simplePadding.left,
|
|
110
|
-
max: max.valueOf() + simplePadding.right
|
|
110
|
+
max: max.valueOf() + simplePadding.right,
|
|
111
111
|
};
|
|
112
112
|
|
|
113
113
|
const singleQuadrantDomainPadding = isPlainObject(
|
|
114
|
-
props.singleQuadrantDomainPadding
|
|
114
|
+
props.singleQuadrantDomainPadding,
|
|
115
115
|
)
|
|
116
116
|
? props.singleQuadrantDomainPadding[axis]
|
|
117
117
|
: props.singleQuadrantDomainPadding;
|
|
@@ -129,14 +129,16 @@ function padDomain(domain, props, axis) {
|
|
|
129
129
|
if (addsQuadrants && singleQuadrantDomainPadding !== false) {
|
|
130
130
|
// Naive initial padding calculation
|
|
131
131
|
const initialPadding = {
|
|
132
|
+
// @ts-expect-error `max/min` might be dates
|
|
132
133
|
left: (Math.abs(max - min) * padding.left) / rangeExtent,
|
|
133
|
-
|
|
134
|
+
// @ts-expect-error `max/min` might be dates
|
|
135
|
+
right: (Math.abs(max - min) * padding.right) / rangeExtent,
|
|
134
136
|
};
|
|
135
137
|
|
|
136
138
|
// Adjust the domain by the initial padding
|
|
137
139
|
const adjustedDomain = {
|
|
138
140
|
min: adjust(min.valueOf() - initialPadding.left, "min"),
|
|
139
|
-
max: adjust(max.valueOf() + initialPadding.right, "max")
|
|
141
|
+
max: adjust(max.valueOf() + initialPadding.right, "max"),
|
|
140
142
|
};
|
|
141
143
|
|
|
142
144
|
// re-calculate padding, taking the adjusted domain into account
|
|
@@ -146,20 +148,20 @@ function padDomain(domain, props, axis) {
|
|
|
146
148
|
rangeExtent,
|
|
147
149
|
right:
|
|
148
150
|
(Math.abs(adjustedDomain.max - adjustedDomain.min) * padding.right) /
|
|
149
|
-
rangeExtent
|
|
151
|
+
rangeExtent,
|
|
150
152
|
};
|
|
151
153
|
|
|
152
154
|
// Adjust the domain by the final padding
|
|
153
155
|
paddedDomain = {
|
|
154
156
|
min: adjust(min.valueOf() - finalPadding.left, "min"),
|
|
155
|
-
max: adjust(max.valueOf() + finalPadding.right, "max")
|
|
157
|
+
max: adjust(max.valueOf() + finalPadding.right, "max"),
|
|
156
158
|
};
|
|
157
159
|
}
|
|
158
160
|
|
|
159
161
|
// default to minDomain / maxDomain if they exist
|
|
160
162
|
const finalDomain = {
|
|
161
163
|
min: minDomain !== undefined ? minDomain : paddedDomain.min,
|
|
162
|
-
max: maxDomain !== undefined ? maxDomain : paddedDomain.max
|
|
164
|
+
max: maxDomain !== undefined ? maxDomain : paddedDomain.max,
|
|
163
165
|
};
|
|
164
166
|
|
|
165
167
|
return min instanceof Date || max instanceof Date
|
|
@@ -178,8 +180,8 @@ function padDomain(domain, props, axis) {
|
|
|
178
180
|
* @returns {Function} a function that takes props and axis and returns a formatted domain
|
|
179
181
|
*/
|
|
180
182
|
export function createDomainFunction(
|
|
181
|
-
getDomainFromDataFunction
|
|
182
|
-
formatDomainFunction
|
|
183
|
+
getDomainFromDataFunction?,
|
|
184
|
+
formatDomainFunction?,
|
|
183
185
|
) {
|
|
184
186
|
getDomainFromDataFunction = isFunction(getDomainFromDataFunction)
|
|
185
187
|
? getDomainFromDataFunction
|
|
@@ -228,7 +230,7 @@ export function getDomain(props, axis) {
|
|
|
228
230
|
* @param {Array} categories: an array of categories corresponding to a given axis
|
|
229
231
|
* @returns {Array|undefined} returns a domain from categories or undefined
|
|
230
232
|
*/
|
|
231
|
-
export function getDomainFromCategories(props, axis, categories) {
|
|
233
|
+
export function getDomainFromCategories(props, axis, categories?) {
|
|
232
234
|
categories = categories || Data.getCategories(props, axis);
|
|
233
235
|
const { polar, startAngle = 0, endAngle = 360 } = props;
|
|
234
236
|
if (!categories) {
|
|
@@ -355,7 +357,7 @@ export function getDomainWithZero(props, axis) {
|
|
|
355
357
|
const dataset = Data.getData(props);
|
|
356
358
|
const y0Min = dataset.reduce(
|
|
357
359
|
(min, datum) => (datum._y0 < min ? datum._y0 : min),
|
|
358
|
-
Infinity
|
|
360
|
+
Infinity,
|
|
359
361
|
);
|
|
360
362
|
|
|
361
363
|
const ensureZero = (domain) => {
|
|
@@ -388,7 +390,7 @@ export function getDomainWithZero(props, axis) {
|
|
|
388
390
|
|
|
389
391
|
return createDomainFunction(getDomainFunction, formatDomainFunction)(
|
|
390
392
|
props,
|
|
391
|
-
axis
|
|
393
|
+
axis,
|
|
392
394
|
);
|
|
393
395
|
}
|
|
394
396
|
|
|
@@ -429,7 +431,7 @@ export function getMinFromProps(props, axis) {
|
|
|
429
431
|
* for a given dimension i.e. only x values.
|
|
430
432
|
* @returns {Array} the symmetric domain
|
|
431
433
|
*/
|
|
432
|
-
export function getSymmetricDomain(domain, values) {
|
|
434
|
+
export function getSymmetricDomain(domain, values: number[]) {
|
|
433
435
|
const processedData = sortedUniq(values.sort((a, b) => a - b));
|
|
434
436
|
const step = processedData[1] - processedData[0];
|
|
435
437
|
return [domain[0], domain[1] + step];
|
|
@@ -462,7 +464,7 @@ export function isDomainComponent(component) {
|
|
|
462
464
|
"pie",
|
|
463
465
|
"scatter",
|
|
464
466
|
"stack",
|
|
465
|
-
"voronoi"
|
|
467
|
+
"voronoi",
|
|
466
468
|
];
|
|
467
469
|
return includes(whitelist, role);
|
|
468
470
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* eslint-disable
|
|
1
|
+
/* eslint-disable no-use-before-define */
|
|
2
2
|
import {
|
|
3
3
|
assign,
|
|
4
4
|
isEmpty,
|
|
@@ -8,21 +8,52 @@ import {
|
|
|
8
8
|
omitBy,
|
|
9
9
|
uniq,
|
|
10
10
|
includes,
|
|
11
|
-
keys
|
|
11
|
+
keys,
|
|
12
12
|
} from "lodash";
|
|
13
|
+
import type { EventMixinCalculatedValues } from "./add-events";
|
|
13
14
|
|
|
14
15
|
const GLOBAL_EVENT_REGEX = /^onGlobal(.*)$/;
|
|
15
16
|
|
|
17
|
+
type ComponentEventKey = string | number;
|
|
18
|
+
export interface ComponentEvent {
|
|
19
|
+
target?: "parent" | string;
|
|
20
|
+
eventKey?: ComponentEventKey | ComponentEventKey[];
|
|
21
|
+
eventHandlers: ComponentEventHandlers;
|
|
22
|
+
}
|
|
23
|
+
export type ComponentEventName = `on${Capitalize<string>}`;
|
|
24
|
+
export interface ComponentEventHandlers {
|
|
25
|
+
[k: ComponentEventName]: ComponentEventHandler;
|
|
26
|
+
}
|
|
27
|
+
export type ComponentEventHandler = (
|
|
28
|
+
evt: React.SyntheticEvent,
|
|
29
|
+
childProps: unknown,
|
|
30
|
+
eventKey: ComponentEventKey,
|
|
31
|
+
eventName: ComponentEventName,
|
|
32
|
+
) => UpdatedProps;
|
|
33
|
+
export type UpdatedProps = any;
|
|
34
|
+
|
|
35
|
+
interface ComponentWithEvents extends EventMixinCalculatedValues {
|
|
36
|
+
state;
|
|
37
|
+
setState;
|
|
38
|
+
}
|
|
39
|
+
|
|
16
40
|
/* Returns all own and shared events that should be attached to a single target element,
|
|
17
41
|
* i.e. an individual bar specified by target: "data", eventKey: [index].
|
|
18
42
|
* Returned events are scoped to the appropriate state. Either that of the component itself
|
|
19
43
|
* (i.e. VictoryBar) in the case of own events, or that of the parent component
|
|
20
44
|
* (i.e. VictoryChart) in the case of shared events
|
|
21
45
|
*/
|
|
22
|
-
// eslint-disable-next-line max-params
|
|
23
|
-
export function getEvents(
|
|
46
|
+
// eslint-disable-next-line max-params
|
|
47
|
+
export function getEvents(
|
|
48
|
+
this: ComponentWithEvents,
|
|
49
|
+
props,
|
|
50
|
+
target,
|
|
51
|
+
eventKey,
|
|
52
|
+
// eslint-disable-next-line no-shadow
|
|
53
|
+
getScopedEvents,
|
|
54
|
+
) {
|
|
24
55
|
// Returns all events that apply to a particular target element
|
|
25
|
-
const getEventsByTarget = (events) => {
|
|
56
|
+
const getEventsByTarget = (events: Array<ComponentEvent>) => {
|
|
26
57
|
const getSelectedEvents = () => {
|
|
27
58
|
const targetEvents = events.reduce((memo, event) => {
|
|
28
59
|
if (event.target !== undefined) {
|
|
@@ -32,7 +63,7 @@ export function getEvents(props, target, eventKey, getScopedEvents) {
|
|
|
32
63
|
return matchesTarget ? memo.concat(event) : memo;
|
|
33
64
|
}
|
|
34
65
|
return memo.concat(event);
|
|
35
|
-
}, []);
|
|
66
|
+
}, [] as ComponentEvent[]);
|
|
36
67
|
|
|
37
68
|
if (eventKey !== undefined && target !== "parent") {
|
|
38
69
|
return targetEvents.filter((obj) => {
|
|
@@ -51,7 +82,7 @@ export function getEvents(props, target, eventKey, getScopedEvents) {
|
|
|
51
82
|
Array.isArray(selectedEvents) &&
|
|
52
83
|
selectedEvents.reduce((memo, event) => {
|
|
53
84
|
return event ? assign(memo, event.eventHandlers) : memo;
|
|
54
|
-
}, {})
|
|
85
|
+
}, {} as ComponentEvent["eventHandlers"])
|
|
55
86
|
);
|
|
56
87
|
};
|
|
57
88
|
|
|
@@ -92,7 +123,13 @@ export function getEvents(props, target, eventKey, getScopedEvents) {
|
|
|
92
123
|
* element.
|
|
93
124
|
*/
|
|
94
125
|
// eslint-disable-next-line max-params
|
|
95
|
-
export function getScopedEvents(
|
|
126
|
+
export function getScopedEvents(
|
|
127
|
+
this: ComponentWithEvents,
|
|
128
|
+
events,
|
|
129
|
+
namespace,
|
|
130
|
+
childType,
|
|
131
|
+
baseProps,
|
|
132
|
+
) {
|
|
96
133
|
if (isEmpty(events)) {
|
|
97
134
|
return {};
|
|
98
135
|
}
|
|
@@ -149,15 +186,15 @@ export function getScopedEvents(events, namespace, childType, baseProps) {
|
|
|
149
186
|
}
|
|
150
187
|
const mutationTargetProps = getTargetProps(
|
|
151
188
|
{ childName, key, target },
|
|
152
|
-
"props"
|
|
189
|
+
"props",
|
|
153
190
|
);
|
|
154
191
|
const mutationTargetState = getTargetProps(
|
|
155
192
|
{ childName, key, target },
|
|
156
|
-
"state"
|
|
193
|
+
"state",
|
|
157
194
|
);
|
|
158
195
|
const mutatedProps = eventReturn.mutation(
|
|
159
196
|
assign({}, mutationTargetProps, mutationTargetState),
|
|
160
|
-
baseProps
|
|
197
|
+
baseProps,
|
|
161
198
|
);
|
|
162
199
|
const childState = baseState[childName] || {};
|
|
163
200
|
|
|
@@ -175,7 +212,7 @@ export function getScopedEvents(events, namespace, childType, baseProps) {
|
|
|
175
212
|
return target === "parent"
|
|
176
213
|
? assign(state, { [key]: assign(state[key], mutatedProps) })
|
|
177
214
|
: assign(state, {
|
|
178
|
-
[key]: assign(state[key], { [target]: mutatedProps })
|
|
215
|
+
[key]: assign(state[key], { [target]: mutatedProps }),
|
|
179
216
|
});
|
|
180
217
|
};
|
|
181
218
|
|
|
@@ -249,24 +286,38 @@ export function getScopedEvents(events, namespace, childType, baseProps) {
|
|
|
249
286
|
}, {});
|
|
250
287
|
}
|
|
251
288
|
|
|
252
|
-
/*
|
|
289
|
+
/*
|
|
290
|
+
* Returns a partially applied event handler for a specific target element
|
|
253
291
|
* This allows event handlers to have access to props controlling each element
|
|
254
292
|
*/
|
|
255
|
-
export function getPartialEvents(
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
293
|
+
export function getPartialEvents(
|
|
294
|
+
events: ComponentEventHandlers,
|
|
295
|
+
eventKey: ComponentEventKey,
|
|
296
|
+
childProps: unknown,
|
|
297
|
+
): PartialEvents {
|
|
298
|
+
if (!events) return {};
|
|
299
|
+
|
|
300
|
+
return keys(events).reduce((memo, eventName) => {
|
|
301
|
+
const appliedEvent = (evt) =>
|
|
302
|
+
events[eventName](evt, childProps, eventKey, eventName);
|
|
303
|
+
memo[eventName] = appliedEvent;
|
|
304
|
+
return memo;
|
|
305
|
+
}, {} as PartialEvents);
|
|
306
|
+
}
|
|
307
|
+
export interface PartialEvents {
|
|
308
|
+
[eventName: ComponentEventName]: (evt: React.SyntheticEvent) => UpdatedProps;
|
|
264
309
|
}
|
|
265
310
|
|
|
266
311
|
/* Returns the property of the state object corresponding to event changes for
|
|
267
312
|
* a particular element
|
|
268
313
|
*/
|
|
269
|
-
|
|
314
|
+
// eslint-disable-next-line max-params
|
|
315
|
+
export function getEventState(
|
|
316
|
+
this: ComponentWithEvents,
|
|
317
|
+
eventKey: ComponentEventKey,
|
|
318
|
+
namespace: string,
|
|
319
|
+
childType?: string,
|
|
320
|
+
) {
|
|
270
321
|
// Mandatory usage: `getEventState.bind(this)`
|
|
271
322
|
// eslint-disable-next-line no-invalid-this
|
|
272
323
|
const state = this.state || {};
|
|
@@ -297,7 +348,7 @@ export function getExternalMutationsWithChildren(
|
|
|
297
348
|
mutations,
|
|
298
349
|
baseProps,
|
|
299
350
|
baseState,
|
|
300
|
-
childNames
|
|
351
|
+
childNames,
|
|
301
352
|
) {
|
|
302
353
|
baseProps = baseProps || {};
|
|
303
354
|
baseState = baseState || {};
|
|
@@ -308,7 +359,7 @@ export function getExternalMutationsWithChildren(
|
|
|
308
359
|
mutations,
|
|
309
360
|
baseProps[childName],
|
|
310
361
|
baseState[childName],
|
|
311
|
-
childName
|
|
362
|
+
childName,
|
|
312
363
|
);
|
|
313
364
|
memo[childName] = mutation ? mutation : childState;
|
|
314
365
|
return pickBy(memo, (v) => !isEmpty(v));
|
|
@@ -330,7 +381,7 @@ export function getExternalMutations(
|
|
|
330
381
|
mutations,
|
|
331
382
|
baseProps,
|
|
332
383
|
baseState,
|
|
333
|
-
childName
|
|
384
|
+
childName?,
|
|
334
385
|
) {
|
|
335
386
|
baseProps = baseProps || {};
|
|
336
387
|
baseState = baseState || {};
|
|
@@ -345,7 +396,7 @@ export function getExternalMutations(
|
|
|
345
396
|
mutations,
|
|
346
397
|
keyProps,
|
|
347
398
|
keyState,
|
|
348
|
-
identifier
|
|
399
|
+
identifier,
|
|
349
400
|
);
|
|
350
401
|
memo[eventKey] =
|
|
351
402
|
mutation !== undefined ? assign({}, keyState, mutation) : keyState;
|
|
@@ -359,7 +410,7 @@ export function getExternalMutations(
|
|
|
359
410
|
mutations,
|
|
360
411
|
keyProps[target],
|
|
361
412
|
keyState[target],
|
|
362
|
-
identifier
|
|
413
|
+
identifier,
|
|
363
414
|
);
|
|
364
415
|
m[target] =
|
|
365
416
|
mutation !== undefined
|
|
@@ -387,7 +438,7 @@ export function getExternalMutation(
|
|
|
387
438
|
mutations,
|
|
388
439
|
baseProps,
|
|
389
440
|
baseState,
|
|
390
|
-
identifier
|
|
441
|
+
identifier,
|
|
391
442
|
) {
|
|
392
443
|
const filterMutations = (mutation, type) => {
|
|
393
444
|
if (typeof mutation[type] === "string") {
|
|
@@ -408,13 +459,13 @@ export function getExternalMutation(
|
|
|
408
459
|
}
|
|
409
460
|
// find any mutation objects that match the target
|
|
410
461
|
const targetMutations = scopedMutations.filter((m) =>
|
|
411
|
-
filterMutations(m, "target")
|
|
462
|
+
filterMutations(m, "target"),
|
|
412
463
|
);
|
|
413
464
|
if (isEmpty(targetMutations)) {
|
|
414
465
|
return undefined;
|
|
415
466
|
}
|
|
416
467
|
const keyMutations = targetMutations.filter((m) =>
|
|
417
|
-
filterMutations(m, "eventKey")
|
|
468
|
+
filterMutations(m, "eventKey"),
|
|
418
469
|
);
|
|
419
470
|
if (isEmpty(keyMutations)) {
|
|
420
471
|
return undefined;
|
|
@@ -444,7 +495,7 @@ export function getComponentEvents(props, components) {
|
|
|
444
495
|
? memo.concat(...componentEvents)
|
|
445
496
|
: memo;
|
|
446
497
|
return memo;
|
|
447
|
-
}, []);
|
|
498
|
+
}, [] as ComponentEvent[]);
|
|
448
499
|
return events && events.length ? events : undefined;
|
|
449
500
|
}
|
|
450
501
|
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/* eslint-disable func-style */
|
|
2
1
|
/* eslint-disable no-use-before-define */
|
|
3
2
|
import React from "react";
|
|
4
3
|
import { defaults, isFunction, property, pick, assign, keys } from "lodash";
|
|
@@ -28,15 +27,19 @@ function getPolarRange(props, axis) {
|
|
|
28
27
|
|
|
29
28
|
/**
|
|
30
29
|
* creates an object with some keys excluded
|
|
31
|
-
* replacement for lodash.omit for performance. does not
|
|
30
|
+
* replacement for lodash.omit for performance. does not mimic the entire lodash.omit api
|
|
32
31
|
* @param {Object} originalObject: created object will be based on this object
|
|
33
32
|
* @param {Array<String>} ks: an array of keys to omit from the new object
|
|
34
33
|
* @returns {Object} new object with same properties as originalObject
|
|
35
34
|
*/
|
|
36
|
-
export function omit
|
|
35
|
+
export function omit<T, Keys extends keyof T>(
|
|
36
|
+
originalObject: T,
|
|
37
|
+
ks: Array<Keys> = [],
|
|
38
|
+
): Omit<T, Keys> {
|
|
37
39
|
// code based on babel's _objectWithoutProperties
|
|
38
|
-
const newObject = {};
|
|
40
|
+
const newObject = {} as T;
|
|
39
41
|
for (const key in originalObject) {
|
|
42
|
+
// @ts-expect-error String is not assignable to Key
|
|
40
43
|
if (ks.indexOf(key) >= 0) {
|
|
41
44
|
continue;
|
|
42
45
|
}
|
|
@@ -57,7 +60,7 @@ export function getPoint(datum) {
|
|
|
57
60
|
x: exists(_voronoiX) ? _voronoiX : defaultX,
|
|
58
61
|
x0: exists(_x0) ? _x0 : _x,
|
|
59
62
|
y: exists(_voronoiY) ? _voronoiY : defaultY,
|
|
60
|
-
y0: exists(_y0) ? _y0 : _y
|
|
63
|
+
y0: exists(_y0) ? _y0 : _y,
|
|
61
64
|
};
|
|
62
65
|
return defaults({}, point, datum);
|
|
63
66
|
}
|
|
@@ -74,7 +77,7 @@ export function scalePoint(props, datum) {
|
|
|
74
77
|
x: polar ? y * Math.cos(x) + origin.x : x,
|
|
75
78
|
x0: polar ? y0 * Math.cos(x0) + origin.x : x0,
|
|
76
79
|
y: polar ? -y * Math.sin(x) + origin.y : y,
|
|
77
|
-
y0: polar ? -y0 * Math.sin(x0) + origin.x : y0
|
|
80
|
+
y0: polar ? -y0 * Math.sin(x0) + origin.x : y0,
|
|
78
81
|
};
|
|
79
82
|
}
|
|
80
83
|
|
|
@@ -86,7 +89,7 @@ export function getPadding(props, name = "padding") {
|
|
|
86
89
|
top: paddingObj.top || paddingVal,
|
|
87
90
|
bottom: paddingObj.bottom || paddingVal,
|
|
88
91
|
left: paddingObj.left || paddingVal,
|
|
89
|
-
right: paddingObj.right || paddingVal
|
|
92
|
+
right: paddingObj.right || paddingVal,
|
|
90
93
|
};
|
|
91
94
|
}
|
|
92
95
|
|
|
@@ -119,7 +122,7 @@ export function getStyles(style, defaultStyles) {
|
|
|
119
122
|
return {
|
|
120
123
|
parent: defaults({}, parent, defaultParent, { width, height }),
|
|
121
124
|
labels: defaults({}, labels, defaultLabels),
|
|
122
|
-
data: defaults({}, data, defaultData)
|
|
125
|
+
data: defaults({}, data, defaultData),
|
|
123
126
|
};
|
|
124
127
|
}
|
|
125
128
|
|
|
@@ -162,7 +165,7 @@ export function getPolarOrigin(props) {
|
|
|
162
165
|
const offsetHeight = height / 2 + top - bottom;
|
|
163
166
|
return {
|
|
164
167
|
x: offsetWidth + radius > width ? radius + left - right : offsetWidth,
|
|
165
|
-
y: offsetHeight + radius > height ? radius + top - bottom : offsetHeight
|
|
168
|
+
y: offsetHeight + radius > height ? radius + top - bottom : offsetHeight,
|
|
166
169
|
};
|
|
167
170
|
}
|
|
168
171
|
|
|
@@ -190,7 +193,7 @@ export function createAccessor(key) {
|
|
|
190
193
|
return property(key);
|
|
191
194
|
}
|
|
192
195
|
|
|
193
|
-
export function modifyProps(props, fallbackProps
|
|
196
|
+
export function modifyProps(props, fallbackProps?, role?) {
|
|
194
197
|
const theme = props.theme && props.theme[role] ? props.theme[role] : {};
|
|
195
198
|
const themeProps = omit(theme, ["style"]);
|
|
196
199
|
const horizontal = isHorizontal(props);
|
|
@@ -219,13 +222,24 @@ export function getCurrentAxis(axis, horizontal) {
|
|
|
219
222
|
* @returns {Array} returns an array of results from calling the iteratee on all nested children
|
|
220
223
|
*/
|
|
221
224
|
/* eslint-disable max-params */
|
|
222
|
-
export function reduceChildren
|
|
223
|
-
|
|
224
|
-
|
|
225
|
+
export function reduceChildren<
|
|
226
|
+
TChildren extends React.ReactNode,
|
|
227
|
+
TItem,
|
|
228
|
+
TResult = TItem[],
|
|
229
|
+
>(
|
|
230
|
+
children: TChildren[],
|
|
231
|
+
iteratee: (
|
|
232
|
+
child: TChildren,
|
|
233
|
+
childName: string,
|
|
234
|
+
parent?: TChildren,
|
|
235
|
+
) => TItem | null,
|
|
225
236
|
parentProps = {},
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
)
|
|
237
|
+
// @ts-expect-error These defaults are hard to type
|
|
238
|
+
initialMemo: TResult = [],
|
|
239
|
+
combine: (memo: TResult, item: TItem) => TResult = (memo, item) =>
|
|
240
|
+
// @ts-expect-error These defaults are hard to type
|
|
241
|
+
memo.concat(item),
|
|
242
|
+
): TResult {
|
|
229
243
|
const sharedProps = [
|
|
230
244
|
"data",
|
|
231
245
|
"domain",
|
|
@@ -235,9 +249,9 @@ export function reduceChildren(
|
|
|
235
249
|
"endAngle",
|
|
236
250
|
"minDomain",
|
|
237
251
|
"maxDomain",
|
|
238
|
-
"horizontal"
|
|
252
|
+
"horizontal",
|
|
239
253
|
];
|
|
240
|
-
const traverseChildren = (childArray, names, parent) => {
|
|
254
|
+
const traverseChildren = (childArray, names, parent?) => {
|
|
241
255
|
return childArray.reduce((memo, child, index) => {
|
|
242
256
|
const childRole = child.type && child.type.role;
|
|
243
257
|
const childName = child.props.name || `${childRole}-${names[index]}`;
|
|
@@ -245,7 +259,7 @@ export function reduceChildren(
|
|
|
245
259
|
const childProps = assign(
|
|
246
260
|
{},
|
|
247
261
|
child.props,
|
|
248
|
-
pick(parentProps, sharedProps)
|
|
262
|
+
pick(parentProps, sharedProps),
|
|
249
263
|
);
|
|
250
264
|
|
|
251
265
|
const nestedChildren =
|
|
@@ -253,11 +267,15 @@ export function reduceChildren(
|
|
|
253
267
|
child.type.role === "stack" &&
|
|
254
268
|
isFunction(child.type.getChildren)
|
|
255
269
|
? child.type.getChildren(childProps)
|
|
256
|
-
:
|
|
270
|
+
: (
|
|
271
|
+
React.Children.toArray(
|
|
272
|
+
child.props.children,
|
|
273
|
+
) as Array<React.ReactElement>
|
|
274
|
+
).map((c) => {
|
|
257
275
|
const nestedChildProps = assign(
|
|
258
276
|
{},
|
|
259
277
|
c.props,
|
|
260
|
-
pick(childProps, sharedProps)
|
|
278
|
+
pick(childProps, sharedProps),
|
|
261
279
|
);
|
|
262
280
|
return React.cloneElement(c, nestedChildProps);
|
|
263
281
|
});
|
|
@@ -266,7 +284,7 @@ export function reduceChildren(
|
|
|
266
284
|
const nestedResults = traverseChildren(
|
|
267
285
|
nestedChildren,
|
|
268
286
|
childNames,
|
|
269
|
-
child
|
|
287
|
+
child,
|
|
270
288
|
);
|
|
271
289
|
memo = combine(memo, nestedResults);
|
|
272
290
|
} else {
|
|
@@ -285,7 +303,7 @@ export function reduceChildren(
|
|
|
285
303
|
/**
|
|
286
304
|
* @param {Object} props: the props object
|
|
287
305
|
* @returns {Boolean} returns true if the props object contains `horizontal: true` of if any
|
|
288
|
-
* children or nested children are
|
|
306
|
+
* children or nested children are horizontal
|
|
289
307
|
*/
|
|
290
308
|
export function isHorizontal(props) {
|
|
291
309
|
if (props.horizontal !== undefined || !props.children) {
|
|
File without changes
|
|
@@ -7,7 +7,7 @@ import * as Transitions from "../transitions";
|
|
|
7
7
|
const INITIAL_STATE = {
|
|
8
8
|
nodesShouldLoad: false,
|
|
9
9
|
nodesDoneLoad: false,
|
|
10
|
-
animating: true
|
|
10
|
+
animating: true,
|
|
11
11
|
};
|
|
12
12
|
|
|
13
13
|
export const useAnimationState = (initialState = INITIAL_STATE) => {
|
|
@@ -18,7 +18,7 @@ export const useAnimationState = (initialState = INITIAL_STATE) => {
|
|
|
18
18
|
(newState) => {
|
|
19
19
|
_setState((oldState) => ({ ...oldState, ...newState }));
|
|
20
20
|
},
|
|
21
|
-
[_setState]
|
|
21
|
+
[_setState],
|
|
22
22
|
);
|
|
23
23
|
|
|
24
24
|
// This is a copy of Wrapper.getAnimationProps
|
|
@@ -43,7 +43,7 @@ export const useAnimationState = (initialState = INITIAL_STATE) => {
|
|
|
43
43
|
const getTransitionProps = Transitions.getTransitionPropsFactory(
|
|
44
44
|
props,
|
|
45
45
|
filteredState,
|
|
46
|
-
(newState) => setState(newState)
|
|
46
|
+
(newState) => setState(newState),
|
|
47
47
|
);
|
|
48
48
|
getTransitions = (childComponent) =>
|
|
49
49
|
getTransitionProps(childComponent, index);
|
|
@@ -51,10 +51,10 @@ export const useAnimationState = (initialState = INITIAL_STATE) => {
|
|
|
51
51
|
return defaults(
|
|
52
52
|
{ getTransitions, parentState },
|
|
53
53
|
props.animate,
|
|
54
|
-
child.props.animate
|
|
54
|
+
child.props.animate,
|
|
55
55
|
);
|
|
56
56
|
},
|
|
57
|
-
[state, setState]
|
|
57
|
+
[state, setState],
|
|
58
58
|
);
|
|
59
59
|
|
|
60
60
|
// This is a copy of Wrapper.setAnimationState
|
|
@@ -68,7 +68,7 @@ export const useAnimationState = (initialState = INITIAL_STATE) => {
|
|
|
68
68
|
const oldProps = nodesWillExit ? props : null;
|
|
69
69
|
const newState = defaults(
|
|
70
70
|
{ oldProps, nextProps },
|
|
71
|
-
props.animate.parentState
|
|
71
|
+
props.animate.parentState,
|
|
72
72
|
);
|
|
73
73
|
setState(newState);
|
|
74
74
|
} else {
|
|
@@ -91,7 +91,7 @@ export const useAnimationState = (initialState = INITIAL_STATE) => {
|
|
|
91
91
|
nodesWillExit,
|
|
92
92
|
nodesWillEnter,
|
|
93
93
|
childrenTransitions,
|
|
94
|
-
nodesShouldEnter
|
|
94
|
+
nodesShouldEnter,
|
|
95
95
|
} = Transitions.getInitialTransitionState(oldChildren, nextChildren);
|
|
96
96
|
|
|
97
97
|
setState({
|
|
@@ -103,11 +103,11 @@ export const useAnimationState = (initialState = INITIAL_STATE) => {
|
|
|
103
103
|
: childrenTransitions,
|
|
104
104
|
oldProps: nodesWillExit ? props : null,
|
|
105
105
|
nextProps,
|
|
106
|
-
continuous
|
|
106
|
+
continuous,
|
|
107
107
|
});
|
|
108
108
|
}
|
|
109
109
|
},
|
|
110
|
-
[setState]
|
|
110
|
+
[setState],
|
|
111
111
|
);
|
|
112
112
|
|
|
113
113
|
const getProps = React.useCallback(
|
|
@@ -116,7 +116,7 @@ export const useAnimationState = (initialState = INITIAL_STATE) => {
|
|
|
116
116
|
? state.oldProps || initialProps
|
|
117
117
|
: initialProps;
|
|
118
118
|
},
|
|
119
|
-
[state]
|
|
119
|
+
[state],
|
|
120
120
|
);
|
|
121
121
|
|
|
122
122
|
return { state, setState, getAnimationProps, setAnimationState, getProps };
|