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