UNPKG

vuestic-ui

Version:
1 lines 2.32 kB
{"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;"}