{"version":3,"file":"directive.mjs","sources":["../../../../../../packages/components/loading/src/directive.ts"],"sourcesContent":["import type { ObjectDirective, DirectiveBinding } from 'vue'\nimport type { LoadingOptions, LoadingInstance } from './type'\nimport { createLoadingComponent } from './loading'\n\nconst LOADING_KEY = Symbol('loading')\n\nexport type LoadingEl = HTMLElement & {\n  [LOADING_KEY]?: {\n    instance?: LoadingInstance\n    options: LoadingOptions\n  }\n}\n\nexport type LoadingBinding = boolean | LoadingOptions\n\nconst createInstance = (el: LoadingEl, binding: DirectiveBinding<LoadingBinding>) => {\n  const getAttributeValue = <K extends keyof LoadingOptions>(key: K) => {\n    return el.getAttribute(`bn-loading-${key}`) || ''\n  }\n\n  const getBindingValue = <K extends keyof LoadingOptions>(key: K) => {\n    return binding.modifiers[key]\n  }\n\n  const options: LoadingOptions = {\n    background: getAttributeValue('background'),\n    text: getAttributeValue('text'),\n    color: getAttributeValue('color'),\n    customClass: getAttributeValue('customClass'),\n    renderTo: el,\n    iconSize: Number(getAttributeValue('iconSize')),\n    fullScreen: getBindingValue('fullScreen')\n  }\n\n  const instance = createLoadingComponent(options)\n  instance?.appendLoading()\n\n  el[LOADING_KEY] = {\n    options,\n    instance\n  }\n}\n\nexport const vLoading: ObjectDirective = {\n  mounted(el, binding) {\n    if (binding.value) {\n      createInstance(el, binding)\n    }\n  },\n  updated(el, binding) {\n    const instance = el[LOADING_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        console.log('update option')\n      } else {\n        instance?.instance.cancelLoading()\n      }\n    }\n  },\n  unmounted(el) {\n    el[LOADING_KEY]?.instance.cancelLoading()\n  }\n}\n"],"names":[],"mappings":";;AAIA,MAAM,WAAA,GAAc,OAAO,SAAS,CAAA,CAAA;AAWpC,MAAM,cAAA,GAAiB,CAAC,EAAA,EAAe,OAA8C,KAAA;AACnF,EAAM,MAAA,iBAAA,GAAoB,CAAiC,GAAW,KAAA;AACpE,IAAA,OAAO,EAAG,CAAA,YAAA,CAAa,CAAc,WAAA,EAAA,GAAA,CAAA,CAAK,CAAK,IAAA,EAAA,CAAA;AAAA,GACjD,CAAA;AAEA,EAAM,MAAA,eAAA,GAAkB,CAAiC,GAAW,KAAA;AAClE,IAAO,OAAA,OAAA,CAAQ,UAAU,GAAG,CAAA,CAAA;AAAA,GAC9B,CAAA;AAEA,EAAA,MAAM,OAA0B,GAAA;AAAA,IAC9B,UAAA,EAAY,kBAAkB,YAAY,CAAA;AAAA,IAC1C,IAAA,EAAM,kBAAkB,MAAM,CAAA;AAAA,IAC9B,KAAA,EAAO,kBAAkB,OAAO,CAAA;AAAA,IAChC,WAAA,EAAa,kBAAkB,aAAa,CAAA;AAAA,IAC5C,QAAU,EAAA,EAAA;AAAA,IACV,QAAU,EAAA,MAAA,CAAO,iBAAkB,CAAA,UAAU,CAAC,CAAA;AAAA,IAC9C,UAAA,EAAY,gBAAgB,YAAY,CAAA;AAAA,GAC1C,CAAA;AAEA,EAAM,MAAA,QAAA,GAAW,uBAAuB,OAAO,CAAA,CAAA;AAC/C,EAAU,QAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAA,aAAA,EAAA,CAAA;AAEV,EAAA,EAAA,CAAG,WAAW,CAAI,GAAA;AAAA,IAChB,OAAA;AAAA,IACA,QAAA;AAAA,GACF,CAAA;AACF,CAAA,CAAA;AAEO,MAAM,QAA4B,GAAA;AAAA,EACvC,OAAA,CAAQ,IAAI,OAAS,EAAA;AACnB,IAAA,IAAI,QAAQ,KAAO,EAAA;AACjB,MAAA,cAAA,CAAe,IAAI,OAAO,CAAA,CAAA;AAAA,KAC5B;AAAA,GACF;AAAA,EACA,OAAA,CAAQ,IAAI,OAAS,EAAA;AACnB,IAAM,MAAA,QAAA,GAAW,GAAG,WAAW,CAAA,CAAA;AAC/B,IAAI,IAAA,OAAA,CAAQ,QAAa,KAAA,OAAA,CAAQ,KAAO,EAAA;AACtC,MAAA,IAAI,OAAQ,CAAA,KAAA,IAAS,CAAC,OAAA,CAAQ,QAAU,EAAA;AACtC,QAAA,cAAA,CAAe,IAAI,OAAO,CAAA,CAAA;AAAA,OACjB,MAAA,IAAA,OAAA,CAAQ,KAAS,IAAA,OAAA,CAAQ,QAAU,EAAA;AAC5C,QAAA,OAAA,CAAQ,IAAI,eAAe,CAAA,CAAA;AAAA,OACtB,MAAA;AACL,QAAA,QAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAU,QAAS,CAAA,aAAA,EAAA,CAAA;AAAA,OACrB;AAAA,KACF;AAAA,GACF;AAAA,EACA,UAAU,EAAI,EAAA;AA7DhB,IAAA,IAAA,EAAA,CAAA;AA8DI,IAAG,CAAA,EAAA,GAAA,EAAA,CAAA,WAAW,CAAd,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAiB,QAAS,CAAA,aAAA,EAAA,CAAA;AAAA,GAC5B;AACF;;;;"}