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
|
@@ -1,34 +1,74 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import PropTypes from "prop-types";
|
|
3
|
-
import VictoryAnimation from "../victory-animation/victory-animation";
|
|
3
|
+
import { VictoryAnimation } from "../victory-animation/victory-animation";
|
|
4
4
|
import * as Collection from "../victory-util/collection";
|
|
5
5
|
import * as Helpers from "../victory-util/helpers";
|
|
6
6
|
import TimerContext from "../victory-util/timer-context";
|
|
7
7
|
import * as Transitions from "../victory-util/transitions";
|
|
8
|
-
import { defaults, isFunction, pick
|
|
8
|
+
import { defaults, isFunction, pick } from "lodash";
|
|
9
9
|
import isEqual from "react-fast-compare";
|
|
10
|
+
import Timer from "../victory-util/timer";
|
|
10
11
|
|
|
11
|
-
|
|
12
|
+
type VictoryTransitionChild = React.ReactElement<
|
|
13
|
+
// Props:
|
|
14
|
+
{
|
|
15
|
+
polar?: boolean;
|
|
16
|
+
domain?: number[] | { x: number[]; y: number[] };
|
|
17
|
+
groupComponent?: React.ReactElement;
|
|
18
|
+
},
|
|
19
|
+
// Type:
|
|
20
|
+
{
|
|
21
|
+
new (props: any): React.Component<any, any>;
|
|
22
|
+
continuous?: boolean;
|
|
23
|
+
}
|
|
24
|
+
>;
|
|
25
|
+
interface VictoryTransitionProps {
|
|
26
|
+
animate?: boolean | any;
|
|
27
|
+
animationWhitelist?: string[];
|
|
28
|
+
children: VictoryTransitionChild;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
interface VictoryTransitionState {
|
|
32
|
+
oldProps?: VictoryTransitionProps | null;
|
|
33
|
+
nextProps?: VictoryTransitionProps;
|
|
34
|
+
nodesShouldLoad?: boolean;
|
|
35
|
+
nodesDoneLoad?: boolean;
|
|
36
|
+
nodesWillExit?: boolean;
|
|
37
|
+
nodesWillEnter?: boolean;
|
|
38
|
+
nodesShouldEnter?: boolean;
|
|
39
|
+
childrenTransitions?: unknown;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export interface VictoryTransition {
|
|
43
|
+
context: React.ContextType<typeof TimerContext>;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export class VictoryTransition extends React.Component<
|
|
47
|
+
VictoryTransitionProps,
|
|
48
|
+
VictoryTransitionState
|
|
49
|
+
> {
|
|
12
50
|
static displayName = "VictoryTransition";
|
|
13
51
|
|
|
14
52
|
static propTypes = {
|
|
15
53
|
animate: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),
|
|
16
54
|
animationWhitelist: PropTypes.array,
|
|
17
|
-
children: PropTypes.node
|
|
55
|
+
children: PropTypes.node,
|
|
18
56
|
};
|
|
19
57
|
|
|
20
58
|
static contextType = TimerContext;
|
|
59
|
+
private continuous: boolean;
|
|
60
|
+
private timer: Timer;
|
|
61
|
+
private transitionProps: any;
|
|
21
62
|
|
|
22
63
|
constructor(props, context) {
|
|
23
64
|
super(props, context);
|
|
24
65
|
this.state = {
|
|
25
66
|
nodesShouldLoad: false,
|
|
26
|
-
nodesDoneLoad: false
|
|
67
|
+
nodesDoneLoad: false,
|
|
27
68
|
};
|
|
28
69
|
const child = this.props.children;
|
|
29
70
|
const polar = child.props.polar;
|
|
30
71
|
this.continuous = !polar && child.type && child.type.continuous === true;
|
|
31
|
-
this.getTransitionState = this.getTransitionState.bind(this);
|
|
32
72
|
this.timer = this.context.transitionTimer;
|
|
33
73
|
}
|
|
34
74
|
|
|
@@ -36,11 +76,11 @@ export default class VictoryTransition extends React.Component {
|
|
|
36
76
|
this.setState({ nodesShouldLoad: true }); //eslint-disable-line react/no-did-mount-set-state
|
|
37
77
|
}
|
|
38
78
|
|
|
39
|
-
shouldComponentUpdate(nextProps) {
|
|
79
|
+
shouldComponentUpdate(nextProps: VictoryTransitionProps) {
|
|
40
80
|
if (!isEqual(this.props, nextProps)) {
|
|
41
81
|
this.timer.bypassAnimation();
|
|
42
82
|
this.setState(this.getTransitionState(this.props, nextProps), () =>
|
|
43
|
-
this.timer.resumeAnimation()
|
|
83
|
+
this.timer.resumeAnimation(),
|
|
44
84
|
);
|
|
45
85
|
}
|
|
46
86
|
return true;
|
|
@@ -50,7 +90,10 @@ export default class VictoryTransition extends React.Component {
|
|
|
50
90
|
this.timer.stop();
|
|
51
91
|
}
|
|
52
92
|
|
|
53
|
-
getTransitionState(
|
|
93
|
+
private getTransitionState(
|
|
94
|
+
props: VictoryTransitionProps,
|
|
95
|
+
nextProps: VictoryTransitionProps,
|
|
96
|
+
): VictoryTransitionState {
|
|
54
97
|
const { animate } = props;
|
|
55
98
|
if (!animate) {
|
|
56
99
|
return {};
|
|
@@ -65,7 +108,7 @@ export default class VictoryTransition extends React.Component {
|
|
|
65
108
|
nodesWillExit,
|
|
66
109
|
nodesWillEnter,
|
|
67
110
|
childrenTransitions,
|
|
68
|
-
nodesShouldEnter
|
|
111
|
+
nodesShouldEnter,
|
|
69
112
|
} = Transitions.getInitialTransitionState(oldChildren, nextChildren);
|
|
70
113
|
return {
|
|
71
114
|
nodesWillExit,
|
|
@@ -73,12 +116,15 @@ export default class VictoryTransition extends React.Component {
|
|
|
73
116
|
childrenTransitions,
|
|
74
117
|
nodesShouldEnter,
|
|
75
118
|
oldProps: nodesWillExit ? props : null,
|
|
76
|
-
nextProps
|
|
119
|
+
nextProps,
|
|
77
120
|
};
|
|
78
121
|
}
|
|
79
122
|
}
|
|
80
123
|
|
|
81
|
-
getDomainFromChildren(
|
|
124
|
+
private getDomainFromChildren(
|
|
125
|
+
props: VictoryTransitionProps,
|
|
126
|
+
axis: "x" | "y",
|
|
127
|
+
) {
|
|
82
128
|
const getChildDomains = (children) => {
|
|
83
129
|
return children.reduce((memo, child) => {
|
|
84
130
|
if (child.type && isFunction(child.type.getDomain)) {
|
|
@@ -87,15 +133,17 @@ export default class VictoryTransition extends React.Component {
|
|
|
87
133
|
return childDomain ? memo.concat(childDomain) : memo;
|
|
88
134
|
} else if (child.props && child.props.children) {
|
|
89
135
|
return memo.concat(
|
|
90
|
-
getChildDomains(React.Children.toArray(child.props.children))
|
|
136
|
+
getChildDomains(React.Children.toArray(child.props.children)),
|
|
91
137
|
);
|
|
92
138
|
}
|
|
93
139
|
return memo;
|
|
94
140
|
}, []);
|
|
95
141
|
};
|
|
96
142
|
|
|
97
|
-
const child = React.Children.toArray(
|
|
98
|
-
|
|
143
|
+
const child = React.Children.toArray(
|
|
144
|
+
props.children,
|
|
145
|
+
)[0] as VictoryTransitionChild;
|
|
146
|
+
const childProps: any = child.props || {};
|
|
99
147
|
const domain = Array.isArray(childProps.domain)
|
|
100
148
|
? childProps.domain
|
|
101
149
|
: childProps.domain && childProps.domain[axis];
|
|
@@ -107,7 +155,7 @@ export default class VictoryTransition extends React.Component {
|
|
|
107
155
|
? [0, 1]
|
|
108
156
|
: [
|
|
109
157
|
Collection.getMinValue(childDomains),
|
|
110
|
-
Collection.getMaxValue(childDomains)
|
|
158
|
+
Collection.getMaxValue(childDomains),
|
|
111
159
|
];
|
|
112
160
|
}
|
|
113
161
|
}
|
|
@@ -121,10 +169,10 @@ export default class VictoryTransition extends React.Component {
|
|
|
121
169
|
: this.props;
|
|
122
170
|
}
|
|
123
171
|
|
|
124
|
-
pickDomainProps(props) {
|
|
125
|
-
const parentState =
|
|
172
|
+
private pickDomainProps(props: VictoryTransitionProps) {
|
|
173
|
+
const parentState = props.animate?.parentState;
|
|
126
174
|
if (parentState && parentState.nodesWillExit) {
|
|
127
|
-
return this.
|
|
175
|
+
return this.continuous || parentState.continuous
|
|
128
176
|
? parentState.nextProps || this.state.nextProps || props
|
|
129
177
|
: props;
|
|
130
178
|
}
|
|
@@ -146,24 +194,25 @@ export default class VictoryTransition extends React.Component {
|
|
|
146
194
|
|
|
147
195
|
render() {
|
|
148
196
|
const props = this.pickProps();
|
|
149
|
-
const getTransitionProps =
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
197
|
+
const getTransitionProps = this.props.animate?.getTransitions
|
|
198
|
+
? this.props.animate.getTransitions
|
|
199
|
+
: Transitions.getTransitionPropsFactory(props, this.state, (newState) =>
|
|
200
|
+
this.setState(newState),
|
|
201
|
+
);
|
|
202
|
+
const child = React.Children.toArray(
|
|
203
|
+
props.children,
|
|
204
|
+
)[0] as VictoryTransitionChild;
|
|
156
205
|
const transitionProps = getTransitionProps(child);
|
|
157
206
|
this.transitionProps = transitionProps;
|
|
158
207
|
const domain = {
|
|
159
208
|
x: this.getDomainFromChildren(this.pickDomainProps(props), "x"),
|
|
160
|
-
y: this.getDomainFromChildren(props, "y")
|
|
209
|
+
y: this.getDomainFromChildren(props, "y"),
|
|
161
210
|
};
|
|
162
211
|
const clipWidth = this.getClipWidth(props, child);
|
|
163
212
|
const combinedProps = defaults(
|
|
164
213
|
{ domain, clipWidth },
|
|
165
214
|
transitionProps,
|
|
166
|
-
child.props
|
|
215
|
+
child.props,
|
|
167
216
|
);
|
|
168
217
|
const animationWhitelist = props.animationWhitelist || [];
|
|
169
218
|
const whitelist = animationWhitelist.concat(["clipWidth"]);
|
|
@@ -176,7 +225,7 @@ export default class VictoryTransition extends React.Component {
|
|
|
176
225
|
if (child.props.groupComponent) {
|
|
177
226
|
const groupComponent = this.continuous
|
|
178
227
|
? React.cloneElement(child.props.groupComponent, {
|
|
179
|
-
clipWidth: newProps.clipWidth || 0
|
|
228
|
+
clipWidth: newProps.clipWidth || 0,
|
|
180
229
|
})
|
|
181
230
|
: child.props.groupComponent;
|
|
182
231
|
return React.cloneElement(
|
|
@@ -184,8 +233,8 @@ export default class VictoryTransition extends React.Component {
|
|
|
184
233
|
defaults(
|
|
185
234
|
{ animate: null, animating: true, groupComponent },
|
|
186
235
|
newProps,
|
|
187
|
-
combinedProps
|
|
188
|
-
)
|
|
236
|
+
combinedProps,
|
|
237
|
+
),
|
|
189
238
|
);
|
|
190
239
|
}
|
|
191
240
|
return React.cloneElement(
|
|
@@ -193,8 +242,8 @@ export default class VictoryTransition extends React.Component {
|
|
|
193
242
|
defaults(
|
|
194
243
|
{ animate: null, animating: true },
|
|
195
244
|
newProps,
|
|
196
|
-
combinedProps
|
|
197
|
-
)
|
|
245
|
+
combinedProps,
|
|
246
|
+
),
|
|
198
247
|
);
|
|
199
248
|
}}
|
|
200
249
|
</VictoryAnimation>
|
|
@@ -1,53 +1,131 @@
|
|
|
1
1
|
/*global window:false */
|
|
2
2
|
import React from "react";
|
|
3
3
|
import {
|
|
4
|
-
defaults,
|
|
5
4
|
assign,
|
|
6
|
-
|
|
5
|
+
defaults,
|
|
6
|
+
difference,
|
|
7
|
+
isEmpty,
|
|
7
8
|
isFunction,
|
|
9
|
+
isNil,
|
|
10
|
+
keys,
|
|
8
11
|
pick,
|
|
9
12
|
without,
|
|
10
|
-
isEmpty,
|
|
11
|
-
isNil,
|
|
12
|
-
difference
|
|
13
13
|
} from "lodash";
|
|
14
|
+
import type { ComponentEvent } from "./events";
|
|
14
15
|
import * as Events from "./events";
|
|
15
16
|
import isEqual from "react-fast-compare";
|
|
16
|
-
import VictoryTransition from "../victory-transition/victory-transition";
|
|
17
|
+
import { VictoryTransition } from "../victory-transition/victory-transition";
|
|
18
|
+
import { VictoryCommonProps, VictoryDatableProps } from "./common-props";
|
|
19
|
+
import { VictoryLabelableProps } from "../types/prop-types";
|
|
20
|
+
|
|
21
|
+
// DISCLAIMER:
|
|
22
|
+
// This file is not currently tested, and it is first on the list of files
|
|
23
|
+
// to refactor in our current refactoring effort. Please do not make changes
|
|
24
|
+
// to this file without manual testing and/or refactoring and adding tests.
|
|
17
25
|
|
|
18
26
|
const datumHasXandY = (datum) => {
|
|
19
27
|
return !isNil(datum._x) && !isNil(datum._y);
|
|
20
28
|
};
|
|
21
29
|
|
|
22
30
|
// used for checking state changes. Expected components can be passed in via options
|
|
23
|
-
const defaultComponents = [
|
|
31
|
+
const defaultComponents: NonNullable<MixinOptions["components"]> = [
|
|
24
32
|
{ name: "parent", index: "parent" },
|
|
25
33
|
{ name: "data" },
|
|
26
|
-
{ name: "labels" }
|
|
34
|
+
{ name: "labels" },
|
|
27
35
|
];
|
|
28
36
|
|
|
29
|
-
export
|
|
30
|
-
|
|
31
|
-
|
|
37
|
+
export type MixinOptions = {
|
|
38
|
+
components?: Array<{
|
|
39
|
+
name: string;
|
|
40
|
+
index?: string;
|
|
41
|
+
}>;
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
export interface EventMixinCommonProps
|
|
45
|
+
extends VictoryCommonProps,
|
|
46
|
+
VictoryDatableProps,
|
|
47
|
+
VictoryLabelableProps {}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* These methods will be implemented by the Mixin,
|
|
51
|
+
* and are accessible to the Wrapped Component.
|
|
52
|
+
*
|
|
53
|
+
* To make your Wrapped Component type-safe, use "interface merging" like so:
|
|
54
|
+
* @example
|
|
55
|
+
* interface MyComponent extends EventsMixinClass<MyProps> {}
|
|
56
|
+
* class MyComponent extends React.Component<MyProps> { ... }
|
|
57
|
+
*/
|
|
58
|
+
export interface EventsMixinClass<TProps> {
|
|
59
|
+
renderContainer(
|
|
60
|
+
component: React.ReactElement,
|
|
61
|
+
children: React.ReactElement[],
|
|
62
|
+
): React.ReactElement;
|
|
63
|
+
cacheValues<TThis>(this: TThis, obj: Partial<TThis>): void;
|
|
64
|
+
getEventState: typeof Events.getEventState;
|
|
65
|
+
renderContinuousData(props: TProps);
|
|
66
|
+
animateComponent(props: TProps, defaultAnimationWhitelist);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* These fields are calculated by the Mixin
|
|
71
|
+
*/
|
|
72
|
+
export interface EventMixinCalculatedValues {
|
|
73
|
+
componentEvents: Array<ComponentEvent>;
|
|
74
|
+
getSharedEventState: (key: string, value: string) => unknown;
|
|
75
|
+
baseProps: Record<string, object>;
|
|
76
|
+
dataKeys: string[];
|
|
77
|
+
hasEvents: unknown;
|
|
78
|
+
events: unknown;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* This represents the class itself, including static fields
|
|
83
|
+
*/
|
|
84
|
+
export interface WrappedComponentClass<TProps> {
|
|
85
|
+
new (props: TProps): React.Component<TProps>;
|
|
86
|
+
getBaseProps?(props: TProps): EventMixinCalculatedValues["baseProps"];
|
|
87
|
+
role?: string;
|
|
88
|
+
expectedComponents?: string[];
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
export function addEvents<
|
|
92
|
+
TBase extends WrappedComponentClass<TProps>,
|
|
93
|
+
TProps extends EventMixinCommonProps,
|
|
94
|
+
>(WrappedComponent: TBase, options: MixinOptions = {}) {
|
|
95
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-interface
|
|
96
|
+
interface AddEventsMixin extends EventMixinCalculatedValues {}
|
|
97
|
+
|
|
98
|
+
// @ts-expect-error "TS2545: A mixin class must have a constructor with a single rest parameter of type 'any[]'."
|
|
99
|
+
class AddEventsMixin
|
|
100
|
+
extends WrappedComponent
|
|
101
|
+
implements EventsMixinClass<TProps>
|
|
102
|
+
{
|
|
103
|
+
constructor(props: TProps) {
|
|
32
104
|
super(props);
|
|
33
|
-
const getScopedEvents = Events.getScopedEvents.bind(this);
|
|
34
|
-
const boundGetEvents = Events.getEvents.bind(this);
|
|
35
|
-
this.state = {};
|
|
36
|
-
this.getEvents = (p, target, eventKey) => {
|
|
37
|
-
return boundGetEvents(p, target, eventKey, getScopedEvents);
|
|
38
|
-
};
|
|
39
|
-
this.getEventState = Events.getEventState.bind(this);
|
|
40
|
-
const calculatedValues = this.getCalculatedValues(props);
|
|
41
|
-
this.cacheValues(calculatedValues);
|
|
42
|
-
this.externalMutations = this.getExternalMutations(props);
|
|
43
|
-
this.calculatedState = this.getStateChanges(props);
|
|
44
|
-
this.globalEvents = {};
|
|
45
|
-
this.prevGlobalEventKeys = [];
|
|
46
|
-
this.boundGlobalEvents = {};
|
|
47
|
-
}
|
|
48
105
|
|
|
49
|
-
|
|
106
|
+
this.cacheValues(this.getCalculatedValues(props));
|
|
107
|
+
}
|
|
108
|
+
state = {};
|
|
109
|
+
getEventState = Events.getEventState.bind(this);
|
|
110
|
+
getScopedEvents = Events.getScopedEvents.bind(this);
|
|
111
|
+
getEvents = (p, target, eventKey) => {
|
|
112
|
+
return Events.getEvents.call(
|
|
113
|
+
this,
|
|
114
|
+
p,
|
|
115
|
+
target,
|
|
116
|
+
eventKey,
|
|
117
|
+
this.getScopedEvents,
|
|
118
|
+
);
|
|
119
|
+
};
|
|
120
|
+
externalMutations = this.getExternalMutations(this.props);
|
|
121
|
+
calculatedState = this.getStateChanges(this.props);
|
|
122
|
+
globalEvents = {};
|
|
123
|
+
prevGlobalEventKeys: string[] = [];
|
|
124
|
+
boundGlobalEvents = {};
|
|
125
|
+
|
|
126
|
+
shouldComponentUpdate(nextProps: TProps) {
|
|
50
127
|
const externalMutations = this.getExternalMutations(nextProps);
|
|
128
|
+
// @ts-expect-error "Property 'animating' does not exist on type EventMixinCommonProps"
|
|
51
129
|
const animating = this.props.animating || this.props.animate;
|
|
52
130
|
const newMutation = !isEqual(externalMutations, this.externalMutations);
|
|
53
131
|
if (animating || newMutation) {
|
|
@@ -80,12 +158,12 @@ export default (WrappedComponent, options) => {
|
|
|
80
158
|
const globalEventKeys = keys(this.globalEvents);
|
|
81
159
|
const removedGlobalEventKeys = difference(
|
|
82
160
|
this.prevGlobalEventKeys,
|
|
83
|
-
globalEventKeys
|
|
161
|
+
globalEventKeys,
|
|
84
162
|
);
|
|
85
163
|
removedGlobalEventKeys.forEach((key) => this.removeGlobalListener(key));
|
|
86
164
|
const addedGlobalEventKeys = difference(
|
|
87
165
|
globalEventKeys,
|
|
88
|
-
this.prevGlobalEventKeys
|
|
166
|
+
this.prevGlobalEventKeys,
|
|
89
167
|
);
|
|
90
168
|
addedGlobalEventKeys.forEach((key) => this.addGlobalListener(key));
|
|
91
169
|
this.prevGlobalEventKeys = globalEventKeys;
|
|
@@ -103,14 +181,14 @@ export default (WrappedComponent, options) => {
|
|
|
103
181
|
this.boundGlobalEvents[key] = boundListener;
|
|
104
182
|
window.addEventListener(
|
|
105
183
|
Events.getGlobalEventNameFromKey(key),
|
|
106
|
-
boundListener
|
|
184
|
+
boundListener,
|
|
107
185
|
);
|
|
108
186
|
}
|
|
109
187
|
|
|
110
188
|
removeGlobalListener(key) {
|
|
111
189
|
window.removeEventListener(
|
|
112
190
|
Events.getGlobalEventNameFromKey(key),
|
|
113
|
-
this.boundGlobalEvents[key]
|
|
191
|
+
this.boundGlobalEvents[key],
|
|
114
192
|
);
|
|
115
193
|
}
|
|
116
194
|
|
|
@@ -125,12 +203,11 @@ export default (WrappedComponent, options) => {
|
|
|
125
203
|
const result = defaults(
|
|
126
204
|
{},
|
|
127
205
|
this.getEventState(key, type),
|
|
128
|
-
this.getSharedEventState(key, type)
|
|
206
|
+
this.getSharedEventState(key, type),
|
|
129
207
|
);
|
|
130
208
|
return isEmpty(result) ? undefined : result;
|
|
131
209
|
};
|
|
132
210
|
|
|
133
|
-
options = options || {};
|
|
134
211
|
const components = options.components || defaultComponents;
|
|
135
212
|
const stateChanges = components
|
|
136
213
|
.map((component) => {
|
|
@@ -158,7 +235,7 @@ export default (WrappedComponent, options) => {
|
|
|
158
235
|
: memo;
|
|
159
236
|
return memo;
|
|
160
237
|
},
|
|
161
|
-
[]
|
|
238
|
+
[] as Array<() => void>,
|
|
162
239
|
);
|
|
163
240
|
const compiledCallbacks = callbacks.length
|
|
164
241
|
? () => {
|
|
@@ -169,7 +246,7 @@ export default (WrappedComponent, options) => {
|
|
|
169
246
|
}
|
|
170
247
|
}
|
|
171
248
|
|
|
172
|
-
getCalculatedValues(props) {
|
|
249
|
+
getCalculatedValues(props): EventMixinCalculatedValues {
|
|
173
250
|
const { sharedEvents } = props;
|
|
174
251
|
const components = WrappedComponent.expectedComponents;
|
|
175
252
|
const componentEvents = Events.getComponentEvents(props, components);
|
|
@@ -187,18 +264,18 @@ export default (WrappedComponent, options) => {
|
|
|
187
264
|
baseProps,
|
|
188
265
|
dataKeys,
|
|
189
266
|
hasEvents,
|
|
190
|
-
events
|
|
267
|
+
events,
|
|
191
268
|
};
|
|
192
269
|
}
|
|
193
270
|
|
|
194
|
-
getExternalMutations(props) {
|
|
271
|
+
getExternalMutations(props: TProps) {
|
|
195
272
|
const { sharedEvents, externalEventMutations } = props;
|
|
196
273
|
return isEmpty(externalEventMutations) || sharedEvents
|
|
197
274
|
? undefined
|
|
198
275
|
: Events.getExternalMutations(
|
|
199
276
|
externalEventMutations,
|
|
200
277
|
this.baseProps,
|
|
201
|
-
this.state
|
|
278
|
+
this.state,
|
|
202
279
|
);
|
|
203
280
|
}
|
|
204
281
|
|
|
@@ -208,8 +285,9 @@ export default (WrappedComponent, options) => {
|
|
|
208
285
|
});
|
|
209
286
|
}
|
|
210
287
|
|
|
211
|
-
getBaseProps(props, getSharedEventState) {
|
|
212
|
-
getSharedEventState =
|
|
288
|
+
getBaseProps(props, getSharedEventState): this["baseProps"] {
|
|
289
|
+
getSharedEventState =
|
|
290
|
+
getSharedEventState || this.getSharedEventState.bind(this);
|
|
213
291
|
const sharedParentState = getSharedEventState("parent", "parent");
|
|
214
292
|
const parentState = this.getEventState("parent", "parent");
|
|
215
293
|
const baseParentProps = defaults({}, parentState, sharedParentState);
|
|
@@ -219,7 +297,7 @@ export default (WrappedComponent, options) => {
|
|
|
219
297
|
: {};
|
|
220
298
|
const modifiedProps = defaults({}, parentProps, props);
|
|
221
299
|
|
|
222
|
-
return
|
|
300
|
+
return typeof WrappedComponent.getBaseProps === "function"
|
|
223
301
|
? WrappedComponent.getBaseProps(modifiedProps)
|
|
224
302
|
: {};
|
|
225
303
|
}
|
|
@@ -254,13 +332,13 @@ export default (WrappedComponent, options) => {
|
|
|
254
332
|
this.getSharedEventState(key, type),
|
|
255
333
|
component.props,
|
|
256
334
|
baseProps,
|
|
257
|
-
{ id }
|
|
335
|
+
{ id },
|
|
258
336
|
);
|
|
259
337
|
|
|
260
338
|
const events = defaults(
|
|
261
339
|
{},
|
|
262
340
|
Events.getPartialEvents(baseEvents, key, componentProps),
|
|
263
|
-
componentProps.events
|
|
341
|
+
componentProps.events,
|
|
264
342
|
);
|
|
265
343
|
|
|
266
344
|
return assign({}, componentProps, { events });
|
|
@@ -283,46 +361,48 @@ export default (WrappedComponent, options) => {
|
|
|
283
361
|
return React.cloneElement(component, parentProps, children);
|
|
284
362
|
}
|
|
285
363
|
|
|
286
|
-
animateComponent(props, defaultAnimationWhitelist) {
|
|
364
|
+
animateComponent(props: TProps, defaultAnimationWhitelist: string[]) {
|
|
287
365
|
const animationWhitelist =
|
|
288
|
-
props.animate &&
|
|
289
|
-
|
|
290
|
-
|
|
366
|
+
(typeof props.animate === "object" &&
|
|
367
|
+
props.animate?.animationWhitelist) ||
|
|
368
|
+
defaultAnimationWhitelist;
|
|
369
|
+
|
|
370
|
+
const Comp = this.constructor;
|
|
291
371
|
|
|
292
372
|
return (
|
|
293
373
|
<VictoryTransition
|
|
294
374
|
animate={props.animate}
|
|
295
375
|
animationWhitelist={animationWhitelist}
|
|
296
376
|
>
|
|
297
|
-
{
|
|
377
|
+
<Comp {...props} />
|
|
298
378
|
</VictoryTransition>
|
|
299
379
|
);
|
|
300
380
|
}
|
|
301
381
|
|
|
302
382
|
// Used by `VictoryLine` and `VictoryArea`
|
|
303
|
-
renderContinuousData(props) {
|
|
383
|
+
renderContinuousData(props: TProps) {
|
|
304
384
|
const { dataComponent, labelComponent, groupComponent } = props;
|
|
305
385
|
const dataKeys = without(this.dataKeys, "all");
|
|
306
386
|
const labelComponents = dataKeys.reduce((memo, key) => {
|
|
307
387
|
const labelProps = this.getComponentProps(
|
|
308
388
|
labelComponent,
|
|
309
389
|
"labels",
|
|
310
|
-
key
|
|
390
|
+
key,
|
|
311
391
|
);
|
|
312
392
|
if (
|
|
313
393
|
labelProps &&
|
|
314
394
|
labelProps.text !== undefined &&
|
|
315
395
|
labelProps.text !== null
|
|
316
396
|
) {
|
|
317
|
-
memo = memo.concat(React.cloneElement(labelComponent
|
|
397
|
+
memo = memo.concat(React.cloneElement(labelComponent!, labelProps));
|
|
318
398
|
}
|
|
319
399
|
return memo;
|
|
320
|
-
}, []);
|
|
400
|
+
}, [] as React.ReactElement[]);
|
|
321
401
|
|
|
322
402
|
const dataProps = this.getComponentProps(dataComponent, "data", "all");
|
|
323
403
|
const children = [
|
|
324
|
-
React.cloneElement(dataComponent
|
|
325
|
-
...labelComponents
|
|
404
|
+
React.cloneElement(dataComponent!, dataProps),
|
|
405
|
+
...labelComponents,
|
|
326
406
|
];
|
|
327
407
|
return this.renderContainer(groupComponent, children);
|
|
328
408
|
}
|
|
@@ -334,16 +414,16 @@ export default (WrappedComponent, options) => {
|
|
|
334
414
|
const dataProps = this.getComponentProps(
|
|
335
415
|
dataComponent,
|
|
336
416
|
"data",
|
|
337
|
-
index
|
|
417
|
+
index,
|
|
338
418
|
);
|
|
339
419
|
if (shouldRenderDatum(dataProps.datum)) {
|
|
340
420
|
validDataComponents.push(
|
|
341
|
-
React.cloneElement(dataComponent, dataProps)
|
|
421
|
+
React.cloneElement(dataComponent, dataProps),
|
|
342
422
|
);
|
|
343
423
|
}
|
|
344
424
|
return validDataComponents;
|
|
345
425
|
},
|
|
346
|
-
[]
|
|
426
|
+
[] as React.ReactElement[],
|
|
347
427
|
);
|
|
348
428
|
|
|
349
429
|
const labelComponents = this.dataKeys
|
|
@@ -351,7 +431,7 @@ export default (WrappedComponent, options) => {
|
|
|
351
431
|
const labelProps = this.getComponentProps(
|
|
352
432
|
labelComponent,
|
|
353
433
|
"labels",
|
|
354
|
-
index
|
|
434
|
+
index,
|
|
355
435
|
);
|
|
356
436
|
if (labelProps.text !== undefined && labelProps.text !== null) {
|
|
357
437
|
return React.cloneElement(labelComponent, labelProps);
|
|
@@ -363,5 +443,7 @@ export default (WrappedComponent, options) => {
|
|
|
363
443
|
const children = [...dataComponents, ...labelComponents];
|
|
364
444
|
return this.renderContainer(groupComponent, children);
|
|
365
445
|
}
|
|
366
|
-
}
|
|
367
|
-
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
return AddEventsMixin;
|
|
449
|
+
}
|