UNPKG

yuang-framework-ui-pc

Version:

yuang-framework-ui-pc Library

108 lines (107 loc) 2.68 kB
"use strict"; const vue = require("vue"); const countup_js = require("countup.js"); const props = require("./props"); const isFunction = (value) => typeof value === "function"; const _sfc_main = vue.defineComponent({ name: "EleCountUp", props: props.countUpProps, emits: props.countUpEmits, setup(props2, { emit }) { let instance; const rootRef = vue.ref(null); const create = () => { const elem = vue.unref(rootRef); if (instance || !elem) { return; } const ins = new countup_js.CountUp(elem, props2.endVal ?? 0, props2.options); if (ins.error) { console.warn(ins); return; } instance = ins; }; const printValue = (value) => { if (instance && isFunction(instance.printValue)) { return instance.printValue(value); } }; const start = (callback) => { if (instance && isFunction(instance.start)) { return instance.start(callback); } }; const pauseResume = () => { if (instance && isFunction(instance.pauseResume)) { return instance.pauseResume(); } }; const reset = () => { if (instance && isFunction(instance.reset)) { return instance.reset(); } }; const update = (newEndVal) => { if (instance && isFunction(instance.update)) { return instance.update(newEndVal ?? 0); } }; const destroy = () => { reset(); instance = null; }; vue.watch( () => props2.endVal, (value) => { update(value); } ); vue.watch( () => props2.options, () => { destroy(); create(); emit("ready", instance); } ); vue.onMounted(() => { create(); if (props2.delay < 0) { emit("ready", instance); return; } setTimeout(() => { if (instance && isFunction(instance.start)) { instance.start(() => { emit("ready", instance); }); } }, props2.delay); }); vue.onBeforeUnmount(() => { destroy(); }); return { rootRef, printValue, start, pauseResume, reset, update }; } }); const _export_sfc = (sfc, props2) => { const target = sfc.__vccOpts || sfc; for (const [key, val] of props2) { target[key] = val; } return target; }; const _hoisted_1 = { ref: "rootRef" }; function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { return vue.openBlock(), vue.createElementBlock("span", _hoisted_1, null, 512); } const index = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]); module.exports = index;