{"version":3,"file":"directive.mjs","sources":["../../../../../../packages/components/loading/src/directive.ts"],"sourcesContent":["// @ts-nocheck\r\nimport { isRef, ref } from 'vue'\r\nimport { hyphenate, isObject, isString } from '@vue/shared'\r\nimport { LoadingService } from './service'\r\nimport type { Directive, DirectiveBinding, UnwrapRef } from 'vue'\r\nimport type { LoadingOptions } from './types'\r\nimport type { LoadingInstance } from './createLoading'\r\n\r\nconst INSTANCE_KEY = Symbol('SgLoading')\r\n\r\nexport type LoadingBinding = boolean | UnwrapRef<LoadingOptions>\r\nexport interface SgLoading extends HTMLElement {\r\n  [INSTANCE_KEY]?: {\r\n    instance: LoadingInstance\r\n    options: LoadingOptions\r\n  }\r\n}\r\n\r\nconst createInstance = (\r\n  el: SgLoading,\r\n  binding: DirectiveBinding<LoadingBinding>\r\n) => {\r\n  const vm = binding.instance\r\n\r\n  const getBindingProp = <K extends keyof LoadingOptions>(\r\n    key: K\r\n  ): LoadingOptions[K] =>\r\n    isObject(binding.value) ? binding.value[key] : undefined\r\n\r\n  const resolveExpression = (key: any) => {\r\n    const data = (isString(key) && vm?.[key]) || key\r\n    if (data) return ref(data)\r\n    else return data\r\n  }\r\n\r\n  const getProp = <K extends keyof LoadingOptions>(name: K) =>\r\n    resolveExpression(\r\n      getBindingProp(name) ||\r\n        el.getAttribute(`loading-${hyphenate(name)}`)\r\n    )\r\n\r\n  const fullscreen =\r\n    getBindingProp('fullscreen') ?? binding.modifiers.fullscreen\r\n  const name = 'backgroundColor'\r\n  // console.log(getBindingProp(name) || el.getAttribute(`loading-${hyphenate(name)}`), hyphenate(name))\r\n\r\n  const options: LoadingOptions = {\r\n    text: getProp('text'),\r\n    fix: getProp('fix'),\r\n    spinner: getProp('spinner'),\r\n    color: getProp('color'),\r\n    backgroundColor: getProp('backgroundColor'),\r\n    customClass: getProp('customClass'),\r\n    fullscreen,\r\n    parent: getBindingProp('parent') ?? (fullscreen ? undefined : el),\r\n    transfer: getBindingProp('transfer') ?? binding.modifiers.transfer,\r\n    lock: getBindingProp('lock') ?? binding.modifiers.lock,\r\n  }\r\n\r\n  // console.log('LoadingOptions', options)\r\n\r\n  el[INSTANCE_KEY] = {\r\n    options,\r\n    instance: LoadingService(options),\r\n  }\r\n}\r\n\r\nconst updateOptions = (\r\n  newOptions: UnwrapRef<LoadingOptions>,\r\n  originalOptions: LoadingOptions\r\n) => {\r\n  for (const key of Object.keys(originalOptions)) {\r\n    if (isRef(originalOptions[key]))\r\n      originalOptions[key].value = newOptions[key]\r\n  }\r\n}\r\n\r\nexport const vLoading: Directive<SgLoading, LoadingBinding> = {\r\n  mounted(el, binding) {\r\n    if (binding.value) {\r\n      createInstance(el, binding)\r\n    }\r\n  },\r\n  updated(el, binding) {\r\n    const instance = el[INSTANCE_KEY]\r\n    if (binding.oldValue !== binding.value) {\r\n      if (binding.value && !binding.oldValue) {\r\n        createInstance(el, binding)\r\n      } else if (binding.value && binding.oldValue) {\r\n        if (isObject(binding.value))\r\n          updateOptions(binding.value, instance!.options)\r\n      } else {\r\n        instance?.instance.close()\r\n      }\r\n    }\r\n  },\r\n  unmounted(el) {\r\n    el[INSTANCE_KEY]?.instance.close()\r\n  },\r\n}\r\n"],"names":[],"mappings":"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"}