{"version":3,"file":"useModalLevel.mjs","sources":["../../../../src/composables/useModalLevel.ts"],"sourcesContent":["import { computed, shallowReactive } from 'vue'\nimport { useComponentUuid } from './useComponentUuid'\n\nexport type ModalInStack = {\n  id: string;\n  // can add some modal info, methods here\n};\n\nconst modalsStack = shallowReactive<ModalInStack[]>([])\n\nexport const useModalLevel = () => {\n  const modalId = useComponentUuid()\n  const modalLevel = computed(() =>\n    modalsStack.findIndex(({ id }) => id === String(modalId)),\n  )\n  const registerModal = () => {\n    if (modalLevel.value !== -1) {\n      return\n    }\n\n    modalsStack.push({\n      id: String(modalId),\n    })\n  }\n  const unregisterModal = () => {\n    if (modalLevel.value === -1) {\n      return\n    }\n\n    modalsStack.splice(modalLevel.value, 1)\n  }\n\n  const isTopLevelModal = computed(\n    () => modalLevel.value !== -1 && modalLevel.value === modalsStack.length - 1,\n  )\n  const isLowestLevelModal = computed(\n    () => modalLevel.value === 0,\n  )\n  const isMoreThenOneModalOpen = computed(() => modalsStack.length > 1)\n\n  return {\n    modalId,\n    modalLevel,\n    registerModal,\n    unregisterModal,\n    isTopLevelModal,\n    isLowestLevelModal,\n    isMoreThenOneModalOpen,\n  }\n}\n"],"names":[],"mappings":";;AAQA,MAAM,cAAc,gBAAgC,CAAA,CAAE;AAE/C,MAAM,gBAAgB,MAAM;AACjC,QAAM,UAAU;AAChB,QAAM,aAAa;AAAA,IAAS,MAC1B,YAAY,UAAU,CAAC,EAAE,GAAS,MAAA,OAAO,OAAO,OAAO,CAAC;AAAA,EAAA;AAE1D,QAAM,gBAAgB,MAAM;AACtB,QAAA,WAAW,UAAU,IAAI;AAC3B;AAAA,IACF;AAEA,gBAAY,KAAK;AAAA,MACf,IAAI,OAAO,OAAO;AAAA,IAAA,CACnB;AAAA,EAAA;AAEH,QAAM,kBAAkB,MAAM;AACxB,QAAA,WAAW,UAAU,IAAI;AAC3B;AAAA,IACF;AAEY,gBAAA,OAAO,WAAW,OAAO,CAAC;AAAA,EAAA;AAGxC,QAAM,kBAAkB;AAAA,IACtB,MAAM,WAAW,UAAU,MAAM,WAAW,UAAU,YAAY,SAAS;AAAA,EAAA;AAE7E,QAAM,qBAAqB;AAAA,IACzB,MAAM,WAAW,UAAU;AAAA,EAAA;AAE7B,QAAM,yBAAyB,SAAS,MAAM,YAAY,SAAS,CAAC;AAE7D,SAAA;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;"}