2021-04-13 13:59:08 +00:00
|
|
|
function handler() {
|
|
|
|
let zIndexes = [];
|
|
|
|
|
2023-01-17 09:52:01 +00:00
|
|
|
const generateZIndex = (key, baseZIndex = 999) => {
|
|
|
|
const lastZIndex = getLastZIndex(key, baseZIndex);
|
|
|
|
const newZIndex = lastZIndex.value + (lastZIndex.key === key ? 0 : baseZIndex) + 1;
|
2021-04-13 13:59:08 +00:00
|
|
|
|
|
|
|
zIndexes.push({ key, value: newZIndex });
|
2022-09-14 11:26:01 +00:00
|
|
|
|
2021-04-13 13:59:08 +00:00
|
|
|
return newZIndex;
|
2022-09-14 11:26:01 +00:00
|
|
|
};
|
2021-04-13 13:59:08 +00:00
|
|
|
|
|
|
|
const revertZIndex = (zIndex) => {
|
2022-09-14 11:26:01 +00:00
|
|
|
zIndexes = zIndexes.filter((obj) => obj.value !== zIndex);
|
|
|
|
};
|
2021-04-13 13:59:08 +00:00
|
|
|
|
2023-01-17 09:52:01 +00:00
|
|
|
const getCurrentZIndex = (key) => {
|
|
|
|
return getLastZIndex(key).value;
|
|
|
|
};
|
|
|
|
|
|
|
|
const getLastZIndex = (key, baseZIndex = 0) => {
|
|
|
|
return [...zIndexes].reverse().find((obj) => obj.key === key) || { key, value: baseZIndex };
|
2022-09-14 11:26:01 +00:00
|
|
|
};
|
2021-04-13 13:59:08 +00:00
|
|
|
|
|
|
|
const getZIndex = (el) => {
|
2022-09-14 11:26:01 +00:00
|
|
|
return el ? parseInt(el.style.zIndex, 10) || 0 : 0;
|
|
|
|
};
|
2021-04-13 13:59:08 +00:00
|
|
|
|
|
|
|
return {
|
|
|
|
get: getZIndex,
|
|
|
|
set: (key, el, baseZIndex) => {
|
|
|
|
if (el) {
|
|
|
|
el.style.zIndex = String(generateZIndex(key, baseZIndex));
|
|
|
|
}
|
|
|
|
},
|
|
|
|
clear: (el) => {
|
|
|
|
if (el) {
|
|
|
|
revertZIndex(getZIndex(el));
|
|
|
|
el.style.zIndex = '';
|
|
|
|
}
|
|
|
|
},
|
2023-01-17 09:52:01 +00:00
|
|
|
getCurrent: (key) => getCurrentZIndex(key)
|
2021-04-13 13:59:08 +00:00
|
|
|
};
|
|
|
|
}
|
|
|
|
|
2022-09-14 11:26:01 +00:00
|
|
|
export default handler();
|