@oliasoft-open-source/charts-library 2.13.4 → 2.14.0-beta-1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/package.json +2 -2
  2. package/release-notes.md +4 -0
  3. package/src/components/controls/axes-options/axes-options.jsx +43 -9
  4. package/src/components/line-chart/constants/default-translations.js +24 -0
  5. package/src/components/line-chart/{line-chart-consts.js → constants/line-chart-consts.js} +1 -0
  6. package/src/components/line-chart/controls/axes-options/action-types.js +5 -0
  7. package/src/components/{controls → line-chart/controls}/axes-options/axes-options-form-state.js +19 -20
  8. package/src/components/line-chart/controls/controls.jsx +174 -0
  9. package/src/components/line-chart/controls/drag-options.jsx +112 -0
  10. package/src/components/line-chart/controls/legend-options.jsx +36 -0
  11. package/src/components/{controls → line-chart/controls}/line-options.jsx +18 -8
  12. package/src/components/line-chart/hooks/use-chart-functions.js +257 -0
  13. package/src/components/line-chart/hooks/use-chart-options.js +155 -0
  14. package/src/components/line-chart/hooks/use-chart-plugins.js +26 -0
  15. package/src/components/line-chart/hooks/use-toggle-handler.js +33 -0
  16. package/src/components/line-chart/line-chart.jsx +54 -447
  17. package/src/components/line-chart/state/initial-state.js +7 -8
  18. package/src/components/line-chart/state/line-chart-reducer.js +68 -86
  19. package/src/components/line-chart/state/use-chart-state.js +73 -12
  20. package/src/components/line-chart/{axis-scales → utils/axis-scales}/axis-scales.js +3 -3
  21. package/src/components/line-chart/{datalabels-alignment → utils/datalabels-alignment}/get-datalabels-position.js +1 -1
  22. package/src/components/line-chart/utils/generate-line-chart-datasets.js +114 -0
  23. package/src/components/line-chart/{get-line-chart-data-labels.js → utils/get-line-chart-data-labels.js} +2 -2
  24. package/src/components/line-chart/{get-line-chart-scales.js → utils/get-line-chart-scales.js} +11 -11
  25. package/src/components/line-chart/{get-line-chart-tooltips.js → utils/get-line-chart-tooltips.js} +6 -3
  26. package/src/components/line-chart/utils/get-translations/get-translations.js +17 -0
  27. package/src/helpers/chart-utils.js +3 -5
  28. package/src/helpers/enums.js +9 -0
  29. package/src/components/controls/controls.jsx +0 -114
  30. package/src/components/controls/drag-options.jsx +0 -98
  31. package/src/components/controls/legend-options.jsx +0 -25
  32. /package/src/components/{controls → line-chart/controls}/controls.module.less +0 -0
  33. /package/src/components/line-chart/{datalabels-alignment → utils/datalabels-alignment}/get-alignment-condition.js +0 -0
  34. /package/src/components/line-chart/{datalabels-alignment → utils/datalabels-alignment}/get-alignment-data.js +0 -0
  35. /package/src/components/line-chart/{get-axes-ranges-from-chart.js → utils/get-axes-ranges-from-chart.js} +0 -0
  36. /package/src/components/line-chart/{line-chart-utils.js → utils/line-chart-utils.js} +0 -0
@@ -15,104 +15,86 @@ import {
15
15
  } from './action-types';
16
16
 
17
17
  export const reducer = (state, action) => {
18
- const newState = { ...state };
19
- switch (action.type) {
20
- case TOGGLE_ZOOM: {
21
- newState.zoomEnabled = !newState.zoomEnabled;
22
- if (newState.panEnabled) {
23
- newState.panEnabled = false;
18
+ return produce(state, (draft) => {
19
+ switch (action.type) {
20
+ case TOGGLE_ZOOM: {
21
+ draft.zoomEnabled = !draft.zoomEnabled;
22
+ if (draft.panEnabled) {
23
+ draft.panEnabled = false;
24
+ }
25
+ if (draft.enableDragPoints) {
26
+ draft.enableDragPoints = false;
27
+ }
28
+ break;
24
29
  }
25
- if (newState.enableDragPoints) {
26
- newState.enableDragPoints = false;
30
+ case TOGGLE_PAN: {
31
+ draft.panEnabled = !draft.panEnabled;
32
+ if (draft.zoomEnabled) {
33
+ draft.zoomEnabled = false;
34
+ }
35
+ break;
27
36
  }
28
- return newState;
29
- }
30
- case TOGGLE_PAN: {
31
- newState.panEnabled = !newState.panEnabled;
32
- if (newState.zoomEnabled) {
33
- newState.zoomEnabled = false;
37
+ case TOGGLE_POINTS: {
38
+ draft.pointsEnabled = !draft.pointsEnabled;
39
+ break;
34
40
  }
35
- return newState;
36
- }
37
- case TOGGLE_POINTS: {
38
- return {
39
- ...newState,
40
- pointsEnabled: !newState.pointsEnabled,
41
- };
42
- }
43
- case TOGGLE_LINE: {
44
- return {
45
- ...newState,
46
- lineEnabled: !newState.lineEnabled,
47
- };
48
- }
49
- case TOGGLE_LEGEND: {
50
- return {
51
- ...newState,
52
- legendEnabled: !newState.legendEnabled,
53
- };
54
- }
55
- case TOGGLE_TABLE: {
56
- return {
57
- ...newState,
58
- showTable: !newState.showTable,
59
- };
60
- }
61
- case SAVE_INITIAL_AXES_RANGES: {
62
- return produce(state, (draft) => {
41
+ case TOGGLE_LINE: {
42
+ draft.lineEnabled = !draft.lineEnabled;
43
+ break;
44
+ }
45
+ case TOGGLE_LEGEND: {
46
+ draft.legendEnabled = !draft.legendEnabled;
47
+ break;
48
+ }
49
+ case TOGGLE_TABLE: {
50
+ draft.showTable = !draft.showTable;
51
+ break;
52
+ }
53
+ case SAVE_INITIAL_AXES_RANGES: {
63
54
  const { initialAxesRanges } = action.payload;
64
55
  draft.initialAxesRanges = initialAxesRanges;
65
- });
66
- }
67
- case UPDATE_AXES_RANGES: {
68
- return produce(state, (draft) => {
56
+ break;
57
+ }
58
+ case UPDATE_AXES_RANGES: {
69
59
  const { axes } = action.payload;
70
60
  draft.axes = axes;
71
- });
72
- }
73
- case RESET_AXES_RANGES: {
74
- return produce(state, (draft) => {
75
- const { axes } = state;
61
+ break;
62
+ }
63
+ case RESET_AXES_RANGES: {
64
+ const { axes } = draft;
76
65
  draft.axes = axes.map((axis) => ({
77
66
  id: axis.id,
78
67
  }));
79
- });
80
- }
81
- case TOGGLE_ANNOTATION:
82
- const { annotationIndex } = action.payload;
83
- const updatedIndexes = newState.showAnnotationLineIndex.includes(
84
- annotationIndex,
85
- )
86
- ? newState.showAnnotationLineIndex.filter((v) => v !== annotationIndex)
87
- : [...newState.showAnnotationLineIndex, annotationIndex];
88
- return {
89
- ...newState,
90
- showAnnotationLineIndex: updatedIndexes,
91
- };
92
- case TOGGLE_DRAG_POINTS: {
93
- newState.enableDragPoints = !newState.enableDragPoints;
94
- if (newState.panEnabled) {
95
- newState.panEnabled = false;
68
+ break;
96
69
  }
97
- if (newState.zoomEnabled) {
98
- newState.zoomEnabled = false;
70
+ case TOGGLE_ANNOTATION: {
71
+ const { annotationIndex } = action.payload;
72
+ const updatedIndexes = draft.showAnnotationLineIndex.includes(
73
+ annotationIndex,
74
+ )
75
+ ? draft.showAnnotationLineIndex.filter((v) => v !== annotationIndex)
76
+ : [...draft.showAnnotationLineIndex, annotationIndex];
77
+ draft.showAnnotationLineIndex = updatedIndexes;
78
+ break;
99
79
  }
100
- return newState;
101
- }
102
- case DISABLE_DRAG_OPTIONS: {
103
- if (
104
- newState.enableDragPoints ||
105
- newState.panEnabled ||
106
- newState.zoomEnabled
107
- ) {
108
- newState.enableDragPoints = false;
109
- newState.panEnabled = false;
110
- newState.zoomEnabled = false;
80
+ case TOGGLE_DRAG_POINTS: {
81
+ draft.enableDragPoints = !draft.enableDragPoints;
82
+ if (draft.panEnabled) {
83
+ draft.panEnabled = false;
84
+ }
85
+ if (draft.zoomEnabled) {
86
+ draft.zoomEnabled = false;
87
+ }
88
+ break;
89
+ }
90
+ case DISABLE_DRAG_OPTIONS: {
91
+ if (draft.enableDragPoints || draft.panEnabled || draft.zoomEnabled) {
92
+ draft.enableDragPoints = false;
93
+ draft.panEnabled = false;
94
+ draft.zoomEnabled = false;
95
+ }
96
+ break;
111
97
  }
112
- return newState;
113
- }
114
- default: {
115
- return newState;
116
98
  }
117
- }
99
+ });
118
100
  };
@@ -1,5 +1,8 @@
1
- import { useEffect, useMemo } from 'react';
1
+ import { useCallback, useEffect, useMemo, useRef } from 'react';
2
+ import { isEqual } from 'lodash';
2
3
  import { storeChartStateInStorage } from './manage-state-in-local-storage';
4
+ import { SAVE_INITIAL_AXES_RANGES, UPDATE_AXES_RANGES } from './action-types';
5
+ import { getAxesRangesFromChart } from '../utils/get-axes-ranges-from-chart';
3
6
 
4
7
  /**
5
8
  * Hook for toggling the visibility of the custom legend.
@@ -42,25 +45,83 @@ const useStoreChartStateInStorage = (memoState, persistenceId) => {
42
45
  ]);
43
46
  };
44
47
 
48
+ /**
49
+ * Hook for updating the axes ranges in the chart state.
50
+ *
51
+ * @param range - The range to the chart.
52
+ * @param dispatch - The dispatch function for state management.
53
+ */
54
+ const useUpdateAxesRanges = (range, dispatch) => {
55
+ const prevRange = useRef();
56
+
57
+ const updateAxesRanges = useCallback(() => {
58
+ if (range && range.x && range.y && !isEqual(range, prevRange.current)) {
59
+ const axes = Object.entries(range).map(([key, { min, max }]) => ({
60
+ id: key,
61
+ min: min ?? 0,
62
+ max: max ?? 0,
63
+ }));
64
+ dispatch({
65
+ type: UPDATE_AXES_RANGES,
66
+ payload: { axes },
67
+ });
68
+ prevRange.current = range;
69
+ }
70
+ }, [range]);
71
+
72
+ useEffect(() => {
73
+ updateAxesRanges();
74
+ }, [updateAxesRanges]);
75
+ };
76
+
77
+ /**
78
+ * Hook for saving the initial axes ranges in the chart state.
79
+ *
80
+ * @param chartRef - The reference to the chart.
81
+ * @param axes - The axes data.
82
+ * @param dispatch - The dispatch function for state management.
83
+ */
84
+ const useSaveInitialAxesRanges = (chartRef, axes, dispatch) => {
85
+ const saveInitialAxesRanges = useCallback(() => {
86
+ if (chartRef) {
87
+ const initialAxesRanges = getAxesRangesFromChart(chartRef, axes);
88
+ dispatch({
89
+ type: SAVE_INITIAL_AXES_RANGES,
90
+ payload: { initialAxesRanges },
91
+ });
92
+ }
93
+ }, [chartRef]);
94
+
95
+ useEffect(() => {
96
+ saveInitialAxesRanges();
97
+ }, [saveInitialAxesRanges]);
98
+ };
99
+
45
100
  /**
46
101
  * Hook for managing the state of the chart.
47
102
  *
103
+ * @param chartRef - The reference to the chart.
48
104
  * @param options - The chart options.
49
105
  * @param state - The chart state.
106
+ * @param dispatch - The dispatch function for state management.
50
107
  * @param persistenceId - The chart persistenceId.
51
108
  */
52
- const useChartState = (options, state, persistenceId) => {
53
- const memoized = useMemo(() => {
54
- return {
55
- state,
56
- options,
57
- };
58
- }, [state, options]);
59
-
60
- const { state: memoState, options: memoOptions } = memoized ?? {};
109
+ export const useChartState = ({
110
+ chartRef,
111
+ options,
112
+ state,
113
+ dispatch,
114
+ persistenceId,
115
+ }) => {
116
+ const memoState = useMemo(() => state, [state]);
117
+ const memoOptions = useMemo(() => options, [options]);
118
+ const {
119
+ additionalAxesOptions: { range },
120
+ axes,
121
+ } = memoOptions;
61
122
 
62
123
  useStoreChartStateInStorage(memoState, persistenceId);
63
124
  useToggleCustomLegendVisibility(memoState, memoOptions);
125
+ useUpdateAxesRanges(range, dispatch);
126
+ useSaveInitialAxesRanges(chartRef, axes, dispatch);
64
127
  };
65
-
66
- export default useChartState;
@@ -1,8 +1,8 @@
1
1
  import getLineChartScales from '../get-line-chart-scales';
2
- import { AxisType } from '../../../helpers/enums';
2
+ import { AxisType } from '../../../../helpers/enums';
3
3
  import { getAxisTypeFromKey } from '../line-chart-utils';
4
- import { estimateDataSeriesHaveCloseValues } from '../../../helpers/range/estimate-data-series-have-close-values';
5
- import { getSuggestedAxisRange } from '../../../helpers/range/range';
4
+ import { estimateDataSeriesHaveCloseValues } from '../../../../helpers/range/estimate-data-series-have-close-values';
5
+ import { getSuggestedAxisRange } from '../../../../helpers/range/range';
6
6
 
7
7
  /**
8
8
  Function that counts the number of occurences of "x" and "y" in an array and returns the one with the highest count.
@@ -1,6 +1,6 @@
1
1
  import { getCondition } from './get-alignment-condition';
2
2
  import { getAlignmentData } from './get-alignment-data';
3
- import { AlignOptions } from '../../../helpers/enums';
3
+ import { AlignOptions } from '../../../../helpers/enums';
4
4
 
5
5
  /** returning position depends on condition
6
6
  *
@@ -0,0 +1,114 @@
1
+ import { COLORS } from '../../../helpers/chart-consts';
2
+ import {
3
+ BORDER_JOIN_STYLE,
4
+ DEFAULT_BACKGROUND_COLOR,
5
+ DEFAULT_BORDER_WIDTH,
6
+ DEFAULT_HOVER_RADIUS,
7
+ DEFAULT_LINE_POINT_RADIUS,
8
+ DEFAULT_POINT_RADIUS,
9
+ } from '../constants/line-chart-consts';
10
+ import { generateRandomColor } from '../../../helpers/chart-utils';
11
+
12
+ /**
13
+ * Generates line chart datasets based on the provided datasets, state, and options.
14
+ *
15
+ * @param {Array} datasets - The initial datasets for the line chart.
16
+ * @param {Object} state - The state object containing chart settings (e.g., lineEnabled, pointsEnabled, axes).
17
+ * @param {Object} options - The options object containing additional settings (e.g., annotations, graph).
18
+ * @param {Object} translations - The translations object containing translations string
19
+ * @returns {Array} - The generated line chart datasets with applied settings and configurations.
20
+ */
21
+ export const generateLineChartDatasets = (
22
+ datasets,
23
+ state,
24
+ options,
25
+ translations,
26
+ ) => {
27
+ const copyDataset = [...datasets];
28
+ const { annotations, graph } = options;
29
+ const {
30
+ controlAnnotation,
31
+ showAnnotations,
32
+ annotationsData = [],
33
+ } = annotations;
34
+ // Add annotations to dataset to have them appear in legend.
35
+ if (controlAnnotation && showAnnotations) {
36
+ const annotationDatasets = annotationsData.map((annotation, index) => {
37
+ const color = annotation.color ?? COLORS[index];
38
+
39
+ // Create an annotation dataset
40
+ return {
41
+ isAnnotation: true,
42
+ label: annotation.label,
43
+ annotationIndex: index,
44
+ backgroundColor: color,
45
+ pointBackgroundColor: color,
46
+ borderColor: color,
47
+ data: [{}],
48
+ };
49
+ });
50
+
51
+ // Add annotation datasets to the copyDataset array
52
+ copyDataset.push(...annotationDatasets);
53
+ }
54
+
55
+ // Map over the copyDataset array and generate line chart datasets with applied settings and configurations
56
+ return copyDataset.map((line, i) => {
57
+ // Destructure properties from the line, state, and graph objects
58
+ const {
59
+ formation,
60
+ data = [],
61
+ pointRadius,
62
+ pointHoverRadius,
63
+ borderWidth,
64
+ borderColor,
65
+ backgroundColor,
66
+ pointBackgroundColor,
67
+ borderDash,
68
+ } = line ?? {};
69
+ const { lineEnabled, pointsEnabled, axes = [] } = state ?? {};
70
+ const { lineTension, spanGaps } = graph ?? {};
71
+
72
+ // Adjust the start and end points of the line if it has a formation flag
73
+ if (formation) {
74
+ const axesMin = axes[0]?.min;
75
+ const axesMax = axes[0]?.max;
76
+ const [startPoint, midPointWithLabel, endPoint] = data;
77
+
78
+ if (axesMin && startPoint?.x) {
79
+ data[0].x = Math.max(axesMin, startPoint.x);
80
+ }
81
+
82
+ if (axesMax && endPoint?.x) {
83
+ data[2].x = Math.min(axesMax, endPoint.x);
84
+ }
85
+ }
86
+
87
+ // Remove invalid falsy data points (OW-9855)
88
+ const filteredData = data.filter(Boolean) || [];
89
+
90
+ const linePointRadius = parseFloat(pointRadius) || DEFAULT_POINT_RADIUS;
91
+ const hoverRadius = parseFloat(pointHoverRadius) || DEFAULT_HOVER_RADIUS;
92
+ const indexedColor = COLORS[i];
93
+
94
+ // Return the dataset with applied settings and configurations
95
+ return {
96
+ ...line,
97
+ label: line.label || `${translations.label} ${i + 1}`,
98
+ data: filteredData,
99
+ showLine: lineEnabled,
100
+ lineTension,
101
+ spanGaps,
102
+ borderWidth: parseFloat(borderWidth) || DEFAULT_BORDER_WIDTH,
103
+ borderDash: borderDash || [],
104
+ borderJoinStyle: BORDER_JOIN_STYLE,
105
+ borderColor: borderColor ?? indexedColor ?? generateRandomColor(COLORS),
106
+ backgroundColor: backgroundColor ?? DEFAULT_BACKGROUND_COLOR,
107
+ pointBackgroundColor:
108
+ pointBackgroundColor ?? indexedColor ?? generateRandomColor(COLORS),
109
+ pointRadius: pointsEnabled ? linePointRadius : DEFAULT_LINE_POINT_RADIUS,
110
+ pointHoverRadius: hoverRadius,
111
+ pointHitRadius: line.pointHitRadius ?? hoverRadius,
112
+ };
113
+ });
114
+ };
@@ -1,10 +1,10 @@
1
- import { AUTO } from '../../helpers/chart-consts';
1
+ import { AUTO } from '../../../helpers/chart-consts';
2
2
  import { getPosition } from './datalabels-alignment/get-datalabels-position';
3
3
 
4
4
  /**
5
5
  * adjusts the position of the label depends on chart area
6
6
  *
7
- * @param {import('./line-chart.interface').ILineChartOptions} options - line chart options object
7
+ * @param {import('../line-chart.interface').ILineChartOptions} options - line chart options object
8
8
  * @return {object} - returning position, if label exist in datasets item
9
9
  */
10
10
  const getLineChartDataLabels = (options) => {
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  generateRandomColor,
3
3
  getAxisPosition,
4
- } from '../../helpers/chart-utils';
5
- import { COLORS, LOGARITHMIC_STEPS } from '../../helpers/chart-consts';
4
+ } from '../../../helpers/chart-utils';
5
+ import { COLORS, LOGARITHMIC_STEPS } from '../../../helpers/chart-consts';
6
6
  import { generateAxisId, truncateDecimals } from './line-chart-utils';
7
- import { AxisType, ScaleType } from '../../helpers/enums';
7
+ import { AxisType, ScaleType } from '../../../helpers/enums';
8
8
 
9
9
  /**
10
- * @param {import('./line-chart.interface').ILineChartOptions} options - line chart options object
10
+ * @param {import('../line-chart.interface').ILineChartOptions} options - line chart options object
11
11
  * @param {'x'|'y'} axisType
12
- * @param {import('../../helpers/chart-interface').IInitialState} state - chart state object controlled by useReducer or similar
13
- * @param {import('./line-chart.interface').ILineChartAxis[]} [currentScales]
12
+ * @param {import('../../../helpers/chart-interface').IInitialState} state - chart state object controlled by useReducer or similar
13
+ * @param {import('../line-chart.interface').ILineChartAxis[]} [currentScales]
14
14
  * @param {number} [i]
15
15
  */
16
16
  const getLineChartAxis = (options, axisType, state, currentScales, i = 0) => {
@@ -19,7 +19,7 @@ const getLineChartAxis = (options, axisType, state, currentScales, i = 0) => {
19
19
  i
20
20
  ];
21
21
 
22
- const { additionalAxesOptions, chartStyling } = options;
22
+ const { additionalAxesOptions } = options;
23
23
 
24
24
  const getTicks = () => {
25
25
  const truncateAxisNumbersToDigitsCallback = Number.isInteger(
@@ -77,9 +77,9 @@ const getLineChartAxis = (options, axisType, state, currentScales, i = 0) => {
77
77
  };
78
78
 
79
79
  /**
80
- * @param {import('./line-chart.interface').ILineChartOptions} options - line chart options object
80
+ * @param {import('../line-chart.interface').ILineChartOptions} options - line chart options object
81
81
  * @param {'x'|'y'} axisType
82
- * @param {import('../../helpers/chart-interface').IInitialState} state - chart state object controlled by useReducer or similar
82
+ * @param {import('../../../helpers/chart-interface').IInitialState} state - chart state object controlled by useReducer or similar
83
83
  */
84
84
  const getLineChartAxes = (options, axisType, state) => {
85
85
  const axesData = options.axes[axisType];
@@ -97,8 +97,8 @@ const getLineChartAxes = (options, axisType, state) => {
97
97
 
98
98
  /**
99
99
  *
100
- * @param {import('./line-chart.interface').ILineChartOptions} options - line chart options object
101
- * @param {import('../../helpers/chart-interface').IInitialState} state - chart state object controlled by useReducer or similar
100
+ * @param {import('../line-chart.interface').ILineChartOptions} options - line chart options object
101
+ * @param {import('../../../helpers/chart-interface').IInitialState} state - chart state object controlled by useReducer or similar
102
102
  */
103
103
  const getLineChartScales = (options, state) => {
104
104
  const hasMultipleXAxes = options.axes.x?.length > 1;
@@ -1,8 +1,11 @@
1
- import { ChartHoverMode, Position, TooltipLabel } from '../../helpers/enums';
2
- import { afterLabelCallback, getTooltipLabel } from '../../helpers/chart-utils';
1
+ import { ChartHoverMode, Position, TooltipLabel } from '../../../helpers/enums';
2
+ import {
3
+ afterLabelCallback,
4
+ getTooltipLabel,
5
+ } from '../../../helpers/chart-utils';
3
6
 
4
7
  /**
5
- * @param {import('./line-chart.interface').ILineChartOptions} options - line chart options object
8
+ * @param {import('../line-chart.interface').ILineChartOptions} options - line chart options object
6
9
  */
7
10
  const getLineChartToolTips = (options) => {
8
11
  const getTooltipLabels = (dataset) => {
@@ -0,0 +1,17 @@
1
+ import { defaultTranslations } from '../../constants/default-translations';
2
+
3
+ /**
4
+ * Merges custom translations with the default translations.
5
+ * If a custom translation is provided for a key, it will override the default one.
6
+ * @param {object} translations - Custom translations.
7
+ * @returns {object} - The resulting translations object, containing both default and custom translations.
8
+ */
9
+ export const getTranslations = (translations = {}) => {
10
+ return Object.keys(defaultTranslations).reduce(
11
+ (acc, key) => ({
12
+ ...acc,
13
+ [key]: translations[key] || defaultTranslations[key],
14
+ }),
15
+ {},
16
+ );
17
+ };
@@ -3,8 +3,8 @@ import { defaults } from 'chart.js';
3
3
  import cx from 'classnames';
4
4
  import { chartMinorGridlinesPlugin } from '../components/line-chart/line-chart.minor-gridlines-plugin';
5
5
  import {
6
- CUSTOM_LEGEND_PLUGIN_NAME,
7
6
  BORDER_COLOR,
7
+ CUSTOM_LEGEND_PLUGIN_NAME,
8
8
  DEFAULT_CHART_NAME,
9
9
  DEFAULT_COLOR,
10
10
  DEFAULT_FONT_FAMILY,
@@ -19,10 +19,9 @@ import { chartAreaBorderPlugin } from './chart-border-plugin';
19
19
  * @param {import('../components/bar-chart/bar-chart.interface').IBarChartGraph |
20
20
  * import('../components/line-chart/line-chart.interface').ILineChartGraph } graph - graph data from chart options
21
21
  * @param {import('../helpers/chart-interface').IChartLegend} legend
22
- * @param {import('./chart-interface').IInitialState} state - chart state object controlled by useReducer or similar
23
22
  * @return {[]}
24
23
  */
25
- export const getPlugins = (graph, legend, state = null) => {
24
+ export const getPlugins = (graph, legend) => {
26
25
  let plugins = [];
27
26
  if (graph.showMinorGridlines) {
28
27
  plugins.push(chartMinorGridlinesPlugin);
@@ -131,7 +130,7 @@ export const getClassName = (chartStyling, styles) => {
131
130
  * @returns {*}
132
131
  */
133
132
  export const getLegend = (options, clickHandler, state = null) => {
134
- const { legend, chartStyling } = options;
133
+ const { legend } = options;
135
134
  return {
136
135
  position: legend.position || Position.Top,
137
136
  display: !legend?.customLegend?.customLegendPlugin
@@ -144,7 +143,6 @@ export const getLegend = (options, clickHandler, state = null) => {
144
143
  boxHeight: LEGEND_LABEL_BOX_SIZE,
145
144
  boxWidth: LEGEND_LABEL_BOX_SIZE,
146
145
  usePointStyle: true,
147
- filter: (item, data) => !data.datasets[item.datasetIndex].hideLegend,
148
146
  },
149
147
  onClick: clickHandler,
150
148
  };
@@ -85,3 +85,12 @@ export const PanZoomMode = Object.freeze({
85
85
  export const Key = Object.freeze({
86
86
  Shift: 'Shift',
87
87
  });
88
+
89
+ export const Events = Object.freeze([
90
+ 'mousemove',
91
+ 'mouseout',
92
+ 'click',
93
+ 'touchstart',
94
+ 'touchmove',
95
+ 'dblclick',
96
+ ]);