element-plus
Version:
A Component Library for Vue 3
1 lines • 4.96 kB
Source Map (JSON)
{"version":3,"file":"directive.mjs","names":[],"sources":["../../../../../../packages/components/loading/src/directive.ts"],"sourcesContent":["// @ts-nocheck\nimport { isRef, ref } from 'vue'\nimport { hyphenate, isObject, isString } from '@element-plus/utils'\nimport Loading from './service'\n\nimport type { Directive, DirectiveBinding, UnwrapRef } from 'vue'\nimport type { LoadingOptions } from './types'\nimport type { LoadingInstance } from './loading'\n\nconst INSTANCE_KEY = Symbol('ElLoading')\nconst getAttributeName = (name: string) => {\n return `element-loading-${hyphenate(name)}`\n}\n\nexport type LoadingBinding = boolean | UnwrapRef<LoadingOptions>\nexport interface ElementLoading extends HTMLElement {\n [INSTANCE_KEY]?: {\n instance: LoadingInstance\n options: LoadingOptions\n }\n}\n\nconst createInstance = (\n el: ElementLoading,\n binding: DirectiveBinding<LoadingBinding>\n) => {\n const vm = binding.instance\n\n const getBindingProp = <K extends keyof LoadingOptions>(\n key: K\n ): LoadingOptions[K] =>\n isObject(binding.value) ? binding.value[key] : undefined\n\n const resolveExpression = (key: any) => {\n const data = (isString(key) && vm?.[key]) || key\n return ref(data)\n }\n\n const getProp = <K extends keyof LoadingOptions>(name: K) =>\n resolveExpression(\n getBindingProp(name) || el.getAttribute(getAttributeName(name))\n )\n\n const fullscreen =\n getBindingProp('fullscreen') ?? binding.modifiers.fullscreen\n\n const options: LoadingOptions = {\n text: getProp('text'),\n svg: getProp('svg'),\n svgViewBox: getProp('svgViewBox'),\n spinner: getProp('spinner'),\n background: getProp('background'),\n customClass: getProp('customClass'),\n fullscreen,\n target: getBindingProp('target') ?? (fullscreen ? undefined : el),\n body: getBindingProp('body') ?? binding.modifiers.body,\n lock: getBindingProp('lock') ?? binding.modifiers.lock,\n }\n const instance = Loading(options)\n instance._context = vLoading._context\n el[INSTANCE_KEY] = {\n options,\n instance,\n }\n}\n\nconst updateOptions = (\n originalOptions: LoadingOptions,\n newOptions: UnwrapRef<LoadingOptions>\n) => {\n for (const key of Object.keys(originalOptions)) {\n if (isRef(originalOptions[key]))\n originalOptions[key].value = newOptions[key]\n }\n}\n\nconst vLoading: Directive<ElementLoading, LoadingBinding> = {\n mounted(el, binding) {\n if (binding.value) {\n createInstance(el, binding)\n }\n },\n updated(el, binding) {\n const instance = el[INSTANCE_KEY]\n if (!binding.value) {\n instance?.instance.close()\n el[INSTANCE_KEY] = null\n return\n }\n\n if (!instance) createInstance(el, binding)\n else {\n updateOptions(\n instance.options,\n isObject(binding.value)\n ? binding.value\n : {\n text: el.getAttribute(getAttributeName('text')),\n svg: el.getAttribute(getAttributeName('svg')),\n svgViewBox: el.getAttribute(getAttributeName('svgViewBox')),\n spinner: el.getAttribute(getAttributeName('spinner')),\n background: el.getAttribute(getAttributeName('background')),\n customClass: el.getAttribute(getAttributeName('customClass')),\n }\n )\n }\n },\n unmounted(el) {\n el[INSTANCE_KEY]?.instance.close()\n el[INSTANCE_KEY] = null\n },\n}\n\nvLoading._context = null\nexport default vLoading\n"],"mappings":";;;;;;AASA,MAAM,eAAe,OAAO,YAAY;AACxC,MAAM,oBAAoB,SAAiB;AACzC,QAAO,mBAAmB,UAAU,KAAK;;AAW3C,MAAM,kBACJ,IACA,YACG;CACH,MAAM,KAAK,QAAQ;CAEnB,MAAM,kBACJ,QAEA,SAAS,QAAQ,MAAM,GAAG,QAAQ,MAAM,OAAO;CAEjD,MAAM,qBAAqB,QAAa;AAEtC,SAAO,IADO,SAAS,IAAI,IAAI,KAAK,QAAS,IAC7B;;CAGlB,MAAM,WAA2C,SAC/C,kBACE,eAAe,KAAK,IAAI,GAAG,aAAa,iBAAiB,KAAK,CAAC,CAChE;CAEH,MAAM,aACJ,eAAe,aAAa,IAAI,QAAQ,UAAU;CAEpD,MAAM,UAA0B;EAC9B,MAAM,QAAQ,OAAO;EACrB,KAAK,QAAQ,MAAM;EACnB,YAAY,QAAQ,aAAa;EACjC,SAAS,QAAQ,UAAU;EAC3B,YAAY,QAAQ,aAAa;EACjC,aAAa,QAAQ,cAAc;EACnC;EACA,QAAQ,eAAe,SAAS,KAAK,aAAa,SAAY;EAC9D,MAAM,eAAe,OAAO,IAAI,QAAQ,UAAU;EAClD,MAAM,eAAe,OAAO,IAAI,QAAQ,UAAU;EACnD;CACD,MAAM,WAAW,QAAQ,QAAQ;AACjC,UAAS,WAAW,SAAS;AAC7B,IAAG,gBAAgB;EACjB;EACA;EACD;;AAGH,MAAM,iBACJ,iBACA,eACG;AACH,MAAK,MAAM,OAAO,OAAO,KAAK,gBAAgB,CAC5C,KAAI,MAAM,gBAAgB,KAAK,CAC7B,iBAAgB,KAAK,QAAQ,WAAW;;AAI9C,MAAM,WAAsD;CAC1D,QAAQ,IAAI,SAAS;AACnB,MAAI,QAAQ,MACV,gBAAe,IAAI,QAAQ;;CAG/B,QAAQ,IAAI,SAAS;EACnB,MAAM,WAAW,GAAG;AACpB,MAAI,CAAC,QAAQ,OAAO;AAClB,aAAU,SAAS,OAAO;AAC1B,MAAG,gBAAgB;AACnB;;AAGF,MAAI,CAAC,SAAU,gBAAe,IAAI,QAAQ;MAExC,eACE,SAAS,SACT,SAAS,QAAQ,MAAM,GACnB,QAAQ,QACR;GACE,MAAM,GAAG,aAAa,iBAAiB,OAAO,CAAC;GAC/C,KAAK,GAAG,aAAa,iBAAiB,MAAM,CAAC;GAC7C,YAAY,GAAG,aAAa,iBAAiB,aAAa,CAAC;GAC3D,SAAS,GAAG,aAAa,iBAAiB,UAAU,CAAC;GACrD,YAAY,GAAG,aAAa,iBAAiB,aAAa,CAAC;GAC3D,aAAa,GAAG,aAAa,iBAAiB,cAAc,CAAC;GAC9D,CACN;;CAGL,UAAU,IAAI;AACZ,KAAG,eAAe,SAAS,OAAO;AAClC,KAAG,gBAAgB;;CAEtB;AAED,SAAS,WAAW"}