UNPKG

react-modal-hook-manager

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