{"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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"}