@infinityfx/lively
Version:
Feature complete, lightweight react animation library.
4 lines (3 loc) • 921 B
JavaScript
"use client";
import{jsx as t}from"react/jsx-runtime";import{use as e,useRef as r,useLayoutEffect as n}from"react";import o,{AnimatableContext as u}from"../animatable.js";import{combineRefs as i}from"../core/utils.js";const s={};function m({children:m,group:a,transition:c,...l}){const d=e(u),f=d?.group?`${d.group}.${a}`:a;f in s||(s[f]=new Map);const p=r(null);return n((()=>{const t=p.current?.timeline;if(!t)return;if(s[f].has(t)){s[f].get(t).state="mounted"}else s[f].set(t,{state:"mounted"});const e=Array.from(s[f].entries()).find((([t,e])=>"unmounted"===e.state));return e&&!t.mounted?(t.transition(e[0],c),e[1].state="collected"):t.mounted||p.current?.trigger("mount"),t.mounted=!0,()=>{const e=s[f].get(t);e.state="unmounted",setTimeout((()=>e.state="collected"),1)}}),[]),t(o,{...l,group:f,manual:!0,ref:i(p,l.ref),children:m})}m.isLively=!0;export{s as Groups,m as default};
//# sourceMappingURL=morph.js.map