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
|
@@ -2,23 +2,76 @@
|
|
|
2
2
|
import { assign, defaults, isEmpty } from "lodash";
|
|
3
3
|
import PropTypes from "prop-types";
|
|
4
4
|
import React from "react";
|
|
5
|
-
import VictoryPortal from "../victory-portal/victory-portal";
|
|
6
|
-
import Rect from "../victory-primitives/rect";
|
|
7
|
-
import Text from "../victory-primitives/text";
|
|
8
|
-
import TSpan from "../victory-primitives/tspan";
|
|
5
|
+
import { VictoryPortal } from "../victory-portal/victory-portal";
|
|
6
|
+
import { Rect } from "../victory-primitives/rect";
|
|
7
|
+
import { Text } from "../victory-primitives/text";
|
|
8
|
+
import { TSpan } from "../victory-primitives/tspan";
|
|
9
9
|
import * as Helpers from "../victory-util/helpers";
|
|
10
10
|
import * as LabelHelpers from "../victory-util/label-helpers";
|
|
11
11
|
import * as Log from "../victory-util/log";
|
|
12
12
|
import * as CustomPropTypes from "../victory-util/prop-types";
|
|
13
13
|
import * as Style from "../victory-util/style";
|
|
14
14
|
import * as TextSize from "../victory-util/textsize";
|
|
15
|
+
import * as UserProps from "../victory-util/user-props";
|
|
16
|
+
import {
|
|
17
|
+
NumberOrCallback,
|
|
18
|
+
StringOrCallback,
|
|
19
|
+
StringOrNumberOrCallback,
|
|
20
|
+
} from "../types/callbacks";
|
|
21
|
+
import {
|
|
22
|
+
PaddingProps,
|
|
23
|
+
VerticalAnchorType,
|
|
24
|
+
VictoryLabelStyleObject,
|
|
25
|
+
} from "../victory-theme/victory-theme";
|
|
26
|
+
|
|
27
|
+
export type TextAnchorType = "start" | "middle" | "end" | "inherit";
|
|
28
|
+
export type OriginType = { x: number; y: number };
|
|
29
|
+
export type LabelOrientationType = "parallel" | "perpendicular" | "vertical";
|
|
30
|
+
|
|
31
|
+
export interface VictoryLabelProps {
|
|
32
|
+
angle?: StringOrNumberOrCallback;
|
|
33
|
+
ariaLabel?: StringOrCallback;
|
|
34
|
+
backgroundComponent?: React.ReactElement;
|
|
35
|
+
backgroundStyle?: VictoryLabelStyleObject | VictoryLabelStyleObject[];
|
|
36
|
+
backgroundPadding?: PaddingProps | PaddingProps[];
|
|
37
|
+
capHeight?: StringOrNumberOrCallback;
|
|
38
|
+
children?: StringOrNumberOrCallback;
|
|
39
|
+
className?: string;
|
|
40
|
+
datum?: object;
|
|
41
|
+
data?: any[];
|
|
42
|
+
desc?: string;
|
|
43
|
+
direction?: string;
|
|
44
|
+
disableInlineStyles?: boolean;
|
|
45
|
+
events?: React.DOMAttributes<any>;
|
|
46
|
+
groupComponent?: React.ReactElement;
|
|
47
|
+
id?: StringOrNumberOrCallback;
|
|
48
|
+
inline?: boolean;
|
|
49
|
+
labelPlacement?: LabelOrientationType;
|
|
50
|
+
lineHeight?: StringOrNumberOrCallback | (string | number)[];
|
|
51
|
+
origin?: OriginType;
|
|
52
|
+
polar?: boolean;
|
|
53
|
+
renderInPortal?: boolean;
|
|
54
|
+
style?: VictoryLabelStyleObject | VictoryLabelStyleObject[];
|
|
55
|
+
tabIndex?: NumberOrCallback;
|
|
56
|
+
text?: string[] | StringOrNumberOrCallback;
|
|
57
|
+
textComponent?: React.ReactElement;
|
|
58
|
+
textAnchor?: TextAnchorType | { (): TextAnchorType };
|
|
59
|
+
title?: string;
|
|
60
|
+
transform?: string | object | (() => string | object);
|
|
61
|
+
tspanComponent?: React.ReactElement;
|
|
62
|
+
verticalAnchor?: VerticalAnchorType | { (): VerticalAnchorType };
|
|
63
|
+
x?: number;
|
|
64
|
+
y?: number;
|
|
65
|
+
dx?: StringOrNumberOrCallback;
|
|
66
|
+
dy?: StringOrNumberOrCallback;
|
|
67
|
+
}
|
|
15
68
|
|
|
16
69
|
const defaultStyles = {
|
|
17
70
|
fill: "#252525",
|
|
18
71
|
fontSize: 14,
|
|
19
72
|
fontFamily:
|
|
20
73
|
"'Gill Sans', 'Gill Sans MT', 'Seravek', 'Trebuchet MS', sans-serif",
|
|
21
|
-
stroke: "transparent"
|
|
74
|
+
stroke: "transparent",
|
|
22
75
|
};
|
|
23
76
|
|
|
24
77
|
const getPosition = (props, dimension) => {
|
|
@@ -47,7 +100,7 @@ const getFontSize = (style) => {
|
|
|
47
100
|
return defaultStyles.fontSize;
|
|
48
101
|
};
|
|
49
102
|
|
|
50
|
-
const getSingleValue = (prop, index = 0) => {
|
|
103
|
+
const getSingleValue = <T,>(prop: T | T[], index = 0): T => {
|
|
51
104
|
return Array.isArray(prop) ? prop[index] || prop[0] : prop;
|
|
52
105
|
};
|
|
53
106
|
|
|
@@ -64,7 +117,7 @@ const getStyles = (style, props) => {
|
|
|
64
117
|
const baseStyles = Helpers.evaluateStyle(style, props);
|
|
65
118
|
return {
|
|
66
119
|
// Font size is necessary to calculate the y position of the label
|
|
67
|
-
fontSize: getFontSize(baseStyles)
|
|
120
|
+
fontSize: getFontSize(baseStyles),
|
|
68
121
|
};
|
|
69
122
|
}
|
|
70
123
|
const getSingleStyle = (s) => {
|
|
@@ -130,10 +183,10 @@ const getDy = (props, verticalAnchor, lineHeight) => {
|
|
|
130
183
|
? Helpers.evaluateProp(verticalAnchor, props)
|
|
131
184
|
: "middle";
|
|
132
185
|
const fontSizes = [...Array(length).keys()].map(
|
|
133
|
-
(i) => getSingleValue(props.style, i).fontSize
|
|
186
|
+
(i) => getSingleValue(props.style, i).fontSize,
|
|
134
187
|
);
|
|
135
188
|
const lineHeights = [...Array(length).keys()].map((i) =>
|
|
136
|
-
getSingleValue(lineHeight, i)
|
|
189
|
+
getSingleValue(lineHeight, i),
|
|
137
190
|
);
|
|
138
191
|
|
|
139
192
|
if (anchor === "start") {
|
|
@@ -220,7 +273,7 @@ const getFullBackground = (calculatedProps, tspanValues) => {
|
|
|
220
273
|
backgroundStyle,
|
|
221
274
|
inline,
|
|
222
275
|
backgroundPadding,
|
|
223
|
-
capHeight
|
|
276
|
+
capHeight,
|
|
224
277
|
} = calculatedProps;
|
|
225
278
|
const textSizes = tspanValues.map((tspan) => {
|
|
226
279
|
return tspan.textSize;
|
|
@@ -254,12 +307,12 @@ const getFullBackground = (calculatedProps, tspanValues) => {
|
|
|
254
307
|
x: inline
|
|
255
308
|
? xCoordinate - backgroundPadding.left
|
|
256
309
|
: xCoordinate + dx - backgroundPadding.left,
|
|
257
|
-
y: yCoordinate
|
|
310
|
+
y: yCoordinate,
|
|
258
311
|
};
|
|
259
312
|
|
|
260
313
|
return React.cloneElement(
|
|
261
314
|
backgroundComponent,
|
|
262
|
-
defaults({}, backgroundComponent.props, backgroundProps)
|
|
315
|
+
defaults({}, backgroundComponent.props, backgroundProps),
|
|
263
316
|
);
|
|
264
317
|
};
|
|
265
318
|
|
|
@@ -298,7 +351,7 @@ const getChildBackgrounds = (calculatedProps, tspanValues) => {
|
|
|
298
351
|
backgroundPadding,
|
|
299
352
|
backgroundComponent,
|
|
300
353
|
inline,
|
|
301
|
-
y
|
|
354
|
+
y,
|
|
302
355
|
} = calculatedProps;
|
|
303
356
|
|
|
304
357
|
const textElements = tspanValues.map((current, i) => {
|
|
@@ -325,14 +378,14 @@ const getChildBackgrounds = (calculatedProps, tspanValues) => {
|
|
|
325
378
|
labelSize.width + padding.left + padding.right + xOffset,
|
|
326
379
|
y,
|
|
327
380
|
fontSize: current.fontSize,
|
|
328
|
-
dy: childDy
|
|
381
|
+
dy: childDy,
|
|
329
382
|
};
|
|
330
383
|
});
|
|
331
384
|
|
|
332
385
|
return textElements.map((textElement, i) => {
|
|
333
386
|
const xCoordinate = getXCoordinate(
|
|
334
387
|
calculatedProps,
|
|
335
|
-
textElement.labelSize.width
|
|
388
|
+
textElement.labelSize.width,
|
|
336
389
|
);
|
|
337
390
|
const yCoordinate = textElements.slice(0, i + 1).reduce((prev, curr) => {
|
|
338
391
|
return prev + curr.dy;
|
|
@@ -354,12 +407,12 @@ const getChildBackgrounds = (calculatedProps, tspanValues) => {
|
|
|
354
407
|
width: textElement.widthWithPadding,
|
|
355
408
|
transform,
|
|
356
409
|
x: xCoord - padding.left,
|
|
357
|
-
y: yCoord
|
|
410
|
+
y: yCoord,
|
|
358
411
|
};
|
|
359
412
|
|
|
360
413
|
return React.cloneElement(
|
|
361
414
|
backgroundComponent,
|
|
362
|
-
defaults({}, backgroundComponent.props, backgroundProps)
|
|
415
|
+
defaults({}, backgroundComponent.props, backgroundProps),
|
|
363
416
|
);
|
|
364
417
|
});
|
|
365
418
|
};
|
|
@@ -417,10 +470,10 @@ const evaluateProps = (props) => {
|
|
|
417
470
|
const style = getStyles(props.style, assign({}, props, { text }));
|
|
418
471
|
const backgroundStyle = getBackgroundStyles(
|
|
419
472
|
props.backgroundStyle,
|
|
420
|
-
assign({}, props, { text, style })
|
|
473
|
+
assign({}, props, { text, style }),
|
|
421
474
|
);
|
|
422
475
|
const backgroundPadding = getBackgroundPadding(
|
|
423
|
-
assign({}, props, { text, style, backgroundStyle })
|
|
476
|
+
assign({}, props, { text, style, backgroundStyle }),
|
|
424
477
|
);
|
|
425
478
|
const id = Helpers.evaluateProp(props.id, props);
|
|
426
479
|
return assign({}, props, {
|
|
@@ -428,13 +481,13 @@ const evaluateProps = (props) => {
|
|
|
428
481
|
backgroundPadding,
|
|
429
482
|
style,
|
|
430
483
|
text,
|
|
431
|
-
id
|
|
484
|
+
id,
|
|
432
485
|
});
|
|
433
486
|
};
|
|
434
487
|
|
|
435
|
-
const getCalculatedProps = (props) => {
|
|
488
|
+
const getCalculatedProps = <T extends VictoryLabelProps>(props: T) => {
|
|
436
489
|
const ariaLabel = Helpers.evaluateProp(props.ariaLabel, props);
|
|
437
|
-
const style = getSingleValue(props.style);
|
|
490
|
+
const style = getSingleValue(props.style!);
|
|
438
491
|
const lineHeight = getLineHeight(props);
|
|
439
492
|
const direction = props.direction
|
|
440
493
|
? Helpers.evaluateProp(props.direction, props)
|
|
@@ -462,7 +515,7 @@ const getCalculatedProps = (props) => {
|
|
|
462
515
|
originalDy: props.dy,
|
|
463
516
|
transform,
|
|
464
517
|
x,
|
|
465
|
-
y
|
|
518
|
+
y,
|
|
466
519
|
});
|
|
467
520
|
};
|
|
468
521
|
|
|
@@ -485,8 +538,9 @@ const renderLabel = (calculatedProps, tspanValues) => {
|
|
|
485
538
|
id,
|
|
486
539
|
tabIndex,
|
|
487
540
|
tspanComponent,
|
|
488
|
-
textComponent
|
|
541
|
+
textComponent,
|
|
489
542
|
} = calculatedProps;
|
|
543
|
+
const userProps = UserProps.getSafeUserProps(calculatedProps);
|
|
490
544
|
|
|
491
545
|
const textProps = {
|
|
492
546
|
"aria-label": ariaLabel,
|
|
@@ -501,7 +555,8 @@ const renderLabel = (calculatedProps, tspanValues) => {
|
|
|
501
555
|
title,
|
|
502
556
|
desc: Helpers.evaluateProp(desc, calculatedProps),
|
|
503
557
|
tabIndex: Helpers.evaluateProp(tabIndex, calculatedProps),
|
|
504
|
-
id
|
|
558
|
+
id,
|
|
559
|
+
...userProps,
|
|
505
560
|
};
|
|
506
561
|
|
|
507
562
|
const tspans = text.map((line, i) => {
|
|
@@ -513,7 +568,7 @@ const renderLabel = (calculatedProps, tspanValues) => {
|
|
|
513
568
|
dy: getTSpanDy(tspanValues, calculatedProps, i),
|
|
514
569
|
textAnchor: currentStyle.textAnchor || textAnchor,
|
|
515
570
|
style: currentStyle,
|
|
516
|
-
children: line
|
|
571
|
+
children: line,
|
|
517
572
|
};
|
|
518
573
|
return React.cloneElement(tspanComponent, tspanProps);
|
|
519
574
|
});
|
|
@@ -521,21 +576,25 @@ const renderLabel = (calculatedProps, tspanValues) => {
|
|
|
521
576
|
return React.cloneElement(textComponent, textProps, tspans);
|
|
522
577
|
};
|
|
523
578
|
|
|
524
|
-
const VictoryLabel
|
|
579
|
+
export const VictoryLabel: {
|
|
580
|
+
role: string;
|
|
581
|
+
defaultStyles: typeof defaultStyles;
|
|
582
|
+
} & React.FC<VictoryLabelProps> = (props) => {
|
|
525
583
|
props = evaluateProps(props);
|
|
526
584
|
|
|
527
585
|
if (props.text === null || props.text === undefined) {
|
|
528
586
|
return null;
|
|
529
587
|
}
|
|
530
588
|
const calculatedProps = getCalculatedProps(props);
|
|
589
|
+
|
|
531
590
|
const { text, style, capHeight, backgroundPadding, lineHeight } =
|
|
532
591
|
calculatedProps;
|
|
533
592
|
|
|
534
|
-
const tspanValues = text.map((line, i) => {
|
|
535
|
-
const currentStyle = getSingleValue(style
|
|
593
|
+
const tspanValues = (text as string[]).map((line, i) => {
|
|
594
|
+
const currentStyle = getSingleValue(style!, i);
|
|
536
595
|
const capHeightPx = TextSize.convertLengthToPixels(
|
|
537
596
|
`${capHeight}em`,
|
|
538
|
-
currentStyle.fontSize
|
|
597
|
+
currentStyle.fontSize as number,
|
|
539
598
|
);
|
|
540
599
|
const currentLineHeight = getSingleValue(lineHeight, i);
|
|
541
600
|
return {
|
|
@@ -543,9 +602,10 @@ const VictoryLabel = (props) => {
|
|
|
543
602
|
fontSize: currentStyle.fontSize || defaultStyles.fontSize,
|
|
544
603
|
capHeight: capHeightPx,
|
|
545
604
|
text: line,
|
|
605
|
+
// @ts-expect-error TODO: This looks like a bug:
|
|
546
606
|
textSize: TextSize.approximateTextSize(line, currentStyle),
|
|
547
607
|
lineHeight: currentLineHeight,
|
|
548
|
-
backgroundPadding: getSingleValue(backgroundPadding, i)
|
|
608
|
+
backgroundPadding: getSingleValue(backgroundPadding, i),
|
|
549
609
|
};
|
|
550
610
|
});
|
|
551
611
|
|
|
@@ -554,13 +614,13 @@ const VictoryLabel = (props) => {
|
|
|
554
614
|
if (props.backgroundStyle) {
|
|
555
615
|
const backgroundElement = getBackgroundElement(
|
|
556
616
|
calculatedProps,
|
|
557
|
-
tspanValues
|
|
617
|
+
tspanValues,
|
|
558
618
|
);
|
|
559
619
|
const children = [backgroundElement, label];
|
|
560
620
|
const backgroundWithLabel = React.cloneElement(
|
|
561
|
-
props.groupComponent
|
|
621
|
+
props.groupComponent!,
|
|
562
622
|
{},
|
|
563
|
-
children
|
|
623
|
+
children,
|
|
564
624
|
);
|
|
565
625
|
|
|
566
626
|
return props.renderInPortal ? (
|
|
@@ -581,24 +641,25 @@ VictoryLabel.propTypes = {
|
|
|
581
641
|
angle: PropTypes.oneOfType([
|
|
582
642
|
PropTypes.string,
|
|
583
643
|
PropTypes.number,
|
|
584
|
-
PropTypes.func
|
|
644
|
+
PropTypes.func,
|
|
585
645
|
]),
|
|
586
646
|
ariaLabel: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),
|
|
587
647
|
backgroundComponent: PropTypes.element,
|
|
588
648
|
backgroundPadding: PropTypes.oneOfType([
|
|
589
649
|
PropTypes.number,
|
|
590
650
|
PropTypes.object,
|
|
591
|
-
PropTypes.array
|
|
651
|
+
PropTypes.array,
|
|
592
652
|
]),
|
|
593
653
|
backgroundStyle: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),
|
|
594
654
|
capHeight: PropTypes.oneOfType([
|
|
595
655
|
PropTypes.string,
|
|
596
656
|
CustomPropTypes.nonNegative,
|
|
597
|
-
PropTypes.func
|
|
657
|
+
PropTypes.func,
|
|
598
658
|
]),
|
|
599
659
|
className: PropTypes.string,
|
|
600
660
|
data: PropTypes.array,
|
|
601
661
|
datum: PropTypes.any,
|
|
662
|
+
// @ts-expect-error "Function is not assignable to string"
|
|
602
663
|
desc: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),
|
|
603
664
|
direction: PropTypes.oneOf(["rtl", "ltr", "inherit"]),
|
|
604
665
|
dx: PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.func]),
|
|
@@ -613,17 +674,17 @@ VictoryLabel.propTypes = {
|
|
|
613
674
|
PropTypes.string,
|
|
614
675
|
CustomPropTypes.nonNegative,
|
|
615
676
|
PropTypes.func,
|
|
616
|
-
PropTypes.array
|
|
677
|
+
PropTypes.array,
|
|
617
678
|
]),
|
|
618
679
|
origin: PropTypes.shape({
|
|
619
|
-
x: CustomPropTypes.nonNegative,
|
|
620
|
-
y: CustomPropTypes.nonNegative
|
|
680
|
+
x: CustomPropTypes.nonNegative.isRequired,
|
|
681
|
+
y: CustomPropTypes.nonNegative.isRequired,
|
|
621
682
|
}),
|
|
622
683
|
polar: PropTypes.bool,
|
|
623
684
|
renderInPortal: PropTypes.bool,
|
|
624
685
|
scale: PropTypes.shape({
|
|
625
686
|
x: CustomPropTypes.scale,
|
|
626
|
-
y: CustomPropTypes.scale
|
|
687
|
+
y: CustomPropTypes.scale,
|
|
627
688
|
}),
|
|
628
689
|
style: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),
|
|
629
690
|
tabIndex: PropTypes.oneOfType([PropTypes.number, PropTypes.func]),
|
|
@@ -631,26 +692,30 @@ VictoryLabel.propTypes = {
|
|
|
631
692
|
PropTypes.string,
|
|
632
693
|
PropTypes.number,
|
|
633
694
|
PropTypes.func,
|
|
634
|
-
PropTypes.array
|
|
695
|
+
PropTypes.array,
|
|
635
696
|
]),
|
|
697
|
+
// @ts-expect-error Function is not assignable to string"
|
|
636
698
|
textAnchor: PropTypes.oneOfType([
|
|
637
699
|
PropTypes.oneOf(["start", "middle", "end", "inherit"]),
|
|
638
|
-
PropTypes.func
|
|
700
|
+
PropTypes.func,
|
|
639
701
|
]),
|
|
640
702
|
textComponent: PropTypes.element,
|
|
641
703
|
title: PropTypes.string,
|
|
642
704
|
transform: PropTypes.oneOfType([
|
|
643
705
|
PropTypes.string,
|
|
644
706
|
PropTypes.object,
|
|
645
|
-
PropTypes.func
|
|
707
|
+
PropTypes.func,
|
|
646
708
|
]),
|
|
647
709
|
tspanComponent: PropTypes.element,
|
|
710
|
+
// @ts-expect-error Function is not assignable to string"
|
|
648
711
|
verticalAnchor: PropTypes.oneOfType([
|
|
649
712
|
PropTypes.oneOf(["start", "middle", "end"]),
|
|
650
|
-
PropTypes.func
|
|
713
|
+
PropTypes.func,
|
|
651
714
|
]),
|
|
715
|
+
// @ts-expect-error Number is not assignable to string
|
|
652
716
|
x: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
|
|
653
|
-
|
|
717
|
+
// @ts-expect-error Number is not assignable to string
|
|
718
|
+
y: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
|
|
654
719
|
};
|
|
655
720
|
|
|
656
721
|
VictoryLabel.defaultProps = {
|
|
@@ -660,7 +725,5 @@ VictoryLabel.defaultProps = {
|
|
|
660
725
|
textComponent: <Text />,
|
|
661
726
|
tspanComponent: <TSpan />,
|
|
662
727
|
capHeight: 0.71, // Magic number from d3.
|
|
663
|
-
lineHeight: 1
|
|
728
|
+
lineHeight: 1,
|
|
664
729
|
};
|
|
665
|
-
|
|
666
|
-
export default VictoryLabel;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
|
|
3
|
+
export interface PortalContextValue {
|
|
4
|
+
portalRegister(): number;
|
|
5
|
+
portalUpdate(key: number, element: React.ReactElement): void;
|
|
6
|
+
portalDeregister(key: number): void;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* The React context object consumers may use to access the context of the
|
|
11
|
+
* portal.
|
|
12
|
+
*/
|
|
13
|
+
export const PortalContext = React.createContext({} as PortalContextValue);
|
|
14
|
+
PortalContext.displayName = "PortalContext";
|
|
@@ -2,8 +2,20 @@ import React from "react";
|
|
|
2
2
|
import PropTypes from "prop-types";
|
|
3
3
|
import * as CustomPropTypes from "../victory-util/prop-types";
|
|
4
4
|
import { keys } from "lodash";
|
|
5
|
+
import { PortalContextValue } from "./portal-context";
|
|
6
|
+
|
|
7
|
+
export interface PortalProps {
|
|
8
|
+
className?: string;
|
|
9
|
+
height?: number;
|
|
10
|
+
style?: React.CSSProperties;
|
|
11
|
+
viewBox?: string;
|
|
12
|
+
width?: number;
|
|
13
|
+
}
|
|
5
14
|
|
|
6
|
-
export
|
|
15
|
+
export class Portal
|
|
16
|
+
extends React.Component<PortalProps>
|
|
17
|
+
implements PortalContextValue
|
|
18
|
+
{
|
|
7
19
|
static displayName = "Portal";
|
|
8
20
|
|
|
9
21
|
static propTypes = {
|
|
@@ -11,33 +23,32 @@ export default class Portal extends React.Component {
|
|
|
11
23
|
height: CustomPropTypes.nonNegative,
|
|
12
24
|
style: PropTypes.object,
|
|
13
25
|
viewBox: PropTypes.string,
|
|
14
|
-
width: CustomPropTypes.nonNegative
|
|
26
|
+
width: CustomPropTypes.nonNegative,
|
|
15
27
|
};
|
|
28
|
+
private readonly map: Record<string, React.ReactElement>;
|
|
29
|
+
private index: number;
|
|
16
30
|
|
|
17
|
-
constructor(props) {
|
|
31
|
+
constructor(props: PortalProps) {
|
|
18
32
|
super(props);
|
|
19
33
|
this.map = {};
|
|
20
34
|
this.index = 1;
|
|
21
|
-
this.portalUpdate = this.portalUpdate.bind(this);
|
|
22
|
-
this.portalRegister = this.portalRegister.bind(this);
|
|
23
|
-
this.portalDeregister = this.portalDeregister.bind(this);
|
|
24
35
|
}
|
|
25
36
|
|
|
26
|
-
portalRegister() {
|
|
37
|
+
public portalRegister = (): number => {
|
|
27
38
|
return ++this.index;
|
|
28
|
-
}
|
|
39
|
+
};
|
|
29
40
|
|
|
30
|
-
portalUpdate(key, element) {
|
|
41
|
+
public portalUpdate = (key: number, element: React.ReactElement) => {
|
|
31
42
|
this.map[key] = element;
|
|
32
43
|
this.forceUpdate();
|
|
33
|
-
}
|
|
44
|
+
};
|
|
34
45
|
|
|
35
|
-
portalDeregister(key) {
|
|
46
|
+
public portalDeregister = (key: number) => {
|
|
36
47
|
delete this.map[key];
|
|
37
48
|
this.forceUpdate();
|
|
38
|
-
}
|
|
49
|
+
};
|
|
39
50
|
|
|
40
|
-
getChildren() {
|
|
51
|
+
private getChildren() {
|
|
41
52
|
return keys(this.map).map((key) => {
|
|
42
53
|
const el = this.map[key];
|
|
43
54
|
return el ? React.cloneElement(el, { key }) : el;
|
|
@@ -3,23 +3,36 @@ import PropTypes from "prop-types";
|
|
|
3
3
|
import { defaults } from "lodash";
|
|
4
4
|
import * as Log from "../victory-util/log";
|
|
5
5
|
import * as Helpers from "../victory-util/helpers";
|
|
6
|
-
import PortalContext from "./portal-context";
|
|
6
|
+
import { PortalContext } from "./portal-context";
|
|
7
7
|
|
|
8
|
-
export
|
|
8
|
+
export interface VictoryPortalProps {
|
|
9
|
+
children?: React.ReactElement;
|
|
10
|
+
groupComponent?: React.ReactElement;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export interface VictoryPortal {
|
|
14
|
+
context: React.ContextType<typeof PortalContext>;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export class VictoryPortal extends React.Component<VictoryPortalProps> {
|
|
9
18
|
static displayName = "VictoryPortal";
|
|
10
19
|
|
|
11
20
|
static role = "portal";
|
|
12
21
|
|
|
13
22
|
static propTypes = {
|
|
14
23
|
children: PropTypes.node,
|
|
15
|
-
groupComponent: PropTypes.element
|
|
24
|
+
groupComponent: PropTypes.element,
|
|
16
25
|
};
|
|
17
26
|
|
|
18
27
|
static defaultProps = {
|
|
19
|
-
groupComponent: <g
|
|
28
|
+
groupComponent: <g />,
|
|
20
29
|
};
|
|
21
30
|
|
|
22
31
|
static contextType = PortalContext;
|
|
32
|
+
private checkedContext!: boolean;
|
|
33
|
+
private renderInPlace!: boolean;
|
|
34
|
+
private element!: React.ReactElement;
|
|
35
|
+
private portalKey!: number;
|
|
23
36
|
|
|
24
37
|
componentDidMount() {
|
|
25
38
|
if (!this.checkedContext) {
|
|
@@ -49,7 +62,7 @@ export default class VictoryPortal extends React.Component {
|
|
|
49
62
|
}
|
|
50
63
|
|
|
51
64
|
// Overridden in victory-core-native
|
|
52
|
-
renderPortal(child) {
|
|
65
|
+
renderPortal(child: React.ReactElement) {
|
|
53
66
|
if (this.renderInPlace) {
|
|
54
67
|
return child;
|
|
55
68
|
}
|
|
@@ -58,9 +71,11 @@ export default class VictoryPortal extends React.Component {
|
|
|
58
71
|
}
|
|
59
72
|
|
|
60
73
|
render() {
|
|
61
|
-
const children =
|
|
62
|
-
|
|
63
|
-
|
|
74
|
+
const children = (
|
|
75
|
+
Array.isArray(this.props.children)
|
|
76
|
+
? this.props.children[0]
|
|
77
|
+
: this.props.children
|
|
78
|
+
) as React.ReactElement;
|
|
64
79
|
const { groupComponent } = this.props;
|
|
65
80
|
const childProps = (children && children.props) || {};
|
|
66
81
|
const standardProps = childProps.groupComponent
|
|
@@ -69,7 +84,7 @@ export default class VictoryPortal extends React.Component {
|
|
|
69
84
|
const newProps = defaults(
|
|
70
85
|
standardProps,
|
|
71
86
|
childProps,
|
|
72
|
-
Helpers.omit(this.props, ["children", "groupComponent"])
|
|
87
|
+
Helpers.omit(this.props, ["children", "groupComponent"]),
|
|
73
88
|
);
|
|
74
89
|
const child = children && React.cloneElement(children, newProps);
|
|
75
90
|
return this.renderPortal(child);
|
|
@@ -3,8 +3,22 @@ import React from "react";
|
|
|
3
3
|
import PropTypes from "prop-types";
|
|
4
4
|
import * as Helpers from "../victory-util/helpers";
|
|
5
5
|
import { assign } from "lodash";
|
|
6
|
-
import
|
|
7
|
-
|
|
6
|
+
import {
|
|
7
|
+
CommonProps,
|
|
8
|
+
VictoryCommonPrimitiveProps,
|
|
9
|
+
} from "../victory-util/common-props";
|
|
10
|
+
import { Path } from "./path";
|
|
11
|
+
|
|
12
|
+
export interface ArcProps extends VictoryCommonPrimitiveProps {
|
|
13
|
+
closedPath?: boolean;
|
|
14
|
+
cx?: number;
|
|
15
|
+
cy?: number;
|
|
16
|
+
datum?: any;
|
|
17
|
+
endAngle?: number;
|
|
18
|
+
pathComponent?: React.ReactElement;
|
|
19
|
+
r?: number;
|
|
20
|
+
startAngle?: number;
|
|
21
|
+
}
|
|
8
22
|
|
|
9
23
|
const getArcPath = (props) => {
|
|
10
24
|
const { cx, cy, r, startAngle, endAngle, closedPath } = props;
|
|
@@ -41,17 +55,17 @@ const evaluateProps = (props) => {
|
|
|
41
55
|
const id = Helpers.evaluateProp(props.id, props);
|
|
42
56
|
const style = Helpers.evaluateStyle(
|
|
43
57
|
assign({ stroke: "black", fill: "none" }, props.style),
|
|
44
|
-
props
|
|
58
|
+
props,
|
|
45
59
|
);
|
|
46
60
|
const tabIndex = Helpers.evaluateProp(props.tabIndex, props);
|
|
47
61
|
|
|
48
62
|
return assign({}, props, { ariaLabel, desc, id, style, tabIndex });
|
|
49
63
|
};
|
|
50
64
|
|
|
51
|
-
const Arc = (props) => {
|
|
65
|
+
export const Arc = (props: ArcProps) => {
|
|
52
66
|
props = evaluateProps(props);
|
|
53
67
|
|
|
54
|
-
return React.cloneElement(props.pathComponent
|
|
68
|
+
return React.cloneElement(props.pathComponent!, {
|
|
55
69
|
...props.events,
|
|
56
70
|
"aria-label": props.ariaLabel,
|
|
57
71
|
d: getArcPath(props),
|
|
@@ -62,7 +76,7 @@ const Arc = (props) => {
|
|
|
62
76
|
role: props.role,
|
|
63
77
|
shapeRendering: props.shapeRendering,
|
|
64
78
|
transform: props.transform,
|
|
65
|
-
clipPath: props.clipPath
|
|
79
|
+
clipPath: props.clipPath,
|
|
66
80
|
});
|
|
67
81
|
};
|
|
68
82
|
|
|
@@ -75,13 +89,11 @@ Arc.propTypes = {
|
|
|
75
89
|
endAngle: PropTypes.number,
|
|
76
90
|
pathComponent: PropTypes.element,
|
|
77
91
|
r: PropTypes.number,
|
|
78
|
-
startAngle: PropTypes.number
|
|
92
|
+
startAngle: PropTypes.number,
|
|
79
93
|
};
|
|
80
94
|
|
|
81
95
|
Arc.defaultProps = {
|
|
82
96
|
pathComponent: <Path />,
|
|
83
97
|
role: "presentation",
|
|
84
|
-
shapeRendering: "auto"
|
|
98
|
+
shapeRendering: "auto",
|
|
85
99
|
};
|
|
86
|
-
|
|
87
|
-
export default Arc;
|
|
@@ -2,9 +2,23 @@ import React from "react";
|
|
|
2
2
|
import PropTypes from "prop-types";
|
|
3
3
|
import { assign } from "lodash";
|
|
4
4
|
import * as Helpers from "../victory-util/helpers";
|
|
5
|
-
import
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
import {
|
|
6
|
+
CommonProps,
|
|
7
|
+
VictoryCommonPrimitiveProps,
|
|
8
|
+
} from "../victory-util/common-props";
|
|
9
|
+
import { Rect } from "./rect";
|
|
10
|
+
import { Circle } from "./circle";
|
|
11
|
+
|
|
12
|
+
export interface BackgroundProps extends VictoryCommonPrimitiveProps {
|
|
13
|
+
circleComponent?: React.ReactElement;
|
|
14
|
+
height?: number;
|
|
15
|
+
rectComponent?: React.ReactElement;
|
|
16
|
+
rx?: number;
|
|
17
|
+
ry?: number;
|
|
18
|
+
width?: number;
|
|
19
|
+
x?: number;
|
|
20
|
+
y?: number;
|
|
21
|
+
}
|
|
8
22
|
|
|
9
23
|
const evaluateProps = (props) => {
|
|
10
24
|
/**
|
|
@@ -16,11 +30,11 @@ const evaluateProps = (props) => {
|
|
|
16
30
|
return assign({}, props, { id });
|
|
17
31
|
};
|
|
18
32
|
|
|
19
|
-
const Background = (props) => {
|
|
33
|
+
export const Background = (props: BackgroundProps) => {
|
|
20
34
|
props = evaluateProps(props);
|
|
21
35
|
|
|
22
36
|
return props.polar
|
|
23
|
-
? React.cloneElement(props.circleComponent
|
|
37
|
+
? React.cloneElement(props.circleComponent!, {
|
|
24
38
|
...props.events,
|
|
25
39
|
style: props.style,
|
|
26
40
|
role: props.role,
|
|
@@ -28,9 +42,9 @@ const Background = (props) => {
|
|
|
28
42
|
cx: props.x,
|
|
29
43
|
cy: props.y,
|
|
30
44
|
r: props.height,
|
|
31
|
-
className: props.className
|
|
45
|
+
className: props.className,
|
|
32
46
|
})
|
|
33
|
-
: React.cloneElement(props.rectComponent
|
|
47
|
+
: React.cloneElement(props.rectComponent!, {
|
|
34
48
|
...props.events,
|
|
35
49
|
style: props.style,
|
|
36
50
|
role: props.role,
|
|
@@ -41,7 +55,7 @@ const Background = (props) => {
|
|
|
41
55
|
ry: props.ry,
|
|
42
56
|
width: props.width,
|
|
43
57
|
height: props.height,
|
|
44
|
-
className: props.className
|
|
58
|
+
className: props.className,
|
|
45
59
|
});
|
|
46
60
|
};
|
|
47
61
|
|
|
@@ -54,14 +68,12 @@ Background.propTypes = {
|
|
|
54
68
|
ry: PropTypes.number,
|
|
55
69
|
width: PropTypes.number,
|
|
56
70
|
x: PropTypes.number,
|
|
57
|
-
y: PropTypes.number
|
|
71
|
+
y: PropTypes.number,
|
|
58
72
|
};
|
|
59
73
|
|
|
60
74
|
Background.defaultProps = {
|
|
61
75
|
circleComponent: <Circle />,
|
|
62
76
|
rectComponent: <Rect />,
|
|
63
77
|
role: "presentation",
|
|
64
|
-
shapeRendering: "auto"
|
|
78
|
+
shapeRendering: "auto",
|
|
65
79
|
};
|
|
66
|
-
|
|
67
|
-
export default Background;
|