react-hook-popup
Version:
Easily manage popups like alerts and modals in React with a single hook
35 lines (34 loc) • 1.18 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.usePopup = void 0;
var react_1 = require("react");
var PopupContext_1 = require("../PopupContext");
function usePopup(key, popupRenderer) {
var _a = react_1.useContext(PopupContext_1.PopupContext), registerPopup = _a.registerPopup, unRegisterPopup = _a.unRegisterPopup, displayPopup = _a.displayPopup, closePopup = _a.closePopup;
var _b = react_1.useState(undefined), confirmPromise = _b[0], setConfirmPromise = _b[1];
function initializePopup() {
setConfirmPromise(new Promise(function (resolve) {
registerPopup(key, popupRenderer, function (val) {
resolve(val);
unRegisterPopup(key);
initializePopup();
});
}));
}
react_1.useEffect(function () {
initializePopup();
return function () {
unRegisterPopup(key);
};
}, []);
return [
function (message) {
displayPopup(key, message);
return confirmPromise;
},
function () {
closePopup(key);
},
];
}
exports.usePopup = usePopup;