import { BarController, BubbleController, Chart, DoughnutController, LineController, PieController, PolarAreaController, RadarController, ScatterController } from "./chunk-44JN52BC.js"; import { D, Rn, init_compat_module } from "./chunk-AAFB4U5C.js"; import { A, y } from "./chunk-O5MKVYJX.js"; import "./chunk-453BAUPL.js"; import "./chunk-BYYN2XO5.js"; // node_modules/react-chartjs-2/dist/index.js init_compat_module(); var defaultDatasetIdKey = "label"; function reforwardRef(ref, value) { if (typeof ref === "function") { ref(value); } else if (ref) { ref.current = value; } } function setOptions(chart, nextOptions) { const options = chart.options; if (options && nextOptions) { Object.assign(options, nextOptions); } } function setLabels(currentData, nextLabels) { currentData.labels = nextLabels; } function setDatasets(currentData, nextDatasets) { let datasetIdKey = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : defaultDatasetIdKey; const addedDatasets = []; currentData.datasets = nextDatasets.map((nextDataset) => { const currentDataset = currentData.datasets.find((dataset) => dataset[datasetIdKey] === nextDataset[datasetIdKey]); if (!currentDataset || !nextDataset.data || addedDatasets.includes(currentDataset)) { return { ...nextDataset }; } addedDatasets.push(currentDataset); Object.assign(currentDataset, nextDataset); return currentDataset; }); } function cloneData(data) { let datasetIdKey = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : defaultDatasetIdKey; const nextData = { labels: [], datasets: [] }; setLabels(nextData, data.labels); setDatasets(nextData, data.datasets, datasetIdKey); return nextData; } function getDatasetAtEvent(chart, event) { return chart.getElementsAtEventForMode(event.nativeEvent, "dataset", { intersect: true }, false); } function getElementAtEvent(chart, event) { return chart.getElementsAtEventForMode(event.nativeEvent, "nearest", { intersect: true }, false); } function getElementsAtEvent(chart, event) { return chart.getElementsAtEventForMode(event.nativeEvent, "index", { intersect: true }, false); } function ChartComponent(props, ref) { const { height = 150, width = 300, redraw = false, datasetIdKey, type, data, options, plugins = [], fallbackContent, updateMode, ...canvasProps } = props; const canvasRef = A(null); const chartRef = A(null); const renderChart = () => { if (!canvasRef.current) return; chartRef.current = new Chart(canvasRef.current, { type, data: cloneData(data, datasetIdKey), options: options && { ...options }, plugins }); reforwardRef(ref, chartRef.current); }; const destroyChart = () => { reforwardRef(ref, null); if (chartRef.current) { chartRef.current.destroy(); chartRef.current = null; } }; y(() => { if (!redraw && chartRef.current && options) { setOptions(chartRef.current, options); } }, [ redraw, options ]); y(() => { if (!redraw && chartRef.current) { setLabels(chartRef.current.config.data, data.labels); } }, [ redraw, data.labels ]); y(() => { if (!redraw && chartRef.current && data.datasets) { setDatasets(chartRef.current.config.data, data.datasets, datasetIdKey); } }, [ redraw, data.datasets ]); y(() => { if (!chartRef.current) return; if (redraw) { destroyChart(); setTimeout(renderChart); } else { chartRef.current.update(updateMode); } }, [ redraw, options, data.labels, data.datasets, updateMode ]); y(() => { if (!chartRef.current) return; destroyChart(); setTimeout(renderChart); }, [ type ]); y(() => { renderChart(); return () => destroyChart(); }, []); return Rn.createElement("canvas", { ref: canvasRef, role: "img", height, width, ...canvasProps }, fallbackContent); } var Chart2 = D(ChartComponent); function createTypedChart(type, registerables) { Chart.register(registerables); return D((props, ref) => Rn.createElement(Chart2, { ...props, ref, type })); } var Line = createTypedChart("line", LineController); var Bar = createTypedChart("bar", BarController); var Radar = createTypedChart("radar", RadarController); var Doughnut = createTypedChart("doughnut", DoughnutController); var PolarArea = createTypedChart("polarArea", PolarAreaController); var Bubble = createTypedChart("bubble", BubbleController); var Pie = createTypedChart("pie", PieController); var Scatter = createTypedChart("scatter", ScatterController); export { Bar, Bubble, Chart2 as Chart, Doughnut, Line, Pie, PolarArea, Radar, Scatter, getDatasetAtEvent, getElementAtEvent, getElementsAtEvent }; //# sourceMappingURL=react-chartjs-2.js.map