victory-core 36.4.1 → 36.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/victory-core.js +14463 -11478
- package/dist/victory-core.min.js +1 -1
- package/dist/victory-core.min.js.LICENSE.txt +19 -0
- package/es/index.d.ts +18 -941
- package/es/index.js +18 -73
- package/es/types/callbacks.d.ts +37 -0
- package/es/types/callbacks.js +2 -0
- package/es/types/prop-types.d.ts +130 -0
- package/es/types/prop-types.js +2 -0
- package/es/victory-accessible-group/victory-accessible-group.d.ts +26 -0
- package/es/victory-accessible-group/victory-accessible-group.js +9 -16
- package/es/victory-animation/util.d.ts +67 -0
- package/es/victory-animation/util.js +7 -4
- package/es/victory-animation/victory-animation.d.ts +70 -0
- package/es/victory-animation/victory-animation.js +60 -67
- package/es/victory-clip-container/victory-clip-container.d.ts +77 -0
- package/es/victory-clip-container/victory-clip-container.js +16 -21
- package/es/victory-container/victory-container.d.ts +100 -0
- package/es/victory-container/victory-container.js +32 -31
- package/es/victory-label/victory-label.d.ts +62 -0
- package/es/victory-label/victory-label.js +14 -9
- package/es/victory-portal/portal-context.d.ts +12 -0
- package/es/victory-portal/portal-context.js +3 -3
- package/es/victory-portal/portal.d.ts +29 -0
- package/es/victory-portal/portal.js +26 -33
- package/es/victory-portal/victory-portal.d.ts +32 -0
- package/es/victory-portal/victory-portal.js +24 -22
- package/es/victory-primitives/arc.d.ts +50 -0
- package/es/victory-primitives/arc.js +4 -5
- package/es/victory-primitives/background.d.ts +51 -0
- package/es/victory-primitives/background.js +5 -6
- package/es/victory-primitives/border.d.ts +44 -0
- package/es/victory-primitives/border.js +4 -5
- package/es/victory-primitives/circle.d.ts +3 -0
- package/es/victory-primitives/circle.js +11 -7
- package/es/victory-primitives/clip-path.d.ts +15 -0
- package/es/victory-primitives/clip-path.js +6 -5
- package/es/victory-primitives/index.d.ts +15 -0
- package/es/victory-primitives/index.js +15 -0
- package/es/victory-primitives/line-segment.d.ts +46 -0
- package/es/victory-primitives/line-segment.js +4 -5
- package/es/victory-primitives/line.d.ts +3 -0
- package/es/victory-primitives/line.js +11 -7
- package/es/victory-primitives/path.d.ts +3 -0
- package/es/victory-primitives/path.js +9 -5
- package/es/victory-primitives/point.d.ts +49 -0
- package/es/victory-primitives/point.js +10 -19
- package/es/victory-primitives/rect.d.ts +3 -0
- package/es/victory-primitives/rect.js +11 -7
- package/es/victory-primitives/text.d.ts +17 -0
- package/es/victory-primitives/text.js +7 -5
- package/es/victory-primitives/tspan.d.ts +3 -0
- package/es/victory-primitives/tspan.js +7 -5
- package/es/victory-primitives/types.d.ts +8 -0
- package/es/victory-primitives/types.js +2 -0
- package/es/victory-primitives/whisker.d.ts +59 -0
- package/es/victory-primitives/whisker.js +4 -5
- package/es/victory-state/defaults.d.ts +3 -0
- package/es/victory-state/defaults.js +3 -0
- package/es/victory-state/helpers/get-axis-data.d.ts +3 -0
- package/es/victory-state/helpers/get-axis-data.js +15 -0
- package/es/victory-state/helpers/get-data.d.ts +15 -0
- package/es/victory-state/helpers/get-data.js +88 -0
- package/es/victory-state/helpers/get-domain.d.ts +6 -0
- package/es/victory-state/helpers/get-domain.js +68 -0
- package/es/victory-state/helpers/get-range.d.ts +6 -0
- package/es/victory-state/helpers/get-range.js +37 -0
- package/es/victory-state/helpers/get-scale.d.ts +6 -0
- package/es/victory-state/helpers/get-scale.js +59 -0
- package/es/victory-state/index.d.ts +3 -0
- package/es/victory-state/index.js +3 -0
- package/es/victory-state/types.d.ts +24 -0
- package/es/victory-state/types.js +2 -0
- package/es/victory-state/victory-provider.d.ts +19 -0
- package/es/victory-state/victory-provider.js +118 -0
- package/es/victory-theme/grayscale.d.ts +3 -0
- package/es/victory-theme/grayscale.js +3 -2
- package/es/victory-theme/material.d.ts +3 -0
- package/es/victory-theme/material.js +3 -2
- package/es/victory-theme/types.d.ts +239 -0
- package/es/victory-theme/types.js +2 -0
- package/es/victory-theme/victory-theme.d.ts +6 -0
- package/es/victory-theme/victory-theme.js +8 -6
- package/es/victory-transition/victory-transition.d.ts +60 -0
- package/es/victory-transition/victory-transition.js +20 -23
- package/es/victory-util/add-events.d.ts +106 -0
- package/es/victory-util/add-events.js +44 -34
- package/es/victory-util/axis.d.ts +51 -0
- package/es/victory-util/axis.js +9 -8
- package/es/victory-util/collection.d.ts +9 -0
- package/es/victory-util/collection.js +6 -6
- package/es/victory-util/common-props.d.ts +84 -0
- package/es/victory-util/common-props.js +29 -12
- package/es/victory-util/data.d.ts +75 -0
- package/es/victory-util/data.js +2 -3
- package/es/victory-util/default-transitions.d.ts +5 -0
- package/es/victory-util/default-transitions.js +2 -2
- package/es/victory-util/domain.d.ts +91 -0
- package/es/victory-util/domain.js +6 -4
- package/es/victory-util/events.d.ts +65 -0
- package/es/victory-util/events.js +13 -8
- package/es/victory-util/helpers.d.ts +61 -0
- package/es/victory-util/helpers.js +8 -6
- package/es/victory-util/hooks/index.d.ts +3 -0
- package/es/victory-util/hooks/index.js +2 -1
- package/es/victory-util/hooks/use-animation-state.js +2 -1
- package/es/victory-util/hooks/use-previous-props.d.ts +2 -0
- package/es/victory-util/hooks/use-previous-props.js +4 -3
- package/es/victory-util/immutable.d.ts +12 -0
- package/es/victory-util/immutable.js +5 -5
- package/es/victory-util/index.d.ts +29 -0
- package/es/victory-util/index.js +48 -0
- package/es/victory-util/label-helpers.d.ts +27 -0
- package/es/victory-util/label-helpers.js +2 -3
- package/es/victory-util/line-helpers.d.ts +5 -0
- package/es/victory-util/line-helpers.js +24 -6
- package/es/victory-util/log.d.ts +2 -0
- package/es/victory-util/log.js +2 -2
- package/es/victory-util/point-path-helpers.d.ts +10 -0
- package/es/victory-util/point-path-helpers.js +60 -61
- package/es/victory-util/prop-types.d.ts +51 -0
- package/es/victory-util/prop-types.js +35 -44
- package/es/victory-util/scale.d.ts +10 -0
- package/es/victory-util/scale.js +14 -6
- package/es/victory-util/selection.d.ts +25 -0
- package/es/victory-util/selection.js +25 -16
- package/es/victory-util/style.d.ts +19 -0
- package/es/victory-util/style.js +2 -3
- package/es/victory-util/textsize.d.ts +37 -0
- package/es/victory-util/textsize.js +9 -6
- package/es/victory-util/timer-context.d.ts +12 -0
- package/es/victory-util/timer-context.js +2 -1
- package/es/victory-util/timer.d.ts +17 -0
- package/es/victory-util/timer.js +15 -9
- package/es/victory-util/transitions.d.ts +49 -0
- package/es/victory-util/transitions.js +5 -4
- package/es/victory-util/type-helpers.d.ts +10 -0
- package/es/victory-util/type-helpers.js +28 -0
- package/es/victory-util/user-props.d.ts +21 -0
- package/es/victory-util/user-props.js +6 -5
- package/es/victory-util/with-container.d.ts +5 -0
- package/es/victory-util/with-container.js +32 -0
- package/es/victory-util/wrapper.d.ts +38 -0
- package/es/victory-util/wrapper.js +4 -3
- package/lib/index.d.ts +18 -941
- package/lib/index.js +224 -311
- package/lib/types/callbacks.d.ts +37 -0
- package/lib/types/callbacks.js +2 -0
- package/lib/types/prop-types.d.ts +130 -0
- package/lib/types/prop-types.js +2 -0
- package/lib/victory-accessible-group/victory-accessible-group.d.ts +26 -0
- package/lib/victory-accessible-group/victory-accessible-group.js +10 -15
- package/lib/victory-animation/util.d.ts +67 -0
- package/lib/victory-animation/util.js +7 -4
- package/lib/victory-animation/victory-animation.d.ts +70 -0
- package/lib/victory-animation/victory-animation.js +61 -65
- package/lib/victory-clip-container/victory-clip-container.d.ts +77 -0
- package/lib/victory-clip-container/victory-clip-container.js +20 -22
- package/lib/victory-container/victory-container.d.ts +100 -0
- package/lib/victory-container/victory-container.js +35 -31
- package/lib/victory-label/victory-label.d.ts +62 -0
- package/lib/victory-label/victory-label.js +20 -14
- package/lib/victory-portal/portal-context.d.ts +12 -0
- package/lib/victory-portal/portal-context.js +3 -3
- package/lib/victory-portal/portal.d.ts +29 -0
- package/lib/victory-portal/portal.js +27 -31
- package/lib/victory-portal/victory-portal.d.ts +32 -0
- package/lib/victory-portal/victory-portal.js +25 -20
- package/lib/victory-primitives/arc.d.ts +50 -0
- package/lib/victory-primitives/arc.js +7 -7
- package/lib/victory-primitives/background.d.ts +51 -0
- package/lib/victory-primitives/background.js +9 -9
- package/lib/victory-primitives/border.d.ts +44 -0
- package/lib/victory-primitives/border.js +7 -7
- package/lib/victory-primitives/circle.d.ts +3 -0
- package/lib/victory-primitives/circle.js +12 -6
- package/lib/victory-primitives/clip-path.d.ts +15 -0
- package/lib/victory-primitives/clip-path.js +7 -4
- package/lib/victory-primitives/index.d.ts +15 -0
- package/lib/victory-primitives/index.js +188 -0
- package/lib/victory-primitives/line-segment.d.ts +46 -0
- package/lib/victory-primitives/line-segment.js +7 -7
- package/lib/victory-primitives/line.d.ts +3 -0
- package/lib/victory-primitives/line.js +12 -6
- package/lib/victory-primitives/path.d.ts +3 -0
- package/lib/victory-primitives/path.js +10 -4
- package/lib/victory-primitives/point.d.ts +49 -0
- package/lib/victory-primitives/point.js +15 -22
- package/lib/victory-primitives/rect.d.ts +3 -0
- package/lib/victory-primitives/rect.js +12 -6
- package/lib/victory-primitives/text.d.ts +17 -0
- package/lib/victory-primitives/text.js +8 -4
- package/lib/victory-primitives/tspan.d.ts +3 -0
- package/lib/victory-primitives/tspan.js +8 -4
- package/lib/victory-primitives/types.d.ts +8 -0
- package/lib/victory-primitives/types.js +2 -0
- package/lib/victory-primitives/whisker.d.ts +59 -0
- package/lib/victory-primitives/whisker.js +7 -7
- package/lib/victory-state/defaults.d.ts +3 -0
- package/lib/victory-state/defaults.js +11 -0
- package/lib/victory-state/helpers/get-axis-data.d.ts +3 -0
- package/lib/victory-state/helpers/get-axis-data.js +23 -0
- package/lib/victory-state/helpers/get-data.d.ts +15 -0
- package/lib/victory-state/helpers/get-data.js +99 -0
- package/lib/victory-state/helpers/get-domain.d.ts +6 -0
- package/lib/victory-state/helpers/get-domain.js +82 -0
- package/lib/victory-state/helpers/get-range.d.ts +6 -0
- package/lib/victory-state/helpers/get-range.js +46 -0
- package/lib/victory-state/helpers/get-scale.d.ts +6 -0
- package/lib/victory-state/helpers/get-scale.js +74 -0
- package/lib/victory-state/index.d.ts +3 -0
- package/lib/victory-state/index.js +32 -0
- package/lib/victory-state/types.d.ts +24 -0
- package/lib/victory-state/types.js +2 -0
- package/lib/victory-state/victory-provider.d.ts +19 -0
- package/lib/victory-state/victory-provider.js +144 -0
- package/lib/victory-theme/grayscale.d.ts +3 -0
- package/lib/victory-theme/grayscale.js +4 -3
- package/lib/victory-theme/material.d.ts +3 -0
- package/lib/victory-theme/material.js +4 -3
- package/lib/victory-theme/types.d.ts +239 -0
- package/lib/victory-theme/types.js +2 -0
- package/lib/victory-theme/victory-theme.d.ts +6 -0
- package/lib/victory-theme/victory-theme.js +23 -8
- package/lib/victory-transition/victory-transition.d.ts +60 -0
- package/lib/victory-transition/victory-transition.js +22 -23
- package/lib/victory-util/add-events.d.ts +106 -0
- package/lib/victory-util/add-events.js +48 -40
- package/lib/victory-util/axis.d.ts +51 -0
- package/lib/victory-util/axis.js +8 -6
- package/lib/victory-util/collection.d.ts +9 -0
- package/lib/victory-util/collection.js +6 -6
- package/lib/victory-util/common-props.d.ts +84 -0
- package/lib/victory-util/common-props.js +27 -12
- package/lib/victory-util/data.d.ts +75 -0
- package/lib/victory-util/data.js +2 -1
- package/lib/victory-util/default-transitions.d.ts +5 -0
- package/lib/victory-util/default-transitions.js +2 -2
- package/lib/victory-util/domain.d.ts +91 -0
- package/lib/victory-util/domain.js +6 -2
- package/lib/victory-util/events.d.ts +65 -0
- package/lib/victory-util/events.js +13 -9
- package/lib/victory-util/helpers.d.ts +61 -0
- package/lib/victory-util/helpers.js +8 -6
- package/lib/victory-util/hooks/index.d.ts +3 -0
- package/lib/victory-util/hooks/index.js +2 -1
- package/lib/victory-util/hooks/use-animation-state.js +2 -1
- package/lib/victory-util/hooks/use-previous-props.d.ts +2 -0
- package/lib/victory-util/hooks/use-previous-props.js +5 -6
- package/lib/victory-util/immutable.d.ts +12 -0
- package/lib/victory-util/immutable.js +5 -6
- package/lib/victory-util/index.d.ts +29 -0
- package/lib/victory-util/index.js +181 -0
- package/lib/victory-util/label-helpers.d.ts +27 -0
- package/lib/victory-util/label-helpers.js +2 -3
- package/lib/victory-util/line-helpers.d.ts +5 -0
- package/lib/victory-util/line-helpers.js +28 -7
- package/lib/victory-util/log.d.ts +2 -0
- package/lib/victory-util/log.js +2 -2
- package/lib/victory-util/point-path-helpers.d.ts +10 -0
- package/lib/victory-util/point-path-helpers.js +87 -73
- package/lib/victory-util/prop-types.d.ts +51 -0
- package/lib/victory-util/prop-types.js +36 -44
- package/lib/victory-util/scale.d.ts +10 -0
- package/lib/victory-util/scale.js +14 -5
- package/lib/victory-util/selection.d.ts +25 -0
- package/lib/victory-util/selection.js +25 -21
- package/lib/victory-util/style.d.ts +19 -0
- package/lib/victory-util/style.js +2 -3
- package/lib/victory-util/textsize.d.ts +37 -0
- package/lib/victory-util/textsize.js +9 -6
- package/lib/victory-util/timer-context.d.ts +12 -0
- package/lib/victory-util/timer-context.js +2 -1
- package/lib/victory-util/timer.d.ts +17 -0
- package/lib/victory-util/timer.js +15 -9
- package/lib/victory-util/transitions.d.ts +49 -0
- package/lib/victory-util/transitions.js +5 -4
- package/lib/victory-util/type-helpers.d.ts +10 -0
- package/lib/victory-util/type-helpers.js +45 -0
- package/lib/victory-util/user-props.d.ts +21 -0
- package/lib/victory-util/user-props.js +6 -5
- package/lib/victory-util/with-container.d.ts +5 -0
- package/lib/victory-util/with-container.js +44 -0
- package/lib/victory-util/wrapper.d.ts +38 -0
- package/lib/victory-util/wrapper.js +4 -3
- package/package.json +4 -4
- package/src/index.ts +17 -0
- package/src/types/callbacks.ts +53 -0
- package/src/types/prop-types.ts +195 -0
- package/src/victory-accessible-group/{victory-accessible-group.js → victory-accessible-group.tsx} +13 -6
- package/src/victory-animation/{util.js → util.ts} +6 -4
- package/src/victory-animation/{victory-animation.js → victory-animation.tsx} +100 -23
- package/src/victory-clip-container/{victory-clip-container.js → victory-clip-container.tsx} +52 -28
- package/src/victory-container/{victory-container.js → victory-container.tsx} +86 -42
- package/src/victory-label/{victory-label.js → victory-label.tsx} +108 -49
- package/src/victory-portal/portal-context.ts +14 -0
- package/src/victory-portal/{portal.js → portal.tsx} +24 -13
- package/src/victory-portal/{victory-portal.js → victory-portal.tsx} +24 -9
- package/src/victory-primitives/{arc.js → arc.tsx} +22 -10
- package/src/victory-primitives/{background.js → background.tsx} +24 -12
- package/src/victory-primitives/{border.js → border.tsx} +19 -10
- package/src/victory-primitives/{circle.js → circle.tsx} +4 -3
- package/src/victory-primitives/clip-path.tsx +25 -0
- package/src/victory-primitives/index.ts +14 -0
- package/src/victory-primitives/{line-segment.js → line-segment.tsx} +20 -10
- package/src/victory-primitives/{line.js → line.tsx} +4 -3
- package/src/victory-primitives/{path.js → path.tsx} +4 -3
- package/src/victory-primitives/{point.js → point.tsx} +33 -26
- package/src/victory-primitives/{rect.js → rect.tsx} +4 -2
- package/src/victory-primitives/{text.js → text.tsx} +10 -4
- package/src/victory-primitives/tspan.tsx +7 -0
- package/src/victory-primitives/types.ts +19 -0
- package/src/victory-primitives/{whisker.js → whisker.tsx} +34 -19
- package/src/victory-state/defaults.ts +2 -0
- package/src/victory-state/helpers/get-axis-data.ts +14 -0
- package/src/victory-state/helpers/get-data.ts +79 -0
- package/src/victory-state/helpers/get-domain.ts +62 -0
- package/src/victory-state/helpers/get-range.ts +39 -0
- package/src/victory-state/helpers/get-scale.ts +64 -0
- package/src/victory-state/index.ts +2 -0
- package/src/victory-state/types.ts +32 -0
- package/src/victory-state/victory-provider.tsx +116 -0
- package/src/victory-theme/{grayscale.js → grayscale.tsx} +63 -62
- package/src/victory-theme/{material.js → material.tsx} +68 -67
- package/src/victory-theme/types.ts +257 -0
- package/src/victory-theme/victory-theme.tsx +5 -0
- package/src/victory-transition/{victory-transition.js → victory-transition.tsx} +82 -33
- package/src/victory-util/{add-events.js → add-events.tsx} +142 -60
- package/src/victory-util/{axis.js → axis.tsx} +17 -19
- package/src/victory-util/{collection.js → collection.tsx} +14 -11
- package/src/victory-util/common-props.tsx +307 -0
- package/src/victory-util/{data.js → data.ts} +14 -11
- package/src/victory-util/{default-transitions.js → default-transitions.ts} +20 -19
- package/src/victory-util/{domain.js → domain.ts} +26 -24
- package/src/victory-util/{events.js → events.ts} +83 -32
- package/src/victory-util/{helpers.js → helpers.ts} +41 -23
- package/src/victory-util/hooks/{index.js → index.ts} +0 -0
- package/src/victory-util/hooks/use-animation-state.js +10 -10
- package/src/victory-util/hooks/use-previous-props.ts +9 -0
- package/src/victory-util/{immutable.js → immutable.ts} +14 -11
- package/src/victory-util/index.ts +28 -0
- package/src/victory-util/{label-helpers.js → label-helpers.ts} +7 -8
- package/src/victory-util/line-helpers.ts +104 -0
- package/src/victory-util/{log.js → log.ts} +1 -2
- package/src/victory-util/point-path-helpers.ts +119 -0
- package/src/victory-util/{prop-types.js → prop-types.ts} +103 -102
- package/src/victory-util/{scale.js → scale.ts} +29 -17
- package/src/victory-util/selection.ts +158 -0
- package/src/victory-util/{style.js → style.ts} +3 -4
- package/src/victory-util/{textsize.js → textsize.ts} +32 -17
- package/src/victory-util/{timer-context.js → timer-context.ts} +1 -1
- package/src/victory-util/{timer.js → timer.ts} +16 -6
- package/src/victory-util/{transitions.js → transitions.ts} +50 -23
- package/src/victory-util/type-helpers.ts +50 -0
- package/src/victory-util/{user-props.js → user-props.ts} +16 -11
- package/src/victory-util/with-container.tsx +41 -0
- package/src/victory-util/{wrapper.js → wrapper.tsx} +38 -34
- package/src/index.d.ts +0 -941
- package/src/index.js +0 -51
- package/src/victory-portal/portal-context.js +0 -10
- package/src/victory-primitives/clip-path.js +0 -18
- package/src/victory-primitives/tspan.js +0 -5
- package/src/victory-theme/victory-theme.js +0 -7
- package/src/victory-util/common-props.js +0 -197
- package/src/victory-util/hooks/use-previous-props.js +0 -9
- package/src/victory-util/line-helpers.js +0 -54
- package/src/victory-util/point-path-helpers.js +0 -121
- package/src/victory-util/selection.js +0 -99
|
@@ -2,10 +2,10 @@
|
|
|
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";
|
|
@@ -13,13 +13,65 @@ 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
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
|
+
}
|
|
16
68
|
|
|
17
69
|
const defaultStyles = {
|
|
18
70
|
fill: "#252525",
|
|
19
71
|
fontSize: 14,
|
|
20
72
|
fontFamily:
|
|
21
73
|
"'Gill Sans', 'Gill Sans MT', 'Seravek', 'Trebuchet MS', sans-serif",
|
|
22
|
-
stroke: "transparent"
|
|
74
|
+
stroke: "transparent",
|
|
23
75
|
};
|
|
24
76
|
|
|
25
77
|
const getPosition = (props, dimension) => {
|
|
@@ -48,7 +100,7 @@ const getFontSize = (style) => {
|
|
|
48
100
|
return defaultStyles.fontSize;
|
|
49
101
|
};
|
|
50
102
|
|
|
51
|
-
const getSingleValue = (prop, index = 0) => {
|
|
103
|
+
const getSingleValue = <T,>(prop: T | T[], index = 0): T => {
|
|
52
104
|
return Array.isArray(prop) ? prop[index] || prop[0] : prop;
|
|
53
105
|
};
|
|
54
106
|
|
|
@@ -65,7 +117,7 @@ const getStyles = (style, props) => {
|
|
|
65
117
|
const baseStyles = Helpers.evaluateStyle(style, props);
|
|
66
118
|
return {
|
|
67
119
|
// Font size is necessary to calculate the y position of the label
|
|
68
|
-
fontSize: getFontSize(baseStyles)
|
|
120
|
+
fontSize: getFontSize(baseStyles),
|
|
69
121
|
};
|
|
70
122
|
}
|
|
71
123
|
const getSingleStyle = (s) => {
|
|
@@ -131,10 +183,10 @@ const getDy = (props, verticalAnchor, lineHeight) => {
|
|
|
131
183
|
? Helpers.evaluateProp(verticalAnchor, props)
|
|
132
184
|
: "middle";
|
|
133
185
|
const fontSizes = [...Array(length).keys()].map(
|
|
134
|
-
(i) => getSingleValue(props.style, i).fontSize
|
|
186
|
+
(i) => getSingleValue(props.style, i).fontSize,
|
|
135
187
|
);
|
|
136
188
|
const lineHeights = [...Array(length).keys()].map((i) =>
|
|
137
|
-
getSingleValue(lineHeight, i)
|
|
189
|
+
getSingleValue(lineHeight, i),
|
|
138
190
|
);
|
|
139
191
|
|
|
140
192
|
if (anchor === "start") {
|
|
@@ -221,7 +273,7 @@ const getFullBackground = (calculatedProps, tspanValues) => {
|
|
|
221
273
|
backgroundStyle,
|
|
222
274
|
inline,
|
|
223
275
|
backgroundPadding,
|
|
224
|
-
capHeight
|
|
276
|
+
capHeight,
|
|
225
277
|
} = calculatedProps;
|
|
226
278
|
const textSizes = tspanValues.map((tspan) => {
|
|
227
279
|
return tspan.textSize;
|
|
@@ -255,12 +307,12 @@ const getFullBackground = (calculatedProps, tspanValues) => {
|
|
|
255
307
|
x: inline
|
|
256
308
|
? xCoordinate - backgroundPadding.left
|
|
257
309
|
: xCoordinate + dx - backgroundPadding.left,
|
|
258
|
-
y: yCoordinate
|
|
310
|
+
y: yCoordinate,
|
|
259
311
|
};
|
|
260
312
|
|
|
261
313
|
return React.cloneElement(
|
|
262
314
|
backgroundComponent,
|
|
263
|
-
defaults({}, backgroundComponent.props, backgroundProps)
|
|
315
|
+
defaults({}, backgroundComponent.props, backgroundProps),
|
|
264
316
|
);
|
|
265
317
|
};
|
|
266
318
|
|
|
@@ -299,7 +351,7 @@ const getChildBackgrounds = (calculatedProps, tspanValues) => {
|
|
|
299
351
|
backgroundPadding,
|
|
300
352
|
backgroundComponent,
|
|
301
353
|
inline,
|
|
302
|
-
y
|
|
354
|
+
y,
|
|
303
355
|
} = calculatedProps;
|
|
304
356
|
|
|
305
357
|
const textElements = tspanValues.map((current, i) => {
|
|
@@ -326,14 +378,14 @@ const getChildBackgrounds = (calculatedProps, tspanValues) => {
|
|
|
326
378
|
labelSize.width + padding.left + padding.right + xOffset,
|
|
327
379
|
y,
|
|
328
380
|
fontSize: current.fontSize,
|
|
329
|
-
dy: childDy
|
|
381
|
+
dy: childDy,
|
|
330
382
|
};
|
|
331
383
|
});
|
|
332
384
|
|
|
333
385
|
return textElements.map((textElement, i) => {
|
|
334
386
|
const xCoordinate = getXCoordinate(
|
|
335
387
|
calculatedProps,
|
|
336
|
-
textElement.labelSize.width
|
|
388
|
+
textElement.labelSize.width,
|
|
337
389
|
);
|
|
338
390
|
const yCoordinate = textElements.slice(0, i + 1).reduce((prev, curr) => {
|
|
339
391
|
return prev + curr.dy;
|
|
@@ -355,12 +407,12 @@ const getChildBackgrounds = (calculatedProps, tspanValues) => {
|
|
|
355
407
|
width: textElement.widthWithPadding,
|
|
356
408
|
transform,
|
|
357
409
|
x: xCoord - padding.left,
|
|
358
|
-
y: yCoord
|
|
410
|
+
y: yCoord,
|
|
359
411
|
};
|
|
360
412
|
|
|
361
413
|
return React.cloneElement(
|
|
362
414
|
backgroundComponent,
|
|
363
|
-
defaults({}, backgroundComponent.props, backgroundProps)
|
|
415
|
+
defaults({}, backgroundComponent.props, backgroundProps),
|
|
364
416
|
);
|
|
365
417
|
});
|
|
366
418
|
};
|
|
@@ -418,10 +470,10 @@ const evaluateProps = (props) => {
|
|
|
418
470
|
const style = getStyles(props.style, assign({}, props, { text }));
|
|
419
471
|
const backgroundStyle = getBackgroundStyles(
|
|
420
472
|
props.backgroundStyle,
|
|
421
|
-
assign({}, props, { text, style })
|
|
473
|
+
assign({}, props, { text, style }),
|
|
422
474
|
);
|
|
423
475
|
const backgroundPadding = getBackgroundPadding(
|
|
424
|
-
assign({}, props, { text, style, backgroundStyle })
|
|
476
|
+
assign({}, props, { text, style, backgroundStyle }),
|
|
425
477
|
);
|
|
426
478
|
const id = Helpers.evaluateProp(props.id, props);
|
|
427
479
|
return assign({}, props, {
|
|
@@ -429,13 +481,13 @@ const evaluateProps = (props) => {
|
|
|
429
481
|
backgroundPadding,
|
|
430
482
|
style,
|
|
431
483
|
text,
|
|
432
|
-
id
|
|
484
|
+
id,
|
|
433
485
|
});
|
|
434
486
|
};
|
|
435
487
|
|
|
436
|
-
const getCalculatedProps = (props) => {
|
|
488
|
+
const getCalculatedProps = <T extends VictoryLabelProps>(props: T) => {
|
|
437
489
|
const ariaLabel = Helpers.evaluateProp(props.ariaLabel, props);
|
|
438
|
-
const style = getSingleValue(props.style);
|
|
490
|
+
const style = getSingleValue(props.style!);
|
|
439
491
|
const lineHeight = getLineHeight(props);
|
|
440
492
|
const direction = props.direction
|
|
441
493
|
? Helpers.evaluateProp(props.direction, props)
|
|
@@ -463,7 +515,7 @@ const getCalculatedProps = (props) => {
|
|
|
463
515
|
originalDy: props.dy,
|
|
464
516
|
transform,
|
|
465
517
|
x,
|
|
466
|
-
y
|
|
518
|
+
y,
|
|
467
519
|
});
|
|
468
520
|
};
|
|
469
521
|
|
|
@@ -486,7 +538,7 @@ const renderLabel = (calculatedProps, tspanValues) => {
|
|
|
486
538
|
id,
|
|
487
539
|
tabIndex,
|
|
488
540
|
tspanComponent,
|
|
489
|
-
textComponent
|
|
541
|
+
textComponent,
|
|
490
542
|
} = calculatedProps;
|
|
491
543
|
const userProps = UserProps.getSafeUserProps(calculatedProps);
|
|
492
544
|
|
|
@@ -504,7 +556,7 @@ const renderLabel = (calculatedProps, tspanValues) => {
|
|
|
504
556
|
desc: Helpers.evaluateProp(desc, calculatedProps),
|
|
505
557
|
tabIndex: Helpers.evaluateProp(tabIndex, calculatedProps),
|
|
506
558
|
id,
|
|
507
|
-
...userProps
|
|
559
|
+
...userProps,
|
|
508
560
|
};
|
|
509
561
|
|
|
510
562
|
const tspans = text.map((line, i) => {
|
|
@@ -516,7 +568,7 @@ const renderLabel = (calculatedProps, tspanValues) => {
|
|
|
516
568
|
dy: getTSpanDy(tspanValues, calculatedProps, i),
|
|
517
569
|
textAnchor: currentStyle.textAnchor || textAnchor,
|
|
518
570
|
style: currentStyle,
|
|
519
|
-
children: line
|
|
571
|
+
children: line,
|
|
520
572
|
};
|
|
521
573
|
return React.cloneElement(tspanComponent, tspanProps);
|
|
522
574
|
});
|
|
@@ -524,7 +576,10 @@ const renderLabel = (calculatedProps, tspanValues) => {
|
|
|
524
576
|
return React.cloneElement(textComponent, textProps, tspans);
|
|
525
577
|
};
|
|
526
578
|
|
|
527
|
-
const VictoryLabel
|
|
579
|
+
export const VictoryLabel: {
|
|
580
|
+
role: string;
|
|
581
|
+
defaultStyles: typeof defaultStyles;
|
|
582
|
+
} & React.FC<VictoryLabelProps> = (props) => {
|
|
528
583
|
props = evaluateProps(props);
|
|
529
584
|
|
|
530
585
|
if (props.text === null || props.text === undefined) {
|
|
@@ -535,11 +590,11 @@ const VictoryLabel = (props) => {
|
|
|
535
590
|
const { text, style, capHeight, backgroundPadding, lineHeight } =
|
|
536
591
|
calculatedProps;
|
|
537
592
|
|
|
538
|
-
const tspanValues = text.map((line, i) => {
|
|
539
|
-
const currentStyle = getSingleValue(style
|
|
593
|
+
const tspanValues = (text as string[]).map((line, i) => {
|
|
594
|
+
const currentStyle = getSingleValue(style!, i);
|
|
540
595
|
const capHeightPx = TextSize.convertLengthToPixels(
|
|
541
596
|
`${capHeight}em`,
|
|
542
|
-
currentStyle.fontSize
|
|
597
|
+
currentStyle.fontSize as number,
|
|
543
598
|
);
|
|
544
599
|
const currentLineHeight = getSingleValue(lineHeight, i);
|
|
545
600
|
return {
|
|
@@ -547,9 +602,10 @@ const VictoryLabel = (props) => {
|
|
|
547
602
|
fontSize: currentStyle.fontSize || defaultStyles.fontSize,
|
|
548
603
|
capHeight: capHeightPx,
|
|
549
604
|
text: line,
|
|
605
|
+
// @ts-expect-error TODO: This looks like a bug:
|
|
550
606
|
textSize: TextSize.approximateTextSize(line, currentStyle),
|
|
551
607
|
lineHeight: currentLineHeight,
|
|
552
|
-
backgroundPadding: getSingleValue(backgroundPadding, i)
|
|
608
|
+
backgroundPadding: getSingleValue(backgroundPadding, i),
|
|
553
609
|
};
|
|
554
610
|
});
|
|
555
611
|
|
|
@@ -558,13 +614,13 @@ const VictoryLabel = (props) => {
|
|
|
558
614
|
if (props.backgroundStyle) {
|
|
559
615
|
const backgroundElement = getBackgroundElement(
|
|
560
616
|
calculatedProps,
|
|
561
|
-
tspanValues
|
|
617
|
+
tspanValues,
|
|
562
618
|
);
|
|
563
619
|
const children = [backgroundElement, label];
|
|
564
620
|
const backgroundWithLabel = React.cloneElement(
|
|
565
|
-
props.groupComponent
|
|
621
|
+
props.groupComponent!,
|
|
566
622
|
{},
|
|
567
|
-
children
|
|
623
|
+
children,
|
|
568
624
|
);
|
|
569
625
|
|
|
570
626
|
return props.renderInPortal ? (
|
|
@@ -585,24 +641,25 @@ VictoryLabel.propTypes = {
|
|
|
585
641
|
angle: PropTypes.oneOfType([
|
|
586
642
|
PropTypes.string,
|
|
587
643
|
PropTypes.number,
|
|
588
|
-
PropTypes.func
|
|
644
|
+
PropTypes.func,
|
|
589
645
|
]),
|
|
590
646
|
ariaLabel: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),
|
|
591
647
|
backgroundComponent: PropTypes.element,
|
|
592
648
|
backgroundPadding: PropTypes.oneOfType([
|
|
593
649
|
PropTypes.number,
|
|
594
650
|
PropTypes.object,
|
|
595
|
-
PropTypes.array
|
|
651
|
+
PropTypes.array,
|
|
596
652
|
]),
|
|
597
653
|
backgroundStyle: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),
|
|
598
654
|
capHeight: PropTypes.oneOfType([
|
|
599
655
|
PropTypes.string,
|
|
600
656
|
CustomPropTypes.nonNegative,
|
|
601
|
-
PropTypes.func
|
|
657
|
+
PropTypes.func,
|
|
602
658
|
]),
|
|
603
659
|
className: PropTypes.string,
|
|
604
660
|
data: PropTypes.array,
|
|
605
661
|
datum: PropTypes.any,
|
|
662
|
+
// @ts-expect-error "Function is not assignable to string"
|
|
606
663
|
desc: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),
|
|
607
664
|
direction: PropTypes.oneOf(["rtl", "ltr", "inherit"]),
|
|
608
665
|
dx: PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.func]),
|
|
@@ -617,17 +674,17 @@ VictoryLabel.propTypes = {
|
|
|
617
674
|
PropTypes.string,
|
|
618
675
|
CustomPropTypes.nonNegative,
|
|
619
676
|
PropTypes.func,
|
|
620
|
-
PropTypes.array
|
|
677
|
+
PropTypes.array,
|
|
621
678
|
]),
|
|
622
679
|
origin: PropTypes.shape({
|
|
623
|
-
x: CustomPropTypes.nonNegative,
|
|
624
|
-
y: CustomPropTypes.nonNegative
|
|
680
|
+
x: CustomPropTypes.nonNegative.isRequired,
|
|
681
|
+
y: CustomPropTypes.nonNegative.isRequired,
|
|
625
682
|
}),
|
|
626
683
|
polar: PropTypes.bool,
|
|
627
684
|
renderInPortal: PropTypes.bool,
|
|
628
685
|
scale: PropTypes.shape({
|
|
629
686
|
x: CustomPropTypes.scale,
|
|
630
|
-
y: CustomPropTypes.scale
|
|
687
|
+
y: CustomPropTypes.scale,
|
|
631
688
|
}),
|
|
632
689
|
style: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),
|
|
633
690
|
tabIndex: PropTypes.oneOfType([PropTypes.number, PropTypes.func]),
|
|
@@ -635,26 +692,30 @@ VictoryLabel.propTypes = {
|
|
|
635
692
|
PropTypes.string,
|
|
636
693
|
PropTypes.number,
|
|
637
694
|
PropTypes.func,
|
|
638
|
-
PropTypes.array
|
|
695
|
+
PropTypes.array,
|
|
639
696
|
]),
|
|
697
|
+
// @ts-expect-error Function is not assignable to string"
|
|
640
698
|
textAnchor: PropTypes.oneOfType([
|
|
641
699
|
PropTypes.oneOf(["start", "middle", "end", "inherit"]),
|
|
642
|
-
PropTypes.func
|
|
700
|
+
PropTypes.func,
|
|
643
701
|
]),
|
|
644
702
|
textComponent: PropTypes.element,
|
|
645
703
|
title: PropTypes.string,
|
|
646
704
|
transform: PropTypes.oneOfType([
|
|
647
705
|
PropTypes.string,
|
|
648
706
|
PropTypes.object,
|
|
649
|
-
PropTypes.func
|
|
707
|
+
PropTypes.func,
|
|
650
708
|
]),
|
|
651
709
|
tspanComponent: PropTypes.element,
|
|
710
|
+
// @ts-expect-error Function is not assignable to string"
|
|
652
711
|
verticalAnchor: PropTypes.oneOfType([
|
|
653
712
|
PropTypes.oneOf(["start", "middle", "end"]),
|
|
654
|
-
PropTypes.func
|
|
713
|
+
PropTypes.func,
|
|
655
714
|
]),
|
|
715
|
+
// @ts-expect-error Number is not assignable to string
|
|
656
716
|
x: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
|
|
657
|
-
|
|
717
|
+
// @ts-expect-error Number is not assignable to string
|
|
718
|
+
y: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
|
|
658
719
|
};
|
|
659
720
|
|
|
660
721
|
VictoryLabel.defaultProps = {
|
|
@@ -664,7 +725,5 @@ VictoryLabel.defaultProps = {
|
|
|
664
725
|
textComponent: <Text />,
|
|
665
726
|
tspanComponent: <TSpan />,
|
|
666
727
|
capHeight: 0.71, // Magic number from d3.
|
|
667
|
-
lineHeight: 1
|
|
728
|
+
lineHeight: 1,
|
|
668
729
|
};
|
|
669
|
-
|
|
670
|
-
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;
|