@start-base/react-modal
Version:
Accessible modal dialog component and global modals provider for React.JS. This package is a enhanced version of react-modal.
1 lines • 2.72 kB
JavaScript
;var e=require("react"),o=require("react-modal");function l(e){return e&&e.__esModule?e:{default:e}}var t=l(e),n=l(o),a=Object.defineProperty,r=Object.defineProperties,d=Object.getOwnPropertyDescriptors,s=Object.getOwnPropertySymbols,u=Object.prototype.hasOwnProperty,p=Object.prototype.propertyIsEnumerable,c=(e,o,l)=>o in e?a(e,o,{enumerable:!0,configurable:!0,writable:!0,value:l}):e[o]=l,i=(e,o)=>{for(var l in o||(o={}))u.call(o,l)&&c(e,l,o[l]);if(s)for(var l of s(o))p.call(o,l)&&c(e,l,o[l]);return e},v=(e,o)=>r(e,d(o)),m=e.createContext({modals:[],openedModals:{},modalProps:{},setModals:()=>({}),openModal:()=>({}),closeModal:()=>({})}),M=m.Provider,f=m,y=({children:o})=>{const{setModals:l,openedModals:n}=e.useContext(f),a=e.Children.toArray(o);return e.useEffect((()=>{const e=null==a?void 0:a.map((e=>{var o;return null==(o=null==e?void 0:e.props)?void 0:o.name}));l(e)}),[]),t.default.createElement(t.default.Fragment,null,e.Children.map(a,((o,l)=>{var t,a,r,d,s;return e.cloneElement(o,{isOpen:null==n?void 0:n[null==(t=null==o?void 0:o.props)?void 0:t.name],style:v(i({},null==(a=null==o?void 0:o.props)?void 0:a.style),{overlay:i({zIndex:(null==n?void 0:n[null==(r=null==o?void 0:o.props)?void 0:r.name])?1e3+Object.keys(n).length+l:"unset"},null==(s=null==(d=null==o?void 0:o.props)?void 0:d.style)?void 0:s.overlay)})})})))},O=o=>{var l=o,{children:a,isOpen:r,appElement:d,name:c}=l,v=((e,o)=>{var l={};for(var t in e)u.call(e,t)&&o.indexOf(t)<0&&(l[t]=e[t]);if(null!=e&&s)for(var t of s(e))o.indexOf(t)<0&&p.call(e,t)&&(l[t]=e[t]);return l})(l,["children","isOpen","appElement","name"]);const{closeModal:m}=e.useContext(f);return e.useEffect((()=>{d&&n.default.setAppElement(d)}),[d]),e.useEffect((()=>{document.body.style.overflow=r?"hidden":"unset"}),[r]),t.default.createElement(n.default,i({id:c,closeTimeoutMS:100,contentLabel:c,isOpen:r,onRequestClose:()=>m(c),shouldCloseOnOverlayClick:!0},v),a)};var b=function(){const[o,l]=e.useState([]),[t,n]=e.useState({}),[a,r]=e.useState({});return{modals:o,setModals:l,openedModals:t,modalProps:a,openModal:e.useCallback(((e,o)=>{n((o=>v(i({},o),{[e]:!0}))),r((l=>v(i({},l),{[e]:o})))}),[]),closeModal:e.useCallback((e=>{n((o=>v(i({},o),{[e]:!1})))}),[])}},P=({children:e})=>{const{modals:o,openedModals:l,modalProps:n,setModals:a,openModal:r,closeModal:d}=b();return t.default.createElement(M,{value:{modals:o,openedModals:l,modalProps:n,setModals:a,openModal:r,closeModal:d}},e)};var x=function(){const{modals:o,openedModals:l,modalProps:t,openModal:n,closeModal:a}=e.useContext(f);return{modals:o,openedModals:l,modalProps:t,openModal:n,closeModal:a}};exports.GlobalModals=y,exports.Modal=O,exports.ModalProvider=P,exports.useModal=x;