UNPKG

@oiij/v-charts

Version:

A Vue Composable for VCharts

156 lines (153 loc) 4.85 kB
//#region rolldown:runtime var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) { key = keys[i]; if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: ((k) => from[k]).bind(null, key), enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod)); //#endregion const __visactor_vchart = __toESM(require("@visactor/vchart")); const __vueuse_core = __toESM(require("@vueuse/core")); const vue = __toESM(require("vue")); //#region src/index.ts const registerBase = [ __visactor_vchart.registerDiscreteLegend, __visactor_vchart.registerContinuousLegend, __visactor_vchart.registerCustomMark, __visactor_vchart.registerAllMarks, __visactor_vchart.registerTitle, __visactor_vchart.registerTooltip, __visactor_vchart.registerDomTooltipHandler ]; const registerPolar = [ __visactor_vchart.registerPolarLinearAxis, __visactor_vchart.registerPolarBandAxis, __visactor_vchart.registerPolarCrossHair, __visactor_vchart.registerBrush, __visactor_vchart.registerDataZoom, ...registerBase ]; const registerCartesian = [ __visactor_vchart.registerCartesianLinearAxis, __visactor_vchart.registerCartesianBandAxis, __visactor_vchart.registerCartesianTimeAxis, __visactor_vchart.registerCartesianLogAxis, __visactor_vchart.registerCartesianCrossHair, __visactor_vchart.registerBrush, __visactor_vchart.registerDataZoom, __visactor_vchart.registerMarkArea, __visactor_vchart.registerMarkLine, __visactor_vchart.registerMarkPoint, __visactor_vchart.registerScrollBar, ...registerBase ]; const baseChat = [ __visactor_vchart.registerLineChart, __visactor_vchart.registerAreaChart, __visactor_vchart.registerBarChart, __visactor_vchart.registerPieChart ]; __visactor_vchart.VChart.useRegisters([ ...registerCartesian, ...baseChat, __visactor_vchart.registerAnimate ]); function register(comps) { __visactor_vchart.VChart.useRegisters(comps); } function useVCharts(options, darkMode, initOptions) { const domRef = (0, vue.ref)(); const vChart = (0, vue.shallowRef)(null); const optionsRef = (0, vue.ref)((0, vue.toValue)(options)); (0, vue.watchEffect)(() => { optionsRef.value = (0, vue.toValue)(options); }); const { width, height } = (0, __vueuse_core.useElementSize)(domRef); const onRenderEvent = (0, __vueuse_core.createEventHook)(); const onUpdateEvent = (0, __vueuse_core.createEventHook)(); const onResizeEvent = (0, __vueuse_core.createEventHook)(); const onDisposeEvent = (0, __vueuse_core.createEventHook)(); function setOption(spec) { if (vChart.value) { vChart.value.updateSpec(spec); onUpdateEvent.trigger(spec); } } function render() { if (domRef.value) { if (vChart.value) { resize(); return; } const theme = darkMode?.value ? "dark" : "light"; if (optionsRef.value) { vChart.value = new __visactor_vchart.VChart(optionsRef.value, { dom: domRef.value, theme, ...initOptions }); vChart.value.renderSync(); onRenderEvent.trigger(vChart.value); } } } const renderDebounce = (0, __vueuse_core.useDebounceFn)(render, 100); function resize() { vChart.value?.resizeSync(width.value, height.value); onResizeEvent.trigger({ width: width.value, height: height.value }); } const resizeDebounce = (0, __vueuse_core.useDebounceFn)(resize, 100); function destroy() { vChart.value?.release(); vChart.value = null; onDisposeEvent.trigger(); } (0, vue.watch)([width, height], ([width$1, height$1]) => { if (width$1 > 0 && height$1 > 0) if (vChart.value) resizeDebounce(); else renderDebounce(); }); (0, vue.watch)(optionsRef, (v) => { if (v) if (vChart.value) setOption(v); else render(); }); (0, vue.watchEffect)(() => { destroy(); render(); }); (0, vue.onUnmounted)(() => { destroy(); }); return { domRef, vChart, options: optionsRef, onRender: onRenderEvent.on, onUpdate: onUpdateEvent.on, onResize: onResizeEvent.on, onDispose: onDisposeEvent.on }; } //#endregion exports.baseChat = baseChat; exports.register = register; exports.registerBase = registerBase; exports.registerCartesian = registerCartesian; exports.registerPolar = registerPolar; exports.useVCharts = useVCharts;