Files
est-frame/node_modules/react-chartjs-2/dist/index.cjs.map
2025-10-22 05:38:27 +00:00

1 line
14 KiB
Plaintext
Executable File

{"version":3,"file":"index.cjs","sources":["../src/utils.ts","../src/chart.tsx","../src/typedCharts.tsx"],"sourcesContent":["import type { MouseEvent } from 'react';\nimport type {\n ChartType,\n ChartData,\n DefaultDataPoint,\n ChartDataset,\n ChartOptions,\n Chart,\n} from 'chart.js';\n\nimport type { ForwardedRef } from './types.js';\n\nconst defaultDatasetIdKey = 'label';\n\nexport function reforwardRef<T>(ref: ForwardedRef<T>, value: T) {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n}\n\nexport function setOptions<\n TType extends ChartType = ChartType,\n TData = DefaultDataPoint<TType>,\n TLabel = unknown\n>(chart: Chart<TType, TData, TLabel>, nextOptions: ChartOptions<TType>) {\n const options = chart.options;\n\n if (options && nextOptions) {\n Object.assign(options, nextOptions);\n }\n}\n\nexport function setLabels<\n TType extends ChartType = ChartType,\n TData = DefaultDataPoint<TType>,\n TLabel = unknown\n>(\n currentData: ChartData<TType, TData, TLabel>,\n nextLabels: TLabel[] | undefined\n) {\n currentData.labels = nextLabels;\n}\n\nexport function setDatasets<\n TType extends ChartType = ChartType,\n TData = DefaultDataPoint<TType>,\n TLabel = unknown\n>(\n currentData: ChartData<TType, TData, TLabel>,\n nextDatasets: ChartDataset<TType, TData>[],\n datasetIdKey = defaultDatasetIdKey\n) {\n const addedDatasets: ChartDataset<TType, TData>[] = [];\n\n currentData.datasets = nextDatasets.map(\n (nextDataset: Record<string, unknown>) => {\n // given the new set, find it's current match\n const currentDataset = currentData.datasets.find(\n (dataset: Record<string, unknown>) =>\n dataset[datasetIdKey] === nextDataset[datasetIdKey]\n );\n\n // There is no original to update, so simply add new one\n if (\n !currentDataset ||\n !nextDataset.data ||\n addedDatasets.includes(currentDataset)\n ) {\n return { ...nextDataset } as ChartDataset<TType, TData>;\n }\n\n addedDatasets.push(currentDataset);\n\n Object.assign(currentDataset, nextDataset);\n\n return currentDataset;\n }\n );\n}\n\nexport function cloneData<\n TType extends ChartType = ChartType,\n TData = DefaultDataPoint<TType>,\n TLabel = unknown\n>(data: ChartData<TType, TData, TLabel>, datasetIdKey = defaultDatasetIdKey) {\n const nextData: ChartData<TType, TData, TLabel> = {\n labels: [],\n datasets: [],\n };\n\n setLabels(nextData, data.labels);\n setDatasets(nextData, data.datasets, datasetIdKey);\n\n return nextData;\n}\n\n/**\n * Get dataset from mouse click event\n * @param chart - Chart.js instance\n * @param event - Mouse click event\n * @returns Dataset\n */\nexport function getDatasetAtEvent(\n chart: Chart,\n event: MouseEvent<HTMLCanvasElement>\n) {\n return chart.getElementsAtEventForMode(\n event.nativeEvent,\n 'dataset',\n { intersect: true },\n false\n );\n}\n\n/**\n * Get single dataset element from mouse click event\n * @param chart - Chart.js instance\n * @param event - Mouse click event\n * @returns Dataset\n */\nexport function getElementAtEvent(\n chart: Chart,\n event: MouseEvent<HTMLCanvasElement>\n) {\n return chart.getElementsAtEventForMode(\n event.nativeEvent,\n 'nearest',\n { intersect: true },\n false\n );\n}\n\n/**\n * Get all dataset elements from mouse click event\n * @param chart - Chart.js instance\n * @param event - Mouse click event\n * @returns Dataset\n */\nexport function getElementsAtEvent(\n chart: Chart,\n event: MouseEvent<HTMLCanvasElement>\n) {\n return chart.getElementsAtEventForMode(\n event.nativeEvent,\n 'index',\n { intersect: true },\n false\n );\n}\n","import React, { useEffect, useRef, forwardRef } from 'react';\nimport { Chart as ChartJS } from 'chart.js';\nimport type { ChartType, DefaultDataPoint } from 'chart.js';\n\nimport type { ForwardedRef, ChartProps, BaseChartComponent } from './types.js';\nimport {\n reforwardRef,\n cloneData,\n setOptions,\n setLabels,\n setDatasets,\n} from './utils.js';\n\nfunction ChartComponent<\n TType extends ChartType = ChartType,\n TData = DefaultDataPoint<TType>,\n TLabel = unknown\n>(\n props: ChartProps<TType, TData, TLabel>,\n ref: ForwardedRef<ChartJS<TType, TData, TLabel>>\n) {\n const {\n height = 150,\n width = 300,\n redraw = false,\n datasetIdKey,\n type,\n data,\n options,\n plugins = [],\n fallbackContent,\n updateMode,\n ...canvasProps\n } = props as ChartProps;\n const canvasRef = useRef<HTMLCanvasElement>(null);\n const chartRef = useRef<ChartJS | null>();\n\n const renderChart = () => {\n if (!canvasRef.current) return;\n\n chartRef.current = new ChartJS(canvasRef.current, {\n type,\n data: cloneData(data, datasetIdKey),\n options: options && { ...options },\n plugins,\n });\n\n reforwardRef(ref, chartRef.current);\n };\n\n const destroyChart = () => {\n reforwardRef(ref, null);\n\n if (chartRef.current) {\n chartRef.current.destroy();\n chartRef.current = null;\n }\n };\n\n useEffect(() => {\n if (!redraw && chartRef.current && options) {\n setOptions(chartRef.current, options);\n }\n }, [redraw, options]);\n\n useEffect(() => {\n if (!redraw && chartRef.current) {\n setLabels(chartRef.current.config.data, data.labels);\n }\n }, [redraw, data.labels]);\n\n useEffect(() => {\n if (!redraw && chartRef.current && data.datasets) {\n setDatasets(chartRef.current.config.data, data.datasets, datasetIdKey);\n }\n }, [redraw, data.datasets]);\n\n useEffect(() => {\n if (!chartRef.current) return;\n\n if (redraw) {\n destroyChart();\n setTimeout(renderChart);\n } else {\n chartRef.current.update(updateMode);\n }\n }, [redraw, options, data.labels, data.datasets, updateMode]);\n\n useEffect(() => {\n if (!chartRef.current) return;\n\n destroyChart();\n setTimeout(renderChart);\n }, [type]);\n\n useEffect(() => {\n renderChart();\n\n return () => destroyChart();\n }, []);\n\n return (\n <canvas\n ref={canvasRef}\n role='img'\n height={height}\n width={width}\n {...canvasProps}\n >\n {fallbackContent}\n </canvas>\n );\n}\n\nexport const Chart = forwardRef(ChartComponent) as BaseChartComponent;\n","import React, { forwardRef } from 'react';\nimport {\n Chart as ChartJS,\n LineController,\n BarController,\n RadarController,\n DoughnutController,\n PolarAreaController,\n BubbleController,\n PieController,\n ScatterController,\n} from 'chart.js';\nimport type { ChartType, ChartComponentLike } from 'chart.js';\n\nimport type {\n ChartProps,\n ChartJSOrUndefined,\n TypedChartComponent,\n} from './types.js';\nimport { Chart } from './chart.js';\n\nfunction createTypedChart<T extends ChartType>(\n type: T,\n registerables: ChartComponentLike\n) {\n ChartJS.register(registerables);\n\n return forwardRef<ChartJSOrUndefined<T>, Omit<ChartProps<T>, 'type'>>(\n (props, ref) => <Chart {...props} ref={ref} type={type} />\n ) as TypedChartComponent<T>;\n}\n\nexport const Line = /* #__PURE__ */ createTypedChart('line', LineController);\n\nexport const Bar = /* #__PURE__ */ createTypedChart('bar', BarController);\n\nexport const Radar = /* #__PURE__ */ createTypedChart('radar', RadarController);\n\nexport const Doughnut = /* #__PURE__ */ createTypedChart(\n 'doughnut',\n DoughnutController\n);\n\nexport const PolarArea = /* #__PURE__ */ createTypedChart(\n 'polarArea',\n PolarAreaController\n);\n\nexport const Bubble = /* #__PURE__ */ createTypedChart(\n 'bubble',\n BubbleController\n);\n\nexport const Pie = /* #__PURE__ */ createTypedChart('pie', PieController);\n\nexport const Scatter = /* #__PURE__ */ createTypedChart(\n 'scatter',\n ScatterController\n);\n"],"names":["defaultDatasetIdKey","reforwardRef","ref","value","current","setOptions","chart","nextOptions","options","Object","assign","setLabels","currentData","nextLabels","labels","setDatasets","nextDatasets","datasetIdKey","addedDatasets","datasets","map","nextDataset","currentDataset","find","dataset","data","includes","push","cloneData","nextData","getDatasetAtEvent","event","getElementsAtEventForMode","nativeEvent","intersect","getElementAtEvent","getElementsAtEvent","ChartComponent","props","height","width","redraw","type","plugins","fallbackContent","updateMode","canvasProps","canvasRef","useRef","chartRef","renderChart","ChartJS","destroyChart","destroy","useEffect","config","setTimeout","update","canvas","role","Chart","forwardRef","createTypedChart","registerables","register","Line","LineController","Bar","BarController","Radar","RadarController","Doughnut","DoughnutController","PolarArea","PolarAreaController","Bubble","BubbleController","Pie","PieController","Scatter","ScatterController"],"mappings":"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"}