victory-create-container 37.3.0 → 37.3.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/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # victory-create-container
2
2
 
3
+ ## 37.3.1
4
+
5
+ ### Patch Changes
6
+
7
+ - update createContainer types to be backwards compatibile ([#2933](https://github.com/FormidableLabs/victory/pull/2933))
8
+
3
9
  ## 37.3.0
4
10
 
5
11
  ## 37.2.0
@@ -121,6 +121,8 @@ const CONTAINER_COMPONENTS_WEB = {
121
121
  voronoi: victory_voronoi_container__WEBPACK_IMPORTED_MODULE_9__.VictoryVoronoiContainer
122
122
  };
123
123
  function makeCreateContainerFunction(containerComponents, VictoryContainerBase) {
124
+ // Helper type to support backwards compatibility with old types
125
+
124
126
  return function combineContainers(containerA, containerB) {
125
127
  const ContainerA = containerComponents[containerA];
126
128
  const ContainerB = containerComponents[containerB];
@@ -1,20 +1,20 @@
1
1
  import React from "react";
2
- import { VictoryContainer } from "victory-core";
2
+ import { VictoryContainer, VictoryContainerProps } from "victory-core";
3
3
  export declare type ContainerType = "zoom" | "selection" | "brush" | "cursor" | "voronoi";
4
4
  declare type ContainerComponents = Record<ContainerType, React.ComponentType<any> & {
5
5
  defaultEvents: (props: any) => any[];
6
6
  }>;
7
- export declare function makeCreateContainerFunction<TContainerComponents extends ContainerComponents>(containerComponents: TContainerComponents, VictoryContainerBase: typeof VictoryContainer): <TContainerA extends ContainerType, TContainerB extends ContainerType>(containerA: TContainerA, containerB: TContainerB) => {
8
- (props: React.ComponentProps<TContainerComponents[TContainerA]> & React.ComponentProps<TContainerComponents[TContainerB]>): JSX.Element;
7
+ export declare function makeCreateContainerFunction<TContainerComponents extends ContainerComponents>(containerComponents: TContainerComponents, VictoryContainerBase: typeof VictoryContainer): <TContainerA extends ContainerType | VictoryContainerProps, TContainerB extends ContainerType | VictoryContainerProps>(containerA: TContainerA extends ContainerType ? TContainerA : ContainerType, containerB: TContainerB extends ContainerType ? TContainerB : ContainerType) => {
8
+ (props: TContainerA extends ContainerType ? TContainerB extends ContainerType ? React.ComponentProps<TContainerComponents[TContainerA]> & React.ComponentProps<TContainerComponents[TContainerB]> : TContainerA & TContainerB : TContainerA & TContainerB): JSX.Element;
9
9
  displayName: string;
10
10
  role: string;
11
- defaultEvents(props: React.ComponentProps<TContainerComponents[TContainerA]> & React.ComponentProps<TContainerComponents[TContainerB]>): ({
11
+ defaultEvents(props: TContainerA extends ContainerType ? TContainerB extends ContainerType ? React.ComponentProps<TContainerComponents[TContainerA]> & React.ComponentProps<TContainerComponents[TContainerB]> : TContainerA & TContainerB : TContainerA & TContainerB): ({
12
12
  target: string;
13
13
  eventHandlers: any;
14
14
  } | null)[];
15
15
  };
16
- export declare const createContainer: <TContainerA extends ContainerType, TContainerB extends ContainerType>(containerA: TContainerA, containerB: TContainerB) => {
17
- (props: React.ComponentProps<{
16
+ export declare const createContainer: <TContainerA extends ContainerType | VictoryContainerProps, TContainerB extends ContainerType | VictoryContainerProps>(containerA: TContainerA extends ContainerType ? TContainerA : ContainerType, containerB: TContainerB extends ContainerType ? TContainerB : ContainerType) => {
17
+ (props: TContainerA extends ContainerType ? TContainerB extends ContainerType ? React.ComponentProps<{
18
18
  zoom: {
19
19
  (initialProps: import("victory-zoom-container").VictoryZoomContainerProps): JSX.Element;
20
20
  role: string;
@@ -202,10 +202,10 @@ export declare const createContainer: <TContainerA extends ContainerType, TConta
202
202
  };
203
203
  })[];
204
204
  };
205
- }[TContainerB]>): JSX.Element;
205
+ }[TContainerB]> : TContainerA & TContainerB : TContainerA & TContainerB): JSX.Element;
206
206
  displayName: string;
207
207
  role: string;
208
- defaultEvents(props: React.ComponentProps<{
208
+ defaultEvents(props: TContainerA extends ContainerType ? TContainerB extends ContainerType ? React.ComponentProps<{
209
209
  zoom: {
210
210
  (initialProps: import("victory-zoom-container").VictoryZoomContainerProps): JSX.Element;
211
211
  role: string;
@@ -393,7 +393,7 @@ export declare const createContainer: <TContainerA extends ContainerType, TConta
393
393
  };
394
394
  })[];
395
395
  };
396
- }[TContainerB]>): ({
396
+ }[TContainerB]> : TContainerA & TContainerB : TContainerA & TContainerB): ({
397
397
  target: string;
398
398
  eventHandlers: any;
399
399
  } | null)[];
@@ -80,6 +80,8 @@ const CONTAINER_COMPONENTS_WEB = {
80
80
  voronoi: VictoryVoronoiContainer
81
81
  };
82
82
  export function makeCreateContainerFunction(containerComponents, VictoryContainerBase) {
83
+ // Helper type to support backwards compatibility with old types
84
+
83
85
  return function combineContainers(containerA, containerB) {
84
86
  const ContainerA = containerComponents[containerA];
85
87
  const ContainerB = containerComponents[containerB];
@@ -1,20 +1,20 @@
1
1
  import React from "react";
2
- import { VictoryContainer } from "victory-core";
2
+ import { VictoryContainer, VictoryContainerProps } from "victory-core";
3
3
  export declare type ContainerType = "zoom" | "selection" | "brush" | "cursor" | "voronoi";
4
4
  declare type ContainerComponents = Record<ContainerType, React.ComponentType<any> & {
5
5
  defaultEvents: (props: any) => any[];
6
6
  }>;
7
- export declare function makeCreateContainerFunction<TContainerComponents extends ContainerComponents>(containerComponents: TContainerComponents, VictoryContainerBase: typeof VictoryContainer): <TContainerA extends ContainerType, TContainerB extends ContainerType>(containerA: TContainerA, containerB: TContainerB) => {
8
- (props: React.ComponentProps<TContainerComponents[TContainerA]> & React.ComponentProps<TContainerComponents[TContainerB]>): JSX.Element;
7
+ export declare function makeCreateContainerFunction<TContainerComponents extends ContainerComponents>(containerComponents: TContainerComponents, VictoryContainerBase: typeof VictoryContainer): <TContainerA extends ContainerType | VictoryContainerProps, TContainerB extends ContainerType | VictoryContainerProps>(containerA: TContainerA extends ContainerType ? TContainerA : ContainerType, containerB: TContainerB extends ContainerType ? TContainerB : ContainerType) => {
8
+ (props: TContainerA extends ContainerType ? TContainerB extends ContainerType ? React.ComponentProps<TContainerComponents[TContainerA]> & React.ComponentProps<TContainerComponents[TContainerB]> : TContainerA & TContainerB : TContainerA & TContainerB): JSX.Element;
9
9
  displayName: string;
10
10
  role: string;
11
- defaultEvents(props: React.ComponentProps<TContainerComponents[TContainerA]> & React.ComponentProps<TContainerComponents[TContainerB]>): ({
11
+ defaultEvents(props: TContainerA extends ContainerType ? TContainerB extends ContainerType ? React.ComponentProps<TContainerComponents[TContainerA]> & React.ComponentProps<TContainerComponents[TContainerB]> : TContainerA & TContainerB : TContainerA & TContainerB): ({
12
12
  target: string;
13
13
  eventHandlers: any;
14
14
  } | null)[];
15
15
  };
16
- export declare const createContainer: <TContainerA extends ContainerType, TContainerB extends ContainerType>(containerA: TContainerA, containerB: TContainerB) => {
17
- (props: React.ComponentProps<{
16
+ export declare const createContainer: <TContainerA extends ContainerType | VictoryContainerProps, TContainerB extends ContainerType | VictoryContainerProps>(containerA: TContainerA extends ContainerType ? TContainerA : ContainerType, containerB: TContainerB extends ContainerType ? TContainerB : ContainerType) => {
17
+ (props: TContainerA extends ContainerType ? TContainerB extends ContainerType ? React.ComponentProps<{
18
18
  zoom: {
19
19
  (initialProps: import("victory-zoom-container").VictoryZoomContainerProps): JSX.Element;
20
20
  role: string;
@@ -202,10 +202,10 @@ export declare const createContainer: <TContainerA extends ContainerType, TConta
202
202
  };
203
203
  })[];
204
204
  };
205
- }[TContainerB]>): JSX.Element;
205
+ }[TContainerB]> : TContainerA & TContainerB : TContainerA & TContainerB): JSX.Element;
206
206
  displayName: string;
207
207
  role: string;
208
- defaultEvents(props: React.ComponentProps<{
208
+ defaultEvents(props: TContainerA extends ContainerType ? TContainerB extends ContainerType ? React.ComponentProps<{
209
209
  zoom: {
210
210
  (initialProps: import("victory-zoom-container").VictoryZoomContainerProps): JSX.Element;
211
211
  role: string;
@@ -393,7 +393,7 @@ export declare const createContainer: <TContainerA extends ContainerType, TConta
393
393
  };
394
394
  })[];
395
395
  };
396
- }[TContainerB]>): ({
396
+ }[TContainerB]> : TContainerA & TContainerB : TContainerA & TContainerB): ({
397
397
  target: string;
398
398
  eventHandlers: any;
399
399
  } | null)[];
@@ -88,6 +88,8 @@ const CONTAINER_COMPONENTS_WEB = {
88
88
  voronoi: _victoryVoronoiContainer.VictoryVoronoiContainer
89
89
  };
90
90
  function makeCreateContainerFunction(containerComponents, VictoryContainerBase) {
91
+ // Helper type to support backwards compatibility with old types
92
+
91
93
  return function combineContainers(containerA, containerB) {
92
94
  const ContainerA = containerComponents[containerA];
93
95
  const ContainerB = containerComponents[containerB];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "victory-create-container",
3
- "version": "37.3.0",
3
+ "version": "37.3.1",
4
4
  "description": "Container Helper for Victory",
5
5
  "keywords": [
6
6
  "data visualization",
@@ -21,12 +21,12 @@
21
21
  "license": "MIT",
22
22
  "dependencies": {
23
23
  "lodash": "^4.17.19",
24
- "victory-brush-container": "37.3.0",
25
- "victory-core": "37.3.0",
26
- "victory-cursor-container": "37.3.0",
27
- "victory-selection-container": "37.3.0",
28
- "victory-voronoi-container": "37.3.0",
29
- "victory-zoom-container": "37.3.0"
24
+ "victory-brush-container": "37.3.1",
25
+ "victory-core": "37.3.1",
26
+ "victory-cursor-container": "37.3.1",
27
+ "victory-selection-container": "37.3.1",
28
+ "victory-voronoi-container": "37.3.1",
29
+ "victory-zoom-container": "37.3.1"
30
30
  },
31
31
  "peerDependencies": {
32
32
  "react": ">=16.6.0"
@@ -7,7 +7,7 @@ import {
7
7
  useVictorySelectionContainer,
8
8
  } from "victory-selection-container";
9
9
  import React from "react";
10
- import { VictoryContainer } from "victory-core";
10
+ import { VictoryContainer, VictoryContainerProps } from "victory-core";
11
11
  import { forOwn, groupBy, isEmpty, toPairs } from "lodash";
12
12
  import {
13
13
  VictoryVoronoiContainer,
@@ -123,17 +123,27 @@ export function makeCreateContainerFunction<
123
123
  TContainerComponents[T]
124
124
  >;
125
125
 
126
+ // Helper type to support backwards compatibility with old types
127
+ type CombinedContainerProps<A, B> = A extends ContainerType
128
+ ? B extends ContainerType
129
+ ? ContainerProps<A> & ContainerProps<B> // New style: infer from container types
130
+ : A & B // Old style: expect props as generic types
131
+ : A & B;
132
+
126
133
  return function combineContainers<
127
- TContainerA extends ContainerType,
128
- TContainerB extends ContainerType,
129
- >(containerA: TContainerA, containerB: TContainerB) {
130
- const ContainerA = containerComponents[containerA];
131
- const ContainerB = containerComponents[containerB];
132
- const useContainerA = CONTAINER_HOOKS[containerA];
133
- const useContainerB = CONTAINER_HOOKS[containerB];
134
+ TContainerA extends ContainerType | VictoryContainerProps,
135
+ TContainerB extends ContainerType | VictoryContainerProps,
136
+ >(
137
+ containerA: TContainerA extends ContainerType ? TContainerA : ContainerType,
138
+ containerB: TContainerB extends ContainerType ? TContainerB : ContainerType,
139
+ ) {
140
+ const ContainerA = containerComponents[containerA as ContainerType];
141
+ const ContainerB = containerComponents[containerB as ContainerType];
142
+ const useContainerA = CONTAINER_HOOKS[containerA as ContainerType];
143
+ const useContainerB = CONTAINER_HOOKS[containerB as ContainerType];
134
144
 
135
145
  const CombinedContainer = (
136
- props: ContainerProps<TContainerA> & ContainerProps<TContainerB>,
146
+ props: CombinedContainerProps<TContainerA, TContainerB>,
137
147
  ) => {
138
148
  const { children: childrenA, props: propsA } = useContainerA(props);
139
149
  const { children: combinedChildren, props: combinedProps } =
@@ -152,7 +162,7 @@ export function makeCreateContainerFunction<
152
162
  CombinedContainer.displayName = `Victory${containerA}${containerB}Container`;
153
163
  CombinedContainer.role = "container";
154
164
  CombinedContainer.defaultEvents = (
155
- props: ContainerProps<TContainerA> & ContainerProps<TContainerB>,
165
+ props: CombinedContainerProps<TContainerA, TContainerB>,
156
166
  ) =>
157
167
  combineDefaultEvents([
158
168
  ...ContainerA.defaultEvents(props),