mui-modal-provider
Version:
[](https://codecov.io/gh/Quernest/mui-modal-provider) [](h
3 lines (2 loc) • 4.35 kB
JavaScript
Object.defineProperty(exports,"__esModule",{value:!0});var o,e=require("react"),n=(o=e)&&"object"==typeof o&&"default"in o?o.default:o;function r(){return(r=Object.assign?Object.assign.bind():function(o){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)({}).hasOwnProperty.call(n,r)&&(o[r]=n[r])}return o}).apply(null,arguments)}function t(o,e){if(null==o)return{};var n={};for(var r in o)if({}.hasOwnProperty.call(o,r)){if(-1!==e.indexOf(r))continue;n[r]=o[r]}return n}var a,i={state:{},updateModal:function(){},hideModal:function(){},destroyModal:function(){},destroyModalsByRootId:function(){},showModal:function(){return{id:"id",hide:function(){},destroy:function(){},update:function(){}}}},s=e.createContext(void 0);!function(o){o.SHOW="SHOW",o.HIDE="HIDE",o.UPDATE="UPDATE",o.DESTROY="DESTROY",o.DESTROY_BY_ROOT_ID="DESTROY_BY_ROOT_ID",o.UNKNOWN="UNKNOWN"}(a||(a={}));var d={};function l(o,e){switch(e.type){case a.SHOW:var n,t=e.payload,i=t.options;return r({},o,((n={})[t.id]={component:t.component,props:r({},t.props,{open:!0}),options:i},n));case a.HIDE:var s,d=e.payload.id;return o[d]?r({},o,((s={})[d]=r({},o[d],{props:r({},o[d].props,{open:!1})}),s)):o;case a.UPDATE:var l,u=e.payload,c=u.id;return o[c]?r({},o,((l={})[c]=r({},o[c],{props:r({},o[c].props,u.props)}),l)):o;case a.DESTROY:var p=e.payload.id,f=r({},o);return delete f[p],f;case a.DESTROY_BY_ROOT_ID:var y=e.payload.rootId;return Object.keys(o).filter((function(o){return o.split(".")[0]!==y})).reduce((function(e,n){var t;return r({},e,((t={})[n]=o[n],t))}),{});default:throw new Error("Unexpected action")}}var u=function(o){void 0===o&&(o=8);for(var e=[],n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",r=n.length,t=0;t<o;t++)e[t]=n.charAt(Math.floor(Math.random()*r));return e.join("")},c=["open"];function p(o){var i=o.children,p=o.legacy,f=void 0!==p&&p,y=o.suspense,O=void 0===y||y,v=o.fallback,E=void 0===v?null:v,R=n.useReducer(l,d),M=R[0],D=R[1],h=n.useCallback((function(o,e){var n=t(e,c);o?D({type:a.UPDATE,payload:{id:o,props:n}}):console.error("[ERROR]: Modal ID is missing")}),[D]),I=n.useCallback((function(o){o?D({type:a.HIDE,payload:{id:o}}):console.error("[ERROR]: Modal ID is missing")}),[D]),b=n.useCallback((function(o){o?D({type:a.DESTROY,payload:{id:o}}):console.error("[ERROR]: Modal ID is missing")}),[D]),T=n.useCallback((function(o){o?D({type:a.DESTROY_BY_ROOT_ID,payload:{rootId:o}}):console.error("[ERROR]: Modal root ID is missing")}),[D]),C=n.useCallback((function(o,e,n){var r=u(8);return n&&n.rootId&&(r=n.rootId+"."+r),D({type:a.SHOW,payload:{id:r,component:o,props:e,options:n}}),{id:r,hide:function(){return I(r)},destroy:function(){return b(r)},update:function(o){return h(r,o)}}}),[D,I,b,h]);return n.createElement(s.Provider,{value:{state:M,updateModal:h,hideModal:I,destroyModal:b,showModal:C,destroyModalsByRootId:T}},i,n.createElement(O?e.Suspense:e.Fragment,Object.assign({},O&&{fallback:E}),Object.keys(M).map((function(o){var e,t=M[o],a=t.component,i=t.props,s=t.options,d=function(){var e,n;null!=i&&i.onExited&&i.onExited.apply(i,arguments),null!=i&&null!=(e=i.TransitionProps)&&e.onExited&&(n=i.TransitionProps).onExited.apply(n,arguments),b(o)};return e=f?{onExited:d}:{TransitionProps:r({},null==i?void 0:i.TransitionProps,{onExited:d})},n.createElement(a,Object.assign({},i,{key:o,onClose:function(){s&&s.hideOnClose&&I(o),s&&s.destroyOnClose&&s.hideOnClose&&b(o),i&&i.onClose&&i.onClose.apply(i,arguments)}},s&&!s.destroyOnClose&&e))}))))}var f={enforceProvider:!1};function y(){return f}var O=["showModal","destroyModalsByRootId"],v={disableAutoDestroy:!1};exports.ModalProvider=p,exports.default=p,exports.getModalConfig=y,exports.setModalConfig=function(o){Object.assign(f,o)},exports.useModal=function(o){void 0===o&&(o=v);var n=r({},v,o).disableAutoDestroy,a=function(){var o=e.useContext(s);if(y().enforceProvider&&void 0===o)throw new Error("useModalContext must be used within a ModalProvider");return o||i}(),d=a.showModal,l=a.destroyModalsByRootId,c=t(a,O),p=e.useRef(u(6));return e.useEffect((function(){return function(){!n&&l&&l(p.current)}}),[n,l]),r({showModal:e.useCallback((function(o,e,n){return d(o,e,r({rootId:p.current,hideOnClose:!0},n))}),[d]),destroyModalsByRootId:l},c)};
//# sourceMappingURL=mui-modal-provider.cjs.production.min.js.map
;