{"version":3,"file":"index.mjs","sources":["../../../../../packages/hooks/use-modal/index.ts"],"sourcesContent":["import { watch } from 'vue'\nimport { on } from '@element-plus/utils/dom'\nimport { EVENT_CODE } from '@element-plus/utils/aria'\nimport isServer from '@element-plus/utils/isServer'\n\nimport type { Ref, ComputedRef } from 'vue'\n\ntype ModalInstance = {\n  handleClose: () => void\n}\n\nconst modalStack: ModalInstance[] = []\n\nconst closeModal = (e: KeyboardEvent) => {\n  if (modalStack.length === 0) return\n  if (e.code === EVENT_CODE.esc) {\n    e.stopPropagation()\n    const topModal = modalStack[modalStack.length - 1]\n    topModal.handleClose()\n  }\n}\n\nexport default (\n  instance: ModalInstance,\n  visibleRef: Ref<boolean> | ComputedRef\n) => {\n  watch(\n    () => visibleRef.value,\n    (val) => {\n      if (val) {\n        modalStack.push(instance)\n      } else {\n        modalStack.splice(\n          modalStack.findIndex((modal) => modal === instance),\n          1\n        )\n      }\n    }\n  )\n}\n\nif (!isServer) {\n  on(document, 'keydown', closeModal)\n}\n"],"names":[],"mappings":";;;;;AAWA,MAAM,aAA8B;AAEpC,MAAM,aAAa,CAAC,MAAqB;AACvC,MAAI,WAAW,WAAW;AAAG;AAC7B,MAAI,EAAE,SAAS,WAAW,KAAK;AAC7B,MAAE;AACF,UAAM,WAAW,WAAW,WAAW,SAAS;AAChD,aAAS;AAAA;AAAA;AAIb,eAAe,CACb,UACA,eACG;AACH,QACE,MAAM,WAAW,OACjB,CAAC,QAAQ;AACP,QAAI,KAAK;AACP,iBAAW,KAAK;AAAA,WACX;AACL,iBAAW,OACT,WAAW,UAAU,CAAC,UAAU,UAAU,WAC1C;AAAA;AAAA;AAAA;AAOV,IAAI,CAAC,UAAU;AACb,KAAG,UAAU,WAAW;AAAA;;;;"}