react-await-util
Version:
Processing asynchronous data in react functional components.
2 lines (1 loc) • 22.4 kB
JavaScript
;var e=require("react");const t=Symbol(),n=Symbol(),r=Symbol();function o(e){return e.then((n=>Object.defineProperty(e,t,{value:n})),(t=>Object.defineProperty(e,n,{value:t}))).finally((()=>Object.defineProperty(e,r,{value:!0})))}function s(e,t){return e!==t}function a(e,t){return Object.entries(e).some((([e,n])=>n!==t[e]))}function c(e,t){return e.some(((e,n)=>e!==t[n]))}function l(e){return e.isIntersecting}function i(){let e,t;return{promise:new Promise(((n,r)=>{e=n,t=r})),resolve:e,reject:t}}function u(t,n){return e.isValidElement(t)&&n()&&!t.props.jumpFirst}const d=Symbol("pending"),p=Symbol("resolve"),f=Symbol("reject");function m({resolve:o,init:s,delay:a=200,jumpFirst:c=!1,cleanup:l=!0,onStart:i,onEnd:u,onError:m,onFinal:h}){const v=F(),y=e.useRef(!0),E=e.useRef(new Map).current,x=e.useRef(null),C=e.useRef(d),w=e.useRef(s),S=e.useRef(null);return y.current?(y.current=!1,!c&&o instanceof Promise?A(!0):(C.current=p,g(!1,void 0))):o instanceof Promise&&x.current!==o&&A(!1),S.current;function R(e){if(Reflect.has(e,t)){C.current=p;const n=Reflect.get(e,t);w.current=n,u?.(n)}else C.current=f,m?.(Reflect.get(e,n))}function g(e,t){S.current={first:e,status:C.current,value:w.current,error:t}}function A(e){if(Reflect.has(o,r))x.current=o,R(o);else{o=Object.defineProperty(o,r,{value:!0}),l&&E.get(x.current)?.(),x.current=o;let s=!0;l&&E.set(o,(()=>{s=!1,E.delete(o)})),C.current=d,i?.(e);const c=Date.now();o.then((e=>Object.defineProperty(o,t,{value:e})),(e=>Object.defineProperty(o,n,{value:e}))).finally((()=>{const t=Date.now()-c;setTimeout((()=>{s&&(l&&E.delete(o),R(o),h?.(e),g(!1,Reflect.get(o,n)),v())}),t>=a?0:a-t)}))}g(e,Reflect.get(o,n))}}const h=e.createContext((function(e){return e}));function v({deps:t,handle:n,init:r,delay:o=200,jumpFirst:s=!1,cleanup:a=!0,onStart:c,onEnd:l,onError:i,onFinal:u}){const d=e.useRef(void 0);d.current=t;const p=e.useContext(h),[f,v]=e.useState((()=>s?void 0:p(n(t)))),y=e.useCallback((e=>{v(p(e instanceof Promise?e.then((e=>n(d.current,e))):n(d.current,e)))}),[]);return[m({resolve:f,init:r,delay:o,jumpFirst:s,cleanup:a,onStart:c,onEnd:l,onError:i,onFinal:u}),y]}function y({deps:t,handle:n,reducersDeps:r,reducers:o,init:s,delay:a=200,jumpFirst:c=!1,cleanup:l=!0,onStart:i,onEnd:u,onError:d,onFinal:p}){const[f,m]=v({deps:t,handle:n,init:s,delay:a,jumpFirst:c,cleanup:l,onStart:i,onEnd:u,onError:d,onFinal:p}),h=e.useRef(void 0);h.current=r;const y=e.useState((()=>"function"==typeof o?o():o??{}))[0];return[f,e.useCallback((e=>{if(e){const{type:t,payload:n}=e,r=y[t];"function"==typeof r&&m(r({type:t,payload:n,deps:h.current?.[t]}))}else m()}),[]),e.useState((()=>Object.keys(y).reduce(((e,t)=>(e[t]=e=>({type:t,payload:e}),e)),{})))[0]]}function E(e,t){return e(t)}const x=e.createContext(E);function C({deps:t,compare:n=s,handle:r,init:o,delay:a=200,jumpFirst:c=!1,cleanup:l=!0,onStart:i,onEnd:u,onError:d,onFinal:p}){const f=e.useRef(null),h=e.useRef(null),v=e.useRef(!0),[y,E,C]=w(),F=e.useContext(x);v.current?(v.current=!1,c||(f.current=F(r,t))):C.current&&(E.current||n(t,h.current))&&(E.current=!1,f.current=F(r,t)),h.current=t;return[m({resolve:f.current,init:o,delay:a,jumpFirst:c,cleanup:l,onStart:i,onEnd:u,onError:d,onFinal:p}),y]}function F(){const t=e.useState(!0)[1];return e.useCallback((()=>{t((e=>!e))}),[])}function w(){const t=F(),n=e.useRef(!1),r=e.useRef(!0);return[e.useState((()=>{const e=()=>{n.current=!0,t()};return{update:e,unWatch:()=>{r.current&&(r.current=!1,t())},reWatch:()=>{r.current||(r.current=!0,e())},get isWatching(){return r.current}}}))[0],n,r]}function S(t,n,r,o,s,a){const c=e.useRef(null),l=e.useRef(!1);return e.useEffect((()=>{if(c.current?.nodeType===Node.ELEMENT_NODE){let e=new IntersectionObserver((n=>{const r=n[0];a(r)&&(l.current=!0,e.disconnect(),e=null,c.current=null,t())}),{root:r?c.current.parentElement:n?.current,rootMargin:o,threshold:s});return e.observe(c.current),()=>{e&&(e.disconnect(),e=null)}}l.current=!0,t()}),[]),{placeholder:c,flag:l}}function R({resolve:t,init:n,delay:r=200,jumpFirst:o=!1,cleanup:s=!0,onStart:a,onEnd:c,onError:l,onFinal:i,onComputed:u,placeholder:d,children:p}){const f=m({resolve:t,init:n,delay:r,jumpFirst:o,cleanup:s,onStart:a,onEnd:c,onError:l,onFinal:i}),h=e.useMemo((()=>u?.(f)),[f]);if(t!==T)return p({...f,computed:h,placeholder:d})}const g=e.forwardRef((function({deps:t,handle:n,init:r,delay:o=200,jumpFirst:s=!1,cleanup:a=!0,onStart:c,onEnd:l,onError:i,onFinal:u,onComputed:d,placeholder:p,children:f},m){const[h,y]=v({deps:t,handle:n,init:r,delay:o,jumpFirst:s,cleanup:a,onStart:c,onEnd:l,onError:i,onFinal:u}),E=e.useMemo((()=>d?.(h)),[h]);return e.useImperativeHandle(m,(()=>({setResolve:y})),[]),f({...h,computed:E,setResolve:y,placeholder:p})})),A=e.forwardRef((function({deps:t,handle:n,reducersDeps:r,reducers:o,init:s,delay:a=200,jumpFirst:c=!1,cleanup:l=!0,onStart:i,onEnd:u,onError:d,onFinal:p,onComputed:f,placeholder:m,children:h},v){const[E,x,C]=y({deps:t,handle:n,reducersDeps:r,reducers:o,init:s,delay:a,jumpFirst:c,cleanup:l,onStart:i,onEnd:u,onError:d,onFinal:p}),F=e.useMemo((()=>f?.(E)),[E]);return e.useImperativeHandle(v,(()=>({dispatch:x,actions:C})),[]),h({...E,computed:F,dispatch:x,actions:C,placeholder:m})})),j=new Set([g,A]);const P=e.forwardRef((function({deps:t,compare:n=s,handle:r,init:o,delay:a=200,jumpFirst:c=!1,cleanup:l=!0,onStart:i,onEnd:u,onError:d,onFinal:p,onComputed:f,placeholder:m,children:h},v){const[y,E]=C({deps:t,compare:n,handle:r,init:o,delay:a,jumpFirst:c,cleanup:l,onStart:i,onEnd:u,onError:d,onFinal:p}),x=e.useMemo((()=>f?.(y)),[y]);return e.useImperativeHandle(v,(()=>E),[]),h({...y,computed:x,watchOptions:E,placeholder:m})})),b=e.forwardRef((function({deps:t={},compare:n=a,handle:r,init:o,delay:s=200,jumpFirst:c=!1,cleanup:l=!0,onStart:i,onEnd:u,onError:d,onFinal:p,onComputed:f,placeholder:m,children:h},v){const[y,E]=C({deps:t,compare:n,handle:r,init:o,delay:s,jumpFirst:c,cleanup:l,onStart:i,onEnd:u,onError:d,onFinal:p}),x=e.useMemo((()=>f?.(y)),[y]);return e.useImperativeHandle(v,(()=>E),[]),h({...y,computed:x,watchOptions:E,placeholder:m})})),I=e.forwardRef((function({deps:t=[],compare:n=c,handle:r,init:o,delay:s=200,jumpFirst:a=!1,cleanup:l=!0,onStart:i,onEnd:u,onError:d,onFinal:p,onComputed:f,placeholder:m,children:h},v){const[y,E]=C({deps:t,compare:n,handle:r,init:o,delay:s,jumpFirst:a,cleanup:l,onStart:i,onEnd:u,onError:d,onFinal:p}),x=e.useMemo((()=>f?.(y)),[y]);return e.useImperativeHandle(v,(()=>E),[]),h({...y,computed:x,watchOptions:E,placeholder:m})})),L=new Set([P,b,I]);const k=new Set(["forwards","backwards","together"]),M=Symbol(),T=Symbol();function O(e,t){e.forEach(t)}function $(e,t){for(let n=e.length-1;n>=0;--n)t(e[n],n)}function H(e){return e()}const W=e.createContext(H),q=Symbol(),N=e.forwardRef((function({wrap:t,compare:n=a,init:r,delay:o=200,jumpFirst:s=!1,cleanup:c=!0,onStart:l,onEnd:i,onError:u,onFinal:d,onComputed:p,placeholder:f,children:h},v){if("function"!=typeof t.type)throw new Error("wrap type must be a function component.");const y=e.useRef(null),E=e.useRef(null),x=e.useRef(null),C=e.useRef(!0),F=e.useContext(W),[S,R,g]=w();e.useImperativeHandle(v,(()=>S),[]);const A=()=>t.type(t.props);C.current?(C.current=!1,s||(y.current=F(A))):g.current&&(R.current||t.type!==E.current||n(t.props,x.current))&&(R.current=!1,y.current=F(A)),E.current=t.type,x.current=t.props;const j=m({resolve:y.current,init:r,delay:o,jumpFirst:s,cleanup:c,onStart:l,onEnd:i,onError:u,onFinal:d}),P=e.useMemo((()=>p?.(j)),[j]);return h({...j,computed:P,placeholder:f,watchOptions:S})}));Object.defineProperty(N,q,{value:!0});const B=e.createContext(void 0);function V(){}function D(){}function K({condition:t,not:n=!1,children:r}){const o=("function"==typeof t?t():t)^!n;return e.createElement(e.Suspense,null,e.createElement(z,{valid:o,children:r}))}function z({valid:t,children:n}){const r=e.useRef(null),[o,s]=e.useState((()=>({current:!0})));if(e.useLayoutEffect((()=>{t?s({current:!1}):o.current=!1}),[]),!o.current){if(t)throw null===r.current&&(r.current=new Promise((e=>e))),r.current;r.current=null}return n}const G=e.createContext(void 0);function Y(){}const _=e.createContext(void 0);function J(){}const Q=e.createContext(void 0);function U(){return!0}const X=e.forwardRef((function({uniqueKey:t,include:n=U,max:r=0,meta:o,children:s},a){const c=e.useState(!0)[1],l=e.useCallback((()=>c((e=>!e))),[]),i=e.useRef(new Z).current,u=e.useRef(new Z).current,d=e.useRef({}).current,p=e.useRef(null),f=e.useCallback(((e,t)=>{i.remove(t.originItem),u.remove(t.sortedItem),delete d[e]}),[]),m=()=>{const e=d[p.current];e&&(e.cache?e.show=!1:f(p.current,e))};e.useImperativeHandle(a,(()=>({get current(){return[p.current,d[p.current].meta]},get length(){return i.length},get:()=>{const e={};return i.forEach((n=>{e[n.value]=d[t].meta})),e},remove:e=>{if(e!==p.current){const t=d[e];t&&(f(e,t),l())}}})),[]),e.useEffect((()=>{const e=d[t];if(e.valid=!1,e.activated.length>0){for(let t=e.activated.length-1;t>=0;--t){const n=e.activated[t].reduce(((e,t)=>{const n=t();return"function"==typeof n&&e.push(n),e}),[]);n.length>0&&e.deactivated.push(n)}if(e.deactivated.length>0)return()=>{for(let t=e.deactivated.length-1;t>=0;--t)e.deactivated[t].forEach((e=>e()));e.deactivated.length=0}}}),[t]);const h=d[t];if(void 0===h){const e=i.add(t),a=u.add(t);if(d[t]={element:s,show:!0,cache:n(t),originItem:e,sortedItem:a,valid:!0,activated:[],deactivated:[],meta:o},m(),r>0&&i.length>r){const e=u.removeFirst().value;i.remove(d[e].originItem),delete d[e]}}else t!==p.current&&(h.show=!0,u.moveLast(h.sortedItem),m()),h.element=s,h.meta=o;return p.current=t,i.map((({value:t})=>{const n=d[t];return e.createElement(K,{key:t,condition:n.show},e.createElement(Q.Provider,{value:n},n.element))}))}));class Z{#e=null;#t=null;#n=0;#r(e){return{value:e,prev:null,next:null}}#o(e){return null===this.#e?(this.#e=this.#t=e,e.prev=e.next=null):(this.#t.next=e,e.prev=this.#t,this.#t=e,e.next=null),this.#n+=1,e}add(e){const t=this.#r(e);return this.#o(t)}remove(e){if(0===this.#n)return null;if(1===this.#n)this.#e=this.#t=null;else if(e===this.#e)this.#e=this.#e.next,this.#e.prev=null;else if(e===this.#t)this.#t=this.#t.prev,this.#t.next=null;else{const{prev:t,next:n}=e;t.next=n,n.prev=t}return this.#n-=1,e}removeFirst(){return this.remove(this.#e)}moveLast(e){return this.remove(e),this.#o(e)}get length(){return this.#n}map(e){const t=[];let n=this.#e,r=0;for(;null!==n;)t.push(e(n,r)),r+=1,n=n.next;return t}forEach(e){let t=this.#e,n=0;for(;null!==t;)e(t,n),n+=1,t=t.next}}const ee=e.forwardRef((function({uniqueKey:t,tag:n="div",name:r="v",type:o,duration:s,appear:a=!1,enterFromClass:c,enterActiveClass:l,enterToClass:i,leaveFromClass:u,leaveActiveClass:d,leaveToClass:p,onEnter:f,onLeave:m,className:h,style:v,children:y},E){const[x,C]=e.useState((()=>({current:!1}))),F=e.useRef(null);e.useImperativeHandle(E,(()=>F.current),[]);const w=e.useRef(!0),S=e.useRef(t),R=e.useRef(y),g=se(r,c,l,i,u,d,p);return S.current===t?R.current=y:S.current=t,e.useLayoutEffect((()=>{const e=F.current;let t=!0;const n=()=>{t&&C({current:!0})};switch(o){case"transition":if(w.current){if(a){const t=ie(e,g,w.current,s);requestAnimationFrame((()=>{requestAnimationFrame(t)}))}w.current=!1}else requestAnimationFrame(ue(e,g,n,s));break;case"animation":w.current?(a&&de(e,g,w.current,s),w.current=!1):pe(e,g,n,s);break;case"animate":w.current?(a&&fe(e,f,w.current),w.current=!1):function(e,t,n){t(e,(()=>{ce(e),n()}))}(e,m,n)}return()=>{t=!1}}),[S.current]),e.useLayoutEffect((()=>{if(x.current){x.current=!1;const e=F.current;switch(o){case"transition":requestAnimationFrame(ie(e,g,w.current,s));break;case"animation":de(e,g,w.current,s);break;case"animate":fe(e,f,w.current)}}}),[x.current]),e.createElement(n,{ref:F,className:h,style:v,children:R.current})})),te=new Set(["transition","animation","animate"]),ne={position:"relative"},re={x:"x",y:"y"},oe=e.forwardRef((function({tag:t="div",name:n="v",type:r,duration:o,appear:s=!1,enterFromClass:a,enterActiveClass:c,enterToClass:l,leaveFromClass:i,leaveActiveClass:u,leaveToClass:d,moveClass:p,onEnter:f,onLeave:m,onMove:h,cssVars:v=re,items:y,keyPath:E,className:x,style:C=ne,children:F},w){const S=e.useRef(null);e.useImperativeHandle(w,(()=>S.current),[]);const R=e.useRef(null),g=e.useRef(!0),A=se(n,a,c,l,i,u,d,p),j=void 0!==E;j&&(E=[E].flat());const P=[];let b=0;for(const e of y)P.push(F({item:e,index:b,key:j?E.reduce(((e,t)=>e[t]),e):void 0})),b+=1;return e.useLayoutEffect((()=>{if(!te.has(r))return;null===R.current&&(R.current=new Map);const e=S.current,t=new Map;if(P.forEach(((n,r)=>{const o=n.key;if(void 0!==o){const n=e.children.item(r);t.set(o,{element:n,x:n.offsetLeft,y:n.offsetTop})}})),g.current&&!s)g.current=!1;else if(t.size>0){let n,s,a;const c=[],l=[],i=[],u=[],d=[],p=[];switch(r){case"transition":n=e=>{c.push(ie(e,A,!0,o))},s=e=>{l.push(ue(e,A,(()=>e.remove()),o))},a=(e,t,n)=>{i.push(function(e,t,n,r,o){return e.style.setProperty("transform",`translate(${n}px, ${r}px)`,"important"),()=>{e.classList.add(...t.moveClass),e.style.removeProperty("transform");const n=()=>{e.classList.remove(...t.moveClass)};le(e,"transitionend",n,o,"move")}}(e,A,t,n,o))};break;case"animation":n=e=>{de(e,A,!0,o)},s=e=>{pe(e,A,(()=>e.remove()),o)},a=(e,t,n)=>{!function(e,t,n,r,o,s){const a=`--${n.x}`,c=`--${n.y}`;e.style.setProperty(a,`${r}px`),e.style.setProperty(c,`${o}px`),e.classList.add(...t.moveClass);const l=()=>{e.style.removeProperty(a),e.style.removeProperty(c),e.classList.remove(...t.moveClass)};le(e,"animationend",l,s,"move")}(e,A,v,t,n,o)};break;case"animate":n=e=>{u.push(e)},s=e=>{d.push({element:e,done:()=>e.remove()})},a=(e,t,n)=>{p.push({element:e,x:t,y:n})}}switch(t.forEach(((e,t)=>{const r=R.current.get(t);if(r){const n=r.x-e.x,o=r.y-e.y;0===n&&0===o||a(e.element,n,o),R.current.delete(t)}else n(e.element)})),R.current.size>0&&R.current.forEach((t=>{const{element:n,x:r,y:o}=t;e.append(n),n.style.position="relative";const a=r-n.offsetLeft,c=o-n.offsetTop;0===a&&0===c||(n.style.left=`${a}px`,n.style.top=`${c}px`),s(n)})),r){case"transition":requestAnimationFrame((()=>{const e=()=>{[c,l,i].forEach((e=>{e.length>0&&e.forEach((e=>e()))}))};g.current?(g.current=!1,requestAnimationFrame(e)):e()}));break;case"animate":f(u),m(d),h(p)}}R.current=t})),e.createElement(t,{ref:S,className:x,style:C,children:P})}));function se(t,n,r,o,s,a,c,l){return e.useMemo((()=>({enterFromClass:(n??`${t}-enter-from`).split(" ").filter(Boolean),enterActiveClass:(r??`${t}-enter-active`).split(" ").filter(Boolean),enterToClass:(o??`${t}-enter-to`).split(" ").filter(Boolean),leaveFromClass:(s??`${t}-leave-from`).split(" ").filter(Boolean),leaveActiveClass:(a??`${t}-leave-active`).split(" ").filter(Boolean),leaveToClass:(c??`${t}-leave-to`).split(" ").filter(Boolean),moveClass:(l??`${t}-move`).split(" ").filter(Boolean)})),[t,n,r,o,s,a,c,l])}function ae(e){e.style.removeProperty("opacity")}function ce(e){e.style.setProperty("opacity","0","important")}function le(e,t,n,r,o){if(void 0===r)e.addEventListener(t,n,{once:!0});else{const e="number"==typeof r?r:r[o];setTimeout(n,e)}}function ie(e,t,n,r){return n||(ae(e),e.classList.remove(...t.leaveActiveClass,...t.leaveToClass)),e.classList.add(...t.enterFromClass),()=>{e.classList.remove(...t.enterFromClass),e.classList.add(...t.enterActiveClass,...t.enterToClass);le(e,"transitionend",(()=>{e.classList.remove(...t.enterActiveClass,...t.enterToClass)}),r,"enter")}}function ue(e,t,n,r){return e.classList.remove(...t.enterActiveClass,...t.enterToClass),e.classList.add(...t.leaveFromClass),()=>{e.classList.remove(...t.leaveFromClass),e.classList.add(...t.leaveActiveClass,...t.leaveToClass);le(e,"transitionend",(()=>{ce(e),n()}),r,"leave")}}function de(e,t,n,r){n||(ae(e),e.classList.remove(...t.leaveActiveClass)),e.classList.add(...t.enterActiveClass);le(e,"animationend",(()=>{e.classList.remove(...t.enterActiveClass)}),r,"enter")}function pe(e,t,n,r){e.classList.remove(...t.enterActiveClass),e.classList.add(...t.leaveActiveClass);le(e,"animationend",(()=>{e.classList.remove(...t.leaveActiveClass),ce(e),n()}),r,"leave")}function fe(e,t,n){n||ae(e),t(e)}exports.Action=function({useAction:e,options:t,children:n}){return n(e(t))},exports.Async=N,exports.AsyncView=function({root:t,rootIsParent:n,rootMargin:r,threshold:s,children:a,onIntersection:c=l}){const d=e.useState((()=>u(a,(()=>Reflect.has(a.type,q)))))[0],[p,f]=e.useState((()=>{const{promise:e,resolve:t}=i();let n;return[t=>(n=H(t),h.current?n:e),()=>{d&&t(o(n))}]}))[0],{placeholder:m,flag:h}=S(f,t,n,r,s,c);if(d){const t=h.current?a:e.cloneElement(a,{placeholder:m});return e.createElement(W.Provider,{value:p},t)}},exports.Await=R,exports.AwaitList=function({order:t,tail:n,gap:s=200,children:a}){const c=F();if(!k.has(t))return a;Array.isArray(a)||(a=[a]);const l=a.map((e=>e?.type===R?e.props.resolve:M));if("together"===t){const e=[],t=[];if(l.forEach(((n,s)=>{n instanceof Promise&&!Reflect.has(n,r)&&(e.push(o(n)),t.push(s))})),e.length>0){const n=Promise.allSettled(e);t.forEach(((t,r)=>l[t]=n.then((()=>e[r]))))}}else switch(n){case"collapsed":{let e=!1;("forwards"===t?O:$)(l,((t,n)=>{t instanceof Promise&&!Reflect.has(t,r)&&(e?l[n]=T:(e=!0,l[n]=o(t).finally((()=>setTimeout(c,s)))))}));break}default:l["forwards"===t?"reduce":"reduceRight"](((e,t,n)=>{if(t instanceof Promise&&!Reflect.has(t,r)){const r=o(t),a=()=>{return e=s,t=r,new Promise((n=>setTimeout(n,e,t)));var e,t};return l[n]=e.then(a,a)}return e}),Promise.resolve())}return e.createElement(e.Fragment,null,...l.map(((t,n)=>{const r=a[n];return t===M?r:e.cloneElement(r,{resolve:t})})))},exports.AwaitReducer=A,exports.AwaitState=g,exports.AwaitStateView=function({root:t,rootIsParent:n,rootMargin:r,threshold:s,children:a,onIntersection:c=l}){const[d]=e.useState((()=>u(a,(()=>j.has(a.type))))),[p,f]=e.useState((()=>{const{promise:e,resolve:t}=i();let n;return[t=>(n=t,v.current?n:e),()=>{d&&t(o(n))}]}))[0],{placeholder:m,flag:v}=S(f,t,n,r,s,c);if(d){const t=v.current?a:e.cloneElement(a,{placeholder:m});return e.createElement(h.Provider,{value:p},t)}},exports.AwaitView=function({root:t,rootIsParent:n=!1,rootMargin:r,threshold:s,children:a,onIntersection:c=l}){const d=e.useRef(null),[p]=e.useState((()=>u(a,(()=>a.type===R)))),[f,m]=e.useState((()=>{const{promise:e,resolve:t}=i();return[e,()=>{p&&(t(o(d.current.props.resolve)),d.current=null)}]}))[0],{placeholder:h,flag:v}=S(m,t,n,r,s,c);if(p)return v.current?a:(d.current=a,e.cloneElement(a,{resolve:f,placeholder:h}))},exports.AwaitWatch=P,exports.AwaitWatchArray=I,exports.AwaitWatchObject=b,exports.AwaitWatchView=function({root:t,rootIsParent:n,rootMargin:r,threshold:s,children:a,onIntersection:c=l}){const[d]=e.useState((()=>u(a,(()=>L.has(a.type))))),[p,f]=e.useState((()=>{const{promise:e,resolve:t}=i();let n;return[(t,r)=>(n=E(t,r),h.current?n:e),()=>{d&&t(o(n))}]}))[0],{placeholder:m,flag:h}=S(f,t,n,r,s,c);if(d){const t=h.current?a:e.cloneElement(a,{placeholder:m});return e.createElement(x.Provider,{value:p},t)}},exports.For=function({items:e,keyPath:t,children:n}){const r=void 0!==t;r&&(t=[t].flat());const o=[];let s=0;for(const a of e)o.push(n({item:a,index:s,key:r?t.reduce(((e,t)=>e[t]),a):void 0})),s+=1;return o},exports.Gen=function({children:t}){const n={index:0,array:(t=[t].flat()).slice(1).reduce(((e,t)=>(t?.type===J&&e.push(t.props.children),e)),[])};return e.createElement(_.Provider,{value:n},t[0])},exports.Host=function({children:t}){t=[t].flat();const n={parent:e.useContext(G),tmplChildren:t.slice(1).reduce(((e,t)=>{if(t?.type===Y){const{name:n="default",children:r}=t.props;e[n]??=r}return e}),{})};return e.createElement(G.Provider,{value:n},t[0])},exports.If=function({condition:e,not:t=!1,children:n,fallback:r}){return("function"==typeof e?e():e)^t?n:r},exports.KeepAlive=X,exports.Memo=function({deps:t=[],children:n}){return e.useMemo((()=>n),t)},exports.Next=function({children:t,...n}){const r=e.useContext(_);if(r){const{index:t,array:o}=r;if(t===o.length)return;const s=o[t],a="function"==typeof s?s(n):s,c={index:t+1,array:o};return e.createElement(_.Provider,{value:c},a)}},exports.Show=K,exports.Slotted=function({name:t="default",children:n,...r}){const{parent:o,tmplChildren:s}=e.useContext(G)??{},a=s?.[t],c=a?"function"==typeof a?a(r):a:n;return e.createElement(G.Provider,{value:o},c)},exports.Tmpl=Y,exports.Transition=ee,exports.TransitionGroup=oe,exports.Yield=J,exports.defineAsyncComponent=function({name:t="AsyncComponent",init:n=V,compare:r=a,delay:o=200,jumpFirst:s=!1,cleanup:c=!0,onStart:l,onEnd:i,onError:u,onFinal:d,onComputed:p,useAction:f=D,loader:h,Component:v}){const y=e.forwardRef((function({placeholder:t,...a},y){const E=e.useRef(null),x=e.useRef(null),C=e.useRef(!0),F=e.useContext(W),[S,R,g]=w(),A=e.useState((()=>n(a)))[0],j=f(a,S),P=e.useRef(void 0);e.useImperativeHandle(y,(()=>S),[]);const b=()=>h(a,j);C.current?(C.current=!1,s||(E.current=F(b))):g.current&&(R.current||r(a,x.current,j,P.current))&&(R.current=!1,E.current=F(b)),x.current=a,P.current=j;const I=m({resolve:E.current,init:A,delay:o,jumpFirst:s,cleanup:c,onStart:l,onEnd:i,onError:u,onFinal:d}),L=e.useMemo((()=>p?.(I)),[I]);return e.createElement(B.Provider,{value:{...I,computed:L,action:j,placeholder:t,watchOptions:S}},e.createElement(v,a))}));return Object.defineProperties(y,{displayName:{value:t},[q]:{value:!0}})},exports.isPending=function(e){return e===d},exports.isReject=function(e){return e===f},exports.isResolve=function(e){return e===p},exports.useActivated=function(t){const n=e.useContext(Q);n&&n.valid&&n.activated.push([t].flat())},exports.useAsyncValue=function(){return e.useContext(B)},exports.useAwait=m,exports.useAwaitReducer=y,exports.useAwaitState=v,exports.useAwaitWatch=C,exports.useAwaitWatchArray=function({deps:e=[],compare:t=c,handle:n,init:r,delay:o=200,jumpFirst:s=!1,cleanup:a=!0,onStart:l,onEnd:i,onError:u,onFinal:d}){return C({deps:e,compare:t,handle:n,init:r,delay:o,jumpFirst:s,cleanup:a,onStart:l,onEnd:i,onError:u,onFinal:d})},exports.useAwaitWatchObject=function({deps:e={},compare:t=a,handle:n,init:r,delay:o=200,jumpFirst:s=!1,cleanup:c=!0,onStart:l,onEnd:i,onError:u,onFinal:d}){return C({deps:e,compare:t,handle:n,init:r,delay:o,jumpFirst:s,cleanup:c,onStart:l,onEnd:i,onError:u,onFinal:d})},exports.useKeepAliveMeta=function(){const t=e.useContext(Q);return t?.meta};