{"version":3,"file":"index.mjs","sources":["../../../../src/plugins/toastController/index.ts"],"sourcesContent":["import {markRaw, type Plugin, ref, toRef, watch} from 'vue'\nimport {toastPluginKey} from '../../utils/keys'\nimport type {ContainerPosition} from '../../types/Alignment'\nimport type {\n  ControllerKey,\n  ToastOrchestratorArrayValue,\n  ToastOrchestratorShowParam,\n} from '../../types/ComponentOrchestratorTypes'\n\nconst posDefault: ContainerPosition = 'top-end'\n\nexport const toastPlugin: Plugin = {\n  install(app) {\n    const toasts = ref<ToastOrchestratorArrayValue[]>([])\n\n    const _isAppend = ref(false)\n\n    const _setIsAppend = (value: boolean) => {\n      _isAppend.value = value\n    }\n\n    /**\n     * @returns {ControllerKey} If `id` is passed to props, it will use that id, otherwise, a symbol will be created that corresponds to its unique id.\n     * You can pass this id to the hide function to force a Toast to hide\n     */\n    const show = (obj: ToastOrchestratorShowParam = {}): ControllerKey => {\n      const resolvedProps = toRef(obj.props)\n\n      const _self = resolvedProps.value?.id || Symbol('Toast controller')\n\n      const toastToAdd: ToastOrchestratorArrayValue = {\n        component: !obj.component ? undefined : markRaw(obj.component),\n        props: {\n          ...resolvedProps.value,\n          pos: resolvedProps.value?.pos || posDefault,\n          _modelValue: resolvedProps.value?.value || 5000,\n          _self,\n        },\n      }\n\n      if (\n        resolvedProps.value?.appendToast !== undefined\n          ? resolvedProps.value.appendToast\n          : _isAppend.value\n      ) {\n        toasts.value.push(toastToAdd)\n      } else {\n        toasts.value.unshift(toastToAdd)\n      }\n\n      watch(resolvedProps, (newValue) => {\n        const previousIndex = toasts.value.findIndex((el) => el.props._self === _self)\n        if (previousIndex === -1) return\n        toasts.value.splice(previousIndex, 1, {\n          component: !obj.component ? undefined : markRaw(obj.component),\n          props: {\n            ...toasts.value[previousIndex].props,\n            ...newValue,\n            _modelValue: newValue?.value || toasts.value[previousIndex].props._modelValue || 5000,\n          },\n        })\n      })\n\n      return _self\n    }\n\n    /**\n     * You can get the symbol param from the return value from the show method, or use props.id\n     */\n    const remove = (self: ControllerKey) => {\n      toasts.value = toasts.value.filter((el) => el.props._self !== self)\n    }\n\n    /**\n     * You can get the symbol param from the return value from the show method, or use props.id\n     */\n    const leave = (self: ControllerKey) => {\n      const toastIndex = toasts.value.findIndex((el) => el.props._self === self)\n      if (toastIndex === -1) return\n      toasts.value.splice(toastIndex, 1, {\n        component: !toasts.value[toastIndex].component\n          ? undefined\n          : markRaw(toasts.value[toastIndex].component as object),\n        props: {\n          ...toasts.value[toastIndex].props,\n          _modelValue: false,\n        },\n      })\n    }\n\n    app.provide(toastPluginKey, {\n      _setIsAppend,\n      toasts,\n      show,\n      remove,\n      leave,\n    })\n  },\n}\n"],"names":[],"mappings":";;AASA,MAAM,aAAgC;AAE/B,MAAM,cAAsB;AAAA,EACjC,QAAQ,KAAK;AACL,UAAA,SAAS,IAAmC,EAAE;AAE9C,UAAA,YAAY,IAAI,KAAK;AAErB,UAAA,eAAe,CAAC,UAAmB;AACvC,gBAAU,QAAQ;AAAA,IACpB;AAMA,UAAM,OAAO,CAAC,MAAkC,OAAsB;;AAC9D,YAAA,gBAAgB,MAAM,IAAI,KAAK;AAErC,YAAM,UAAQ,mBAAc,UAAd,mBAAqB,OAAM,OAAO,kBAAkB;AAElE,YAAM,aAA0C;AAAA,QAC9C,WAAW,CAAC,IAAI,YAAY,SAAY,QAAQ,IAAI,SAAS;AAAA,QAC7D,OAAO;AAAA,UACL,GAAG,cAAc;AAAA,UACjB,OAAK,mBAAc,UAAd,mBAAqB,QAAO;AAAA,UACjC,eAAa,mBAAc,UAAd,mBAAqB,UAAS;AAAA,UAC3C;AAAA,QAAA;AAAA,MAEJ;AAGE,YAAA,mBAAc,UAAd,mBAAqB,iBAAgB,SACjC,cAAc,MAAM,cACpB,UAAU,OACd;AACO,eAAA,MAAM,KAAK,UAAU;AAAA,MAAA,OACvB;AACE,eAAA,MAAM,QAAQ,UAAU;AAAA,MAAA;AAG3B,YAAA,eAAe,CAAC,aAAa;AAC3B,cAAA,gBAAgB,OAAO,MAAM,UAAU,CAAC,OAAO,GAAG,MAAM,UAAU,KAAK;AAC7E,YAAI,kBAAkB,GAAI;AACnB,eAAA,MAAM,OAAO,eAAe,GAAG;AAAA,UACpC,WAAW,CAAC,IAAI,YAAY,SAAY,QAAQ,IAAI,SAAS;AAAA,UAC7D,OAAO;AAAA,YACL,GAAG,OAAO,MAAM,aAAa,EAAE;AAAA,YAC/B,GAAG;AAAA,YACH,cAAa,qCAAU,UAAS,OAAO,MAAM,aAAa,EAAE,MAAM,eAAe;AAAA,UAAA;AAAA,QACnF,CACD;AAAA,MAAA,CACF;AAEM,aAAA;AAAA,IACT;AAKM,UAAA,SAAS,CAAC,SAAwB;AAC/B,aAAA,QAAQ,OAAO,MAAM,OAAO,CAAC,OAAO,GAAG,MAAM,UAAU,IAAI;AAAA,IACpE;AAKM,UAAA,QAAQ,CAAC,SAAwB;AAC/B,YAAA,aAAa,OAAO,MAAM,UAAU,CAAC,OAAO,GAAG,MAAM,UAAU,IAAI;AACzE,UAAI,eAAe,GAAI;AAChB,aAAA,MAAM,OAAO,YAAY,GAAG;AAAA,QACjC,WAAW,CAAC,OAAO,MAAM,UAAU,EAAE,YACjC,SACA,QAAQ,OAAO,MAAM,UAAU,EAAE,SAAmB;AAAA,QACxD,OAAO;AAAA,UACL,GAAG,OAAO,MAAM,UAAU,EAAE;AAAA,UAC5B,aAAa;AAAA,QAAA;AAAA,MACf,CACD;AAAA,IACH;AAEA,QAAI,QAAQ,gBAAgB;AAAA,MAC1B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA,CACD;AAAA,EAAA;AAEL;"}