3 lines
3.2 KiB
JavaScript
3 lines
3.2 KiB
JavaScript
import{D as e,L as t,P as n,Q as r,T as i,bt as a,g as o,mt as s,w as c}from"./vue.runtime.esm-bundler-DQjudA8G.js";import{a as l,b as u,r as d}from"./dist-t_U6YImb.js";import{r as f}from"./Primitive-jhoGcsVx.js";function p(e){return e==null}function m(e,t){let n=s(e);function r(e){return t[n.value][e]??n.value}return{state:n,dispatch:e=>{n.value=r(e)}}}function h(e,i){let a=s({}),c=s(`none`),l=s(e),f=e.value?`mounted`:`unmounted`,p,h=i.value?.ownerDocument.defaultView??d,{state:_,dispatch:v}=m(f,{mounted:{UNMOUNT:`unmounted`,ANIMATION_OUT:`unmountSuspended`},unmountSuspended:{MOUNT:`mounted`,ANIMATION_END:`unmounted`},unmounted:{MOUNT:`mounted`}}),y=e=>{if(u){let t=new CustomEvent(e,{bubbles:!1,cancelable:!1});i.value?.dispatchEvent(t)}};r(e,async(e,t)=>{let r=t!==e;if(await n(),r){let n=c.value,r=g(i.value);e?(v(`MOUNT`),y(`enter`),r===`none`&&y(`after-enter`)):r===`none`||r===`undefined`||a.value?.display===`none`?(v(`UNMOUNT`),y(`leave`),y(`after-leave`)):t&&n!==r?(v(`ANIMATION_OUT`),y(`leave`)):(v(`UNMOUNT`),y(`after-leave`))}},{immediate:!0});let b=e=>{let t=g(i.value),n=t.includes(CSS.escape(e.animationName)),r=_.value===`mounted`?`enter`:`leave`;if(e.target===i.value&&n&&(y(`after-${r}`),v(`ANIMATION_END`),!l.value)){let e=i.value.style.animationFillMode;i.value.style.animationFillMode=`forwards`,p=h?.setTimeout(()=>{i.value?.style.animationFillMode===`forwards`&&(i.value.style.animationFillMode=e)})}e.target===i.value&&t===`none`&&v(`ANIMATION_END`)},x=e=>{e.target===i.value&&(c.value=g(i.value))},S=r(i,(e,t)=>{e?(a.value=getComputedStyle(e),e.addEventListener(`animationstart`,x),e.addEventListener(`animationcancel`,b),e.addEventListener(`animationend`,b)):(v(`ANIMATION_END`),p!==void 0&&h?.clearTimeout(p),t?.removeEventListener(`animationstart`,x),t?.removeEventListener(`animationcancel`,b),t?.removeEventListener(`animationend`,b))},{immediate:!0}),C=r(_,()=>{let e=g(i.value);c.value=_.value===`mounted`?e:`none`});return t(()=>{S(),C()}),{isPresent:o(()=>[`mounted`,`unmountSuspended`].includes(_.value))}}function g(e){return e&&getComputedStyle(e).animationName||`none`}var _=c({name:`Presence`,props:{present:{type:Boolean,required:!0},forceMount:{type:Boolean}},slots:{},setup(t,{slots:n,expose:r}){let{present:o,forceMount:c}=a(t),u=s(),{isPresent:d}=h(o,u);r({present:d});let p=n.default({present:d.value});p=f(p||[]);let m=i();if(p&&p?.length>1){let e=m?.parent?.type.name?`<${m.parent.type.name} />`:`component`;throw Error([`Detected an invalid children for \`${e}\` for \`Presence\` component.`,``,"Note: Presence works similarly to `v-if` directly, but it waits for animation/transition to finished before unmounting. So it expect only one direct child of valid VNode type.",`You can apply a few solutions:`,["Provide a single child element so that `presence` directive attach correctly.",`Ensure the first child is an actual element instead of a raw text node or comment node.`].map(e=>` - ${e}`).join(`
|
|
`)].join(`
|
|
`))}return()=>c.value||o.value||d.value?e(n.default({present:d.value})[0],{ref:e=>{let t=l(e);return t?.hasAttribute===void 0||(t?.hasAttribute(`data-reka-popper-content-wrapper`)?u.value=t.firstElementChild:u.value=t),t}}):null}});export{p as n,_ as t}; |