UNPKG

async-modal-react

Version:
32 lines (29 loc) 13.2 kB
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const j=require("react"),Q=j.createContext({modals:[],setModals:()=>{},modalIdRef:{current:0},errorOnClose:!1}),je=()=>{const{setModals:u,modalIdRef:C,errorOnClose:h}=j.useContext(Q),p=(v,b,g)=>new Promise((i,w)=>{const m=C.current++,_={id:m,component:v,props:b,options:g,close:()=>{c(m);const f=g==null?void 0:g.errorOnClose;f===void 0?h&&w("close"):f&&w("close")},resolve:f=>{c(m),i(f)},reject:f=>{c(m),w(f)}};u(f=>[...f,_])}),c=v=>{u(b=>b.filter(g=>g.id!==v))};return{open:p,closeAll:()=>{u([])}}};var F={exports:{}},Y={};/** * @license React * react-jsx-runtime.production.js * * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */var ge;function Re(){if(ge)return Y;ge=1;var u=Symbol.for("react.transitional.element"),C=Symbol.for("react.fragment");function h(p,c,a){var v=null;if(a!==void 0&&(v=""+a),c.key!==void 0&&(v=""+c.key),"key"in c){a={};for(var b in c)b!=="key"&&(a[b]=c[b])}else a=c;return c=a.ref,{$$typeof:u,type:p,key:v,ref:c!==void 0?c:null,props:a}}return Y.Fragment=C,Y.jsx=h,Y.jsxs=h,Y}var $={};/** * @license React * react-jsx-runtime.development.js * * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */var we;function Se(){return we||(we=1,process.env.NODE_ENV!=="production"&&function(){function u(e){if(e==null)return null;if(typeof e=="function")return e.$$typeof===ye?null:e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case L:return"Fragment";case Ce:return"Portal";case ee:return"Profiler";case D:return"StrictMode";case z:return"Suspense";case I:return"SuspenseList"}if(typeof e=="object")switch(typeof e.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),e.$$typeof){case oe:return(e.displayName||"Context")+".Provider";case re:return(e._context.displayName||"Context")+".Consumer";case q:var r=e.render;return e=e.displayName,e||(e=r.displayName||r.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case V:return r=e.displayName||null,r!==null?r:u(e.type)||"Memo";case G:r=e._payload,e=e._init;try{return u(e(r))}catch{}}return null}function C(e){return""+e}function h(e){try{C(e);var r=!1}catch{r=!0}if(r){r=console;var o=r.error,n=typeof Symbol=="function"&&Symbol.toStringTag&&e[Symbol.toStringTag]||e.constructor.name||"Object";return o.call(r,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",n),C(e)}}function p(){}function c(){if(P===0){ae=console.log,le=console.info,se=console.warn,ie=console.error,ue=console.group,ce=console.groupCollapsed,fe=console.groupEnd;var e={configurable:!0,enumerable:!0,value:p,writable:!0};Object.defineProperties(console,{info:e,log:e,warn:e,error:e,group:e,groupCollapsed:e,groupEnd:e})}P++}function a(){if(P--,P===0){var e={configurable:!0,enumerable:!0,writable:!0};Object.defineProperties(console,{log:O({},e,{value:ae}),info:O({},e,{value:le}),warn:O({},e,{value:se}),error:O({},e,{value:ie}),group:O({},e,{value:ue}),groupCollapsed:O({},e,{value:ce}),groupEnd:O({},e,{value:fe})})}0>P&&console.error("disabledDepth fell below zero. This is a bug in React. Please file an issue.")}function v(e){if(H===void 0)try{throw Error()}catch(o){var r=o.stack.trim().match(/\n( *(at )?)/);H=r&&r[1]||"",de=-1<o.stack.indexOf(` at`)?" (<anonymous>)":-1<o.stack.indexOf("@")?"@unknown:0:0":""}return` `+H+e+de}function b(e,r){if(!e||X)return"";var o=B.get(e);if(o!==void 0)return o;X=!0,o=Error.prepareStackTrace,Error.prepareStackTrace=void 0;var n=null;n=k.H,k.H=null,c();try{var d={DetermineComponentFrameRoot:function(){try{if(r){var S=function(){throw Error()};if(Object.defineProperty(S.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(S,[])}catch(T){var W=T}Reflect.construct(e,[],S)}else{try{S.call()}catch(T){W=T}e.call(S.prototype)}}else{try{throw Error()}catch(T){W=T}(S=e())&&typeof S.catch=="function"&&S.catch(function(){})}}catch(T){if(T&&W&&typeof T.stack=="string")return[T.stack,W.stack]}return[null,null]}};d.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var s=Object.getOwnPropertyDescriptor(d.DetermineComponentFrameRoot,"name");s&&s.configurable&&Object.defineProperty(d.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var t=d.DetermineComponentFrameRoot(),x=t[0],N=t[1];if(x&&N){var E=x.split(` `),A=N.split(` `);for(t=s=0;s<E.length&&!E[s].includes("DetermineComponentFrameRoot");)s++;for(;t<A.length&&!A[t].includes("DetermineComponentFrameRoot");)t++;if(s===E.length||t===A.length)for(s=E.length-1,t=A.length-1;1<=s&&0<=t&&E[s]!==A[t];)t--;for(;1<=s&&0<=t;s--,t--)if(E[s]!==A[t]){if(s!==1||t!==1)do if(s--,t--,0>t||E[s]!==A[t]){var M=` `+E[s].replace(" at new "," at ");return e.displayName&&M.includes("<anonymous>")&&(M=M.replace("<anonymous>",e.displayName)),typeof e=="function"&&B.set(e,M),M}while(1<=s&&0<=t);break}}}finally{X=!1,k.H=n,a(),Error.prepareStackTrace=o}return E=(E=e?e.displayName||e.name:"")?v(E):"",typeof e=="function"&&B.set(e,E),E}function g(e){if(e==null)return"";if(typeof e=="function"){var r=e.prototype;return b(e,!(!r||!r.isReactComponent))}if(typeof e=="string")return v(e);switch(e){case z:return v("Suspense");case I:return v("SuspenseList")}if(typeof e=="object")switch(e.$$typeof){case q:return e=b(e.render,!1),e;case V:return g(e.type);case G:r=e._payload,e=e._init;try{return g(e(r))}catch{}}return""}function i(){var e=k.A;return e===null?null:e.getOwner()}function w(e){if(ne.call(e,"key")){var r=Object.getOwnPropertyDescriptor(e,"key").get;if(r&&r.isReactWarning)return!1}return e.key!==void 0}function m(e,r){function o(){ve||(ve=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",r))}o.isReactWarning=!0,Object.defineProperty(e,"key",{get:o,configurable:!0})}function _(){var e=u(this.type);return Ee[e]||(Ee[e]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),e=this.props.ref,e!==void 0?e:null}function f(e,r,o,n,d,s){return o=s.ref,e={$$typeof:U,type:e,key:r,props:s,_owner:d},(o!==void 0?o:null)!==null?Object.defineProperty(e,"ref",{enumerable:!1,get:_}):Object.defineProperty(e,"ref",{enumerable:!1,value:null}),e._store={},Object.defineProperty(e._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(e,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.freeze&&(Object.freeze(e.props),Object.freeze(e)),e}function R(e,r,o,n,d,s){if(typeof e=="string"||typeof e=="function"||e===L||e===ee||e===D||e===z||e===I||e===_e||typeof e=="object"&&e!==null&&(e.$$typeof===G||e.$$typeof===V||e.$$typeof===oe||e.$$typeof===re||e.$$typeof===q||e.$$typeof===xe||e.getModuleId!==void 0)){var t=r.children;if(t!==void 0)if(n)if(J(t)){for(n=0;n<t.length;n++)l(t[n],e);Object.freeze&&Object.freeze(t)}else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else l(t,e)}else t="",(e===void 0||typeof e=="object"&&e!==null&&Object.keys(e).length===0)&&(t+=" You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports."),e===null?n="null":J(e)?n="array":e!==void 0&&e.$$typeof===U?(n="<"+(u(e.type)||"Unknown")+" />",t=" Did you accidentally export a JSX literal instead of a component?"):n=typeof e,console.error("React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s",n,t);if(ne.call(r,"key")){t=u(e);var x=Object.keys(r).filter(function(E){return E!=="key"});n=0<x.length?"{key: someKey, "+x.join(": ..., ")+": ...}":"{key: someKey}",me[t+n]||(x=0<x.length?"{"+x.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX: let props = %s; <%s {...props} /> React keys must be passed directly to JSX without using spread: let props = %s; <%s key={someKey} {...props} />`,n,t,x,t),me[t+n]=!0)}if(t=null,o!==void 0&&(h(o),t=""+o),w(r)&&(h(r.key),t=""+r.key),"key"in r){o={};for(var N in r)N!=="key"&&(o[N]=r[N])}else o=r;return t&&m(o,typeof e=="function"?e.displayName||e.name||"Unknown":e),f(e,t,s,d,i(),o)}function l(e,r){if(typeof e=="object"&&e&&e.$$typeof!==Te){if(J(e))for(var o=0;o<e.length;o++){var n=e[o];y(n)&&K(n,r)}else if(y(e))e._store&&(e._store.validated=1);else if(e===null||typeof e!="object"?o=null:(o=te&&e[te]||e["@@iterator"],o=typeof o=="function"?o:null),typeof o=="function"&&o!==e.entries&&(o=o.call(e),o!==e))for(;!(e=o.next()).done;)y(e.value)&&K(e.value,r)}}function y(e){return typeof e=="object"&&e!==null&&e.$$typeof===U}function K(e,r){if(e._store&&!e._store.validated&&e.key==null&&(e._store.validated=1,r=he(r),!be[r])){be[r]=!0;var o="";e&&e._owner!=null&&e._owner!==i()&&(o=null,typeof e._owner.tag=="number"?o=u(e._owner.type):typeof e._owner.name=="string"&&(o=e._owner.name),o=" It was passed a child from "+o+".");var n=k.getCurrentStack;k.getCurrentStack=function(){var d=g(e.type);return n&&(d+=n()||""),d},console.error('Each child in a list should have a unique "key" prop.%s%s See https://react.dev/link/warning-keys for more information.',r,o),k.getCurrentStack=n}}function he(e){var r="",o=i();return o&&(o=u(o.type))&&(r=` Check the render method of \``+o+"`."),r||(e=u(e))&&(r=` Check the top-level render call using <`+e+">."),r}var pe=j,U=Symbol.for("react.transitional.element"),Ce=Symbol.for("react.portal"),L=Symbol.for("react.fragment"),D=Symbol.for("react.strict_mode"),ee=Symbol.for("react.profiler"),re=Symbol.for("react.consumer"),oe=Symbol.for("react.context"),q=Symbol.for("react.forward_ref"),z=Symbol.for("react.suspense"),I=Symbol.for("react.suspense_list"),V=Symbol.for("react.memo"),G=Symbol.for("react.lazy"),_e=Symbol.for("react.offscreen"),te=Symbol.iterator,ye=Symbol.for("react.client.reference"),k=pe.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,ne=Object.prototype.hasOwnProperty,O=Object.assign,xe=Symbol.for("react.client.reference"),J=Array.isArray,P=0,ae,le,se,ie,ue,ce,fe;p.__reactDisabledLog=!0;var H,de,X=!1,B=new(typeof WeakMap=="function"?WeakMap:Map),Te=Symbol.for("react.client.reference"),ve,Ee={},me={},be={};$.Fragment=L,$.jsx=function(e,r,o,n,d){return R(e,r,o,!1,n,d)},$.jsxs=function(e,r,o,n,d){return R(e,r,o,!0,n,d)}}()),$}process.env.NODE_ENV==="production"?F.exports=Re():F.exports=Se();var Z=F.exports;const ke=({children:u})=>Z.jsx("div",{id:"modal-root",style:{position:"fixed",top:0,left:0,width:"100%",height:"100%",background:"rgba(0, 0, 0, 0.5)",display:"flex",justifyContent:"center",alignItems:"center"},children:u}),Oe=({children:u,closeOnOutsideClick:C=!0,closeOnRouteChange:h=!0,disableBodyScrollWhenOpen:p=!0,errorOnClose:c=!1})=>{const[a,v]=j.useState([]),b=j.useRef(0);j.useEffect(()=>{const i=document.getElementById("modal-root");if(!i)return;const w=m=>{var f,R;let _=!1;for(let l=0;l<i.children.length;l++)if(i.children[l].contains(m.target)){_=!0;break}if(!_){const l=a[a.length-1],y=((f=l==null?void 0:l.options)==null?void 0:f.onClickOutsideClose)!==void 0?l.options.onClickOutsideClose:C;l&&y&&(((R=l.options)==null?void 0:R.errorOnClose)===void 0?c?l.reject("close"):l.close():l.options.errorOnClose?l.reject("close"):l.close())}};return window.addEventListener("mousedown",w),()=>{window.removeEventListener("mousedown",w)}},[a,C,p]),j.useEffect(()=>{if(!h)return;const i=()=>{v([])};return window.addEventListener("popstate",i),()=>{window.removeEventListener("popstate",i)}},[h]),j.useEffect(()=>{var _,f,R;function i(l=!0,y=!0){l&&(window.addEventListener("wheel",m,{passive:!1}),window.addEventListener("touchmove",m,{passive:!1})),y&&(document.documentElement.style.overflow="hidden")}function w(){window.removeEventListener("wheel",m),window.removeEventListener("touchmove",m),document.documentElement.style.overflow="visible"}function m(l){l.preventDefault(),l.stopPropagation()}if(a.length>0){const l=((_=a[a.length-1].options)==null?void 0:_.disableScroll)!==void 0?(f=a[a.length-1].options)==null?void 0:f.disableScroll:p,y=((R=a[a.length-1].options)==null?void 0:R.enableInsideScroll)!==!0;l?i(y,!0):w()}else w();return()=>{w()}},[a,p]);const g=a.length>0;return Z.jsxs(Q.Provider,{value:{modals:a,setModals:v,modalIdRef:b,errorOnClose:c},children:[g&&Z.jsx(ke,{children:a.map(i=>j.createElement(i.component,{...i.props,close:i.close,resolve:i.resolve,reject:i.reject,key:`modal-${i.id}`}))}),u]})};exports.ModalContext=Q;exports.ModalProvider=Oe;exports.useModal=je;