UNPKG

@opensig/opendesign

Version:

61 lines (60 loc) 1.83 kB
import { render, isReactive, watch, h } from "vue"; import _sfc_main from "./OLoading.vue.mjs"; import { isObject } from "../_utils/is.mjs"; let globalLoadingOptions = {}; const setVLoadingOption = (option) => { globalLoadingOptions = option; }; const WATCH_HANDLE = Symbol("watch-handle"); const VNODE = Symbol("vnode"); const renderLoading = (el, value, modifiers, shouldWatch) => { var _a; const selfOption = {}; if (isObject(value)) { Object.assign(selfOption, value); selfOption.wrapper = value.wrapper ?? null; if (shouldWatch) { (_a = el[WATCH_HANDLE]) == null ? void 0 : _a.call(el); el[WATCH_HANDLE] = void 0; if (isReactive(value)) { el[WATCH_HANDLE] = watch(value, (newValue) => { renderLoading(el, newValue, modifiers, false); }); } } } else { selfOption.visible = value; selfOption.wrapper = modifiers.body ? "body" : null; selfOption.mask = !modifiers.nomask; } const vnode = h(_sfc_main, Object.assign({}, globalLoadingOptions, selfOption)); el[VNODE] = vnode; render(vnode, el); }; const vLoading = { mounted(el, binding) { renderLoading(el, binding.value, binding.modifiers, true); }, updated(el, binding) { var _a, _b, _c; if (binding.value === binding.oldValue) return; if (isObject(binding.value)) { renderLoading(el, binding.value, binding.modifiers, true); } else { (_c = (_b = (_a = el[VNODE]) == null ? void 0 : _a.component) == null ? void 0 : _b.exposed) == null ? void 0 : _c.toggle(Boolean(binding.value)); } }, beforeUnmount(el) { var _a; (_a = el[WATCH_HANDLE]) == null ? void 0 : _a.call(el); render(null, el); el[VNODE] = void 0; el[WATCH_HANDLE] = void 0; } }; export { VNODE, WATCH_HANDLE, setVLoadingOption, vLoading };