@gravity-ui/charts 1.41.0 → 1.41.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.
Files changed (211) hide show
  1. package/dist/cjs/components/AxisX/AxisX.js +2 -1
  2. package/dist/cjs/components/AxisY/AxisY.js +2 -1
  3. package/dist/cjs/components/ChartInner/index.js +2 -2
  4. package/dist/cjs/components/ChartInner/useChartInnerHandlers.d.ts +1 -1
  5. package/dist/cjs/components/ChartInner/useChartInnerHandlers.js +1 -1
  6. package/dist/cjs/components/ChartInner/useChartInnerProps.d.ts +1 -1
  7. package/dist/cjs/components/ChartInner/useChartInnerState.d.ts +1 -1
  8. package/dist/cjs/components/ChartInner/useDefaultState.d.ts +1 -1
  9. package/dist/cjs/components/ChartInner/useDefaultState.js +4 -1
  10. package/dist/cjs/components/Legend/index.js +3 -1
  11. package/dist/cjs/components/RangeSlider/utils.js +1 -1
  12. package/dist/cjs/components/Tooltip/index.d.ts +1 -1
  13. package/dist/cjs/components/index.js +1 -1
  14. package/dist/cjs/components/utils/index.js +1 -1
  15. package/dist/cjs/hooks/useAxis/x-axis.js +5 -2
  16. package/dist/cjs/hooks/useAxisScales/types.d.ts +1 -1
  17. package/dist/cjs/hooks/useAxisScales/x-scale.js +2 -1
  18. package/dist/cjs/hooks/useAxisScales/y-scale.js +2 -1
  19. package/dist/cjs/hooks/useBrush/index.js +2 -1
  20. package/dist/cjs/hooks/useBrush/types.d.ts +1 -1
  21. package/dist/cjs/hooks/useBrush/utils.d.ts +1 -1
  22. package/dist/cjs/hooks/useBrush/utils.js +2 -1
  23. package/dist/cjs/hooks/useCrosshair/index.d.ts +1 -1
  24. package/dist/cjs/hooks/useCrosshair/index.js +2 -1
  25. package/dist/cjs/hooks/useCrosshair/useCrosshairHover.d.ts +1 -1
  26. package/dist/cjs/hooks/useRangeSlider/index.js +6 -3
  27. package/dist/cjs/hooks/useRangeSlider/types.d.ts +1 -0
  28. package/dist/cjs/hooks/useSeries/index.js +2 -1
  29. package/dist/cjs/hooks/useSeries/prepare-area.d.ts +1 -1
  30. package/dist/cjs/hooks/useSeries/prepare-bar-x.d.ts +1 -1
  31. package/dist/cjs/hooks/useSeries/prepare-bar-y.d.ts +1 -1
  32. package/dist/cjs/hooks/useSeries/prepare-funnel.js +1 -1
  33. package/dist/cjs/hooks/useSeries/prepare-heatmap.d.ts +1 -1
  34. package/dist/cjs/hooks/useSeries/prepare-line.d.ts +1 -1
  35. package/dist/cjs/hooks/useSeries/prepare-pie.js +1 -1
  36. package/dist/cjs/hooks/useSeries/prepare-radar.js +1 -1
  37. package/dist/cjs/hooks/useSeries/prepare-sankey.d.ts +1 -1
  38. package/dist/cjs/hooks/useSeries/prepare-scatter.d.ts +1 -1
  39. package/dist/cjs/hooks/useSeries/prepare-treemap.d.ts +1 -1
  40. package/dist/cjs/hooks/useSeries/prepare-waterfall.d.ts +1 -1
  41. package/dist/cjs/hooks/useSeries/prepareSeries.d.ts +1 -1
  42. package/dist/cjs/hooks/useShapes/area/index.d.ts +1 -1
  43. package/dist/cjs/hooks/useShapes/area/index.js +3 -1
  44. package/dist/cjs/hooks/useShapes/area/prepare-data.d.ts +0 -1
  45. package/dist/cjs/hooks/useShapes/area/prepare-data.js +61 -31
  46. package/dist/cjs/hooks/useShapes/bar-x/index.d.ts +1 -1
  47. package/dist/cjs/hooks/useShapes/bar-x/index.js +2 -1
  48. package/dist/cjs/hooks/useShapes/bar-x/prepare-data.js +1 -1
  49. package/dist/cjs/hooks/useShapes/bar-y/index.d.ts +1 -1
  50. package/dist/cjs/hooks/useShapes/bar-y/index.js +2 -1
  51. package/dist/cjs/hooks/useShapes/bar-y/prepare-data.js +1 -1
  52. package/dist/cjs/hooks/useShapes/funnel/index.d.ts +1 -1
  53. package/dist/cjs/hooks/useShapes/funnel/index.js +2 -1
  54. package/dist/cjs/hooks/useShapes/funnel/prepare-data.js +1 -1
  55. package/dist/cjs/hooks/useShapes/funnel/types.d.ts +1 -1
  56. package/dist/cjs/hooks/useShapes/heatmap/index.d.ts +1 -1
  57. package/dist/cjs/hooks/useShapes/heatmap/index.js +2 -1
  58. package/dist/cjs/hooks/useShapes/index.d.ts +1 -1
  59. package/dist/cjs/hooks/useShapes/index.js +1 -2
  60. package/dist/cjs/hooks/useShapes/line/index.d.ts +1 -1
  61. package/dist/cjs/hooks/useShapes/line/index.js +3 -1
  62. package/dist/cjs/hooks/useShapes/marker.d.ts +1 -1
  63. package/dist/cjs/hooks/useShapes/marker.js +1 -1
  64. package/dist/cjs/hooks/useShapes/pie/index.d.ts +2 -1
  65. package/dist/cjs/hooks/useShapes/pie/index.js +3 -1
  66. package/dist/cjs/hooks/useShapes/pie/prepare-data.js +2 -1
  67. package/dist/cjs/hooks/useShapes/pie/types.d.ts +1 -1
  68. package/dist/cjs/hooks/useShapes/pie/utils.d.ts +1 -1
  69. package/dist/cjs/hooks/useShapes/pie/utils.js +1 -1
  70. package/dist/cjs/hooks/useShapes/radar/index.d.ts +1 -1
  71. package/dist/cjs/hooks/useShapes/radar/index.js +3 -1
  72. package/dist/cjs/hooks/useShapes/radar/prepare-data.js +3 -1
  73. package/dist/cjs/hooks/useShapes/sankey/index.d.ts +1 -1
  74. package/dist/cjs/hooks/useShapes/sankey/index.js +1 -1
  75. package/dist/cjs/hooks/useShapes/scatter/index.d.ts +1 -1
  76. package/dist/cjs/hooks/useShapes/scatter/index.js +1 -1
  77. package/dist/cjs/hooks/useShapes/treemap/index.d.ts +1 -1
  78. package/dist/cjs/hooks/useShapes/treemap/index.js +2 -1
  79. package/dist/cjs/hooks/useShapes/treemap/prepare-data.js +2 -1
  80. package/dist/cjs/hooks/useShapes/treemap/types.d.ts +1 -1
  81. package/dist/cjs/hooks/useShapes/utils.d.ts +1 -1
  82. package/dist/cjs/hooks/useShapes/utils.js +2 -1
  83. package/dist/cjs/hooks/useShapes/waterfall/index.d.ts +1 -1
  84. package/dist/cjs/hooks/useShapes/waterfall/index.js +3 -1
  85. package/dist/cjs/hooks/useTooltip/index.d.ts +1 -1
  86. package/dist/cjs/hooks/useZoom/index.js +1 -1
  87. package/dist/cjs/hooks/useZoom/utils.d.ts +1 -1
  88. package/dist/cjs/hooks/utils/bar-y.js +1 -1
  89. package/dist/cjs/hooks/utils/get-band-size.d.ts +1 -1
  90. package/dist/cjs/types/chart/pie.d.ts +1 -1
  91. package/dist/cjs/utils/chart/axis/common.d.ts +2 -1
  92. package/dist/cjs/utils/chart/axis/common.js +1 -1
  93. package/dist/cjs/utils/chart/axis-generators/bottom.d.ts +2 -1
  94. package/dist/cjs/utils/chart/axis-generators/bottom.js +2 -1
  95. package/dist/cjs/utils/chart/color.js +2 -1
  96. package/dist/cjs/utils/chart/common.js +2 -1
  97. package/dist/cjs/utils/chart/format.d.ts +1 -1
  98. package/dist/cjs/utils/chart/get-closest-data.js +2 -1
  99. package/dist/cjs/utils/chart/legend.d.ts +1 -1
  100. package/dist/cjs/utils/chart/series/sorting.js +1 -1
  101. package/dist/cjs/utils/chart/symbol.js +1 -1
  102. package/dist/cjs/utils/chart/text.d.ts +1 -1
  103. package/dist/cjs/utils/chart/ticks/datetime.js +2 -1
  104. package/dist/cjs/utils/chart/ticks/index.d.ts +1 -1
  105. package/dist/cjs/utils/dispatcher.js +1 -1
  106. package/dist/esm/components/AxisX/AxisX.js +2 -1
  107. package/dist/esm/components/AxisY/AxisY.js +2 -1
  108. package/dist/esm/components/ChartInner/index.js +2 -2
  109. package/dist/esm/components/ChartInner/useChartInnerHandlers.d.ts +1 -1
  110. package/dist/esm/components/ChartInner/useChartInnerHandlers.js +1 -1
  111. package/dist/esm/components/ChartInner/useChartInnerProps.d.ts +1 -1
  112. package/dist/esm/components/ChartInner/useChartInnerState.d.ts +1 -1
  113. package/dist/esm/components/ChartInner/useDefaultState.d.ts +1 -1
  114. package/dist/esm/components/ChartInner/useDefaultState.js +4 -1
  115. package/dist/esm/components/Legend/index.js +3 -1
  116. package/dist/esm/components/RangeSlider/utils.js +1 -1
  117. package/dist/esm/components/Tooltip/index.d.ts +1 -1
  118. package/dist/esm/components/index.js +1 -1
  119. package/dist/esm/components/utils/index.js +1 -1
  120. package/dist/esm/hooks/useAxis/x-axis.js +5 -2
  121. package/dist/esm/hooks/useAxisScales/types.d.ts +1 -1
  122. package/dist/esm/hooks/useAxisScales/x-scale.js +2 -1
  123. package/dist/esm/hooks/useAxisScales/y-scale.js +2 -1
  124. package/dist/esm/hooks/useBrush/index.js +2 -1
  125. package/dist/esm/hooks/useBrush/types.d.ts +1 -1
  126. package/dist/esm/hooks/useBrush/utils.d.ts +1 -1
  127. package/dist/esm/hooks/useBrush/utils.js +2 -1
  128. package/dist/esm/hooks/useCrosshair/index.d.ts +1 -1
  129. package/dist/esm/hooks/useCrosshair/index.js +2 -1
  130. package/dist/esm/hooks/useCrosshair/useCrosshairHover.d.ts +1 -1
  131. package/dist/esm/hooks/useRangeSlider/index.js +6 -3
  132. package/dist/esm/hooks/useRangeSlider/types.d.ts +1 -0
  133. package/dist/esm/hooks/useSeries/index.js +2 -1
  134. package/dist/esm/hooks/useSeries/prepare-area.d.ts +1 -1
  135. package/dist/esm/hooks/useSeries/prepare-bar-x.d.ts +1 -1
  136. package/dist/esm/hooks/useSeries/prepare-bar-y.d.ts +1 -1
  137. package/dist/esm/hooks/useSeries/prepare-funnel.js +1 -1
  138. package/dist/esm/hooks/useSeries/prepare-heatmap.d.ts +1 -1
  139. package/dist/esm/hooks/useSeries/prepare-line.d.ts +1 -1
  140. package/dist/esm/hooks/useSeries/prepare-pie.js +1 -1
  141. package/dist/esm/hooks/useSeries/prepare-radar.js +1 -1
  142. package/dist/esm/hooks/useSeries/prepare-sankey.d.ts +1 -1
  143. package/dist/esm/hooks/useSeries/prepare-scatter.d.ts +1 -1
  144. package/dist/esm/hooks/useSeries/prepare-treemap.d.ts +1 -1
  145. package/dist/esm/hooks/useSeries/prepare-waterfall.d.ts +1 -1
  146. package/dist/esm/hooks/useSeries/prepareSeries.d.ts +1 -1
  147. package/dist/esm/hooks/useShapes/area/index.d.ts +1 -1
  148. package/dist/esm/hooks/useShapes/area/index.js +3 -1
  149. package/dist/esm/hooks/useShapes/area/prepare-data.d.ts +0 -1
  150. package/dist/esm/hooks/useShapes/area/prepare-data.js +61 -31
  151. package/dist/esm/hooks/useShapes/bar-x/index.d.ts +1 -1
  152. package/dist/esm/hooks/useShapes/bar-x/index.js +2 -1
  153. package/dist/esm/hooks/useShapes/bar-x/prepare-data.js +1 -1
  154. package/dist/esm/hooks/useShapes/bar-y/index.d.ts +1 -1
  155. package/dist/esm/hooks/useShapes/bar-y/index.js +2 -1
  156. package/dist/esm/hooks/useShapes/bar-y/prepare-data.js +1 -1
  157. package/dist/esm/hooks/useShapes/funnel/index.d.ts +1 -1
  158. package/dist/esm/hooks/useShapes/funnel/index.js +2 -1
  159. package/dist/esm/hooks/useShapes/funnel/prepare-data.js +1 -1
  160. package/dist/esm/hooks/useShapes/funnel/types.d.ts +1 -1
  161. package/dist/esm/hooks/useShapes/heatmap/index.d.ts +1 -1
  162. package/dist/esm/hooks/useShapes/heatmap/index.js +2 -1
  163. package/dist/esm/hooks/useShapes/index.d.ts +1 -1
  164. package/dist/esm/hooks/useShapes/index.js +1 -2
  165. package/dist/esm/hooks/useShapes/line/index.d.ts +1 -1
  166. package/dist/esm/hooks/useShapes/line/index.js +3 -1
  167. package/dist/esm/hooks/useShapes/marker.d.ts +1 -1
  168. package/dist/esm/hooks/useShapes/marker.js +1 -1
  169. package/dist/esm/hooks/useShapes/pie/index.d.ts +2 -1
  170. package/dist/esm/hooks/useShapes/pie/index.js +3 -1
  171. package/dist/esm/hooks/useShapes/pie/prepare-data.js +2 -1
  172. package/dist/esm/hooks/useShapes/pie/types.d.ts +1 -1
  173. package/dist/esm/hooks/useShapes/pie/utils.d.ts +1 -1
  174. package/dist/esm/hooks/useShapes/pie/utils.js +1 -1
  175. package/dist/esm/hooks/useShapes/radar/index.d.ts +1 -1
  176. package/dist/esm/hooks/useShapes/radar/index.js +3 -1
  177. package/dist/esm/hooks/useShapes/radar/prepare-data.js +3 -1
  178. package/dist/esm/hooks/useShapes/sankey/index.d.ts +1 -1
  179. package/dist/esm/hooks/useShapes/sankey/index.js +1 -1
  180. package/dist/esm/hooks/useShapes/scatter/index.d.ts +1 -1
  181. package/dist/esm/hooks/useShapes/scatter/index.js +1 -1
  182. package/dist/esm/hooks/useShapes/treemap/index.d.ts +1 -1
  183. package/dist/esm/hooks/useShapes/treemap/index.js +2 -1
  184. package/dist/esm/hooks/useShapes/treemap/prepare-data.js +2 -1
  185. package/dist/esm/hooks/useShapes/treemap/types.d.ts +1 -1
  186. package/dist/esm/hooks/useShapes/utils.d.ts +1 -1
  187. package/dist/esm/hooks/useShapes/utils.js +2 -1
  188. package/dist/esm/hooks/useShapes/waterfall/index.d.ts +1 -1
  189. package/dist/esm/hooks/useShapes/waterfall/index.js +3 -1
  190. package/dist/esm/hooks/useTooltip/index.d.ts +1 -1
  191. package/dist/esm/hooks/useZoom/index.js +1 -1
  192. package/dist/esm/hooks/useZoom/utils.d.ts +1 -1
  193. package/dist/esm/hooks/utils/bar-y.js +1 -1
  194. package/dist/esm/hooks/utils/get-band-size.d.ts +1 -1
  195. package/dist/esm/types/chart/pie.d.ts +1 -1
  196. package/dist/esm/utils/chart/axis/common.d.ts +2 -1
  197. package/dist/esm/utils/chart/axis/common.js +1 -1
  198. package/dist/esm/utils/chart/axis-generators/bottom.d.ts +2 -1
  199. package/dist/esm/utils/chart/axis-generators/bottom.js +2 -1
  200. package/dist/esm/utils/chart/color.js +2 -1
  201. package/dist/esm/utils/chart/common.js +2 -1
  202. package/dist/esm/utils/chart/format.d.ts +1 -1
  203. package/dist/esm/utils/chart/get-closest-data.js +2 -1
  204. package/dist/esm/utils/chart/legend.d.ts +1 -1
  205. package/dist/esm/utils/chart/series/sorting.js +1 -1
  206. package/dist/esm/utils/chart/symbol.js +1 -1
  207. package/dist/esm/utils/chart/text.d.ts +1 -1
  208. package/dist/esm/utils/chart/ticks/datetime.js +2 -1
  209. package/dist/esm/utils/chart/ticks/index.d.ts +1 -1
  210. package/dist/esm/utils/dispatcher.js +1 -1
  211. package/package.json +14 -2
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
- import { line, select } from 'd3';
2
+ import { select } from 'd3-selection';
3
+ import { line } from 'd3-shape';
3
4
  import { HtmlLayer } from '../../hooks/useShapes/HtmlLayer';
4
5
  import { block, getLineDashArray } from '../../utils';
5
6
  import './styles.css';
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
- import { line, select } from 'd3';
2
+ import { select } from 'd3-selection';
3
+ import { line } from 'd3-shape';
3
4
  import { HtmlLayer } from '../../hooks/useShapes/HtmlLayer';
4
5
  import { block, getLineDashArray } from '../../utils';
5
6
  import './styles.css';
@@ -61,7 +61,7 @@ export const ChartInner = (props) => {
61
61
  preparedRangeSlider,
62
62
  tooltip: preparedTooltip,
63
63
  });
64
- const { allPreparedSeries, boundsHeight, boundsOffsetLeft, boundsOffsetTop, boundsWidth, handleLegendItemClick, legendConfig, legendItems, preparedLegend, preparedSeries, preparedSeriesOptions, preparedSplit, shapes, shapesData, shapesReady, xAxis, xScale, yAxis, yScale, } = useChartInnerProps(Object.assign(Object.assign({}, props), { clipPathId,
64
+ const { activeLegendItems, allPreparedSeries, boundsHeight, boundsOffsetLeft, boundsOffsetTop, boundsWidth, handleLegendItemClick, legendConfig, legendItems, preparedLegend, preparedSeries, preparedSeriesOptions, preparedSplit, shapes, shapesData, shapesReady, xAxis, xScale, yAxis, yScale, } = useChartInnerProps(Object.assign(Object.assign({}, props), { clipPathId,
65
65
  dispatcher,
66
66
  htmlLayout, plotNode: plotRef.current, preparedChart,
67
67
  rangeSliderState,
@@ -270,7 +270,7 @@ export const ChartInner = (props) => {
270
270
  ((_e = xAxis === null || xAxis === void 0 ? void 0 : xAxis.rangeSlider) === null || _e === void 0 ? void 0 : _e.enabled) &&
271
271
  preparedLegend &&
272
272
  debouncedAllPreparedSeries &&
273
- preparedSeriesOptions && (React.createElement(RangeSlider, { boundsOffsetLeft: debouncedOffsetLeft, boundsWidth: debouncedBoundsWidth, height: height, htmlLayout: htmlLayout, onUpdate: updateRangeSliderState, preparedChart: preparedChart, preparedLegend: preparedLegend, preparedSeries: debouncedAllPreparedSeries, preparedSeriesOptions: preparedSeriesOptions, preparedRangeSlider: xAxis.rangeSlider, rangeSliderState: rangeSliderState, ref: rangeSliderRef, width: width, xAxis: data.xAxis, yAxis: data.yAxis, legendConfig: legendConfig })),
273
+ preparedSeriesOptions && (React.createElement(RangeSlider, { activeLegendItems: activeLegendItems !== null && activeLegendItems !== void 0 ? activeLegendItems : [], boundsOffsetLeft: debouncedOffsetLeft, boundsWidth: debouncedBoundsWidth, height: height, htmlLayout: htmlLayout, onUpdate: updateRangeSliderState, preparedChart: preparedChart, preparedLegend: preparedLegend, preparedSeries: debouncedAllPreparedSeries, preparedSeriesOptions: preparedSeriesOptions, preparedRangeSlider: xAxis.rangeSlider, rangeSliderState: rangeSliderState, ref: rangeSliderRef, width: width, xAxis: data.xAxis, yAxis: data.yAxis, legendConfig: legendConfig })),
274
274
  (preparedLegend === null || preparedLegend === void 0 ? void 0 : preparedLegend.enabled) && legendConfig && (React.createElement(Legend, { chartSeries: preparedSeries, legend: preparedLegend, items: legendItems, config: legendConfig, onItemClick: handleLegendItemClick, onUpdate: unpinTooltip, htmlLayout: htmlLayout }))));
275
275
  return (React.createElement("div", { className: b() },
276
276
  React.createElement("svg", { ref: svgRef, width: width, height: height,
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import type { Dispatch } from 'd3';
2
+ import type { Dispatch } from 'd3-dispatch';
3
3
  import type { PreparedXAxis, PreparedYAxis, ShapeData } from '../../hooks';
4
4
  import type { ChartScale } from '../../hooks/useAxisScales/types';
5
5
  import type { useChartInnerState } from './useChartInnerState';
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { pointer } from 'd3';
2
+ import { pointer } from 'd3-selection';
3
3
  import get from 'lodash/get';
4
4
  import throttle from 'lodash/throttle';
5
5
  import { IS_TOUCH_ENABLED } from '../../constants';
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import type { Dispatch } from 'd3';
2
+ import type { Dispatch } from 'd3-dispatch';
3
3
  import type { ChartScale, LegendItem, OnLegendItemClick, PreparedLegend, PreparedSeries, PreparedSplit, PreparedXAxis, PreparedYAxis, RangeSliderState, ShapeData, ZoomState } from '../../hooks';
4
4
  import type { PreparedChart } from '../../hooks/types';
5
5
  import type { LegendConfig } from '../../types';
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import type { Dispatch } from 'd3';
2
+ import type { Dispatch } from 'd3-dispatch';
3
3
  import type { PreparedRangeSlider, PreparedTooltip, RangeSliderState, ZoomState } from '../../hooks';
4
4
  type Props = {
5
5
  dispatcher: Dispatch<object>;
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import type { Dispatch } from 'd3';
2
+ import type { Dispatch } from 'd3-dispatch';
3
3
  import type { PreparedXAxis, PreparedYAxis, ShapeData } from '../../hooks';
4
4
  import type { ChartScale } from '../../hooks/useAxisScales/types';
5
5
  type Props = {
@@ -16,7 +16,7 @@ export function useDefaultState(props) {
16
16
  // Defer dispatch so shape components (Area, Line, etc.) register their hover-shape.*
17
17
  // listeners first; parent effects run before child effects in React.
18
18
  queueMicrotask(() => {
19
- var _a;
19
+ var _a, _b;
20
20
  const x = calculateNumericProperty({ value: hoveredPosition.x, base: boundsWidth });
21
21
  const y = calculateNumericProperty({ value: hoveredPosition.y, base: boundsHeight });
22
22
  if (x === undefined || y === undefined) {
@@ -48,6 +48,9 @@ export function useDefaultState(props) {
48
48
  clientX: rect.left + svgPointerX,
49
49
  clientY: rect.top + svgPointerY,
50
50
  });
51
+ if (syntheticEvent) {
52
+ (_b = svgRef.current) === null || _b === void 0 ? void 0 : _b.dispatchEvent(syntheticEvent);
53
+ }
51
54
  dispatcher.call(EventType.POINTERMOVE_CHART, {}, {
52
55
  hovered: closest,
53
56
  xAxis,
@@ -1,5 +1,7 @@
1
1
  import React from 'react';
2
- import { scaleLinear, select, symbol } from 'd3';
2
+ import { scaleLinear } from 'd3-scale';
3
+ import { select } from 'd3-selection';
4
+ import { symbol } from 'd3-shape';
3
5
  import { CONTINUOUS_LEGEND_SIZE } from '../../constants';
4
6
  import { formatNumber } from '../../libs';
5
7
  import { block, createGradientRect, getContinuesColorFn, getLabelsSize, getSymbol, getUniqId, } from '../../utils';
@@ -1,4 +1,4 @@
1
- import { path } from 'd3';
1
+ import { path } from 'd3-path';
2
2
  export function getFramedPath(args) {
3
3
  const { height, strokeWidth, width } = args;
4
4
  const p = path();
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import type { Dispatch } from 'd3';
2
+ import type { Dispatch } from 'd3-dispatch';
3
3
  import type { PreparedTooltip, PreparedXAxis, PreparedYAxis } from '../../hooks';
4
4
  import './styles.css';
5
5
  type TooltipProps = {
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { select } from 'd3';
2
+ import { select } from 'd3-selection';
3
3
  import debounce from 'lodash/debounce';
4
4
  import { i18nFactory } from '../i18n';
5
5
  import { getUniqId } from '../utils';
@@ -1,6 +1,6 @@
1
1
  import { duration } from '@gravity-ui/date-utils';
2
- import { line as lineGenerator } from 'd3';
3
2
  import { select } from 'd3-selection';
3
+ import { line as lineGenerator } from 'd3-shape';
4
4
  import { getLineDashArray, isTimeScale } from '../../utils';
5
5
  export function getInitialRangeSliderState(args) {
6
6
  const { defaultRange, xScale } = args;
@@ -1,6 +1,6 @@
1
1
  import get from 'lodash/get';
2
2
  import { DASH_STYLE, DEFAULT_AXIS_LABEL_FONT_SIZE, SERIES_TYPE, axisCrosshairDefaults, axisLabelsDefaults, axisTickMarksDefaults, xAxisTitleDefaults, } from '../../constants';
3
- import { TIME_UNITS, calculateCos, calculateNumericProperty, formatAxisTickLabel, getDefaultDateFormat, getHorizontalHtmlTextHeight, getHorizontalSvgTextHeight, getLabelsSize, getMinSpaceBetween, getTextSizeFn, isAxisRelatedSeries, wrapText, } from '../../utils';
3
+ import { TIME_UNITS, calculateCos, calculateNumericProperty, calculateSin, formatAxisTickLabel, getDefaultDateFormat, getHorizontalHtmlTextHeight, getHorizontalSvgTextHeight, getLabelsSize, getMinSpaceBetween, getTextSizeFn, isAxisRelatedSeries, wrapText, } from '../../utils';
4
4
  import { getXAxisTickValues } from '../../utils/chart/axis/x-axis';
5
5
  import { createXScale } from '../useAxisScales';
6
6
  import { getPreparedRangeSlider } from './range-slider';
@@ -49,7 +49,10 @@ async function setLabelSettings({ axis, seriesData, width, axisLabels, }) {
49
49
  html: axis.labels.html,
50
50
  })).maxHeight
51
51
  : axis.labels.lineHeight;
52
- const maxHeight = rotation ? calculateCos(rotation) * axis.labels.maxWidth : labelsHeight;
52
+ const maxHeight = rotation
53
+ ? Math.abs(calculateSin(rotation)) * axis.labels.maxWidth +
54
+ Math.abs(calculateCos(rotation)) * axis.labels.lineHeight
55
+ : labelsHeight;
53
56
  axis.labels.height = Math.min(maxHeight, labelsHeight);
54
57
  axis.labels.rotation = rotation;
55
58
  }
@@ -1,4 +1,4 @@
1
- import type { ScaleBand, ScaleLinear, ScaleTime } from 'd3';
1
+ import type { ScaleBand, ScaleLinear, ScaleTime } from 'd3-scale';
2
2
  type ChartScaleBand = ScaleBand<string>;
3
3
  export type ChartScaleLinear = ScaleLinear<number, number>;
4
4
  export type ChartScaleTime = ScaleTime<number, number>;
@@ -1,4 +1,5 @@
1
- import { extent, scaleBand, scaleLinear, scaleLog, scaleUtc } from 'd3';
1
+ import { extent } from 'd3-array';
2
+ import { scaleBand, scaleLinear, scaleLog, scaleUtc } from 'd3-scale';
2
3
  import get from 'lodash/get';
3
4
  import { DEFAULT_AXIS_TYPE, SERIES_TYPE } from '../../constants';
4
5
  import { getDefaultMaxXAxisValue, getDefaultMinXAxisValue, getDomainDataXBySeries, getEffectiveXRange, } from '../../utils';
@@ -1,4 +1,5 @@
1
- import { extent, scaleBand, scaleLinear, scaleLog, scaleUtc, tickStep, ticks } from 'd3';
1
+ import { extent, tickStep, ticks } from 'd3-array';
2
+ import { scaleBand, scaleLinear, scaleLog, scaleUtc } from 'd3-scale';
2
3
  import get from 'lodash/get';
3
4
  import { getTickValues } from '../../components/AxisY/utils';
4
5
  import { SERIES_TYPE } from '../../constants';
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
- import { brush, brushX, brushY, pointer, select } from 'd3';
2
+ import { brush, brushX, brushY } from 'd3-brush';
3
+ import { pointer, select } from 'd3-selection';
3
4
  import { block } from '../../utils';
4
5
  import { getDefaultSelection, getNormalizedSelection, setBrushBorder, setBrushHandles, } from './utils';
5
6
  import './styles.css';
@@ -1,4 +1,4 @@
1
- import type { BrushBehavior } from 'd3';
1
+ import type { BrushBehavior } from 'd3-brush';
2
2
  import type { ZoomType } from '../../constants';
3
3
  import type { ChartBrush, DeepRequired } from '../../types';
4
4
  export type BrushSelection = [number, number] | [[number, number], [number, number]];
@@ -1,4 +1,4 @@
1
- import type { BrushBehavior } from 'd3';
1
+ import type { BrushBehavior } from 'd3-brush';
2
2
  import type { ChartBrush, DeepRequired } from '../../types';
3
3
  import type { BrushSelection } from './types';
4
4
  export declare function isOneDimensionalSelection(selection?: BrushSelection | null): selection is [number, number];
@@ -1,4 +1,5 @@
1
- import { path, select } from 'd3';
1
+ import { path } from 'd3-path';
2
+ import { select } from 'd3-selection';
2
3
  import round from 'lodash/round';
3
4
  export function isOneDimensionalSelection(selection) {
4
5
  if (!Array.isArray(selection)) {
@@ -1,4 +1,4 @@
1
- import type { Dispatch } from 'd3';
1
+ import type { Dispatch } from 'd3-dispatch';
2
2
  import type { ChartScale, PreparedSplit, PreparedXAxis, PreparedYAxis } from '../../hooks';
3
3
  type Props = {
4
4
  xAxis: PreparedXAxis | null;
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
- import { line, select } from 'd3';
2
+ import { select } from 'd3-selection';
3
+ import { line } from 'd3-shape';
3
4
  import { getAxisPlotsPosition, getLineDashArray } from '../../utils';
4
5
  import { getXValue, getYValue } from '../useShapes/utils';
5
6
  import { useCrosshairHover } from './useCrosshairHover';
@@ -1,4 +1,4 @@
1
- import type { Dispatch } from 'd3';
1
+ import type { Dispatch } from 'd3-dispatch';
2
2
  import type { PointPosition, TooltipDataChunk } from '../../types';
3
3
  type Args = {
4
4
  dispatcher: Dispatch<object>;
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { pointer } from 'd3';
2
+ import { pointer } from 'd3-selection';
3
3
  import { isEqual } from 'lodash';
4
4
  import { SERIES_TYPE } from '../../constants';
5
5
  import { isBandScale } from '../../utils';
@@ -17,15 +17,18 @@ const CLIP_PATH_BY_SERIES_TYPE = {
17
17
  [SERIES_TYPE.Scatter]: true,
18
18
  };
19
19
  export function useRangeSlider(props) {
20
- const { boundsWidth, boundsOffsetLeft, clipPathId, height, htmlLayout, onUpdate, preparedChart, preparedLegend, legendConfig, preparedSeries, preparedSeriesOptions, preparedRangeSlider, rangeSliderState, width, xAxis, yAxis, } = props;
20
+ const { activeLegendItems, boundsWidth, boundsOffsetLeft, clipPathId, height, htmlLayout, onUpdate, preparedChart, preparedLegend, legendConfig, preparedSeries, preparedSeriesOptions, preparedRangeSlider, rangeSliderState, width, xAxis, yAxis, } = props;
21
21
  const filteredPreparedSeries = React.useMemo(() => {
22
22
  return preparedSeries.filter((s) => {
23
+ if (s.legend.enabled && !activeLegendItems.includes(s.legend.groupId)) {
24
+ return false;
25
+ }
23
26
  if ('rangeSlider' in s && !s.rangeSlider.visible) {
24
27
  return false;
25
28
  }
26
29
  return true;
27
30
  });
28
- }, [preparedSeries]);
31
+ }, [preparedSeries, activeLegendItems]);
29
32
  const { xAxis: preparedXAxis, yAxis: preparedYAxis } = useAxis({
30
33
  boundsHeight: preparedRangeSlider.height,
31
34
  height,
@@ -9,6 +9,7 @@ export type RangeSliderState = {
9
9
  min: number;
10
10
  };
11
11
  export interface RangeSliderProps {
12
+ activeLegendItems: string[];
12
13
  boundsOffsetLeft: number;
13
14
  boundsWidth: number;
14
15
  height: number;
@@ -1,4 +1,5 @@
1
- import { group, scaleOrdinal } from 'd3';
1
+ import { group } from 'd3-array';
2
+ import { scaleOrdinal } from 'd3-scale';
2
3
  import { getSeriesNames } from '../../utils';
3
4
  import { prepareSeries } from './prepareSeries';
4
5
  export const getVisibleSeries = ({ preparedSeries, activeLegendItems, }) => {
@@ -1,4 +1,4 @@
1
- import type { ScaleOrdinal } from 'd3';
1
+ import type { ScaleOrdinal } from 'd3-scale';
2
2
  import type { AreaSeries, ChartSeriesOptions } from '../../types';
3
3
  import type { PreparedAreaSeries, PreparedLegend } from './types';
4
4
  export declare const DEFAULT_LINE_WIDTH = 1;
@@ -1,4 +1,4 @@
1
- import type { ScaleOrdinal } from 'd3';
1
+ import type { ScaleOrdinal } from 'd3-scale';
2
2
  import type { BarXSeries, ChartSeriesOptions } from '../../types';
3
3
  import type { PreparedLegend, PreparedSeries } from './types';
4
4
  type PrepareBarXSeriesArgs = {
@@ -1,4 +1,4 @@
1
- import type { ScaleOrdinal } from 'd3';
1
+ import type { ScaleOrdinal } from 'd3-scale';
2
2
  import type { BarYSeries, BarYSeriesData, ChartSeriesOptions } from '../../types';
3
3
  import type { PreparedLegend } from './types';
4
4
  type PrepareBarYSeriesArgs = {
@@ -1,4 +1,4 @@
1
- import { scaleOrdinal } from 'd3';
1
+ import { scaleOrdinal } from 'd3-scale';
2
2
  import get from 'lodash/get';
3
3
  import { DEFAULT_DATALABELS_STYLE } from '../../constants';
4
4
  import { getUniqId } from '../../utils';
@@ -1,4 +1,4 @@
1
- import type { ScaleOrdinal } from 'd3';
1
+ import type { ScaleOrdinal } from 'd3-scale';
2
2
  import type { ChartSeriesOptions, HeatmapSeries } from '../../types';
3
3
  import type { PreparedLegend, PreparedSeries } from './types';
4
4
  type PrepareHeatmapSeriesArgs = {
@@ -1,4 +1,4 @@
1
- import type { ScaleOrdinal } from 'd3';
1
+ import type { ScaleOrdinal } from 'd3-scale';
2
2
  import type { ChartSeriesOptions, LineSeries } from '../../types';
3
3
  import type { PreparedLegend, PreparedLineSeries } from './types';
4
4
  export declare const DEFAULT_LEGEND_SYMBOL_SIZE = 16;
@@ -1,4 +1,4 @@
1
- import { scaleOrdinal } from 'd3';
1
+ import { scaleOrdinal } from 'd3-scale';
2
2
  import get from 'lodash/get';
3
3
  import { DEFAULT_DATALABELS_STYLE } from '../../constants';
4
4
  import { getUniqId } from '../../utils';
@@ -1,4 +1,4 @@
1
- import { scaleOrdinal } from 'd3';
1
+ import { scaleOrdinal } from 'd3-scale';
2
2
  import get from 'lodash/get';
3
3
  import merge from 'lodash/merge';
4
4
  import { DEFAULT_DATALABELS_STYLE } from '../../constants';
@@ -1,4 +1,4 @@
1
- import type { ScaleOrdinal } from 'd3';
1
+ import type { ScaleOrdinal } from 'd3-scale';
2
2
  import type { ChartSeriesOptions, SankeySeries } from '../../types';
3
3
  import type { PreparedLegend, PreparedSankeySeries } from './types';
4
4
  type PrepareSankeySeriesArgs = {
@@ -1,4 +1,4 @@
1
- import type { ScaleOrdinal } from 'd3';
1
+ import type { ScaleOrdinal } from 'd3-scale';
2
2
  import type { ChartSeriesOptions, ScatterSeries } from '../../types';
3
3
  import type { PreparedLegend, PreparedScatterSeries } from './types';
4
4
  interface PrepareScatterSeriesArgs {
@@ -1,4 +1,4 @@
1
- import type { ScaleOrdinal } from 'd3';
1
+ import type { ScaleOrdinal } from 'd3-scale';
2
2
  import type { ChartSeriesOptions, TreemapSeries } from '../../types';
3
3
  import type { PreparedLegend, PreparedTreemapSeries } from './types';
4
4
  type PrepareTreemapSeriesArgs = {
@@ -1,4 +1,4 @@
1
- import type { ScaleOrdinal } from 'd3';
1
+ import type { ScaleOrdinal } from 'd3-scale';
2
2
  import type { WaterfallSeries } from '../../types';
3
3
  import type { PreparedLegend, PreparedSeries } from './types';
4
4
  type PrepareWaterfallSeriesArgs = {
@@ -1,4 +1,4 @@
1
- import type { ScaleOrdinal } from 'd3';
1
+ import type { ScaleOrdinal } from 'd3-scale';
2
2
  import type { ChartSeries, ChartSeriesOptions } from '../../types';
3
3
  import type { PreparedLegend, PreparedSeries } from './types';
4
4
  export declare function prepareSeries(args: {
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import type { Dispatch } from 'd3';
2
+ import type { Dispatch } from 'd3-dispatch';
3
3
  import type { PreparedSeriesOptions } from '../../useSeries/types';
4
4
  import type { PreparedAreaData } from './types';
5
5
  type Args = {
@@ -1,5 +1,7 @@
1
1
  import React from 'react';
2
- import { area as areaGenerator, color, line as lineGenerator, select } from 'd3';
2
+ import { color } from 'd3-color';
3
+ import { select } from 'd3-selection';
4
+ import { area as areaGenerator, line as lineGenerator } from 'd3-shape';
3
5
  import get from 'lodash/get';
4
6
  import { block, filterOverlappingLabels } from '../../../utils';
5
7
  import { HtmlLayer } from '../HtmlLayer';
@@ -9,7 +9,6 @@ export declare const prepareAreaData: (args: {
9
9
  xScale: ChartScale;
10
10
  yAxis: PreparedYAxis[];
11
11
  yScale: (ChartScale | undefined)[];
12
- boundsHeight: number;
13
12
  split: PreparedSplit;
14
13
  isOutsideBounds: (x: number, y: number) => boolean;
15
14
  isRangeSlider?: boolean;
@@ -1,4 +1,6 @@
1
- import { group } from 'd3';
1
+ import { group } from 'd3-array';
2
+ import isNil from 'lodash/isNil';
3
+ import round from 'lodash/round';
2
4
  import { getDataCategoryValue, getLabelsSize, getTextSizeFn } from '../../../utils';
3
5
  import { getFormattedValue } from '../../../utils/chart/format';
4
6
  import { getXValue, getYValue } from '../utils';
@@ -75,7 +77,7 @@ async function prepareDataLabels({ series, points, xMax, yAxisTop, isOutsideBoun
75
77
  }
76
78
  export const prepareAreaData = async (args) => {
77
79
  var _a, _b, _c;
78
- const { series, xAxis, xScale, yAxis, yScale, boundsHeight: plotHeight, split, isOutsideBounds, isRangeSlider, } = args;
80
+ const { series, xAxis, xScale, yAxis, yScale, split, isOutsideBounds, isRangeSlider } = args;
79
81
  const [_xMin, xRangeMax] = xScale.range();
80
82
  const xMax = xRangeMax;
81
83
  const result = [];
@@ -92,6 +94,38 @@ export const prepareAreaData = async (args) => {
92
94
  for (let i = 0; i < list.length; i++) {
93
95
  const [_stackId, seriesStack] = list[i];
94
96
  const xValues = getXValues(seriesStack, xAxis, xScale);
97
+ const isPercentStacking = seriesStack.some((s) => s.stacking === 'percent');
98
+ const stackValues = Object.fromEntries(xValues.map(([key]) => [key, 0]));
99
+ const ratio = Object.fromEntries(xValues.map(([key]) => [key, 1]));
100
+ if (isPercentStacking) {
101
+ seriesStack.forEach((s) => {
102
+ const yAxisIndex = s.yAxis;
103
+ const seriesYScale = yScale[yAxisIndex];
104
+ if (!seriesYScale) {
105
+ return;
106
+ }
107
+ s.data.forEach((d, index) => {
108
+ var _a, _b, _c;
109
+ const yDataValue = (_a = d.y) !== null && _a !== void 0 ? _a : null;
110
+ if (yDataValue &&
111
+ !(isNil((_b = s.data[index - 1]) === null || _b === void 0 ? void 0 : _b.y) && isNil((_c = s.data[index + 1]) === null || _c === void 0 ? void 0 : _c.y))) {
112
+ const x = String(xAxis.type === 'category'
113
+ ? getDataCategoryValue({
114
+ axisDirection: 'x',
115
+ categories: xAxis.categories || [],
116
+ data: d,
117
+ })
118
+ : d.x);
119
+ stackValues[x] += Number(yDataValue);
120
+ }
121
+ });
122
+ });
123
+ xValues.forEach(([x]) => {
124
+ if (stackValues[x]) {
125
+ ratio[x] = 100 / stackValues[x];
126
+ }
127
+ });
128
+ }
95
129
  const positiveStackValues = new Map();
96
130
  const negativeStackValues = new Map();
97
131
  xValues.forEach(([key]) => {
@@ -132,12 +166,22 @@ export const prepareAreaData = async (args) => {
132
166
  x,
133
167
  y: 0,
134
168
  };
135
- const yDataValue = (_b = d.y) !== null && _b !== void 0 ? _b : null;
169
+ let yDataValue = (_b = d.y) !== null && _b !== void 0 ? _b : null;
136
170
  if (s.nullMode === 'connect' && yDataValue === null) {
137
171
  return pointsAcc;
138
172
  }
139
- const yValue = getYValue({ point: d, yAxis: seriesYAxis, yScale: seriesYScale });
173
+ if (yDataValue && isPercentStacking) {
174
+ yDataValue = Number(yDataValue) * ratio[x];
175
+ }
176
+ let yValue = getYValue({
177
+ point: {
178
+ y: yDataValue,
179
+ },
180
+ yAxis: seriesYAxis,
181
+ yScale: seriesYScale,
182
+ });
140
183
  if (typeof yDataValue === 'number' && yValue !== null) {
184
+ yValue = round(yValue, 2);
141
185
  const prevPoint = seriesData.get((_c = xValues[index - 1]) === null || _c === void 0 ? void 0 : _c[0]);
142
186
  const nextPoint = seriesData.get((_d = xValues[index + 1]) === null || _d === void 0 ? void 0 : _d[0]);
143
187
  const currentPointStackHeight = Math.abs(yMin - yValue);
@@ -145,21 +189,30 @@ export const prepareAreaData = async (args) => {
145
189
  const positiveStackHeights = positiveStackValues.get(x);
146
190
  let prevSectionStackHeight = (_e = positiveStackHeights === null || positiveStackHeights === void 0 ? void 0 : positiveStackHeights.prev) !== null && _e !== void 0 ? _e : 0;
147
191
  let nextSectionStackHeight = (_f = positiveStackHeights === null || positiveStackHeights === void 0 ? void 0 : positiveStackHeights.next) !== null && _f !== void 0 ? _f : 0;
148
- pointsAcc.push({
192
+ const point = {
149
193
  y0: yAxisTop + yMin - prevSectionStackHeight,
150
194
  x: xValue,
151
195
  y: yAxisTop + yValue - prevSectionStackHeight,
152
196
  data: d,
153
197
  series: s,
154
- });
198
+ };
199
+ pointsAcc.push(point);
155
200
  if (prevSectionStackHeight !== nextSectionStackHeight) {
156
- pointsAcc.push({
201
+ const point2 = {
157
202
  y0: yAxisTop + yMin - nextSectionStackHeight,
158
203
  x: xValue,
159
204
  y: yAxisTop + yValue - nextSectionStackHeight,
160
205
  data: d,
161
206
  series: s,
162
- });
207
+ };
208
+ pointsAcc.push(point2);
209
+ if (isPercentStacking) {
210
+ const newYValue = yAxisTop +
211
+ yValue -
212
+ Math.max(prevSectionStackHeight, nextSectionStackHeight);
213
+ point.y = newYValue;
214
+ point2.y = newYValue;
215
+ }
163
216
  }
164
217
  if ((prevPoint === null || prevPoint === void 0 ? void 0 : prevPoint.y) !== null) {
165
218
  prevSectionStackHeight =
@@ -253,29 +306,6 @@ export const prepareAreaData = async (args) => {
253
306
  htmlElements: [],
254
307
  });
255
308
  }
256
- if (seriesStack.some((s) => s.stacking === 'percent')) {
257
- xValues.forEach(([x], index) => {
258
- var _a;
259
- const stackHeight = ((_a = positiveStackValues.get(x)) === null || _a === void 0 ? void 0 : _a.prev) || 0;
260
- let acc = 0;
261
- const ratio = plotHeight / stackHeight;
262
- seriesStackData.forEach((item) => {
263
- const point = item.points[index];
264
- if (point.y !== null && point.y !== undefined) {
265
- const height = (point.y0 - point.y) * ratio;
266
- const nextAcc = acc + height;
267
- point.y0 = plotHeight - acc;
268
- point.y = plotHeight - nextAcc;
269
- acc = nextAcc;
270
- }
271
- });
272
- });
273
- seriesStackData.forEach((item) => {
274
- item.markers.forEach((marker) => {
275
- marker.clipped = isOutsideBounds(marker.point.x, marker.point.y);
276
- });
277
- });
278
- }
279
309
  for (let itemIndex = 0; itemIndex < seriesStackData.length; itemIndex++) {
280
310
  const item = seriesStackData[itemIndex];
281
311
  const currentYAxis = yAxis[item.series.yAxis];
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import type { Dispatch } from 'd3';
2
+ import type { Dispatch } from 'd3-dispatch';
3
3
  import type { PreparedSeriesOptions } from '../../useSeries/types';
4
4
  import type { PreparedBarXData } from './types';
5
5
  export { prepareBarXData } from './prepare-data';
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
- import { color, select } from 'd3';
2
+ import { color } from 'd3-color';
3
+ import { select } from 'd3-selection';
3
4
  import get from 'lodash/get';
4
5
  import { block, filterOverlappingLabels } from '../../../utils';
5
6
  import { HtmlLayer } from '../HtmlLayer';
@@ -1,4 +1,4 @@
1
- import { ascending, descending, max, reverse, sort } from 'd3';
1
+ import { ascending, descending, max, reverse, sort } from 'd3-array';
2
2
  import get from 'lodash/get';
3
3
  import { getDataCategoryValue, getLabelsSize } from '../../../utils';
4
4
  import { getFormattedValue } from '../../../utils/chart/format';
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import type { Dispatch } from 'd3';
2
+ import type { Dispatch } from 'd3-dispatch';
3
3
  import type { PreparedSeriesOptions } from '../../useSeries/types';
4
4
  import type { BarYShapesArgs } from './types';
5
5
  export { prepareBarYData } from './prepare-data';
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
- import { color, select } from 'd3';
2
+ import { color } from 'd3-color';
3
+ import { select } from 'd3-selection';
3
4
  import get from 'lodash/get';
4
5
  import { block } from '../../../utils';
5
6
  import { HtmlLayer } from '../HtmlLayer';
@@ -1,4 +1,4 @@
1
- import { ascending, descending, sort } from 'd3';
1
+ import { ascending, descending, sort } from 'd3-array';
2
2
  import get from 'lodash/get';
3
3
  import { filterOverlappingLabels, getHtmlLabelConstraintedPosition, getLabelsSize, getSvgLabelConstraintedPosition, getTextSizeFn, } from '../../../utils';
4
4
  import { getFormattedValue } from '../../../utils/chart/format';
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import type { Dispatch } from 'd3';
2
+ import type { Dispatch } from 'd3-dispatch';
3
3
  import type { PreparedSeriesOptions } from '../../useSeries/types';
4
4
  import type { PreparedFunnelData } from './types';
5
5
  export { prepareFunnelData } from './prepare-data';