Files
lcbp3.np-dms.work/n8n-cache/n8n/public/assets/index-CaZY86md.js
2025-09-21 20:29:15 +07:00

184 lines
5.0 KiB
JavaScript
Executable File

import { fL as Chart$1, d as defineComponent, cl as shallowRef, aW as h, fM as LineController, fN as version, r as ref, o as onMounted, W as onBeforeUnmount, a7 as watch, eP as toRaw, fO as isProxy, fP as BarController } from "./index-CeNA_ukL.js";
const CommonProps = {
data: {
type: Object,
required: true
},
options: {
type: Object,
default: () => ({})
},
plugins: {
type: Array,
default: () => []
},
datasetIdKey: {
type: String,
default: "label"
},
updateMode: {
type: String,
default: void 0
}
};
const Props = {
type: {
type: String,
required: true
},
...CommonProps
};
const compatProps = version[0] === "2" ? (internals, props) => Object.assign(internals, {
attrs: props
}) : (internals, props) => Object.assign(internals, props);
function toRawIfProxy(obj) {
return isProxy(obj) ? toRaw(obj) : obj;
}
function cloneProxy(obj) {
let src = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : obj;
return isProxy(src) ? new Proxy(obj, {}) : obj;
}
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, datasetIdKey) {
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, datasetIdKey) {
const nextData = {
labels: [],
datasets: []
};
setLabels(nextData, data.labels);
setDatasets(nextData, data.datasets, datasetIdKey);
return nextData;
}
const Chart = defineComponent({
props: Props,
setup(props, param) {
let { expose } = param;
const canvasRef = ref(null);
const chartRef = shallowRef(null);
expose({
chart: chartRef
});
const renderChart = () => {
if (!canvasRef.value) return;
const { type, data, options, plugins, datasetIdKey } = props;
const clonedData = cloneData(data, datasetIdKey);
const proxiedData = cloneProxy(clonedData, data);
chartRef.value = new Chart$1(canvasRef.value, {
type,
data: proxiedData,
options: {
...options
},
plugins
});
};
const destroyChart = () => {
const chart = toRaw(chartRef.value);
if (chart) {
chart.destroy();
chartRef.value = null;
}
};
const update = (chart) => {
chart.update(props.updateMode);
};
onMounted(renderChart);
onBeforeUnmount(destroyChart);
watch([
() => props.options,
() => props.data
], (param2, param1) => {
let [nextOptionsProxy, nextDataProxy] = param2, [prevOptionsProxy, prevDataProxy] = param1;
const chart = toRaw(chartRef.value);
if (!chart) {
return;
}
let shouldUpdate = false;
if (nextOptionsProxy) {
const nextOptions = toRawIfProxy(nextOptionsProxy);
const prevOptions = toRawIfProxy(prevOptionsProxy);
if (nextOptions && nextOptions !== prevOptions) {
setOptions(chart, nextOptions);
shouldUpdate = true;
}
}
if (nextDataProxy) {
const nextLabels = toRawIfProxy(nextDataProxy.labels);
const prevLabels = toRawIfProxy(prevDataProxy.labels);
const nextDatasets = toRawIfProxy(nextDataProxy.datasets);
const prevDatasets = toRawIfProxy(prevDataProxy.datasets);
if (nextLabels !== prevLabels) {
setLabels(chart.config.data, nextLabels);
shouldUpdate = true;
}
if (nextDatasets && nextDatasets !== prevDatasets) {
setDatasets(chart.config.data, nextDatasets, props.datasetIdKey);
shouldUpdate = true;
}
}
if (shouldUpdate) {
update(chart);
}
}, {
deep: true
});
return () => {
return h("canvas", {
ref: canvasRef
});
};
}
});
function createTypedChart(type, registerables) {
Chart$1.register(registerables);
return defineComponent({
props: CommonProps,
setup(props, param) {
let { expose } = param;
const ref2 = shallowRef(null);
const reforwardRef = (chartRef) => {
ref2.value = chartRef?.chart;
};
expose({
chart: ref2
});
return () => {
return h(Chart, compatProps({
ref: reforwardRef
}, {
type,
...props
}));
};
}
});
}
const Bar = /* @__PURE__ */ createTypedChart("bar", BarController);
const Line = /* @__PURE__ */ createTypedChart("line", LineController);
export {
Bar as B,
Chart as C,
Line as L
};