import React from 'react'; import { ChartKitError } from '../libs'; import type { ChartKitWidget } from './widget'; export type { ChartKitHolidays } from './misc'; export type ChartKitLang = 'ru' | 'en'; export type ChartKitType = keyof ChartKitWidget; export type ChartKitRef = { reflow: (details?: unknown) => void; }; export type ChartKitWidgetRef = { reflow?: ChartKitRef['reflow']; }; export type ChartKitOnLoadData = { widget?: ChartKitWidget[T]['widget']; widgetRendering?: number; }; export type ChartKitOnRenderData = { renderTime?: number; }; export type ChartKitOnChartLoad = { widget?: ChartKitWidget[T]['widget'] | null; }; export type ChartKitOnError = (data: { error: any; }) => void; export type ChartKitRenderPluginLoader = () => React.ReactNode; export type ChartKitProps = { type: T; data: ChartKitWidget[T]['data']; id?: string; isMobile?: boolean; onLoad?: (data?: ChartKitOnLoadData) => void; /** Fires on each chartkit plugin's component render */ onRender?: (data: ChartKitOnRenderData) => void; /** Fires on chartkit plugin's component mount */ onChartLoad?: (data: ChartKitOnChartLoad) => void; /** Fires in case of unhandled plugin's exception */ onError?: ChartKitOnError; /** Used to render user's error component */ renderError?: RenderError; /** Used to render user's plugin loader component */ renderPluginLoader?: ChartKitRenderPluginLoader; validation?: { /** * Series count limit. * * If you have series more than limit, your chart will throw an error `'ERR.CK.TOO_MANY_LINES'`. * * - This setting applies only when provided * - Supported only for the `gravity-charts` plugin */ seriesCountLimit?: number; }; } & { [key in keyof Omit]: ChartKitWidget[T][key]; }; export type ChartKitPlugin = { type: ChartKitType; renderer: React.LazyExoticComponent>; }; export type RenderErrorOpts = { message: string; error: ChartKitError | Error; resetError: () => void; }; export type RenderError = (opts: RenderErrorOpts) => React.ReactNode; export type { ChartKitWidget };