{"version":3,"file":"ModalService.mjs","names":["ref","ModalSize","ModalIcon","ModalService","_classCallCheck","_defineProperty","_createClass","key","value","open","modal","_this","disableScroll","Promise","resolve","getModal","close","result","status","_document$getElements","document","getElementsByTagName","item","setAttribute","concat","ModalGod","service","modalService","component","props","options","reject"],"sources":["../../src/services/ModalService.ts"],"sourcesContent":["import { Ref, ref } from \"vue\";\n\nexport enum ModalSize {\n  sm = \"sm\",\n  md = \"md\",\n  lg = \"lg\",\n}\n\nexport enum ModalIcon {\n  success = \"success\",\n}\n\nexport type ModalOptions = {\n  size?: ModalSize | string;\n  icon?: ModalIcon | string | null;\n  style?: { [param: string]: string };\n};\n\nexport type ModalProps = {\n  [param: string]: any;\n};\n\nexport interface IModal {\n  component: any;\n  options?: ModalOptions;\n  props?: ModalProps;\n}\n\nexport class ModalService {\n  private modal: Ref<IModal | null> = ref(null);\n  private resolve!: (value: any | PromiseLike<any>) => void;\n\n  public open<T = any>(modal: IModal): Promise<T> {\n    if (modal) {\n      this.disableScroll(true);\n    }\n    this.modal = ref(modal);\n    return new Promise((resolve) => {\n      this.resolve = resolve;\n    });\n  }\n\n  public getModal(): IModal {\n    return this.modal as unknown as IModal;\n  }\n\n  public close(result: any): void {\n    this.disableScroll(false);\n\n    if (this.resolve) {\n      this.resolve(result);\n    }\n\n    this.modal = ref(null);\n  }\n\n  public disableScroll(status: boolean) {\n    document\n      .getElementsByTagName(\"body\")\n      ?.item(0)\n      ?.setAttribute(\"style\", `overflow: ${status ? \"hidden\" : \"inherit\"}`);\n  }\n}\n\nexport class ModalGod {\n  constructor(private service: ModalService) {}\n\n  public open<T = any>(\n    modalService: ModalService | undefined | null,\n    component: any,\n    props?: ModalProps,\n    options?: ModalOptions\n  ): Promise<T> {\n    if (!this.service) {\n      return Promise.reject();\n    }\n    return this.service.open<T>({\n      component,\n      props,\n      options,\n    });\n  }\n}\n"],"mappings":";;;;;;;AAAA,SAAcA,GAAG,QAAQ,KAAK;AAE9B,WAAYC,SAAS,0BAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAAA,OAATA,SAAS;AAAA;AAMrB,WAAYC,SAAS,0BAATA,SAAS;EAATA,SAAS;EAAA,OAATA,SAAS;AAAA;AAoBrB,WAAaC,YAAY;EAAA,SAAAA,aAAA;IAAAC,eAAA,OAAAD,YAAA;IAAAE,eAAA,gBACaL,GAAG,CAAC,IAAI,CAAC;EAAA;EAAAM,YAAA,CAAAH,YAAA;IAAAI,GAAA;IAAAC,KAAA,EAG7C,SAAAC,KAAqBC,KAAa,EAAc;MAAA,IAAAC,KAAA;MAC9C,IAAID,KAAK,EAAE;QACT,IAAI,CAACE,aAAa,CAAC,IAAI,CAAC;MAC1B;MACA,IAAI,CAACF,KAAK,GAAGV,GAAG,CAACU,KAAK,CAAC;MACvB,OAAO,IAAIG,OAAO,CAAC,UAACC,OAAO,EAAK;QAC9BH,KAAI,CAACG,OAAO,GAAGA,OAAO;MACxB,CAAC,CAAC;IACJ;EAAC;IAAAP,GAAA;IAAAC,KAAA,EAED,SAAAO,SAAA,EAA0B;MACxB,OAAO,IAAI,CAACL,KAAK;IACnB;EAAC;IAAAH,GAAA;IAAAC,KAAA,EAED,SAAAQ,MAAaC,MAAW,EAAQ;MAC9B,IAAI,CAACL,aAAa,CAAC,KAAK,CAAC;MAEzB,IAAI,IAAI,CAACE,OAAO,EAAE;QAChB,IAAI,CAACA,OAAO,CAACG,MAAM,CAAC;MACtB;MAEA,IAAI,CAACP,KAAK,GAAGV,GAAG,CAAC,IAAI,CAAC;IACxB;EAAC;IAAAO,GAAA;IAAAC,KAAA,EAED,SAAAI,cAAqBM,MAAe,EAAE;MAAA,IAAAC,qBAAA;MACpC,CAAAA,qBAAA,GAAAC,QAAQ,CACLC,oBAAoB,CAAC,MAAM,CAAC,cAAAF,qBAAA,GAD/BA,qBAAA,CAEIG,IAAI,CAAC,CAAC,CAAC,qBAFXH,qBAAA,CAGII,YAAY,CAAC,OAAO,eAAAC,MAAA,CAAeN,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAE,CAAC;IACzE;EAAC;EAAA,OAAAf,YAAA;AAAA;AAGH,WAAasB,QAAQ;EACnB,SAAAA,SAAoBC,OAAqB,EAAE;IAAAtB,eAAA,OAAAqB,QAAA;IAAA,KAAvBC,OAAqB,GAArBA,OAAqB;EAAG;EAACpB,YAAA,CAAAmB,QAAA;IAAAlB,GAAA;IAAAC,KAAA,EAE7C,SAAAC,KACEkB,YAA6C,EAC7CC,SAAc,EACdC,KAAkB,EAClBC,OAAsB,EACV;MACZ,IAAI,CAAC,IAAI,CAACJ,OAAO,EAAE;QACjB,OAAOb,OAAO,CAACkB,MAAM,CAAC,CAAC;MACzB;MACA,OAAO,IAAI,CAACL,OAAO,CAACjB,IAAI,CAAI;QAC1BmB,SAAS,EAATA,SAAS;QACTC,KAAK,EAALA,KAAK;QACLC,OAAO,EAAPA;MACF,CAAC,CAAC;IACJ;EAAC;EAAA,OAAAL,QAAA;AAAA"}