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.
- package/README.md +1 -1
- package/lib/core/index.cjs +1 -1
- package/lib/core/index.cjs.map +1 -1
- package/lib/core/index.js +1 -1
- package/lib/core/index.js.map +1 -1
- package/lib/index.cjs +1 -1
- package/lib/index.cjs.map +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/react/VGrid.d.ts +3 -3
- package/lib/react/VList.d.ts +1 -1
- package/lib/react/Virtualizer.d.ts +6 -6
- package/lib/react/WindowVirtualizer.d.ts +5 -5
- package/lib/solid/VList.d.ts +1 -1
- package/lib/solid/Virtualizer.d.ts +5 -5
- package/lib/solid/WindowVirtualizer.d.ts +4 -4
- package/lib/solid/index.cjs +1 -1
- package/lib/solid/index.cjs.map +1 -1
- package/lib/solid/index.js +1 -1
- package/lib/solid/index.js.map +1 -1
- package/lib/solid/index.jsx +61 -44
- package/lib/solid/index.jsx.map +1 -1
- package/lib/svelte/VList.svelte +2 -2
- package/lib/svelte/VList.type.d.ts +1 -1
- package/lib/svelte/Virtualizer.svelte +2 -3
- package/lib/svelte/Virtualizer.type.d.ts +5 -5
- package/lib/svelte/WindowVirtualizer.svelte +2 -3
- package/lib/svelte/WindowVirtualizer.type.d.ts +4 -4
- package/lib/vue/VList.d.ts +10 -10
- package/lib/vue/Virtualizer.d.ts +12 -12
- package/lib/vue/WindowVirtualizer.d.ts +8 -8
- package/lib/vue/index.cjs +1 -1
- package/lib/vue/index.cjs.map +1 -1
- package/lib/vue/index.js +1 -1
- package/lib/vue/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -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" | "
|
|
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
|
-
|
|
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
|
-
*
|
|
33
|
-
* @defaultValue
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
*
|
|
22
|
-
* @defaultValue
|
|
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
|
-
|
|
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.
|
package/lib/vue/VList.d.ts
CHANGED
|
@@ -13,12 +13,12 @@ export declare const VList: import("vue").DefineComponent<{
|
|
|
13
13
|
required: true;
|
|
14
14
|
};
|
|
15
15
|
/**
|
|
16
|
-
*
|
|
17
|
-
* @defaultValue
|
|
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
|
-
|
|
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
|
-
*
|
|
69
|
-
* @defaultValue
|
|
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
|
-
|
|
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
|
/**
|
package/lib/vue/Virtualizer.d.ts
CHANGED
|
@@ -59,12 +59,12 @@ export declare const Virtualizer: import("vue").DefineComponent<{
|
|
|
59
59
|
required: true;
|
|
60
60
|
};
|
|
61
61
|
/**
|
|
62
|
-
*
|
|
63
|
-
* @defaultValue
|
|
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
|
-
|
|
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
|
|
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
|
-
*
|
|
142
|
-
* @defaultValue
|
|
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
|
-
|
|
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
|
|
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
|
-
*
|
|
30
|
-
* @defaultValue
|
|
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
|
-
|
|
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
|
-
*
|
|
83
|
-
* @defaultValue
|
|
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
|
-
|
|
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
|