@wbe/react-transition
Version:
    • 1.22 kB
JavaScript
import n,{useRef as e,useState as t,useLayoutEffect as r}from"react";function i(i){const l=e(null),[o,u]=t(()=>i.appear?null:i.if?"visible":"hidden"),a=e(!0);r(()=>{i.appear||!a.current?u(i.if?"play-in":"play-out"):a.current=!1},[i.if,i.appear]);const c=e(null);return r(()=>{const n=l.current;n&&("play-in"!==o&&"play-out"!==o||c.current?.(),function(){try{function e(){const e=function(){if("play-out"===o)return Promise.resolve(new Promise((e,t)=>{i.playOut?.(n,e),c.current=t})).then(function(){i.onPlayOutComplete?.(),i.dispatchPlayState?.("hidden"),u("hidden")})}();if(e&&e.then)return e.then(function(){})}const t=function(){if("play-in"===o)return Promise.resolve(new Promise((e,t)=>{i.playIn?.(n,e),c.current=t})).then(function(){i.onPlayInComplete?.(),u("visible")})}();Promise.resolve(t&&t.then?t.then(e):e())}catch(r){return Promise.reject(r)}}(),i.dispatchPlayState?.(o))},[o]),"hidden"===o&&i.unmountAfterPlayOut?null:/*#__PURE__*/n.cloneElement(i.children,{className:[i.children.props.className||null,`transition-${o}`].filter(n=>n).join(" "),ref:n=>l.current=n})}i.defaultProps={if:!0,children:null,appear:!1,unmountAfterPlayOut:!0};export{i as Transition};
//# sourceMappingURL=index.module.js.map