virtua 0.45.2 → 0.46.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.
@@ -3,7 +3,7 @@ import type { VirtualizerHandle, VirtualizerProps } from "./Virtualizer.type.js"
3
3
  /**
4
4
  * Props of {@link VList}.
5
5
  */
6
- export interface VListProps<T> extends Pick<VirtualizerProps<T>, "data" | "getKey" | "overscan" | "itemSize" | "shift" | "horizontal" | "children" | "onscroll" | "onscrollend" | "keepMounted">, ViewportComponentAttributes {
6
+ export interface VListProps<T> extends Pick<VirtualizerProps<T>, "data" | "getKey" | "bufferSize" | "itemSize" | "shift" | "horizontal" | "children" | "onscroll" | "onscrollend" | "keepMounted">, ViewportComponentAttributes {
7
7
  }
8
8
  /**
9
9
  * Methods of {@link VList}.
@@ -27,7 +27,7 @@
27
27
  as = "div",
28
28
  item: itemAs,
29
29
  scrollRef,
30
- overscan,
30
+ bufferSize,
31
31
  itemSize,
32
32
  shift = false,
33
33
  horizontal = false,
@@ -41,7 +41,6 @@
41
41
  const store = createVirtualStore(
42
42
  data.length,
43
43
  itemSize,
44
- overscan,
45
44
  undefined,
46
45
  undefined,
47
46
  !itemSize
@@ -65,7 +64,7 @@
65
64
 
66
65
  let stateVersion: StateVersion = $state(store.$getStateVersion());
67
66
 
68
- let range = $derived(stateVersion && store.$getRange());
67
+ let range = $derived(stateVersion && store.$getRange(bufferSize));
69
68
  let isScrolling = $derived(stateVersion && store.$isScrolling());
70
69
  let totalSize = $derived(stateVersion && store.$getTotalSize());
71
70
 
@@ -29,16 +29,16 @@ export interface VirtualizerProps<T> {
29
29
  */
30
30
  item?: keyof SvelteHTMLElements;
31
31
  /**
32
- * Number of items to render above/below the visible bounds of the list. You can increase to avoid showing blank items in fast scrolling.
33
- * @defaultValue 4
32
+ * Extra item space in pixels to render before/after the viewport. The minimum value is 0. Lower value will give better performance but you can increase to avoid showing blank items in fast scrolling.
33
+ * @defaultValue 200
34
34
  */
35
- overscan?: number;
35
+ bufferSize?: number;
36
36
  /**
37
37
  * Reference to the scrollable element. The default will get the direct parent element of virtualizer.
38
38
  */
39
39
  scrollRef?: HTMLElement;
40
40
  /**
41
- * Item size hint for unmeasured items. It will help to reduce scroll jump when items are measured if used properly.
41
+ * Item size hint for unmeasured items in pixels. It will help to reduce scroll jump when items are measured if used properly.
42
42
  *
43
43
  * - If not set, initial item sizes will be automatically estimated from measured sizes. This is recommended for most cases.
44
44
  * - If set, you can opt out estimation and use the value as initial item size.
@@ -57,7 +57,7 @@ export interface VirtualizerProps<T> {
57
57
  */
58
58
  keepMounted?: readonly number[];
59
59
  /**
60
- * If you put an element before virtualizer, you have to define its height with this prop.
60
+ * The offset to the scrollable parent before virtualizer in pixels. If you put an element before virtualizer, you have to set its height to this prop.
61
61
  */
62
62
  startMargin?: number;
63
63
  /**
@@ -23,7 +23,7 @@
23
23
  let {
24
24
  data,
25
25
  getKey = defaultGetKey,
26
- overscan,
26
+ bufferSize,
27
27
  itemSize,
28
28
  shift = false,
29
29
  horizontal = false,
@@ -35,7 +35,6 @@
35
35
  const store = createVirtualStore(
36
36
  data.length,
37
37
  itemSize,
38
- overscan,
39
38
  undefined,
40
39
  undefined,
41
40
  !itemSize
@@ -61,7 +60,7 @@
61
60
 
62
61
  let stateVersion: StateVersion = $state(store.$getStateVersion());
63
62
 
64
- let range = $derived(stateVersion && store.$getRange());
63
+ let range = $derived(stateVersion && store.$getRange(bufferSize));
65
64
  let isScrolling = $derived(stateVersion && store.$isScrolling());
66
65
  let totalSize = $derived(stateVersion && store.$getTotalSize());
67
66
 
@@ -18,12 +18,12 @@ export interface WindowVirtualizerProps<T> {
18
18
  */
19
19
  getKey?: (data: T, index: number) => string | number;
20
20
  /**
21
- * Number of items to render above/below the visible bounds of the list. You can increase to avoid showing blank items in fast scrolling.
22
- * @defaultValue 4
21
+ * Extra item space in pixels to render before/after the viewport. The minimum value is 0. Lower value will give better performance but you can increase to avoid showing blank items in fast scrolling.
22
+ * @defaultValue 200
23
23
  */
24
- overscan?: number;
24
+ bufferSize?: number;
25
25
  /**
26
- * Item size hint for unmeasured items. It will help to reduce scroll jump when items are measured if used properly.
26
+ * Item size hint for unmeasured items in pixels. It will help to reduce scroll jump when items are measured if used properly.
27
27
  *
28
28
  * - If not set, initial item sizes will be automatically estimated from measured sizes. This is recommended for most cases.
29
29
  * - If set, you can opt out estimation and use the value as initial item size.
@@ -13,12 +13,12 @@ export declare const VList: import("vue").DefineComponent<{
13
13
  required: true;
14
14
  };
15
15
  /**
16
- * Number of items to render above/below the visible bounds of the list. You can increase to avoid showing blank items in fast scrolling.
17
- * @defaultValue 4
16
+ * Extra item space in pixels to render before/after the viewport. The minimum value is 0. Lower value will give better performance but you can increase to avoid showing blank items in fast scrolling.
17
+ * @defaultValue 200
18
18
  */
19
- overscan: NumberConstructor;
19
+ bufferSize: NumberConstructor;
20
20
  /**
21
- * Item size hint for unmeasured items. It will help to reduce scroll jump when items are measured if used properly.
21
+ * Item size hint for unmeasured items in pixels. It will help to reduce scroll jump when items are measured if used properly.
22
22
  *
23
23
  * - If not set, initial item sizes will be automatically estimated from measured sizes. This is recommended for most cases.
24
24
  * - If set, you can opt out estimation and use the value as initial item size.
@@ -33,7 +33,7 @@ export declare const VList: import("vue").DefineComponent<{
33
33
  */
34
34
  horizontal: BooleanConstructor;
35
35
  /**
36
- * A prop for SSR. If set, the specified amount of items will be mounted in the initial rendering regardless of the container size until hydrated.
36
+ * A prop for SSR. If set, the specified amount of items will be mounted in the initial rendering regardless of the container size until hydrated. The minimum value is 0.
37
37
  */
38
38
  ssrCount: NumberConstructor;
39
39
  /**
@@ -65,12 +65,12 @@ export declare const VList: import("vue").DefineComponent<{
65
65
  required: true;
66
66
  };
67
67
  /**
68
- * Number of items to render above/below the visible bounds of the list. You can increase to avoid showing blank items in fast scrolling.
69
- * @defaultValue 4
68
+ * Extra item space in pixels to render before/after the viewport. The minimum value is 0. Lower value will give better performance but you can increase to avoid showing blank items in fast scrolling.
69
+ * @defaultValue 200
70
70
  */
71
- overscan: NumberConstructor;
71
+ bufferSize: NumberConstructor;
72
72
  /**
73
- * Item size hint for unmeasured items. It will help to reduce scroll jump when items are measured if used properly.
73
+ * Item size hint for unmeasured items in pixels. It will help to reduce scroll jump when items are measured if used properly.
74
74
  *
75
75
  * - If not set, initial item sizes will be automatically estimated from measured sizes. This is recommended for most cases.
76
76
  * - If set, you can opt out estimation and use the value as initial item size.
@@ -85,7 +85,7 @@ export declare const VList: import("vue").DefineComponent<{
85
85
  */
86
86
  horizontal: BooleanConstructor;
87
87
  /**
88
- * A prop for SSR. If set, the specified amount of items will be mounted in the initial rendering regardless of the container size until hydrated.
88
+ * A prop for SSR. If set, the specified amount of items will be mounted in the initial rendering regardless of the container size until hydrated. The minimum value is 0.
89
89
  */
90
90
  ssrCount: NumberConstructor;
91
91
  /**
@@ -59,12 +59,12 @@ export declare const Virtualizer: import("vue").DefineComponent<{
59
59
  required: true;
60
60
  };
61
61
  /**
62
- * Number of items to render above/below the visible bounds of the list. You can increase to avoid showing blank items in fast scrolling.
63
- * @defaultValue 4
62
+ * Extra item space in pixels to render before/after the viewport. The minimum value is 0. Lower value will give better performance but you can increase to avoid showing blank items in fast scrolling.
63
+ * @defaultValue 200
64
64
  */
65
- overscan: NumberConstructor;
65
+ bufferSize: NumberConstructor;
66
66
  /**
67
- * Item size hint for unmeasured items. It will help to reduce scroll jump when items are measured if used properly.
67
+ * Item size hint for unmeasured items in pixels. It will help to reduce scroll jump when items are measured if used properly.
68
68
  *
69
69
  * - If not set, initial item sizes will be automatically estimated from measured sizes. This is recommended for most cases.
70
70
  * - If set, you can opt out estimation and use the value as initial item size.
@@ -79,14 +79,14 @@ export declare const Virtualizer: import("vue").DefineComponent<{
79
79
  */
80
80
  horizontal: BooleanConstructor;
81
81
  /**
82
- * If you put an element before virtualizer, you have to define its height with this prop.
82
+ * The offset to the scrollable parent before virtualizer in pixels. If you put an element before virtualizer, you have to set its height to this prop.
83
83
  */
84
84
  startMargin: {
85
85
  type: NumberConstructor;
86
86
  default: number;
87
87
  };
88
88
  /**
89
- * A prop for SSR. If set, the specified amount of items will be mounted in the initial rendering regardless of the container size until hydrated.
89
+ * A prop for SSR. If set, the specified amount of items will be mounted in the initial rendering regardless of the container size until hydrated. The minimum value is 0.
90
90
  */
91
91
  ssrCount: NumberConstructor;
92
92
  /**
@@ -138,12 +138,12 @@ export declare const Virtualizer: import("vue").DefineComponent<{
138
138
  required: true;
139
139
  };
140
140
  /**
141
- * Number of items to render above/below the visible bounds of the list. You can increase to avoid showing blank items in fast scrolling.
142
- * @defaultValue 4
141
+ * Extra item space in pixels to render before/after the viewport. The minimum value is 0. Lower value will give better performance but you can increase to avoid showing blank items in fast scrolling.
142
+ * @defaultValue 200
143
143
  */
144
- overscan: NumberConstructor;
144
+ bufferSize: NumberConstructor;
145
145
  /**
146
- * Item size hint for unmeasured items. It will help to reduce scroll jump when items are measured if used properly.
146
+ * Item size hint for unmeasured items in pixels. It will help to reduce scroll jump when items are measured if used properly.
147
147
  *
148
148
  * - If not set, initial item sizes will be automatically estimated from measured sizes. This is recommended for most cases.
149
149
  * - If set, you can opt out estimation and use the value as initial item size.
@@ -158,14 +158,14 @@ export declare const Virtualizer: import("vue").DefineComponent<{
158
158
  */
159
159
  horizontal: BooleanConstructor;
160
160
  /**
161
- * If you put an element before virtualizer, you have to define its height with this prop.
161
+ * The offset to the scrollable parent before virtualizer in pixels. If you put an element before virtualizer, you have to set its height to this prop.
162
162
  */
163
163
  startMargin: {
164
164
  type: NumberConstructor;
165
165
  default: number;
166
166
  };
167
167
  /**
168
- * A prop for SSR. If set, the specified amount of items will be mounted in the initial rendering regardless of the container size until hydrated.
168
+ * A prop for SSR. If set, the specified amount of items will be mounted in the initial rendering regardless of the container size until hydrated. The minimum value is 0.
169
169
  */
170
170
  ssrCount: NumberConstructor;
171
171
  /**
@@ -26,12 +26,12 @@ export declare const WindowVirtualizer: import("vue").DefineComponent<{
26
26
  required: true;
27
27
  };
28
28
  /**
29
- * Number of items to render above/below the visible bounds of the list. You can increase to avoid showing blank items in fast scrolling.
30
- * @defaultValue 4
29
+ * Extra item space in pixels to render before/after the viewport. The minimum value is 0. Lower value will give better performance but you can increase to avoid showing blank items in fast scrolling.
30
+ * @defaultValue 200
31
31
  */
32
- overscan: NumberConstructor;
32
+ bufferSize: NumberConstructor;
33
33
  /**
34
- * Item size hint for unmeasured items. It will help to reduce scroll jump when items are measured if used properly.
34
+ * Item size hint for unmeasured items in pixels. It will help to reduce scroll jump when items are measured if used properly.
35
35
  *
36
36
  * - If not set, initial item sizes will be automatically estimated from measured sizes. This is recommended for most cases.
37
37
  * - If set, you can opt out estimation and use the value as initial item size.
@@ -79,12 +79,12 @@ export declare const WindowVirtualizer: import("vue").DefineComponent<{
79
79
  required: true;
80
80
  };
81
81
  /**
82
- * Number of items to render above/below the visible bounds of the list. You can increase to avoid showing blank items in fast scrolling.
83
- * @defaultValue 4
82
+ * Extra item space in pixels to render before/after the viewport. The minimum value is 0. Lower value will give better performance but you can increase to avoid showing blank items in fast scrolling.
83
+ * @defaultValue 200
84
84
  */
85
- overscan: NumberConstructor;
85
+ bufferSize: NumberConstructor;
86
86
  /**
87
- * Item size hint for unmeasured items. It will help to reduce scroll jump when items are measured if used properly.
87
+ * Item size hint for unmeasured items in pixels. It will help to reduce scroll jump when items are measured if used properly.
88
88
  *
89
89
  * - If not set, initial item sizes will be automatically estimated from measured sizes. This is recommended for most cases.
90
90
  * - If set, you can opt out estimation and use the value as initial item size.
package/lib/vue/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- var e=require("vue");const t=null,{min:o,max:r,abs:n,floor:s}=Math,i=(e,t,n)=>o(n,r(t,e)),l=e=>[...e].sort(((e,t)=>e-t)),c="function"==typeof queueMicrotask?queueMicrotask:e=>{Promise.resolve().then(e)},a=()=>{let e;return[new Promise((t=>{e=t})),e]},u=e=>{let t;return()=>(e&&(t=e(),e=void 0),t)},f=-1,d=(e,t,o)=>{const r=o?"unshift":"push";for(let o=0;o<t;o++)e[r](f);return e},p=(e,t)=>{const o=e.t[t];return o===f?e.o:o},h=(e,t,r)=>{const n=e.t[t]===f;return e.t[t]=r,e.i=o(t,e.i),n},m=(e,t)=>{if(!e.l)return 0;if(e.i>=t)return e.u[t];e.i<0&&(e.u[0]=0,e.i=0);let o=e.i,r=e.u[o];for(;o<t;)r+=p(e,o),e.u[++o]=r;return e.i=t,r},v=(e,t,o=0,r=e.l-1)=>{for(;o<=r;){const n=s((o+r)/2),i=m(e,n);if(i<=t){if(i+p(e,n)>t)return n;o=n+1}else r=n-1}return i(o,0,e.l-1)},_=(e,t,r)=>{const n=t-e.l;return e.i=r?-1:o(t-1,e.i),e.l=t,n>0?(d(e.u,n),d(e.t,n,r),e.o*n):(e.u.splice(n),(r?e.t.splice(0,-n):e.t.splice(n)).reduce(((t,o)=>t-(o===f?e.o:o)),0))},b="undefined"!=typeof window,y=()=>document.documentElement,S=e=>e.ownerDocument,g=e=>e.defaultView,x=/*#__PURE__*/u((()=>!!b&&"rtl"===getComputedStyle(y()).direction)),z=/*#__PURE__*/u((()=>!!/iP(hone|od|ad)/.test(navigator.userAgent)||"MacIntel"===navigator.platform&&navigator.maxTouchPoints>0)),$=/*#__PURE__*/u((()=>"scrollBehavior"in y().style)),w=(e,s=40,i=4,c=0,a,u=!1)=>{let b=!!c,y=1,S=0,g=0,x=0,$=0,w=0,I=0,k=0,O=0,j=b?[0,r(c-1,0)]:t,E=[0,0],T=0;const q=((e,t)=>({o:t,t:d([],e),l:e,i:-1,u:d([],e)}))(e,s),B=new Set,M=()=>x-g,N=()=>M()+w+$,P=e=>((e,t,r,n)=>{if(n=o(n,e.l-1),m(e,n)<=t){const o=v(e,t+r,n);return[v(e,t,n,o),o]}{const o=v(e,t,void 0,n);return[o,v(e,t+r,o)]}})(q,e,S,E[0]),R=()=>(e=>e.l?m(e,e.l-1)+p(e,e.l-1):0)(q),A=e=>m(q,e)-w,H=e=>p(q,e),V=e=>{e&&(z()&&0!==k||j&&1===O?w+=e:$+=e)};return{p:()=>y,h:()=>(e=>[e.t.slice(),e.o])(q),m:()=>{let e,t;return I?[e,t]=E:([e,t]=E=P(r(0,N())),j&&(e=o(e,j[0]),t=r(t,j[1]))),1!==k&&(e-=r(0,i)),2!==k&&(t+=r(0,i)),[r(e,0),o(t,q.l-1)]},v:()=>v(q,N()),S:()=>v(q,N()+S),I:e=>q.t[e]===f,k:A,O:H,j:()=>q.l,T:()=>x,q:()=>0!==k,B:()=>S,M:()=>g,N:R,P:()=>(I=$,$=0,[I,2===O]),R:(e,t)=>{const o=[e,t];return B.add(o),()=>{B.delete(o)}},A:(e,o)=>{let s,i,c=0;switch(e){case 1:{const e=I;I=0;const r=o-x,s=n(r);e&&s<n(e)+1||0!==O||(k=r<0?2:1),b&&(j=t,b=!1),x=o,c=4;const l=M();l>=-S&&l<=R()&&(c+=1,i=s>S);break}case 2:c=8,0!==k&&(s=!0,c+=1),k=0,O=0,j=t;break;case 3:{const e=o.filter((([e,t])=>q.t[e]!==t));if(!e.length)break;V(e.reduce(((e,[t,o])=>((2===O||(j&&1===O?t<j[0]:A(t)+(0===k&&0===O?H(t):0)<M()))&&(e+=o-H(t)),e)),0));for(const[t,o]of e){const e=H(t),r=h(q,t,o);u&&(T+=r?o:o-e)}u&&S&&T>S&&(V(((e,t)=>{let o=0;const n=[];e.t.forEach(((e,r)=>{e!==f&&(n.push(e),r<t&&o++)})),e.i=-1;const s=l(n),i=s.length,c=i/2|0,a=i%2==0?(s[c-1]+s[c])/2:s[c],u=e.o;return((e.o=a)-u)*r(t-o,0)})(q,v(q,N()))),u=!1),c=3,i=!0;break}case 4:S!==o&&(S=o,c=3);break;case 5:o[1]?(V(_(q,o[0],!0)),O=2,c=1):(_(q,o[0]),c=1);break;case 6:g=o;break;case 7:O=1;break;case 8:j=P(o),c=1}c&&(y=1+(2147483647&y),s&&w&&($+=w,w=0),B.forEach((([e,t])=>{c&e&&t(i)})))}}},I=setTimeout,k=(e,t)=>t&&x()?-e:e,O=(e,o,r,n,s,i)=>{const l=Date.now;let c=0,a=!1,u=!1,f=!1,d=!1;const p=(()=>{let o;const r=()=>{o!=t&&clearTimeout(o)},n=()=>{r(),o=I((()=>{o=t,(()=>{if(a||u)return a=!1,void p();f=!1,e.A(2)})()}),150)};return n.H=r,n})(),h=()=>{c=l(),f&&(d=!0),i&&e.A(6,i()),e.A(1,n()),p()},m=t=>{if(a||!e.q()||t.ctrlKey)return;const o=l()-c;150>o&&50<o&&(r?t.deltaX:t.deltaY)&&(a=!0)},v=()=>{u=!0,f=d=!1},_=()=>{u=!1,z()&&(f=!0)};return o.addEventListener("scroll",h),o.addEventListener("wheel",m,{passive:!0}),o.addEventListener("touchstart",v,{passive:!0}),o.addEventListener("touchend",_,{passive:!0}),{V:()=>{o.removeEventListener("scroll",h),o.removeEventListener("wheel",m),o.removeEventListener("touchstart",v),o.removeEventListener("touchend",_),p.H()},C:()=>{const[t,o]=e.P();t&&(s(k(t,r),o,d),d=!1,o&&e.B()>e.N()&&e.A(1,n()))}}},j=(e,t,o)=>{let r;return[async(n,s)=>{if(!await t())return;r&&r();const i=()=>{const[t,o]=a();return r=()=>{o(!1)},e.B()&&I(r,150),[t,e.R(2,(()=>{o(!0)}))]};if(s&&$())e.A(8,n()),c((async()=>{for(;;){let t=!0;for(let[o,r]=e.m();o<=r;o++)if(e.I(o)){t=!1;break}if(t)break;const[o,r]=i();try{if(!await o)return}finally{r()}}e.A(7),o(n(),s)}));else for(;;){const[t,r]=i();try{if(e.A(7),o(n()),!await t)return}finally{r()}}},()=>{r&&r()}]},E=e=>{let t;return{J(o){(t||(t=new(g(S(o)).ResizeObserver)(e))).observe(o)},F(e){t.unobserve(e)},V(){t&&t.disconnect()}}},T=/*#__PURE__*/e.defineComponent({props:{L:{type:Object,required:!0},W:{type:Object,required:!0},X:{type:Object,required:!0},Y:{type:Function,required:!0},D:{type:Number,required:!0},U:{type:Boolean},G:{type:Boolean},K:{type:String,required:!0},Z:Object},setup(t){const o=e.ref(),r=e.computed((()=>t.L.value&&t.W.k(t.D))),n=e.computed((()=>t.L.value&&t.W.I(t.D)));return e.watch((()=>o.value&&t.D),((e,r,n)=>{n(t.Y(o.value,t.D))}),{flush:"post"}),()=>{var s;const{X:i,U:l,G:c,K:a}=t,u=n.value,{style:f,...d}=null!==(s=t.Z)&&void 0!==s?s:{},p={contain:"layout style",position:u&&c?void 0:"absolute",[l?"height":"width"]:"100%",[l?"top":"left"]:"0px",[l?x()?"right":"left":"top"]:r.value+"px",visibility:!u||c?"visible":"hidden",...f};return l&&(p.display="inline-flex"),e.createVNode(a,e.mergeProps({ref:o,style:p},d),"function"==typeof(h=i)||"[object Object]"===Object.prototype.toString.call(h)&&!e.isVNode(h)?i:{default:()=>[i],_:2},16,["style"]);var h}}}),q=(e,t)=>{const o=e.key;return null!=o?o:"_"+t},B=(e,t)=>e[0]===t[0]&&e[1]===t[1],M={data:{type:Array,required:!0},overscan:Number,itemSize:Number,shift:Boolean,horizontal:Boolean,startMargin:{type:Number,default:0},ssrCount:Number,scrollRef:Object,as:{type:String,default:"div"},item:{type:String,default:"div"},itemProps:Function,keepMounted:Array},N=/*#__PURE__*/e.defineComponent({props:M,emits:["scroll","scrollEnd"],setup(o,{emit:n,expose:s,slots:u}){let f=!!o.ssrCount;const d=o.horizontal,p=e.ref(),h=w(o.data.length,o.itemSize,o.overscan,o.ssrCount,0,!o.itemSize),m=((e,o)=>{let r;const n=o?"width":"height",s=new WeakMap,i=E((o=>{const i=[];for(const{target:l,contentRect:c}of o)if(l.offsetParent)if(l===r)e.A(4,c[n]);else{const e=s.get(l);e!=t&&i.push([e,c[n]])}i.length&&e.A(3,i)}));return{ee(e){i.J(r=e)},te:(e,t)=>(s.set(e,t),i.J(e),()=>{s.delete(e),i.F(e)}),oe:i.V}})(h,d),v=((e,t)=>{let o,r,n=a();const s=t?"scrollLeft":"scrollTop",l=t?"overflowX":"overflowY",[c,u]=j(e,(()=>n[0]),((e,r)=>{e=k(e,t),r?o.scrollTo({[t?"left":"top"]:e,behavior:"smooth"}):o[s]=e}));return{re(i){o=i,r=O(e,i,t,(()=>k(i[s],t)),((t,o,r)=>{if(r){const e=i.style,t=e[l];e[l]="hidden",I((()=>{e[l]=t}))}i[s]=e.T()+t,o&&u()})),n[1](!0)},oe(){r&&r.V(),n[1](!1),n=a()},ne(e){c((()=>e))},se(t){t+=e.T(),c((()=>t))},ie(t,{align:o,smooth:r,offset:n=0}={}){if(t=i(t,0,e.j()-1),"nearest"===o){const r=e.k(t),n=e.T();if(r<n)o="start";else{if(!(r+e.O(t)>n+e.B()))return;o="end"}}c((()=>n+e.M()+e.k(t)+("end"===o?e.O(t)-e.B():"center"===o?(e.O(t)-e.B())/2:0)),r)},le:()=>{r&&r.C()}}})(h,d),_=e.ref(h.p()),b=h.R(1,(()=>{_.value=h.p()})),y=h.R(4,(()=>{n("scroll",h.T())})),S=h.R(8,(()=>{n("scrollEnd")})),g=e.computed((e=>{_.value;const t=h.m();return e&&B(e,t)?e:t})),x=e.computed((()=>_.value&&h.q())),z=e.computed((()=>_.value&&h.N()));return e.onMounted((()=>{f=!1,c((()=>{const e=e=>{m.ee(e),v.re(e)};o.scrollRef?e(o.scrollRef):e(p.value.parentElement)}))})),e.onUnmounted((()=>{b(),y(),S(),m.oe(),v.oe()})),e.watch((()=>o.data.length),(e=>{h.A(5,[e,o.shift])})),e.watch((()=>o.startMargin),(e=>{h.A(6,e)}),{immediate:!0}),e.watch([_],(()=>{v.le()}),{flush:"post"}),s({get scrollOffset(){return h.T()},get scrollSize(){return(e=>r(e.N(),e.B()))(h)},get viewportSize(){return h.B()},findStartIndex:h.v,findEndIndex:h.S,getItemOffset:h.k,getItemSize:h.O,scrollToIndex:v.ie,scrollTo:v.ne,scrollBy:v.se}),()=>{const t=o.as,r=o.item,[n,s]=g.value,i=z.value,c=[],a=t=>{var n;const s=u.default({item:o.data[t],index:t})[0];return e.createVNode(T,{key:q(s,t),L:_,W:h,Y:m.te,D:t,X:s,U:d,G:f,K:r,Z:null===(n=o.itemProps)||void 0===n?void 0:n.call(o,{item:o.data[t],index:t})},null,8,["_stateVersion","_store","_resizer","_index","_children","_isHorizontal","_isSSR","_as","_itemProps"])};if(o.keepMounted){const e=new Set(o.keepMounted);for(let t=n,o=s;t<=o;t++)e.add(t);l([...e]).forEach((e=>{c.push(a(e))}))}else for(let e=n,t=s;e<=t;e++)c.push(a(e));return e.createVNode(t,{ref:p,style:{contain:"size paint style",overflowAnchor:"none",overflow:"clip",flex:"none",position:"relative",width:d?i+"px":"100%",height:d?"100%":i+"px",pointerEvents:x.value?"none":void 0}},"function"==typeof(v=c)||"[object Object]"===Object.prototype.toString.call(v)&&!e.isVNode(v)?c:{default:()=>[c],_:2},8,["style"]);var v}}}),P={data:{type:Array,required:!0},overscan:Number,itemSize:Number,shift:Boolean,horizontal:Boolean,ssrCount:Number,itemProps:Function,keepMounted:Array},R=/*#__PURE__*/e.defineComponent({props:P,emits:["scroll","scrollEnd"],setup(t,{emit:o,expose:r,slots:n}){const s=t.horizontal,i=e=>{o("scroll",e)},l=()=>{o("scrollEnd")},c=e.ref();return r({get scrollOffset(){return c.value.scrollOffset},get scrollSize(){return c.value.scrollSize},get viewportSize(){return c.value.viewportSize},findStartIndex:(...e)=>c.value.findStartIndex(...e),findEndIndex:(...e)=>c.value.findEndIndex(...e),getItemOffset:(...e)=>c.value.getItemOffset(...e),getItemSize:(...e)=>c.value.getItemSize(...e),scrollToIndex:(...e)=>c.value.scrollToIndex(...e),scrollTo:(...e)=>c.value.scrollTo(...e),scrollBy:(...e)=>c.value.scrollBy(...e)}),()=>{return e.createVNode("div",{style:{display:s?"inline-block":"block",[s?"overflowX":"overflowY"]:"auto",contain:"strict",width:"100%",height:"100%"}},[e.createVNode(N,{ref:c,data:t.data,overscan:t.overscan,itemSize:t.itemSize,itemProps:t.itemProps,shift:t.shift,ssrCount:t.ssrCount,horizontal:s,keepMounted:t.keepMounted,onScroll:i,onScrollEnd:l},(o=n,"function"==typeof o||"[object Object]"===Object.prototype.toString.call(o)&&!e.isVNode(o)?n:{default:()=>[n],_:2}),8,["data","overscan","itemSize","itemProps","shift","ssrCount","horizontal","keepMounted","onScroll","onScrollEnd"])],4);var o}}}),A={data:{type:Array,required:!0},overscan:Number,itemSize:Number,shift:Boolean,horizontal:Boolean,as:{type:String,default:"div"},item:{type:String,default:"div"}},H=/*#__PURE__*/e.defineComponent({props:A,emits:["scroll","scrollEnd"],setup(o,{emit:r,slots:n,expose:s}){const l=o.horizontal,c=e.ref(),u=w(o.data.length,o.itemSize,o.overscan,void 0,0,!o.itemSize),f=((e,o)=>{const r=o?"width":"height",n=o?"innerWidth":"innerHeight",s=new WeakMap,i=E((o=>{const n=[];for(const{target:e,contentRect:i}of o){if(!e.offsetParent)continue;const o=s.get(e);o!=t&&n.push([o,i[r]])}n.length&&e.A(3,n)}));let l;return{ee(t){const o=g(S(t)),r=()=>{e.A(4,o[n])};o.addEventListener("resize",r),r(),l=()=>{o.removeEventListener("resize",r)}},te:(e,t)=>(s.set(e,t),i.J(e),()=>{s.delete(e),i.F(e)}),oe(){l&&l(),i.V()}}})(u,l),d=((e,t)=>{let o,r,n=a();const s=t?"left":"top",[l]=j(e,(()=>n[0]),((e,r)=>{e=k(e,t);const n=g(S(o));r?n.scroll({[s]:e,behavior:"smooth"}):n.scroll({[s]:e})})),c=(e,t,o,r,n=0)=>{const s=r?"offsetLeft":"offsetTop",i=n+(r&&x()?o.innerWidth-e[s]-e.offsetWidth:e[s]),l=e.offsetParent;return e!==t&&l?c(l,t,o,r,i):i};return{re(i){o=i;const l=t?"scrollX":"scrollY",a=S(i),u=g(a);r=O(e,u,t,(()=>k(u[l],t)),(t=>{u.scroll({[s]:e.T()+t})}),(()=>c(i,a.body,u,t))),n[1](!0)},oe(){r&&r.V(),o=void 0,n[1](!1),n=a()},le:()=>{r&&r.C()},ie(r,{align:n,smooth:s,offset:a=0}={}){if(!o)return;if(r=i(r,0,e.j()-1),"nearest"===n){const t=e.k(r),o=e.T();if(t<o)n="start";else{if(!(t+e.O(r)>o+e.B()))return;n="end"}}const u=S(o),f=g(u),d=u.documentElement,p=()=>e.B()-(t?d.clientWidth:d.clientHeight);l((()=>a+c(o,u.body,f,t)+e.k(r)+("end"===n?e.O(r)-(e.B()-p()):"center"===n?(e.O(r)-(e.B()-p()))/2:0)),s)}}})(u,l),p=e.ref(u.p()),h=u.R(1,(()=>{p.value=u.p()})),m=u.R(4,(()=>{r("scroll")})),v=u.R(8,(()=>{r("scrollEnd")})),_=e.computed((e=>{p.value;const t=u.m();return e&&B(e,t)?e:t})),b=e.computed((()=>p.value&&u.q())),y=e.computed((()=>p.value&&u.N()));return e.onMounted((()=>{const e=c.value;e&&(f.ee(e),d.re(e))})),e.onUnmounted((()=>{h(),m(),v(),f.oe(),d.oe()})),e.watch((()=>o.data.length),(e=>{u.A(5,[e,o.shift])})),e.watch([p],(()=>{d.le()}),{flush:"post"}),s({findStartIndex:u.v,findEndIndex:u.S,scrollToIndex:d.ie}),()=>{const t=o.as,r=o.item,[s,i]=_.value,a=y.value,d=[];for(let t=s,c=i;t<=c;t++){const s=n.default({item:o.data[t],index:t})[0];d.push(e.createVNode(T,{key:q(s,t),L:p,W:u,Y:f.te,D:t,X:s,U:l,K:r},null,8,["_stateVersion","_store","_resizer","_index","_children","_isHorizontal","_as"]))}return e.createVNode(t,{ref:c,style:{contain:"size paint style",overflowAnchor:"none",overflow:"clip",flex:"none",position:"relative",width:l?a+"px":"100%",height:l?"100%":a+"px",pointerEvents:b.value?"none":void 0}},"function"==typeof(h=d)||"[object Object]"===Object.prototype.toString.call(h)&&!e.isVNode(h)?d:{default:()=>[d],_:2},8,["style"]);var h}}});exports.VList=R,exports.Virtualizer=N,exports.WindowVirtualizer=H;
1
+ var e=require("vue");const t=null,{min:r,max:o,abs:n,floor:s}=Math,i=(e,t,n)=>r(n,o(t,e)),l=e=>[...e].sort(((e,t)=>e-t)),c="function"==typeof queueMicrotask?queueMicrotask:e=>{Promise.resolve().then(e)},a=()=>{let e;return[new Promise((t=>{e=t})),e]},u=e=>{let t;return()=>(e&&(t=e(),e=void 0),t)},f=(e,t,r)=>{const o=r?"unshift":"push";for(let r=0;r<t;r++)e[o](-1);return e},d=(e,t)=>{const r=e.t[t];return-1===r?e.o:r},p=(e,t,o)=>{const n=-1===e.t[t];return e.t[t]=o,e.i=r(t,e.i),n},m=(e,t)=>{if(!e.l)return 0;if(e.i>=t)return e.u[t];e.i<0&&(e.u[0]=0,e.i=0);let r=e.i,o=e.u[r];for(;r<t;)o+=d(e,r),e.u[++r]=o;return e.i=t,o},h=(e,t,r=0,o=e.l-1)=>{for(;r<=o;){const n=s((r+o)/2),i=m(e,n);if(i<=t){if(i+d(e,n)>t)return n;r=n+1}else o=n-1}return i(r,0,e.l-1)},_=(e,t,o)=>{const n=t-e.l;return e.i=o?-1:r(t-1,e.i),e.l=t,n>0?(f(e.u,n),f(e.t,n,o),e.o*n):(e.u.splice(n),(o?e.t.splice(0,-n):e.t.splice(n)).reduce(((t,r)=>t-(-1===r?e.o:r)),0))},b="undefined"!=typeof window,v=()=>document.documentElement,S=e=>e.ownerDocument,y=e=>e.defaultView,g=/*#__PURE__*/u((()=>!!b&&"rtl"===getComputedStyle(v()).direction)),z=/*#__PURE__*/u((()=>!!/iP(hone|od|ad)/.test(navigator.userAgent)||"MacIntel"===navigator.platform&&navigator.maxTouchPoints>0)),x=/*#__PURE__*/u((()=>"scrollBehavior"in v().style)),$=(e,s=40,i=0,c,a=!1)=>{let u=!!i,b=1,v=0,S=0,y=0,g=0,x=0,$=0,w=0,I=0,k=t,O=[0,u?o(i-1,0):-1],j=0;const E=((e,t)=>({o:t,t:f([],e),l:e,i:-1,u:f([],e)}))(e,s),q=new Set,T=()=>y-S,B=()=>T()+x+g,M=(e,t)=>((e,t,o,n)=>{if(n=r(n,e.l-1),m(e,n)<=t){const r=h(e,o,n);return[h(e,t,n,r),r]}{const r=h(e,t,void 0,n);return[r,h(e,o,r)]}})(E,e,t,O[0]),N=()=>(e=>e.l?m(e,e.l-1)+d(e,e.l-1):0)(E),P=e=>m(E,e)-x,R=e=>d(E,e),A=(e,t=-1)=>E.t[e]===t,H=e=>{e&&(z()&&0!==w||k&&1===I?x+=e:g+=e)};return{p:()=>b,m:()=>(e=>[e.t.slice(),e.o])(E),h:(e=200)=>{if(!v||u)return O;let t,n;if($)[t,n]=O;else{e=o(0,e);let s=o(0,B()),i=s+v;a||(1!==w&&(s-=e),2!==w&&(i+=e)),[t,n]=O=M(o(0,s),o(0,i)),k&&(t=r(t,k[0]),n=o(n,k[1]))}return[o(t,0),r(n,E.l-1)]},v:()=>h(E,B()),S:()=>h(E,B()+v),I:A,k:P,O:R,j:()=>E.l,q:()=>y,T:()=>0!==w,B:()=>v,M:()=>S,N,P:()=>($=g,g=0,[$,2===I]),R:(e,t)=>{const r=[e,t];return q.add(r),()=>{q.delete(r)}},A:(e,r)=>{let s,i,c=0;switch(e){case 1:{const e=$;$=0;const t=r-y,o=n(t);e&&o<n(e)+1||0!==I||(w=t<0?2:1),u&&(u=!1),y=r,c=4;const s=T();s>=-v&&s<=N()&&(c+=1,i=o>v);break}case 2:c=8,0!==w&&(s=!0,c+=1),w=0,I=0,k=t;break;case 3:{const e=r.filter((([e,t])=>!A(e,t)));if(!e.length)break;H(e.reduce(((e,[t,r])=>((2===I||(k&&1===I?t<k[0]:P(t)+(0===w&&0===I?R(t):0)<T()))&&(e+=r-R(t)),e)),0));for(const[t,r]of e){const e=R(t),o=p(E,t,r);a&&(j+=o?r:r-e)}a&&v&&j>v&&(H(((e,t)=>{let r=0;const n=[];e.t.forEach(((e,o)=>{-1!==e&&(n.push(e),o<t&&r++)})),e.i=-1;const s=l(n),i=s.length,c=i/2|0,a=i%2==0?(s[c-1]+s[c])/2:s[c],u=e.o;return((e.o=a)-u)*o(t-r,0)})(E,h(E,B()))),a=!1),c=3,i=!0;break}case 4:v!==r&&(v=r,c=3);break;case 5:r[1]?(H(_(E,r[0],!0)),I=2,c=1):(_(E,r[0]),c=1);break;case 6:S=r;break;case 7:I=1;break;case 8:k=M(r,r+v),c=1}c&&(b=1+(2147483647&b),s&&x&&(g+=x,x=0),q.forEach((([e,t])=>{c&e&&t(i)})))}}},w=setTimeout,I=(e,t)=>t&&g()?-e:e,k=(e,r,o,n,s,i)=>{const l=Date.now;let c=0,a=!1,u=!1,f=!1,d=!1;const p=(()=>{let r;const o=()=>{r!=t&&clearTimeout(r)},n=()=>{o(),r=w((()=>{r=t,(()=>{if(a||u)return a=!1,void p();f=!1,e.A(2)})()}),150)};return n.H=o,n})(),m=()=>{c=l(),f&&(d=!0),i&&e.A(6,i()),e.A(1,n()),p()},h=t=>{if(a||!e.T()||t.ctrlKey)return;const r=l()-c;150>r&&50<r&&(o?t.deltaX:t.deltaY)&&(a=!0)},_=()=>{u=!0,f=d=!1},b=()=>{u=!1,z()&&(f=!0)};return r.addEventListener("scroll",m),r.addEventListener("wheel",h,{passive:!0}),r.addEventListener("touchstart",_,{passive:!0}),r.addEventListener("touchend",b,{passive:!0}),{V:()=>{r.removeEventListener("scroll",m),r.removeEventListener("wheel",h),r.removeEventListener("touchstart",_),r.removeEventListener("touchend",b),p.H()},C:()=>{const[t,r]=e.P();t&&(s(I(t,o),r,d),d=!1,r&&e.B()>e.N()&&e.A(1,n()))}}},O=(e,t,r)=>{let o;return[async(n,s)=>{if(!await t())return;o&&o();const i=()=>{const[t,r]=a();return o=()=>{r(!1)},e.B()&&w(o,150),[t,e.R(2,(()=>{r(!0)}))]};if(s&&x())e.A(8,n()),c((async()=>{for(;;){let t=!0;for(let[r,o]=e.h();r<=o;r++)if(e.I(r)){t=!1;break}if(t)break;const[r,o]=i();try{if(!await r)return}finally{o()}}e.A(7),r(n(),s)}));else for(;;){const[t,o]=i();try{if(e.A(7),r(n()),!await t)return}finally{o()}}},()=>{o&&o()}]},j=e=>{let t;return{F(r){(t||(t=new(y(S(r)).ResizeObserver)(e))).observe(r)},J(e){t.unobserve(e)},V(){t&&t.disconnect()}}},E=/*#__PURE__*/e.defineComponent({props:{L:{type:Object,required:!0},W:{type:Object,required:!0},X:{type:Object,required:!0},Y:{type:Function,required:!0},D:{type:Number,required:!0},U:{type:Boolean},G:{type:Boolean},K:{type:String,required:!0},Z:Object},setup(t){const r=e.ref(),o=e.computed((()=>t.L.value&&t.W.k(t.D))),n=e.computed((()=>t.L.value&&t.W.I(t.D)));return e.watch((()=>r.value&&t.D),((e,o,n)=>{n(t.Y(r.value,t.D))}),{flush:"post"}),()=>{var s;const{X:i,U:l,G:c,K:a}=t,u=n.value,{style:f,...d}=null!==(s=t.Z)&&void 0!==s?s:{},p={contain:"layout style",position:u&&c?void 0:"absolute",[l?"height":"width"]:"100%",[l?"top":"left"]:"0px",[l?g()?"right":"left":"top"]:o.value+"px",visibility:!u||c?"visible":"hidden",...f};return l&&(p.display="inline-flex"),e.createVNode(a,e.mergeProps({ref:r,style:p},d),"function"==typeof(m=i)||"[object Object]"===Object.prototype.toString.call(m)&&!e.isVNode(m)?i:{default:()=>[i],_:2},16,["style"]);var m}}}),q=(e,t)=>{const r=e.key;return null!=r?r:"_"+t},T=(e,t)=>e[0]===t[0]&&e[1]===t[1],B={data:{type:Array,required:!0},bufferSize:Number,itemSize:Number,shift:Boolean,horizontal:Boolean,startMargin:{type:Number,default:0},ssrCount:Number,scrollRef:Object,as:{type:String,default:"div"},item:{type:String,default:"div"},itemProps:Function,keepMounted:Array},M=/*#__PURE__*/e.defineComponent({props:B,emits:["scroll","scrollEnd"],setup(r,{emit:n,expose:s,slots:c}){let u=!!r.ssrCount;const f=r.horizontal,d=e.ref(),p=$(r.data.length,r.itemSize,r.ssrCount,0,!r.itemSize),m=((e,r)=>{let o;const n=r?"width":"height",s=new WeakMap,i=j((r=>{const i=[];for(const{target:l,contentRect:c}of r)if(l.offsetParent)if(l===o)e.A(4,c[n]);else{const e=s.get(l);e!=t&&i.push([e,c[n]])}i.length&&e.A(3,i)}));return{ee(e){i.F(o=e)},te:(e,t)=>(s.set(e,t),i.F(e),()=>{s.delete(e),i.J(e)}),re:i.V}})(p,f),h=((e,t)=>{let r,o,n=a();const s=t?"scrollLeft":"scrollTop",l=t?"overflowX":"overflowY",[c,u]=O(e,(()=>n[0]),((e,o)=>{e=I(e,t),o?r.scrollTo({[t?"left":"top"]:e,behavior:"smooth"}):r[s]=e}));return{oe(i){r=i,o=k(e,i,t,(()=>I(i[s],t)),((t,r,o)=>{if(o){const e=i.style,t=e[l];e[l]="hidden",w((()=>{e[l]=t}))}i[s]=e.q()+t,r&&u()})),n[1](!0)},re(){o&&o.V(),n[1](!1),n=a()},ne(e){c((()=>e))},se(t){t+=e.q(),c((()=>t))},ie(t,{align:r,smooth:o,offset:n=0}={}){if(t=i(t,0,e.j()-1),"nearest"===r){const o=e.k(t),n=e.q();if(o<n)r="start";else{if(!(o+e.O(t)>n+e.B()))return;r="end"}}c((()=>n+e.M()+e.k(t)+("end"===r?e.O(t)-e.B():"center"===r?(e.O(t)-e.B())/2:0)),o)},le:()=>{o&&o.C()}}})(p,f),_=e.ref(p.p()),b=p.R(1,(()=>{_.value=p.p()})),v=p.R(4,(()=>{n("scroll",p.q())})),S=p.R(8,(()=>{n("scrollEnd")})),y=e.computed((e=>{_.value;const t=p.h(r.bufferSize);return e&&T(e,t)?e:t})),g=e.computed((()=>_.value&&p.T())),z=e.computed((()=>_.value&&p.N()));return e.onMounted((()=>{u=!1;const t=requestAnimationFrame((()=>{const e=e=>{m.ee(e),h.oe(e)};r.scrollRef?e(r.scrollRef):e(d.value.parentElement)}));e.onUnmounted((()=>{cancelAnimationFrame(t)}))})),e.onUnmounted((()=>{b(),v(),S(),m.re(),h.re()})),e.watch((()=>r.data.length),(e=>{p.A(5,[e,r.shift])})),e.watch((()=>r.startMargin),(e=>{p.A(6,e)}),{immediate:!0}),e.watch([_],(()=>{h.le()}),{flush:"post"}),s({get scrollOffset(){return p.q()},get scrollSize(){return(e=>o(e.N(),e.B()))(p)},get viewportSize(){return p.B()},findStartIndex:p.v,findEndIndex:p.S,getItemOffset:p.k,getItemSize:p.O,scrollToIndex:h.ie,scrollTo:h.ne,scrollBy:h.se}),()=>{const t=r.as,o=r.item,n=z.value,s=[],i=t=>{var n;const s=c.default({item:r.data[t],index:t})[0];return e.createVNode(E,{key:q(s,t),L:_,W:p,Y:m.te,D:t,X:s,U:f,G:u,K:o,Z:null===(n=r.itemProps)||void 0===n?void 0:n.call(r,{item:r.data[t],index:t})},null,8,["_stateVersion","_store","_resizer","_index","_children","_isHorizontal","_isSSR","_as","_itemProps"])};if(r.keepMounted){const e=new Set(r.keepMounted);for(let[t,r]=y.value;t<=r;t++)e.add(t);l([...e]).forEach((e=>{s.push(i(e))}))}else for(let[e,t]=y.value;e<=t;e++)s.push(i(e));return e.createVNode(t,{ref:d,style:{contain:"size paint style",overflowAnchor:"none",overflow:"clip",flex:"none",position:"relative",width:f?n+"px":"100%",height:f?"100%":n+"px",pointerEvents:g.value?"none":void 0}},"function"==typeof(a=s)||"[object Object]"===Object.prototype.toString.call(a)&&!e.isVNode(a)?s:{default:()=>[s],_:2},8,["style"]);var a}}}),N={data:{type:Array,required:!0},bufferSize:Number,itemSize:Number,shift:Boolean,horizontal:Boolean,ssrCount:Number,itemProps:Function,keepMounted:Array},P=/*#__PURE__*/e.defineComponent({props:N,emits:["scroll","scrollEnd"],setup(t,{emit:r,expose:o,slots:n}){const s=t.horizontal,i=e=>{r("scroll",e)},l=()=>{r("scrollEnd")},c=e.ref();return o({get scrollOffset(){return c.value.scrollOffset},get scrollSize(){return c.value.scrollSize},get viewportSize(){return c.value.viewportSize},findStartIndex:(...e)=>c.value.findStartIndex(...e),findEndIndex:(...e)=>c.value.findEndIndex(...e),getItemOffset:(...e)=>c.value.getItemOffset(...e),getItemSize:(...e)=>c.value.getItemSize(...e),scrollToIndex:(...e)=>c.value.scrollToIndex(...e),scrollTo:(...e)=>c.value.scrollTo(...e),scrollBy:(...e)=>c.value.scrollBy(...e)}),()=>{return e.createVNode("div",{style:{display:s?"inline-block":"block",[s?"overflowX":"overflowY"]:"auto",contain:"strict",width:"100%",height:"100%"}},[e.createVNode(M,{ref:c,data:t.data,bufferSize:t.bufferSize,itemSize:t.itemSize,itemProps:t.itemProps,shift:t.shift,ssrCount:t.ssrCount,horizontal:s,keepMounted:t.keepMounted,onScroll:i,onScrollEnd:l},(r=n,"function"==typeof r||"[object Object]"===Object.prototype.toString.call(r)&&!e.isVNode(r)?n:{default:()=>[n],_:2}),8,["data","bufferSize","itemSize","itemProps","shift","ssrCount","horizontal","keepMounted","onScroll","onScrollEnd"])],4);var r}}}),R={data:{type:Array,required:!0},bufferSize:Number,itemSize:Number,shift:Boolean,horizontal:Boolean,as:{type:String,default:"div"},item:{type:String,default:"div"}},A=/*#__PURE__*/e.defineComponent({props:R,emits:["scroll","scrollEnd"],setup(r,{emit:o,slots:n,expose:s}){const l=r.horizontal,c=e.ref(),u=$(r.data.length,r.itemSize,void 0,0,!r.itemSize),f=((e,r)=>{const o=r?"width":"height",n=r?"innerWidth":"innerHeight",s=new WeakMap,i=j((r=>{const n=[];for(const{target:e,contentRect:i}of r){if(!e.offsetParent)continue;const r=s.get(e);r!=t&&n.push([r,i[o]])}n.length&&e.A(3,n)}));let l;return{ee(t){const r=y(S(t)),o=()=>{e.A(4,r[n])};r.addEventListener("resize",o),o(),l=()=>{r.removeEventListener("resize",o)}},te:(e,t)=>(s.set(e,t),i.F(e),()=>{s.delete(e),i.J(e)}),re(){l&&l(),i.V()}}})(u,l),d=((e,t)=>{let r,o,n=a();const s=t?"left":"top",[l]=O(e,(()=>n[0]),((e,o)=>{e=I(e,t);const n=y(S(r));o?n.scroll({[s]:e,behavior:"smooth"}):n.scroll({[s]:e})})),c=(e,t,r,o,n=0)=>{const s=o?"offsetLeft":"offsetTop",i=n+(o&&g()?r.innerWidth-e[s]-e.offsetWidth:e[s]),l=e.offsetParent;return e!==t&&l?c(l,t,r,o,i):i};return{oe(i){r=i;const l=t?"scrollX":"scrollY",a=S(i),u=y(a);o=k(e,u,t,(()=>I(u[l],t)),((t,r)=>{r?u.scroll({[s]:e.q()+t}):u.scrollBy({[s]:t})}),(()=>c(i,a.body,u,t))),n[1](!0)},re(){o&&o.V(),r=void 0,n[1](!1),n=a()},le:()=>{o&&o.C()},ie(o,{align:n,smooth:s,offset:a=0}={}){if(!r)return;if(o=i(o,0,e.j()-1),"nearest"===n){const t=e.k(o),r=e.q();if(t<r)n="start";else{if(!(t+e.O(o)>r+e.B()))return;n="end"}}const u=S(r),f=y(u),d=u.documentElement,p=()=>e.B()-(t?d.clientWidth:d.clientHeight);l((()=>a+c(r,u.body,f,t)+e.k(o)+("end"===n?e.O(o)-(e.B()-p()):"center"===n?(e.O(o)-(e.B()-p()))/2:0)),s)}}})(u,l),p=e.ref(u.p()),m=u.R(1,(()=>{p.value=u.p()})),h=u.R(4,(()=>{o("scroll")})),_=u.R(8,(()=>{o("scrollEnd")})),b=e.computed((e=>{p.value;const t=u.h(r.bufferSize);return e&&T(e,t)?e:t})),v=e.computed((()=>p.value&&u.T())),z=e.computed((()=>p.value&&u.N()));return e.onMounted((()=>{const e=c.value;e&&(f.ee(e),d.oe(e))})),e.onUnmounted((()=>{m(),h(),_(),f.re(),d.re()})),e.watch((()=>r.data.length),(e=>{u.A(5,[e,r.shift])})),e.watch([p],(()=>{d.le()}),{flush:"post"}),s({findStartIndex:u.v,findEndIndex:u.S,scrollToIndex:d.ie}),()=>{const t=r.as,o=r.item,s=z.value,i=[];for(let[t,s]=b.value;t<=s;t++){const s=n.default({item:r.data[t],index:t})[0];i.push(e.createVNode(E,{key:q(s,t),L:p,W:u,Y:f.te,D:t,X:s,U:l,K:o},null,8,["_stateVersion","_store","_resizer","_index","_children","_isHorizontal","_as"]))}return e.createVNode(t,{ref:c,style:{contain:"size paint style",overflowAnchor:"none",overflow:"clip",flex:"none",position:"relative",width:l?s+"px":"100%",height:l?"100%":s+"px",pointerEvents:v.value?"none":void 0}},"function"==typeof(a=i)||"[object Object]"===Object.prototype.toString.call(a)&&!e.isVNode(a)?i:{default:()=>[i],_:2},8,["style"]);var a}}});exports.VList=P,exports.Virtualizer=M,exports.WindowVirtualizer=A;
2
2
  //# sourceMappingURL=index.cjs.map