@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.
- package/dist/cjs/components/AxisX/AxisX.js +2 -1
- package/dist/cjs/components/AxisY/AxisY.js +2 -1
- package/dist/cjs/components/ChartInner/index.js +2 -2
- package/dist/cjs/components/ChartInner/useChartInnerHandlers.d.ts +1 -1
- package/dist/cjs/components/ChartInner/useChartInnerHandlers.js +1 -1
- package/dist/cjs/components/ChartInner/useChartInnerProps.d.ts +1 -1
- package/dist/cjs/components/ChartInner/useChartInnerState.d.ts +1 -1
- package/dist/cjs/components/ChartInner/useDefaultState.d.ts +1 -1
- package/dist/cjs/components/ChartInner/useDefaultState.js +4 -1
- package/dist/cjs/components/Legend/index.js +3 -1
- package/dist/cjs/components/RangeSlider/utils.js +1 -1
- package/dist/cjs/components/Tooltip/index.d.ts +1 -1
- package/dist/cjs/components/index.js +1 -1
- package/dist/cjs/components/utils/index.js +1 -1
- package/dist/cjs/hooks/useAxis/x-axis.js +5 -2
- package/dist/cjs/hooks/useAxisScales/types.d.ts +1 -1
- package/dist/cjs/hooks/useAxisScales/x-scale.js +2 -1
- package/dist/cjs/hooks/useAxisScales/y-scale.js +2 -1
- package/dist/cjs/hooks/useBrush/index.js +2 -1
- package/dist/cjs/hooks/useBrush/types.d.ts +1 -1
- package/dist/cjs/hooks/useBrush/utils.d.ts +1 -1
- package/dist/cjs/hooks/useBrush/utils.js +2 -1
- package/dist/cjs/hooks/useCrosshair/index.d.ts +1 -1
- package/dist/cjs/hooks/useCrosshair/index.js +2 -1
- package/dist/cjs/hooks/useCrosshair/useCrosshairHover.d.ts +1 -1
- package/dist/cjs/hooks/useRangeSlider/index.js +6 -3
- package/dist/cjs/hooks/useRangeSlider/types.d.ts +1 -0
- package/dist/cjs/hooks/useSeries/index.js +2 -1
- package/dist/cjs/hooks/useSeries/prepare-area.d.ts +1 -1
- package/dist/cjs/hooks/useSeries/prepare-bar-x.d.ts +1 -1
- package/dist/cjs/hooks/useSeries/prepare-bar-y.d.ts +1 -1
- package/dist/cjs/hooks/useSeries/prepare-funnel.js +1 -1
- package/dist/cjs/hooks/useSeries/prepare-heatmap.d.ts +1 -1
- package/dist/cjs/hooks/useSeries/prepare-line.d.ts +1 -1
- package/dist/cjs/hooks/useSeries/prepare-pie.js +1 -1
- package/dist/cjs/hooks/useSeries/prepare-radar.js +1 -1
- package/dist/cjs/hooks/useSeries/prepare-sankey.d.ts +1 -1
- package/dist/cjs/hooks/useSeries/prepare-scatter.d.ts +1 -1
- package/dist/cjs/hooks/useSeries/prepare-treemap.d.ts +1 -1
- package/dist/cjs/hooks/useSeries/prepare-waterfall.d.ts +1 -1
- package/dist/cjs/hooks/useSeries/prepareSeries.d.ts +1 -1
- package/dist/cjs/hooks/useShapes/area/index.d.ts +1 -1
- package/dist/cjs/hooks/useShapes/area/index.js +3 -1
- package/dist/cjs/hooks/useShapes/area/prepare-data.d.ts +0 -1
- package/dist/cjs/hooks/useShapes/area/prepare-data.js +61 -31
- package/dist/cjs/hooks/useShapes/bar-x/index.d.ts +1 -1
- package/dist/cjs/hooks/useShapes/bar-x/index.js +2 -1
- package/dist/cjs/hooks/useShapes/bar-x/prepare-data.js +1 -1
- package/dist/cjs/hooks/useShapes/bar-y/index.d.ts +1 -1
- package/dist/cjs/hooks/useShapes/bar-y/index.js +2 -1
- package/dist/cjs/hooks/useShapes/bar-y/prepare-data.js +1 -1
- package/dist/cjs/hooks/useShapes/funnel/index.d.ts +1 -1
- package/dist/cjs/hooks/useShapes/funnel/index.js +2 -1
- package/dist/cjs/hooks/useShapes/funnel/prepare-data.js +1 -1
- package/dist/cjs/hooks/useShapes/funnel/types.d.ts +1 -1
- package/dist/cjs/hooks/useShapes/heatmap/index.d.ts +1 -1
- package/dist/cjs/hooks/useShapes/heatmap/index.js +2 -1
- package/dist/cjs/hooks/useShapes/index.d.ts +1 -1
- package/dist/cjs/hooks/useShapes/index.js +1 -2
- package/dist/cjs/hooks/useShapes/line/index.d.ts +1 -1
- package/dist/cjs/hooks/useShapes/line/index.js +3 -1
- package/dist/cjs/hooks/useShapes/marker.d.ts +1 -1
- package/dist/cjs/hooks/useShapes/marker.js +1 -1
- package/dist/cjs/hooks/useShapes/pie/index.d.ts +2 -1
- package/dist/cjs/hooks/useShapes/pie/index.js +3 -1
- package/dist/cjs/hooks/useShapes/pie/prepare-data.js +2 -1
- package/dist/cjs/hooks/useShapes/pie/types.d.ts +1 -1
- package/dist/cjs/hooks/useShapes/pie/utils.d.ts +1 -1
- package/dist/cjs/hooks/useShapes/pie/utils.js +1 -1
- package/dist/cjs/hooks/useShapes/radar/index.d.ts +1 -1
- package/dist/cjs/hooks/useShapes/radar/index.js +3 -1
- package/dist/cjs/hooks/useShapes/radar/prepare-data.js +3 -1
- package/dist/cjs/hooks/useShapes/sankey/index.d.ts +1 -1
- package/dist/cjs/hooks/useShapes/sankey/index.js +1 -1
- package/dist/cjs/hooks/useShapes/scatter/index.d.ts +1 -1
- package/dist/cjs/hooks/useShapes/scatter/index.js +1 -1
- package/dist/cjs/hooks/useShapes/treemap/index.d.ts +1 -1
- package/dist/cjs/hooks/useShapes/treemap/index.js +2 -1
- package/dist/cjs/hooks/useShapes/treemap/prepare-data.js +2 -1
- package/dist/cjs/hooks/useShapes/treemap/types.d.ts +1 -1
- package/dist/cjs/hooks/useShapes/utils.d.ts +1 -1
- package/dist/cjs/hooks/useShapes/utils.js +2 -1
- package/dist/cjs/hooks/useShapes/waterfall/index.d.ts +1 -1
- package/dist/cjs/hooks/useShapes/waterfall/index.js +3 -1
- package/dist/cjs/hooks/useTooltip/index.d.ts +1 -1
- package/dist/cjs/hooks/useZoom/index.js +1 -1
- package/dist/cjs/hooks/useZoom/utils.d.ts +1 -1
- package/dist/cjs/hooks/utils/bar-y.js +1 -1
- package/dist/cjs/hooks/utils/get-band-size.d.ts +1 -1
- package/dist/cjs/types/chart/pie.d.ts +1 -1
- package/dist/cjs/utils/chart/axis/common.d.ts +2 -1
- package/dist/cjs/utils/chart/axis/common.js +1 -1
- package/dist/cjs/utils/chart/axis-generators/bottom.d.ts +2 -1
- package/dist/cjs/utils/chart/axis-generators/bottom.js +2 -1
- package/dist/cjs/utils/chart/color.js +2 -1
- package/dist/cjs/utils/chart/common.js +2 -1
- package/dist/cjs/utils/chart/format.d.ts +1 -1
- package/dist/cjs/utils/chart/get-closest-data.js +2 -1
- package/dist/cjs/utils/chart/legend.d.ts +1 -1
- package/dist/cjs/utils/chart/series/sorting.js +1 -1
- package/dist/cjs/utils/chart/symbol.js +1 -1
- package/dist/cjs/utils/chart/text.d.ts +1 -1
- package/dist/cjs/utils/chart/ticks/datetime.js +2 -1
- package/dist/cjs/utils/chart/ticks/index.d.ts +1 -1
- package/dist/cjs/utils/dispatcher.js +1 -1
- package/dist/esm/components/AxisX/AxisX.js +2 -1
- package/dist/esm/components/AxisY/AxisY.js +2 -1
- package/dist/esm/components/ChartInner/index.js +2 -2
- package/dist/esm/components/ChartInner/useChartInnerHandlers.d.ts +1 -1
- package/dist/esm/components/ChartInner/useChartInnerHandlers.js +1 -1
- package/dist/esm/components/ChartInner/useChartInnerProps.d.ts +1 -1
- package/dist/esm/components/ChartInner/useChartInnerState.d.ts +1 -1
- package/dist/esm/components/ChartInner/useDefaultState.d.ts +1 -1
- package/dist/esm/components/ChartInner/useDefaultState.js +4 -1
- package/dist/esm/components/Legend/index.js +3 -1
- package/dist/esm/components/RangeSlider/utils.js +1 -1
- package/dist/esm/components/Tooltip/index.d.ts +1 -1
- package/dist/esm/components/index.js +1 -1
- package/dist/esm/components/utils/index.js +1 -1
- package/dist/esm/hooks/useAxis/x-axis.js +5 -2
- package/dist/esm/hooks/useAxisScales/types.d.ts +1 -1
- package/dist/esm/hooks/useAxisScales/x-scale.js +2 -1
- package/dist/esm/hooks/useAxisScales/y-scale.js +2 -1
- package/dist/esm/hooks/useBrush/index.js +2 -1
- package/dist/esm/hooks/useBrush/types.d.ts +1 -1
- package/dist/esm/hooks/useBrush/utils.d.ts +1 -1
- package/dist/esm/hooks/useBrush/utils.js +2 -1
- package/dist/esm/hooks/useCrosshair/index.d.ts +1 -1
- package/dist/esm/hooks/useCrosshair/index.js +2 -1
- package/dist/esm/hooks/useCrosshair/useCrosshairHover.d.ts +1 -1
- package/dist/esm/hooks/useRangeSlider/index.js +6 -3
- package/dist/esm/hooks/useRangeSlider/types.d.ts +1 -0
- package/dist/esm/hooks/useSeries/index.js +2 -1
- package/dist/esm/hooks/useSeries/prepare-area.d.ts +1 -1
- package/dist/esm/hooks/useSeries/prepare-bar-x.d.ts +1 -1
- package/dist/esm/hooks/useSeries/prepare-bar-y.d.ts +1 -1
- package/dist/esm/hooks/useSeries/prepare-funnel.js +1 -1
- package/dist/esm/hooks/useSeries/prepare-heatmap.d.ts +1 -1
- package/dist/esm/hooks/useSeries/prepare-line.d.ts +1 -1
- package/dist/esm/hooks/useSeries/prepare-pie.js +1 -1
- package/dist/esm/hooks/useSeries/prepare-radar.js +1 -1
- package/dist/esm/hooks/useSeries/prepare-sankey.d.ts +1 -1
- package/dist/esm/hooks/useSeries/prepare-scatter.d.ts +1 -1
- package/dist/esm/hooks/useSeries/prepare-treemap.d.ts +1 -1
- package/dist/esm/hooks/useSeries/prepare-waterfall.d.ts +1 -1
- package/dist/esm/hooks/useSeries/prepareSeries.d.ts +1 -1
- package/dist/esm/hooks/useShapes/area/index.d.ts +1 -1
- package/dist/esm/hooks/useShapes/area/index.js +3 -1
- package/dist/esm/hooks/useShapes/area/prepare-data.d.ts +0 -1
- package/dist/esm/hooks/useShapes/area/prepare-data.js +61 -31
- package/dist/esm/hooks/useShapes/bar-x/index.d.ts +1 -1
- package/dist/esm/hooks/useShapes/bar-x/index.js +2 -1
- package/dist/esm/hooks/useShapes/bar-x/prepare-data.js +1 -1
- package/dist/esm/hooks/useShapes/bar-y/index.d.ts +1 -1
- package/dist/esm/hooks/useShapes/bar-y/index.js +2 -1
- package/dist/esm/hooks/useShapes/bar-y/prepare-data.js +1 -1
- package/dist/esm/hooks/useShapes/funnel/index.d.ts +1 -1
- package/dist/esm/hooks/useShapes/funnel/index.js +2 -1
- package/dist/esm/hooks/useShapes/funnel/prepare-data.js +1 -1
- package/dist/esm/hooks/useShapes/funnel/types.d.ts +1 -1
- package/dist/esm/hooks/useShapes/heatmap/index.d.ts +1 -1
- package/dist/esm/hooks/useShapes/heatmap/index.js +2 -1
- package/dist/esm/hooks/useShapes/index.d.ts +1 -1
- package/dist/esm/hooks/useShapes/index.js +1 -2
- package/dist/esm/hooks/useShapes/line/index.d.ts +1 -1
- package/dist/esm/hooks/useShapes/line/index.js +3 -1
- package/dist/esm/hooks/useShapes/marker.d.ts +1 -1
- package/dist/esm/hooks/useShapes/marker.js +1 -1
- package/dist/esm/hooks/useShapes/pie/index.d.ts +2 -1
- package/dist/esm/hooks/useShapes/pie/index.js +3 -1
- package/dist/esm/hooks/useShapes/pie/prepare-data.js +2 -1
- package/dist/esm/hooks/useShapes/pie/types.d.ts +1 -1
- package/dist/esm/hooks/useShapes/pie/utils.d.ts +1 -1
- package/dist/esm/hooks/useShapes/pie/utils.js +1 -1
- package/dist/esm/hooks/useShapes/radar/index.d.ts +1 -1
- package/dist/esm/hooks/useShapes/radar/index.js +3 -1
- package/dist/esm/hooks/useShapes/radar/prepare-data.js +3 -1
- package/dist/esm/hooks/useShapes/sankey/index.d.ts +1 -1
- package/dist/esm/hooks/useShapes/sankey/index.js +1 -1
- package/dist/esm/hooks/useShapes/scatter/index.d.ts +1 -1
- package/dist/esm/hooks/useShapes/scatter/index.js +1 -1
- package/dist/esm/hooks/useShapes/treemap/index.d.ts +1 -1
- package/dist/esm/hooks/useShapes/treemap/index.js +2 -1
- package/dist/esm/hooks/useShapes/treemap/prepare-data.js +2 -1
- package/dist/esm/hooks/useShapes/treemap/types.d.ts +1 -1
- package/dist/esm/hooks/useShapes/utils.d.ts +1 -1
- package/dist/esm/hooks/useShapes/utils.js +2 -1
- package/dist/esm/hooks/useShapes/waterfall/index.d.ts +1 -1
- package/dist/esm/hooks/useShapes/waterfall/index.js +3 -1
- package/dist/esm/hooks/useTooltip/index.d.ts +1 -1
- package/dist/esm/hooks/useZoom/index.js +1 -1
- package/dist/esm/hooks/useZoom/utils.d.ts +1 -1
- package/dist/esm/hooks/utils/bar-y.js +1 -1
- package/dist/esm/hooks/utils/get-band-size.d.ts +1 -1
- package/dist/esm/types/chart/pie.d.ts +1 -1
- package/dist/esm/utils/chart/axis/common.d.ts +2 -1
- package/dist/esm/utils/chart/axis/common.js +1 -1
- package/dist/esm/utils/chart/axis-generators/bottom.d.ts +2 -1
- package/dist/esm/utils/chart/axis-generators/bottom.js +2 -1
- package/dist/esm/utils/chart/color.js +2 -1
- package/dist/esm/utils/chart/common.js +2 -1
- package/dist/esm/utils/chart/format.d.ts +1 -1
- package/dist/esm/utils/chart/get-closest-data.js +2 -1
- package/dist/esm/utils/chart/legend.d.ts +1 -1
- package/dist/esm/utils/chart/series/sorting.js +1 -1
- package/dist/esm/utils/chart/symbol.js +1 -1
- package/dist/esm/utils/chart/text.d.ts +1 -1
- package/dist/esm/utils/chart/ticks/datetime.js +2 -1
- package/dist/esm/utils/chart/ticks/index.d.ts +1 -1
- package/dist/esm/utils/dispatcher.js +1 -1
- package/package.json +14 -2
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {
|
|
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 {
|
|
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 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 { 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
|
|
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,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
|
|
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
|
|
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,
|
|
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
|
|
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,5 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {
|
|
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,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,
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { group
|
|
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 { ChartSeriesOptions, LineSeries } from '../../types';
|
|
3
3
|
import type { PreparedLegend, PreparedLineSeries } from './types';
|
|
4
4
|
export declare const DEFAULT_LEGEND_SYMBOL_SIZE = 16;
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {
|
|
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,
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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,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';
|