react-modal-global
Advanced tools
Comparing version 2023.5.26-experimental-5 to 2023.5.26-experimental-6
@@ -301,4 +301,4 @@ import EventEmitter from 'eventemitter3'; | ||
*/ | ||
declare function ModalPortal(props: ModalPortalProps): React.ReactPortal | null; | ||
declare function ModalPortal(props: ModalPortalProps): JSX.Element | null; | ||
export { ModalContainer, ModalController, ModalPortal, ModalWindow, useModalSnapshot, useModalWindow }; |
@@ -15,5 +15,5 @@ 'use strict';Object.defineProperty(exports,"__esModule",{value:!0});var EventEmitter=require("eventemitter3"),jsxRuntime=require("react/jsx-runtime"),react=require("react"),reactDom=require("react-dom");function _interopDefaultLegacy(a){return a&&"object"===typeof a&&"default"in a?a:{"default":a}}var EventEmitter__default=_interopDefaultLegacy(EventEmitter); | ||
function useModalWindow(){let a=react.useContext(modalContext);if(!a)throw Error(`ModalError: ${useModalWindow.name} must be used within a modal context.`);return a}function useModalSnapshot(a){return react.useSyncExternalStore(a.subscribe.bind(a),a.getSnapshot.bind(a))} | ||
function ModalContainer(a){var b;let {active:c,windows:d}=useModalSnapshot(a.controller),e=null!==(b=a.className)&&void 0!==b?b:"modal";a=d.reduceRight((f,g)=>{null==f[g.params.layer]&&(f[g.params.layer]=g);return f},[]);return jsxRuntime.jsx("div",Object.assign({className:classWithModifiers(e,c&&"active"),"aria-modal":!0,"aria-hidden":!c},{children:a.map(f=>jsxRuntime.jsx("div",Object.assign({className:classWithModifiers(e+"__container"),onClick:stopPropagation(function(){f.params.closable&&f.close()})}, | ||
{children:jsxRuntime.jsx(modalContext.Provider,Object.assign({value:f},{children:react.createElement(f.component,Object.assign({},f.params,{key:f.id}))}))}),f.id))}))} | ||
function ModalPortal(a){function b(f){null!=f&&e(f)}let c=react.useId();react.useEffect(()=>()=>{a.controller.closeById(c)},[a.controller,c]);let [d,e]=react.useState(null);react.useEffect(()=>{let f=a.controller.open(()=>jsxRuntime.jsx("div",{ref:b}),Object.assign(Object.assign({},a.params),{id:c}));if(a.onClose)f.on("close",a.onClose);return()=>{f.close()}},[a.controller,c]);return null==d?null:reactDom.createPortal(a.children,d,c)}exports.ModalContainer=ModalContainer;exports.ModalController=ModalController; | ||
exports.ModalPortal=ModalPortal;exports.ModalWindow=ModalWindow;exports.useModalSnapshot=useModalSnapshot;exports.useModalWindow=useModalWindow | ||
function ModalContainer(a){var b;let {active:c,windows:d}=useModalSnapshot(a.controller),e=null!==(b=a.className)&&void 0!==b?b:"modal";a=d.reduceRight((g,f)=>{null==g[f.params.layer]&&(g[f.params.layer]=f);return g},[]);return jsxRuntime.jsx("div",Object.assign({className:classWithModifiers(e,c&&"active"),"aria-modal":!0,"aria-hidden":!c},{children:a.map(g=>jsxRuntime.jsx("div",Object.assign({className:classWithModifiers(e+"__container"),onClick:stopPropagation(function(){g.params.closable&&g.close()})}, | ||
{children:jsxRuntime.jsx(modalContext.Provider,Object.assign({value:g},{children:react.createElement(g.component,Object.assign({},g.params,{key:g.id}))}))}),g.id))}))} | ||
function ModalPortal(a){function b(f){f=null===f||void 0===f?void 0:f.parentElement;null!=f&&g(f)}let c=react.useId(),d=react.useRef(new ModalWindow(()=>null,{})),[e,g]=react.useState(null);react.useEffect(()=>{let f=a.controller.open(()=>jsxRuntime.jsx("div",{style:{display:"none"},ref:b}),Object.assign(Object.assign({},a.params),{id:c}));d.current=f;if(a.onClose)f.on("close",a.onClose);return()=>f.close()},[a.controller,c]);return null==e?null:jsxRuntime.jsx(modalContext.Provider,Object.assign({value:d.current}, | ||
{children:reactDom.createPortal(a.children,e,c)}))}exports.ModalContainer=ModalContainer;exports.ModalController=ModalController;exports.ModalPortal=ModalPortal;exports.ModalWindow=ModalWindow;exports.useModalSnapshot=useModalSnapshot;exports.useModalWindow=useModalWindow |
{ | ||
"name": "react-modal-global", | ||
"version": "2023.5.26-experimental-5", | ||
"version": "2023.5.26-experimental-6", | ||
"description": "Highly reusable React Modal that can be run from useEffect.", | ||
@@ -5,0 +5,0 @@ "main": "dist/index.ts", |
36004
329