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
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { AxisType, Padding, RangeTuple } from "../../types/prop-types";
|
|
2
|
+
import { getPadding } from "../../victory-util/helpers";
|
|
3
|
+
import { getValueForAxis, isTuple } from "../../victory-util/type-helpers";
|
|
4
|
+
import { VictoryProviderProps } from "../types";
|
|
5
|
+
|
|
6
|
+
type RangeProps = Pick<
|
|
7
|
+
VictoryProviderProps,
|
|
8
|
+
"range" | "padding" | "height" | "width"
|
|
9
|
+
>;
|
|
10
|
+
|
|
11
|
+
// TODO: Should we store these defaults somewhere?
|
|
12
|
+
const DEFAULT_HEIGHT = 300;
|
|
13
|
+
const DEFAULT_WIDTH = 450;
|
|
14
|
+
|
|
15
|
+
// TODO: This does not include polar range
|
|
16
|
+
export function getRange(
|
|
17
|
+
{
|
|
18
|
+
range,
|
|
19
|
+
height = DEFAULT_HEIGHT,
|
|
20
|
+
width = DEFAULT_WIDTH,
|
|
21
|
+
...props
|
|
22
|
+
}: RangeProps,
|
|
23
|
+
axis: AxisType,
|
|
24
|
+
) {
|
|
25
|
+
const rangeFromProps = getValueForAxis<RangeTuple>(range, axis);
|
|
26
|
+
|
|
27
|
+
if (isTuple(rangeFromProps)) {
|
|
28
|
+
return rangeFromProps;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// TODO: Convert this to TS
|
|
32
|
+
const padding = getPadding({ padding: props.padding }) as Padding;
|
|
33
|
+
const rangeForAxis = {
|
|
34
|
+
x: [padding.left, width - padding.right],
|
|
35
|
+
y: [height - padding.top, padding.bottom],
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
return rangeForAxis[axis];
|
|
39
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import {
|
|
2
|
+
scaleLinear,
|
|
3
|
+
scaleTime,
|
|
4
|
+
scaleLog,
|
|
5
|
+
scaleSqrt,
|
|
6
|
+
} from "victory-vendor/d3-scale";
|
|
7
|
+
import { AxisType, D3ScaleFn, ScalePropType } from "../../types/prop-types";
|
|
8
|
+
import * as Collection from "../../victory-util/collection";
|
|
9
|
+
import { getValueForAxis, isFunction } from "../../victory-util/type-helpers";
|
|
10
|
+
import { VictoryProviderProps } from "../types";
|
|
11
|
+
import { getAxisData } from "./get-axis-data";
|
|
12
|
+
|
|
13
|
+
type Scale = ScalePropType | D3ScaleFn;
|
|
14
|
+
|
|
15
|
+
type ScaleProps = Pick<VictoryProviderProps, "data" | "scale">;
|
|
16
|
+
|
|
17
|
+
const DEFAULT_SCALE = scaleLinear;
|
|
18
|
+
|
|
19
|
+
function isD3Scale(scale?: unknown): scale is D3ScaleFn {
|
|
20
|
+
return (
|
|
21
|
+
isFunction(scale) &&
|
|
22
|
+
isFunction(scale().copy) &&
|
|
23
|
+
isFunction(scale().domain) &&
|
|
24
|
+
isFunction(scale().range)
|
|
25
|
+
);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
function getD3ScaleFromString(scale: ScalePropType): D3ScaleFn {
|
|
29
|
+
switch (scale) {
|
|
30
|
+
case "linear":
|
|
31
|
+
return scaleLinear;
|
|
32
|
+
case "time":
|
|
33
|
+
return scaleTime;
|
|
34
|
+
case "log":
|
|
35
|
+
return scaleLog;
|
|
36
|
+
case "sqrt":
|
|
37
|
+
return scaleSqrt;
|
|
38
|
+
default:
|
|
39
|
+
return DEFAULT_SCALE;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export function getScale(
|
|
44
|
+
{ data = [], ...props }: ScaleProps,
|
|
45
|
+
axis: AxisType,
|
|
46
|
+
): D3ScaleFn {
|
|
47
|
+
const scale = getValueForAxis<Scale>(props.scale, axis);
|
|
48
|
+
|
|
49
|
+
if (isD3Scale(scale)) {
|
|
50
|
+
return scale;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
if (typeof scale === "string") {
|
|
54
|
+
return getD3ScaleFromString(scale);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
const axisData = getAxisData(data, axis);
|
|
58
|
+
|
|
59
|
+
if (Collection.containsDates(axisData)) {
|
|
60
|
+
return scaleTime;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
return DEFAULT_SCALE;
|
|
64
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import {
|
|
2
|
+
D3ScaleFn,
|
|
3
|
+
Datum,
|
|
4
|
+
DomainTuple,
|
|
5
|
+
RangeTuple,
|
|
6
|
+
ScalePropType,
|
|
7
|
+
ValueOrAxes,
|
|
8
|
+
} from "../types/prop-types";
|
|
9
|
+
import { PaddingProps } from "../victory-theme/types";
|
|
10
|
+
|
|
11
|
+
// These are all the props that are used to calculate data, domain, range, and scale
|
|
12
|
+
export interface VictoryCalculatedStateProps {
|
|
13
|
+
data?: Datum[];
|
|
14
|
+
domain?: ValueOrAxes<DomainTuple>;
|
|
15
|
+
height?: number;
|
|
16
|
+
includeZero?: boolean;
|
|
17
|
+
maxDomain?: ValueOrAxes<number>;
|
|
18
|
+
minDomain?: ValueOrAxes<number>;
|
|
19
|
+
padding?: PaddingProps;
|
|
20
|
+
range?: ValueOrAxes<RangeTuple>;
|
|
21
|
+
samples?: number;
|
|
22
|
+
scale?: ValueOrAxes<ScalePropType | D3ScaleFn>;
|
|
23
|
+
sortKey?: string;
|
|
24
|
+
sortOrder?: "ascending" | "descending";
|
|
25
|
+
width?: number;
|
|
26
|
+
x?: string;
|
|
27
|
+
y?: string;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export interface VictoryProviderProps extends VictoryCalculatedStateProps {
|
|
31
|
+
children?: React.ReactNode;
|
|
32
|
+
}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { createContext, useContext } from "react";
|
|
3
|
+
import { D3ScaleFn, DomainTuple, ForAxes } from "../types/prop-types";
|
|
4
|
+
import { FormattedDatum, getData } from "./helpers/get-data";
|
|
5
|
+
import { getDomain } from "./helpers/get-domain";
|
|
6
|
+
import { getRange } from "./helpers/get-range";
|
|
7
|
+
import { getScale } from "./helpers/get-scale";
|
|
8
|
+
import { VictoryCalculatedStateProps, VictoryProviderProps } from "./types";
|
|
9
|
+
|
|
10
|
+
type ScaleType = Required<ForAxes<D3ScaleFn>>;
|
|
11
|
+
type DomainType = Required<ForAxes<DomainTuple>>;
|
|
12
|
+
|
|
13
|
+
export interface ContextType {
|
|
14
|
+
data: FormattedDatum[];
|
|
15
|
+
scale: ScaleType;
|
|
16
|
+
domain: DomainType;
|
|
17
|
+
setChildProps: (id: string, props: VictoryProviderProps) => void;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
const VictoryContext = createContext<ContextType | null>(null);
|
|
21
|
+
|
|
22
|
+
export function VictoryProvider({
|
|
23
|
+
children,
|
|
24
|
+
...initialProps
|
|
25
|
+
}: VictoryProviderProps) {
|
|
26
|
+
// We need to store the props in state so they can be overwritten by child components
|
|
27
|
+
const [props, setProps] = React.useState(initialProps);
|
|
28
|
+
|
|
29
|
+
const setChildProps = React.useCallback(
|
|
30
|
+
(id: string, newProps: VictoryCalculatedStateProps) => {
|
|
31
|
+
setProps((prevProps) => {
|
|
32
|
+
return { ...prevProps, ...newProps };
|
|
33
|
+
});
|
|
34
|
+
},
|
|
35
|
+
[],
|
|
36
|
+
);
|
|
37
|
+
|
|
38
|
+
const data = React.useMemo(() => {
|
|
39
|
+
return getData(props);
|
|
40
|
+
}, [props]);
|
|
41
|
+
|
|
42
|
+
const domain = React.useMemo(() => {
|
|
43
|
+
return {
|
|
44
|
+
x: getDomain(props, "x"),
|
|
45
|
+
y: getDomain(props, "y"),
|
|
46
|
+
};
|
|
47
|
+
}, [props]);
|
|
48
|
+
|
|
49
|
+
const range = React.useMemo(
|
|
50
|
+
() => ({
|
|
51
|
+
x: getRange(props, "x"),
|
|
52
|
+
y: getRange(props, "y"),
|
|
53
|
+
}),
|
|
54
|
+
[props],
|
|
55
|
+
);
|
|
56
|
+
|
|
57
|
+
const scale = React.useMemo(() => {
|
|
58
|
+
const xBaseScaleFn = getScale(props, "x");
|
|
59
|
+
const yBaseScaleFn = getScale(props, "y");
|
|
60
|
+
|
|
61
|
+
// @ts-expect-error: This is a valid scale function
|
|
62
|
+
const xScaleFn = xBaseScaleFn().domain(domain.x).range(range.x);
|
|
63
|
+
// @ts-expect-error: This is a valid scale function
|
|
64
|
+
const yScaleFn = yBaseScaleFn().domain(domain.y).range(range.y);
|
|
65
|
+
|
|
66
|
+
return {
|
|
67
|
+
x: xScaleFn,
|
|
68
|
+
y: yScaleFn,
|
|
69
|
+
};
|
|
70
|
+
}, [props, domain, range]);
|
|
71
|
+
|
|
72
|
+
const value = {
|
|
73
|
+
scale,
|
|
74
|
+
data,
|
|
75
|
+
domain,
|
|
76
|
+
setChildProps,
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
return (
|
|
80
|
+
<VictoryContext.Provider value={value}>{children}</VictoryContext.Provider>
|
|
81
|
+
);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
export function useVictoryContext<T>(selector: (value: ContextType) => T): T {
|
|
85
|
+
const context = useContext(VictoryContext);
|
|
86
|
+
if (!context) {
|
|
87
|
+
throw new Error("useVictoryContext must be used within a VictoryProvider");
|
|
88
|
+
}
|
|
89
|
+
return selector(context);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export function useScale() {
|
|
93
|
+
return useVictoryContext<ScaleType>((value) => value.scale);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
export function useData() {
|
|
97
|
+
return useVictoryContext<FormattedDatum[]>((value) => value.data);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
export function useDomain() {
|
|
101
|
+
return useVictoryContext<DomainType>((value) => value.domain);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
// This function keeps props in sync betwen the VictoryProvider and child components
|
|
105
|
+
export function useVictoryProviderSync(
|
|
106
|
+
id: string,
|
|
107
|
+
props: VictoryCalculatedStateProps,
|
|
108
|
+
) {
|
|
109
|
+
const setChildProps = useVictoryContext((value) => value.setChildProps);
|
|
110
|
+
|
|
111
|
+
React.useEffect(() => {
|
|
112
|
+
setChildProps(id, props);
|
|
113
|
+
}, []);
|
|
114
|
+
|
|
115
|
+
return props;
|
|
116
|
+
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { assign } from "lodash";
|
|
2
|
+
import { VictoryThemeDefinition } from "./types";
|
|
2
3
|
|
|
3
4
|
// *
|
|
4
5
|
// * Colors
|
|
@@ -10,7 +11,7 @@ const colors = [
|
|
|
10
11
|
"#969696",
|
|
11
12
|
"#bdbdbd",
|
|
12
13
|
"#d9d9d9",
|
|
13
|
-
"#f0f0f0"
|
|
14
|
+
"#f0f0f0",
|
|
14
15
|
];
|
|
15
16
|
|
|
16
17
|
const charcoal = "#252525";
|
|
@@ -28,7 +29,7 @@ const baseProps = {
|
|
|
28
29
|
width: 450,
|
|
29
30
|
height: 300,
|
|
30
31
|
padding: 50,
|
|
31
|
-
colorScale: colors
|
|
32
|
+
colorScale: colors,
|
|
32
33
|
};
|
|
33
34
|
// *
|
|
34
35
|
// * Labels
|
|
@@ -39,7 +40,7 @@ const baseLabelStyles = {
|
|
|
39
40
|
letterSpacing,
|
|
40
41
|
padding: 10,
|
|
41
42
|
fill: charcoal,
|
|
42
|
-
stroke: "transparent"
|
|
43
|
+
stroke: "transparent",
|
|
43
44
|
};
|
|
44
45
|
|
|
45
46
|
const centeredLabelStyles = assign({ textAnchor: "middle" }, baseLabelStyles);
|
|
@@ -49,17 +50,17 @@ const centeredLabelStyles = assign({ textAnchor: "middle" }, baseLabelStyles);
|
|
|
49
50
|
const strokeLinecap = "round";
|
|
50
51
|
const strokeLinejoin = "round";
|
|
51
52
|
|
|
52
|
-
export
|
|
53
|
+
export const grayscale: VictoryThemeDefinition = {
|
|
53
54
|
area: assign(
|
|
54
55
|
{
|
|
55
56
|
style: {
|
|
56
57
|
data: {
|
|
57
|
-
fill: charcoal
|
|
58
|
+
fill: charcoal,
|
|
58
59
|
},
|
|
59
|
-
labels: baseLabelStyles
|
|
60
|
-
}
|
|
60
|
+
labels: baseLabelStyles,
|
|
61
|
+
},
|
|
61
62
|
},
|
|
62
|
-
baseProps
|
|
63
|
+
baseProps,
|
|
63
64
|
),
|
|
64
65
|
axis: assign(
|
|
65
66
|
{
|
|
@@ -69,25 +70,25 @@ export default {
|
|
|
69
70
|
stroke: charcoal,
|
|
70
71
|
strokeWidth: 1,
|
|
71
72
|
strokeLinecap,
|
|
72
|
-
strokeLinejoin
|
|
73
|
+
strokeLinejoin,
|
|
73
74
|
},
|
|
74
75
|
axisLabel: assign({}, centeredLabelStyles, {
|
|
75
|
-
padding: 25
|
|
76
|
+
padding: 25,
|
|
76
77
|
}),
|
|
77
78
|
grid: {
|
|
78
79
|
fill: "none",
|
|
79
80
|
stroke: "none",
|
|
80
|
-
pointerEvents: "painted"
|
|
81
|
+
pointerEvents: "painted",
|
|
81
82
|
},
|
|
82
83
|
ticks: {
|
|
83
84
|
fill: "transparent",
|
|
84
85
|
size: 1,
|
|
85
|
-
stroke: "transparent"
|
|
86
|
+
stroke: "transparent",
|
|
86
87
|
},
|
|
87
|
-
tickLabels: baseLabelStyles
|
|
88
|
-
}
|
|
88
|
+
tickLabels: baseLabelStyles,
|
|
89
|
+
},
|
|
89
90
|
},
|
|
90
|
-
baseProps
|
|
91
|
+
baseProps,
|
|
91
92
|
),
|
|
92
93
|
bar: assign(
|
|
93
94
|
{
|
|
@@ -95,12 +96,12 @@ export default {
|
|
|
95
96
|
data: {
|
|
96
97
|
fill: charcoal,
|
|
97
98
|
padding: 8,
|
|
98
|
-
strokeWidth: 0
|
|
99
|
+
strokeWidth: 0,
|
|
99
100
|
},
|
|
100
|
-
labels: baseLabelStyles
|
|
101
|
-
}
|
|
101
|
+
labels: baseLabelStyles,
|
|
102
|
+
},
|
|
102
103
|
},
|
|
103
|
-
baseProps
|
|
104
|
+
baseProps,
|
|
104
105
|
),
|
|
105
106
|
boxplot: assign(
|
|
106
107
|
{
|
|
@@ -114,27 +115,27 @@ export default {
|
|
|
114
115
|
q1: { padding: 8, fill: grey },
|
|
115
116
|
q1Labels: assign({}, baseLabelStyles, { padding: 3 }),
|
|
116
117
|
q3: { padding: 8, fill: grey },
|
|
117
|
-
q3Labels: assign({}, baseLabelStyles, { padding: 3 })
|
|
118
|
+
q3Labels: assign({}, baseLabelStyles, { padding: 3 }),
|
|
118
119
|
},
|
|
119
|
-
boxWidth: 20
|
|
120
|
+
boxWidth: 20,
|
|
120
121
|
},
|
|
121
|
-
baseProps
|
|
122
|
+
baseProps,
|
|
122
123
|
),
|
|
123
124
|
candlestick: assign(
|
|
124
125
|
{
|
|
125
126
|
style: {
|
|
126
127
|
data: {
|
|
127
128
|
stroke: charcoal,
|
|
128
|
-
strokeWidth: 1
|
|
129
|
+
strokeWidth: 1,
|
|
129
130
|
},
|
|
130
|
-
labels: assign({}, baseLabelStyles, { padding: 5 })
|
|
131
|
+
labels: assign({}, baseLabelStyles, { padding: 5 }),
|
|
131
132
|
},
|
|
132
133
|
candleColors: {
|
|
133
134
|
positive: "#ffffff",
|
|
134
|
-
negative: charcoal
|
|
135
|
-
}
|
|
135
|
+
negative: charcoal,
|
|
136
|
+
},
|
|
136
137
|
},
|
|
137
|
-
baseProps
|
|
138
|
+
baseProps,
|
|
138
139
|
),
|
|
139
140
|
chart: baseProps,
|
|
140
141
|
errorbar: assign(
|
|
@@ -144,18 +145,18 @@ export default {
|
|
|
144
145
|
data: {
|
|
145
146
|
fill: "transparent",
|
|
146
147
|
stroke: charcoal,
|
|
147
|
-
strokeWidth: 2
|
|
148
|
+
strokeWidth: 2,
|
|
148
149
|
},
|
|
149
|
-
labels: baseLabelStyles
|
|
150
|
-
}
|
|
150
|
+
labels: baseLabelStyles,
|
|
151
|
+
},
|
|
151
152
|
},
|
|
152
|
-
baseProps
|
|
153
|
+
baseProps,
|
|
153
154
|
),
|
|
154
155
|
group: assign(
|
|
155
156
|
{
|
|
156
|
-
colorScale: colors
|
|
157
|
+
colorScale: colors,
|
|
157
158
|
},
|
|
158
|
-
baseProps
|
|
159
|
+
baseProps,
|
|
159
160
|
),
|
|
160
161
|
histogram: assign(
|
|
161
162
|
{
|
|
@@ -163,12 +164,12 @@ export default {
|
|
|
163
164
|
data: {
|
|
164
165
|
fill: grey,
|
|
165
166
|
stroke: charcoal,
|
|
166
|
-
strokeWidth: 2
|
|
167
|
+
strokeWidth: 2,
|
|
167
168
|
},
|
|
168
|
-
labels: baseLabelStyles
|
|
169
|
-
}
|
|
169
|
+
labels: baseLabelStyles,
|
|
170
|
+
},
|
|
170
171
|
},
|
|
171
|
-
baseProps
|
|
172
|
+
baseProps,
|
|
172
173
|
),
|
|
173
174
|
legend: {
|
|
174
175
|
colorScale: colors,
|
|
@@ -177,11 +178,11 @@ export default {
|
|
|
177
178
|
titleOrientation: "top",
|
|
178
179
|
style: {
|
|
179
180
|
data: {
|
|
180
|
-
type: "circle"
|
|
181
|
+
type: "circle",
|
|
181
182
|
},
|
|
182
183
|
labels: baseLabelStyles,
|
|
183
|
-
title: assign({}, baseLabelStyles, { padding: 5 })
|
|
184
|
-
}
|
|
184
|
+
title: assign({}, baseLabelStyles, { padding: 5 }),
|
|
185
|
+
},
|
|
185
186
|
},
|
|
186
187
|
line: assign(
|
|
187
188
|
{
|
|
@@ -189,26 +190,26 @@ export default {
|
|
|
189
190
|
data: {
|
|
190
191
|
fill: "transparent",
|
|
191
192
|
stroke: charcoal,
|
|
192
|
-
strokeWidth: 2
|
|
193
|
+
strokeWidth: 2,
|
|
193
194
|
},
|
|
194
|
-
labels: baseLabelStyles
|
|
195
|
-
}
|
|
195
|
+
labels: baseLabelStyles,
|
|
196
|
+
},
|
|
196
197
|
},
|
|
197
|
-
baseProps
|
|
198
|
+
baseProps,
|
|
198
199
|
),
|
|
199
200
|
pie: {
|
|
200
201
|
style: {
|
|
201
202
|
data: {
|
|
202
203
|
padding: 10,
|
|
203
204
|
stroke: "transparent",
|
|
204
|
-
strokeWidth: 1
|
|
205
|
+
strokeWidth: 1,
|
|
205
206
|
},
|
|
206
|
-
labels: assign({}, baseLabelStyles, { padding: 20 })
|
|
207
|
+
labels: assign({}, baseLabelStyles, { padding: 20 }),
|
|
207
208
|
},
|
|
208
209
|
colorScale: colors,
|
|
209
210
|
width: 400,
|
|
210
211
|
height: 400,
|
|
211
|
-
padding: 50
|
|
212
|
+
padding: 50,
|
|
212
213
|
},
|
|
213
214
|
scatter: assign(
|
|
214
215
|
{
|
|
@@ -216,18 +217,18 @@ export default {
|
|
|
216
217
|
data: {
|
|
217
218
|
fill: charcoal,
|
|
218
219
|
stroke: "transparent",
|
|
219
|
-
strokeWidth: 0
|
|
220
|
+
strokeWidth: 0,
|
|
220
221
|
},
|
|
221
|
-
labels: baseLabelStyles
|
|
222
|
-
}
|
|
222
|
+
labels: baseLabelStyles,
|
|
223
|
+
},
|
|
223
224
|
},
|
|
224
|
-
baseProps
|
|
225
|
+
baseProps,
|
|
225
226
|
),
|
|
226
227
|
stack: assign(
|
|
227
228
|
{
|
|
228
|
-
colorScale: colors
|
|
229
|
+
colorScale: colors,
|
|
229
230
|
},
|
|
230
|
-
baseProps
|
|
231
|
+
baseProps,
|
|
231
232
|
),
|
|
232
233
|
tooltip: {
|
|
233
234
|
style: assign({}, baseLabelStyles, { padding: 0, pointerEvents: "none" }),
|
|
@@ -235,11 +236,11 @@ export default {
|
|
|
235
236
|
stroke: charcoal,
|
|
236
237
|
strokeWidth: 1,
|
|
237
238
|
fill: "#f0f0f0",
|
|
238
|
-
pointerEvents: "none"
|
|
239
|
+
pointerEvents: "none",
|
|
239
240
|
},
|
|
240
241
|
flyoutPadding: 5,
|
|
241
242
|
cornerRadius: 5,
|
|
242
|
-
pointerLength: 10
|
|
243
|
+
pointerLength: 10,
|
|
243
244
|
},
|
|
244
245
|
voronoi: assign(
|
|
245
246
|
{
|
|
@@ -247,20 +248,20 @@ export default {
|
|
|
247
248
|
data: {
|
|
248
249
|
fill: "transparent",
|
|
249
250
|
stroke: "transparent",
|
|
250
|
-
strokeWidth: 0
|
|
251
|
+
strokeWidth: 0,
|
|
251
252
|
},
|
|
252
253
|
labels: assign({}, baseLabelStyles, {
|
|
253
254
|
padding: 5,
|
|
254
|
-
pointerEvents: "none"
|
|
255
|
+
pointerEvents: "none",
|
|
255
256
|
}),
|
|
256
257
|
flyout: {
|
|
257
258
|
stroke: charcoal,
|
|
258
259
|
strokeWidth: 1,
|
|
259
260
|
fill: "#f0f0f0",
|
|
260
|
-
pointerEvents: "none"
|
|
261
|
-
}
|
|
262
|
-
}
|
|
261
|
+
pointerEvents: "none",
|
|
262
|
+
},
|
|
263
|
+
},
|
|
263
264
|
},
|
|
264
|
-
baseProps
|
|
265
|
-
)
|
|
265
|
+
baseProps,
|
|
266
|
+
),
|
|
266
267
|
};
|