{"version":3,"file":"index.mjs","sources":["../../../../src/plugins/modalController/index.ts"],"sourcesContent":["import {markRaw, type Plugin, ref, toRef, watch} from 'vue'\nimport {modalControllerPluginKey} from '../../utils/keys'\nimport type {\n  ModalOrchestratorMapValue,\n  ModalOrchestratorShowParam,\n} from '../../types/ComponentOrchestratorTypes'\n\nexport const modalControllerPlugin: Plugin = {\n  install(app) {\n    const modals = ref(new Map<symbol, ModalOrchestratorMapValue>())\n\n    const buildPromise = (): {\n      value: Promise<boolean | null>\n      resolve: (value: boolean | null) => void\n    } => {\n      let resolveFunc: (value: boolean | null) => void = () => {\n        /* empty */\n      }\n\n      const promise = new Promise<boolean | null>((resolve) => {\n        resolveFunc = resolve\n      })\n\n      return {\n        value: promise,\n        resolve: resolveFunc,\n      }\n    }\n\n    const buildPrereqs = () => [buildPromise(), Symbol(), true] as const\n\n    const show = (obj: ModalOrchestratorShowParam = {}) => {\n      const resolvedProps = toRef(obj.props)\n\n      const [_promise, _self, _modelValue] = buildPrereqs()\n\n      modals.value.set(_self, {\n        component: !obj.component ? undefined : markRaw(obj.component),\n        props: {...resolvedProps.value, _isConfirm: false, _promise, _modelValue},\n      })\n\n      watch(resolvedProps, (newValue) => {\n        const previous = modals.value.get(_self)\n        if (!previous) return\n        modals.value.set(_self, {\n          component: !obj.component ? undefined : markRaw(obj.component),\n          props: {...previous.props, ...newValue},\n        })\n      })\n\n      return _promise.value\n    }\n\n    const confirm = (obj: ModalOrchestratorShowParam = {}) => {\n      const resolvedProps = toRef(obj.props)\n\n      const [_promise, _self, _modelValue] = buildPrereqs()\n\n      modals.value.set(_self, {\n        component: !obj.component ? undefined : markRaw(obj.component),\n        props: {...resolvedProps.value, _isConfirm: true, _promise, _modelValue},\n      })\n\n      watch(resolvedProps, (newValue) => {\n        const previous = modals.value.get(_self)\n        if (!previous) return\n        modals.value.set(_self, {\n          component: !obj.component ? undefined : markRaw(obj.component),\n          props: {...previous.props, ...newValue},\n        })\n      })\n\n      return _promise.value\n    }\n\n    const leave = (self: symbol) => {\n      const modal = modals.value.get(self)\n      if (!modal?.props) return\n      modal.props = {\n        ...modal.props,\n        _modelValue: false,\n      }\n    }\n\n    const remove = (self: symbol) => {\n      modals.value.delete(self)\n    }\n\n    app.provide(modalControllerPluginKey, {\n      modals,\n      remove,\n      show,\n      confirm,\n      leave,\n    })\n  },\n}\n"],"names":[],"mappings":";;AAOO,MAAM,wBAAgC;AAAA,EAC3C,QAAQ,KAAK;AACX,UAAM,SAAS,IAAQ,oBAAA,IAAwC,CAAA;AAE/D,UAAM,eAAe,MAGhB;AACH,UAAI,cAA+C,MAAM;AAAA,MAAA;AAIzD,YAAM,UAAU,IAAI,QAAwB,CAAC,YAAY;AACzC,sBAAA;AAAA,MAAA,CACf;AAEM,aAAA;AAAA,QACL,OAAO;AAAA,QACP,SAAS;AAAA,MAAA;AAAA,IACX;AAGF,UAAM,eAAe,MAAM,CAAC,aAAgB,GAAA,OAAA,GAAU,IAAI;AAE1D,UAAM,OAAO,CAAC,MAAkC,OAAO;AAC/C,YAAA,gBAAgB,MAAM,IAAI,KAAK;AAErC,YAAM,CAAC,UAAU,OAAO,WAAW,IAAI,aAAa;AAE7C,aAAA,MAAM,IAAI,OAAO;AAAA,QACtB,WAAW,CAAC,IAAI,YAAY,SAAY,QAAQ,IAAI,SAAS;AAAA,QAC7D,OAAO,EAAC,GAAG,cAAc,OAAO,YAAY,OAAO,UAAU,YAAW;AAAA,MAAA,CACzE;AAEK,YAAA,eAAe,CAAC,aAAa;AACjC,cAAM,WAAW,OAAO,MAAM,IAAI,KAAK;AACvC,YAAI,CAAC,SAAU;AACR,eAAA,MAAM,IAAI,OAAO;AAAA,UACtB,WAAW,CAAC,IAAI,YAAY,SAAY,QAAQ,IAAI,SAAS;AAAA,UAC7D,OAAO,EAAC,GAAG,SAAS,OAAO,GAAG,SAAQ;AAAA,QAAA,CACvC;AAAA,MAAA,CACF;AAED,aAAO,SAAS;AAAA,IAAA;AAGlB,UAAM,UAAU,CAAC,MAAkC,OAAO;AAClD,YAAA,gBAAgB,MAAM,IAAI,KAAK;AAErC,YAAM,CAAC,UAAU,OAAO,WAAW,IAAI,aAAa;AAE7C,aAAA,MAAM,IAAI,OAAO;AAAA,QACtB,WAAW,CAAC,IAAI,YAAY,SAAY,QAAQ,IAAI,SAAS;AAAA,QAC7D,OAAO,EAAC,GAAG,cAAc,OAAO,YAAY,MAAM,UAAU,YAAW;AAAA,MAAA,CACxE;AAEK,YAAA,eAAe,CAAC,aAAa;AACjC,cAAM,WAAW,OAAO,MAAM,IAAI,KAAK;AACvC,YAAI,CAAC,SAAU;AACR,eAAA,MAAM,IAAI,OAAO;AAAA,UACtB,WAAW,CAAC,IAAI,YAAY,SAAY,QAAQ,IAAI,SAAS;AAAA,UAC7D,OAAO,EAAC,GAAG,SAAS,OAAO,GAAG,SAAQ;AAAA,QAAA,CACvC;AAAA,MAAA,CACF;AAED,aAAO,SAAS;AAAA,IAAA;AAGZ,UAAA,QAAQ,CAAC,SAAiB;AAC9B,YAAM,QAAQ,OAAO,MAAM,IAAI,IAAI;AAC/B,UAAA,EAAC,+BAAO,OAAO;AACnB,YAAM,QAAQ;AAAA,QACZ,GAAG,MAAM;AAAA,QACT,aAAa;AAAA,MAAA;AAAA,IACf;AAGI,UAAA,SAAS,CAAC,SAAiB;AACxB,aAAA,MAAM,OAAO,IAAI;AAAA,IAAA;AAG1B,QAAI,QAAQ,0BAA0B;AAAA,MACpC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA,CACD;AAAA,EACH;AACF;"}