UNPKG

@hoosei/voxweave-react

Version:

A customizable and interactive voice UI component for React applications

3 lines (2 loc) 2.52 kB
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const T=require("react"),P=require("./index24.js"),g=require("./index39.js");function E(n){if(n&&n.__esModule)return n;const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(n){for(const t in n)if(t!=="default"){const r=Object.getOwnPropertyDescriptor(n,t);Object.defineProperty(e,t,r.get?r:{enumerable:!0,get:()=>n[t]})}}return e.default=n,Object.freeze(e)}const o=E(T);function R(n,e){return o.useReducer((t,r)=>e[t][r]??t,n)}var O=n=>{const{present:e,children:t}=n,r=v(e),a=typeof t=="function"?t({present:r.isPresent}):o.Children.only(t),c=P.useComposedRefs(r.ref,S(a));return typeof t=="function"||r.isPresent?o.cloneElement(a,{ref:c}):null};O.displayName="Presence";function v(n){const[e,t]=o.useState(),r=o.useRef(null),a=o.useRef(n),c=o.useRef("none"),p=n?"mounted":"unmounted",[N,s]=R(p,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return o.useEffect(()=>{const i=l(r.current);c.current=N==="mounted"?i:"none"},[N]),g.useLayoutEffect(()=>{const i=r.current,d=a.current;if(d!==n){const f=c.current,u=l(i);n?s("MOUNT"):u==="none"||i?.display==="none"?s("UNMOUNT"):s(d&&f!==u?"ANIMATION_OUT":"UNMOUNT"),a.current=n}},[n,s]),g.useLayoutEffect(()=>{if(e){let i;const d=e.ownerDocument.defaultView??window,m=u=>{const A=l(r.current).includes(u.animationName);if(u.target===e&&A&&(s("ANIMATION_END"),!a.current)){const M=e.style.animationFillMode;e.style.animationFillMode="forwards",i=d.setTimeout(()=>{e.style.animationFillMode==="forwards"&&(e.style.animationFillMode=M)})}},f=u=>{u.target===e&&(c.current=l(r.current))};return e.addEventListener("animationstart",f),e.addEventListener("animationcancel",m),e.addEventListener("animationend",m),()=>{d.clearTimeout(i),e.removeEventListener("animationstart",f),e.removeEventListener("animationcancel",m),e.removeEventListener("animationend",m)}}else s("ANIMATION_END")},[e,s]),{isPresent:["mounted","unmountSuspended"].includes(N),ref:o.useCallback(i=>{r.current=i?getComputedStyle(i):null,t(i)},[])}}function l(n){return n?.animationName||"none"}function S(n){let e=Object.getOwnPropertyDescriptor(n.props,"ref")?.get,t=e&&"isReactWarning"in e&&e.isReactWarning;return t?n.ref:(e=Object.getOwnPropertyDescriptor(n,"ref")?.get,t=e&&"isReactWarning"in e&&e.isReactWarning,t?n.props.ref:n.props.ref||n.ref)}exports.Presence=O; //# sourceMappingURL=index34.js.map