UNPKG

heroui-modal-provider

Version:

[![package version](https://img.shields.io/npm/v/heroui-modal-provider.svg?style=flat-square)](https://www.npmjs.com/package/heroui-modal-provider) [![package downloads](https://img.shields.io/npm/dm/heroui-modal-provider.svg?style=flat-square)](https://w

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