react-modal-hook-manager
Version:
manage multi modal in react
3 lines (2 loc) • 2.1 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react");function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),r=function(){return r=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},r.apply(this,arguments)},o=e.createContext({Modals:{},setModals:function(){}});var a=Object.freeze({__proto__:null});exports.ModalContext=o,exports.ModalInterfaces=a,exports.ModalProvider=function(t){var r=e.useState({}),a=r[0],u=r[1];return n.default.createElement(o.Provider,{value:{Modals:a,setModals:u}},t.children)},exports.useModal=function(t){var n=e.useContext(o),a=n.Modals,u=n.setModals,i=e.useState(t),l=i[0],s=i[1],c=e.useState(null),f=c[0],d=c[1];e.useEffect((function(){l&&d(a[l])}),[l]);var v=function(e,t){var n=a[e];if(n){var o=t(n);u((function(t){var n;return r(r({},t),((n={})[e]=o,n))}))}},M=function(e){var t=e||l;t&&v(t,(function(e){return r(r({},e),{isOpen:!e.isOpen})}))},p=function(e){var t=e||l;t&&u((function(e){var n=r({},e);return delete n[t],n}))},O=function(e,t){void 0===t&&(t=!1);var n=e||l;n&&v(n,(function(e){return r(r({},e),{isOpen:!1})})),t&&setTimeout((function(){p(e)}),200)},g=function(e){var t=e||l;t&&v(t,(function(e){return r(r({},e),{isOpen:!0})}))};return{getCurrentModal:function(){return f},createModal:function(e,t,n,o){void 0===n&&(n=!1),s(e),u((function(a){var u;return r(r({},a),((u={})[e]={name:e,isOpen:n,component:t,meta:o,closeModal:O,openModal:g,toggleModal:M},u))}))},toggleModal:M,openModal:g,closeModal:O,closeAllModals:function(e,t){if(void 0===t&&(t=!1),e)for(var n=0,r=e;n<r.length;n++){var o=r[n];O(o,!0)}else for(var u in a)O(u,t)},destroyModal:p,destroyAllModals:function(){u({})},isOpenModal:function(e){var t=e||l;if(t){var n=a[t];return!!n&&n.isOpen}return!1},hasModal:function(e){var t=e||l;return!!t&&void 0!==a[t]},getMeta:function(e){var t=e||l;if(!t)throw new Error("No modal name provided");var n=a[t];return n?n.meta:null}}};
//# sourceMappingURL=index.min.js.map