@chakra-ui/modal
Version:
An accessible dialog (modal) component for React & Chakra UI
49 lines (47 loc) • 1.04 kB
JavaScript
'use client'
import {
__publicField
} from "./chunk-5WQ4PXEV.mjs";
// src/modal-manager.ts
import { useEffect, useState } from "react";
var ModalManager = class {
constructor() {
__publicField(this, "modals");
this.modals = /* @__PURE__ */ new Map();
}
add(modal) {
this.modals.set(modal, this.modals.size + 1);
return this.modals.size;
}
remove(modal) {
this.modals.delete(modal);
}
isTopModal(modal) {
if (!modal)
return false;
return this.modals.get(modal) === this.modals.size;
}
};
var modalManager = new ModalManager();
function useModalManager(ref, isOpen) {
const [index, setIndex] = useState(0);
useEffect(() => {
const node = ref.current;
if (!node)
return;
if (isOpen) {
const index2 = modalManager.add(node);
setIndex(index2);
}
return () => {
modalManager.remove(node);
setIndex(0);
};
}, [isOpen, ref]);
return index;
}
export {
modalManager,
useModalManager
};
//# sourceMappingURL=chunk-CYRBRIA2.mjs.map