vue-virtual-flow 0.0.9 → 0.1.0
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/CHANGELOG.md +98 -0
- package/README.md +94 -10
- package/README.vi.md +87 -10
- package/dist/components/ChatVirtualScroll.d.cts +29 -2
- package/dist/components/ChatVirtualScroll.d.ts +29 -2
- package/dist/components/DynamicVirtualScroll.d.cts +3 -3
- package/dist/components/DynamicVirtualScroll.d.ts +3 -3
- package/dist/components/ShortMediaFeed.d.cts +2 -2
- package/dist/components/ShortMediaFeed.d.ts +2 -2
- package/dist/components/VirtualCarousel.d.cts +15 -2
- package/dist/components/VirtualCarousel.d.ts +15 -2
- package/dist/components/VirtualScroll.d.cts +3 -3
- package/dist/components/VirtualScroll.d.ts +3 -3
- package/dist/components/WindowDynamicVirtualScroll.d.cts +3 -3
- package/dist/components/WindowDynamicVirtualScroll.d.ts +3 -3
- package/dist/components/WindowGirdVirtualScroll.d.cts +3 -3
- package/dist/components/WindowGirdVirtualScroll.d.ts +3 -3
- package/dist/composables/useCarouselAutoplay.d.cts +15 -0
- package/dist/composables/useCarouselAutoplay.d.ts +15 -0
- package/dist/composables/useCarouselInteraction.d.cts +40 -0
- package/dist/composables/useCarouselInteraction.d.ts +40 -0
- package/dist/composables/useScrollActivity.d.cts +28 -0
- package/dist/composables/useScrollActivity.d.ts +28 -0
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/types.d.cts +46 -0
- package/dist/types.d.ts +46 -0
- package/dist/utils/carouselLayout.d.cts +8 -0
- package/dist/utils/carouselLayout.d.ts +8 -0
- package/dist/utils/carouselMotion.d.cts +5 -0
- package/dist/utils/carouselMotion.d.ts +5 -0
- package/dist/utils/keyedSizeIndex.d.cts +19 -0
- package/dist/utils/keyedSizeIndex.d.ts +19 -0
- package/dist/vue-virtual-flow.cjs +1 -1
- package/dist/vue-virtual-flow.css +1 -1
- package/dist/vue-virtual-flow.js +2191 -1523
- package/package.json +3 -2
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare function wrapCarouselIndex(index: number, count: number): number;
|
|
2
|
+
export declare function createCarouselLayout(widths: readonly number[], gap: number): {
|
|
3
|
+
offsets: number[];
|
|
4
|
+
cycleWidth: number;
|
|
5
|
+
totalWidth: number;
|
|
6
|
+
indexAt: (position: number) => number;
|
|
7
|
+
nearestIndex: (position: number) => number;
|
|
8
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare function wrapCarouselIndex(index: number, count: number): number;
|
|
2
|
+
export declare function createCarouselLayout(widths: readonly number[], gap: number): {
|
|
3
|
+
offsets: number[];
|
|
4
|
+
cycleWidth: number;
|
|
5
|
+
totalWidth: number;
|
|
6
|
+
indexAt: (position: number) => number;
|
|
7
|
+
nearestIndex: (position: number) => number;
|
|
8
|
+
};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare function projectCarouselMomentum(velocity: number, itemStep: number): number;
|
|
2
|
+
export declare function createCarouselSettleMotion(startOffset: number, targetOffset: number, releaseVelocity: number, settleDuration?: number): {
|
|
3
|
+
keyframes: Keyframe[];
|
|
4
|
+
options: KeyframeAnimationOptions;
|
|
5
|
+
};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare function projectCarouselMomentum(velocity: number, itemStep: number): number;
|
|
2
|
+
export declare function createCarouselSettleMotion(startOffset: number, targetOffset: number, releaseVelocity: number, settleDuration?: number): {
|
|
3
|
+
keyframes: Keyframe[];
|
|
4
|
+
options: KeyframeAnimationOptions;
|
|
5
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { SizeIndex } from './sizeIndex.cjs';
|
|
2
|
+
export interface KeyedSizeEntry {
|
|
3
|
+
key: PropertyKey;
|
|
4
|
+
size: number;
|
|
5
|
+
}
|
|
6
|
+
export interface KeyedSizeIndex extends SizeIndex {
|
|
7
|
+
getKey(index: number): PropertyKey | undefined;
|
|
8
|
+
getIndex(key: PropertyKey): number | undefined;
|
|
9
|
+
getSizeByKey(key: PropertyKey): number | undefined;
|
|
10
|
+
hasKey(key: PropertyKey): boolean;
|
|
11
|
+
append(entries: readonly KeyedSizeEntry[]): void;
|
|
12
|
+
prepend(entries: readonly KeyedSizeEntry[]): void;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* A keyed implicit treap for chat timelines. Appending, prepending, measuring,
|
|
16
|
+
* prefix queries and offset lookup are O(log n), while key lookup is O(1)
|
|
17
|
+
* plus O(log n) to derive the current rank through parent links.
|
|
18
|
+
*/
|
|
19
|
+
export declare function createKeyedSizeIndex(initialEntries: readonly KeyedSizeEntry[]): KeyedSizeIndex;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { SizeIndex } from './sizeIndex.js';
|
|
2
|
+
export interface KeyedSizeEntry {
|
|
3
|
+
key: PropertyKey;
|
|
4
|
+
size: number;
|
|
5
|
+
}
|
|
6
|
+
export interface KeyedSizeIndex extends SizeIndex {
|
|
7
|
+
getKey(index: number): PropertyKey | undefined;
|
|
8
|
+
getIndex(key: PropertyKey): number | undefined;
|
|
9
|
+
getSizeByKey(key: PropertyKey): number | undefined;
|
|
10
|
+
hasKey(key: PropertyKey): boolean;
|
|
11
|
+
append(entries: readonly KeyedSizeEntry[]): void;
|
|
12
|
+
prepend(entries: readonly KeyedSizeEntry[]): void;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* A keyed implicit treap for chat timelines. Appending, prepending, measuring,
|
|
16
|
+
* prefix queries and offset lookup are O(log n), while key lookup is O(1)
|
|
17
|
+
* plus O(log n) to derive the current rank through parent links.
|
|
18
|
+
*/
|
|
19
|
+
export declare function createKeyedSizeIndex(initialEntries: readonly KeyedSizeEntry[]): KeyedSizeIndex;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue");function _e(o){return typeof o=="string"||typeof o=="number"||typeof o=="symbol"}function Le(o,O){const x=o[O];return _e(x)?x:void 0}function Ue(o){return Le(o,"id")??Le(o,"key")}function be(o){function O(t,p){const d=o.itemKey();if(typeof d=="function")return d(t,p);if(t!==null&&typeof t=="object"){if(d!==void 0){const a=Le(t,d);if(a!==void 0)return a}const s=Ue(t);if(s!==void 0)return s}return p}function x(){}return e.watch(()=>[o.itemKey(),o.items()],x,{immediate:!0}),{getItemKey:O}}function Ie(o){return o==="fill"?"100%":typeof o=="number"?`${o}px`:o}function $e(o){return(O,x)=>{typeof x=="string"&&(x==="fill"||x.trim().endsWith("%"))}}function je(o){const O=Float64Array.from(o),x=O.length,t=new Float64Array(x+1);let p=0;for(let s=1;s<=x;s+=1){const a=O[s-1];p+=a,t[s]+=a;const v=s+(s&-s);v<=x&&(t[v]+=t[s])}let d=1;for(;d*2<=x;)d*=2;return{length:x,get total(){return p},getSize(s){return O[s]},getOffset(s){let a=0;for(let v=s;v>0;v-=v&-v)a+=t[v];return a},setSize(s,a){const v=a-O[s];if(v!==0){O[s]=a,p+=v;for(let H=s+1;H<=x;H+=H&-H)t[H]+=v}},findIndex(s){if(x===0||s<=0)return 0;if(s>=p)return x-1;let a=0,v=0;for(let H=d;H>0;H=Math.floor(H/2)){const L=a+H;L<=x&&v+t[L]<=s&&(a=L,v+=t[L])}return Math.min(a,x-1)}}}const Ge=["aria-label"],qe={key:0,class:"vue-chat-virtual-scroll__loading-older",role:"status","aria-live":"polite"},Ze=["aria-posinset","aria-setsize"],Oe=e.defineComponent({name:"ChatVirtualScroll",__name:"ChatVirtualScroll",props:{items:{},estimatedItemSize:{default:48},height:{default:400},overscan:{default:5},size:{default:void 0},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(o,{expose:O,emit:x}){const t=o,p=x,d=e.ref(),s=e.ref(0),a=e.ref(0),v=e.ref(0),H=e.ref(0),L=e.ref(!0),F=new Map,W=new Map,E=new Set;let R,M,b=-1,z=!1,K=!1,N=!1,Q,Y=0,$=!1,X=0,V,U,D,Z=0;const ee=$e(),{getItemKey:ie}=be({componentName:"ChatVirtualScroll",items:()=>t.items,itemKey:()=>t.itemKey}),oe=e.computed(()=>Number.isFinite(t.estimatedItemSize)?Math.max(1,t.estimatedItemSize):48),le=e.computed(()=>Math.max(0,Math.floor(t.overscan))),fe=e.computed(()=>t.size!==void 0&&Number.isFinite(t.size)&&t.size>0?Math.max(1,Math.floor(t.size)):void 0),A=e.computed(()=>v.value>0?v.value:typeof t.height=="number"?Math.max(0,t.height):oe.value),u=e.computed(()=>{const r=t.items.map((f,y)=>ie(f,y));return{keys:r,indexes:new Map(r.map((f,y)=>[f,y])),sizes:je(r.map(f=>F.get(f)??oe.value))}}),c=e.computed(()=>(H.value,{sizes:u.value.sizes,total:u.value.sizes.total}));function k(r=c.value.total){return Math.max(0,r-A.value)}function j(r){return c.value.sizes.findIndex(r)}s.value=t.initialScroll==="bottom"?k():0;const re=e.computed(()=>{if(t.items.length===0)return{start:0,end:0};const r=j(s.value),f=j(s.value+A.value)+1,y=Math.max(0,r-le.value),C=Math.min(t.items.length,f+le.value),ue=fe.value;if(ue===void 0||C-y<=ue)return{start:y,end:C};const me=Math.max(0,ue-(f-r)),ve=r-y,pe=C-f;let Me=Math.min(ve,Math.ceil(me/2));const ye=Math.min(pe,me-Me);return Me=Math.min(ve,me-ye),{start:r-Me,end:f+ye}}),g=e.computed(()=>re.value.start),B=e.computed(()=>re.value.end),I=e.computed(()=>t.items.slice(g.value,B.value).map((r,f)=>{const y=g.value+f;return{item:r,index:y,key:ie(r,y),bottom:Math.max(c.value.total,A.value)-c.value.sizes.getOffset(y+1)+a.value}})),q=e.computed(()=>({height:Ie(t.height)}));function J(r=c.value.total){var C;const f=k(r),y=Math.min(0,((C=d.value)==null?void 0:C.scrollTop)??0);return Math.max(0,Math.min(f,f+y+Y))}function te(r=!1){if($||(N||D)&&!r||Y===0)return;$=!0;const f=Z,y=++X;a.value=0,e.nextTick(()=>{if(y!==X)return;$=!1;const C=d.value;!C||f!==Z||Y===0||(Y=0,C.scrollTop=Math.min(0,s.value-k()),U=C.scrollTop,s.value=J(),w(),ae())})}function ce(r){const f=d.value;if(f){if(Y+=r,s.value=J(),Y===0||k()===0){Y=0,a.value=0;return}(N||D)&&!$?(a.value=Y,f.scrollTop>=-1&&te(!0)):te()}}function P(){clearTimeout(Q),Q=void 0}function G(){if(K)return;P(),N=!1;const r=D;if(D=void 0,r){r();return}s.value=J(),te()}function i(){P(),(N||D)&&!K&&(Q=setTimeout(G,150))}function l(){V=void 0,D=void 0}function n(){l(),P(),K=!0,N=!0,a.value=Y}function h(r){K=r.touches.length>0,i()}function w(){const r=d.value;if(!r)return;const y=Math.max(0,c.value.total-J()-r.clientHeight)<=Math.max(0,t.bottomThreshold);y!==L.value&&(L.value=y,z&&p("bottomChange",y))}function de(){var r;v.value=((r=d.value)==null?void 0:r.clientHeight)??0,z&&(s.value=J()),ee(d.value,t.height),e.nextTick(()=>{w(),ae()})}function se(){var r,f;V&&U!==void 0&&Math.abs((((r=d.value)==null?void 0:r.scrollTop)??0)-U)>1&&l(),s.value=J(),Y!==0&&(((f=d.value)==null?void 0:f.scrollTop)??0)>=-1&&te(!0),i(),w(),p("scroll",{scrollTop:s.value,startIndex:g.value,endIndex:B.value}),ae()}function ae(){const r=d.value;!z||!r||!t.hasOlder||t.loadingOlder||b===t.items.length||J()<=Math.max(0,t.loadOlderThreshold)&&(b=t.items.length,p("loadOlder"))}function Te(r){const f=r.borderBoxSize;if(f){const y=Array.isArray(f)?f[0]:f;if(y!=null&&y.blockSize)return y.blockSize}return r.contentRect.height}function xe(r){const f=c.value.total,y=J(),C=!N&&!D&&L.value&&t.stickToBottom&&(z||t.initialScroll==="bottom"),ue=j(y+A.value-1),me=!C&&y<=0;let ve=0,pe=!1;for(const{key:He,height:ze}of r){if(!Number.isFinite(ze)||ze<=0)continue;const Ee=u.value.indexes.get(He);if(Ee===void 0)continue;const Re=c.value.sizes.getSize(Ee);F.set(He,ze),!(Math.abs(Re-ze)<.5)&&(Ee<=ue&&(ve+=ze-Re),c.value.sizes.setSize(Ee,ze),pe=!0)}if(!pe)return;H.value+=1;const Me=k()-k(f),ye=V&&u.value.indexes.get(V.key),Be=ye!==void 0&&V?ge(ye,V.align):C?k():me?0:y+ve;ce(Be-y-Me),e.nextTick(w)}function m(r){const f=[];for(const y of r){const C=W.get(y.target);C!==void 0&&f.push({key:C,height:Te(y)})}xe(f)}function S(){const r=[];for(const f of E){const y=W.get(f);y!==void 0&&f.isConnected&&r.push({key:y,height:f.getBoundingClientRect().height})}E.clear(),xe(r)}function T(r,f){r instanceof HTMLElement&&W.get(r)!==f&&(W.set(r,f),F.has(f)||E.add(r),M==null||M.observe(r))}function ne(){for(const[r]of W)r.isConnected||(M==null||M.unobserve(r),W.delete(r),E.delete(r))}function _(r,f,y=!1){const C=d.value;if(!C)return;const ue=J(),me=a.value!==0,ve=++Z;X+=1,$=!1,V=void 0;const pe=f.behavior??"auto";D=pe==="smooth"?()=>he(r):void 0,Y=0,a.value=0,N=!1,P(),pe==="auto"&&(s.value=r);const Me=()=>{d.value!==C||ve!==Z||(me&&pe!=="auto"&&(C.scrollTop=ue-k()),y&&pe==="auto"?C.scrollTop=r-k():C.scrollTo({...f,top:r-k(),behavior:pe}),U=C.scrollTop,pe==="auto"?s.value=J():i(),e.nextTick(w))};me?e.nextTick(Me):Me()}function he(r,f={}){const y=d.value;if(!y)return;const C=Math.max(0,c.value.total-y.clientHeight),ue=Math.min(Math.max(0,Number.isFinite(r)?r:0),C);_(ue,f)}function ge(r,f){const y=c.value.sizes.getSize(r);let C=c.value.sizes.getOffset(r);return f==="center"?C-=(A.value-y)/2:f==="end"&&(C-=A.value-y),Math.max(0,Math.min(C,k()))}function we(r,f={}){if(!d.value||t.items.length===0)return;const y=Math.min(t.items.length-1,Math.max(0,Math.floor(Number.isFinite(r)?r:0))),{align:C="start",...ue}=f;_(ge(y,C),ue);const me=u.value.keys[y];f.behavior==="smooth"?D=()=>{const ve=u.value.indexes.get(me);ve!==void 0&&we(ve,{align:C})}:V={key:me,align:C}}function ke(r="auto"){_(0,{behavior:r})}function Se(r="auto"){const f=d.value;if(!f)return;const y=Math.max(0,c.value.total-f.clientHeight);_(y,{behavior:r},!0),r==="smooth"&&(D=()=>Se())}return e.watch(u,async(r,f)=>{const y=f.sizes.total,C=J(y),ue=!N&&!D&&L.value&&t.stickToBottom,me=f.sizes.findIndex(C+A.value-1),ve=f.keys[me],pe=ve===void 0?void 0:r.indexes.get(ve),Me=k()-k(y);for(const ye of F.keys())r.indexes.has(ye)||F.delete(ye);if(r.keys.length===0||pe===void 0){Y=0,a.value=0,s.value=ue?k():Math.min(C,k());const ye=s.value,Be=Z;await e.nextTick(),Be===Z&&u.value===r&&_(ye,{},!0)}else{const ye=r.sizes.getOffset(pe+1)-f.sizes.getOffset(me+1),Be=ue?k():C+ye;ce(Be-C-Me),await e.nextTick()}d.value&&(s.value=J(),w(),ae())}),e.watch(()=>[t.hasOlder,t.loadingOlder],async([r])=>{r||(b=-1),await e.nextTick(),ae()}),e.onMounted(()=>{if(de(),d.value&&(d.value.scrollTop=t.initialScroll==="bottom"?0:-k(),s.value=J()),S(),typeof ResizeObserver<"u"){R=new ResizeObserver(de),M=new ResizeObserver(m),d.value&&R.observe(d.value);for(const[r]of W)M.observe(r)}e.nextTick(()=>{z=!0,w(),ae()})}),e.onUpdated(()=>{ne(),S()}),e.onBeforeUnmount(()=>{z=!1,P(),l(),Y=0,Z+=1,X+=1,R&&(R.disconnect(),R=void 0),M&&(M.disconnect(),M=void 0),W.clear(),E.clear()}),O({isAtBottom:L,scrollTo:he,scrollToIndex:we,scrollToTop:ke,scrollToBottom:Se}),(r,f)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"viewport",ref:d,class:"vue-chat-virtual-scroll",style:e.normalizeStyle(q.value),role:"log","aria-label":o.ariaLabel,"aria-live":"polite",tabindex:"0",onScrollPassive:se,onScrollendPassive:G,onPointerdownPassive:l,onWheelPassive:l,onKeydown:l,onTouchstartPassive:n,onTouchendPassive:h,onTouchcancelPassive:h},[e.createElementVNode("div",{class:"vue-chat-virtual-scroll__spacer",style:e.normalizeStyle({height:`${Math.max(A.value,c.value.total+a.value)}px`})},[o.loadingOlder?(e.openBlock(),e.createElementBlock("div",qe,[e.createElementVNode("div",null,[e.renderSlot(r.$slots,"loadingOlder",{},()=>[f[0]||(f[0]=e.createTextVNode("Loading older messages…",-1))])])])):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(I.value,({item:y,index:C,key:ue,bottom:me})=>(e.openBlock(),e.createElementBlock("div",{key:ue,ref_for:!0,ref:ve=>T(ve,ue),class:"vue-chat-virtual-scroll__item",style:e.normalizeStyle({transform:`translateY(${-me}px)`}),role:"article","aria-posinset":C+1,"aria-setsize":o.items.length},[e.renderSlot(r.$slots,"default",{item:y,index:C})],12,Ze))),128)),o.items.length?e.createCommentVNode("",!0):e.renderSlot(r.$slots,"empty",{},void 0,void 0,1)],4)],44,Ge))}});function Ve(o){const O=e.ref(),x=e.ref(0),t=e.ref(!1),p=e.ref(!1),d=e.computed(()=>Math.max(1,o.threshold())),s=e.computed(()=>o.refreshing()||p.value?d.value:x.value),a=e.computed(()=>Math.min(1,x.value/d.value)),v=e.computed(()=>o.refreshing()||p.value?"Refreshing…":a.value>=1?"Release to refresh":"Pull to refresh");function H(){O.value=void 0,t.value=!1,x.value=0}function L(E){var b;const R=E.currentTarget,M=((b=o.scrollTop)==null?void 0:b.call(o))??R.scrollTop;!o.enabled()||o.refreshing()||M>0||E.touches.length!==1||(O.value=E.touches[0].clientY,t.value=!0)}function F(E){var z;if(O.value===void 0||!t.value)return;const R=E.currentTarget;if((((z=o.scrollTop)==null?void 0:z.call(o))??R.scrollTop)>0||E.touches.length!==1){H();return}const b=E.touches[0].clientY-O.value;if(b<=0){x.value=0;return}E.preventDefault(),x.value=Math.min(b*.5,d.value*2)}function W(){if(O.value===void 0)return;const E=x.value>=d.value&&o.enabled()&&!o.refreshing();if(O.value=void 0,t.value=!1,!E){x.value=0;return}x.value=d.value,p.value=!0,o.onRefresh(),e.nextTick(()=>{o.refreshing()||(p.value=!1,x.value=0)})}return e.watch(()=>o.refreshing(),(E,R)=>{E?(p.value=!1,x.value=d.value):R&&(p.value=!1,x.value=0)}),{pulling:t,pullDistance:x,pullOffset:s,pullProgress:a,refreshMessage:v,refreshThreshold:d,handleTouchStart:L,handleTouchMove:F,handleTouchEnd:W,handleTouchCancel:H}}const Xe=["aria-label"],Je=["aria-posinset","aria-setsize"],Ce=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(o,{expose:O,emit:x}){const t=o,p=x,{pulling:d,pullDistance:s,pullOffset:a,pullProgress:v,refreshMessage:H,refreshThreshold:L,handleTouchStart:F,handleTouchMove:W,handleTouchEnd:E,handleTouchCancel:R}=Ve({enabled:()=>t.pullToRefresh,refreshing:()=>t.refreshing,threshold:()=>t.pullRefreshThreshold,onRefresh:()=>p("refresh")}),M=e.ref(),b=e.ref(0),z=e.ref(0),K=e.ref(0),N=new Map,Q=new Map;let Y,$,X=-1;const V=$e(),{getItemKey:U}=be({componentName:"DynamicVirtualScroll",items:()=>t.items,itemKey:()=>t.itemKey}),D=e.computed(()=>Math.max(1,t.estimatedItemSize)),Z=e.computed(()=>Math.max(1,t.loadingItemSize??D.value)),ee=e.computed(()=>Math.max(0,Math.floor(t.overscan))),ie=e.computed(()=>z.value>0?z.value:typeof t.height=="number"?Math.max(0,t.height):D.value),oe=e.computed(()=>{K.value;const i=new Array(t.items.length+1),l=new Array(t.items.length);i[0]=0;for(let n=0;n<t.items.length;n+=1){const h=U(t.items[n],n),w=N.get(h)??D.value;l[n]=w,i[n+1]=i[n]+w}return{offsets:i,sizes:l,total:i[t.items.length]??0}}),le=e.computed(()=>oe.value.total+(t.loading?Z.value:0)),fe=e.computed(()=>{const i=new Map;return t.items.forEach((l,n)=>{i.set(U(l,n),n)}),i});function A(i){if(t.items.length===0)return 0;const l=oe.value.offsets;let n=0,h=t.items.length;for(;n<h;){const w=Math.floor((n+h)/2);l[w+1]<=i?n=w+1:h=w}return Math.min(n,t.items.length-1)}const u=e.computed(()=>Math.max(0,A(b.value)-ee.value)),c=e.computed(()=>{if(t.items.length===0)return 0;const i=A(b.value+ie.value)+1;return Math.min(t.items.length,i+ee.value)}),k=e.computed(()=>t.items.slice(u.value,c.value).map((i,l)=>{const n=u.value+l;return{item:i,index:n,key:U(i,n),top:oe.value.offsets[n]}})),j=e.computed(()=>({height:Ie(t.height)}));function re(){var i;z.value=((i=M.value)==null?void 0:i.clientHeight)??0,V(M.value,t.height),e.nextTick(B)}function g(i){b.value=i.currentTarget.scrollTop,p("scroll",{scrollTop:b.value,startIndex:u.value,endIndex:c.value}),B()}function B(){const i=M.value;if(!i||!t.hasMore||t.loading||X===t.items.length)return;const l=Math.max(0,t.loadMoreThreshold);le.value-i.scrollTop-i.clientHeight<=l&&(X=t.items.length,p("loadMore"))}function I(i){const l=i.borderBoxSize;if(l){const n=Array.isArray(l)?l[0]:l;if(n!=null&&n.blockSize)return n.blockSize}return i.contentRect.height}function q(i){const l=oe.value;let n=0,h=!1;for(const w of i){const de=w.target,se=Q.get(de),ae=I(w);if(se===void 0||ae<=0)continue;const Te=N.get(se)??D.value;if(Math.abs(Te-ae)<.5)continue;const xe=fe.value.get(se);xe!==void 0&&l.offsets[xe+1]<=b.value&&(n+=ae-Te),N.set(se,ae),h=!0}h&&(K.value+=1,e.nextTick(B),n!==0&&e.nextTick(()=>{const w=M.value;w&&(w.scrollTop+=n,b.value=w.scrollTop)}))}function J(i,l){i instanceof HTMLElement&&(Q.set(i,l),$==null||$.observe(i))}function te(){for(const[i]of Q)i.isConnected||($==null||$.unobserve(i),Q.delete(i))}function ce(i,l={}){const n=M.value;if(!n)return;const h=Math.max(0,le.value-n.clientHeight),w=Math.min(Math.max(0,Number.isFinite(i)?i:0),h),de=l.behavior??"auto";de==="auto"&&(b.value=w),n.scrollTo({...l,top:w,behavior:de})}function P(i,l={}){const n=M.value;if(!n||t.items.length===0)return;const h=Math.min(t.items.length-1,Math.max(0,Math.floor(i))),{align:w="start",...de}=l;let se=oe.value.offsets[h];const ae=oe.value.sizes[h];w==="center"?se-=(n.clientHeight-ae)/2:w==="end"&&(se-=n.clientHeight-ae);const Te=Math.max(0,Math.min(se,le.value-n.clientHeight)),xe=de.behavior??"auto";xe==="auto"&&(b.value=Te),n.scrollTo({...de,top:Te,behavior:xe})}function G(i="auto"){var l;(l=M.value)==null||l.scrollTo({top:0,behavior:i})}return e.watch(()=>t.itemKey,()=>{N.clear(),K.value+=1}),e.watch(()=>t.items.length,async()=>{const i=new Set(t.items.map((h,w)=>U(h,w)));for(const h of N.keys())i.has(h)||N.delete(h);K.value+=1,await e.nextTick();const l=M.value;if(!l)return;const n=Math.max(0,le.value-l.clientHeight);l.scrollTop>n&&(l.scrollTop=n,b.value=n),B()}),e.watch(()=>[t.hasMore,t.loading],async([i])=>{i||(X=-1),await e.nextTick(),B()}),e.onMounted(()=>{if(re(),typeof ResizeObserver<"u"){Y=new ResizeObserver(re),$=new ResizeObserver(q),M.value&&Y.observe(M.value);for(const[i]of Q)$.observe(i)}e.nextTick(B)}),e.onUpdated(te),e.onBeforeUnmount(()=>{Y&&(Y.disconnect(),Y=void 0),$&&($.disconnect(),$=void 0),Q.clear()}),O({scrollTo:ce,scrollToIndex:P,scrollToTop:G}),(i,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(d)}]),style:e.normalizeStyle(j.value),role:"list","aria-label":o.ariaLabel,tabindex:"0",onScrollPassive:g,onTouchstartPassive:l[0]||(l[0]=(...n)=>e.unref(F)&&e.unref(F)(...n)),onTouchmove:l[1]||(l[1]=(...n)=>e.unref(W)&&e.unref(W)(...n)),onTouchend:l[2]||(l[2]=(...n)=>e.unref(E)&&e.unref(E)(...n)),onTouchcancel:l[3]||(l[3]=(...n)=>e.unref(R)&&e.unref(R)(...n))},[o.pullToRefresh||o.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(a)-e.unref(L)}px)`}),role:"status","aria-live":"polite"},[e.renderSlot(i.$slots,"refresh",{pullDistance:e.unref(s),progress:e.unref(v),refreshing:o.refreshing},()=>[e.createTextVNode(e.toDisplayString(e.unref(H)),1)])],4)):e.createCommentVNode("",!0),o.items.length||o.loading?(e.openBlock(),e.createElementBlock("div",{key:1,class:"vue-dynamic-virtual-scroll__spacer",style:e.normalizeStyle({height:`${le.value}px`,transform:`translateY(${e.unref(a)}px)`})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k.value,({item:n,index:h,key:w,top:de})=>(e.openBlock(),e.createElementBlock("div",{key:w,ref_for:!0,ref:se=>J(se,w),class:"vue-dynamic-virtual-scroll__item",style:e.normalizeStyle({transform:`translateY(${de}px)`}),role:"listitem","aria-posinset":h+1,"aria-setsize":o.items.length},[e.renderSlot(i.$slots,"default",{item:n,index:h})],12,Je))),128)),o.loading?(e.openBlock(),e.createElementBlock("div",{key:0,class:"vue-dynamic-virtual-scroll__loading",style:e.normalizeStyle({height:`${Z.value}px`,transform:`translateY(${oe.value.total}px)`}),role:"status","aria-live":"polite"},[e.renderSlot(i.$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(a)}px)`})},[e.renderSlot(i.$slots,"empty")],4))],46,Xe))}}),Qe=["aria-label"],et=["aria-current","aria-posinset","aria-setsize"],tt={key:1,class:"vue-short-media-feed__empty"},lt=36,ot=700,Ne=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(o,{expose:O,emit:x}){const t=o,p=x,d=e.ref(),s=e.ref(0),a=e.ref(V(t.activeIndex));let v,H=-1,L=0,F=!1,W;const E=$e(),{getItemKey:R}=be({componentName:"ShortMediaFeed",items:()=>t.items,itemKey:()=>t.itemKey}),M=e.computed(()=>Math.max(0,Math.floor(t.buffer))),b=e.computed(()=>Math.max(0,Math.floor(Number.isFinite(t.loadMoreThreshold)?t.loadMoreThreshold:0))),z=e.computed(()=>s.value>0?s.value:typeof t.height=="number"?Math.max(1,t.height):0),K=e.computed(()=>Math.max(0,a.value-M.value)),N=e.computed(()=>Math.min(t.items.length,a.value+M.value+1)),Q=e.computed(()=>t.items.slice(K.value,N.value).map((u,c)=>({item:u,index:K.value+c}))),Y=e.computed(()=>K.value*z.value),$=e.computed(()=>(t.items.length-N.value)*z.value),X=e.computed(()=>({height:Ie(t.height)}));function V(u){return t.items.length===0?0:Math.min(t.items.length-1,Math.max(0,Math.floor(Number.isFinite(u)?u:0)))}function U(){if(!t.hasMore||t.loading||H===t.items.length)return;(t.items.length===0?0:t.items.length-1-a.value)<=b.value&&(H=t.items.length,p("loadMore"))}function D(u){const c=V(u);c===a.value||t.items.length===0||(a.value=c,p("update:activeIndex",c),p("change",{index:c,item:t.items[c]}),c===0&&p("reachStart"),c===t.items.length-1&&p("reachEnd"),U())}function Z(u,c={}){const k=d.value;k&&(typeof k.scrollTo=="function"?k.scrollTo({...c,top:u}):k.scrollTop=u)}function ee(u,c={}){if(t.items.length===0)return;const k=V(u);D(k),Z(k*z.value,c)}function ie(u){if(z.value<=0)return;const c=u.currentTarget.scrollTop;D(Math.round(c/z.value))}function oe(u){let c;u.key==="ArrowDown"||u.key==="PageDown"?c=a.value+1:u.key==="ArrowUp"||u.key==="PageUp"?c=a.value-1:u.key==="Home"?c=0:u.key==="End"&&(c=t.items.length-1),c!==void 0&&(u.preventDefault(),ee(c,{behavior:"smooth"}))}function le(u){return u.deltaMode===WheelEvent.DOM_DELTA_LINE?u.deltaY*16:u.deltaMode===WheelEvent.DOM_DELTA_PAGE?u.deltaY*(z.value||1):u.deltaY}function fe(u){if(u.ctrlKey||Math.abs(u.deltaX)>Math.abs(u.deltaY)||t.items.length===0||z.value<=0||(u.preventDefault(),F))return;const c=le(u);if(c*L<0&&(L=0),L+=c,Math.abs(L)<lt)return;const k=L>0?1:-1;L=0;const j=a.value+k;j<0||j>=t.items.length||(F=!0,ee(j,{behavior:"smooth"}),W=setTimeout(()=>{F=!1},ot))}function A(){var c;const u=((c=d.value)==null?void 0:c.clientHeight)??0;E(d.value,t.height),!(u<=0||u===s.value)&&(s.value=u,e.nextTick(()=>{Z(a.value*u)}))}return e.watch(()=>t.activeIndex,async u=>{const c=V(u);c!==a.value&&(a.value=c,await e.nextTick(),Z(c*z.value),U())}),e.watch(()=>[t.hasMore,t.loading,t.loadMoreThreshold],async([u])=>{u||(H=-1),await e.nextTick(),U()}),e.watch(()=>t.items.length,async()=>{const u=V(a.value);t.items.length===0?a.value!==0&&(a.value=0,p("update:activeIndex",0)):D(u),await e.nextTick(),Z(u*z.value),U()}),e.onMounted(async()=>{A(),typeof ResizeObserver<"u"&&d.value&&(v=new ResizeObserver(A),v.observe(d.value)),await e.nextTick(),Z(a.value*z.value),U()}),e.onBeforeUnmount(()=>{v&&(v.disconnect(),v=void 0),W&&(clearTimeout(W),W=void 0)}),O({scrollToIndex:ee}),(u,c)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"viewport",ref:d,class:"vue-short-media-feed",style:e.normalizeStyle(X.value),role:"list","aria-orientation":"vertical","aria-label":o.ariaLabel,tabindex:"0",onScrollPassive:ie,onWheel:fe,onKeydown:oe},[o.items.length?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[Y.value>0?(e.openBlock(),e.createElementBlock("div",{key:0,class:"vue-short-media-feed__spacer",style:e.normalizeStyle({height:`${Y.value}px`}),"aria-hidden":"true"},null,4)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(Q.value,({item:k,index:j})=>(e.openBlock(),e.createElementBlock("div",{key:e.unref(R)(k,j),class:"vue-short-media-feed__item",style:e.normalizeStyle({height:`${z.value}px`}),role:"listitem","aria-current":j===a.value?"true":void 0,"aria-posinset":j+1,"aria-setsize":o.items.length},[e.renderSlot(u.$slots,"default",{item:k,index:j,active:j===a.value})],12,et))),128)),$.value>0?(e.openBlock(),e.createElementBlock("div",{key:1,class:"vue-short-media-feed__spacer",style:e.normalizeStyle({height:`${$.value}px`}),"aria-hidden":"true"},null,4)):e.createCommentVNode("",!0)],64)):(e.openBlock(),e.createElementBlock("div",tt,[e.renderSlot(u.$slots,"empty")]))],44,Qe))}}),nt=["aria-label"],at=e.defineComponent({__name:"SkeletonLoader",props:{width:{default:"100%"},height:{default:16},variant:{default:"rounded"},animated:{type:Boolean,default:!0},ariaLabel:{default:"Loading…"}},setup(o){const O=o;function x(p){return typeof p=="number"?`${Math.max(0,p)}px`:p}const t=e.computed(()=>({width:x(O.width),height:x(O.height)}));return(p,d)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["vue-skeleton-loader",[`vue-skeleton-loader--${o.variant}`,{"vue-skeleton-loader--animated":o.animated}]]),style:e.normalizeStyle(t.value),role:"status","aria-label":o.ariaLabel},null,14,nt))}}),rt=(o,O)=>{const x=o.__vccOpts||o;for(const[t,p]of O)x[t]=p;return x},De=rt(at,[["__scopeId","data-v-fc92f61f"]]),it=["aria-label"],st={key:0,class:"vue-virtual-carousel__track",role:"list"},ut=["aria-label","aria-current"],ct={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(o,{expose:O,emit:x}){const t=o,p=x,d=e.ref(),s=e.ref(0),a=e.ref(0);let v,H=-1,L,F,W=!1;const E=e.ref(!1),{getItemKey:R}=be({componentName:"VirtualCarousel",items:()=>t.items,itemKey:()=>t.itemKey}),M=e.computed(()=>Math.max(0,s.value)),b=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((h,w)=>w.breakpoint-h.breakpoint);for(const h of n)if(l>=h.breakpoint)return{slidesPerView:h.slidesPerView??t.slidesPerView,slidesToScroll:h.slidesToScroll??t.slidesToScroll,gap:h.gap??t.gap};return{slidesPerView:t.slidesPerView,slidesToScroll:t.slidesToScroll,gap:t.gap}}),z=e.computed(()=>Math.max(1,Math.floor(Number.isFinite(b.value.slidesPerView)?b.value.slidesPerView:1))),K=e.computed(()=>Math.max(1,Math.floor(Number.isFinite(b.value.slidesToScroll)?b.value.slidesToScroll:1))),N=e.computed(()=>Math.max(0,Number.isFinite(b.value.gap)?b.value.gap:0)),Q=e.computed(()=>Math.max(0,Math.floor(Number.isFinite(t.buffer)?t.buffer:0))),Y=e.computed(()=>Math.max(0,Math.floor(Number.isFinite(t.loadMoreThreshold)?t.loadMoreThreshold:0))),$=e.computed(()=>Number.isFinite(t.autoplayDelay)?Math.max(1,t.autoplayDelay):3e3),X=e.computed(()=>{if(M.value<=0)return 0;const l=(z.value-1)*N.value;return Math.max(1,(M.value-l)/z.value)}),V=e.computed(()=>X.value+N.value),U=e.computed(()=>Math.max(0,t.items.length-z.value)),D=e.computed(()=>Math.max(0,a.value-Q.value)),Z=e.computed(()=>Math.min(t.items.length,a.value+z.value+Q.value)),ee=e.computed(()=>t.items.slice(D.value,Z.value).map((l,n)=>({item:l,index:D.value+n}))),ie=e.computed(()=>t.items.length===0?0:t.items.length*X.value+(t.items.length-1)*N.value),oe=e.computed(()=>D.value*V.value),le=e.computed(()=>Math.max(0,ie.value-Z.value*V.value)),fe=e.computed(()=>({height:Ie(t.height)}));function A(l){return Math.min(U.value,Math.max(0,Math.floor(Number.isFinite(l)?l:0)))}a.value=A(t.activeIndex);function u(l){return l>=a.value&&l<Math.min(t.items.length,a.value+z.value)}function c(){if(!t.hasMore||t.loading||H===t.items.length)return;const l=t.items.length===0?-1:Math.min(t.items.length-1,a.value+z.value-1);t.items.length-1-l<=Y.value&&(H=t.items.length,p("loadMore"))}function k(l){const n=A(l);n===a.value||t.items.length===0||(a.value=n,p("update:activeIndex",n),p("change",{index:n,item:t.items[n]}),n===0&&p("reachStart"),n===U.value&&p("reachEnd"),c(),t.autoplay&&!E.value&&I())}function j(l,n={}){const h=d.value;h&&(typeof h.scrollTo=="function"?h.scrollTo({...n,left:l}):h.scrollLeft=l)}function re(l,n={}){if(t.items.length===0||V.value<=0)return;const h=A(l);F=n.behavior==="smooth"?h:void 0,k(h),j(h*V.value,{...n,behavior:n.behavior})}function g(l="smooth"){re(a.value+K.value,{behavior:l})}function B(l="smooth"){re(a.value-K.value,{behavior:l})}function I(){q(),!(!t.autoplay||t.items.length===0)&&(L=setTimeout(()=>{a.value>=U.value?t.autoplayLoop?re(0,{behavior:"smooth"}):q():g("smooth")},$.value))}function q(){L!==void 0&&(clearTimeout(L),L=void 0)}function J(){E.value=!0,t.pauseOnHover&&q()}function te(){E.value=!1,t.autoplay&&I()}function ce(){F=void 0}function P(l){if(V.value<=0||W)return;const n=l.currentTarget.scrollLeft;if(F!==void 0){const h=F*V.value;if(Math.abs(n-h)>1)return;F=void 0}k(Math.round(n/V.value))}function G(l){l.key==="ArrowRight"||l.key==="PageDown"?(l.preventDefault(),g()):l.key==="ArrowLeft"||l.key==="PageUp"?(l.preventDefault(),B()):l.key==="Home"?(l.preventDefault(),re(0,{behavior:"smooth"})):l.key==="End"&&(l.preventDefault(),re(U.value,{behavior:"auto"}))}function i(){var n;const l=((n=d.value)==null?void 0:n.clientWidth)??0;l<=0||l===s.value||(W=!0,s.value=l,e.nextTick(()=>{const h=A(a.value);j(h*V.value),W=!1}))}return e.watch(()=>t.activeIndex,async l=>{const n=A(l);n!==a.value&&(ce(),a.value=n,await e.nextTick(),j(n*V.value),c())}),e.watch(()=>[t.items.length,b.value.slidesPerView,b.value.gap,b.value.slidesToScroll],async()=>{const l=A(a.value);t.items.length===0?a.value!==0&&(a.value=0,p("update:activeIndex",0)):k(l),await e.nextTick(),j(l*V.value),c(),t.autoplay&&t.items.length>0&&!E.value&&I()}),e.watch(()=>t.responsive,()=>{e.nextTick(()=>{const l=A(a.value);j(l*V.value)})},{deep:!0}),e.watch(()=>[t.hasMore,t.loading,t.loadMoreThreshold],async([l])=>{l||(H=-1),await e.nextTick(),c()}),e.watch(()=>t.autoplay,l=>{l&&!E.value?I():q()}),e.watch(()=>t.autoplayDelay,()=>{t.autoplay&&!E.value&&I()}),e.watch(()=>t.autoplayLoop,l=>{!t.autoplay||E.value||(!l&&a.value>=U.value?q():I())}),e.watch(()=>t.pauseOnHover,l=>{l&&E.value?q():!l&&t.autoplay&&I()}),e.onMounted(async()=>{i(),typeof ResizeObserver<"u"&&d.value&&(v=new ResizeObserver(i),v.observe(d.value)),await e.nextTick(),j(a.value*V.value),c(),t.autoplay&&I()}),e.onBeforeUnmount(()=>{v&&(v.disconnect(),v=void 0),q()}),O({next:g,previous:B,scrollToIndex:re,startAutoplay:I,stopAutoplay:q}),(l,n)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"viewport",ref:d,class:"vue-virtual-carousel",style:e.normalizeStyle(fe.value),role:"region","aria-roledescription":"carousel","aria-label":o.ariaLabel,tabindex:"0",onScrollPassive:P,onPointerdown:ce,onWheelPassive:ce,onKeydown:G,onMouseenter:J,onMouseleave:te},[o.items.length?(e.openBlock(),e.createElementBlock("div",st,[oe.value>0?(e.openBlock(),e.createElementBlock("div",{key:0,class:"vue-virtual-carousel__spacer",style:e.normalizeStyle({flexBasis:`${oe.value}px`}),"aria-hidden":"true"},null,4)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(ee.value,({item:h,index:w})=>(e.openBlock(),e.createElementBlock("div",{key:e.unref(R)(h,w),class:"vue-virtual-carousel__item",style:e.normalizeStyle({flexBasis:`${X.value}px`,marginRight:w<o.items.length-1?`${N.value}px`:"0px"}),role:"listitem","aria-roledescription":"slide","aria-label":`${w+1} of ${o.items.length}`,"aria-current":w===a.value?"true":void 0},[e.renderSlot(l.$slots,"default",{item:h,index:w,active:w===a.value,visible:u(w)})],12,ut))),128)),le.value>0?(e.openBlock(),e.createElementBlock("div",{key:1,class:"vue-virtual-carousel__spacer",style:e.normalizeStyle({flexBasis:`${le.value}px`}),"aria-hidden":"true"},null,4)):e.createCommentVNode("",!0)])):(e.openBlock(),e.createElementBlock("div",ct,[e.renderSlot(l.$slots,"empty")]))],44,it))}}),dt=["aria-label"],mt=["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(o,{expose:O,emit:x}){const t=o,p=x,{pulling:d,pullDistance:s,pullOffset:a,pullProgress:v,refreshMessage:H,refreshThreshold:L,handleTouchStart:F,handleTouchMove:W,handleTouchEnd:E,handleTouchCancel:R}=Ve({enabled:()=>t.pullToRefresh,refreshing:()=>t.refreshing,threshold:()=>t.pullRefreshThreshold,onRefresh:()=>p("refresh")}),M=e.ref(),b=e.ref(0),z=e.ref(0);let K,N=-1;const Q=$e(),{getItemKey:Y}=be({componentName:"VirtualScroll",items:()=>t.items,itemKey:()=>t.itemKey}),$=e.computed(()=>Math.max(1,t.itemSize)),X=e.computed(()=>Math.max(0,Math.floor(t.overscan))),V=e.computed(()=>t.items.length*$.value),U=e.computed(()=>Math.max(1,t.loadingItemSize??$.value)),D=e.computed(()=>V.value+(t.loading?U.value:0)),Z=e.computed(()=>z.value>0?z.value:typeof t.height=="number"?t.height:0),ee=e.computed(()=>Math.max(0,Math.floor(b.value/$.value)-X.value)),ie=e.computed(()=>{const g=Math.ceil((b.value+Z.value)/$.value);return Math.min(t.items.length,g+X.value)}),oe=e.computed(()=>t.items.slice(ee.value,ie.value).map((g,B)=>({item:g,index:ee.value+B}))),le=e.computed(()=>({height:Ie(t.height)})),fe=e.computed(()=>({transform:`translateY(${ee.value*$.value}px)`}));function A(){var g;z.value=((g=M.value)==null?void 0:g.clientHeight)??0,Q(M.value,t.height),e.nextTick(c)}function u(g){b.value=g.currentTarget.scrollTop,p("scroll",{scrollTop:b.value,startIndex:ee.value,endIndex:ie.value}),c()}function c(){const g=M.value;if(!g||!t.hasMore||t.loading||N===t.items.length)return;const B=Math.max(0,t.loadMoreThreshold);D.value-g.scrollTop-g.clientHeight<=B&&(N=t.items.length,p("loadMore"))}function k(g,B={}){const I=M.value;if(!I)return;const q=Math.max(0,D.value-I.clientHeight),J=Math.min(Math.max(0,Number.isFinite(g)?g:0),q),te=B.behavior??"auto";te==="auto"&&(b.value=J),I.scrollTo({...B,top:J,behavior:te})}function j(g,B={}){const I=M.value;if(!I||t.items.length===0)return;const q=Math.min(t.items.length-1,Math.max(0,Math.floor(g))),{align:J="start",...te}=B;let ce=q*$.value;J==="center"?ce-=(I.clientHeight-$.value)/2:J==="end"&&(ce-=I.clientHeight-$.value),I.scrollTo({...te,top:Math.max(0,Math.min(ce,D.value-I.clientHeight))})}function re(g="auto"){var B;(B=M.value)==null||B.scrollTo({top:0,behavior:g})}return e.watch(()=>[t.items.length,t.itemSize],async()=>{await e.nextTick();const g=M.value;if(!g)return;const B=Math.max(0,D.value-g.clientHeight);g.scrollTop>B&&(g.scrollTop=B,b.value=B),c()}),e.watch(()=>[t.hasMore,t.loading],async([g])=>{g||(N=-1),await e.nextTick(),c()}),e.onMounted(()=>{A(),typeof ResizeObserver<"u"&&M.value&&(K=new ResizeObserver(A),K.observe(M.value)),e.nextTick(c)}),e.onBeforeUnmount(()=>{K&&(K.disconnect(),K=void 0)}),O({scrollTo:k,scrollToIndex:j,scrollToTop:re}),(g,B)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"viewport",ref:M,class:e.normalizeClass(["vue-virtual-scroll",{"vue-virtual-scroll--pulling":e.unref(d)}]),style:e.normalizeStyle(le.value),role:"list","aria-label":o.ariaLabel,tabindex:"0",onScrollPassive:u,onTouchstartPassive:B[0]||(B[0]=(...I)=>e.unref(F)&&e.unref(F)(...I)),onTouchmove:B[1]||(B[1]=(...I)=>e.unref(W)&&e.unref(W)(...I)),onTouchend:B[2]||(B[2]=(...I)=>e.unref(E)&&e.unref(E)(...I)),onTouchcancel:B[3]||(B[3]=(...I)=>e.unref(R)&&e.unref(R)(...I))},[o.pullToRefresh||o.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(a)-e.unref(L)}px)`}),role:"status","aria-live":"polite"},[e.renderSlot(g.$slots,"refresh",{pullDistance:e.unref(s),progress:e.unref(v),refreshing:o.refreshing},()=>[e.createTextVNode(e.toDisplayString(e.unref(H)),1)])],4)):e.createCommentVNode("",!0),o.items.length||o.loading?(e.openBlock(),e.createElementBlock("div",{key:1,class:"vue-virtual-scroll__spacer",style:e.normalizeStyle({height:`${D.value}px`,transform:`translateY(${e.unref(a)}px)`})},[e.createElementVNode("div",{class:"vue-virtual-scroll__content",style:e.normalizeStyle(fe.value)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(oe.value,({item:I,index:q})=>(e.openBlock(),e.createElementBlock("div",{key:e.unref(Y)(I,q),class:"vue-virtual-scroll__item",style:e.normalizeStyle({height:`${$.value}px`}),role:"listitem","aria-posinset":q+1,"aria-setsize":o.items.length},[e.renderSlot(g.$slots,"default",{item:I,index:q})],12,mt))),128))],4),o.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(g.$slots,"loading",{},()=>[B[4]||(B[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(a)}px)`})},[e.renderSlot(g.$slots,"empty")],4))],46,dt))}}),ft=["aria-label"],vt=["aria-posinset","aria-setsize"],Ae=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(o,{expose:O,emit:x}){const t=o,p=x,d=e.ref(),s=e.ref(0),a=e.ref(0),v=e.ref(0),H=e.ref(0),L=new Map,F=new Map,W=new Map;let E,R,M,b,z=!1,K=!1,N=-1;const{getItemKey:Q}=be({componentName:"WindowDynamicVirtualScroll",items:()=>t.items,itemKey:()=>t.itemKey});function Y(m){return typeof window.requestAnimationFrame=="function"?{id:window.requestAnimationFrame(m),type:"animation"}:{id:window.setTimeout(m,0),type:"timeout"}}function $(m){m&&(m.type==="animation"?window.cancelAnimationFrame(m.id):window.clearTimeout(m.id))}const{pulling:X,pullDistance:V,pullOffset:U,pullProgress:D,refreshMessage:Z,refreshThreshold:ee,handleTouchStart:ie,handleTouchMove:oe,handleTouchEnd:le,handleTouchCancel:fe}=Ve({enabled:()=>t.pullToRefresh,refreshing:()=>t.refreshing,threshold:()=>t.pullRefreshThreshold,onRefresh:()=>p("refresh"),scrollTop:()=>typeof window>"u"?0:Math.max(0,window.scrollY)}),A=e.computed(()=>Math.max(1,t.estimatedItemSize)),u=e.computed(()=>Math.max(1,t.loadingItemSize??A.value)),c=e.computed(()=>Math.max(0,Math.floor(t.overscan))),k=e.computed(()=>{H.value;const m=new Array(t.items.length+1),S=new Array(t.items.length);m[0]=0;for(let T=0;T<t.items.length;T+=1){const ne=Q(t.items[T],T),_=L.get(ne)??A.value;S[T]=_,m[T+1]=m[T]+_}return{offsets:m,sizes:S,total:m[t.items.length]??0}}),j=e.computed(()=>k.value.total+(t.loading?u.value:0)),re=e.computed(()=>{const m=new Map;return t.items.forEach((S,T)=>{m.set(Q(S,T),T)}),m}),g=e.computed(()=>Math.max(0,s.value-v.value));function B(m){if(t.items.length===0)return 0;const S=k.value.offsets;let T=0,ne=t.items.length;for(;T<ne;){const _=Math.floor((T+ne)/2);S[_+1]<=m?T=_+1:ne=_}return Math.min(T,t.items.length-1)}const I=e.computed(()=>Math.max(0,B(g.value)-c.value)),q=e.computed(()=>{if(t.items.length===0)return 0;const m=s.value+a.value-v.value,S=Math.max(A.value,m),T=B(S)+1;return Math.min(t.items.length,T+c.value)}),J=e.computed(()=>t.items.slice(I.value,q.value).map((m,S)=>{const T=I.value+S;return{item:m,index:T,key:Q(m,T),top:k.value.offsets[T]}}));function te(){typeof window>"u"||(s.value=Math.max(0,window.scrollY),a.value=window.innerHeight,d.value&&(v.value=d.value.getBoundingClientRect().top+s.value))}function ce(){p("scroll",{scrollTop:g.value,startIndex:I.value,endIndex:q.value})}function P(m=!1){K&&(z||(z=m),!M&&(M=Y(()=>{M=void 0,te(),z&&(z=!1,ce()),l()})))}function G(){P(!0)}function i(){P()}function l(){if(typeof window>"u"||!t.hasMore||t.loading||N===t.items.length)return;const m=Math.max(0,t.loadMoreThreshold),S=v.value+j.value,T=s.value+a.value;S-T<=m&&(N=t.items.length,p("loadMore"))}function n(m){const S=m.borderBoxSize;if(S){const T=Array.isArray(S)?S[0]:S;if(T!=null&&T.blockSize)return T.blockSize}return m.contentRect.height}function h(m){const S=k.value;let T=0,ne=!1;for(const _ of m){const he=_.target,ge=F.get(he),we=n(_);if(ge===void 0||we<=0)continue;const ke=L.get(ge)??A.value;if(Math.abs(ke-we)<.5)continue;const Se=re.value.get(ge);Se!==void 0&&S.offsets[Se+1]<=g.value&&(T+=we-ke),L.set(ge,we),ne=!0}ne&&(H.value+=1,e.nextTick(()=>{if(K){if(T!==0&&typeof window<"u"){const _=Math.max(0,s.value+T);s.value=_,window.scrollTo({top:_,behavior:"auto"})}te(),l()}}))}function w(m){if(K){for(const S of m)W.set(S.target,S);b||(b=Y(()=>{b=void 0;const S=Array.from(W.values());W.clear(),h(S)}))}}function de(m,S){m instanceof HTMLElement&&(F.set(m,S),R==null||R.observe(m))}function se(){for(const[m]of F)m.isConnected||(R==null||R.unobserve(m),F.delete(m))}function ae(m,S={}){if(typeof window>"u")return;te();const T=Math.max(0,j.value-a.value),ne=Math.min(Math.max(0,Number.isFinite(m)?m:0),T),_=Math.max(0,v.value+ne),he=S.behavior??"auto";he==="auto"&&(s.value=_),window.scrollTo({...S,top:_,behavior:he})}function Te(m,S={}){if(typeof window>"u"||t.items.length===0)return;te();const T=Math.min(t.items.length-1,Math.max(0,Math.floor(m))),{align:ne="start",..._}=S,he=k.value.sizes[T];let ge=v.value+k.value.offsets[T];ne==="center"?ge-=(a.value-he)/2:ne==="end"&&(ge-=a.value-he);const we=Math.max(v.value,v.value+j.value-a.value),ke=Math.max(0,Math.min(ge,we)),Se=_.behavior??"auto";Se==="auto"&&(s.value=ke),window.scrollTo({..._,top:ke,behavior:Se})}function xe(m="auto"){typeof window>"u"||(te(),window.scrollTo({top:Math.max(0,v.value),behavior:m}))}return e.watch(()=>t.itemKey,()=>{L.clear(),H.value+=1,N=-1}),e.watch(()=>t.items.map((m,S)=>Q(m,S)),async(m,S)=>{const T=m.length!==S.length||m.some((_,he)=>_!==S[he]),ne=new Set(m);for(const _ of L.keys())ne.has(_)||L.delete(_);T&&(N=-1),H.value+=1,await e.nextTick(),K&&(te(),l())}),e.watch(()=>[t.hasMore,t.loading],async([m])=>{m||(N=-1),await e.nextTick(),K&&(te(),l())}),e.onMounted(()=>{if(K=!0,te(),window.addEventListener("scroll",G,{passive:!0}),window.addEventListener("resize",i,{passive:!0}),typeof ResizeObserver<"u"){E=new ResizeObserver(()=>{P()}),R=new ResizeObserver(w),d.value&&E.observe(d.value);for(const[m]of F)R.observe(m)}e.nextTick(()=>{K&&l()})}),e.onUpdated(se),e.onBeforeUnmount(()=>{K=!1,window.removeEventListener("scroll",G),window.removeEventListener("resize",i),$(M),$(b),M=void 0,b=void 0,z=!1,W.clear(),E&&(E.disconnect(),E=void 0),R&&(R.disconnect(),R=void 0),F.clear()}),O({scrollTo:ae,scrollToIndex:Te,scrollToTop:xe}),(m,S)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"root",ref:d,class:e.normalizeClass(["vue-window-dynamic-virtual-scroll",{"vue-window-dynamic-virtual-scroll--pulling":e.unref(X)}]),role:"list","aria-label":o.ariaLabel,onTouchstartPassive:S[0]||(S[0]=(...T)=>e.unref(ie)&&e.unref(ie)(...T)),onTouchmove:S[1]||(S[1]=(...T)=>e.unref(oe)&&e.unref(oe)(...T)),onTouchend:S[2]||(S[2]=(...T)=>e.unref(le)&&e.unref(le)(...T)),onTouchcancel:S[3]||(S[3]=(...T)=>e.unref(fe)&&e.unref(fe)(...T))},[o.pullToRefresh||o.refreshing?(e.openBlock(),e.createElementBlock("div",{key:0,class:"vue-window-dynamic-virtual-scroll__refresh",style:e.normalizeStyle({height:`${e.unref(ee)}px`,transform:`translateY(${e.unref(U)-e.unref(ee)}px)`}),role:"status","aria-live":"polite"},[e.renderSlot(m.$slots,"refresh",{pullDistance:e.unref(V),progress:e.unref(D),refreshing:o.refreshing},()=>[e.createTextVNode(e.toDisplayString(e.unref(Z)),1)])],4)):e.createCommentVNode("",!0),o.items.length||o.loading?(e.openBlock(),e.createElementBlock("div",{key:1,class:"vue-window-dynamic-virtual-scroll__spacer",style:e.normalizeStyle({height:`${j.value}px`,transform:`translateY(${e.unref(U)}px)`})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(J.value,({item:T,index:ne,key:_,top:he})=>(e.openBlock(),e.createElementBlock("div",{key:_,ref_for:!0,ref:ge=>de(ge,_),class:"vue-window-dynamic-virtual-scroll__item",style:e.normalizeStyle({transform:`translateY(${he}px)`}),role:"listitem","aria-posinset":ne+1,"aria-setsize":o.items.length},[e.renderSlot(m.$slots,"default",{item:T,index:ne})],12,vt))),128)),o.loading?(e.openBlock(),e.createElementBlock("div",{key:0,class:"vue-window-dynamic-virtual-scroll__loading",style:e.normalizeStyle({height:`${u.value}px`,transform:`translateY(${k.value.total}px)`}),role:"status","aria-live":"polite"},[e.renderSlot(m.$slots,"loading",{},()=>[S[4]||(S[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(m.$slots,"empty")],4))],42,ft))}}),ht=["aria-label"],pt=["aria-posinset","aria-setsize"],Fe=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(o,{expose:O,emit:x}){const t=o,p=x,d=e.ref(),s=e.ref(0),a=e.ref(0),v=e.ref(0);let H,L=-1;const{getItemKey:F}=be({componentName:"WindowGirdVirtualScroll",items:()=>t.items,itemKey:()=>t.itemKey}),{pulling:W,pullDistance:E,pullOffset:R,pullProgress:M,refreshMessage:b,refreshThreshold:z,handleTouchStart:K,handleTouchMove:N,handleTouchEnd:Q,handleTouchCancel:Y}=Ve({enabled:()=>t.pullToRefresh,refreshing:()=>t.refreshing,threshold:()=>t.pullRefreshThreshold,onRefresh:()=>p("refresh"),scrollTop:()=>typeof window>"u"?0:Math.max(0,window.scrollY)}),$=e.computed(()=>Math.max(1,t.itemSize)),X=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))),D=e.computed(()=>Math.max(1,t.loadingItemSize??$.value)),Z=e.computed(()=>$.value+V.value),ee=e.computed(()=>Math.ceil(t.items.length/X.value)),ie=e.computed(()=>ee.value===0?0:ee.value*$.value+(ee.value-1)*V.value),oe=e.computed(()=>ie.value+(t.items.length?V.value:0)),le=e.computed(()=>ie.value+(t.loading?D.value+(t.items.length?V.value:0):0)),fe=e.computed(()=>Math.max(0,s.value-v.value)),A=e.computed(()=>Math.max(0,Math.floor(fe.value/Z.value)-U.value)),u=e.computed(()=>{if(ee.value===0)return 0;const P=Math.max($.value,s.value+a.value-v.value),G=Math.ceil((P+V.value)/Z.value);return Math.min(ee.value,G+U.value)}),c=e.computed(()=>Math.min(t.items.length,A.value*X.value)),k=e.computed(()=>Math.min(t.items.length,u.value*X.value)),j=e.computed(()=>t.items.slice(c.value,k.value).map((P,G)=>{const i=c.value+G;return{item:P,index:i,key:F(P,i),rowIndex:Math.floor(i/X.value),columnIndex:i%X.value}})),re=e.computed(()=>({gridTemplateColumns:`repeat(${X.value}, minmax(0, 1fr))`,columnGap:`${V.value}px`,rowGap:`${V.value}px`,transform:`translateY(${A.value*Z.value}px)`}));function g(){typeof window>"u"||(s.value=Math.max(0,window.scrollY),a.value=window.innerHeight,d.value&&(v.value=d.value.getBoundingClientRect().top+s.value))}function B(){p("scroll",{scrollTop:fe.value,startIndex:c.value,endIndex:k.value})}function I(){g(),B(),q()}function q(){if(typeof window>"u"||!t.hasMore||t.loading||L===t.items.length)return;const P=Math.max(0,t.loadMoreThreshold),G=v.value+le.value,i=s.value+a.value;G-i<=P&&(L=t.items.length,p("loadMore"))}function J(P,G={}){if(typeof window>"u")return;g();const i=Math.max(0,le.value-a.value),l=Math.min(Math.max(0,Number.isFinite(P)?P:0),i),n=Math.max(0,v.value+l),h=G.behavior??"auto";h==="auto"&&(s.value=n),window.scrollTo({...G,top:n,behavior:h})}function te(P,G={}){if(typeof window>"u"||t.items.length===0)return;g();const i=Math.min(t.items.length-1,Math.max(0,Math.floor(P))),l=Math.floor(i/X.value),{align:n="start",...h}=G;let w=v.value+l*Z.value;n==="center"?w-=(a.value-$.value)/2:n==="end"&&(w-=a.value-$.value);const de=Math.max(v.value,v.value+le.value-a.value),se=Math.max(0,Math.min(w,de)),ae=h.behavior??"auto";ae==="auto"&&(s.value=se),window.scrollTo({...h,top:se,behavior:ae})}function ce(P="auto"){typeof window>"u"||(g(),window.scrollTo({top:Math.max(0,v.value),behavior:P}))}return e.watch(()=>[t.items.length,t.itemSize,t.columns,t.gap],async()=>{await e.nextTick(),g(),q()}),e.watch(()=>[t.hasMore,t.loading],async([P])=>{P||(L=-1),await e.nextTick(),g(),q()}),e.onMounted(()=>{g(),window.addEventListener("scroll",I,{passive:!0}),window.addEventListener("resize",I,{passive:!0}),typeof ResizeObserver<"u"&&(H=new ResizeObserver(()=>{g(),q()}),d.value&&H.observe(d.value)),e.nextTick(q)}),e.onBeforeUnmount(()=>{window.removeEventListener("scroll",I),window.removeEventListener("resize",I),H&&(H.disconnect(),H=void 0)}),O({scrollTo:J,scrollToIndex:te,scrollToTop:ce}),(P,G)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"root",ref:d,class:e.normalizeClass(["vue-window-gird-virtual-scroll",{"vue-window-gird-virtual-scroll--pulling":e.unref(W)}]),role:"list","aria-label":o.ariaLabel,onTouchstartPassive:G[0]||(G[0]=(...i)=>e.unref(K)&&e.unref(K)(...i)),onTouchmove:G[1]||(G[1]=(...i)=>e.unref(N)&&e.unref(N)(...i)),onTouchend:G[2]||(G[2]=(...i)=>e.unref(Q)&&e.unref(Q)(...i)),onTouchcancel:G[3]||(G[3]=(...i)=>e.unref(Y)&&e.unref(Y)(...i))},[o.pullToRefresh||o.refreshing?(e.openBlock(),e.createElementBlock("div",{key:0,class:"vue-window-gird-virtual-scroll__refresh",style:e.normalizeStyle({height:`${e.unref(z)}px`,transform:`translateY(${e.unref(R)-e.unref(z)}px)`}),role:"status","aria-live":"polite"},[e.renderSlot(P.$slots,"refresh",{pullDistance:e.unref(E),progress:e.unref(M),refreshing:o.refreshing},()=>[e.createTextVNode(e.toDisplayString(e.unref(b)),1)])],4)):e.createCommentVNode("",!0),o.items.length||o.loading?(e.openBlock(),e.createElementBlock("div",{key:1,class:"vue-window-gird-virtual-scroll__spacer",style:e.normalizeStyle({height:`${le.value}px`,transform:`translateY(${e.unref(R)}px)`})},[e.createElementVNode("div",{class:"vue-window-gird-virtual-scroll__content",style:e.normalizeStyle(re.value)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(j.value,({item:i,index:l,key:n,rowIndex:h,columnIndex:w})=>(e.openBlock(),e.createElementBlock("div",{key:n,class:"vue-window-gird-virtual-scroll__item",style:e.normalizeStyle({height:`${$.value}px`}),role:"listitem","aria-posinset":l+1,"aria-setsize":o.items.length},[e.renderSlot(P.$slots,"default",{item:i,index:l,rowIndex:h,columnIndex:w})],12,pt))),128))],4),o.loading?(e.openBlock(),e.createElementBlock("div",{key:0,class:"vue-window-gird-virtual-scroll__loading",style:e.normalizeStyle({height:`${D.value}px`,transform:`translateY(${oe.value}px)`}),role:"status","aria-live":"polite"},[e.renderSlot(P.$slots,"loading",{},()=>[G[4]||(G[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(R)}px)`})},[e.renderSlot(P.$slots,"empty")],4))],42,ht))}}),We=Ce,Ye={install(o){o.component("ChatVirtualScroll",Oe),o.component("DynamicVirtualScroll",Ce),o.component("ShortMediaFeed",Ne),o.component("SkeletonLoader",De),o.component("VirtualCarousel",Ke),o.component("VirtualList",We),o.component("VirtualScroll",Pe),o.component("WindowDynamicVirtualScroll",Ae),o.component("WindowGirdVirtualScroll",Fe)}};exports.ChatVirtualScroll=Oe;exports.DynamicVirtualScroll=Ce;exports.ShortMediaFeed=Ne;exports.SkeletonLoader=De;exports.VirtualCarousel=Ke;exports.VirtualList=We;exports.VirtualScroll=Pe;exports.VueVirtualScroll=Ye;exports.WindowDynamicVirtualScroll=Ae;exports.WindowGirdVirtualScroll=Fe;exports.default=Ye;
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue");function vt(n){return typeof n=="string"||typeof n=="number"||typeof n=="symbol"}function rt(n,u){const k=n[u];return vt(k)?k:void 0}function Ct(n){return rt(n,"id")??rt(n,"key")}function We(n){const u=new WeakMap,k=new Map;function t(w){if(vt(w))return w;if(w!==null&&typeof w=="object"){let d=u.get(w);return d||(d=Symbol(`${n.componentName} item`),u.set(w,d)),d}let f=k.get(w);return f||(f=Symbol(`${n.componentName} primitive`),k.set(w,f)),f}function x(w,f){const d=n.itemKey();if(typeof d=="function")return d(w,f);if(w!==null&&typeof w=="object"){if(d!==void 0){const v=rt(w,d);if(v!==void 0)return v}const a=Ct(w);if(a!==void 0)return a}return t(w)}function g(){}return e.watch(()=>[n.itemKey(),n.items(),n.items().length],g,{immediate:!0}),{getItemKey:x}}const $t=new Set(["ArrowDown","ArrowUp","End","Home","PageDown","PageUp"," "]);function Lt(n){const u=e.ref(!1);let k=!1,t=!1,x;function g(){clearTimeout(x),x=void 0}function w(S){S!==u.value&&(u.value=S,n.onChange(S))}function f(){k||t||(g(),w(!1),n.onSettled())}function d(){g(),(u.value||n.hasProgrammaticScroll())&&!k&&!t&&(x=setTimeout(f,n.delay()))}function a(){n.onInterrupt(),g(),w(!0),n.onStart()}function v(){k=!0,a()}function I(S){k=S.touches.length>0,d()}function O(){a(),d()}function L(S){n.onInterrupt(),$t.has(S.key)&&(a(),d())}function $(S){n.onInterrupt(),S.pointerType==="mouse"&&S.target===n.viewport()&&(t=!0,a())}function B(){t&&(t=!1,d())}return{isScrolling:u,setScrolling:w,scheduleScrollEnd:d,handleScrollEnd:f,handleTouchStart:v,handleTouchEnd:I,handleWheel:O,handleKeyDown:L,handlePointerDown:$,handlePointerUp:B,dispose:g}}function Xe(n){return n==="fill"?"100%":typeof n=="number"?`${n}px`:n}function et(n){return(u,k)=>{typeof k=="string"&&(k==="fill"||k.trim().endsWith("%"))}}function Pe(n){return(n==null?void 0:n.count)??0}function qe(n){return(n==null?void 0:n.total)??0}function st(n){n.count=1+Pe(n.left)+Pe(n.right),n.total=n.size+qe(n.left)+qe(n.right),n.left&&(n.left.parent=n),n.right&&(n.right.parent=n)}function Ge(n,u){return n?u?n.priority<u.priority?(n.right=Ge(n.right,u),st(n),n):(u.left=Ge(n,u.left),st(u),u):n:u}function Vt(n){let u,k=0;const t=new Map;function x(d){const a=new Set;for(const v of d){if(t.has(v.key)||a.has(v.key))throw new Error(`[vue-virtual-flow] Duplicate item key \`${String(v.key)}\`. ChatVirtualScroll requires a unique stable key for every message.`);a.add(v.key)}}function g(d){k+=1;let a=Math.imul(k^2654435769,2246822507);a^=a>>>13,a=Math.imul(a,3266489909)^a>>>16;const v={key:d.key,size:d.size,priority:a>>>0,count:1,total:d.size};return t.set(d.key,v),v}function w(d){let a;for(const v of d)a=Ge(a,g(v));return a&&(a.parent=void 0),a}function f(d){let a=u,v=d;for(;a;){const I=Pe(a.left);if(v<I)a=a.left;else{if(v===I)return a;v-=I+1,a=a.right}}}return x(n),u=w(n),{get length(){return Pe(u)},get total(){return qe(u)},getSize(d){var a;return((a=f(d))==null?void 0:a.size)??0},getOffset(d){let a=u,v=Math.max(0,Math.min(d,Pe(u))),I=0;for(;a&&v>0;){const O=Pe(a.left);v<=O?a=a.left:(I+=qe(a.left)+a.size,v-=O+1,a=a.right)}return I},setSize(d,a){let v=f(d);if(!(!v||v.size===a))for(v.size=a;v;)st(v),v=v.parent},findIndex(d){if(!u||d<=0)return 0;if(d>=u.total)return u.count-1;let a=u,v=0,I=d;for(;a;){const O=qe(a.left),L=Pe(a.left);if(I<O)a=a.left;else{if(I<O+a.size)return v+L;I-=O+a.size,v+=L+1,a=a.right}}return Math.max(0,Pe(u)-1)},getKey(d){var a;return(a=f(d))==null?void 0:a.key},getIndex(d){let a=t.get(d);if(!a)return;let v=Pe(a.left);for(;a.parent;)a===a.parent.right&&(v+=Pe(a.parent.left)+1),a=a.parent;return a===u?v:void 0},getSizeByKey(d){var a;return(a=t.get(d))==null?void 0:a.size},hasKey(d){return t.has(d)},append(d){d.length!==0&&(x(d),u=Ge(u,w(d)),u&&(u.parent=void 0))},prepend(d){d.length!==0&&(x(d),u=Ge(w(d),u),u&&(u.parent=void 0))}}}const Pt=["aria-label","aria-live"],At={key:0,class:"vue-chat-virtual-scroll__loading-older",role:"status","aria-live":"polite"},Dt=["aria-posinset","aria-setsize"],Nt={key:0,class:"vue-chat-virtual-scroll__new-items",role:"status"},ht=e.defineComponent({name:"ChatVirtualScroll",inheritAttrs:!1,__name:"ChatVirtualScroll",props:{items:{},itemsVersion:{},estimatedItemSize:{default:48},estimateItemSize:{},height:{default:400},overscan:{default:5},size:{default:void 0},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},scrollEndDelay:{default:150},syncMeasurement:{type:Boolean,default:!0},pinnedKeys:{default:()=>[]},maxPinnedItems:{default:20},keepFocusedItem:{type:Boolean,default:!0},showNewItemsIndicator:{type:Boolean,default:!0},newItemsLabel:{type:Function,default:void 0},forceStickToBottom:{type:Function,default:void 0},contain:{type:Boolean,default:!0}},emits:["scroll","loadOlder","bottomChange","scrollingChange","newItemsChange","visibleChange"],setup(n,{expose:u,emit:k}){const t=n,x=k,g=e.ref(),w=e.ref(0),f=e.ref(0),d=e.ref(0),a=e.ref(0),v=e.ref(!0),I=e.ref(0),O=e.ref(),L=new Set,$=new Map,B=new Set;let S,V,A=-1,U=!1,Z=0,ae=!1,K=0,ie,Q,ee,te=0;const R=et(),{getItemKey:_}=We({componentName:"ChatVirtualScroll",items:()=>t.items,itemKey:()=>t.itemKey}),de=e.computed(()=>Number.isFinite(t.estimatedItemSize)?Math.max(1,t.estimatedItemSize):48),me=e.computed(()=>Math.max(0,Math.floor(t.overscan))),ue=e.computed(()=>Number.isFinite(t.scrollEndDelay)?Math.max(0,t.scrollEndDelay):150),{isScrolling:J,setScrolling:H,scheduleScrollEnd:T,handleScrollEnd:E,handleTouchStart:le,handleTouchEnd:re,handleWheel:xe,handleKeyDown:C,handlePointerDown:F,handlePointerUp:q,dispose:ve}=Lt({delay:()=>ue.value,viewport:()=>g.value,hasProgrammaticScroll:()=>ee!==void 0,onInterrupt:Se,onStart:()=>{f.value=Z},onSettled:()=>{const i=ee;if(ee=void 0,i){i();return}w.value=N(),ge()},onChange:i=>{U&&x("scrollingChange",i)}}),we=e.computed(()=>Number.isFinite(t.maxPinnedItems)?Math.max(0,Math.floor(t.maxPinnedItems)):20),pe=e.computed(()=>t.size!==void 0&&Number.isFinite(t.size)&&t.size>0?Math.max(1,Math.floor(t.size)):void 0),fe=e.computed(()=>d.value>0?d.value:typeof t.height=="number"?Math.max(0,t.height):de.value);function ne(i,c){var W;const y=(W=t.estimateItemSize)==null?void 0:W.call(t,i,c);return Number.isFinite(y)&&(y??0)>0?y:de.value}function oe(i){return Vt(t.items.map((c,y)=>{const W=_(c,y);return{key:W,size:L.has(W)?(i==null?void 0:i.getSizeByKey(W))??ne(c,y):ne(c,y)}}))}const m=e.shallowRef({sizes:oe()}),M=e.computed(()=>(a.value,{sizes:m.value.sizes,total:m.value.sizes.total}));function s(i=M.value.total){return Math.max(0,i-fe.value)}function Y(i){return M.value.sizes.findIndex(i)}w.value=t.initialScroll==="bottom"?s():0;const G=e.computed(()=>{if(t.items.length===0)return{start:0,end:0};const i=Y(w.value),c=Y(w.value+fe.value)+1;return{start:i,end:Math.min(t.items.length,c)}}),ye=e.computed(()=>{if(t.items.length===0)return{start:0,end:0};const i=G.value.start,c=G.value.end,y=Math.max(0,i-me.value),W=Math.min(t.items.length,c+me.value),ke=pe.value;if(ke===void 0||W-y<=ke)return{start:y,end:W};const Me=Math.max(0,ke-(c-i)),Ie=i-y,Ce=W-c;let Ve=Math.min(Ie,Math.ceil(Me/2));const Ne=Math.min(Ce,Me-Ve);return Ve=Math.min(Ie,Me-Ne),{start:i-Ve,end:c+Ne}}),r=e.computed(()=>ye.value.start),P=e.computed(()=>ye.value.end),X=e.computed(()=>{const i=new Set;for(let c=r.value;c<P.value;c+=1)i.add(c);for(const c of t.pinnedKeys.slice(0,we.value)){const y=m.value.sizes.getIndex(c);y!==void 0&&i.add(y)}if(t.keepFocusedItem&&O.value!==void 0){const c=m.value.sizes.getIndex(O.value);c!==void 0&&i.add(c)}return[...i].sort((c,y)=>c-y)}),j=e.computed(()=>X.value.map(i=>{const c=t.items[i];return{item:c,index:i,key:_(c,i),bottom:Math.max(M.value.total,fe.value)-M.value.sizes.getOffset(i+1)+f.value}})),p=e.computed(()=>({height:Xe(t.height)})),b=e.computed(()=>({"vue-chat-virtual-scroll--contained":t.contain})),z=e.computed(()=>v.value&&!J.value?"polite":"off");function se(i){var c;return((c=t.newItemsLabel)==null?void 0:c.call(t,i))??`${i} new ${i===1?"message":"messages"}`}function N(i=M.value.total){var W;const c=s(i),y=Math.min(0,((W=g.value)==null?void 0:W.scrollTop)??0);return Math.max(0,Math.min(c,c+y+Z))}function ge(i=!1){if(ae||(J.value||ee)&&!i||Z===0)return;ae=!0;const c=te,y=++K;f.value=0,e.nextTick(()=>{if(y!==K)return;ae=!1;const W=g.value;!W||c!==te||Z===0||(Z=0,W.scrollTop=Math.min(0,w.value-s()),Q=W.scrollTop,w.value=N(),l(),D())})}function ce(i){const c=g.value;if(c){if(Z+=i,w.value=N(),Z===0||s()===0){Z=0,f.value=0;return}(J.value||ee)&&!ae?(f.value=Z,c.scrollTop>=-1&&ge(!0)):ge()}}function Se(){ie=void 0,ee=void 0}function $e(){if(!t.keepFocusedItem){O.value=void 0;return}const i=document.activeElement,c=i instanceof Element?i.closest(".vue-chat-virtual-scroll__item"):null;O.value=c?$.get(c):void 0}function Le(){$e()}function nt(){e.nextTick($e)}function Ze(i){const c=Math.max(0,Math.floor(i));c!==I.value&&(I.value=c,U&&x("newItemsChange",c))}function Oe(){Ze(0)}function Ye(){x("visibleChange",{scrollTop:N(),startIndex:G.value.start,endIndex:G.value.end})}function l(){const i=g.value;if(!i)return;const y=Math.max(0,M.value.total-N()-i.clientHeight)<=Math.max(0,t.bottomThreshold);y!==v.value&&(v.value=y,U&&x("bottomChange",y)),y&&Oe()}function o(){var i;d.value=((i=g.value)==null?void 0:i.clientHeight)??0,U&&(w.value=N()),R(g.value,t.height),e.nextTick(()=>{l(),D()})}function h(){var i,c;ie&&Q!==void 0&&Math.abs((((i=g.value)==null?void 0:i.scrollTop)??0)-Q)>1&&Se(),w.value=N(),Z!==0&&(((c=g.value)==null?void 0:c.scrollTop)??0)>=-1&&ge(!0),T(),l(),x("scroll",{scrollTop:w.value,startIndex:r.value,endIndex:P.value}),D()}function D(){const i=g.value;!U||!i||!t.hasOlder||t.loadingOlder||A===t.items.length||N()<=Math.max(0,t.loadOlderThreshold)&&(A=t.items.length,x("loadOlder"))}function he(i){const c=i.borderBoxSize;if(c){const y=Array.isArray(c)?c[0]:c;if(y!=null&&y.blockSize)return y.blockSize}return i.contentRect.height}function ze(i){const c=M.value.total,y=N(),W=!J.value&&!ee&&v.value&&t.stickToBottom&&(U||t.initialScroll==="bottom"),ke=Y(y+fe.value-1),Me=!W&&y<=0;let Ie=0,Ce=!1;for(const{key:Qe,height:Ke}of i){if(!Number.isFinite(Ke)||Ke<=0)continue;const Ae=m.value.sizes.getIndex(Qe);if(Ae===void 0)continue;const Re=M.value.sizes.getSize(Ae);L.add(Qe),!(Math.abs(Re-Ke)<.5)&&(Ae<=ke&&(Ie+=Ke-Re),M.value.sizes.setSize(Ae,Ke),Ce=!0)}if(!Ce)return;a.value+=1;const Ve=s()-s(c),Ne=ie&&m.value.sizes.getIndex(ie.key),at=Ne!==void 0&&ie?dt(Ne,ie.align):W?s():Me?0:y+Ie;ce(at-y-Ve),e.nextTick(l)}function be(i){const c=[];for(const y of i){const W=$.get(y.target);W!==void 0&&c.push({key:W,height:he(y)})}ze(c)}function Ee(){const i=[];for(const c of B){const y=$.get(c);y!==void 0&&c.isConnected&&i.push({key:y,height:c.getBoundingClientRect().height})}B.clear(),ze(i)}function He(i,c){i instanceof HTMLElement&&$.get(i)!==c&&($.set(i,c),t.syncMeasurement&&!L.has(c)&&B.add(i),V==null||V.observe(i))}function kt(){for(const[i]of $)i.isConnected||(V==null||V.unobserve(i),$.delete(i),B.delete(i))}function Ue(i,c,y=!1){const W=g.value;if(!W)return;const ke=N(),Me=f.value!==0,Ie=++te;K+=1,ae=!1,ie=void 0;const Ce=c.behavior??"auto";ee=Ce==="smooth"?()=>ct(i):void 0,Z=0,f.value=0,H(!1),ve(),Ce==="auto"&&(w.value=i);const Ve=()=>{g.value!==W||Ie!==te||(Me&&Ce!=="auto"&&(W.scrollTop=ke-s()),y&&Ce==="auto"?W.scrollTop=i-s():W.scrollTo({...c,top:i-s(),behavior:Ce}),Q=W.scrollTop,Ce==="auto"?w.value=N():T(),e.nextTick(l))};Me?e.nextTick(Ve):Ve()}function ct(i,c={}){const y=g.value;if(!y)return;const W=Math.max(0,M.value.total-y.clientHeight),ke=Math.min(Math.max(0,Number.isFinite(i)?i:0),W);Ue(ke,c)}function dt(i,c){const y=M.value.sizes.getSize(i);let W=M.value.sizes.getOffset(i);return c==="center"?W-=(fe.value-y)/2:c==="end"&&(W-=fe.value-y),Math.max(0,Math.min(W,s()))}function lt(i,c={}){if(!g.value||t.items.length===0)return;const y=Math.min(t.items.length-1,Math.max(0,Math.floor(Number.isFinite(i)?i:0))),{align:W="start",...ke}=c;Ue(dt(y,W),ke);const Me=m.value.sizes.getKey(y);c.behavior==="smooth"?ee=()=>{const Ie=m.value.sizes.getIndex(Me);Ie!==void 0&<(Ie,{align:W})}:ie={key:Me,align:W}}function bt(i,c={}){const y=m.value.sizes.getIndex(i);y!==void 0&<(y,c)}function zt(){return N()}function It(i="auto"){Ue(0,{behavior:i})}function Je(i="auto"){const c=g.value;if(!c)return;const y=Math.max(0,M.value.total-c.clientHeight);Ue(y,{behavior:i},!0),i==="smooth"&&(ee=()=>Je())}const ft=e.ref(0);function Bt(){ft.value+=1}return e.watch(()=>{const i=t.items.length;return[t.items,i,i>0?_(t.items[0],0):void 0,i>0?_(t.items[Math.floor(i/2)],Math.floor(i/2)):void 0,i>0?_(t.items[i-1],i-1):void 0,t.itemKey,t.estimatedItemSize,t.estimateItemSize,t.itemsVersion,ft.value]},async(i,c)=>{const y=m.value.sizes,W=y.length,ke=y.total,Me=N(ke),Ie=y.findIndex(Me+fe.value-1),Ce=y.getKey(Ie),Ve=y.getOffset(Ie+1),Ne=t.items.length,at=i[5]!==c[5]||i[6]!==c[6]||i[7]!==c[7],Qe=i[8]!==c[8]||i[9]!==c[9];function Ke(Te){if(W===0)return!0;const Be=new Set([0,Math.floor(W/2),W-1]);for(const Fe of Be){const _e=Te+Fe;if(_e>=Ne||y.getKey(Fe)!==_(t.items[_e],_e))return!1}return!0}const Ae=Ne-W;let Re="rebuild";!at&&!Qe&&Ae>0&&(Ke(0)?Re="append":Ke(Ae)&&(Re="prepend"));let De=y;Re==="append"?De.append(t.items.slice(W).map((Te,Be)=>{const Fe=W+Be;return{key:_(Te,Fe),size:ne(Te,Fe)}})):Re==="prepend"?De.prepend(t.items.slice(0,Ae).map((Te,Be)=>({key:_(Te,Be),size:ne(Te,Be)}))):De=oe(y),m.value={sizes:De};const ot=Re==="append"?Array.from({length:Ae},(Te,Be)=>W+Be):[],it=ot.some(Te=>{var Be;return((Be=t.forceStickToBottom)==null?void 0:Be.call(t,t.items[Te],Te))===!0})||!J.value&&!ee&&v.value&&t.stickToBottom;ot.length>0&&!it&&Ze(I.value+ot.length);const mt=Ce===void 0?void 0:De.getIndex(Ce),Et=s()-s(ke);for(const Te of L)De.hasKey(Te)||L.delete(Te);if(De.length===0||mt===void 0){Z=0,f.value=0,w.value=it?s():Math.min(Me,s());const Te=w.value,Be=te;await e.nextTick(),Be===te&&m.value.sizes===De&&Ue(Te,{},!0)}else{const Te=De.getOffset(mt+1)-Ve,Be=it?s():Me+Te;ce(Be-Me-Et),await e.nextTick()}g.value&&(w.value=N(),l(),D())}),e.watch(()=>[t.hasOlder,t.loadingOlder],async([i])=>{i||(A=-1),await e.nextTick(),D()}),e.watch(()=>t.syncMeasurement,i=>{if(B.clear(),!!i){for(const[c,y]of $)L.has(y)||B.add(c);e.nextTick(Ee)}}),e.watch(G,()=>{U&&Ye()},{flush:"post"}),e.onMounted(()=>{if(window.addEventListener("pointerup",q,{passive:!0}),window.addEventListener("pointercancel",q,{passive:!0}),o(),g.value&&(g.value.scrollTop=t.initialScroll==="bottom"?0:-s(),w.value=N()),Ee(),typeof ResizeObserver<"u"){S=new ResizeObserver(o),V=new ResizeObserver(be),g.value&&S.observe(g.value);for(const[i]of $)V.observe(i)}e.nextTick(()=>{U=!0,l(),D(),Ye()})}),e.onUpdated(()=>{kt(),Ee()}),e.onBeforeUnmount(()=>{U=!1,window.removeEventListener("pointerup",q),window.removeEventListener("pointercancel",q),ve(),Se(),Z=0,te+=1,K+=1,S&&(S.disconnect(),S=void 0),V&&(V.disconnect(),V=void 0),$.clear(),B.clear()}),u({isAtBottom:v,isScrolling:J,newItemsCount:I,clearNewItems:Oe,refresh:Bt,getScrollPosition:zt,scrollTo:ct,scrollToIndex:lt,scrollToKey:bt,scrollToTop:It,scrollToBottom:Je}),(i,c)=>(e.openBlock(),e.createElementBlock("div",{class:"vue-chat-virtual-scroll__root",style:e.normalizeStyle(p.value)},[e.createElementVNode("div",e.mergeProps(i.$attrs,{ref_key:"viewport",ref:g,class:["vue-chat-virtual-scroll",b.value],role:"log","aria-label":n.ariaLabel,"aria-live":z.value,"aria-relevant":"additions","aria-atomic":"false",tabindex:"0",onScrollPassive:h,onScrollendPassive:c[0]||(c[0]=(...y)=>e.unref(E)&&e.unref(E)(...y)),onPointerdownPassive:c[1]||(c[1]=(...y)=>e.unref(F)&&e.unref(F)(...y)),onWheelPassive:c[2]||(c[2]=(...y)=>e.unref(xe)&&e.unref(xe)(...y)),onKeydown:c[3]||(c[3]=(...y)=>e.unref(C)&&e.unref(C)(...y)),onFocusin:Le,onFocusout:nt,onTouchstartPassive:c[4]||(c[4]=(...y)=>e.unref(le)&&e.unref(le)(...y)),onTouchendPassive:c[5]||(c[5]=(...y)=>e.unref(re)&&e.unref(re)(...y)),onTouchcancelPassive:c[6]||(c[6]=(...y)=>e.unref(re)&&e.unref(re)(...y))}),[e.createElementVNode("div",{class:"vue-chat-virtual-scroll__spacer",style:e.normalizeStyle({height:`${Math.max(fe.value,M.value.total+f.value)}px`})},[n.loadingOlder?(e.openBlock(),e.createElementBlock("div",At,[e.createElementVNode("div",null,[e.renderSlot(i.$slots,"loadingOlder",{},()=>[c[8]||(c[8]=e.createTextVNode("Loading older messages…",-1))])])])):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(j.value,({item:y,index:W,key:ke,bottom:Me})=>(e.openBlock(),e.createElementBlock("div",{key:ke,ref_for:!0,ref:Ie=>He(Ie,ke),class:"vue-chat-virtual-scroll__item",style:e.normalizeStyle({transform:`translateY(${-Me}px)`}),role:"article","aria-posinset":W+1,"aria-setsize":n.items.length},[e.renderSlot(i.$slots,"default",{item:y,index:W})],12,Dt))),128)),n.items.length?e.createCommentVNode("",!0):e.renderSlot(i.$slots,"empty",{},void 0,void 0,1)],4)],16,Pt),n.showNewItemsIndicator&&I.value>0?(e.openBlock(),e.createElementBlock("div",Nt,[e.renderSlot(i.$slots,"newItems",{count:I.value,scrollToBottom:Je},()=>[e.createElementVNode("button",{type:"button",onClick:c[7]||(c[7]=y=>Je("smooth"))},e.toDisplayString(se(I.value)),1)])])):e.createCommentVNode("",!0)],4))}});function tt(n){const u=e.ref(),k=e.ref(0),t=e.ref(!1),x=e.ref(!1),g=e.computed(()=>Math.max(1,n.threshold())),w=e.computed(()=>n.refreshing()||x.value?g.value:k.value),f=e.computed(()=>Math.min(1,k.value/g.value)),d=e.computed(()=>n.refreshing()||x.value?"Refreshing…":f.value>=1?"Release to refresh":"Pull to refresh");function a(){u.value=void 0,t.value=!1,k.value=0}function v(L){var S;const $=L.currentTarget,B=((S=n.scrollTop)==null?void 0:S.call(n))??$.scrollTop;!n.enabled()||n.refreshing()||B>0||L.touches.length!==1||(u.value=L.touches[0].clientY,t.value=!0)}function I(L){var V;if(u.value===void 0||!t.value)return;const $=L.currentTarget;if((((V=n.scrollTop)==null?void 0:V.call(n))??$.scrollTop)>0||L.touches.length!==1){a();return}const S=L.touches[0].clientY-u.value;if(S<=0){k.value=0;return}L.preventDefault(),k.value=Math.min(S*.5,g.value*2)}function O(){if(u.value===void 0)return;const L=k.value>=g.value&&n.enabled()&&!n.refreshing();if(u.value=void 0,t.value=!1,!L){k.value=0;return}k.value=g.value,x.value=!0,n.onRefresh(),e.nextTick(()=>{n.refreshing()||(x.value=!1,k.value=0)})}return e.watch(()=>n.refreshing(),(L,$)=>{L?(x.value=!1,k.value=g.value):$&&(x.value=!1,k.value=0)}),{pulling:t,pullDistance:k,pullOffset:w,pullProgress:f,refreshMessage:d,refreshThreshold:g,handleTouchStart:v,handleTouchMove:I,handleTouchEnd:O,handleTouchCancel:a}}const Kt=["aria-label"],Rt=["aria-posinset","aria-setsize"],ut=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(n,{expose:u,emit:k}){const t=n,x=k,{pulling:g,pullDistance:w,pullOffset:f,pullProgress:d,refreshMessage:a,refreshThreshold:v,handleTouchStart:I,handleTouchMove:O,handleTouchEnd:L,handleTouchCancel:$}=tt({enabled:()=>t.pullToRefresh,refreshing:()=>t.refreshing,threshold:()=>t.pullRefreshThreshold,onRefresh:()=>x("refresh")}),B=e.ref(),S=e.ref(0),V=e.ref(0),A=e.ref(0),U=new Map,Z=new Map;let ae,K,ie=-1;const Q=et(),{getItemKey:ee}=We({componentName:"DynamicVirtualScroll",items:()=>t.items,itemKey:()=>t.itemKey}),te=e.computed(()=>Math.max(1,t.estimatedItemSize)),R=e.computed(()=>Math.max(1,t.loadingItemSize??te.value)),_=e.computed(()=>Math.max(0,Math.floor(t.overscan))),de=e.computed(()=>V.value>0?V.value:typeof t.height=="number"?Math.max(0,t.height):te.value),me=e.computed(()=>{A.value;const m=new Array(t.items.length+1),M=new Array(t.items.length);m[0]=0;for(let s=0;s<t.items.length;s+=1){const Y=ee(t.items[s],s),G=U.get(Y)??te.value;M[s]=G,m[s+1]=m[s]+G}return{offsets:m,sizes:M,total:m[t.items.length]??0}}),ue=e.computed(()=>me.value.total+(t.loading?R.value:0)),J=e.computed(()=>{const m=new Map;return t.items.forEach((M,s)=>{m.set(ee(M,s),s)}),m});function H(m){if(t.items.length===0)return 0;const M=me.value.offsets;let s=0,Y=t.items.length;for(;s<Y;){const G=Math.floor((s+Y)/2);M[G+1]<=m?s=G+1:Y=G}return Math.min(s,t.items.length-1)}const T=e.computed(()=>Math.max(0,H(S.value)-_.value)),E=e.computed(()=>{if(t.items.length===0)return 0;const m=H(S.value+de.value)+1;return Math.min(t.items.length,m+_.value)}),le=e.computed(()=>t.items.slice(T.value,E.value).map((m,M)=>{const s=T.value+M;return{item:m,index:s,key:ee(m,s),top:me.value.offsets[s]}})),re=e.computed(()=>({height:Xe(t.height)}));function xe(){var m;V.value=((m=B.value)==null?void 0:m.clientHeight)??0,Q(B.value,t.height),e.nextTick(F)}function C(m){S.value=m.currentTarget.scrollTop,x("scroll",{scrollTop:S.value,startIndex:T.value,endIndex:E.value}),F()}function F(){const m=B.value;if(!m||!t.hasMore||t.loading||ie===t.items.length)return;const M=Math.max(0,t.loadMoreThreshold);ue.value-m.scrollTop-m.clientHeight<=M&&(ie=t.items.length,x("loadMore"))}function q(m){const M=m.borderBoxSize;if(M){const s=Array.isArray(M)?M[0]:M;if(s!=null&&s.blockSize)return s.blockSize}return m.contentRect.height}function ve(m){const M=me.value;let s=0,Y=!1;for(const G of m){const ye=G.target,r=Z.get(ye),P=q(G);if(r===void 0||P<=0)continue;const X=U.get(r)??te.value;if(Math.abs(X-P)<.5)continue;const j=J.value.get(r);j!==void 0&&M.offsets[j+1]<=S.value&&(s+=P-X),U.set(r,P),Y=!0}Y&&(A.value+=1,e.nextTick(F),s!==0&&e.nextTick(()=>{const G=B.value;G&&(G.scrollTop+=s,S.value=G.scrollTop)}))}function we(m,M){m instanceof HTMLElement&&(Z.set(m,M),K==null||K.observe(m))}function pe(){for(const[m]of Z)m.isConnected||(K==null||K.unobserve(m),Z.delete(m))}function fe(m,M={}){const s=B.value;if(!s)return;const Y=Math.max(0,ue.value-s.clientHeight),G=Math.min(Math.max(0,Number.isFinite(m)?m:0),Y),ye=M.behavior??"auto";ye==="auto"&&(S.value=G),s.scrollTo({...M,top:G,behavior:ye})}function ne(m,M={}){const s=B.value;if(!s||t.items.length===0)return;const Y=Math.min(t.items.length-1,Math.max(0,Math.floor(m))),{align:G="start",...ye}=M;let r=me.value.offsets[Y];const P=me.value.sizes[Y];G==="center"?r-=(s.clientHeight-P)/2:G==="end"&&(r-=s.clientHeight-P);const X=Math.max(0,Math.min(r,ue.value-s.clientHeight)),j=ye.behavior??"auto";j==="auto"&&(S.value=X),s.scrollTo({...ye,top:X,behavior:j})}function oe(m="auto"){var M;(M=B.value)==null||M.scrollTo({top:0,behavior:m})}return e.watch(()=>t.itemKey,()=>{U.clear(),A.value+=1}),e.watch(()=>t.items.length,async()=>{const m=new Set(t.items.map((Y,G)=>ee(Y,G)));for(const Y of U.keys())m.has(Y)||U.delete(Y);A.value+=1,await e.nextTick();const M=B.value;if(!M)return;const s=Math.max(0,ue.value-M.clientHeight);M.scrollTop>s&&(M.scrollTop=s,S.value=s),F()}),e.watch(()=>[t.hasMore,t.loading],async([m])=>{m||(ie=-1),await e.nextTick(),F()}),e.onMounted(()=>{if(xe(),typeof ResizeObserver<"u"){ae=new ResizeObserver(xe),K=new ResizeObserver(ve),B.value&&ae.observe(B.value);for(const[m]of Z)K.observe(m)}e.nextTick(F)}),e.onUpdated(pe),e.onBeforeUnmount(()=>{ae&&(ae.disconnect(),ae=void 0),K&&(K.disconnect(),K=void 0),Z.clear()}),u({scrollTo:fe,scrollToIndex:ne,scrollToTop:oe}),(m,M)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"viewport",ref:B,class:e.normalizeClass(["vue-dynamic-virtual-scroll",{"vue-dynamic-virtual-scroll--pulling":e.unref(g)}]),style:e.normalizeStyle(re.value),role:"list","aria-label":n.ariaLabel,tabindex:"0",onScrollPassive:C,onTouchstartPassive:M[0]||(M[0]=(...s)=>e.unref(I)&&e.unref(I)(...s)),onTouchmove:M[1]||(M[1]=(...s)=>e.unref(O)&&e.unref(O)(...s)),onTouchend:M[2]||(M[2]=(...s)=>e.unref(L)&&e.unref(L)(...s)),onTouchcancel:M[3]||(M[3]=(...s)=>e.unref($)&&e.unref($)(...s))},[n.pullToRefresh||n.refreshing?(e.openBlock(),e.createElementBlock("div",{key:0,class:"vue-dynamic-virtual-scroll__refresh",style:e.normalizeStyle({height:`${e.unref(v)}px`,transform:`translateY(${e.unref(f)-e.unref(v)}px)`}),role:"status","aria-live":"polite"},[e.renderSlot(m.$slots,"refresh",{pullDistance:e.unref(w),progress:e.unref(d),refreshing:n.refreshing},()=>[e.createTextVNode(e.toDisplayString(e.unref(a)),1)])],4)):e.createCommentVNode("",!0),n.items.length||n.loading?(e.openBlock(),e.createElementBlock("div",{key:1,class:"vue-dynamic-virtual-scroll__spacer",style:e.normalizeStyle({height:`${ue.value}px`,transform:`translateY(${e.unref(f)}px)`})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(le.value,({item:s,index:Y,key:G,top:ye})=>(e.openBlock(),e.createElementBlock("div",{key:G,ref_for:!0,ref:r=>we(r,G),class:"vue-dynamic-virtual-scroll__item",style:e.normalizeStyle({transform:`translateY(${ye}px)`}),role:"listitem","aria-posinset":Y+1,"aria-setsize":n.items.length},[e.renderSlot(m.$slots,"default",{item:s,index:Y})],12,Rt))),128)),n.loading?(e.openBlock(),e.createElementBlock("div",{key:0,class:"vue-dynamic-virtual-scroll__loading",style:e.normalizeStyle({height:`${R.value}px`,transform:`translateY(${me.value.total}px)`}),role:"status","aria-live":"polite"},[e.renderSlot(m.$slots,"loading",{},()=>[M[4]||(M[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(f)}px)`})},[e.renderSlot(m.$slots,"empty")],4))],46,Kt))}}),Wt=["aria-label"],Ht=["aria-current","aria-posinset","aria-setsize"],Ft={key:1,class:"vue-short-media-feed__empty"},Ot=36,Yt=700,pt=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(n,{expose:u,emit:k}){const t=n,x=k,g=e.ref(),w=e.ref(0),f=e.ref(Q(t.activeIndex));let d,a=-1,v=0,I=!1,O;const L=et(),{getItemKey:$}=We({componentName:"ShortMediaFeed",items:()=>t.items,itemKey:()=>t.itemKey}),B=e.computed(()=>Math.max(0,Math.floor(t.buffer))),S=e.computed(()=>Math.max(0,Math.floor(Number.isFinite(t.loadMoreThreshold)?t.loadMoreThreshold:0))),V=e.computed(()=>w.value>0?w.value:typeof t.height=="number"?Math.max(1,t.height):0),A=e.computed(()=>Math.max(0,f.value-B.value)),U=e.computed(()=>Math.min(t.items.length,f.value+B.value+1)),Z=e.computed(()=>(V.value>0?t.items:[]).slice(A.value,U.value).map((T,E)=>({item:T,index:A.value+E}))),ae=e.computed(()=>A.value*V.value),K=e.computed(()=>(t.items.length-U.value)*V.value),ie=e.computed(()=>({height:Xe(t.height)}));function Q(T){return t.items.length===0?0:Math.min(t.items.length-1,Math.max(0,Math.floor(Number.isFinite(T)?T:0)))}function ee(){if(!t.hasMore||t.loading||a===t.items.length)return;(t.items.length===0?0:t.items.length-1-f.value)<=S.value&&(a=t.items.length,x("loadMore"))}function te(T){const E=Q(T);E===f.value||t.items.length===0||(f.value=E,x("update:activeIndex",E),x("change",{index:E,item:t.items[E]}),E===0&&x("reachStart"),E===t.items.length-1&&x("reachEnd"),ee())}function R(T,E={}){const le=g.value;le&&(typeof le.scrollTo=="function"?le.scrollTo({...E,top:T}):le.scrollTop=T)}function _(T,E={}){if(t.items.length===0)return;const le=Q(T);te(le),R(le*V.value,E)}function de(T){if(V.value<=0)return;const E=T.currentTarget.scrollTop;te(Math.round(E/V.value))}function me(T){let E;T.key==="ArrowDown"||T.key==="PageDown"?E=f.value+1:T.key==="ArrowUp"||T.key==="PageUp"?E=f.value-1:T.key==="Home"?E=0:T.key==="End"&&(E=t.items.length-1),E!==void 0&&(T.preventDefault(),_(E,{behavior:"smooth"}))}function ue(T){return T.deltaMode===WheelEvent.DOM_DELTA_LINE?T.deltaY*16:T.deltaMode===WheelEvent.DOM_DELTA_PAGE?T.deltaY*(V.value||1):T.deltaY}function J(T){if(T.ctrlKey||Math.abs(T.deltaX)>Math.abs(T.deltaY)||t.items.length===0||V.value<=0||(T.preventDefault(),I))return;const E=ue(T);if(E*v<0&&(v=0),v+=E,Math.abs(v)<Ot)return;const le=v>0?1:-1;v=0;const re=f.value+le;re<0||re>=t.items.length||(I=!0,_(re,{behavior:"smooth"}),O=setTimeout(()=>{I=!1},Yt))}function H(){var E;const T=((E=g.value)==null?void 0:E.clientHeight)??0;L(g.value,t.height),!(T<=0||T===w.value)&&(w.value=T,e.nextTick(()=>{R(f.value*T)}))}return e.watch(()=>t.activeIndex,async T=>{const E=Q(T);E!==f.value&&(f.value=E,await e.nextTick(),R(E*V.value),ee())}),e.watch(()=>[t.hasMore,t.loading,t.loadMoreThreshold],async([T])=>{T||(a=-1),await e.nextTick(),ee()}),e.watch(()=>t.items.length,async()=>{const T=Q(f.value);t.items.length===0?f.value!==0&&(f.value=0,x("update:activeIndex",0)):te(T),await e.nextTick(),R(T*V.value),ee()}),e.onMounted(async()=>{H(),typeof ResizeObserver<"u"&&g.value&&(d=new ResizeObserver(H),d.observe(g.value)),await e.nextTick(),R(f.value*V.value),ee()}),e.onBeforeUnmount(()=>{d&&(d.disconnect(),d=void 0),O&&(clearTimeout(O),O=void 0)}),u({scrollToIndex:_}),(T,E)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"viewport",ref:g,class:"vue-short-media-feed",style:e.normalizeStyle(ie.value),role:"list","aria-orientation":"vertical","aria-label":n.ariaLabel,tabindex:"0",onScrollPassive:de,onWheel:J,onKeydown:me},[n.items.length?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[ae.value>0?(e.openBlock(),e.createElementBlock("div",{key:0,class:"vue-short-media-feed__spacer",style:e.normalizeStyle({height:`${ae.value}px`}),"aria-hidden":"true"},null,4)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(Z.value,({item:le,index:re})=>(e.openBlock(),e.createElementBlock("div",{key:e.unref($)(le,re),class:"vue-short-media-feed__item",style:e.normalizeStyle({height:`${V.value}px`}),role:"listitem","aria-current":re===f.value?"true":void 0,"aria-posinset":re+1,"aria-setsize":n.items.length},[e.renderSlot(T.$slots,"default",{item:le,index:re,active:re===f.value})],12,Ht))),128)),K.value>0?(e.openBlock(),e.createElementBlock("div",{key:1,class:"vue-short-media-feed__spacer",style:e.normalizeStyle({height:`${K.value}px`}),"aria-hidden":"true"},null,4)):e.createCommentVNode("",!0)],64)):(e.openBlock(),e.createElementBlock("div",Ft,[e.renderSlot(T.$slots,"empty")]))],44,Wt))}}),Ut=["aria-label"],jt=e.defineComponent({__name:"SkeletonLoader",props:{width:{default:"100%"},height:{default:16},variant:{default:"rounded"},animated:{type:Boolean,default:!0},ariaLabel:{default:"Loading…"}},setup(n){const u=n;function k(x){return typeof x=="number"?`${Math.max(0,x)}px`:x}const t=e.computed(()=>({width:k(u.width),height:k(u.height)}));return(x,g)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["vue-skeleton-loader",[`vue-skeleton-loader--${n.variant}`,{"vue-skeleton-loader--animated":n.animated}]]),style:e.normalizeStyle(t.value),role:"status","aria-label":n.ariaLabel},null,14,Ut))}}),qt=(n,u)=>{const k=n.__vccOpts||n;for(const[t,x]of u)k[t]=x;return k},gt=qt(jt,[["__scopeId","data-v-fc92f61f"]]),Gt=.006;function Xt(n,u){const k=n*Math.abs(n)/(2*Gt),t=u*2;return Math.max(-t,Math.min(t,k))}function Zt(n,u,k,t=250){const x=u-n,g=Math.abs(k);if(!(g>=.1&&x*k>0))return{keyframes:[{transform:`translate3d(${n}px, 0, 0)`},{transform:`translate3d(${u}px, 0, 0)`}],options:{duration:Math.round(Math.max(120,Math.min(650,(190+Math.abs(x)*.35)*t/250))),easing:"cubic-bezier(0.22, 1, 0.36, 1)",fill:"forwards"}};const f=Math.round(Math.max(180,Math.min(650,2*Math.abs(x)/g*t/250))),d=Math.min(3,g*f/Math.abs(x)),a=Math.ceil(f/8);return{keyframes:Array.from({length:a+1},(I,O)=>{const L=O/a,$=L*L,B=$*L,S=d*(B-2*$+L)+(-2*B+3*$),V=n+x*S;return{offset:L,transform:`translate3d(${V}px, 0, 0)`}}),options:{duration:f,easing:"linear",fill:"forwards"}}}function Jt(n){const u=e.ref("idle"),k=e.computed(()=>u.value!=="idle"),t=e.computed(()=>u.value==="dragging"),x=e.ref(!1);let g,w="",f=0,d=0,a=0,v=0,I=0,O=0,L=0,$=0,B=0,S,V,A,U=0,Z=!1,ae,K,ie="",Q=!1,ee,te=!1;const R=()=>n.rtl()?-1:1,_=()=>{var r;return(((r=n.viewport())==null?void 0:r.scrollLeft)??0)*R()};function de(r,P){const X=n.viewport();if(!X)return;const j=r*R();X.scrollTo?X.scrollTo(P===void 0?{left:j}:{left:j,behavior:P}):X.scrollLeft=j}function me(){const r=n.viewport();r&&(Q||(ie=r.style.scrollSnapType),Q=!0,r.style.scrollSnapType="none")}function ue(){const r=U;e.nextTick(()=>{te||r!==U||u.value!=="idle"||(n.viewport()&&(n.viewport().style.scrollSnapType=ie),Q=!1)})}function J(){const r=n.track();r&&(r.style.transform="",r.style.willChange="")}function H(){const r=n.track();if(!r||!S)return I;const P=getComputedStyle(r).transform,X=P.slice(P.indexOf("(")+1,-1).split(",").map(Number),j=P.startsWith("matrix3d")?X[12]:X[4];return Number.isFinite(j)?j:I}function T(){return S?v-H()*R():x.value?v-I*R():_()}function E(){const r=S;S=void 0,r&&(r.onfinish=null,r.oncancel=null,r.cancel()),A!==void 0&&cancelAnimationFrame(A),A=void 0}function le(){var X;const r=g;g=void 0;const P=n.viewport();r!==void 0&&((X=P==null?void 0:P.hasPointerCapture)!=null&&X.call(P,r))&&P.releasePointerCapture(r),window.removeEventListener("pointermove",fe),window.removeEventListener("pointerup",oe),window.removeEventListener("pointercancel",m),window.removeEventListener("blur",M)}function re(r,P){const X=++U;me(),u.value="committing",E(),J(),x.value=!1,I=0;const j=n.canonical(r);de(j,P),n.onPosition(j),n.onCommit(r),e.nextTick(()=>{te||X!==U||(de(j),u.value="idle",ue())})}function xe(r=!0){K!==void 0&&clearTimeout(K),K=void 0;const P=S!==void 0||I!==0,X=r?T():_();return++U,me(),le(),E(),J(),x.value=!1,V=void 0,I=0,u.value="idle",r&&(P&&de(X),n.onPosition(X)),ue(),X}function C(){S&&(n.onPosition(T()),A=requestAnimationFrame(C))}function F(){return typeof window.matchMedia=="function"&&window.matchMedia("(prefers-reduced-motion: reduce)").matches}function q(r,P,X){const j=n.track(),p=(v-P)*R();if(!(j!=null&&j.animate)||F()||n.settleDuration()===0||Math.abs(p-I)<1){J(),x.value=!1,I=0,u.value="idle",!(j!=null&&j.animate)&&!F()&&n.settleDuration()!==0?(n.onCommit(r),V=P,de(P,"smooth"),ue()):re(r);return}++U,me(),u.value="settling",x.value=!0;const b=Zt(I,p,X,n.settleDuration()),z=j.animate(b.keyframes,b.options);S=z,z.onfinish=()=>{S===z&&re(r)},z.oncancel=()=>{S===z&&xe()},A=requestAnimationFrame(C)}function ve(r,P="smooth",X=0,j=!1){const p=xe(),b=n.target(r,p,X);n.onCommit(r),Math.abs(b-p)<.5||P!=="smooth"||F()?re(r,P):j?(v=_(),I=(v-p)*R(),q(r,b,0)):(u.value="settling",V=b,de(b,P),n.viewport()&&(n.viewport().style.scrollSnapType=ie),Q=!1)}function we(r){const P=r.currentTarget.scrollLeft*R();if(!(S||u.value==="dragging"||u.value==="committing")){if(n.onPosition(P),V!==void 0){if(Math.abs(P-V)>1)return;V=void 0,u.value="idle"}n.onCommit(n.indexAt(P))}}function pe(r){var j,p;if(g!==void 0||r.isPrimary===!1||r.pointerType==="mouse"&&(!n.mouseDrag()||r.button!==0)||!["mouse","touch","pen"].includes(r.pointerType)||(p=(j=r.target)==null?void 0:j.closest)!=null&&p.call(j,'input, textarea, select, [contenteditable="true"], [data-carousel-no-drag]'))return;V!==void 0&&de(_(),"auto");const P=T();S!==void 0?(I=H(),E(),n.track().style.transform=`translate3d(${I}px, 0, 0)`,x.value=!0):(I=0,v=_()),++U,V=void 0,u.value="pending",g=r.pointerId,w=r.pointerType,f=O=r.clientX,d=r.clientY,a=P,L=r.timeStamp,$=0,B=0,Z=!1,ae!==void 0&&clearTimeout(ae),window.addEventListener("pointermove",fe),window.addEventListener("pointerup",oe),window.addEventListener("pointercancel",m),window.addEventListener("blur",M)}function fe(r){var N,ge;if(g!==r.pointerId||r===ee)return;ee=r;const P=r.clientX-f,X=r.clientY-d,j=Number.isFinite(n.dragThreshold())?Math.max(1,n.dragThreshold()):8;if(u.value==="pending"){if(Math.max(Math.abs(P),Math.abs(X))<j)return;if(w!=="mouse"&&Math.abs(X)>=Math.abs(P)){xe();return}me(),u.value="dragging",(ge=(N=n.viewport())==null?void 0:N.setPointerCapture)==null||ge.call(N,r.pointerId)}if(u.value!=="dragging")return;r.cancelable&&r.preventDefault(),Z=!0;const p=r.timeStamp-L;if(p>0&&p<=80){const ce=Math.max(-2.5,Math.min(2.5,(r.clientX-O)/p));$=B===0?ce:$*.25+ce*.75,B+=1}else p>80&&($=0,B=0);O=r.clientX,L=r.timeStamp;let b=a-P*R();const[z,se]=n.limits();b<z&&(b=z+(b-z)*.35),b>se&&(b=se+(b-se)*.35),I=(v-b)*R(),A===void 0&&(A=requestAnimationFrame(()=>{A=void 0;const ce=n.track();!ce||u.value!=="dragging"||(ce.style.willChange="transform",ce.style.transform=`translate3d(${I}px, 0, 0)`,n.onPosition(v-I*R()))}))}function ne(r,P=!1){if(g===void 0||r&&g!==r.pointerId)return;const X=u.value==="dragging",j=I!==0;if(le(),A!==void 0&&cancelAnimationFrame(A),A=void 0,!X&&!j){u.value="idle",ue();return}const p=v-I*R(),b=r?Math.max(0,r.timeStamp-L):101,z=!P&&n.momentum()&&b<=100?$*Math.exp(-b/80):0,se=p-a,N=Math.min(80,Math.max(40,n.step()*.12)),ge=B>=2&&Math.abs(se)>=N?Xt(-z*R(),n.step()):0;let ce=n.indexAt(p+ge);const Se=n.indexAt(a),$e=Math.max(1,n.dragThreshold());!P&&X&&ce===Se&&Math.abs(se)>=$e&&(ce=Se+Math.sign(se));const Le=n.target(ce,p);n.onPosition(p),q(n.indexAt(Le),Le,z),ae!==void 0&&clearTimeout(ae),ae=setTimeout(()=>{Z=!1},0)}function oe(r){ne(r)}function m(r){ne(r,!0)}function M(){ne(void 0,!0)}function s(r){r.target===n.viewport()&&g===r.pointerId&&u.value==="dragging"&&ne(r,!0)}function Y(r){!Z||r.detail===0||(r.preventDefault(),r.stopPropagation(),Z=!1)}function G(){const r=S!==void 0||u.value==="dragging",P=xe();r&&n.onCommit(n.indexAt(P)),n.nativeSnap()||(K=setTimeout(()=>{if(K=void 0,te||u.value!=="idle")return;v=_(),I=0;const X=n.indexAt(v);q(X,n.target(X,v),0)},120))}function ye(r){g!==void 0&&r.preventDefault()}return e.onBeforeUnmount(()=>{xe(!1),te=!0,ae!==void 0&&clearTimeout(ae),n.viewport()&&(n.viewport().style.scrollSnapType=ie)}),{phase:u,busy:k,dragging:t,transformed:x,read:_,write:de,cancel:xe,commit:re,navigate:ve,displayedPosition:T,handleScroll:we,handlePointerDown:pe,handlePointerMove:fe,handlePointerUp:oe,handlePointerCancel:m,handleLostPointerCapture:s,handleClick:Y,handleWheel:G,handleDragStart:ye}}function Qt(n){let u;function k(){u!==void 0&&clearTimeout(u),u=void 0}function t(){if(k(),!n.enabled()||n.paused()||n.count()<2||n.atEnd()&&!n.loop())return;const x=Number.isFinite(n.delay())?Math.max(1,n.delay()):3e3;u=setTimeout(()=>{u=void 0,!n.paused()&&(n.atEnd()?n.rewind():n.advance(),t())},x)}return e.watch(()=>[n.enabled(),n.paused(),n.delay(),n.count(),n.loop(),n.atEnd()],t,{immediate:!0}),e.onBeforeUnmount(k),{start:t,stop:k}}function je(n,u){return u>0?(n%u+u)%u:0}function _t(n,u){const k=new Array(n.length+1);k[0]=0;for(let f=0;f<n.length;f+=1)k[f+1]=k[f]+n[f]+u;const t=k[n.length],x=Math.max(0,t-(n.length?u:0));function g(f){if(!n.length)return 0;let d=0,a=n.length-1;for(;d<a;){const v=Math.ceil((d+a)/2);k[v]<=f?d=v:a=v-1}return d}function w(f){const d=g(f),a=Math.min(n.length-1,d+1);return f-k[d]<=k[a]-f?d:a}return{offsets:k,cycleWidth:t,totalWidth:x,indexAt:g,nearestIndex:w}}const en=["dir","aria-label"],tn=["data-carousel-index","aria-label","aria-current","aria-hidden","inert"],nn={key:1,class:"vue-virtual-carousel__empty"},yt=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},mouseDrag:{type:Boolean,default:!0},dragThreshold:{default:8},momentum:{type:Boolean,default:!0},settleDuration:{default:250},nativeSnap:{type:Boolean,default:!0},autoWidth:{type:Boolean,default:!1},estimatedItemWidth:{default:240},rtl:{type:Boolean,default:!1},loop:{type:Boolean,default:!1},keepAlive:{type:Boolean,default:!1},maxCachedItems:{default:20},pinnedIndexes:{default:()=>[]},responsive:{default:void 0}},emits:["update:activeIndex","change","reachStart","reachEnd","loadMore"],setup(n,{expose:u,emit:k}){const t=n,x=k,g=e.ref(),w=e.ref(),f=e.ref(0),d=e.ref(0),a=e.ref(0),v=e.ref(!1),I=e.ref(!1),O=e.ref(),L=e.shallowRef([]),$=e.shallowRef([0,1]),B=e.shallowRef(new Map),S=e.shallowRef([]);let V,A,U=-1,Z=!1;const ae=new Map,K=new Map,{getItemKey:ie}=We({componentName:"VirtualCarousel",items:()=>t.items,itemKey:()=>t.itemKey}),Q=e.computed(()=>t.items.map((l,o)=>ie(l,o))),ee=e.computed(()=>new Map(Q.value.map((l,o)=>[l,o]))),te=(l,o,h)=>Math.max(o,Math.floor(Number.isFinite(l)?l:h)),R=e.computed(()=>{const l=[...t.responsive??[]].sort((o,h)=>h.breakpoint-o.breakpoint).find(o=>f.value>=o.breakpoint);return{slidesPerView:te((l==null?void 0:l.slidesPerView)??t.slidesPerView,1,1),slidesToScroll:te((l==null?void 0:l.slidesToScroll)??t.slidesToScroll,1,1),gap:Math.max(0,Number.isFinite((l==null?void 0:l.gap)??t.gap)?(l==null?void 0:l.gap)??t.gap:0)}}),_=e.computed(()=>te(t.buffer,0,1)),de=e.computed(()=>te(t.maxCachedItems,0,20)),me=e.computed(()=>f.value>0?Math.max(1,(f.value-(R.value.slidesPerView-1)*R.value.gap)/R.value.slidesPerView):0),ue=e.computed(()=>t.items.map((l,o)=>t.autoWidth?B.value.get(Q.value[o])??Math.max(1,Number.isFinite(t.estimatedItemWidth)?t.estimatedItemWidth:240):me.value)),J=e.computed(()=>_t(ue.value,R.value.gap)),H=e.computed(()=>t.loop&&t.items.length>1&&J.value.totalWidth>f.value),T=e.computed(()=>Math.max(0,J.value.totalWidth-f.value)),E=e.computed(()=>{if(H.value)return t.items.length-1;if(!t.autoWidth)return Math.max(0,t.items.length-R.value.slidesPerView);if(T.value<=0)return 0;const l=J.value.indexAt(T.value),o=J.value.offsets[l]<T.value-.01?l+1:l;return Math.min(t.items.length-1,o)}),le=e.computed(()=>H.value?J.value.cycleWidth*3:J.value.totalWidth),re=e.computed(()=>({height:Xe(t.height)})),xe=e.computed(()=>({width:`${le.value}px`,height:t.height==="auto"?`${Math.max(1,d.value)}px`:"100%"}));function C(l){const o=Math.floor(Number.isFinite(l)?l:0);return H.value?je(o,t.items.length):Math.max(0,Math.min(E.value,o))}a.value=C(t.activeIndex);function F(l){const o=J.value.offsets[C(l)]??0;return H.value?J.value.cycleWidth+o:Math.min(T.value,o)}function q(l){const o=J.value.cycleWidth;return H.value&&o>0?(l%o+o)%o:Math.max(0,l)}function ve(l){if(!H.value&&l>=T.value-1&&T.value>0)return E.value;const o=q(l);return H.value&&o>(J.value.offsets[t.items.length-1]+J.value.cycleWidth)/2?0:C(J.value.nearestIndex(o))}function we(l,o,h=0){const D=F(l);if(!H.value)return D;const he=J.value.cycleWidth,ze=[D-he,D,D+he],be=ze.filter(Ee=>h>0?Ee>o+.5:h<0?Ee<o-.5:!0);return(be.length?be:ze).sort((Ee,He)=>Math.abs(Ee-o)-Math.abs(He-o))[0]}function pe(l){if(!H.value)return J.value.indexAt(Math.max(0,l));const o=J.value.cycleWidth,h=Math.floor(l/o);return h*t.items.length+J.value.indexAt(l-h*o)}function fe(l){return H.value?Math.floor(l/t.items.length)*J.value.cycleWidth+J.value.offsets[je(l,t.items.length)]:J.value.offsets[l]??0}function ne(l){if(t.items.length===0){L.value=[],$.value=[0,0];return}if(f.value<=0)return;const o=pe(l),h=pe(l+f.value-.01);($.value[0]!==o||$.value[1]!==h+1)&&($.value=[o,h+1]);const D=[];for(let he=o;he<=h;he+=1){const ze=H.value?je(he,t.items.length):he;if(ze<0||ze>=t.items.length)continue;const be=fe(he);be+ue.value[ze]>l+.01&&be<l+f.value-.01&&!D.includes(ze)&&D.push(ze)}D.join(",")!==L.value.join(",")&&(L.value=D)}function oe(l){if(t.autoWidth){const o=F(a.value),h=we(l,o);return h+ue.value[l]>o&&h<o+f.value}return H.value?je(l-a.value,t.items.length)<R.value.slidesPerView:l>=a.value&&l<a.value+R.value.slidesPerView}function m(){if(!t.hasMore||t.loading||U===t.items.length)return;const l=t.autoWidth?L.value.length:R.value.slidesPerView;t.items.length-a.value-Math.max(1,l)<=te(t.loadMoreThreshold,0,2)&&(U=t.items.length,x("loadMore"))}function M(l){const o=C(l);!t.items.length||o===a.value||(a.value=o,x("update:activeIndex",o),x("change",{index:o,item:t.items[o]}),o===0&&x("reachStart"),o===E.value&&x("reachEnd"),m())}const s=Jt({viewport:()=>g.value,track:()=>w.value,rtl:()=>t.rtl,mouseDrag:()=>t.mouseDrag,nativeSnap:()=>t.nativeSnap&&!H.value,dragThreshold:()=>Math.max(1,Number.isFinite(t.dragThreshold)?t.dragThreshold:8),momentum:()=>t.momentum,settleDuration:()=>Math.max(0,Number.isFinite(t.settleDuration)?t.settleDuration:250),limits:()=>[0,H.value?Math.max(0,le.value-f.value):T.value],step:()=>ue.value[a.value]+R.value.gap||1,indexAt:ve,target:we,canonical:F,onPosition:ne,onCommit:M}),{phase:Y,dragging:G}=s,ye=Qt({enabled:()=>I.value&&t.autoplay,paused:()=>Y.value==="pending"||Y.value==="dragging"||Y.value==="committing"||H.value&&Y.value==="settling"||v.value&&t.pauseOnHover,delay:()=>t.autoplayDelay,count:()=>t.items.length,atEnd:()=>!H.value&&a.value>=E.value,loop:()=>H.value||t.autoplayLoop,advance:()=>Se(),rewind:()=>ce(0,{behavior:"smooth"})}),r=e.computed(()=>{const l=G.value||s.transformed.value,o=_.value+(l?R.value.slidesPerView+2:0);let h,D;!t.autoWidth&&!H.value&&!l?(h=Math.max(0,a.value-o),D=Math.min(t.items.length,a.value+R.value.slidesPerView+o)):(h=Math.max(0,$.value[0]-o),D=Math.min(H.value?t.items.length*3:t.items.length,$.value[1]+o));const he=($.value[0]+$.value[1]-1)/2,ze=new Map;for(let be=h;be<D;be+=1){const Ee=H.value?je(be,t.items.length):be,He=ze.get(Ee);(!He||Math.abs(be-he)<Math.abs(He.virtual-he))&&ze.set(Ee,{index:Ee,virtual:be,cached:!1})}return[...ze.values()].sort((be,Ee)=>be.virtual-Ee.virtual)});e.watch([L,Y,Q],()=>{if(Y.value!=="idle")return;const l=L.value.filter(h=>h<t.items.length).map(h=>Q.value[h]);if(!t.keepAlive){S.value=[];return}const o=S.value.filter(h=>ee.value.has(h)&&!l.includes(h));S.value=[...o,...l].slice(-(de.value+l.length))},{immediate:!0});const P=e.computed(()=>{const l=[...r.value],o=new Set(l.map(D=>D.index)),h=new Set;for(const D of t.pinnedIndexes.slice(0,de.value))Number.isInteger(D)&&D>=0&&D<t.items.length&&h.add(D);if(O.value!==void 0&&O.value<t.items.length&&h.add(O.value),t.keepAlive)for(const D of[...S.value].reverse()){const he=ee.value.get(D);he!==void 0&&!o.has(he)&&h.size<de.value&&h.add(he)}for(const D of h)o.has(D)||l.push({index:D,virtual:H.value?t.items.length+D:D,cached:D!==O.value});return l.sort((D,he)=>D.virtual-he.virtual).map(D=>({...D,item:t.items[D.index],key:Q.value[D.index]}))}),X=e.computed(()=>r.value.length?fe(r.value[0].virtual):0),j=e.computed(()=>!t.autoWidth&&!H.value&&!t.keepAlive&&!t.pinnedIndexes.length&&(O.value===void 0||r.value.some(l=>l.index===O.value))),p=e.computed(()=>{const l=r.value[r.value.length-1];return l?Math.max(0,le.value-fe(l.virtual)-ue.value[l.index]-R.value.gap):0});function b(l){const o=ue.value[l.index];return{position:j.value?"relative":"absolute",[t.rtl?"right":"left"]:j.value?void 0:`${fe(l.virtual)}px`,width:t.autoWidth?"max-content":`${o}px`,flexBasis:t.autoWidth?"auto":`${o}px`,marginRight:!t.rtl&&l.index<t.items.length-1?`${R.value.gap}px`:"0px",marginLeft:t.rtl&&l.index<t.items.length-1?`${R.value.gap}px`:"0px",height:t.height==="auto"?"auto":"100%",visibility:l.cached?"hidden":void 0,scrollSnapAlign:t.nativeSnap&&!H.value&&f.value>0?"start":"none"}}function z(){if(!K.size||Y.value!=="idle")return;const l=new Map(B.value);for(const[o,h]of K)l.set(o,h);K.clear(),B.value=l}function se(l,o){if(o<0||o>=t.items.length)return;const{width:h,height:D}=l.getBoundingClientRect();D>d.value&&(d.value=D);const he=Q.value[o];t.autoWidth&&h>0&&Math.abs((B.value.get(he)??0)-h)>.5&&K.set(he,h)}function N(){var o;if(Z||t.height!=="auto")return;let l=0;for(const h of r.value)l=Math.max(l,((o=ae.get(h.index))==null?void 0:o.getBoundingClientRect().height)??0);Math.abs(d.value-l)>.5&&(d.value=l)}function ge(l,o){const h=ae.get(o);if(h&&(A==null||A.unobserve(h)),!(l instanceof HTMLElement)){ae.delete(o);return}ae.set(o,l),(t.autoWidth||t.height==="auto")&&(A==null||A.observe(l),se(l,o),e.nextTick(z),e.nextTick(N))}function ce(l,o={}){!t.items.length||f.value<=0||s.navigate(C(l),o.behavior??"auto",0,H.value||!t.nativeSnap)}function Se(l="smooth"){!t.items.length||f.value<=0||s.navigate(C(a.value+R.value.slidesToScroll),l,1,H.value||!t.nativeSnap)}function $e(l="smooth"){!t.items.length||f.value<=0||s.navigate(C(a.value-R.value.slidesToScroll),l,-1,H.value||!t.nativeSnap)}function Le(l){var D,he;if((he=(D=l.target)==null?void 0:D.closest)!=null&&he.call(D,'input, textarea, select, [contenteditable="true"]'))return;const o=t.rtl?"ArrowLeft":"ArrowRight",h=t.rtl?"ArrowRight":"ArrowLeft";l.key===o||l.key==="PageDown"?(l.preventDefault(),Se()):l.key===h||l.key==="PageUp"?(l.preventDefault(),$e()):l.key==="Home"?(l.preventDefault(),ce(0,{behavior:"smooth"})):l.key==="End"&&(l.preventDefault(),ce(E.value))}function nt(l){var h,D;const o=(D=(h=l.target)==null?void 0:h.closest)==null?void 0:D.call(h,"[data-carousel-index]");O.value=o?Number(o.getAttribute("data-carousel-index")):void 0}function Ze(){e.nextTick(()=>{var l;(l=g.value)!=null&&l.contains(document.activeElement)||(O.value=void 0)})}function Oe(){s.cancel(!1),t.items.length?M(C(a.value)):a.value!==0&&(a.value=0,x("update:activeIndex",0)),Z||s.commit(a.value),e.nextTick(m)}function Ye(){var o;const l=((o=g.value)==null?void 0:o.clientWidth)??0;l<=0||l===f.value||(f.value=l)}return e.watch(()=>[t.items.length,f.value,R.value.slidesPerView,R.value.gap,t.rtl,H.value,t.autoWidth,t.nativeSnap,B.value],Oe),e.watch(()=>t.activeIndex,l=>{const o=C(l);o!==a.value&&(s.cancel(!1),a.value=o,s.commit(o),e.nextTick(m))}),e.watch(()=>[t.hasMore,t.loading,t.loadMoreThreshold],()=>{t.hasMore||(U=-1),e.nextTick(m)}),e.watch(()=>Q.value,l=>{const o=new Set(l);B.value=new Map([...B.value].filter(([h])=>o.has(h))),S.value=S.value.filter(h=>o.has(h))}),e.watch(Y,l=>{l==="idle"&&e.nextTick(z)}),e.watch(()=>[t.keepAlive,t.maxCachedItems],()=>{const l=L.value.map(o=>Q.value[o]);S.value=t.keepAlive?[...S.value.filter(o=>!l.includes(o)),...l].slice(-(de.value+l.length)):[]}),e.onMounted(async()=>{if(Ye(),typeof ResizeObserver<"u"&&(V=new ResizeObserver(Ye),g.value&&V.observe(g.value),A=new ResizeObserver(l=>{for(const o of l)se(o.target,Number(o.target.dataset.carouselIndex));z(),N()}),t.autoWidth||t.height==="auto"))for(const[l,o]of ae)A.observe(o),se(o,l);await e.nextTick(),Oe(),I.value=!0}),e.onBeforeUnmount(()=>{Z=!0,V==null||V.disconnect(),A==null||A.disconnect()}),u({next:Se,previous:$e,scrollToIndex:ce,startAutoplay:ye.start,stopAutoplay:ye.stop}),(l,o)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"viewport",ref:g,class:e.normalizeClass(["vue-virtual-carousel",{"vue-virtual-carousel--mouse-drag":n.mouseDrag,"vue-virtual-carousel--dragging":e.unref(G),"vue-virtual-carousel--controlled":H.value||!n.nativeSnap}]),style:e.normalizeStyle(re.value),dir:n.rtl?"rtl":"ltr",role:"region","aria-roledescription":"carousel","aria-label":n.ariaLabel,tabindex:"0",onScrollPassive:o[0]||(o[0]=(...h)=>e.unref(s).handleScroll&&e.unref(s).handleScroll(...h)),onPointerdown:o[1]||(o[1]=(...h)=>e.unref(s).handlePointerDown&&e.unref(s).handlePointerDown(...h)),onPointermove:o[2]||(o[2]=(...h)=>e.unref(s).handlePointerMove&&e.unref(s).handlePointerMove(...h)),onPointerup:o[3]||(o[3]=(...h)=>e.unref(s).handlePointerUp&&e.unref(s).handlePointerUp(...h)),onPointercancel:o[4]||(o[4]=(...h)=>e.unref(s).handlePointerCancel&&e.unref(s).handlePointerCancel(...h)),onLostpointercapture:o[5]||(o[5]=(...h)=>e.unref(s).handleLostPointerCapture&&e.unref(s).handleLostPointerCapture(...h)),onClickCapture:o[6]||(o[6]=(...h)=>e.unref(s).handleClick&&e.unref(s).handleClick(...h)),onDragstart:o[7]||(o[7]=(...h)=>e.unref(s).handleDragStart&&e.unref(s).handleDragStart(...h)),onWheelPassive:o[8]||(o[8]=(...h)=>e.unref(s).handleWheel&&e.unref(s).handleWheel(...h)),onKeydown:Le,onMouseenter:o[9]||(o[9]=h=>v.value=!0),onMouseleave:o[10]||(o[10]=h=>v.value=!1),onFocusin:nt,onFocusout:Ze},[n.items.length?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"track",ref:w,class:"vue-virtual-carousel__track",style:e.normalizeStyle(xe.value),role:"list"},[X.value>0?(e.openBlock(),e.createElementBlock("div",{key:0,class:"vue-virtual-carousel__spacer",style:e.normalizeStyle({flexBasis:`${X.value}px`,position:j.value?"relative":"absolute"}),"aria-hidden":"true"},null,4)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(P.value,h=>(e.openBlock(),e.createElementBlock("div",{key:h.key,ref_for:!0,ref:D=>ge(D,h.index),class:"vue-virtual-carousel__item","data-carousel-index":h.index,style:e.normalizeStyle(b(h)),role:"listitem","aria-roledescription":"slide","aria-label":`${h.index+1} of ${n.items.length}`,"aria-current":h.index===a.value?"true":void 0,"aria-hidden":h.cached?"true":void 0,inert:h.cached?!0:void 0},[e.renderSlot(l.$slots,"default",{item:h.item,index:h.index,active:h.index===a.value,visible:oe(h.index),inViewport:L.value.includes(h.index)})],12,tn))),128)),p.value>0?(e.openBlock(),e.createElementBlock("div",{key:1,class:"vue-virtual-carousel__spacer",style:e.normalizeStyle({flexBasis:`${p.value}px`,position:j.value?"relative":"absolute"}),"aria-hidden":"true"},null,4)):e.createCommentVNode("",!0)],4)):(e.openBlock(),e.createElementBlock("div",nn,[e.renderSlot(l.$slots,"empty")]))],46,en))}}),ln=["aria-label"],an=["aria-posinset","aria-setsize"],xt=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(n,{expose:u,emit:k}){const t=n,x=k,{pulling:g,pullDistance:w,pullOffset:f,pullProgress:d,refreshMessage:a,refreshThreshold:v,handleTouchStart:I,handleTouchMove:O,handleTouchEnd:L,handleTouchCancel:$}=tt({enabled:()=>t.pullToRefresh,refreshing:()=>t.refreshing,threshold:()=>t.pullRefreshThreshold,onRefresh:()=>x("refresh")}),B=e.ref(),S=e.ref(0),V=e.ref(0);let A,U=-1;const Z=et(),{getItemKey:ae}=We({componentName:"VirtualScroll",items:()=>t.items,itemKey:()=>t.itemKey}),K=e.computed(()=>Math.max(1,t.itemSize)),ie=e.computed(()=>Math.max(0,Math.floor(t.overscan))),Q=e.computed(()=>t.items.length*K.value),ee=e.computed(()=>Math.max(1,t.loadingItemSize??K.value)),te=e.computed(()=>Q.value+(t.loading?ee.value:0)),R=e.computed(()=>V.value>0?V.value:typeof t.height=="number"?t.height:0),_=e.computed(()=>Math.max(0,Math.floor(S.value/K.value)-ie.value)),de=e.computed(()=>{const C=Math.ceil((S.value+R.value)/K.value);return Math.min(t.items.length,C+ie.value)}),me=e.computed(()=>t.items.slice(_.value,de.value).map((C,F)=>({item:C,index:_.value+F}))),ue=e.computed(()=>({height:Xe(t.height)})),J=e.computed(()=>({transform:`translateY(${_.value*K.value}px)`}));function H(){var C;V.value=((C=B.value)==null?void 0:C.clientHeight)??0,Z(B.value,t.height),e.nextTick(E)}function T(C){S.value=C.currentTarget.scrollTop,x("scroll",{scrollTop:S.value,startIndex:_.value,endIndex:de.value}),E()}function E(){const C=B.value;if(!C||!t.hasMore||t.loading||U===t.items.length)return;const F=Math.max(0,t.loadMoreThreshold);te.value-C.scrollTop-C.clientHeight<=F&&(U=t.items.length,x("loadMore"))}function le(C,F={}){const q=B.value;if(!q)return;const ve=Math.max(0,te.value-q.clientHeight),we=Math.min(Math.max(0,Number.isFinite(C)?C:0),ve),pe=F.behavior??"auto";pe==="auto"&&(S.value=we),q.scrollTo({...F,top:we,behavior:pe})}function re(C,F={}){const q=B.value;if(!q||t.items.length===0)return;const ve=Math.min(t.items.length-1,Math.max(0,Math.floor(C))),{align:we="start",...pe}=F;let fe=ve*K.value;we==="center"?fe-=(q.clientHeight-K.value)/2:we==="end"&&(fe-=q.clientHeight-K.value),q.scrollTo({...pe,top:Math.max(0,Math.min(fe,te.value-q.clientHeight))})}function xe(C="auto"){var F;(F=B.value)==null||F.scrollTo({top:0,behavior:C})}return e.watch(()=>[t.items.length,t.itemSize],async()=>{await e.nextTick();const C=B.value;if(!C)return;const F=Math.max(0,te.value-C.clientHeight);C.scrollTop>F&&(C.scrollTop=F,S.value=F),E()}),e.watch(()=>[t.hasMore,t.loading],async([C])=>{C||(U=-1),await e.nextTick(),E()}),e.onMounted(()=>{H(),typeof ResizeObserver<"u"&&B.value&&(A=new ResizeObserver(H),A.observe(B.value)),e.nextTick(E)}),e.onBeforeUnmount(()=>{A&&(A.disconnect(),A=void 0)}),u({scrollTo:le,scrollToIndex:re,scrollToTop:xe}),(C,F)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"viewport",ref:B,class:e.normalizeClass(["vue-virtual-scroll",{"vue-virtual-scroll--pulling":e.unref(g)}]),style:e.normalizeStyle(ue.value),role:"list","aria-label":n.ariaLabel,tabindex:"0",onScrollPassive:T,onTouchstartPassive:F[0]||(F[0]=(...q)=>e.unref(I)&&e.unref(I)(...q)),onTouchmove:F[1]||(F[1]=(...q)=>e.unref(O)&&e.unref(O)(...q)),onTouchend:F[2]||(F[2]=(...q)=>e.unref(L)&&e.unref(L)(...q)),onTouchcancel:F[3]||(F[3]=(...q)=>e.unref($)&&e.unref($)(...q))},[n.pullToRefresh||n.refreshing?(e.openBlock(),e.createElementBlock("div",{key:0,class:"vue-virtual-scroll__refresh",style:e.normalizeStyle({height:`${e.unref(v)}px`,transform:`translateY(${e.unref(f)-e.unref(v)}px)`}),role:"status","aria-live":"polite"},[e.renderSlot(C.$slots,"refresh",{pullDistance:e.unref(w),progress:e.unref(d),refreshing:n.refreshing},()=>[e.createTextVNode(e.toDisplayString(e.unref(a)),1)])],4)):e.createCommentVNode("",!0),n.items.length||n.loading?(e.openBlock(),e.createElementBlock("div",{key:1,class:"vue-virtual-scroll__spacer",style:e.normalizeStyle({height:`${te.value}px`,transform:`translateY(${e.unref(f)}px)`})},[e.createElementVNode("div",{class:"vue-virtual-scroll__content",style:e.normalizeStyle(J.value)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(me.value,({item:q,index:ve})=>(e.openBlock(),e.createElementBlock("div",{key:e.unref(ae)(q,ve),class:"vue-virtual-scroll__item",style:e.normalizeStyle({height:`${K.value}px`}),role:"listitem","aria-posinset":ve+1,"aria-setsize":n.items.length},[e.renderSlot(C.$slots,"default",{item:q,index:ve})],12,an))),128))],4),n.loading?(e.openBlock(),e.createElementBlock("div",{key:0,class:"vue-virtual-scroll__loading",style:e.normalizeStyle({height:`${ee.value}px`,transform:`translateY(${Q.value}px)`}),role:"status","aria-live":"polite"},[e.renderSlot(C.$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(f)}px)`})},[e.renderSlot(C.$slots,"empty")],4))],46,ln))}}),on=["aria-label"],rn=["aria-posinset","aria-setsize"],wt=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(n,{expose:u,emit:k}){const t=n,x=k,g=e.ref(),w=e.ref(0),f=e.ref(0),d=e.ref(0),a=e.ref(0),v=new Map,I=new Map,O=new Map;let L,$,B,S,V=!1,A=!1,U=-1;const{getItemKey:Z}=We({componentName:"WindowDynamicVirtualScroll",items:()=>t.items,itemKey:()=>t.itemKey});function ae(p){return typeof window.requestAnimationFrame=="function"?{id:window.requestAnimationFrame(p),type:"animation"}:{id:window.setTimeout(p,0),type:"timeout"}}function K(p){p&&(p.type==="animation"?window.cancelAnimationFrame(p.id):window.clearTimeout(p.id))}const{pulling:ie,pullDistance:Q,pullOffset:ee,pullProgress:te,refreshMessage:R,refreshThreshold:_,handleTouchStart:de,handleTouchMove:me,handleTouchEnd:ue,handleTouchCancel:J}=tt({enabled:()=>t.pullToRefresh,refreshing:()=>t.refreshing,threshold:()=>t.pullRefreshThreshold,onRefresh:()=>x("refresh"),scrollTop:()=>typeof window>"u"?0:Math.max(0,window.scrollY)}),H=e.computed(()=>Math.max(1,t.estimatedItemSize)),T=e.computed(()=>Math.max(1,t.loadingItemSize??H.value)),E=e.computed(()=>Math.max(0,Math.floor(t.overscan))),le=e.computed(()=>{a.value;const p=new Array(t.items.length+1),b=new Array(t.items.length);p[0]=0;for(let z=0;z<t.items.length;z+=1){const se=Z(t.items[z],z),N=v.get(se)??H.value;b[z]=N,p[z+1]=p[z]+N}return{offsets:p,sizes:b,total:p[t.items.length]??0}}),re=e.computed(()=>le.value.total+(t.loading?T.value:0)),xe=e.computed(()=>{const p=new Map;return t.items.forEach((b,z)=>{p.set(Z(b,z),z)}),p}),C=e.computed(()=>Math.max(0,w.value-d.value));function F(p){if(t.items.length===0)return 0;const b=le.value.offsets;let z=0,se=t.items.length;for(;z<se;){const N=Math.floor((z+se)/2);b[N+1]<=p?z=N+1:se=N}return Math.min(z,t.items.length-1)}const q=e.computed(()=>Math.max(0,F(C.value)-E.value)),ve=e.computed(()=>{if(t.items.length===0)return 0;const p=w.value+f.value-d.value,b=Math.max(H.value,p),z=F(b)+1;return Math.min(t.items.length,z+E.value)}),we=e.computed(()=>t.items.slice(q.value,ve.value).map((p,b)=>{const z=q.value+b;return{item:p,index:z,key:Z(p,z),top:le.value.offsets[z]}}));function pe(){typeof window>"u"||(w.value=Math.max(0,window.scrollY),f.value=window.innerHeight,g.value&&(d.value=g.value.getBoundingClientRect().top+w.value))}function fe(){x("scroll",{scrollTop:C.value,startIndex:q.value,endIndex:ve.value})}function ne(p=!1){A&&(V||(V=p),!B&&(B=ae(()=>{B=void 0,pe(),V&&(V=!1,fe()),M()})))}function oe(){ne(!0)}function m(){ne()}function M(){if(typeof window>"u"||!t.hasMore||t.loading||U===t.items.length)return;const p=Math.max(0,t.loadMoreThreshold),b=d.value+re.value,z=w.value+f.value;b-z<=p&&(U=t.items.length,x("loadMore"))}function s(p){const b=p.borderBoxSize;if(b){const z=Array.isArray(b)?b[0]:b;if(z!=null&&z.blockSize)return z.blockSize}return p.contentRect.height}function Y(p){const b=le.value;let z=0,se=!1;for(const N of p){const ge=N.target,ce=I.get(ge),Se=s(N);if(ce===void 0||Se<=0)continue;const $e=v.get(ce)??H.value;if(Math.abs($e-Se)<.5)continue;const Le=xe.value.get(ce);Le!==void 0&&b.offsets[Le+1]<=C.value&&(z+=Se-$e),v.set(ce,Se),se=!0}se&&(a.value+=1,e.nextTick(()=>{if(A){if(z!==0&&typeof window<"u"){const N=Math.max(0,w.value+z);w.value=N,window.scrollTo({top:N,behavior:"auto"})}pe(),M()}}))}function G(p){if(A){for(const b of p)O.set(b.target,b);S||(S=ae(()=>{S=void 0;const b=Array.from(O.values());O.clear(),Y(b)}))}}function ye(p,b){p instanceof HTMLElement&&(I.set(p,b),$==null||$.observe(p))}function r(){for(const[p]of I)p.isConnected||($==null||$.unobserve(p),I.delete(p))}function P(p,b={}){if(typeof window>"u")return;pe();const z=Math.max(0,re.value-f.value),se=Math.min(Math.max(0,Number.isFinite(p)?p:0),z),N=Math.max(0,d.value+se),ge=b.behavior??"auto";ge==="auto"&&(w.value=N),window.scrollTo({...b,top:N,behavior:ge})}function X(p,b={}){if(typeof window>"u"||t.items.length===0)return;pe();const z=Math.min(t.items.length-1,Math.max(0,Math.floor(p))),{align:se="start",...N}=b,ge=le.value.sizes[z];let ce=d.value+le.value.offsets[z];se==="center"?ce-=(f.value-ge)/2:se==="end"&&(ce-=f.value-ge);const Se=Math.max(d.value,d.value+re.value-f.value),$e=Math.max(0,Math.min(ce,Se)),Le=N.behavior??"auto";Le==="auto"&&(w.value=$e),window.scrollTo({...N,top:$e,behavior:Le})}function j(p="auto"){typeof window>"u"||(pe(),window.scrollTo({top:Math.max(0,d.value),behavior:p}))}return e.watch(()=>t.itemKey,()=>{v.clear(),a.value+=1,U=-1}),e.watch(()=>t.items.map((p,b)=>Z(p,b)),async(p,b)=>{const z=p.length!==b.length||p.some((N,ge)=>N!==b[ge]),se=new Set(p);for(const N of v.keys())se.has(N)||v.delete(N);z&&(U=-1),a.value+=1,await e.nextTick(),A&&(pe(),M())}),e.watch(()=>[t.hasMore,t.loading],async([p])=>{p||(U=-1),await e.nextTick(),A&&(pe(),M())}),e.onMounted(()=>{if(A=!0,pe(),window.addEventListener("scroll",oe,{passive:!0}),window.addEventListener("resize",m,{passive:!0}),typeof ResizeObserver<"u"){L=new ResizeObserver(()=>{ne()}),$=new ResizeObserver(G),g.value&&L.observe(g.value);for(const[p]of I)$.observe(p)}e.nextTick(()=>{A&&M()})}),e.onUpdated(r),e.onBeforeUnmount(()=>{A=!1,window.removeEventListener("scroll",oe),window.removeEventListener("resize",m),K(B),K(S),B=void 0,S=void 0,V=!1,O.clear(),L&&(L.disconnect(),L=void 0),$&&($.disconnect(),$=void 0),I.clear()}),u({scrollTo:P,scrollToIndex:X,scrollToTop:j}),(p,b)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"root",ref:g,class:e.normalizeClass(["vue-window-dynamic-virtual-scroll",{"vue-window-dynamic-virtual-scroll--pulling":e.unref(ie)}]),role:"list","aria-label":n.ariaLabel,onTouchstartPassive:b[0]||(b[0]=(...z)=>e.unref(de)&&e.unref(de)(...z)),onTouchmove:b[1]||(b[1]=(...z)=>e.unref(me)&&e.unref(me)(...z)),onTouchend:b[2]||(b[2]=(...z)=>e.unref(ue)&&e.unref(ue)(...z)),onTouchcancel:b[3]||(b[3]=(...z)=>e.unref(J)&&e.unref(J)(...z))},[n.pullToRefresh||n.refreshing?(e.openBlock(),e.createElementBlock("div",{key:0,class:"vue-window-dynamic-virtual-scroll__refresh",style:e.normalizeStyle({height:`${e.unref(_)}px`,transform:`translateY(${e.unref(ee)-e.unref(_)}px)`}),role:"status","aria-live":"polite"},[e.renderSlot(p.$slots,"refresh",{pullDistance:e.unref(Q),progress:e.unref(te),refreshing:n.refreshing},()=>[e.createTextVNode(e.toDisplayString(e.unref(R)),1)])],4)):e.createCommentVNode("",!0),n.items.length||n.loading?(e.openBlock(),e.createElementBlock("div",{key:1,class:"vue-window-dynamic-virtual-scroll__spacer",style:e.normalizeStyle({height:`${re.value}px`,transform:`translateY(${e.unref(ee)}px)`})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(we.value,({item:z,index:se,key:N,top:ge})=>(e.openBlock(),e.createElementBlock("div",{key:N,ref_for:!0,ref:ce=>ye(ce,N),class:"vue-window-dynamic-virtual-scroll__item",style:e.normalizeStyle({transform:`translateY(${ge}px)`}),role:"listitem","aria-posinset":se+1,"aria-setsize":n.items.length},[e.renderSlot(p.$slots,"default",{item:z,index:se})],12,rn))),128)),n.loading?(e.openBlock(),e.createElementBlock("div",{key:0,class:"vue-window-dynamic-virtual-scroll__loading",style:e.normalizeStyle({height:`${T.value}px`,transform:`translateY(${le.value.total}px)`}),role:"status","aria-live":"polite"},[e.renderSlot(p.$slots,"loading",{},()=>[b[4]||(b[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(ee)}px)`})},[e.renderSlot(p.$slots,"empty")],4))],42,on))}}),sn=["aria-label"],un=["aria-posinset","aria-setsize"],Mt=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(n,{expose:u,emit:k}){const t=n,x=k,g=e.ref(),w=e.ref(0),f=e.ref(0),d=e.ref(0);let a,v=-1;const{getItemKey:I}=We({componentName:"WindowGirdVirtualScroll",items:()=>t.items,itemKey:()=>t.itemKey}),{pulling:O,pullDistance:L,pullOffset:$,pullProgress:B,refreshMessage:S,refreshThreshold:V,handleTouchStart:A,handleTouchMove:U,handleTouchEnd:Z,handleTouchCancel:ae}=tt({enabled:()=>t.pullToRefresh,refreshing:()=>t.refreshing,threshold:()=>t.pullRefreshThreshold,onRefresh:()=>x("refresh"),scrollTop:()=>typeof window>"u"?0:Math.max(0,window.scrollY)}),K=e.computed(()=>Math.max(1,t.itemSize)),ie=e.computed(()=>Math.max(1,Math.floor(t.columns))),Q=e.computed(()=>Math.max(0,t.gap)),ee=e.computed(()=>Math.max(0,Math.floor(t.overscan))),te=e.computed(()=>Math.max(1,t.loadingItemSize??K.value)),R=e.computed(()=>K.value+Q.value),_=e.computed(()=>Math.ceil(t.items.length/ie.value)),de=e.computed(()=>_.value===0?0:_.value*K.value+(_.value-1)*Q.value),me=e.computed(()=>de.value+(t.items.length?Q.value:0)),ue=e.computed(()=>de.value+(t.loading?te.value+(t.items.length?Q.value:0):0)),J=e.computed(()=>Math.max(0,w.value-d.value)),H=e.computed(()=>Math.max(0,Math.floor(J.value/R.value)-ee.value)),T=e.computed(()=>{if(_.value===0)return 0;const ne=Math.max(K.value,w.value+f.value-d.value),oe=Math.ceil((ne+Q.value)/R.value);return Math.min(_.value,oe+ee.value)}),E=e.computed(()=>Math.min(t.items.length,H.value*ie.value)),le=e.computed(()=>Math.min(t.items.length,T.value*ie.value)),re=e.computed(()=>t.items.slice(E.value,le.value).map((ne,oe)=>{const m=E.value+oe;return{item:ne,index:m,key:I(ne,m),rowIndex:Math.floor(m/ie.value),columnIndex:m%ie.value}})),xe=e.computed(()=>({gridTemplateColumns:`repeat(${ie.value}, minmax(0, 1fr))`,columnGap:`${Q.value}px`,rowGap:`${Q.value}px`,transform:`translateY(${H.value*R.value}px)`}));function C(){typeof window>"u"||(w.value=Math.max(0,window.scrollY),f.value=window.innerHeight,g.value&&(d.value=g.value.getBoundingClientRect().top+w.value))}function F(){x("scroll",{scrollTop:J.value,startIndex:E.value,endIndex:le.value})}function q(){C(),F(),ve()}function ve(){if(typeof window>"u"||!t.hasMore||t.loading||v===t.items.length)return;const ne=Math.max(0,t.loadMoreThreshold),oe=d.value+ue.value,m=w.value+f.value;oe-m<=ne&&(v=t.items.length,x("loadMore"))}function we(ne,oe={}){if(typeof window>"u")return;C();const m=Math.max(0,ue.value-f.value),M=Math.min(Math.max(0,Number.isFinite(ne)?ne:0),m),s=Math.max(0,d.value+M),Y=oe.behavior??"auto";Y==="auto"&&(w.value=s),window.scrollTo({...oe,top:s,behavior:Y})}function pe(ne,oe={}){if(typeof window>"u"||t.items.length===0)return;C();const m=Math.min(t.items.length-1,Math.max(0,Math.floor(ne))),M=Math.floor(m/ie.value),{align:s="start",...Y}=oe;let G=d.value+M*R.value;s==="center"?G-=(f.value-K.value)/2:s==="end"&&(G-=f.value-K.value);const ye=Math.max(d.value,d.value+ue.value-f.value),r=Math.max(0,Math.min(G,ye)),P=Y.behavior??"auto";P==="auto"&&(w.value=r),window.scrollTo({...Y,top:r,behavior:P})}function fe(ne="auto"){typeof window>"u"||(C(),window.scrollTo({top:Math.max(0,d.value),behavior:ne}))}return e.watch(()=>[t.items.length,t.itemSize,t.columns,t.gap],async()=>{await e.nextTick(),C(),ve()}),e.watch(()=>[t.hasMore,t.loading],async([ne])=>{ne||(v=-1),await e.nextTick(),C(),ve()}),e.onMounted(()=>{C(),window.addEventListener("scroll",q,{passive:!0}),window.addEventListener("resize",q,{passive:!0}),typeof ResizeObserver<"u"&&(a=new ResizeObserver(()=>{C(),ve()}),g.value&&a.observe(g.value)),e.nextTick(ve)}),e.onBeforeUnmount(()=>{window.removeEventListener("scroll",q),window.removeEventListener("resize",q),a&&(a.disconnect(),a=void 0)}),u({scrollTo:we,scrollToIndex:pe,scrollToTop:fe}),(ne,oe)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"root",ref:g,class:e.normalizeClass(["vue-window-gird-virtual-scroll",{"vue-window-gird-virtual-scroll--pulling":e.unref(O)}]),role:"list","aria-label":n.ariaLabel,onTouchstartPassive:oe[0]||(oe[0]=(...m)=>e.unref(A)&&e.unref(A)(...m)),onTouchmove:oe[1]||(oe[1]=(...m)=>e.unref(U)&&e.unref(U)(...m)),onTouchend:oe[2]||(oe[2]=(...m)=>e.unref(Z)&&e.unref(Z)(...m)),onTouchcancel:oe[3]||(oe[3]=(...m)=>e.unref(ae)&&e.unref(ae)(...m))},[n.pullToRefresh||n.refreshing?(e.openBlock(),e.createElementBlock("div",{key:0,class:"vue-window-gird-virtual-scroll__refresh",style:e.normalizeStyle({height:`${e.unref(V)}px`,transform:`translateY(${e.unref($)-e.unref(V)}px)`}),role:"status","aria-live":"polite"},[e.renderSlot(ne.$slots,"refresh",{pullDistance:e.unref(L),progress:e.unref(B),refreshing:n.refreshing},()=>[e.createTextVNode(e.toDisplayString(e.unref(S)),1)])],4)):e.createCommentVNode("",!0),n.items.length||n.loading?(e.openBlock(),e.createElementBlock("div",{key:1,class:"vue-window-gird-virtual-scroll__spacer",style:e.normalizeStyle({height:`${ue.value}px`,transform:`translateY(${e.unref($)}px)`})},[e.createElementVNode("div",{class:"vue-window-gird-virtual-scroll__content",style:e.normalizeStyle(xe.value)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(re.value,({item:m,index:M,key:s,rowIndex:Y,columnIndex:G})=>(e.openBlock(),e.createElementBlock("div",{key:s,class:"vue-window-gird-virtual-scroll__item",style:e.normalizeStyle({height:`${K.value}px`}),role:"listitem","aria-posinset":M+1,"aria-setsize":n.items.length},[e.renderSlot(ne.$slots,"default",{item:m,index:M,rowIndex:Y,columnIndex:G})],12,un))),128))],4),n.loading?(e.openBlock(),e.createElementBlock("div",{key:0,class:"vue-window-gird-virtual-scroll__loading",style:e.normalizeStyle({height:`${te.value}px`,transform:`translateY(${me.value}px)`}),role:"status","aria-live":"polite"},[e.renderSlot(ne.$slots,"loading",{},()=>[oe[4]||(oe[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($)}px)`})},[e.renderSlot(ne.$slots,"empty")],4))],42,sn))}}),Tt=ut,St={install(n){n.component("ChatVirtualScroll",ht),n.component("DynamicVirtualScroll",ut),n.component("ShortMediaFeed",pt),n.component("SkeletonLoader",gt),n.component("VirtualCarousel",yt),n.component("VirtualList",Tt),n.component("VirtualScroll",xt),n.component("WindowDynamicVirtualScroll",wt),n.component("WindowGirdVirtualScroll",Mt)}};exports.ChatVirtualScroll=ht;exports.DynamicVirtualScroll=ut;exports.ShortMediaFeed=pt;exports.SkeletonLoader=gt;exports.VirtualCarousel=yt;exports.VirtualList=Tt;exports.VirtualScroll=xt;exports.VueVirtualScroll=St;exports.WindowDynamicVirtualScroll=wt;exports.WindowGirdVirtualScroll=Mt;exports.default=St;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.vue-skeleton-loader[data-v-fc92f61f]{position:relative;flex-shrink:0;overflow:hidden;box-sizing:border-box;background:var(--skeleton-background, #e2e8f0)}.vue-skeleton-loader--rounded[data-v-fc92f61f]{border-radius:var(--skeleton-radius, 8px)}.vue-skeleton-loader--circle[data-v-fc92f61f]{border-radius:50%}.vue-skeleton-loader--animated[data-v-fc92f61f]:after{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,transparent,var(--skeleton-highlight, rgb(255 255 255 / 60%)),transparent);transform:translate(-100%);animation:skeleton-shimmer-fc92f61f 1.5s ease-in-out infinite;content:""}@keyframes skeleton-shimmer-fc92f61f{to{transform:translate(100%)}}@media(prefers-reduced-motion:reduce){.vue-skeleton-loader--animated[data-v-fc92f61f]:after{animation:none;content:none}}.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{display:flex;flex-direction:column-reverse;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-
|
|
1
|
+
.vue-skeleton-loader[data-v-fc92f61f]{position:relative;flex-shrink:0;overflow:hidden;box-sizing:border-box;background:var(--skeleton-background, #e2e8f0)}.vue-skeleton-loader--rounded[data-v-fc92f61f]{border-radius:var(--skeleton-radius, 8px)}.vue-skeleton-loader--circle[data-v-fc92f61f]{border-radius:50%}.vue-skeleton-loader--animated[data-v-fc92f61f]:after{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,transparent,var(--skeleton-highlight, rgb(255 255 255 / 60%)),transparent);transform:translate(-100%);animation:skeleton-shimmer-fc92f61f 1.5s ease-in-out infinite;content:""}@keyframes skeleton-shimmer-fc92f61f{to{transform:translate(100%)}}@media(prefers-reduced-motion:reduce){.vue-skeleton-loader--animated[data-v-fc92f61f]:after{animation:none;content:none}}.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__root{position:relative;width:100%;min-height:0;box-sizing:border-box}.vue-chat-virtual-scroll{display:flex;flex-direction:column-reverse;position:relative;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;box-sizing:border-box;overflow-anchor:none;overscroll-behavior:contain;touch-action:pan-y pinch-zoom;-webkit-overflow-scrolling:touch}.vue-chat-virtual-scroll--contained{contain:layout paint}.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{contain:layout paint;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-y pinch-zoom;-webkit-overflow-scrolling:touch}.vue-virtual-carousel::-webkit-scrollbar{display:none}.vue-virtual-carousel--mouse-drag{cursor:grab}.vue-virtual-carousel--controlled{scroll-snap-type:none}.vue-virtual-carousel--dragging{scroll-snap-type:none;-webkit-user-select:none;user-select:none}.vue-virtual-carousel--mouse-drag.vue-virtual-carousel--dragging{cursor:grabbing}.vue-virtual-carousel__track{position:relative;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{position:absolute;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{flex:0 0 auto;overflow:hidden;overflow:clip;position:relative;width:100%}.vue-dynamic-virtual-scroll__item,.vue-window-dynamic-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__item{position:absolute;inset:auto 0 0;display:flow-root;width:100%;box-sizing:border-box;will-change:transform}.vue-chat-virtual-scroll__loading-older{width:100%;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-chat-virtual-scroll__new-items{position:absolute;right:0;bottom:.75rem;left:0;z-index:3;display:flex;justify-content:center;pointer-events:none}.vue-chat-virtual-scroll__new-items button{min-height:2.5rem;padding:.5rem 1rem;color:#fff;font:inherit;font-size:.875rem;font-weight:600;background:#2563eb;border:0;border-radius:999px;box-shadow:0 4px 16px #0f172a33;cursor:pointer;pointer-events:auto}.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}
|