@vuesax-alpha/nightly
Version:
A Component Library for Vue 3
1 lines • 5.95 kB
Source Map (JSON)
{"version":3,"file":"directive.mjs","sources":["../../../../../../packages/components/loading/src/directive.ts"],"sourcesContent":["// @ts-nocheck\nimport { isRef, ref } from 'vue'\nimport { hyphenate } from '@vue/shared'\nimport { isEqual } from 'lodash-unified'\nimport { isObject, isString } from '@vuesax-alpha/utils'\nimport { loading } from './method'\nimport type { LoadingHandle, LoadingParams } from './loading'\nimport type { Directive, DirectiveBinding, UnwrapRef } from 'vue'\n\nconst INSTANCE_KEY = Symbol('VsLoading')\n\nexport type LoadingBinding = boolean | UnwrapRef<LoadingParams>\nexport interface ElementLoading extends HTMLElement {\n [INSTANCE_KEY]?: {\n instance: LoadingHandle\n options: LoadingParams\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 LoadingParams>(\n key: K\n ): LoadingParams[K] =>\n isObject(binding.value) ? binding.value[key] : undefined\n\n const resolveExpression = (key: any) => {\n const data = (isString(key) && vm?.[key]) || key\n if (data) return ref(data)\n return data\n }\n\n const getProp = <K extends keyof LoadingParams>(name: K, def?: unknown) =>\n resolveExpression(\n getBindingProp(name) ??\n el.getAttribute(`element-loading-${hyphenate(name)}`) ??\n def\n )\n\n const options: LoadingParams = {\n text: getProp('text'),\n color: getProp('color'),\n background: getProp('background'),\n target: getBindingProp('target') ?? el,\n opacity: getProp('opacity'),\n progress: getProp('progress'),\n percent: getProp('percent'),\n scale: getProp('scale'),\n type: getProp('type'),\n }\n\n el[INSTANCE_KEY] = {\n options,\n instance: loading(options),\n }\n}\n\nconst updateOptions = (\n newOptions: UnwrapRef<LoadingParams>,\n originalOptions: LoadingParams\n) => {\n for (const key of Object.keys(originalOptions)) {\n if (isRef(originalOptions[key])) {\n originalOptions[key].value = newOptions[key]\n }\n }\n}\n\nexport const vLoading: Directive<ElementLoading, LoadingBinding> = {\n mounted(el, binding) {\n if (\n binding.value == true ||\n (isObject(binding.value) && binding.value.visible)\n ) {\n createInstance(el, binding)\n }\n },\n updated(el, binding) {\n const instance = el[INSTANCE_KEY]\n\n if (!isEqual(binding.value, binding.oldValue)) {\n if (isObject(binding.value)) {\n if (binding.value.visible) {\n if (!binding.oldValue?.visible) {\n createInstance(el, binding)\n }\n\n if (instance) updateOptions(binding.value, instance.options)\n } else {\n instance?.instance.close()\n }\n } else {\n if (binding.value) {\n createInstance(el, binding)\n } else {\n instance?.instance.close()\n }\n }\n }\n },\n unmounted(el) {\n el[INSTANCE_KEY]?.instance.close()\n },\n}\n"],"names":["_a"],"mappings":"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"}