vue-virtual-flow 0.0.2 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +51 -5
- package/README.vi.md +51 -7
- package/dist/components/VirtualCarousel.d.cts +2 -1
- package/dist/components/VirtualCarousel.d.ts +2 -1
- package/dist/components/WindowGirdVirtualScroll.d.cts +53 -0
- package/dist/components/WindowGirdVirtualScroll.d.ts +53 -0
- package/dist/index.d.cts +4 -2
- package/dist/index.d.ts +4 -2
- package/dist/types.d.cts +23 -0
- package/dist/types.d.ts +23 -0
- package/dist/vue-virtual-flow.cjs +1 -1
- package/dist/vue-virtual-flow.css +1 -1
- package/dist/vue-virtual-flow.js +1376 -1058
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue");function Me(r){return typeof r=="string"||typeof r=="number"||typeof r=="symbol"}function ce(r,P){const b=r[P];return Me(b)?b:void 0}function Te(r){return ce(r,"id")??ce(r,"key")}function ne(r){function P(t,k){const h=r.itemKey();if(typeof h=="function")return h(t,k);if(t!==null&&typeof t=="object"){if(h!==void 0){const u=ce(t,h);if(u!==void 0)return u}const T=Te(t);if(T!==void 0)return T}return k}function b(){}return e.watch(()=>[r.itemKey(),r.items()],b,{immediate:!0}),{getItemKey:P}}function ie(r){return r==="fill"?"100%":typeof r=="number"?`${r}px`:r}function se(r){return(P,b)=>{typeof b=="string"&&(b==="fill"||b.trim().endsWith("%"))}}const ke=["aria-label"],we={key:0,class:"vue-chat-virtual-scroll__loading-older",role:"status","aria-live":"polite"},Se=["aria-posinset","aria-setsize"],fe=e.defineComponent({name:"ChatVirtualScroll",__name:"ChatVirtualScroll",props:{items:{},estimatedItemSize:{default:48},height:{default:400},overscan:{default:5},itemKey:{default:void 0},ariaLabel:{default:"Chat messages"},stickToBottom:{type:Boolean,default:!0},bottomThreshold:{default:80},initialScroll:{default:"bottom"},hasOlder:{type:Boolean,default:!1},loadingOlder:{type:Boolean,default:!1},loadOlderThreshold:{default:120}},emits:["scroll","loadOlder","bottomChange"],setup(r,{expose:P,emit:b}){const t=r,k=b,h=e.ref(),T=e.ref(0),u=e.ref(0),I=e.ref(0),K=e.ref(!0),L=new Map,H=new Map;let z,y,w=-1,M=!1;const S=se(),{getItemKey:D}=ne({componentName:"ChatVirtualScroll",items:()=>t.items,itemKey:()=>t.itemKey}),N=e.computed(()=>Math.max(1,t.estimatedItemSize)),W=e.computed(()=>Math.max(0,Math.floor(t.overscan))),Z=e.computed(()=>u.value>0?u.value:typeof t.height=="number"?Math.max(0,t.height):N.value),E=e.computed(()=>{I.value;const n=new Array(t.items.length+1),d=new Array(t.items.length);n[0]=0;for(let s=0;s<t.items.length;s+=1){const $=D(t.items[s],s),V=L.get($)??N.value;d[s]=V,n[s+1]=n[s]+V}return{offsets:n,sizes:d,total:n[t.items.length]??0}}),x=e.computed(()=>{const n=new Map;return t.items.forEach((d,s)=>{n.set(D(d,s),s)}),n});function O(n){if(t.items.length===0)return 0;const d=E.value.offsets;let s=0,$=t.items.length;for(;s<$;){const V=Math.floor((s+$)/2);d[V+1]<=n?s=V+1:$=V}return Math.min(s,t.items.length-1)}const F=e.computed(()=>Math.max(0,O(T.value)-W.value)),_=e.computed(()=>{if(t.items.length===0)return 0;const n=O(T.value+Z.value)+1;return Math.min(t.items.length,n+W.value)}),R=e.computed(()=>t.items.slice(F.value,_.value).map((n,d)=>{const s=F.value+d;return{item:n,index:s,key:D(n,s),top:E.value.offsets[s]}})),te=e.computed(()=>({height:ie(t.height)}));function C(){const n=h.value;if(!n)return;const s=Math.max(0,E.value.total-n.scrollTop-n.clientHeight)<=Math.max(0,t.bottomThreshold);s!==K.value&&(K.value=s,M&&k("bottomChange",s))}function c(){var n;u.value=((n=h.value)==null?void 0:n.clientHeight)??0,S(h.value,t.height),e.nextTick(()=>{C(),B()})}function v(n){T.value=n.currentTarget.scrollTop,C(),k("scroll",{scrollTop:T.value,startIndex:F.value,endIndex:_.value}),B()}function B(){const n=h.value;!M||!n||!t.hasOlder||t.loadingOlder||w===t.items.length||n.scrollTop<=Math.max(0,t.loadOlderThreshold)&&(w=t.items.length,k("loadOlder"))}function G(n){const d=n.borderBoxSize;if(d){const s=Array.isArray(d)?d[0]:d;if(s!=null&&s.blockSize)return s.blockSize}return n.contentRect.height}function J(n){const d=E.value,s=K.value&&t.stickToBottom;let $=0,V=!1;for(const A of n){const i=A.target,l=H.get(i),a=G(A);if(l===void 0||a<=0)continue;const o=L.get(l)??N.value;if(Math.abs(o-a)<.5)continue;const g=x.value.get(l);g!==void 0&&d.offsets[g+1]<=T.value&&($+=a-o),L.set(l,a),V=!0}V&&(I.value+=1,e.nextTick(()=>{const A=h.value;A&&(s?m("auto"):$!==0&&(A.scrollTop+=$,T.value=A.scrollTop,C()))}))}function Q(n,d){n instanceof HTMLElement&&(H.set(n,d),y==null||y.observe(n))}function U(){for(const[n]of H)n.isConnected||(y==null||y.unobserve(n),H.delete(n))}function X(n,d={}){const s=h.value;if(!s)return;const $=Math.max(0,E.value.total-s.clientHeight),V=Math.min(Math.max(0,Number.isFinite(n)?n:0),$),A=d.behavior??"auto";A==="auto"&&(T.value=V),s.scrollTo({...d,top:V,behavior:A}),e.nextTick(C)}function j(n,d={}){const s=h.value;if(!s||t.items.length===0)return;const $=Math.min(t.items.length-1,Math.max(0,Math.floor(n))),{align:V="start",...A}=d,i=E.value.sizes[$];let l=E.value.offsets[$];V==="center"?l-=(s.clientHeight-i)/2:V==="end"&&(l-=s.clientHeight-i);const a=Math.max(0,Math.min(l,E.value.total-s.clientHeight)),o=A.behavior??"auto",g=Math.max(s.clientHeight*3,N.value*10),p=o==="smooth"&&Math.abs(a-s.scrollTop)>g?"auto":o;p==="auto"&&(T.value=a),s.scrollTo({...A,top:a,behavior:p}),e.nextTick(C)}function oe(n="auto"){const d=h.value;d&&(n==="auto"&&(T.value=0),d.scrollTo({top:0,behavior:n}),e.nextTick(C))}function m(n="auto"){const d=h.value;if(!d)return;const s=Math.max(0,E.value.total-d.clientHeight);n==="auto"?(d.scrollTop=s,T.value=s):d.scrollTo({top:s,behavior:n}),e.nextTick(C)}let f=t.items.map((n,d)=>D(n,d));return e.watch(()=>t.items.map((n,d)=>D(n,d)),async n=>{const d=f;f=n;const s=h.value,$=(s==null?void 0:s.scrollTop)??0,V=K.value&&t.stickToBottom,A=d[0],i=A===void 0?0:n.indexOf(A),l=i>0?n.slice(0,i).reduce((o,g)=>o+(L.get(g)??N.value),0):0,a=new Set(n);for(const o of L.keys())a.has(o)||L.delete(o);I.value+=1,await e.nextTick(),s&&(l>0?(s.scrollTop=$+l,T.value=s.scrollTop):n.length>d.length&&V&&m("auto"),C(),B())}),e.watch(()=>[t.hasOlder,t.loadingOlder],async([n])=>{n||(w=-1),await e.nextTick(),B()}),e.onMounted(()=>{if(c(),typeof ResizeObserver<"u"){z=new ResizeObserver(c),y=new ResizeObserver(J),h.value&&z.observe(h.value);for(const[n]of H)y.observe(n)}e.nextTick(()=>{t.initialScroll==="bottom"&&m("auto"),M=!0,C(),B()})}),e.onUpdated(U),e.onBeforeUnmount(()=>{z==null||z.disconnect(),y==null||y.disconnect(),H.clear()}),P({isAtBottom:K,scrollTo:X,scrollToIndex:j,scrollToTop:oe,scrollToBottom:m}),(n,d)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"viewport",ref:h,class:"vue-chat-virtual-scroll",style:e.normalizeStyle(te.value),role:"log","aria-label":r.ariaLabel,"aria-live":"polite",tabindex:"0",onScrollPassive:v},[r.loadingOlder?(e.openBlock(),e.createElementBlock("div",we,[e.createElementVNode("div",null,[e.renderSlot(n.$slots,"loadingOlder",{},()=>[d[0]||(d[0]=e.createTextVNode("Loading older messages…",-1))])])])):e.createCommentVNode("",!0),r.items.length?(e.openBlock(),e.createElementBlock("div",{key:1,class:"vue-chat-virtual-scroll__spacer",style:e.normalizeStyle({height:`${E.value.total}px`})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(R.value,({item:s,index:$,key:V,top:A})=>(e.openBlock(),e.createElementBlock("div",{key:V,ref_for:!0,ref:i=>Q(i,V),class:"vue-chat-virtual-scroll__item",style:e.normalizeStyle({transform:`translateY(${A}px)`}),role:"article","aria-posinset":$+1,"aria-setsize":r.items.length},[e.renderSlot(n.$slots,"default",{item:s,index:$})],12,Se))),128))],4)):e.renderSlot(n.$slots,"empty",{},void 0,void 0,2)],44,ke))}});function de(r){const P=e.ref(),b=e.ref(0),t=e.ref(!1),k=e.ref(!1),h=e.computed(()=>Math.max(1,r.threshold())),T=e.computed(()=>r.refreshing()||k.value?h.value:b.value),u=e.computed(()=>Math.min(1,b.value/h.value)),I=e.computed(()=>r.refreshing()||k.value?"Refreshing…":u.value>=1?"Release to refresh":"Pull to refresh");function K(){P.value=void 0,t.value=!1,b.value=0}function L(y){var S;const w=y.currentTarget,M=((S=r.scrollTop)==null?void 0:S.call(r))??w.scrollTop;!r.enabled()||r.refreshing()||M>0||y.touches.length!==1||(P.value=y.touches[0].clientY,t.value=!0)}function H(y){var D;if(P.value===void 0||!t.value)return;const w=y.currentTarget;if((((D=r.scrollTop)==null?void 0:D.call(r))??w.scrollTop)>0||y.touches.length!==1){K();return}const S=y.touches[0].clientY-P.value;if(S<=0){b.value=0;return}y.preventDefault(),b.value=Math.min(S*.5,h.value*2)}function z(){if(P.value===void 0)return;const y=b.value>=h.value&&r.enabled()&&!r.refreshing();if(P.value=void 0,t.value=!1,!y){b.value=0;return}b.value=h.value,k.value=!0,r.onRefresh(),e.nextTick(()=>{r.refreshing()||(k.value=!1,b.value=0)})}return e.watch(()=>r.refreshing(),(y,w)=>{y?(k.value=!1,b.value=h.value):w&&(k.value=!1,b.value=0)}),{pulling:t,pullDistance:b,pullOffset:T,pullProgress:u,refreshMessage:I,refreshThreshold:h,handleTouchStart:L,handleTouchMove:H,handleTouchEnd:z,handleTouchCancel:K}}const be=["aria-label"],Be=["aria-posinset","aria-setsize"],me=e.defineComponent({name:"DynamicVirtualScroll",__name:"DynamicVirtualScroll",props:{items:{},estimatedItemSize:{default:48},height:{default:400},overscan:{default:3},itemKey:{default:void 0},ariaLabel:{default:"Dynamic virtual list"},hasMore:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},loadingItemSize:{default:void 0},loadMoreThreshold:{default:200},pullToRefresh:{type:Boolean,default:!1},refreshing:{type:Boolean,default:!1},pullRefreshThreshold:{default:64}},emits:["scroll","loadMore","refresh"],setup(r,{expose:P,emit:b}){const t=r,k=b,{pulling:h,pullDistance:T,pullOffset:u,pullProgress:I,refreshMessage:K,refreshThreshold:L,handleTouchStart:H,handleTouchMove:z,handleTouchEnd:y,handleTouchCancel:w}=de({enabled:()=>t.pullToRefresh,refreshing:()=>t.refreshing,threshold:()=>t.pullRefreshThreshold,onRefresh:()=>k("refresh")}),M=e.ref(),S=e.ref(0),D=e.ref(0),N=e.ref(0),W=new Map,Z=new Map;let E,x,O=-1;const F=se(),{getItemKey:_}=ne({componentName:"DynamicVirtualScroll",items:()=>t.items,itemKey:()=>t.itemKey}),R=e.computed(()=>Math.max(1,t.estimatedItemSize)),te=e.computed(()=>Math.max(1,t.loadingItemSize??R.value)),C=e.computed(()=>Math.max(0,Math.floor(t.overscan))),c=e.computed(()=>D.value>0?D.value:typeof t.height=="number"?Math.max(0,t.height):R.value),v=e.computed(()=>{N.value;const l=new Array(t.items.length+1),a=new Array(t.items.length);l[0]=0;for(let o=0;o<t.items.length;o+=1){const g=_(t.items[o],o),p=W.get(g)??R.value;a[o]=p,l[o+1]=l[o]+p}return{offsets:l,sizes:a,total:l[t.items.length]??0}}),B=e.computed(()=>v.value.total+(t.loading?te.value:0)),G=e.computed(()=>{const l=new Map;return t.items.forEach((a,o)=>{l.set(_(a,o),o)}),l});function J(l){if(t.items.length===0)return 0;const a=v.value.offsets;let o=0,g=t.items.length;for(;o<g;){const p=Math.floor((o+g)/2);a[p+1]<=l?o=p+1:g=p}return Math.min(o,t.items.length-1)}const Q=e.computed(()=>Math.max(0,J(S.value)-C.value)),U=e.computed(()=>{if(t.items.length===0)return 0;const l=J(S.value+c.value)+1;return Math.min(t.items.length,l+C.value)}),X=e.computed(()=>t.items.slice(Q.value,U.value).map((l,a)=>{const o=Q.value+a;return{item:l,index:o,key:_(l,o),top:v.value.offsets[o]}})),j=e.computed(()=>({height:ie(t.height)}));function oe(){var l;D.value=((l=M.value)==null?void 0:l.clientHeight)??0,F(M.value,t.height),e.nextTick(f)}function m(l){S.value=l.currentTarget.scrollTop,k("scroll",{scrollTop:S.value,startIndex:Q.value,endIndex:U.value}),f()}function f(){const l=M.value;if(!l||!t.hasMore||t.loading||O===t.items.length)return;const a=Math.max(0,t.loadMoreThreshold);B.value-l.scrollTop-l.clientHeight<=a&&(O=t.items.length,k("loadMore"))}function n(l){const a=l.borderBoxSize;if(a){const o=Array.isArray(a)?a[0]:a;if(o!=null&&o.blockSize)return o.blockSize}return l.contentRect.height}function d(l){const a=v.value;let o=0,g=!1;for(const p of l){const q=p.target,Y=Z.get(q),ee=n(p);if(Y===void 0||ee<=0)continue;const le=W.get(Y)??R.value;if(Math.abs(le-ee)<.5)continue;const ae=G.value.get(Y);ae!==void 0&&a.offsets[ae+1]<=S.value&&(o+=ee-le),W.set(Y,ee),g=!0}g&&(N.value+=1,e.nextTick(f),o!==0&&e.nextTick(()=>{const p=M.value;p&&(p.scrollTop+=o,S.value=p.scrollTop)}))}function s(l,a){l instanceof HTMLElement&&(Z.set(l,a),x==null||x.observe(l))}function $(){for(const[l]of Z)l.isConnected||(x==null||x.unobserve(l),Z.delete(l))}function V(l,a={}){const o=M.value;if(!o)return;const g=Math.max(0,B.value-o.clientHeight),p=Math.min(Math.max(0,Number.isFinite(l)?l:0),g),q=a.behavior??"auto";q==="auto"&&(S.value=p),o.scrollTo({...a,top:p,behavior:q})}function A(l,a={}){const o=M.value;if(!o||t.items.length===0)return;const g=Math.min(t.items.length-1,Math.max(0,Math.floor(l))),{align:p="start",...q}=a;let Y=v.value.offsets[g];const ee=v.value.sizes[g];p==="center"?Y-=(o.clientHeight-ee)/2:p==="end"&&(Y-=o.clientHeight-ee);const le=Math.max(0,Math.min(Y,B.value-o.clientHeight)),ae=q.behavior??"auto",ue=Math.max(o.clientHeight*3,R.value*10),re=ae==="smooth"&&Math.abs(le-o.scrollTop)>ue?"auto":ae;re==="auto"&&(S.value=le),o.scrollTo({...q,top:le,behavior:re})}function i(l="auto"){var a;(a=M.value)==null||a.scrollTo({top:0,behavior:l})}return e.watch(()=>t.itemKey,()=>{W.clear(),N.value+=1}),e.watch(()=>t.items.length,async()=>{const l=new Set(t.items.map((g,p)=>_(g,p)));for(const g of W.keys())l.has(g)||W.delete(g);N.value+=1,await e.nextTick();const a=M.value;if(!a)return;const o=Math.max(0,B.value-a.clientHeight);a.scrollTop>o&&(a.scrollTop=o,S.value=o),f()}),e.watch(()=>[t.hasMore,t.loading],async([l])=>{l||(O=-1),await e.nextTick(),f()}),e.onMounted(()=>{if(oe(),typeof ResizeObserver<"u"){E=new ResizeObserver(oe),x=new ResizeObserver(d),M.value&&E.observe(M.value);for(const[l]of Z)x.observe(l)}e.nextTick(f)}),e.onUpdated($),e.onBeforeUnmount(()=>{E==null||E.disconnect(),x==null||x.disconnect(),Z.clear()}),P({scrollTo:V,scrollToIndex:A,scrollToTop:i}),(l,a)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"viewport",ref:M,class:e.normalizeClass(["vue-dynamic-virtual-scroll",{"vue-dynamic-virtual-scroll--pulling":e.unref(h)}]),style:e.normalizeStyle(j.value),role:"list","aria-label":r.ariaLabel,tabindex:"0",onScrollPassive:m,onTouchstartPassive:a[0]||(a[0]=(...o)=>e.unref(H)&&e.unref(H)(...o)),onTouchmove:a[1]||(a[1]=(...o)=>e.unref(z)&&e.unref(z)(...o)),onTouchend:a[2]||(a[2]=(...o)=>e.unref(y)&&e.unref(y)(...o)),onTouchcancel:a[3]||(a[3]=(...o)=>e.unref(w)&&e.unref(w)(...o))},[r.pullToRefresh||r.refreshing?(e.openBlock(),e.createElementBlock("div",{key:0,class:"vue-dynamic-virtual-scroll__refresh",style:e.normalizeStyle({height:`${e.unref(L)}px`,transform:`translateY(${e.unref(u)-e.unref(L)}px)`}),role:"status","aria-live":"polite"},[e.renderSlot(l.$slots,"refresh",{pullDistance:e.unref(T),progress:e.unref(I),refreshing:r.refreshing},()=>[e.createTextVNode(e.toDisplayString(e.unref(K)),1)])],4)):e.createCommentVNode("",!0),r.items.length||r.loading?(e.openBlock(),e.createElementBlock("div",{key:1,class:"vue-dynamic-virtual-scroll__spacer",style:e.normalizeStyle({height:`${B.value}px`,transform:`translateY(${e.unref(u)}px)`})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(X.value,({item:o,index:g,key:p,top:q})=>(e.openBlock(),e.createElementBlock("div",{key:p,ref_for:!0,ref:Y=>s(Y,p),class:"vue-dynamic-virtual-scroll__item",style:e.normalizeStyle({transform:`translateY(${q}px)`}),role:"listitem","aria-posinset":g+1,"aria-setsize":r.items.length},[e.renderSlot(l.$slots,"default",{item:o,index:g})],12,Be))),128)),r.loading?(e.openBlock(),e.createElementBlock("div",{key:0,class:"vue-dynamic-virtual-scroll__loading",style:e.normalizeStyle({height:`${te.value}px`,transform:`translateY(${v.value.total}px)`}),role:"status","aria-live":"polite"},[e.renderSlot(l.$slots,"loading",{},()=>[a[4]||(a[4]=e.createTextVNode("Loading more…",-1))])],4)):e.createCommentVNode("",!0)],4)):(e.openBlock(),e.createElementBlock("div",{key:2,class:"vue-dynamic-virtual-scroll__empty",style:e.normalizeStyle({transform:`translateY(${e.unref(u)}px)`})},[e.renderSlot(l.$slots,"empty")],4))],46,be))}}),Ie=["aria-label"],ze=["aria-current","aria-posinset","aria-setsize"],Ee={key:1,class:"vue-short-media-feed__empty"},he=e.defineComponent({name:"ShortMediaFeed",__name:"ShortMediaFeed",props:{items:{},activeIndex:{default:0},buffer:{default:1},height:{default:"100dvh"},itemKey:{default:void 0},ariaLabel:{default:"Short media feed"},hasMore:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},loadMoreThreshold:{default:2}},emits:["update:activeIndex","change","reachStart","reachEnd","loadMore"],setup(r,{expose:P,emit:b}){const t=r,k=b,h=e.ref(),T=e.ref(0),u=e.ref(E(t.activeIndex));let I,K=-1;const L=se(),{getItemKey:H}=ne({componentName:"ShortMediaFeed",items:()=>t.items,itemKey:()=>t.itemKey}),z=e.computed(()=>Math.max(0,Math.floor(t.buffer))),y=e.computed(()=>Math.max(0,Math.floor(Number.isFinite(t.loadMoreThreshold)?t.loadMoreThreshold:0))),w=e.computed(()=>T.value>0?T.value:typeof t.height=="number"?Math.max(1,t.height):0),M=e.computed(()=>Math.max(0,u.value-z.value)),S=e.computed(()=>Math.min(t.items.length,u.value+z.value+1)),D=e.computed(()=>t.items.slice(M.value,S.value).map((c,v)=>({item:c,index:M.value+v}))),N=e.computed(()=>M.value*w.value),W=e.computed(()=>(t.items.length-S.value)*w.value),Z=e.computed(()=>({height:ie(t.height)}));function E(c){return t.items.length===0?0:Math.min(t.items.length-1,Math.max(0,Math.floor(Number.isFinite(c)?c:0)))}function x(){if(!t.hasMore||t.loading||K===t.items.length)return;(t.items.length===0?0:t.items.length-1-u.value)<=y.value&&(K=t.items.length,k("loadMore"))}function O(c){const v=E(c);v===u.value||t.items.length===0||(u.value=v,k("update:activeIndex",v),k("change",{index:v,item:t.items[v]}),v===0&&k("reachStart"),v===t.items.length-1&&k("reachEnd"),x())}function F(c,v={}){const B=h.value;B&&(typeof B.scrollTo=="function"?B.scrollTo({...v,top:c}):B.scrollTop=c)}function _(c,v={}){if(t.items.length===0)return;const B=E(c);O(B),F(B*w.value,v)}function R(c){if(w.value<=0)return;const v=c.currentTarget.scrollTop;O(Math.round(v/w.value))}function te(c){let v;c.key==="ArrowDown"||c.key==="PageDown"?v=u.value+1:c.key==="ArrowUp"||c.key==="PageUp"?v=u.value-1:c.key==="Home"?v=0:c.key==="End"&&(v=t.items.length-1),v!==void 0&&(c.preventDefault(),_(v,{behavior:"smooth"}))}function C(){var v;const c=((v=h.value)==null?void 0:v.clientHeight)??0;L(h.value,t.height),!(c<=0||c===T.value)&&(T.value=c,e.nextTick(()=>{F(u.value*c)}))}return e.watch(()=>t.activeIndex,async c=>{const v=E(c);v!==u.value&&(u.value=v,await e.nextTick(),F(v*w.value),x())}),e.watch(()=>[t.hasMore,t.loading,t.loadMoreThreshold],async([c])=>{c||(K=-1),await e.nextTick(),x()}),e.watch(()=>t.items.length,async()=>{const c=E(u.value);t.items.length===0?u.value!==0&&(u.value=0,k("update:activeIndex",0)):O(c),await e.nextTick(),F(c*w.value),x()}),e.onMounted(async()=>{C(),typeof ResizeObserver<"u"&&h.value&&(I=new ResizeObserver(C),I.observe(h.value)),await e.nextTick(),F(u.value*w.value),x()}),e.onBeforeUnmount(()=>{I==null||I.disconnect()}),P({scrollToIndex:_}),(c,v)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"viewport",ref:h,class:"vue-short-media-feed",style:e.normalizeStyle(Z.value),role:"list","aria-orientation":"vertical","aria-label":r.ariaLabel,tabindex:"0",onScrollPassive:R,onKeydown:te},[r.items.length?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[N.value>0?(e.openBlock(),e.createElementBlock("div",{key:0,class:"vue-short-media-feed__spacer",style:e.normalizeStyle({height:`${N.value}px`}),"aria-hidden":"true"},null,4)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(D.value,({item:B,index:G})=>(e.openBlock(),e.createElementBlock("div",{key:e.unref(H)(B,G),class:"vue-short-media-feed__item",style:e.normalizeStyle({height:`${w.value}px`}),role:"listitem","aria-current":G===u.value?"true":void 0,"aria-posinset":G+1,"aria-setsize":r.items.length},[e.renderSlot(c.$slots,"default",{item:B,index:G,active:G===u.value})],12,ze))),128)),W.value>0?(e.openBlock(),e.createElementBlock("div",{key:1,class:"vue-short-media-feed__spacer",style:e.normalizeStyle({height:`${W.value}px`}),"aria-hidden":"true"},null,4)):e.createCommentVNode("",!0)],64)):(e.openBlock(),e.createElementBlock("div",Ee,[e.renderSlot(c.$slots,"empty")]))],44,Ie))}}),$e=["aria-label"],Ve={key:0,class:"vue-virtual-carousel__track",role:"list"},He=["aria-label","aria-current"],Le={key:1,class:"vue-virtual-carousel__empty"},ve=e.defineComponent({name:"VirtualCarousel",__name:"VirtualCarousel",props:{items:{},activeIndex:{default:0},slidesPerView:{default:1},slidesToScroll:{default:1},gap:{default:0},buffer:{default:1},height:{default:"auto"},itemKey:{default:void 0},ariaLabel:{default:"Carousel"},hasMore:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},loadMoreThreshold:{default:2},autoplay:{type:Boolean,default:!1},autoplayDelay:{default:3e3},autoplayLoop:{type:Boolean,default:!0},pauseOnHover:{type:Boolean,default:!0}},emits:["update:activeIndex","change","reachStart","reachEnd","loadMore"],setup(r,{expose:P,emit:b}){const t=r,k=b,h=e.ref(),T=e.ref(0),u=e.ref(0);let I,K=-1,L,H;const z=e.ref(!1),{getItemKey:y}=ne({componentName:"VirtualCarousel",items:()=>t.items,itemKey:()=>t.itemKey}),w=e.computed(()=>Math.max(1,Math.floor(Number.isFinite(t.slidesPerView)?t.slidesPerView:1))),M=e.computed(()=>Math.max(1,Math.floor(Number.isFinite(t.slidesToScroll)?t.slidesToScroll:1))),S=e.computed(()=>Math.max(0,Number.isFinite(t.gap)?t.gap:0)),D=e.computed(()=>Math.max(0,Math.floor(Number.isFinite(t.buffer)?t.buffer:0))),N=e.computed(()=>Math.max(0,Math.floor(Number.isFinite(t.loadMoreThreshold)?t.loadMoreThreshold:0))),W=e.computed(()=>Number.isFinite(t.autoplayDelay)?Math.max(1,t.autoplayDelay):3e3),Z=e.computed(()=>Math.max(0,T.value)),E=e.computed(()=>{if(Z.value<=0)return 0;const i=(w.value-1)*S.value;return Math.max(1,(Z.value-i)/w.value)}),x=e.computed(()=>E.value+S.value),O=e.computed(()=>Math.max(0,t.items.length-w.value)),F=e.computed(()=>Math.max(0,u.value-D.value)),_=e.computed(()=>Math.min(t.items.length,u.value+w.value+D.value)),R=e.computed(()=>t.items.slice(F.value,_.value).map((i,l)=>({item:i,index:F.value+l}))),te=e.computed(()=>t.items.length===0?0:t.items.length*E.value+(t.items.length-1)*S.value),C=e.computed(()=>F.value*x.value),c=e.computed(()=>Math.max(0,te.value-_.value*x.value)),v=e.computed(()=>({height:ie(t.height)}));function B(i){return Math.min(O.value,Math.max(0,Math.floor(Number.isFinite(i)?i:0)))}u.value=B(t.activeIndex);function G(i){return i>=u.value&&i<Math.min(t.items.length,u.value+w.value)}function J(){if(!t.hasMore||t.loading||K===t.items.length)return;const i=t.items.length===0?-1:Math.min(t.items.length-1,u.value+w.value-1);t.items.length-1-i<=N.value&&(K=t.items.length,k("loadMore"))}function Q(i){const l=B(i);l===u.value||t.items.length===0||(u.value=l,k("update:activeIndex",l),k("change",{index:l,item:t.items[l]}),l===0&&k("reachStart"),l===O.value&&k("reachEnd"),J(),t.autoplay&&!z.value&&m())}function U(i,l={}){const a=h.value;a&&(typeof a.scrollTo=="function"?a.scrollTo({...l,left:i}):a.scrollLeft=i)}function X(i,l={}){if(t.items.length===0||x.value<=0)return;const a=B(i),o=Math.abs(a-u.value),g=l.behavior==="smooth"&&o>D.value?"auto":l.behavior;H=g==="smooth"?a:void 0,Q(a),U(a*x.value,{...l,behavior:g})}function j(i="smooth"){X(u.value+M.value,{behavior:i})}function oe(i="smooth"){X(u.value-M.value,{behavior:i})}function m(){f(),!(!t.autoplay||t.items.length===0)&&(L=setTimeout(()=>{u.value>=O.value?t.autoplayLoop?X(0,{behavior:"smooth"}):f():j("smooth")},W.value))}function f(){L!==void 0&&(clearTimeout(L),L=void 0)}function n(){z.value=!0,t.pauseOnHover&&f()}function d(){z.value=!1,t.autoplay&&m()}function s(){H=void 0}function $(i){if(x.value<=0)return;const l=i.currentTarget.scrollLeft;if(H!==void 0){const a=H*x.value;if(Math.abs(l-a)>1)return;H=void 0}Q(Math.round(l/x.value))}function V(i){i.key==="ArrowRight"||i.key==="PageDown"?(i.preventDefault(),j()):i.key==="ArrowLeft"||i.key==="PageUp"?(i.preventDefault(),oe()):i.key==="Home"?(i.preventDefault(),X(0,{behavior:"smooth"})):i.key==="End"&&(i.preventDefault(),X(O.value,{behavior:"auto"}))}function A(){var l;const i=((l=h.value)==null?void 0:l.clientWidth)??0;i<=0||i===T.value||(T.value=i,e.nextTick(()=>{U(u.value*x.value)}))}return e.watch(()=>t.activeIndex,async i=>{const l=B(i);l!==u.value&&(s(),u.value=l,await e.nextTick(),U(l*x.value),J())}),e.watch(()=>[t.items.length,t.slidesPerView,t.gap],async()=>{const i=B(u.value);t.items.length===0?u.value!==0&&(u.value=0,k("update:activeIndex",0)):Q(i),await e.nextTick(),U(i*x.value),J(),t.autoplay&&t.items.length>0&&!z.value&&m()}),e.watch(()=>[t.hasMore,t.loading,t.loadMoreThreshold],async([i])=>{i||(K=-1),await e.nextTick(),J()}),e.watch(()=>t.autoplay,i=>{i&&!z.value?m():f()}),e.watch(()=>t.autoplayDelay,()=>{t.autoplay&&!z.value&&m()}),e.watch(()=>t.autoplayLoop,i=>{!t.autoplay||z.value||(!i&&u.value>=O.value?f():m())}),e.watch(()=>t.pauseOnHover,i=>{i&&z.value?f():!i&&t.autoplay&&m()}),e.onMounted(async()=>{A(),typeof ResizeObserver<"u"&&h.value&&(I=new ResizeObserver(A),I.observe(h.value)),await e.nextTick(),U(u.value*x.value),J(),t.autoplay&&m()}),e.onBeforeUnmount(()=>{I==null||I.disconnect(),f()}),P({next:j,previous:oe,scrollToIndex:X,startAutoplay:m,stopAutoplay:f}),(i,l)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"viewport",ref:h,class:"vue-virtual-carousel",style:e.normalizeStyle(v.value),role:"region","aria-roledescription":"carousel","aria-label":r.ariaLabel,tabindex:"0",onScrollPassive:$,onPointerdown:s,onWheelPassive:s,onKeydown:V,onMouseenter:n,onMouseleave:d},[r.items.length?(e.openBlock(),e.createElementBlock("div",Ve,[C.value>0?(e.openBlock(),e.createElementBlock("div",{key:0,class:"vue-virtual-carousel__spacer",style:e.normalizeStyle({flexBasis:`${C.value}px`}),"aria-hidden":"true"},null,4)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(R.value,({item:a,index:o})=>(e.openBlock(),e.createElementBlock("div",{key:e.unref(y)(a,o),class:"vue-virtual-carousel__item",style:e.normalizeStyle({flexBasis:`${E.value}px`,marginRight:o<r.items.length-1?`${S.value}px`:"0px"}),role:"listitem","aria-roledescription":"slide","aria-label":`${o+1} of ${r.items.length}`,"aria-current":o===u.value?"true":void 0},[e.renderSlot(i.$slots,"default",{item:a,index:o,active:o===u.value,visible:G(o)})],12,He))),128)),c.value>0?(e.openBlock(),e.createElementBlock("div",{key:1,class:"vue-virtual-carousel__spacer",style:e.normalizeStyle({flexBasis:`${c.value}px`}),"aria-hidden":"true"},null,4)):e.createCommentVNode("",!0)])):(e.openBlock(),e.createElementBlock("div",Le,[e.renderSlot(i.$slots,"empty")]))],44,$e))}}),Ce=["aria-label"],Ke=["aria-posinset","aria-setsize"],pe=e.defineComponent({name:"VirtualScroll",__name:"VirtualScroll",props:{items:{},itemSize:{},height:{default:400},overscan:{default:3},itemKey:{default:void 0},ariaLabel:{default:"Virtual list"},hasMore:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},loadingItemSize:{default:void 0},loadMoreThreshold:{default:200},pullToRefresh:{type:Boolean,default:!1},refreshing:{type:Boolean,default:!1},pullRefreshThreshold:{default:64}},emits:["scroll","loadMore","refresh"],setup(r,{expose:P,emit:b}){const t=r,k=b,{pulling:h,pullDistance:T,pullOffset:u,pullProgress:I,refreshMessage:K,refreshThreshold:L,handleTouchStart:H,handleTouchMove:z,handleTouchEnd:y,handleTouchCancel:w}=de({enabled:()=>t.pullToRefresh,refreshing:()=>t.refreshing,threshold:()=>t.pullRefreshThreshold,onRefresh:()=>k("refresh")}),M=e.ref(),S=e.ref(0),D=e.ref(0);let N,W=-1;const Z=se(),{getItemKey:E}=ne({componentName:"VirtualScroll",items:()=>t.items,itemKey:()=>t.itemKey}),x=e.computed(()=>Math.max(1,t.itemSize)),O=e.computed(()=>Math.max(0,Math.floor(t.overscan))),F=e.computed(()=>t.items.length*x.value),_=e.computed(()=>Math.max(1,t.loadingItemSize??x.value)),R=e.computed(()=>F.value+(t.loading?_.value:0)),te=e.computed(()=>D.value>0?D.value:typeof t.height=="number"?t.height:0),C=e.computed(()=>Math.max(0,Math.floor(S.value/x.value)-O.value)),c=e.computed(()=>{const m=Math.ceil((S.value+te.value)/x.value);return Math.min(t.items.length,m+O.value)}),v=e.computed(()=>t.items.slice(C.value,c.value).map((m,f)=>({item:m,index:C.value+f}))),B=e.computed(()=>({height:ie(t.height)})),G=e.computed(()=>({transform:`translateY(${C.value*x.value}px)`}));function J(){var m;D.value=((m=M.value)==null?void 0:m.clientHeight)??0,Z(M.value,t.height),e.nextTick(U)}function Q(m){S.value=m.currentTarget.scrollTop,k("scroll",{scrollTop:S.value,startIndex:C.value,endIndex:c.value}),U()}function U(){const m=M.value;if(!m||!t.hasMore||t.loading||W===t.items.length)return;const f=Math.max(0,t.loadMoreThreshold);R.value-m.scrollTop-m.clientHeight<=f&&(W=t.items.length,k("loadMore"))}function X(m,f={}){const n=M.value;if(!n)return;const d=Math.max(0,R.value-n.clientHeight),s=Math.min(Math.max(0,Number.isFinite(m)?m:0),d),$=f.behavior??"auto";$==="auto"&&(S.value=s),n.scrollTo({...f,top:s,behavior:$})}function j(m,f={}){const n=M.value;if(!n||t.items.length===0)return;const d=Math.min(t.items.length-1,Math.max(0,Math.floor(m))),{align:s="start",...$}=f;let V=d*x.value;s==="center"?V-=(n.clientHeight-x.value)/2:s==="end"&&(V-=n.clientHeight-x.value),n.scrollTo({...$,top:Math.max(0,Math.min(V,R.value-n.clientHeight))})}function oe(m="auto"){var f;(f=M.value)==null||f.scrollTo({top:0,behavior:m})}return e.watch(()=>[t.items.length,t.itemSize],async()=>{await e.nextTick();const m=M.value;if(!m)return;const f=Math.max(0,R.value-m.clientHeight);m.scrollTop>f&&(m.scrollTop=f,S.value=f),U()}),e.watch(()=>[t.hasMore,t.loading],async([m])=>{m||(W=-1),await e.nextTick(),U()}),e.onMounted(()=>{J(),typeof ResizeObserver<"u"&&M.value&&(N=new ResizeObserver(J),N.observe(M.value)),e.nextTick(U)}),e.onBeforeUnmount(()=>{N==null||N.disconnect()}),P({scrollTo:X,scrollToIndex:j,scrollToTop:oe}),(m,f)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"viewport",ref:M,class:e.normalizeClass(["vue-virtual-scroll",{"vue-virtual-scroll--pulling":e.unref(h)}]),style:e.normalizeStyle(B.value),role:"list","aria-label":r.ariaLabel,tabindex:"0",onScrollPassive:Q,onTouchstartPassive:f[0]||(f[0]=(...n)=>e.unref(H)&&e.unref(H)(...n)),onTouchmove:f[1]||(f[1]=(...n)=>e.unref(z)&&e.unref(z)(...n)),onTouchend:f[2]||(f[2]=(...n)=>e.unref(y)&&e.unref(y)(...n)),onTouchcancel:f[3]||(f[3]=(...n)=>e.unref(w)&&e.unref(w)(...n))},[r.pullToRefresh||r.refreshing?(e.openBlock(),e.createElementBlock("div",{key:0,class:"vue-virtual-scroll__refresh",style:e.normalizeStyle({height:`${e.unref(L)}px`,transform:`translateY(${e.unref(u)-e.unref(L)}px)`}),role:"status","aria-live":"polite"},[e.renderSlot(m.$slots,"refresh",{pullDistance:e.unref(T),progress:e.unref(I),refreshing:r.refreshing},()=>[e.createTextVNode(e.toDisplayString(e.unref(K)),1)])],4)):e.createCommentVNode("",!0),r.items.length||r.loading?(e.openBlock(),e.createElementBlock("div",{key:1,class:"vue-virtual-scroll__spacer",style:e.normalizeStyle({height:`${R.value}px`,transform:`translateY(${e.unref(u)}px)`})},[e.createElementVNode("div",{class:"vue-virtual-scroll__content",style:e.normalizeStyle(G.value)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(v.value,({item:n,index:d})=>(e.openBlock(),e.createElementBlock("div",{key:e.unref(E)(n,d),class:"vue-virtual-scroll__item",style:e.normalizeStyle({height:`${x.value}px`}),role:"listitem","aria-posinset":d+1,"aria-setsize":r.items.length},[e.renderSlot(m.$slots,"default",{item:n,index:d})],12,Ke))),128))],4),r.loading?(e.openBlock(),e.createElementBlock("div",{key:0,class:"vue-virtual-scroll__loading",style:e.normalizeStyle({height:`${_.value}px`,transform:`translateY(${F.value}px)`}),role:"status","aria-live":"polite"},[e.renderSlot(m.$slots,"loading",{},()=>[f[4]||(f[4]=e.createTextVNode("Loading more…",-1))])],4)):e.createCommentVNode("",!0)],4)):(e.openBlock(),e.createElementBlock("div",{key:2,class:"vue-virtual-scroll__empty",style:e.normalizeStyle({transform:`translateY(${e.unref(u)}px)`})},[e.renderSlot(m.$slots,"empty")],4))],46,Ce))}}),Ne=["aria-label"],De=["aria-posinset","aria-setsize"],ge=e.defineComponent({name:"WindowDynamicVirtualScroll",__name:"WindowDynamicVirtualScroll",props:{items:{},estimatedItemSize:{default:48},overscan:{default:3},itemKey:{default:void 0},ariaLabel:{default:"Window dynamic virtual list"},hasMore:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},loadingItemSize:{default:void 0},loadMoreThreshold:{default:200},pullToRefresh:{type:Boolean,default:!1},refreshing:{type:Boolean,default:!1},pullRefreshThreshold:{default:64}},emits:["scroll","loadMore","refresh"],setup(r,{expose:P,emit:b}){const t=r,k=b,h=e.ref(),T=e.ref(0),u=e.ref(0),I=e.ref(0),K=e.ref(0),L=new Map,H=new Map;let z,y,w=-1;const{getItemKey:M}=ne({componentName:"WindowDynamicVirtualScroll",items:()=>t.items,itemKey:()=>t.itemKey}),{pulling:S,pullDistance:D,pullOffset:N,pullProgress:W,refreshMessage:Z,refreshThreshold:E,handleTouchStart:x,handleTouchMove:O,handleTouchEnd:F,handleTouchCancel:_}=de({enabled:()=>t.pullToRefresh,refreshing:()=>t.refreshing,threshold:()=>t.pullRefreshThreshold,onRefresh:()=>k("refresh"),scrollTop:()=>typeof window>"u"?0:Math.max(0,window.scrollY)}),R=e.computed(()=>Math.max(1,t.estimatedItemSize)),te=e.computed(()=>Math.max(1,t.loadingItemSize??R.value)),C=e.computed(()=>Math.max(0,Math.floor(t.overscan))),c=e.computed(()=>{K.value;const l=new Array(t.items.length+1),a=new Array(t.items.length);l[0]=0;for(let o=0;o<t.items.length;o+=1){const g=M(t.items[o],o),p=L.get(g)??R.value;a[o]=p,l[o+1]=l[o]+p}return{offsets:l,sizes:a,total:l[t.items.length]??0}}),v=e.computed(()=>c.value.total+(t.loading?te.value:0)),B=e.computed(()=>{const l=new Map;return t.items.forEach((a,o)=>{l.set(M(a,o),o)}),l}),G=e.computed(()=>Math.max(0,T.value-I.value));function J(l){if(t.items.length===0)return 0;const a=c.value.offsets;let o=0,g=t.items.length;for(;o<g;){const p=Math.floor((o+g)/2);a[p+1]<=l?o=p+1:g=p}return Math.min(o,t.items.length-1)}const Q=e.computed(()=>Math.max(0,J(G.value)-C.value)),U=e.computed(()=>{if(t.items.length===0)return 0;const l=T.value+u.value-I.value,a=Math.max(R.value,l),o=J(a)+1;return Math.min(t.items.length,o+C.value)}),X=e.computed(()=>t.items.slice(Q.value,U.value).map((l,a)=>{const o=Q.value+a;return{item:l,index:o,key:M(l,o),top:c.value.offsets[o]}}));function j(){typeof window>"u"||(T.value=Math.max(0,window.scrollY),u.value=window.innerHeight,h.value&&(I.value=h.value.getBoundingClientRect().top+T.value))}function oe(){k("scroll",{scrollTop:G.value,startIndex:Q.value,endIndex:U.value})}function m(){j(),oe(),f()}function f(){if(typeof window>"u"||!t.hasMore||t.loading||w===t.items.length)return;const l=Math.max(0,t.loadMoreThreshold),a=I.value+v.value,o=T.value+u.value;a-o<=l&&(w=t.items.length,k("loadMore"))}function n(l){const a=l.borderBoxSize;if(a){const o=Array.isArray(a)?a[0]:a;if(o!=null&&o.blockSize)return o.blockSize}return l.contentRect.height}function d(l){const a=c.value;let o=0,g=!1;for(const p of l){const q=p.target,Y=H.get(q),ee=n(p);if(Y===void 0||ee<=0)continue;const le=L.get(Y)??R.value;if(Math.abs(le-ee)<.5)continue;const ae=B.value.get(Y);ae!==void 0&&a.offsets[ae+1]<=G.value&&(o+=ee-le),L.set(Y,ee),g=!0}g&&(K.value+=1,e.nextTick(()=>{if(o!==0&&typeof window<"u"){const p=Math.max(0,T.value+o);T.value=p,window.scrollTo({top:p,behavior:"auto"})}j(),f()}))}function s(l,a){l instanceof HTMLElement&&(H.set(l,a),y==null||y.observe(l))}function $(){for(const[l]of H)l.isConnected||(y==null||y.unobserve(l),H.delete(l))}function V(l,a={}){if(typeof window>"u")return;j();const o=Math.max(0,v.value-u.value),g=Math.min(Math.max(0,Number.isFinite(l)?l:0),o),p=Math.max(0,I.value+g),q=a.behavior??"auto";q==="auto"&&(T.value=p),window.scrollTo({...a,top:p,behavior:q})}function A(l,a={}){if(typeof window>"u"||t.items.length===0)return;j();const o=Math.min(t.items.length-1,Math.max(0,Math.floor(l))),{align:g="start",...p}=a,q=c.value.sizes[o];let Y=I.value+c.value.offsets[o];g==="center"?Y-=(u.value-q)/2:g==="end"&&(Y-=u.value-q);const ee=Math.max(I.value,I.value+v.value-u.value),le=Math.max(0,Math.min(Y,ee)),ae=p.behavior??"auto",ue=Math.max(u.value*3,R.value*10),re=ae==="smooth"&&Math.abs(le-T.value)>ue?"auto":ae;re==="auto"&&(T.value=le),window.scrollTo({...p,top:le,behavior:re})}function i(l="auto"){typeof window>"u"||(j(),window.scrollTo({top:Math.max(0,I.value),behavior:l}))}return e.watch(()=>t.itemKey,()=>{L.clear(),K.value+=1}),e.watch(()=>t.items.length,async()=>{const l=new Set(t.items.map((a,o)=>M(a,o)));for(const a of L.keys())l.has(a)||L.delete(a);K.value+=1,await e.nextTick(),j(),f()}),e.watch(()=>[t.hasMore,t.loading],async([l])=>{l||(w=-1),await e.nextTick(),j(),f()}),e.onMounted(()=>{if(j(),window.addEventListener("scroll",m,{passive:!0}),window.addEventListener("resize",m,{passive:!0}),typeof ResizeObserver<"u"){z=new ResizeObserver(()=>{j(),f()}),y=new ResizeObserver(d),h.value&&z.observe(h.value);for(const[l]of H)y.observe(l)}e.nextTick(f)}),e.onUpdated($),e.onBeforeUnmount(()=>{window.removeEventListener("scroll",m),window.removeEventListener("resize",m),z==null||z.disconnect(),y==null||y.disconnect(),H.clear()}),P({scrollTo:V,scrollToIndex:A,scrollToTop:i}),(l,a)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"root",ref:h,class:e.normalizeClass(["vue-window-dynamic-virtual-scroll",{"vue-window-dynamic-virtual-scroll--pulling":e.unref(S)}]),role:"list","aria-label":r.ariaLabel,onTouchstartPassive:a[0]||(a[0]=(...o)=>e.unref(x)&&e.unref(x)(...o)),onTouchmove:a[1]||(a[1]=(...o)=>e.unref(O)&&e.unref(O)(...o)),onTouchend:a[2]||(a[2]=(...o)=>e.unref(F)&&e.unref(F)(...o)),onTouchcancel:a[3]||(a[3]=(...o)=>e.unref(_)&&e.unref(_)(...o))},[r.pullToRefresh||r.refreshing?(e.openBlock(),e.createElementBlock("div",{key:0,class:"vue-window-dynamic-virtual-scroll__refresh",style:e.normalizeStyle({height:`${e.unref(E)}px`,transform:`translateY(${e.unref(N)-e.unref(E)}px)`}),role:"status","aria-live":"polite"},[e.renderSlot(l.$slots,"refresh",{pullDistance:e.unref(D),progress:e.unref(W),refreshing:r.refreshing},()=>[e.createTextVNode(e.toDisplayString(e.unref(Z)),1)])],4)):e.createCommentVNode("",!0),r.items.length||r.loading?(e.openBlock(),e.createElementBlock("div",{key:1,class:"vue-window-dynamic-virtual-scroll__spacer",style:e.normalizeStyle({height:`${v.value}px`,transform:`translateY(${e.unref(N)}px)`})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(X.value,({item:o,index:g,key:p,top:q})=>(e.openBlock(),e.createElementBlock("div",{key:p,ref_for:!0,ref:Y=>s(Y,p),class:"vue-window-dynamic-virtual-scroll__item",style:e.normalizeStyle({transform:`translateY(${q}px)`}),role:"listitem","aria-posinset":g+1,"aria-setsize":r.items.length},[e.renderSlot(l.$slots,"default",{item:o,index:g})],12,De))),128)),r.loading?(e.openBlock(),e.createElementBlock("div",{key:0,class:"vue-window-dynamic-virtual-scroll__loading",style:e.normalizeStyle({height:`${te.value}px`,transform:`translateY(${c.value.total}px)`}),role:"status","aria-live":"polite"},[e.renderSlot(l.$slots,"loading",{},()=>[a[4]||(a[4]=e.createTextVNode("Loading more…",-1))])],4)):e.createCommentVNode("",!0)],4)):(e.openBlock(),e.createElementBlock("div",{key:2,class:"vue-window-dynamic-virtual-scroll__empty",style:e.normalizeStyle({transform:`translateY(${e.unref(N)}px)`})},[e.renderSlot(l.$slots,"empty")],4))],42,Ne))}}),ye=me,xe={install(r){r.component("ChatVirtualScroll",fe),r.component("DynamicVirtualScroll",me),r.component("ShortMediaFeed",he),r.component("VirtualCarousel",ve),r.component("VirtualList",ye),r.component("VirtualScroll",pe),r.component("WindowDynamicVirtualScroll",ge)}};exports.ChatVirtualScroll=fe;exports.DynamicVirtualScroll=me;exports.ShortMediaFeed=he;exports.VirtualCarousel=ve;exports.VirtualList=ye;exports.VirtualScroll=pe;exports.VueVirtualScroll=xe;exports.WindowDynamicVirtualScroll=ge;exports.default=xe;
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue");function Ee(a){return typeof a=="string"||typeof a=="number"||typeof a=="symbol"}function xe(a,_){const L=a[_];return Ee(L)?L:void 0}function $e(a){return xe(a,"id")??xe(a,"key")}function me(a){function _(t,S){const m=a.itemKey();if(typeof m=="function")return m(t,S);if(t!==null&&typeof t=="object"){if(m!==void 0){const i=xe(t,m);if(i!==void 0)return i}const y=$e(t);if(y!==void 0)return y}return S}function L(){}return e.watch(()=>[a.itemKey(),a.items()],L,{immediate:!0}),{getItemKey:_}}function pe(a){return a==="fill"?"100%":typeof a=="number"?`${a}px`:a}function ge(a){return(_,L)=>{typeof L=="string"&&(L==="fill"||L.trim().endsWith("%"))}}const Ve=["aria-label"],Le={key:0,class:"vue-chat-virtual-scroll__loading-older",role:"status","aria-live":"polite"},Ce=["aria-posinset","aria-setsize"],Me=e.defineComponent({name:"ChatVirtualScroll",__name:"ChatVirtualScroll",props:{items:{},estimatedItemSize:{default:48},height:{default:400},overscan:{default:5},itemKey:{default:void 0},ariaLabel:{default:"Chat messages"},stickToBottom:{type:Boolean,default:!0},bottomThreshold:{default:80},initialScroll:{default:"bottom"},hasOlder:{type:Boolean,default:!1},loadingOlder:{type:Boolean,default:!1},loadOlderThreshold:{default:120}},emits:["scroll","loadOlder","bottomChange"],setup(a,{expose:_,emit:L}){const t=a,S=L,m=e.ref(),y=e.ref(0),i=e.ref(0),I=e.ref(0),D=e.ref(!0),N=new Map,P=new Map;let W,p,b=-1,M=!1;const T=ge(),{getItemKey:R}=me({componentName:"ChatVirtualScroll",items:()=>t.items,itemKey:()=>t.itemKey}),O=e.computed(()=>Math.max(1,t.estimatedItemSize)),F=e.computed(()=>Math.max(0,Math.floor(t.overscan))),j=e.computed(()=>i.value>0?i.value:typeof t.height=="number"?Math.max(0,t.height):O.value),K=e.computed(()=>{I.value;const o=new Array(t.items.length+1),s=new Array(t.items.length);o[0]=0;for(let u=0;u<t.items.length;u+=1){const E=R(t.items[u],u),H=N.get(E)??O.value;s[u]=H,o[u+1]=o[u]+H}return{offsets:o,sizes:s,total:o[t.items.length]??0}}),B=e.computed(()=>{const o=new Map;return t.items.forEach((s,u)=>{o.set(R(s,u),u)}),o});function Y(o){if(t.items.length===0)return 0;const s=K.value.offsets;let u=0,E=t.items.length;for(;u<E;){const H=Math.floor((u+E)/2);s[H+1]<=o?u=H+1:E=H}return Math.min(u,t.items.length-1)}const V=e.computed(()=>Math.max(0,Y(y.value)-F.value)),U=e.computed(()=>{if(t.items.length===0)return 0;const o=Y(y.value+j.value)+1;return Math.min(t.items.length,o+F.value)}),Z=e.computed(()=>t.items.slice(V.value,U.value).map((o,s)=>{const u=V.value+s;return{item:o,index:u,key:R(o,u),top:K.value.offsets[u]}})),te=e.computed(()=>({height:pe(t.height)}));function A(){const o=m.value;if(!o)return;const u=Math.max(0,K.value.total-o.scrollTop-o.clientHeight)<=Math.max(0,t.bottomThreshold);u!==D.value&&(D.value=u,M&&S("bottomChange",u))}function v(){var o;i.value=((o=m.value)==null?void 0:o.clientHeight)??0,T(m.value,t.height),e.nextTick(()=>{A(),C()})}function h(o){y.value=o.currentTarget.scrollTop,A(),S("scroll",{scrollTop:y.value,startIndex:V.value,endIndex:U.value}),C()}function C(){const o=m.value;!M||!o||!t.hasOlder||t.loadingOlder||b===t.items.length||o.scrollTop<=Math.max(0,t.loadOlderThreshold)&&(b=t.items.length,S("loadOlder"))}function X(o){const s=o.borderBoxSize;if(s){const u=Array.isArray(s)?s[0]:s;if(u!=null&&u.blockSize)return u.blockSize}return o.contentRect.height}function q(o){const s=K.value,u=D.value&&t.stickToBottom;let E=0,H=!1;for(const w of o){const $=w.target,r=P.get($),l=X(w);if(r===void 0||l<=0)continue;const n=N.get(r)??O.value;if(Math.abs(n-l)<.5)continue;const d=B.value.get(r);d!==void 0&&s.offsets[d+1]<=y.value&&(E+=l-n),N.set(r,l),H=!0}H&&(I.value+=1,e.nextTick(()=>{const w=m.value;w&&(u?f("auto"):E!==0&&(w.scrollTop+=E,y.value=w.scrollTop,A()))}))}function ae(o,s){o instanceof HTMLElement&&(P.set(o,s),p==null||p.observe(o))}function J(){for(const[o]of P)o.isConnected||(p==null||p.unobserve(o),P.delete(o))}function Q(o,s={}){const u=m.value;if(!u)return;const E=Math.max(0,K.value.total-u.clientHeight),H=Math.min(Math.max(0,Number.isFinite(o)?o:0),E),w=s.behavior??"auto";w==="auto"&&(y.value=H),u.scrollTo({...s,top:H,behavior:w}),e.nextTick(A)}function ee(o,s={}){const u=m.value;if(!u||t.items.length===0)return;const E=Math.min(t.items.length-1,Math.max(0,Math.floor(o))),{align:H="start",...w}=s,$=K.value.sizes[E];let r=K.value.offsets[E];H==="center"?r-=(u.clientHeight-$)/2:H==="end"&&(r-=u.clientHeight-$);const l=Math.max(0,Math.min(r,K.value.total-u.clientHeight)),n=w.behavior??"auto";n==="auto"&&(y.value=l),u.scrollTo({...w,top:l,behavior:n}),e.nextTick(A)}function oe(o="auto"){const s=m.value;s&&(o==="auto"&&(y.value=0),s.scrollTo({top:0,behavior:o}),e.nextTick(A))}function f(o="auto"){const s=m.value;if(!s)return;const u=Math.max(0,K.value.total-s.clientHeight);o==="auto"?(s.scrollTop=u,y.value=u):s.scrollTo({top:u,behavior:o}),e.nextTick(A)}let k=t.items.map((o,s)=>R(o,s));return e.watch(()=>t.items.map((o,s)=>R(o,s)),async o=>{const s=k;k=o;const u=m.value,E=(u==null?void 0:u.scrollTop)??0,H=D.value&&t.stickToBottom,w=s[0],$=w===void 0?0:o.indexOf(w),r=$>0?o.slice(0,$).reduce((n,d)=>n+(N.get(d)??O.value),0):0,l=new Set(o);for(const n of N.keys())l.has(n)||N.delete(n);I.value+=1,await e.nextTick(),u&&(r>0?(u.scrollTop=E+r,y.value=u.scrollTop):o.length>s.length&&H&&f("auto"),A(),C())}),e.watch(()=>[t.hasOlder,t.loadingOlder],async([o])=>{o||(b=-1),await e.nextTick(),C()}),e.onMounted(()=>{if(v(),typeof ResizeObserver<"u"){W=new ResizeObserver(v),p=new ResizeObserver(q),m.value&&W.observe(m.value);for(const[o]of P)p.observe(o)}e.nextTick(()=>{t.initialScroll==="bottom"&&f("auto"),M=!0,A(),C()})}),e.onUpdated(J),e.onBeforeUnmount(()=>{W&&(W.disconnect(),W=void 0),p&&(p.disconnect(),p=void 0),P.clear()}),_({isAtBottom:D,scrollTo:Q,scrollToIndex:ee,scrollToTop:oe,scrollToBottom:f}),(o,s)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"viewport",ref:m,class:"vue-chat-virtual-scroll",style:e.normalizeStyle(te.value),role:"log","aria-label":a.ariaLabel,"aria-live":"polite",tabindex:"0",onScrollPassive:h},[a.loadingOlder?(e.openBlock(),e.createElementBlock("div",Le,[e.createElementVNode("div",null,[e.renderSlot(o.$slots,"loadingOlder",{},()=>[s[0]||(s[0]=e.createTextVNode("Loading older messages…",-1))])])])):e.createCommentVNode("",!0),a.items.length?(e.openBlock(),e.createElementBlock("div",{key:1,class:"vue-chat-virtual-scroll__spacer",style:e.normalizeStyle({height:`${K.value.total}px`})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(Z.value,({item:u,index:E,key:H,top:w})=>(e.openBlock(),e.createElementBlock("div",{key:H,ref_for:!0,ref:$=>ae($,H),class:"vue-chat-virtual-scroll__item",style:e.normalizeStyle({transform:`translateY(${w}px)`}),role:"article","aria-posinset":E+1,"aria-setsize":a.items.length},[e.renderSlot(o.$slots,"default",{item:u,index:E})],12,Ce))),128))],4)):e.renderSlot(o.$slots,"empty",{},void 0,void 0,2)],44,Ve))}});function ye(a){const _=e.ref(),L=e.ref(0),t=e.ref(!1),S=e.ref(!1),m=e.computed(()=>Math.max(1,a.threshold())),y=e.computed(()=>a.refreshing()||S.value?m.value:L.value),i=e.computed(()=>Math.min(1,L.value/m.value)),I=e.computed(()=>a.refreshing()||S.value?"Refreshing…":i.value>=1?"Release to refresh":"Pull to refresh");function D(){_.value=void 0,t.value=!1,L.value=0}function N(p){var T;const b=p.currentTarget,M=((T=a.scrollTop)==null?void 0:T.call(a))??b.scrollTop;!a.enabled()||a.refreshing()||M>0||p.touches.length!==1||(_.value=p.touches[0].clientY,t.value=!0)}function P(p){var R;if(_.value===void 0||!t.value)return;const b=p.currentTarget;if((((R=a.scrollTop)==null?void 0:R.call(a))??b.scrollTop)>0||p.touches.length!==1){D();return}const T=p.touches[0].clientY-_.value;if(T<=0){L.value=0;return}p.preventDefault(),L.value=Math.min(T*.5,m.value*2)}function W(){if(_.value===void 0)return;const p=L.value>=m.value&&a.enabled()&&!a.refreshing();if(_.value=void 0,t.value=!1,!p){L.value=0;return}L.value=m.value,S.value=!0,a.onRefresh(),e.nextTick(()=>{a.refreshing()||(S.value=!1,L.value=0)})}return e.watch(()=>a.refreshing(),(p,b)=>{p?(S.value=!1,L.value=m.value):b&&(S.value=!1,L.value=0)}),{pulling:t,pullDistance:L,pullOffset:y,pullProgress:i,refreshMessage:I,refreshThreshold:m,handleTouchStart:N,handleTouchMove:P,handleTouchEnd:W,handleTouchCancel:D}}const He=["aria-label"],Re=["aria-posinset","aria-setsize"],we=e.defineComponent({name:"DynamicVirtualScroll",__name:"DynamicVirtualScroll",props:{items:{},estimatedItemSize:{default:48},height:{default:400},overscan:{default:3},itemKey:{default:void 0},ariaLabel:{default:"Dynamic virtual list"},hasMore:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},loadingItemSize:{default:void 0},loadMoreThreshold:{default:200},pullToRefresh:{type:Boolean,default:!1},refreshing:{type:Boolean,default:!1},pullRefreshThreshold:{default:64}},emits:["scroll","loadMore","refresh"],setup(a,{expose:_,emit:L}){const t=a,S=L,{pulling:m,pullDistance:y,pullOffset:i,pullProgress:I,refreshMessage:D,refreshThreshold:N,handleTouchStart:P,handleTouchMove:W,handleTouchEnd:p,handleTouchCancel:b}=ye({enabled:()=>t.pullToRefresh,refreshing:()=>t.refreshing,threshold:()=>t.pullRefreshThreshold,onRefresh:()=>S("refresh")}),M=e.ref(),T=e.ref(0),R=e.ref(0),O=e.ref(0),F=new Map,j=new Map;let K,B,Y=-1;const V=ge(),{getItemKey:U}=me({componentName:"DynamicVirtualScroll",items:()=>t.items,itemKey:()=>t.itemKey}),Z=e.computed(()=>Math.max(1,t.estimatedItemSize)),te=e.computed(()=>Math.max(1,t.loadingItemSize??Z.value)),A=e.computed(()=>Math.max(0,Math.floor(t.overscan))),v=e.computed(()=>R.value>0?R.value:typeof t.height=="number"?Math.max(0,t.height):Z.value),h=e.computed(()=>{O.value;const r=new Array(t.items.length+1),l=new Array(t.items.length);r[0]=0;for(let n=0;n<t.items.length;n+=1){const d=U(t.items[n],n),z=F.get(d)??Z.value;l[n]=z,r[n+1]=r[n]+z}return{offsets:r,sizes:l,total:r[t.items.length]??0}}),C=e.computed(()=>h.value.total+(t.loading?te.value:0)),X=e.computed(()=>{const r=new Map;return t.items.forEach((l,n)=>{r.set(U(l,n),n)}),r});function q(r){if(t.items.length===0)return 0;const l=h.value.offsets;let n=0,d=t.items.length;for(;n<d;){const z=Math.floor((n+d)/2);l[z+1]<=r?n=z+1:d=z}return Math.min(n,t.items.length-1)}const ae=e.computed(()=>Math.max(0,q(T.value)-A.value)),J=e.computed(()=>{if(t.items.length===0)return 0;const r=q(T.value+v.value)+1;return Math.min(t.items.length,r+A.value)}),Q=e.computed(()=>t.items.slice(ae.value,J.value).map((r,l)=>{const n=ae.value+l;return{item:r,index:n,key:U(r,n),top:h.value.offsets[n]}})),ee=e.computed(()=>({height:pe(t.height)}));function oe(){var r;R.value=((r=M.value)==null?void 0:r.clientHeight)??0,V(M.value,t.height),e.nextTick(k)}function f(r){T.value=r.currentTarget.scrollTop,S("scroll",{scrollTop:T.value,startIndex:ae.value,endIndex:J.value}),k()}function k(){const r=M.value;if(!r||!t.hasMore||t.loading||Y===t.items.length)return;const l=Math.max(0,t.loadMoreThreshold);C.value-r.scrollTop-r.clientHeight<=l&&(Y=t.items.length,S("loadMore"))}function o(r){const l=r.borderBoxSize;if(l){const n=Array.isArray(l)?l[0]:l;if(n!=null&&n.blockSize)return n.blockSize}return r.contentRect.height}function s(r){const l=h.value;let n=0,d=!1;for(const z of r){const re=z.target,ne=j.get(re),ie=o(z);if(ne===void 0||ie<=0)continue;const ce=F.get(ne)??Z.value;if(Math.abs(ce-ie)<.5)continue;const de=X.value.get(ne);de!==void 0&&l.offsets[de+1]<=T.value&&(n+=ie-ce),F.set(ne,ie),d=!0}d&&(O.value+=1,e.nextTick(k),n!==0&&e.nextTick(()=>{const z=M.value;z&&(z.scrollTop+=n,T.value=z.scrollTop)}))}function u(r,l){r instanceof HTMLElement&&(j.set(r,l),B==null||B.observe(r))}function E(){for(const[r]of j)r.isConnected||(B==null||B.unobserve(r),j.delete(r))}function H(r,l={}){const n=M.value;if(!n)return;const d=Math.max(0,C.value-n.clientHeight),z=Math.min(Math.max(0,Number.isFinite(r)?r:0),d),re=l.behavior??"auto";re==="auto"&&(T.value=z),n.scrollTo({...l,top:z,behavior:re})}function w(r,l={}){const n=M.value;if(!n||t.items.length===0)return;const d=Math.min(t.items.length-1,Math.max(0,Math.floor(r))),{align:z="start",...re}=l;let ne=h.value.offsets[d];const ie=h.value.sizes[d];z==="center"?ne-=(n.clientHeight-ie)/2:z==="end"&&(ne-=n.clientHeight-ie);const ce=Math.max(0,Math.min(ne,C.value-n.clientHeight)),de=re.behavior??"auto";de==="auto"&&(T.value=ce),n.scrollTo({...re,top:ce,behavior:de})}function $(r="auto"){var l;(l=M.value)==null||l.scrollTo({top:0,behavior:r})}return e.watch(()=>t.itemKey,()=>{F.clear(),O.value+=1}),e.watch(()=>t.items.length,async()=>{const r=new Set(t.items.map((d,z)=>U(d,z)));for(const d of F.keys())r.has(d)||F.delete(d);O.value+=1,await e.nextTick();const l=M.value;if(!l)return;const n=Math.max(0,C.value-l.clientHeight);l.scrollTop>n&&(l.scrollTop=n,T.value=n),k()}),e.watch(()=>[t.hasMore,t.loading],async([r])=>{r||(Y=-1),await e.nextTick(),k()}),e.onMounted(()=>{if(oe(),typeof ResizeObserver<"u"){K=new ResizeObserver(oe),B=new ResizeObserver(s),M.value&&K.observe(M.value);for(const[r]of j)B.observe(r)}e.nextTick(k)}),e.onUpdated(E),e.onBeforeUnmount(()=>{K&&(K.disconnect(),K=void 0),B&&(B.disconnect(),B=void 0),j.clear()}),_({scrollTo:H,scrollToIndex:w,scrollToTop:$}),(r,l)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"viewport",ref:M,class:e.normalizeClass(["vue-dynamic-virtual-scroll",{"vue-dynamic-virtual-scroll--pulling":e.unref(m)}]),style:e.normalizeStyle(ee.value),role:"list","aria-label":a.ariaLabel,tabindex:"0",onScrollPassive:f,onTouchstartPassive:l[0]||(l[0]=(...n)=>e.unref(P)&&e.unref(P)(...n)),onTouchmove:l[1]||(l[1]=(...n)=>e.unref(W)&&e.unref(W)(...n)),onTouchend:l[2]||(l[2]=(...n)=>e.unref(p)&&e.unref(p)(...n)),onTouchcancel:l[3]||(l[3]=(...n)=>e.unref(b)&&e.unref(b)(...n))},[a.pullToRefresh||a.refreshing?(e.openBlock(),e.createElementBlock("div",{key:0,class:"vue-dynamic-virtual-scroll__refresh",style:e.normalizeStyle({height:`${e.unref(N)}px`,transform:`translateY(${e.unref(i)-e.unref(N)}px)`}),role:"status","aria-live":"polite"},[e.renderSlot(r.$slots,"refresh",{pullDistance:e.unref(y),progress:e.unref(I),refreshing:a.refreshing},()=>[e.createTextVNode(e.toDisplayString(e.unref(D)),1)])],4)):e.createCommentVNode("",!0),a.items.length||a.loading?(e.openBlock(),e.createElementBlock("div",{key:1,class:"vue-dynamic-virtual-scroll__spacer",style:e.normalizeStyle({height:`${C.value}px`,transform:`translateY(${e.unref(i)}px)`})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(Q.value,({item:n,index:d,key:z,top:re})=>(e.openBlock(),e.createElementBlock("div",{key:z,ref_for:!0,ref:ne=>u(ne,z),class:"vue-dynamic-virtual-scroll__item",style:e.normalizeStyle({transform:`translateY(${re}px)`}),role:"listitem","aria-posinset":d+1,"aria-setsize":a.items.length},[e.renderSlot(r.$slots,"default",{item:n,index:d})],12,Re))),128)),a.loading?(e.openBlock(),e.createElementBlock("div",{key:0,class:"vue-dynamic-virtual-scroll__loading",style:e.normalizeStyle({height:`${te.value}px`,transform:`translateY(${h.value.total}px)`}),role:"status","aria-live":"polite"},[e.renderSlot(r.$slots,"loading",{},()=>[l[4]||(l[4]=e.createTextVNode("Loading more…",-1))])],4)):e.createCommentVNode("",!0)],4)):(e.openBlock(),e.createElementBlock("div",{key:2,class:"vue-dynamic-virtual-scroll__empty",style:e.normalizeStyle({transform:`translateY(${e.unref(i)}px)`})},[e.renderSlot(r.$slots,"empty")],4))],46,He))}}),Oe=["aria-label"],Ne=["aria-current","aria-posinset","aria-setsize"],Ke={key:1,class:"vue-short-media-feed__empty"},Te=e.defineComponent({name:"ShortMediaFeed",__name:"ShortMediaFeed",props:{items:{},activeIndex:{default:0},buffer:{default:1},height:{default:"100dvh"},itemKey:{default:void 0},ariaLabel:{default:"Short media feed"},hasMore:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},loadMoreThreshold:{default:2}},emits:["update:activeIndex","change","reachStart","reachEnd","loadMore"],setup(a,{expose:_,emit:L}){const t=a,S=L,m=e.ref(),y=e.ref(0),i=e.ref(K(t.activeIndex));let I,D=-1;const N=ge(),{getItemKey:P}=me({componentName:"ShortMediaFeed",items:()=>t.items,itemKey:()=>t.itemKey}),W=e.computed(()=>Math.max(0,Math.floor(t.buffer))),p=e.computed(()=>Math.max(0,Math.floor(Number.isFinite(t.loadMoreThreshold)?t.loadMoreThreshold:0))),b=e.computed(()=>y.value>0?y.value:typeof t.height=="number"?Math.max(1,t.height):0),M=e.computed(()=>Math.max(0,i.value-W.value)),T=e.computed(()=>Math.min(t.items.length,i.value+W.value+1)),R=e.computed(()=>t.items.slice(M.value,T.value).map((v,h)=>({item:v,index:M.value+h}))),O=e.computed(()=>M.value*b.value),F=e.computed(()=>(t.items.length-T.value)*b.value),j=e.computed(()=>({height:pe(t.height)}));function K(v){return t.items.length===0?0:Math.min(t.items.length-1,Math.max(0,Math.floor(Number.isFinite(v)?v:0)))}function B(){if(!t.hasMore||t.loading||D===t.items.length)return;(t.items.length===0?0:t.items.length-1-i.value)<=p.value&&(D=t.items.length,S("loadMore"))}function Y(v){const h=K(v);h===i.value||t.items.length===0||(i.value=h,S("update:activeIndex",h),S("change",{index:h,item:t.items[h]}),h===0&&S("reachStart"),h===t.items.length-1&&S("reachEnd"),B())}function V(v,h={}){const C=m.value;C&&(typeof C.scrollTo=="function"?C.scrollTo({...h,top:v}):C.scrollTop=v)}function U(v,h={}){if(t.items.length===0)return;const C=K(v);Y(C),V(C*b.value,h)}function Z(v){if(b.value<=0)return;const h=v.currentTarget.scrollTop;Y(Math.round(h/b.value))}function te(v){let h;v.key==="ArrowDown"||v.key==="PageDown"?h=i.value+1:v.key==="ArrowUp"||v.key==="PageUp"?h=i.value-1:v.key==="Home"?h=0:v.key==="End"&&(h=t.items.length-1),h!==void 0&&(v.preventDefault(),U(h,{behavior:"smooth"}))}function A(){var h;const v=((h=m.value)==null?void 0:h.clientHeight)??0;N(m.value,t.height),!(v<=0||v===y.value)&&(y.value=v,e.nextTick(()=>{V(i.value*v)}))}return e.watch(()=>t.activeIndex,async v=>{const h=K(v);h!==i.value&&(i.value=h,await e.nextTick(),V(h*b.value),B())}),e.watch(()=>[t.hasMore,t.loading,t.loadMoreThreshold],async([v])=>{v||(D=-1),await e.nextTick(),B()}),e.watch(()=>t.items.length,async()=>{const v=K(i.value);t.items.length===0?i.value!==0&&(i.value=0,S("update:activeIndex",0)):Y(v),await e.nextTick(),V(v*b.value),B()}),e.onMounted(async()=>{A(),typeof ResizeObserver<"u"&&m.value&&(I=new ResizeObserver(A),I.observe(m.value)),await e.nextTick(),V(i.value*b.value),B()}),e.onBeforeUnmount(()=>{I&&(I.disconnect(),I=void 0)}),_({scrollToIndex:U}),(v,h)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"viewport",ref:m,class:"vue-short-media-feed",style:e.normalizeStyle(j.value),role:"list","aria-orientation":"vertical","aria-label":a.ariaLabel,tabindex:"0",onScrollPassive:Z,onKeydown:te},[a.items.length?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[O.value>0?(e.openBlock(),e.createElementBlock("div",{key:0,class:"vue-short-media-feed__spacer",style:e.normalizeStyle({height:`${O.value}px`}),"aria-hidden":"true"},null,4)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(R.value,({item:C,index:X})=>(e.openBlock(),e.createElementBlock("div",{key:e.unref(P)(C,X),class:"vue-short-media-feed__item",style:e.normalizeStyle({height:`${b.value}px`}),role:"listitem","aria-current":X===i.value?"true":void 0,"aria-posinset":X+1,"aria-setsize":a.items.length},[e.renderSlot(v.$slots,"default",{item:C,index:X,active:X===i.value})],12,Ne))),128)),F.value>0?(e.openBlock(),e.createElementBlock("div",{key:1,class:"vue-short-media-feed__spacer",style:e.normalizeStyle({height:`${F.value}px`}),"aria-hidden":"true"},null,4)):e.createCommentVNode("",!0)],64)):(e.openBlock(),e.createElementBlock("div",Ke,[e.renderSlot(v.$slots,"empty")]))],44,Oe))}}),De=["aria-label"],Pe={key:0,class:"vue-virtual-carousel__track",role:"list"},Ae=["aria-label","aria-current"],Fe={key:1,class:"vue-virtual-carousel__empty"},ke=e.defineComponent({name:"VirtualCarousel",__name:"VirtualCarousel",props:{items:{},activeIndex:{default:0},slidesPerView:{default:1},slidesToScroll:{default:1},gap:{default:0},buffer:{default:1},height:{default:"auto"},itemKey:{default:void 0},ariaLabel:{default:"Carousel"},hasMore:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},loadMoreThreshold:{default:2},autoplay:{type:Boolean,default:!1},autoplayDelay:{default:3e3},autoplayLoop:{type:Boolean,default:!0},pauseOnHover:{type:Boolean,default:!0},responsive:{default:void 0}},emits:["update:activeIndex","change","reachStart","reachEnd","loadMore"],setup(a,{expose:_,emit:L}){const t=a,S=L,m=e.ref(),y=e.ref(0),i=e.ref(0);let I,D=-1,N,P,W=!1;const p=e.ref(!1),{getItemKey:b}=me({componentName:"VirtualCarousel",items:()=>t.items,itemKey:()=>t.itemKey}),M=e.computed(()=>Math.max(0,y.value)),T=e.computed(()=>{if(!t.responsive||t.responsive.length===0)return{slidesPerView:t.slidesPerView,slidesToScroll:t.slidesToScroll,gap:t.gap};const l=M.value,n=[...t.responsive].sort((d,z)=>z.breakpoint-d.breakpoint);for(const d of n)if(l>=d.breakpoint)return{slidesPerView:d.slidesPerView??t.slidesPerView,slidesToScroll:d.slidesToScroll??t.slidesToScroll,gap:d.gap??t.gap};return{slidesPerView:t.slidesPerView,slidesToScroll:t.slidesToScroll,gap:t.gap}}),R=e.computed(()=>Math.max(1,Math.floor(Number.isFinite(T.value.slidesPerView)?T.value.slidesPerView:1))),O=e.computed(()=>Math.max(1,Math.floor(Number.isFinite(T.value.slidesToScroll)?T.value.slidesToScroll:1))),F=e.computed(()=>Math.max(0,Number.isFinite(T.value.gap)?T.value.gap:0)),j=e.computed(()=>Math.max(0,Math.floor(Number.isFinite(t.buffer)?t.buffer:0))),K=e.computed(()=>Math.max(0,Math.floor(Number.isFinite(t.loadMoreThreshold)?t.loadMoreThreshold:0))),B=e.computed(()=>Number.isFinite(t.autoplayDelay)?Math.max(1,t.autoplayDelay):3e3),Y=e.computed(()=>{if(M.value<=0)return 0;const l=(R.value-1)*F.value;return Math.max(1,(M.value-l)/R.value)}),V=e.computed(()=>Y.value+F.value),U=e.computed(()=>Math.max(0,t.items.length-R.value)),Z=e.computed(()=>Math.max(0,i.value-j.value)),te=e.computed(()=>Math.min(t.items.length,i.value+R.value+j.value)),A=e.computed(()=>t.items.slice(Z.value,te.value).map((l,n)=>({item:l,index:Z.value+n}))),v=e.computed(()=>t.items.length===0?0:t.items.length*Y.value+(t.items.length-1)*F.value),h=e.computed(()=>Z.value*V.value),C=e.computed(()=>Math.max(0,v.value-te.value*V.value)),X=e.computed(()=>({height:pe(t.height)}));function q(l){return Math.min(U.value,Math.max(0,Math.floor(Number.isFinite(l)?l:0)))}i.value=q(t.activeIndex);function ae(l){return l>=i.value&&l<Math.min(t.items.length,i.value+R.value)}function J(){if(!t.hasMore||t.loading||D===t.items.length)return;const l=t.items.length===0?-1:Math.min(t.items.length-1,i.value+R.value-1);t.items.length-1-l<=K.value&&(D=t.items.length,S("loadMore"))}function Q(l){const n=q(l);n===i.value||t.items.length===0||(i.value=n,S("update:activeIndex",n),S("change",{index:n,item:t.items[n]}),n===0&&S("reachStart"),n===U.value&&S("reachEnd"),J(),t.autoplay&&!p.value&&o())}function ee(l,n={}){const d=m.value;d&&(typeof d.scrollTo=="function"?d.scrollTo({...n,left:l}):d.scrollLeft=l)}function oe(l,n={}){if(t.items.length===0||V.value<=0)return;const d=q(l);P=n.behavior==="smooth"?d:void 0,Q(d),ee(d*V.value,{...n,behavior:n.behavior})}function f(l="smooth"){oe(i.value+O.value,{behavior:l})}function k(l="smooth"){oe(i.value-O.value,{behavior:l})}function o(){s(),!(!t.autoplay||t.items.length===0)&&(N=setTimeout(()=>{i.value>=U.value?t.autoplayLoop?oe(0,{behavior:"smooth"}):s():f("smooth")},B.value))}function s(){N!==void 0&&(clearTimeout(N),N=void 0)}function u(){p.value=!0,t.pauseOnHover&&s()}function E(){p.value=!1,t.autoplay&&o()}function H(){P=void 0}function w(l){if(V.value<=0||W)return;const n=l.currentTarget.scrollLeft;if(P!==void 0){const d=P*V.value;if(Math.abs(n-d)>1)return;P=void 0}Q(Math.round(n/V.value))}function $(l){l.key==="ArrowRight"||l.key==="PageDown"?(l.preventDefault(),f()):l.key==="ArrowLeft"||l.key==="PageUp"?(l.preventDefault(),k()):l.key==="Home"?(l.preventDefault(),oe(0,{behavior:"smooth"})):l.key==="End"&&(l.preventDefault(),oe(U.value,{behavior:"auto"}))}function r(){var n;const l=((n=m.value)==null?void 0:n.clientWidth)??0;l<=0||l===y.value||(W=!0,y.value=l,e.nextTick(()=>{const d=q(i.value);ee(d*V.value),W=!1}))}return e.watch(()=>t.activeIndex,async l=>{const n=q(l);n!==i.value&&(H(),i.value=n,await e.nextTick(),ee(n*V.value),J())}),e.watch(()=>[t.items.length,T.value.slidesPerView,T.value.gap,T.value.slidesToScroll],async()=>{const l=q(i.value);t.items.length===0?i.value!==0&&(i.value=0,S("update:activeIndex",0)):Q(l),await e.nextTick(),ee(l*V.value),J(),t.autoplay&&t.items.length>0&&!p.value&&o()}),e.watch(()=>t.responsive,()=>{e.nextTick(()=>{const l=q(i.value);ee(l*V.value)})},{deep:!0}),e.watch(()=>[t.hasMore,t.loading,t.loadMoreThreshold],async([l])=>{l||(D=-1),await e.nextTick(),J()}),e.watch(()=>t.autoplay,l=>{l&&!p.value?o():s()}),e.watch(()=>t.autoplayDelay,()=>{t.autoplay&&!p.value&&o()}),e.watch(()=>t.autoplayLoop,l=>{!t.autoplay||p.value||(!l&&i.value>=U.value?s():o())}),e.watch(()=>t.pauseOnHover,l=>{l&&p.value?s():!l&&t.autoplay&&o()}),e.onMounted(async()=>{r(),typeof ResizeObserver<"u"&&m.value&&(I=new ResizeObserver(r),I.observe(m.value)),await e.nextTick(),ee(i.value*V.value),J(),t.autoplay&&o()}),e.onBeforeUnmount(()=>{I&&(I.disconnect(),I=void 0),s()}),_({next:f,previous:k,scrollToIndex:oe,startAutoplay:o,stopAutoplay:s}),(l,n)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"viewport",ref:m,class:"vue-virtual-carousel",style:e.normalizeStyle(X.value),role:"region","aria-roledescription":"carousel","aria-label":a.ariaLabel,tabindex:"0",onScrollPassive:w,onPointerdown:H,onWheelPassive:H,onKeydown:$,onMouseenter:u,onMouseleave:E},[a.items.length?(e.openBlock(),e.createElementBlock("div",Pe,[h.value>0?(e.openBlock(),e.createElementBlock("div",{key:0,class:"vue-virtual-carousel__spacer",style:e.normalizeStyle({flexBasis:`${h.value}px`}),"aria-hidden":"true"},null,4)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(A.value,({item:d,index:z})=>(e.openBlock(),e.createElementBlock("div",{key:e.unref(b)(d,z),class:"vue-virtual-carousel__item",style:e.normalizeStyle({flexBasis:`${Y.value}px`,marginRight:z<a.items.length-1?`${F.value}px`:"0px"}),role:"listitem","aria-roledescription":"slide","aria-label":`${z+1} of ${a.items.length}`,"aria-current":z===i.value?"true":void 0},[e.renderSlot(l.$slots,"default",{item:d,index:z,active:z===i.value,visible:ae(z)})],12,Ae))),128)),C.value>0?(e.openBlock(),e.createElementBlock("div",{key:1,class:"vue-virtual-carousel__spacer",style:e.normalizeStyle({flexBasis:`${C.value}px`}),"aria-hidden":"true"},null,4)):e.createCommentVNode("",!0)])):(e.openBlock(),e.createElementBlock("div",Fe,[e.renderSlot(l.$slots,"empty")]))],44,De))}}),We=["aria-label"],Ye=["aria-posinset","aria-setsize"],Se=e.defineComponent({name:"VirtualScroll",__name:"VirtualScroll",props:{items:{},itemSize:{},height:{default:400},overscan:{default:3},itemKey:{default:void 0},ariaLabel:{default:"Virtual list"},hasMore:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},loadingItemSize:{default:void 0},loadMoreThreshold:{default:200},pullToRefresh:{type:Boolean,default:!1},refreshing:{type:Boolean,default:!1},pullRefreshThreshold:{default:64}},emits:["scroll","loadMore","refresh"],setup(a,{expose:_,emit:L}){const t=a,S=L,{pulling:m,pullDistance:y,pullOffset:i,pullProgress:I,refreshMessage:D,refreshThreshold:N,handleTouchStart:P,handleTouchMove:W,handleTouchEnd:p,handleTouchCancel:b}=ye({enabled:()=>t.pullToRefresh,refreshing:()=>t.refreshing,threshold:()=>t.pullRefreshThreshold,onRefresh:()=>S("refresh")}),M=e.ref(),T=e.ref(0),R=e.ref(0);let O,F=-1;const j=ge(),{getItemKey:K}=me({componentName:"VirtualScroll",items:()=>t.items,itemKey:()=>t.itemKey}),B=e.computed(()=>Math.max(1,t.itemSize)),Y=e.computed(()=>Math.max(0,Math.floor(t.overscan))),V=e.computed(()=>t.items.length*B.value),U=e.computed(()=>Math.max(1,t.loadingItemSize??B.value)),Z=e.computed(()=>V.value+(t.loading?U.value:0)),te=e.computed(()=>R.value>0?R.value:typeof t.height=="number"?t.height:0),A=e.computed(()=>Math.max(0,Math.floor(T.value/B.value)-Y.value)),v=e.computed(()=>{const f=Math.ceil((T.value+te.value)/B.value);return Math.min(t.items.length,f+Y.value)}),h=e.computed(()=>t.items.slice(A.value,v.value).map((f,k)=>({item:f,index:A.value+k}))),C=e.computed(()=>({height:pe(t.height)})),X=e.computed(()=>({transform:`translateY(${A.value*B.value}px)`}));function q(){var f;R.value=((f=M.value)==null?void 0:f.clientHeight)??0,j(M.value,t.height),e.nextTick(J)}function ae(f){T.value=f.currentTarget.scrollTop,S("scroll",{scrollTop:T.value,startIndex:A.value,endIndex:v.value}),J()}function J(){const f=M.value;if(!f||!t.hasMore||t.loading||F===t.items.length)return;const k=Math.max(0,t.loadMoreThreshold);Z.value-f.scrollTop-f.clientHeight<=k&&(F=t.items.length,S("loadMore"))}function Q(f,k={}){const o=M.value;if(!o)return;const s=Math.max(0,Z.value-o.clientHeight),u=Math.min(Math.max(0,Number.isFinite(f)?f:0),s),E=k.behavior??"auto";E==="auto"&&(T.value=u),o.scrollTo({...k,top:u,behavior:E})}function ee(f,k={}){const o=M.value;if(!o||t.items.length===0)return;const s=Math.min(t.items.length-1,Math.max(0,Math.floor(f))),{align:u="start",...E}=k;let H=s*B.value;u==="center"?H-=(o.clientHeight-B.value)/2:u==="end"&&(H-=o.clientHeight-B.value),o.scrollTo({...E,top:Math.max(0,Math.min(H,Z.value-o.clientHeight))})}function oe(f="auto"){var k;(k=M.value)==null||k.scrollTo({top:0,behavior:f})}return e.watch(()=>[t.items.length,t.itemSize],async()=>{await e.nextTick();const f=M.value;if(!f)return;const k=Math.max(0,Z.value-f.clientHeight);f.scrollTop>k&&(f.scrollTop=k,T.value=k),J()}),e.watch(()=>[t.hasMore,t.loading],async([f])=>{f||(F=-1),await e.nextTick(),J()}),e.onMounted(()=>{q(),typeof ResizeObserver<"u"&&M.value&&(O=new ResizeObserver(q),O.observe(M.value)),e.nextTick(J)}),e.onBeforeUnmount(()=>{O&&(O.disconnect(),O=void 0)}),_({scrollTo:Q,scrollToIndex:ee,scrollToTop:oe}),(f,k)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"viewport",ref:M,class:e.normalizeClass(["vue-virtual-scroll",{"vue-virtual-scroll--pulling":e.unref(m)}]),style:e.normalizeStyle(C.value),role:"list","aria-label":a.ariaLabel,tabindex:"0",onScrollPassive:ae,onTouchstartPassive:k[0]||(k[0]=(...o)=>e.unref(P)&&e.unref(P)(...o)),onTouchmove:k[1]||(k[1]=(...o)=>e.unref(W)&&e.unref(W)(...o)),onTouchend:k[2]||(k[2]=(...o)=>e.unref(p)&&e.unref(p)(...o)),onTouchcancel:k[3]||(k[3]=(...o)=>e.unref(b)&&e.unref(b)(...o))},[a.pullToRefresh||a.refreshing?(e.openBlock(),e.createElementBlock("div",{key:0,class:"vue-virtual-scroll__refresh",style:e.normalizeStyle({height:`${e.unref(N)}px`,transform:`translateY(${e.unref(i)-e.unref(N)}px)`}),role:"status","aria-live":"polite"},[e.renderSlot(f.$slots,"refresh",{pullDistance:e.unref(y),progress:e.unref(I),refreshing:a.refreshing},()=>[e.createTextVNode(e.toDisplayString(e.unref(D)),1)])],4)):e.createCommentVNode("",!0),a.items.length||a.loading?(e.openBlock(),e.createElementBlock("div",{key:1,class:"vue-virtual-scroll__spacer",style:e.normalizeStyle({height:`${Z.value}px`,transform:`translateY(${e.unref(i)}px)`})},[e.createElementVNode("div",{class:"vue-virtual-scroll__content",style:e.normalizeStyle(X.value)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.value,({item:o,index:s})=>(e.openBlock(),e.createElementBlock("div",{key:e.unref(K)(o,s),class:"vue-virtual-scroll__item",style:e.normalizeStyle({height:`${B.value}px`}),role:"listitem","aria-posinset":s+1,"aria-setsize":a.items.length},[e.renderSlot(f.$slots,"default",{item:o,index:s})],12,Ye))),128))],4),a.loading?(e.openBlock(),e.createElementBlock("div",{key:0,class:"vue-virtual-scroll__loading",style:e.normalizeStyle({height:`${U.value}px`,transform:`translateY(${V.value}px)`}),role:"status","aria-live":"polite"},[e.renderSlot(f.$slots,"loading",{},()=>[k[4]||(k[4]=e.createTextVNode("Loading more…",-1))])],4)):e.createCommentVNode("",!0)],4)):(e.openBlock(),e.createElementBlock("div",{key:2,class:"vue-virtual-scroll__empty",style:e.normalizeStyle({transform:`translateY(${e.unref(i)}px)`})},[e.renderSlot(f.$slots,"empty")],4))],46,We))}}),Ue=["aria-label"],Ge=["aria-posinset","aria-setsize"],be=e.defineComponent({name:"WindowDynamicVirtualScroll",__name:"WindowDynamicVirtualScroll",props:{items:{},estimatedItemSize:{default:48},overscan:{default:3},itemKey:{default:void 0},ariaLabel:{default:"Window dynamic virtual list"},hasMore:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},loadingItemSize:{default:void 0},loadMoreThreshold:{default:200},pullToRefresh:{type:Boolean,default:!1},refreshing:{type:Boolean,default:!1},pullRefreshThreshold:{default:64}},emits:["scroll","loadMore","refresh"],setup(a,{expose:_,emit:L}){const t=a,S=L,m=e.ref(),y=e.ref(0),i=e.ref(0),I=e.ref(0),D=e.ref(0),N=new Map,P=new Map,W=new Map;let p,b,M,T,R=!1,O=!1,F=-1;const{getItemKey:j}=me({componentName:"WindowDynamicVirtualScroll",items:()=>t.items,itemKey:()=>t.itemKey});function K(c){return typeof window.requestAnimationFrame=="function"?{id:window.requestAnimationFrame(c),type:"animation"}:{id:window.setTimeout(c,0),type:"timeout"}}function B(c){c&&(c.type==="animation"?window.cancelAnimationFrame(c.id):window.clearTimeout(c.id))}const{pulling:Y,pullDistance:V,pullOffset:U,pullProgress:Z,refreshMessage:te,refreshThreshold:A,handleTouchStart:v,handleTouchMove:h,handleTouchEnd:C,handleTouchCancel:X}=ye({enabled:()=>t.pullToRefresh,refreshing:()=>t.refreshing,threshold:()=>t.pullRefreshThreshold,onRefresh:()=>S("refresh"),scrollTop:()=>typeof window>"u"?0:Math.max(0,window.scrollY)}),q=e.computed(()=>Math.max(1,t.estimatedItemSize)),ae=e.computed(()=>Math.max(1,t.loadingItemSize??q.value)),J=e.computed(()=>Math.max(0,Math.floor(t.overscan))),Q=e.computed(()=>{D.value;const c=new Array(t.items.length+1),x=new Array(t.items.length);c[0]=0;for(let g=0;g<t.items.length;g+=1){const le=j(t.items[g],g),G=N.get(le)??q.value;x[g]=G,c[g+1]=c[g]+G}return{offsets:c,sizes:x,total:c[t.items.length]??0}}),ee=e.computed(()=>Q.value.total+(t.loading?ae.value:0)),oe=e.computed(()=>{const c=new Map;return t.items.forEach((x,g)=>{c.set(j(x,g),g)}),c}),f=e.computed(()=>Math.max(0,y.value-I.value));function k(c){if(t.items.length===0)return 0;const x=Q.value.offsets;let g=0,le=t.items.length;for(;g<le;){const G=Math.floor((g+le)/2);x[G+1]<=c?g=G+1:le=G}return Math.min(g,t.items.length-1)}const o=e.computed(()=>Math.max(0,k(f.value)-J.value)),s=e.computed(()=>{if(t.items.length===0)return 0;const c=y.value+i.value-I.value,x=Math.max(q.value,c),g=k(x)+1;return Math.min(t.items.length,g+J.value)}),u=e.computed(()=>t.items.slice(o.value,s.value).map((c,x)=>{const g=o.value+x;return{item:c,index:g,key:j(c,g),top:Q.value.offsets[g]}}));function E(){typeof window>"u"||(y.value=Math.max(0,window.scrollY),i.value=window.innerHeight,m.value&&(I.value=m.value.getBoundingClientRect().top+y.value))}function H(){S("scroll",{scrollTop:f.value,startIndex:o.value,endIndex:s.value})}function w(c=!1){O&&(R||(R=c),!M&&(M=K(()=>{M=void 0,E(),R&&(R=!1,H()),l()})))}function $(){w(!0)}function r(){w()}function l(){if(typeof window>"u"||!t.hasMore||t.loading||F===t.items.length)return;const c=Math.max(0,t.loadMoreThreshold),x=I.value+ee.value,g=y.value+i.value;x-g<=c&&(F=t.items.length,S("loadMore"))}function n(c){const x=c.borderBoxSize;if(x){const g=Array.isArray(x)?x[0]:x;if(g!=null&&g.blockSize)return g.blockSize}return c.contentRect.height}function d(c){const x=Q.value;let g=0,le=!1;for(const G of c){const se=G.target,ue=P.get(se),fe=n(G);if(ue===void 0||fe<=0)continue;const ve=N.get(ue)??q.value;if(Math.abs(ve-fe)<.5)continue;const he=oe.value.get(ue);he!==void 0&&x.offsets[he+1]<=f.value&&(g+=fe-ve),N.set(ue,fe),le=!0}le&&(D.value+=1,e.nextTick(()=>{if(O){if(g!==0&&typeof window<"u"){const G=Math.max(0,y.value+g);y.value=G,window.scrollTo({top:G,behavior:"auto"})}E(),l()}}))}function z(c){if(O){for(const x of c)W.set(x.target,x);T||(T=K(()=>{T=void 0;const x=Array.from(W.values());W.clear(),d(x)}))}}function re(c,x){c instanceof HTMLElement&&(P.set(c,x),b==null||b.observe(c))}function ne(){for(const[c]of P)c.isConnected||(b==null||b.unobserve(c),P.delete(c))}function ie(c,x={}){if(typeof window>"u")return;E();const g=Math.max(0,ee.value-i.value),le=Math.min(Math.max(0,Number.isFinite(c)?c:0),g),G=Math.max(0,I.value+le),se=x.behavior??"auto";se==="auto"&&(y.value=G),window.scrollTo({...x,top:G,behavior:se})}function ce(c,x={}){if(typeof window>"u"||t.items.length===0)return;E();const g=Math.min(t.items.length-1,Math.max(0,Math.floor(c))),{align:le="start",...G}=x,se=Q.value.sizes[g];let ue=I.value+Q.value.offsets[g];le==="center"?ue-=(i.value-se)/2:le==="end"&&(ue-=i.value-se);const fe=Math.max(I.value,I.value+ee.value-i.value),ve=Math.max(0,Math.min(ue,fe)),he=G.behavior??"auto";he==="auto"&&(y.value=ve),window.scrollTo({...G,top:ve,behavior:he})}function de(c="auto"){typeof window>"u"||(E(),window.scrollTo({top:Math.max(0,I.value),behavior:c}))}return e.watch(()=>t.itemKey,()=>{N.clear(),D.value+=1,F=-1}),e.watch(()=>t.items.map((c,x)=>j(c,x)),async(c,x)=>{const g=c.length!==x.length||c.some((G,se)=>G!==x[se]),le=new Set(c);for(const G of N.keys())le.has(G)||N.delete(G);g&&(F=-1),D.value+=1,await e.nextTick(),O&&(E(),l())}),e.watch(()=>[t.hasMore,t.loading],async([c])=>{c||(F=-1),await e.nextTick(),O&&(E(),l())}),e.onMounted(()=>{if(O=!0,E(),window.addEventListener("scroll",$,{passive:!0}),window.addEventListener("resize",r,{passive:!0}),typeof ResizeObserver<"u"){p=new ResizeObserver(()=>{w()}),b=new ResizeObserver(z),m.value&&p.observe(m.value);for(const[c]of P)b.observe(c)}e.nextTick(()=>{O&&l()})}),e.onUpdated(ne),e.onBeforeUnmount(()=>{O=!1,window.removeEventListener("scroll",$),window.removeEventListener("resize",r),B(M),B(T),M=void 0,T=void 0,R=!1,W.clear(),p&&(p.disconnect(),p=void 0),b&&(b.disconnect(),b=void 0),P.clear()}),_({scrollTo:ie,scrollToIndex:ce,scrollToTop:de}),(c,x)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"root",ref:m,class:e.normalizeClass(["vue-window-dynamic-virtual-scroll",{"vue-window-dynamic-virtual-scroll--pulling":e.unref(Y)}]),role:"list","aria-label":a.ariaLabel,onTouchstartPassive:x[0]||(x[0]=(...g)=>e.unref(v)&&e.unref(v)(...g)),onTouchmove:x[1]||(x[1]=(...g)=>e.unref(h)&&e.unref(h)(...g)),onTouchend:x[2]||(x[2]=(...g)=>e.unref(C)&&e.unref(C)(...g)),onTouchcancel:x[3]||(x[3]=(...g)=>e.unref(X)&&e.unref(X)(...g))},[a.pullToRefresh||a.refreshing?(e.openBlock(),e.createElementBlock("div",{key:0,class:"vue-window-dynamic-virtual-scroll__refresh",style:e.normalizeStyle({height:`${e.unref(A)}px`,transform:`translateY(${e.unref(U)-e.unref(A)}px)`}),role:"status","aria-live":"polite"},[e.renderSlot(c.$slots,"refresh",{pullDistance:e.unref(V),progress:e.unref(Z),refreshing:a.refreshing},()=>[e.createTextVNode(e.toDisplayString(e.unref(te)),1)])],4)):e.createCommentVNode("",!0),a.items.length||a.loading?(e.openBlock(),e.createElementBlock("div",{key:1,class:"vue-window-dynamic-virtual-scroll__spacer",style:e.normalizeStyle({height:`${ee.value}px`,transform:`translateY(${e.unref(U)}px)`})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.value,({item:g,index:le,key:G,top:se})=>(e.openBlock(),e.createElementBlock("div",{key:G,ref_for:!0,ref:ue=>re(ue,G),class:"vue-window-dynamic-virtual-scroll__item",style:e.normalizeStyle({transform:`translateY(${se}px)`}),role:"listitem","aria-posinset":le+1,"aria-setsize":a.items.length},[e.renderSlot(c.$slots,"default",{item:g,index:le})],12,Ge))),128)),a.loading?(e.openBlock(),e.createElementBlock("div",{key:0,class:"vue-window-dynamic-virtual-scroll__loading",style:e.normalizeStyle({height:`${ae.value}px`,transform:`translateY(${Q.value.total}px)`}),role:"status","aria-live":"polite"},[e.renderSlot(c.$slots,"loading",{},()=>[x[4]||(x[4]=e.createTextVNode("Loading more…",-1))])],4)):e.createCommentVNode("",!0)],4)):(e.openBlock(),e.createElementBlock("div",{key:2,class:"vue-window-dynamic-virtual-scroll__empty",style:e.normalizeStyle({transform:`translateY(${e.unref(U)}px)`})},[e.renderSlot(c.$slots,"empty")],4))],42,Ue))}}),_e=["aria-label"],je=["aria-posinset","aria-setsize"],Be=e.defineComponent({name:"WindowGirdVirtualScroll",__name:"WindowGirdVirtualScroll",props:{items:{},itemSize:{},columns:{default:2},gap:{default:0},overscan:{default:1},itemKey:{default:void 0},ariaLabel:{default:"Window virtual grid"},hasMore:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},loadingItemSize:{default:void 0},loadMoreThreshold:{default:200},pullToRefresh:{type:Boolean,default:!1},refreshing:{type:Boolean,default:!1},pullRefreshThreshold:{default:64}},emits:["scroll","loadMore","refresh"],setup(a,{expose:_,emit:L}){const t=a,S=L,m=e.ref(),y=e.ref(0),i=e.ref(0),I=e.ref(0);let D,N=-1;const{getItemKey:P}=me({componentName:"WindowGirdVirtualScroll",items:()=>t.items,itemKey:()=>t.itemKey}),{pulling:W,pullDistance:p,pullOffset:b,pullProgress:M,refreshMessage:T,refreshThreshold:R,handleTouchStart:O,handleTouchMove:F,handleTouchEnd:j,handleTouchCancel:K}=ye({enabled:()=>t.pullToRefresh,refreshing:()=>t.refreshing,threshold:()=>t.pullRefreshThreshold,onRefresh:()=>S("refresh"),scrollTop:()=>typeof window>"u"?0:Math.max(0,window.scrollY)}),B=e.computed(()=>Math.max(1,t.itemSize)),Y=e.computed(()=>Math.max(1,Math.floor(t.columns))),V=e.computed(()=>Math.max(0,t.gap)),U=e.computed(()=>Math.max(0,Math.floor(t.overscan))),Z=e.computed(()=>Math.max(1,t.loadingItemSize??B.value)),te=e.computed(()=>B.value+V.value),A=e.computed(()=>Math.ceil(t.items.length/Y.value)),v=e.computed(()=>A.value===0?0:A.value*B.value+(A.value-1)*V.value),h=e.computed(()=>v.value+(t.items.length?V.value:0)),C=e.computed(()=>v.value+(t.loading?Z.value+(t.items.length?V.value:0):0)),X=e.computed(()=>Math.max(0,y.value-I.value)),q=e.computed(()=>Math.max(0,Math.floor(X.value/te.value)-U.value)),ae=e.computed(()=>{if(A.value===0)return 0;const w=Math.max(B.value,y.value+i.value-I.value),$=Math.ceil((w+V.value)/te.value);return Math.min(A.value,$+U.value)}),J=e.computed(()=>Math.min(t.items.length,q.value*Y.value)),Q=e.computed(()=>Math.min(t.items.length,ae.value*Y.value)),ee=e.computed(()=>t.items.slice(J.value,Q.value).map((w,$)=>{const r=J.value+$;return{item:w,index:r,key:P(w,r),rowIndex:Math.floor(r/Y.value),columnIndex:r%Y.value}})),oe=e.computed(()=>({gridTemplateColumns:`repeat(${Y.value}, minmax(0, 1fr))`,columnGap:`${V.value}px`,rowGap:`${V.value}px`,transform:`translateY(${q.value*te.value}px)`}));function f(){typeof window>"u"||(y.value=Math.max(0,window.scrollY),i.value=window.innerHeight,m.value&&(I.value=m.value.getBoundingClientRect().top+y.value))}function k(){S("scroll",{scrollTop:X.value,startIndex:J.value,endIndex:Q.value})}function o(){f(),k(),s()}function s(){if(typeof window>"u"||!t.hasMore||t.loading||N===t.items.length)return;const w=Math.max(0,t.loadMoreThreshold),$=I.value+C.value,r=y.value+i.value;$-r<=w&&(N=t.items.length,S("loadMore"))}function u(w,$={}){if(typeof window>"u")return;f();const r=Math.max(0,C.value-i.value),l=Math.min(Math.max(0,Number.isFinite(w)?w:0),r),n=Math.max(0,I.value+l),d=$.behavior??"auto";d==="auto"&&(y.value=n),window.scrollTo({...$,top:n,behavior:d})}function E(w,$={}){if(typeof window>"u"||t.items.length===0)return;f();const r=Math.min(t.items.length-1,Math.max(0,Math.floor(w))),l=Math.floor(r/Y.value),{align:n="start",...d}=$;let z=I.value+l*te.value;n==="center"?z-=(i.value-B.value)/2:n==="end"&&(z-=i.value-B.value);const re=Math.max(I.value,I.value+C.value-i.value),ne=Math.max(0,Math.min(z,re)),ie=d.behavior??"auto";ie==="auto"&&(y.value=ne),window.scrollTo({...d,top:ne,behavior:ie})}function H(w="auto"){typeof window>"u"||(f(),window.scrollTo({top:Math.max(0,I.value),behavior:w}))}return e.watch(()=>[t.items.length,t.itemSize,t.columns,t.gap],async()=>{await e.nextTick(),f(),s()}),e.watch(()=>[t.hasMore,t.loading],async([w])=>{w||(N=-1),await e.nextTick(),f(),s()}),e.onMounted(()=>{f(),window.addEventListener("scroll",o,{passive:!0}),window.addEventListener("resize",o,{passive:!0}),typeof ResizeObserver<"u"&&(D=new ResizeObserver(()=>{f(),s()}),m.value&&D.observe(m.value)),e.nextTick(s)}),e.onBeforeUnmount(()=>{window.removeEventListener("scroll",o),window.removeEventListener("resize",o),D&&(D.disconnect(),D=void 0)}),_({scrollTo:u,scrollToIndex:E,scrollToTop:H}),(w,$)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"root",ref:m,class:e.normalizeClass(["vue-window-gird-virtual-scroll",{"vue-window-gird-virtual-scroll--pulling":e.unref(W)}]),role:"list","aria-label":a.ariaLabel,onTouchstartPassive:$[0]||($[0]=(...r)=>e.unref(O)&&e.unref(O)(...r)),onTouchmove:$[1]||($[1]=(...r)=>e.unref(F)&&e.unref(F)(...r)),onTouchend:$[2]||($[2]=(...r)=>e.unref(j)&&e.unref(j)(...r)),onTouchcancel:$[3]||($[3]=(...r)=>e.unref(K)&&e.unref(K)(...r))},[a.pullToRefresh||a.refreshing?(e.openBlock(),e.createElementBlock("div",{key:0,class:"vue-window-gird-virtual-scroll__refresh",style:e.normalizeStyle({height:`${e.unref(R)}px`,transform:`translateY(${e.unref(b)-e.unref(R)}px)`}),role:"status","aria-live":"polite"},[e.renderSlot(w.$slots,"refresh",{pullDistance:e.unref(p),progress:e.unref(M),refreshing:a.refreshing},()=>[e.createTextVNode(e.toDisplayString(e.unref(T)),1)])],4)):e.createCommentVNode("",!0),a.items.length||a.loading?(e.openBlock(),e.createElementBlock("div",{key:1,class:"vue-window-gird-virtual-scroll__spacer",style:e.normalizeStyle({height:`${C.value}px`,transform:`translateY(${e.unref(b)}px)`})},[e.createElementVNode("div",{class:"vue-window-gird-virtual-scroll__content",style:e.normalizeStyle(oe.value)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(ee.value,({item:r,index:l,key:n,rowIndex:d,columnIndex:z})=>(e.openBlock(),e.createElementBlock("div",{key:n,class:"vue-window-gird-virtual-scroll__item",style:e.normalizeStyle({height:`${B.value}px`}),role:"listitem","aria-posinset":l+1,"aria-setsize":a.items.length},[e.renderSlot(w.$slots,"default",{item:r,index:l,rowIndex:d,columnIndex:z})],12,je))),128))],4),a.loading?(e.openBlock(),e.createElementBlock("div",{key:0,class:"vue-window-gird-virtual-scroll__loading",style:e.normalizeStyle({height:`${Z.value}px`,transform:`translateY(${h.value}px)`}),role:"status","aria-live":"polite"},[e.renderSlot(w.$slots,"loading",{},()=>[$[4]||($[4]=e.createTextVNode("Loading more…",-1))])],4)):e.createCommentVNode("",!0)],4)):(e.openBlock(),e.createElementBlock("div",{key:2,class:"vue-window-gird-virtual-scroll__empty",style:e.normalizeStyle({transform:`translateY(${e.unref(b)}px)`})},[e.renderSlot(w.$slots,"empty")],4))],42,_e))}}),ze=we,Ie={install(a){a.component("ChatVirtualScroll",Me),a.component("DynamicVirtualScroll",we),a.component("ShortMediaFeed",Te),a.component("VirtualCarousel",ke),a.component("VirtualList",ze),a.component("VirtualScroll",Se),a.component("WindowDynamicVirtualScroll",be),a.component("WindowGirdVirtualScroll",Be)}};exports.ChatVirtualScroll=Me;exports.DynamicVirtualScroll=we;exports.ShortMediaFeed=Te;exports.VirtualCarousel=ke;exports.VirtualList=ze;exports.VirtualScroll=Se;exports.VueVirtualScroll=Ie;exports.WindowDynamicVirtualScroll=be;exports.WindowGirdVirtualScroll=Be;exports.default=Ie;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.vue-virtual-scroll{position:relative;width:100%;overflow:auto;box-sizing:border-box;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.vue-dynamic-virtual-scroll{position:relative;width:100%;overflow:auto;box-sizing:border-box;overflow-anchor:none;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.vue-window-dynamic-virtual-scroll{position:relative;width:100%;box-sizing:border-box;overflow-anchor:none}.vue-chat-virtual-scroll{position:relative;width:100%;overflow:auto;box-sizing:border-box;overflow-anchor:none;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.vue-short-media-feed{position:relative;width:100%;overflow-x:hidden;overflow-y:auto;box-sizing:border-box;overscroll-behavior:contain;overflow-anchor:none;scroll-snap-type:y mandatory;scrollbar-width:none;touch-action:pan-y;-webkit-overflow-scrolling:touch}.vue-short-media-feed::-webkit-scrollbar{display:none}.vue-short-media-feed__item{position:relative;width:100%;min-height:1px;overflow:hidden;box-sizing:border-box;scroll-snap-align:start;scroll-snap-stop:always}.vue-short-media-feed__spacer{width:100%;pointer-events:none}.vue-short-media-feed__empty{width:100%;height:100%}.vue-virtual-carousel{position:relative;width:100%;max-width:100%;overflow-x:auto;overflow-y:hidden;box-sizing:border-box;overscroll-behavior-x:contain;overflow-anchor:none;scroll-snap-type:x mandatory;scrollbar-width:none;touch-action:pan-x;-webkit-overflow-scrolling:touch}.vue-virtual-carousel::-webkit-scrollbar{display:none}.vue-virtual-carousel__track{display:flex;align-items:stretch;width:max-content;min-width:100%;height:100%}.vue-virtual-carousel__item{position:relative;flex-grow:0;flex-shrink:0;min-width:1px;height:100%;overflow:hidden;box-sizing:border-box;scroll-snap-align:start;scroll-snap-stop:always}.vue-virtual-carousel__spacer{flex-grow:0;flex-shrink:0;width:0;pointer-events:none}.vue-virtual-carousel__empty{width:100%;height:100%}.vue-virtual-scroll__spacer{position:relative;width:100%;pointer-events:none}.vue-virtual-scroll__content{position:absolute;inset:0 0 auto;width:100%;will-change:transform;pointer-events:auto}.vue-virtual-scroll__item{width:100%;overflow:hidden;box-sizing:border-box}.vue-dynamic-virtual-scroll__spacer,.vue-window-dynamic-virtual-scroll__spacer,.vue-chat-virtual-scroll__spacer{position:relative;width:100%}.vue-dynamic-virtual-scroll__item,.vue-window-dynamic-virtual-scroll__item,.vue-chat-virtual-scroll__item{position:absolute;inset:0 0 auto;display:flow-root;width:100%;box-sizing:border-box;will-change:transform}.vue-chat-virtual-scroll__loading-older{position:sticky;top:0;z-index:2;height:0;color:#64748b;font-size:.875rem;font-weight:600;text-align:center;pointer-events:none}.vue-chat-virtual-scroll__loading-older>div{display:inline-flex;align-items:center;justify-content:center;min-height:2.5rem;padding:0 1rem;background:#ffffffeb;border-radius:999px;box-shadow:0 2px 12px #0f172a1a}.vue-virtual-scroll__loading,.vue-dynamic-virtual-scroll__loading,.vue-window-dynamic-virtual-scroll__loading{position:absolute;inset:0 0 auto;display:flex;align-items:center;justify-content:center;width:100%;padding:.75rem;color:#64748b;box-sizing:border-box}.vue-virtual-scroll__refresh,.vue-dynamic-virtual-scroll__refresh,.vue-window-dynamic-virtual-scroll__refresh{position:absolute;inset:0 0 auto;z-index:1;display:flex;align-items:center;justify-content:center;width:100%;color:#475569;font-size:.875rem;font-weight:600;box-sizing:border-box;pointer-events:none;transition:transform .18s ease}.vue-virtual-scroll__spacer,.vue-dynamic-virtual-scroll__spacer,.vue-window-dynamic-virtual-scroll__spacer,.vue-virtual-scroll__empty,.vue-dynamic-virtual-scroll__empty,.vue-window-dynamic-virtual-scroll__empty{transition:transform .18s ease}.vue-virtual-scroll--pulling .vue-virtual-scroll__refresh,.vue-virtual-scroll--pulling .vue-virtual-scroll__spacer,.vue-virtual-scroll--pulling .vue-virtual-scroll__empty,.vue-dynamic-virtual-scroll--pulling .vue-dynamic-virtual-scroll__refresh,.vue-dynamic-virtual-scroll--pulling .vue-dynamic-virtual-scroll__spacer,.vue-dynamic-virtual-scroll--pulling .vue-dynamic-virtual-scroll__empty,.vue-window-dynamic-virtual-scroll--pulling .vue-window-dynamic-virtual-scroll__refresh,.vue-window-dynamic-virtual-scroll--pulling .vue-window-dynamic-virtual-scroll__spacer,.vue-window-dynamic-virtual-scroll--pulling .vue-window-dynamic-virtual-scroll__empty{transition:none}
|
|
1
|
+
.vue-virtual-scroll{position:relative;width:100%;overflow:auto;box-sizing:border-box;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.vue-dynamic-virtual-scroll{position:relative;width:100%;overflow:auto;box-sizing:border-box;overflow-anchor:none;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.vue-window-dynamic-virtual-scroll,.vue-window-gird-virtual-scroll{position:relative;width:100%;box-sizing:border-box;overflow-anchor:none}.vue-chat-virtual-scroll{position:relative;width:100%;overflow:auto;box-sizing:border-box;overflow-anchor:none;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.vue-short-media-feed{position:relative;width:100%;overflow-x:hidden;overflow-y:auto;box-sizing:border-box;overscroll-behavior:contain;overflow-anchor:none;scroll-snap-type:y mandatory;scrollbar-width:none;touch-action:pan-y;-webkit-overflow-scrolling:touch}.vue-short-media-feed::-webkit-scrollbar{display:none}.vue-short-media-feed__item{position:relative;width:100%;min-height:1px;overflow:hidden;box-sizing:border-box;scroll-snap-align:start;scroll-snap-stop:always}.vue-short-media-feed__spacer{width:100%;pointer-events:none}.vue-short-media-feed__empty{width:100%;height:100%}.vue-virtual-carousel{position:relative;width:100%;max-width:100%;overflow-x:auto;overflow-y:hidden;box-sizing:border-box;overscroll-behavior-x:contain;overflow-anchor:none;scroll-snap-type:x mandatory;scrollbar-width:none;touch-action:pan-x;-webkit-overflow-scrolling:touch}.vue-virtual-carousel::-webkit-scrollbar{display:none}.vue-virtual-carousel__track{display:flex;align-items:stretch;width:max-content;min-width:100%;height:100%}.vue-virtual-carousel__item{position:relative;flex-grow:0;flex-shrink:0;min-width:1px;height:100%;overflow:hidden;box-sizing:border-box;scroll-snap-align:start;scroll-snap-stop:always}.vue-virtual-carousel__spacer{flex-grow:0;flex-shrink:0;width:0;pointer-events:none}.vue-virtual-carousel__empty{width:100%;height:100%}.vue-virtual-scroll__spacer{position:relative;width:100%;pointer-events:none}.vue-virtual-scroll__content{position:absolute;inset:0 0 auto;width:100%;will-change:transform;pointer-events:auto}.vue-virtual-scroll__item{width:100%;overflow:hidden;box-sizing:border-box}.vue-dynamic-virtual-scroll__spacer,.vue-window-dynamic-virtual-scroll__spacer,.vue-window-gird-virtual-scroll__spacer{position:relative;width:100%}.vue-window-gird-virtual-scroll__content{position:absolute;inset:0 0 auto;display:grid;width:100%;box-sizing:border-box;will-change:transform}.vue-window-gird-virtual-scroll__item{min-width:0;overflow:hidden;box-sizing:border-box}.vue-chat-virtual-scroll__spacer{position:relative;width:100%}.vue-dynamic-virtual-scroll__item,.vue-window-dynamic-virtual-scroll__item,.vue-chat-virtual-scroll__item{position:absolute;inset:0 0 auto;display:flow-root;width:100%;box-sizing:border-box;will-change:transform}.vue-chat-virtual-scroll__loading-older{position:sticky;top:0;z-index:2;height:0;color:#64748b;font-size:.875rem;font-weight:600;text-align:center;pointer-events:none}.vue-chat-virtual-scroll__loading-older>div{display:inline-flex;align-items:center;justify-content:center;min-height:2.5rem;padding:0 1rem;background:#ffffffeb;border-radius:999px;box-shadow:0 2px 12px #0f172a1a}.vue-virtual-scroll__loading,.vue-dynamic-virtual-scroll__loading,.vue-window-dynamic-virtual-scroll__loading,.vue-window-gird-virtual-scroll__loading{position:absolute;inset:0 0 auto;display:flex;align-items:center;justify-content:center;width:100%;padding:.75rem;color:#64748b;box-sizing:border-box}.vue-virtual-scroll__refresh,.vue-dynamic-virtual-scroll__refresh,.vue-window-dynamic-virtual-scroll__refresh,.vue-window-gird-virtual-scroll__refresh{position:absolute;inset:0 0 auto;z-index:1;display:flex;align-items:center;justify-content:center;width:100%;color:#475569;font-size:.875rem;font-weight:600;box-sizing:border-box;pointer-events:none;transition:transform .18s ease}.vue-virtual-scroll__spacer,.vue-dynamic-virtual-scroll__spacer,.vue-window-dynamic-virtual-scroll__spacer,.vue-window-gird-virtual-scroll__spacer,.vue-virtual-scroll__empty,.vue-dynamic-virtual-scroll__empty,.vue-window-dynamic-virtual-scroll__empty,.vue-window-gird-virtual-scroll__empty{transition:transform .18s ease}.vue-virtual-scroll--pulling .vue-virtual-scroll__refresh,.vue-virtual-scroll--pulling .vue-virtual-scroll__spacer,.vue-virtual-scroll--pulling .vue-virtual-scroll__empty,.vue-dynamic-virtual-scroll--pulling .vue-dynamic-virtual-scroll__refresh,.vue-dynamic-virtual-scroll--pulling .vue-dynamic-virtual-scroll__spacer,.vue-dynamic-virtual-scroll--pulling .vue-dynamic-virtual-scroll__empty,.vue-window-dynamic-virtual-scroll--pulling .vue-window-dynamic-virtual-scroll__refresh,.vue-window-dynamic-virtual-scroll--pulling .vue-window-dynamic-virtual-scroll__spacer,.vue-window-dynamic-virtual-scroll--pulling .vue-window-dynamic-virtual-scroll__empty,.vue-window-gird-virtual-scroll--pulling .vue-window-gird-virtual-scroll__refresh,.vue-window-gird-virtual-scroll--pulling .vue-window-gird-virtual-scroll__spacer,.vue-window-gird-virtual-scroll--pulling .vue-window-gird-virtual-scroll__empty{transition:none}
|