196 lines
4.8 KiB
JavaScript
196 lines
4.8 KiB
JavaScript
import {
|
|
D,
|
|
Rn,
|
|
init_compat_module
|
|
} from "./chunk-AAFB4U5C.js";
|
|
import {
|
|
A,
|
|
y
|
|
} from "./chunk-O5MKVYJX.js";
|
|
import {
|
|
BarController,
|
|
BubbleController,
|
|
Chart,
|
|
DoughnutController,
|
|
LineController,
|
|
PieController,
|
|
PolarAreaController,
|
|
RadarController,
|
|
ScatterController
|
|
} from "./chunk-44JN52BC.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
|