{"version":3,"file":"directive.mjs","sources":["../../../../../../packages/components/loading/src/directive.ts"],"sourcesContent":["// @ts-nocheck\nimport { isRef, ref } from 'vue'\nimport { hyphenate, isObject, isString } from '@vue/shared'\nimport { Loading } from './service'\nimport type { Directive, DirectiveBinding, UnwrapRef } from 'vue'\nimport type { LoadingOptions } from './types'\nimport type { LoadingInstance } from './loading'\n\nconst INSTANCE_KEY = Symbol('BLoading')\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    if (data) return ref(data)\n    else return data\n  }\n\n  const getProp = <K extends keyof LoadingOptions>(name: K) =>\n    resolveExpression(\n      getBindingProp(name) || el.getAttribute(`b-loading-${hyphenate(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  el[INSTANCE_KEY] = {\n    options,\n    instance: Loading(options),\n  }\n}\n\nconst updateOptions = (\n  newOptions: UnwrapRef<LoadingOptions>,\n  originalOptions: LoadingOptions\n) => {\n  for (const key of Object.keys(originalOptions)) {\n    if (isRef(originalOptions[key]))\n      originalOptions[key].value = newOptions[key]\n  }\n}\n\nexport const 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.oldValue !== binding.value) {\n      if (binding.value && !binding.oldValue) {\n        createInstance(el, binding)\n      } else if (binding.value && binding.oldValue) {\n        if (isObject(binding.value))\n          updateOptions(binding.value, instance!.options)\n      } else {\n        instance?.instance.close()\n      }\n    }\n  },\n  unmounted(el) {\n    el[INSTANCE_KEY]?.instance.close()\n  },\n}\n"],"names":[],"mappings":"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"}