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