@ozen-ui/kit
Version:
React component library
31 lines (30 loc) • 1.13 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.useModalManager = useModalManager;
var react_1 = require("react");
var Portal_1 = require("../Portal");
function useModalManager(ref, key, open) {
var _a;
var _b = (0, Portal_1.usePortalManager)(), portals = _b.portals, add = _b.add, remove = _b.remove;
var index = 0;
portals.forEach(function (portal, i) {
if (portal.ref === ref) {
index = i;
}
});
var refsClickOutside = index > -1 ? portals.slice(index + 1).map(function (_a) {
var ref = _a.ref;
return ref;
}) : [];
var filteredPortals = portals.filter(function (portal) { return portal.key === key; });
var isTop = ((_a = filteredPortals[filteredPortals.length - 1]) === null || _a === void 0 ? void 0 : _a.ref) === ref;
(0, react_1.useEffect)(function () {
if (open) {
add({ ref: ref, key: key });
}
return function () {
remove(ref);
};
}, [open, key]);
return { portals: portals, refsClickOutside: refsClickOutside, isTop: isTop };
}