@gravity-ui/charts 0.7.0 → 0.9.0

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.
Files changed (168) hide show
  1. package/README.md +1 -4
  2. package/dist/cjs/components/Axis/AxisX.d.ts +1 -0
  3. package/dist/cjs/components/Axis/AxisX.js +43 -6
  4. package/dist/cjs/components/Axis/AxisY.d.ts +1 -0
  5. package/dist/cjs/components/Axis/AxisY.js +63 -17
  6. package/dist/cjs/components/Axis/styles.css +5 -5
  7. package/dist/cjs/components/ChartInner/index.js +8 -6
  8. package/dist/cjs/components/ChartInner/styles.css +4 -4
  9. package/dist/cjs/components/ChartInner/useChartInnerHandlers.d.ts +1 -0
  10. package/dist/cjs/components/ChartInner/useChartInnerHandlers.js +7 -4
  11. package/dist/cjs/components/ChartInner/useChartInnerProps.d.ts +3 -2
  12. package/dist/cjs/components/Legend/index.js +2 -3
  13. package/dist/cjs/components/Legend/styles.css +14 -14
  14. package/dist/cjs/components/PlotTitle/index.js +1 -1
  15. package/dist/cjs/components/PlotTitle/styles.css +1 -1
  16. package/dist/cjs/components/Title/index.js +1 -1
  17. package/dist/cjs/components/Title/styles.css +1 -1
  18. package/dist/cjs/components/Tooltip/DefaultContent.js +19 -3
  19. package/dist/cjs/constants/index.d.ts +1 -0
  20. package/dist/cjs/constants/index.js +1 -0
  21. package/dist/cjs/hooks/useChartOptions/tooltip.js +2 -1
  22. package/dist/cjs/hooks/useChartOptions/types.d.ts +13 -2
  23. package/dist/cjs/hooks/useChartOptions/x-axis.js +9 -1
  24. package/dist/cjs/hooks/useChartOptions/y-axis.js +9 -1
  25. package/dist/cjs/hooks/useSeries/constants.js +1 -1
  26. package/dist/cjs/hooks/useSeries/prepare-bar-x.d.ts +2 -1
  27. package/dist/cjs/hooks/useSeries/prepare-bar-x.js +2 -1
  28. package/dist/cjs/hooks/useSeries/prepare-bar-y.d.ts +2 -1
  29. package/dist/cjs/hooks/useSeries/prepare-bar-y.js +3 -1
  30. package/dist/cjs/hooks/useSeries/prepare-pie.js +2 -2
  31. package/dist/cjs/hooks/useSeries/prepare-sankey.d.ts +11 -0
  32. package/dist/cjs/hooks/useSeries/prepare-sankey.js +38 -0
  33. package/dist/cjs/hooks/useSeries/prepareSeries.js +21 -2
  34. package/dist/cjs/hooks/useSeries/types.d.ts +12 -2
  35. package/dist/cjs/hooks/useSeries/utils.js +1 -1
  36. package/dist/cjs/hooks/useShapes/area/index.js +1 -1
  37. package/dist/cjs/hooks/useShapes/bar-x/index.js +16 -2
  38. package/dist/cjs/hooks/useShapes/bar-x/prepare-data.js +2 -1
  39. package/dist/cjs/hooks/useShapes/bar-x/types.d.ts +1 -0
  40. package/dist/cjs/hooks/useShapes/bar-y/index.js +16 -2
  41. package/dist/cjs/hooks/useShapes/bar-y/prepare-data.js +2 -1
  42. package/dist/cjs/hooks/useShapes/bar-y/types.d.ts +1 -0
  43. package/dist/cjs/hooks/useShapes/index.d.ts +2 -1
  44. package/dist/cjs/hooks/useShapes/index.js +19 -0
  45. package/dist/cjs/hooks/useShapes/line/index.js +3 -3
  46. package/dist/cjs/hooks/useShapes/marker.js +1 -1
  47. package/dist/cjs/hooks/useShapes/pie/index.js +4 -4
  48. package/dist/cjs/hooks/useShapes/pie/prepare-data.js +37 -35
  49. package/dist/cjs/hooks/useShapes/pie/types.d.ts +1 -1
  50. package/dist/cjs/hooks/useShapes/sankey/index.d.ts +12 -0
  51. package/dist/cjs/hooks/useShapes/sankey/index.js +67 -0
  52. package/dist/cjs/hooks/useShapes/sankey/prepare-data.d.ts +7 -0
  53. package/dist/cjs/hooks/useShapes/sankey/prepare-data.js +72 -0
  54. package/dist/cjs/hooks/useShapes/sankey/types.d.ts +33 -0
  55. package/dist/cjs/hooks/useShapes/sankey/types.js +1 -0
  56. package/dist/cjs/hooks/useShapes/scatter/index.js +1 -1
  57. package/dist/cjs/hooks/useShapes/styles.css +7 -7
  58. package/dist/cjs/hooks/useShapes/treemap/index.js +1 -1
  59. package/dist/cjs/hooks/useShapes/utils.d.ts +7 -2
  60. package/dist/cjs/hooks/useShapes/utils.js +22 -17
  61. package/dist/cjs/hooks/useShapes/waterfall/index.js +2 -3
  62. package/dist/cjs/index.d.ts +1 -1
  63. package/dist/cjs/index.js +1 -0
  64. package/dist/cjs/types/chart/axis.d.ts +24 -0
  65. package/dist/cjs/types/chart/bar-x.d.ts +5 -0
  66. package/dist/cjs/types/chart/bar-y.d.ts +5 -0
  67. package/dist/cjs/types/chart/pie.d.ts +2 -0
  68. package/dist/cjs/types/chart/sankey.d.ts +22 -0
  69. package/dist/cjs/types/chart/sankey.js +1 -0
  70. package/dist/cjs/types/chart/series.d.ts +13 -2
  71. package/dist/cjs/types/chart/tooltip.d.ts +9 -1
  72. package/dist/cjs/types/index.d.ts +1 -0
  73. package/dist/cjs/types/index.js +1 -0
  74. package/dist/cjs/utils/chart/get-closest-data.d.ts +2 -0
  75. package/dist/cjs/utils/chart/get-closest-data.js +39 -3
  76. package/dist/cjs/utils/chart/index.js +1 -1
  77. package/dist/cjs/utils/chart/series/index.d.ts +1 -0
  78. package/dist/cjs/utils/chart/series/index.js +1 -0
  79. package/dist/cjs/utils/chart/series/line.d.ts +2 -0
  80. package/dist/cjs/utils/chart/series/line.js +17 -0
  81. package/dist/cjs/utils/{d3-dispatcher.d.ts → dispatcher.d.ts} +1 -1
  82. package/dist/cjs/utils/{d3-dispatcher.js → dispatcher.js} +1 -1
  83. package/dist/cjs/utils/index.d.ts +1 -1
  84. package/dist/cjs/utils/index.js +1 -1
  85. package/dist/esm/components/Axis/AxisX.d.ts +1 -0
  86. package/dist/esm/components/Axis/AxisX.js +43 -6
  87. package/dist/esm/components/Axis/AxisY.d.ts +1 -0
  88. package/dist/esm/components/Axis/AxisY.js +63 -17
  89. package/dist/esm/components/Axis/styles.css +5 -5
  90. package/dist/esm/components/ChartInner/index.js +8 -6
  91. package/dist/esm/components/ChartInner/styles.css +4 -4
  92. package/dist/esm/components/ChartInner/useChartInnerHandlers.d.ts +1 -0
  93. package/dist/esm/components/ChartInner/useChartInnerHandlers.js +7 -4
  94. package/dist/esm/components/ChartInner/useChartInnerProps.d.ts +3 -2
  95. package/dist/esm/components/Legend/index.js +2 -3
  96. package/dist/esm/components/Legend/styles.css +14 -14
  97. package/dist/esm/components/PlotTitle/index.js +1 -1
  98. package/dist/esm/components/PlotTitle/styles.css +1 -1
  99. package/dist/esm/components/Title/index.js +1 -1
  100. package/dist/esm/components/Title/styles.css +1 -1
  101. package/dist/esm/components/Tooltip/DefaultContent.js +19 -3
  102. package/dist/esm/constants/index.d.ts +1 -0
  103. package/dist/esm/constants/index.js +1 -0
  104. package/dist/esm/hooks/useChartOptions/tooltip.js +2 -1
  105. package/dist/esm/hooks/useChartOptions/types.d.ts +13 -2
  106. package/dist/esm/hooks/useChartOptions/x-axis.js +9 -1
  107. package/dist/esm/hooks/useChartOptions/y-axis.js +9 -1
  108. package/dist/esm/hooks/useSeries/constants.js +1 -1
  109. package/dist/esm/hooks/useSeries/prepare-bar-x.d.ts +2 -1
  110. package/dist/esm/hooks/useSeries/prepare-bar-x.js +2 -1
  111. package/dist/esm/hooks/useSeries/prepare-bar-y.d.ts +2 -1
  112. package/dist/esm/hooks/useSeries/prepare-bar-y.js +3 -1
  113. package/dist/esm/hooks/useSeries/prepare-pie.js +2 -2
  114. package/dist/esm/hooks/useSeries/prepare-sankey.d.ts +11 -0
  115. package/dist/esm/hooks/useSeries/prepare-sankey.js +38 -0
  116. package/dist/esm/hooks/useSeries/prepareSeries.js +21 -2
  117. package/dist/esm/hooks/useSeries/types.d.ts +12 -2
  118. package/dist/esm/hooks/useSeries/utils.js +1 -1
  119. package/dist/esm/hooks/useShapes/area/index.js +1 -1
  120. package/dist/esm/hooks/useShapes/bar-x/index.js +16 -2
  121. package/dist/esm/hooks/useShapes/bar-x/prepare-data.js +2 -1
  122. package/dist/esm/hooks/useShapes/bar-x/types.d.ts +1 -0
  123. package/dist/esm/hooks/useShapes/bar-y/index.js +16 -2
  124. package/dist/esm/hooks/useShapes/bar-y/prepare-data.js +2 -1
  125. package/dist/esm/hooks/useShapes/bar-y/types.d.ts +1 -0
  126. package/dist/esm/hooks/useShapes/index.d.ts +2 -1
  127. package/dist/esm/hooks/useShapes/index.js +19 -0
  128. package/dist/esm/hooks/useShapes/line/index.js +3 -3
  129. package/dist/esm/hooks/useShapes/marker.js +1 -1
  130. package/dist/esm/hooks/useShapes/pie/index.js +4 -4
  131. package/dist/esm/hooks/useShapes/pie/prepare-data.js +37 -35
  132. package/dist/esm/hooks/useShapes/pie/types.d.ts +1 -1
  133. package/dist/esm/hooks/useShapes/sankey/index.d.ts +12 -0
  134. package/dist/esm/hooks/useShapes/sankey/index.js +67 -0
  135. package/dist/esm/hooks/useShapes/sankey/prepare-data.d.ts +7 -0
  136. package/dist/esm/hooks/useShapes/sankey/prepare-data.js +72 -0
  137. package/dist/esm/hooks/useShapes/sankey/types.d.ts +33 -0
  138. package/dist/esm/hooks/useShapes/sankey/types.js +1 -0
  139. package/dist/esm/hooks/useShapes/scatter/index.js +1 -1
  140. package/dist/esm/hooks/useShapes/styles.css +7 -7
  141. package/dist/esm/hooks/useShapes/treemap/index.js +1 -1
  142. package/dist/esm/hooks/useShapes/utils.d.ts +7 -2
  143. package/dist/esm/hooks/useShapes/utils.js +22 -17
  144. package/dist/esm/hooks/useShapes/waterfall/index.js +2 -3
  145. package/dist/esm/index.d.ts +1 -1
  146. package/dist/esm/index.js +1 -0
  147. package/dist/esm/types/chart/axis.d.ts +24 -0
  148. package/dist/esm/types/chart/bar-x.d.ts +5 -0
  149. package/dist/esm/types/chart/bar-y.d.ts +5 -0
  150. package/dist/esm/types/chart/pie.d.ts +2 -0
  151. package/dist/esm/types/chart/sankey.d.ts +22 -0
  152. package/dist/esm/types/chart/sankey.js +1 -0
  153. package/dist/esm/types/chart/series.d.ts +13 -2
  154. package/dist/esm/types/chart/tooltip.d.ts +9 -1
  155. package/dist/esm/types/index.d.ts +1 -0
  156. package/dist/esm/types/index.js +1 -0
  157. package/dist/esm/utils/chart/get-closest-data.d.ts +2 -0
  158. package/dist/esm/utils/chart/get-closest-data.js +39 -3
  159. package/dist/esm/utils/chart/index.js +1 -1
  160. package/dist/esm/utils/chart/series/index.d.ts +1 -0
  161. package/dist/esm/utils/chart/series/index.js +1 -0
  162. package/dist/esm/utils/chart/series/line.d.ts +2 -0
  163. package/dist/esm/utils/chart/series/line.js +17 -0
  164. package/dist/esm/utils/{d3-dispatcher.d.ts → dispatcher.d.ts} +1 -1
  165. package/dist/esm/utils/{d3-dispatcher.js → dispatcher.js} +1 -1
  166. package/dist/esm/utils/index.d.ts +1 -1
  167. package/dist/esm/utils/index.js +1 -1
  168. package/package.json +13 -2
@@ -5,6 +5,7 @@ import type { BarXSeries, BarXSeriesData } from './bar-x';
5
5
  import type { BarYSeries, BarYSeriesData } from './bar-y';
6
6
  import type { LineSeries, LineSeriesData } from './line';
7
7
  import type { PieSeries, PieSeriesData } from './pie';
8
+ import type { SankeySeries, SankeySeriesData } from './sankey';
8
9
  import type { ScatterSeries, ScatterSeriesData } from './scatter';
9
10
  import type { TreemapSeries, TreemapSeriesData } from './treemap';
10
11
  import type { WaterfallSeries, WaterfallSeriesData } from './waterfall';
@@ -52,11 +53,16 @@ export interface TooltipDataChunkTreemap<T = MeaningfulAny> {
52
53
  data: TreemapSeriesData<T>;
53
54
  series: TreemapSeries<T>;
54
55
  }
56
+ export interface TooltipDataChunkSankey<T = MeaningfulAny> {
57
+ data: SankeySeriesData<T>;
58
+ target?: SankeySeriesData<T>;
59
+ series: SankeySeries<T>;
60
+ }
55
61
  export interface TooltipDataChunkWaterfall<T = MeaningfulAny> {
56
62
  data: WaterfallSeriesData<T>;
57
63
  series: WaterfallSeries<T>;
58
64
  }
59
- export type TooltipDataChunk<T = MeaningfulAny> = (TooltipDataChunkBarX<T> | TooltipDataChunkBarY<T> | TooltipDataChunkPie<T> | TooltipDataChunkScatter<T> | TooltipDataChunkLine<T> | TooltipDataChunkArea<T> | TooltipDataChunkTreemap<T> | TooltipDataChunkWaterfall<T>) & {
65
+ export type TooltipDataChunk<T = MeaningfulAny> = (TooltipDataChunkBarX<T> | TooltipDataChunkBarY<T> | TooltipDataChunkPie<T> | TooltipDataChunkScatter<T> | TooltipDataChunkLine<T> | TooltipDataChunkArea<T> | TooltipDataChunkTreemap<T> | TooltipDataChunkSankey<T> | TooltipDataChunkWaterfall<T>) & {
60
66
  closest?: boolean;
61
67
  };
62
68
  export interface ChartTooltipRendererArgs<T = MeaningfulAny> {
@@ -72,4 +78,6 @@ export interface ChartTooltip<T = MeaningfulAny> {
72
78
  enabled?: boolean;
73
79
  modifierKey?: 'altKey' | 'metaKey';
74
80
  };
81
+ /** Show tooltip at most once per every ```throttle``` milliseconds */
82
+ throttle?: number;
75
83
  }
@@ -25,6 +25,7 @@ export * from './chart/tooltip';
25
25
  export * from './chart/halo';
26
26
  export * from './chart/treemap';
27
27
  export * from './chart/waterfall';
28
+ export * from './chart/sankey';
28
29
  export interface ChartData<T = MeaningfulAny> {
29
30
  /**
30
31
  * General options for the chart.
@@ -17,3 +17,4 @@ export * from './chart/tooltip';
17
17
  export * from './chart/halo';
18
18
  export * from './chart/treemap';
19
19
  export * from './chart/waterfall';
20
+ export * from './chart/sankey';
@@ -3,6 +3,8 @@ import type { ChartSeries, ChartSeriesData, TooltipDataChunk } from '../../types
3
3
  type GetClosestPointsArgs = {
4
4
  position: [number, number];
5
5
  shapesData: ShapeData[];
6
+ boundsHeight: number;
7
+ boundsWidth: number;
6
8
  };
7
9
  export type ShapePoint = {
8
10
  x: number;
@@ -35,7 +35,7 @@ function getSeriesType(shapeData) {
35
35
  return get(shapeData, 'series.type') || get(shapeData, 'point.series.type');
36
36
  }
37
37
  export function getClosestPoints(args) {
38
- const { position, shapesData } = args;
38
+ const { position, shapesData, boundsHeight, boundsWidth } = args;
39
39
  const [pointerX, pointerY] = position;
40
40
  const result = [];
41
41
  const groups = groupBy(shapesData, getSeriesType);
@@ -135,13 +135,13 @@ export function getClosestPoints(args) {
135
135
  case 'pie': {
136
136
  const points = list.map((d) => d.segments).flat();
137
137
  const closestPoint = points.find((p) => {
138
- const { center, radius } = p.data.pie;
138
+ const { center } = p.data.pie;
139
139
  const x = pointerX - center[0];
140
140
  const y = pointerY - center[1];
141
141
  let angle = Math.atan2(y, x) + 0.5 * Math.PI;
142
142
  angle = angle < 0 ? Math.PI * 2 + angle : angle;
143
143
  const polarRadius = Math.sqrt(x * x + y * y);
144
- return angle >= p.startAngle && angle <= p.endAngle && polarRadius < radius;
144
+ return (angle >= p.startAngle && angle <= p.endAngle && polarRadius < p.data.radius);
145
145
  });
146
146
  if (closestPoint) {
147
147
  result.push({
@@ -166,7 +166,43 @@ export function getClosestPoints(args) {
166
166
  }
167
167
  break;
168
168
  }
169
+ case 'sankey': {
170
+ const [data] = list;
171
+ const closestLink = data.links.find((d) => {
172
+ var _a;
173
+ return isInsidePath({
174
+ path: (_a = d.path) !== null && _a !== void 0 ? _a : '',
175
+ strokeWidth: d.strokeWidth,
176
+ point: [pointerX, pointerY],
177
+ width: boundsWidth,
178
+ height: boundsHeight,
179
+ });
180
+ });
181
+ if (closestLink) {
182
+ result.push({
183
+ data: closestLink.source,
184
+ target: closestLink.target,
185
+ series: data.series,
186
+ closest: true,
187
+ });
188
+ }
189
+ break;
190
+ }
169
191
  }
170
192
  });
171
193
  return result;
172
194
  }
195
+ function isInsidePath(args) {
196
+ const { path, point, width, height, strokeWidth } = args;
197
+ const canvas = document.createElement('canvas');
198
+ canvas.width = width;
199
+ canvas.height = height;
200
+ const ctx = canvas.getContext('2d');
201
+ if (ctx) {
202
+ ctx.lineWidth = strokeWidth;
203
+ const path2D = new Path2D(path);
204
+ ctx.stroke(path2D);
205
+ return ctx.isPointInPath(path2D, ...point) || ctx.isPointInStroke(path2D, ...point);
206
+ }
207
+ return null;
208
+ }
@@ -15,7 +15,7 @@ export * from './legend';
15
15
  export * from './symbol';
16
16
  export * from './series';
17
17
  export * from './color';
18
- const CHARTS_WITHOUT_AXIS = ['pie', 'treemap'];
18
+ const CHARTS_WITHOUT_AXIS = ['pie', 'treemap', 'sankey'];
19
19
  export const CHART_SERIES_WITH_VOLUME_ON_Y_AXIS = [
20
20
  'bar-x',
21
21
  'area',
@@ -1 +1,2 @@
1
+ export * from './line';
1
2
  export * from './waterfall';
@@ -1 +1,2 @@
1
+ export * from './line';
1
2
  export * from './waterfall';
@@ -0,0 +1,2 @@
1
+ import type { DashStyle } from 'src/constants';
2
+ export declare function getLineDashArray(dashStyle: DashStyle, strokeWidth?: number): string;
@@ -0,0 +1,17 @@
1
+ export function getLineDashArray(dashStyle, strokeWidth = 2) {
2
+ const value = dashStyle.toLowerCase();
3
+ const arrayValue = value
4
+ .replace('shortdashdotdot', '3,1,1,1,1,1,')
5
+ .replace('shortdashdot', '3,1,1,1')
6
+ .replace('shortdot', '1,1,')
7
+ .replace('shortdash', '3,1,')
8
+ .replace('longdash', '8,3,')
9
+ .replace(/dot/g, '1,3,')
10
+ .replace('dash', '4,3,')
11
+ .replace(/,$/, '')
12
+ .split(',')
13
+ .map((part) => {
14
+ return `${parseInt(part, 10) * strokeWidth}`;
15
+ });
16
+ return arrayValue.join(',').replace(/NaN/g, 'none');
17
+ }
@@ -3,4 +3,4 @@ export declare const EventType: {
3
3
  HOVER_SHAPE: string;
4
4
  POINTERMOVE_CHART: string;
5
5
  };
6
- export declare const getD3Dispatcher: () => import("d3-dispatch").Dispatch<object>;
6
+ export declare const getDispatcher: () => import("d3-dispatch").Dispatch<object>;
@@ -4,6 +4,6 @@ export const EventType = {
4
4
  HOVER_SHAPE: 'hover-shape',
5
5
  POINTERMOVE_CHART: 'pointermove-chart',
6
6
  };
7
- export const getD3Dispatcher = () => {
7
+ export const getDispatcher = () => {
8
8
  return dispatch(EventType.CLICK_CHART, EventType.HOVER_SHAPE, EventType.POINTERMOVE_CHART);
9
9
  };
@@ -1,5 +1,5 @@
1
1
  export * from './chart';
2
2
  export * from './chart-ui';
3
3
  export * from './cn';
4
- export * from './d3-dispatcher';
4
+ export * from './dispatcher';
5
5
  export * from './misc';
@@ -1,5 +1,5 @@
1
1
  export * from './chart';
2
2
  export * from './chart-ui';
3
3
  export * from './cn';
4
- export * from './d3-dispatcher';
4
+ export * from './dispatcher';
5
5
  export * from './misc';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gravity-ui/charts",
3
- "version": "0.7.0",
3
+ "version": "0.9.0",
4
4
  "description": "React component used to render charts",
5
5
  "license": "MIT",
6
6
  "main": "dist/cjs/index.js",
@@ -53,13 +53,21 @@
53
53
  "prepublishOnly": "npm run build",
54
54
  "docs:deps": "cd ./docs && npm ci",
55
55
  "docs:dev": "cd ./docs && npm run docs:dev",
56
- "docs:build": "cd ./docs && npm run docs:build"
56
+ "docs:build": "cd ./docs && npm run docs:build",
57
+ "playwright:install": "playwright install chromium webkit --with-deps",
58
+ "playwright": "playwright test --config=playwright/playwright.config.ts",
59
+ "playwright:update": "npm run playwright -- -u",
60
+ "playwright:clear-cache": "rm -rf ./playwright/.cache",
61
+ "playwright:docker": "./scripts/playwright-docker.sh 'npm run playwright'",
62
+ "playwright:docker:update": "./scripts/playwright-docker.sh 'npm run playwright:update'",
63
+ "playwright:docker:clear-cache": "./scripts/playwright-docker.sh clear-cache"
57
64
  },
58
65
  "dependencies": {
59
66
  "@bem-react/classname": "^1.6.0",
60
67
  "@gravity-ui/date-utils": "^2.5.4",
61
68
  "@gravity-ui/i18n": "^1.6.0",
62
69
  "d3": "^7.9.0",
70
+ "d3-sankey": "^0.12.3",
63
71
  "lodash": "^4.17.21",
64
72
  "tslib": "^2.6.2"
65
73
  },
@@ -74,6 +82,8 @@
74
82
  "@gravity-ui/stylelint-config": "^4.0.1",
75
83
  "@gravity-ui/tsconfig": "^1.0.0",
76
84
  "@gravity-ui/uikit": "^7.4.0",
85
+ "@playwright/experimental-ct-react": "^1.51.1",
86
+ "@playwright/test": "^1.51.1",
77
87
  "@storybook/addon-a11y": "^8.2.9",
78
88
  "@storybook/addon-actions": "^8.2.9",
79
89
  "@storybook/addon-essentials": "^8.2.9",
@@ -93,6 +103,7 @@
93
103
  "@testing-library/react": "^16.0.0",
94
104
  "@testing-library/user-event": "^14.5.2",
95
105
  "@types/d3": "^7.4.3",
106
+ "@types/d3-sankey": "^0.12.4",
96
107
  "@types/d3-selection": "^3.0.11",
97
108
  "@types/jest": "^29.5.12",
98
109
  "@types/lodash": "^4.17.12",