@gravity-ui/chartkit 7.29.2 → 7.30.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -16,6 +16,9 @@ export declare const ChartKit: <T extends keyof import("../types").ChartKitWidge
16
16
  onError?: import("../types").ChartKitOnError | undefined;
17
17
  renderError?: import("../types").RenderError | undefined;
18
18
  renderPluginLoader?: import("../types").ChartKitRenderPluginLoader | undefined;
19
+ validation?: {
20
+ seriesCountLimit?: number | undefined;
21
+ } | undefined;
19
22
  } & { [key in keyof Omit<import("../types").ChartKitWidget[T], "data" | "widget">]: import("../types").ChartKitWidget[T][key]; } & {
20
23
  ref?: React.ForwardedRef<ChartKitRef | undefined> | undefined;
21
24
  }) => ReturnType<typeof ChartKitComponent>;
@@ -11,6 +11,9 @@ export declare const GravityChartsWidget: React.ForwardRefExoticComponent<{
11
11
  onError?: import("../../../types").ChartKitOnError | undefined;
12
12
  renderError?: import("../../../types").RenderError | undefined;
13
13
  renderPluginLoader?: import("../../../types").ChartKitRenderPluginLoader | undefined;
14
+ validation?: {
15
+ seriesCountLimit?: number | undefined;
16
+ } | undefined;
14
17
  } & {
15
18
  tooltip?: {
16
19
  splitted?: boolean | undefined;
@@ -3,10 +3,12 @@ import { Chart } from '@gravity-ui/charts';
3
3
  import afterFrame from 'afterframe';
4
4
  import { settings } from '../../../libs';
5
5
  import { measurePerformance } from '../../../utils';
6
+ import { vaildateData } from './utils';
6
7
  import { withSplitPane } from './withSplitPane/withSplitPane';
7
8
  const ChartWithSplitPane = withSplitPane(Chart);
8
9
  export const GravityChartsWidget = React.forwardRef(function GravityChartsWidget(props, forwardedRef) {
9
10
  const { data, tooltip, onLoad, onRender, onChartLoad } = props;
11
+ vaildateData(props);
10
12
  const lang = settings.get('lang');
11
13
  const performanceMeasure = React.useRef(measurePerformance());
12
14
  const chartRef = React.useRef(null);
@@ -0,0 +1,2 @@
1
+ import type { ChartKitProps } from '../../../types';
2
+ export declare function vaildateData(props: ChartKitProps<'gravity-charts'>): void;
@@ -0,0 +1,18 @@
1
+ import { CHARTKIT_ERROR_CODE, ChartKitError } from '../../../libs';
2
+ function validateSeriesCountLimit(series, seriesCountLimit) {
3
+ var _a;
4
+ if (typeof seriesCountLimit !== 'number') {
5
+ return;
6
+ }
7
+ const seriesCount = (_a = series === null || series === void 0 ? void 0 : series.length) !== null && _a !== void 0 ? _a : 0;
8
+ if (seriesCount > seriesCountLimit) {
9
+ throw new ChartKitError({ code: CHARTKIT_ERROR_CODE.TOO_MANY_LINES });
10
+ }
11
+ }
12
+ export function vaildateData(props) {
13
+ var _a;
14
+ const { data, validation } = props;
15
+ const seriesCountLimit = validation === null || validation === void 0 ? void 0 : validation.seriesCountLimit;
16
+ const series = (_a = data === null || data === void 0 ? void 0 : data.series) === null || _a === void 0 ? void 0 : _a.data;
17
+ validateSeriesCountLimit(series, seriesCountLimit);
18
+ }
@@ -11,6 +11,9 @@ declare const HighchartsWidget: React.ForwardRefExoticComponent<{
11
11
  onError?: import("../../../types").ChartKitOnError | undefined;
12
12
  renderError?: import("../../../types").RenderError | undefined;
13
13
  renderPluginLoader?: import("../../../types").ChartKitRenderPluginLoader | undefined;
14
+ validation?: {
15
+ seriesCountLimit?: number | undefined;
16
+ } | undefined;
14
17
  } & {
15
18
  hoistConfigError?: boolean | undefined;
16
19
  nonBodyScroll?: boolean | undefined;
@@ -12,6 +12,9 @@ declare const IndicatorWidget: React.ForwardRefExoticComponent<{
12
12
  onError?: import("../../../types").ChartKitOnError | undefined;
13
13
  renderError?: import("../../../types").RenderError | undefined;
14
14
  renderPluginLoader?: import("../../../types").ChartKitRenderPluginLoader | undefined;
15
+ validation?: {
16
+ seriesCountLimit?: number | undefined;
17
+ } | undefined;
15
18
  } & {
16
19
  formatNumber?: (<T = any>(value: number, options?: T | undefined) => string) | undefined;
17
20
  } & React.RefAttributes<ChartKitWidgetRef | undefined>>;
@@ -14,6 +14,9 @@ declare const YagrWidget: React.ForwardRefExoticComponent<{
14
14
  onError?: import("../../../types").ChartKitOnError | undefined;
15
15
  renderError?: import("../../../types").RenderError | undefined;
16
16
  renderPluginLoader?: import("../../../types").ChartKitRenderPluginLoader | undefined;
17
+ validation?: {
18
+ seriesCountLimit?: number | undefined;
19
+ } | undefined;
17
20
  } & {
18
21
  tooltip?: (<T extends import("../types").CustomTooltipProps = import("../types").CustomTooltipProps>(props: T) => React.ReactNode) | undefined;
19
22
  } & {
@@ -40,6 +40,17 @@ export type ChartKitProps<T extends ChartKitType> = {
40
40
  renderError?: RenderError;
41
41
  /** Used to render user's plugin loader component */
42
42
  renderPluginLoader?: ChartKitRenderPluginLoader;
43
+ validation?: {
44
+ /**
45
+ * Series count limit.
46
+ *
47
+ * If you have series more than limit, your chart will throw an error `'ERR.CK.TOO_MANY_LINES'`.
48
+ *
49
+ * - This setting applies only when provided
50
+ * - Supported only for the `gravity-charts` plugin
51
+ */
52
+ seriesCountLimit?: number;
53
+ };
43
54
  } & {
44
55
  [key in keyof Omit<ChartKitWidget[T], 'data' | 'widget'>]: ChartKitWidget[T][key];
45
56
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gravity-ui/chartkit",
3
- "version": "7.29.2",
3
+ "version": "7.30.0",
4
4
  "description": "React component used to render charts based on any sources you need",
5
5
  "license": "MIT",
6
6
  "repository": "git@github.com:gravity-ui/ChartKit.git",
@@ -47,7 +47,7 @@
47
47
  ],
48
48
  "dependencies": {
49
49
  "@bem-react/classname": "^1.6.0",
50
- "@gravity-ui/charts": "^1.27.2",
50
+ "@gravity-ui/charts": "^1.27.3",
51
51
  "@gravity-ui/date-utils": "^2.1.0",
52
52
  "@gravity-ui/i18n": "^1.0.0",
53
53
  "@gravity-ui/yagr": "^4.11.0",