{"version":3,"file":"index.cjs","sources":["../../../directives/loading/index.ts"],"sourcesContent":["import { Spin } from '@/components/spin'\n\nimport { createVNode, nextTick, render } from 'vue'\n\nimport { isObject } from '@vexip-ui/utils'\n\nimport type { SpinProps } from '@/components/spin'\nimport type { DirectiveBinding, ObjectDirective, VNode } from 'vue'\n\ninterface LoadingRecord {\n  spin: VNode,\n  props: SpinProps,\n  originPosition: string\n}\n\nfunction createSpin(\n  el: HTMLElement & { __loading?: LoadingRecord },\n  binding: DirectiveBinding<boolean | SpinProps>,\n) {\n  const props: SpinProps = isObject(binding.value)\n    ? { ...binding.value }\n    : { active: binding.value }\n\n  props.inner = true\n\n  const spin = createVNode(Spin, props, null, 0, Object.keys(props))\n  const position = getComputedStyle(el).position\n\n  el.__loading = {\n    spin,\n    props,\n    originPosition: position,\n  }\n\n  if (position === 'static') {\n    el.style.position = 'relative'\n  }\n\n  render(spin, el)\n}\n\nexport const vLoading: ObjectDirective<\n  HTMLElement & { __loading?: LoadingRecord },\n  boolean | SpinProps\n> = {\n  mounted(el, binding) {\n    nextTick(() => createSpin(el, binding))\n  },\n  updated(el, binding) {\n    nextTick(() => {\n      if (!el.__loading) {\n        createSpin(el, binding)\n        return\n      }\n\n      const props: SpinProps = isObject(binding.value) ? binding.value : { active: binding.value }\n      const component = el.__loading.spin.component\n\n      if (component) {\n        Object.keys(props).forEach(key => {\n          component.props[key] = props[key as keyof SpinProps]\n        })\n\n        component.props.inner = true\n      }\n    })\n  },\n  beforeUnmount(el) {\n    if (!el.__loading) return\n\n    render(null, el)\n    delete el.__loading\n  },\n}\n"],"names":["createSpin","el","binding","props","isObject","spin","createVNode","Spin","position","render","vLoading","nextTick","component","key"],"mappings":"gOAeA,SAASA,EACPC,EACAC,EACA,CACA,MAAMC,EAAmBC,EAAAA,SAASF,EAAQ,KAAK,EAC3C,CAAE,GAAGA,EAAQ,KAAM,EACnB,CAAE,OAAQA,EAAQ,KAAM,EAE5BC,EAAM,MAAQ,GAER,MAAAE,EAAOC,cAAYC,EAAMJ,EAAO,KAAM,EAAG,OAAO,KAAKA,CAAK,CAAC,EAC3DK,EAAW,iBAAiBP,CAAE,EAAE,SAEtCA,EAAG,UAAY,CACb,KAAAI,EACA,MAAAF,EACA,eAAgBK,CAClB,EAEIA,IAAa,WACfP,EAAG,MAAM,SAAW,YAGtBQ,EAAA,OAAOJ,EAAMJ,CAAE,CACjB,CAEO,MAAMS,EAGT,CACF,QAAQT,EAAIC,EAAS,CACnBS,EAAAA,SAAS,IAAMX,EAAWC,EAAIC,CAAO,CAAC,CACxC,EACA,QAAQD,EAAIC,EAAS,CACnBS,EAAAA,SAAS,IAAM,CACT,GAAA,CAACV,EAAG,UAAW,CACjBD,EAAWC,EAAIC,CAAO,EACtB,MAAA,CAGI,MAAAC,EAAmBC,EAAAA,SAASF,EAAQ,KAAK,EAAIA,EAAQ,MAAQ,CAAE,OAAQA,EAAQ,KAAM,EACrFU,EAAYX,EAAG,UAAU,KAAK,UAEhCW,IACF,OAAO,KAAKT,CAAK,EAAE,QAAeU,GAAA,CAChCD,EAAU,MAAMC,CAAG,EAAIV,EAAMU,CAAsB,CAAA,CACpD,EAEDD,EAAU,MAAM,MAAQ,GAC1B,CACD,CACH,EACA,cAAcX,EAAI,CACXA,EAAG,YAERQ,EAAA,OAAO,KAAMR,CAAE,EACf,OAAOA,EAAG,UAAA,CAEd"}