{"version":3,"file":"useZIndex.mjs","sources":["../../../../src/composables/useZIndex.ts"],"sourcesContent":["import { Ref, computed, onBeforeUnmount, onMounted, shallowReactive, watch } from 'vue'\nimport { generateUniqueId } from '../utils/uuid'\n\nconst createInstance = () => {\n  return generateUniqueId()\n}\n\nconst zIndexStack = shallowReactive<ReturnType<typeof createInstance>[]>([])\n\nexport const useZIndex = (isVisible: Ref<boolean>) => {\n  const instance = createInstance()\n\n  const register = () => {\n    if (zIndexStack.includes(instance)) {\n      return\n    }\n    zIndexStack.push(instance)\n  }\n\n  const unregister = () => {\n    const index = zIndexStack.findIndex((item) => item === instance)\n    if (index !== -1) {\n      zIndexStack.splice(index, 1)\n    }\n  }\n\n  const zIndex = computed(() => {\n    const index = zIndexStack.findIndex((item) => item === instance)\n\n    if (index === -1) { return -1 }\n\n    return index + 1\n  })\n\n  const isTop = computed(() => zIndex.value === zIndexStack.length - 1)\n  const isLowest = computed(() => zIndex.value === 0)\n\n  onMounted(() => {\n    if (isVisible.value) {\n      register()\n    }\n  })\n\n  onBeforeUnmount(() => {\n    unregister()\n  })\n\n  watch(isVisible, (value) => {\n    if (value) {\n      register()\n    } else {\n      unregister()\n    }\n  })\n\n  return {\n    zIndex,\n    isTop,\n    isLowest,\n    register,\n    unregister,\n  }\n}\n"],"names":[],"mappings":";;AAGA,MAAM,iBAAiB,MAAM;AAC3B,SAAO,iBAAiB;AAC1B;AAEA,MAAM,cAAc,gBAAqD,CAAA,CAAE;AAE9D,MAAA,YAAY,CAAC,cAA4B;AACpD,QAAM,WAAW;AAEjB,QAAM,WAAW,MAAM;AACjB,QAAA,YAAY,SAAS,QAAQ,GAAG;AAClC;AAAA,IACF;AACA,gBAAY,KAAK,QAAQ;AAAA,EAAA;AAG3B,QAAM,aAAa,MAAM;AACvB,UAAM,QAAQ,YAAY,UAAU,CAAC,SAAS,SAAS,QAAQ;AAC/D,QAAI,UAAU,IAAI;AACJ,kBAAA,OAAO,OAAO,CAAC;AAAA,IAC7B;AAAA,EAAA;AAGI,QAAA,SAAS,SAAS,MAAM;AAC5B,UAAM,QAAQ,YAAY,UAAU,CAAC,SAAS,SAAS,QAAQ;AAE/D,QAAI,UAAU,IAAI;AAAS,aAAA;AAAA,IAAG;AAE9B,WAAO,QAAQ;AAAA,EAAA,CAChB;AAED,QAAM,QAAQ,SAAS,MAAM,OAAO,UAAU,YAAY,SAAS,CAAC;AACpE,QAAM,WAAW,SAAS,MAAM,OAAO,UAAU,CAAC;AAElD,YAAU,MAAM;AACd,QAAI,UAAU,OAAO;AACV;IACX;AAAA,EAAA,CACD;AAED,kBAAgB,MAAM;AACT;EAAA,CACZ;AAEK,QAAA,WAAW,CAAC,UAAU;AAC1B,QAAI,OAAO;AACA;IAAA,OACJ;AACM;IACb;AAAA,EAAA,CACD;AAEM,SAAA;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;"}