virtua 0.33.6 → 0.34.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 +9 -12
- package/lib/svelte/VList.svelte +9 -6
- package/lib/svelte/VList.svelte.d.ts +1 -0
- package/lib/vue/VList.d.ts +5 -2
- package/lib/vue/Virtualizer.d.ts +5 -2
- package/lib/vue/WindowVirtualizer.d.ts +5 -2
- package/lib/vue/index.js +1 -1
- package/lib/vue/index.js.map +1 -1
- package/lib/vue/index.mjs +1 -1
- package/lib/vue/index.mjs.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -202,23 +202,20 @@ export default async () => {
|
|
|
202
202
|
import { VList } from "virtua/vue";
|
|
203
203
|
|
|
204
204
|
const sizes = [20, 40, 180, 77];
|
|
205
|
-
const data = Array.from({ length: 1000 }).map((_, i) =>
|
|
206
|
-
id: i,
|
|
207
|
-
size: sizes[i % 4] + "px",
|
|
208
|
-
}));
|
|
205
|
+
const data = Array.from({ length: 1000 }).map((_, i) => sizes[i % 4]);
|
|
209
206
|
</script>
|
|
210
207
|
|
|
211
208
|
<template>
|
|
212
|
-
<VList :data="data" :style="{ height: '800px' }" #default="item">
|
|
209
|
+
<VList :data="data" :style="{ height: '800px' }" #default="{ item, index }">
|
|
213
210
|
<div
|
|
214
|
-
:key="
|
|
211
|
+
:key="index"
|
|
215
212
|
:style="{
|
|
216
|
-
height: item
|
|
213
|
+
height: item + 'px',
|
|
217
214
|
background: 'white',
|
|
218
215
|
borderBottom: 'solid 1px #ccc',
|
|
219
216
|
}"
|
|
220
217
|
>
|
|
221
|
-
{{
|
|
218
|
+
{{ index }}
|
|
222
219
|
</div>
|
|
223
220
|
</VList>
|
|
224
221
|
</template>
|
|
@@ -263,18 +260,18 @@ export const App = () => {
|
|
|
263
260
|
|
|
264
261
|
const sizes = [20, 40, 180, 77];
|
|
265
262
|
|
|
266
|
-
const data = Array.from({ length: 1000 }).map((_, i) =>
|
|
263
|
+
const data = Array.from({ length: 1000 }).map((_, i) => sizes[i % 4] );
|
|
267
264
|
</script>
|
|
268
265
|
|
|
269
|
-
<VList {data} let:item style={`height: 100vh;`} getKey={(
|
|
266
|
+
<VList {data} let:item let:index style={`height: 100vh;`} getKey={(_,i) => i}>
|
|
270
267
|
<div
|
|
271
268
|
style={`
|
|
272
|
-
height: ${item
|
|
269
|
+
height: ${item}px;
|
|
273
270
|
background: white;
|
|
274
271
|
border-bottom: solid 1px #ccc;
|
|
275
272
|
`}
|
|
276
273
|
>
|
|
277
|
-
{
|
|
274
|
+
{index}
|
|
278
275
|
</div>
|
|
279
276
|
</VList>
|
|
280
277
|
```
|
package/lib/svelte/VList.svelte
CHANGED
|
@@ -33,6 +33,9 @@
|
|
|
33
33
|
import ListItem from "./ListItem.svelte";
|
|
34
34
|
|
|
35
35
|
// https://github.com/sveltejs/rfcs/pull/38
|
|
36
|
+
interface $$Slots {
|
|
37
|
+
default: { item: T; index: number };
|
|
38
|
+
}
|
|
36
39
|
interface $$Props extends HTMLAttributes<HTMLDivElement> {
|
|
37
40
|
/**
|
|
38
41
|
* The data items rendered by this component.
|
|
@@ -222,16 +225,16 @@
|
|
|
222
225
|
bind:this={containerRef}
|
|
223
226
|
style={`${containerStyle} ${dynamicContainerStyle}`}
|
|
224
227
|
>
|
|
225
|
-
{#each items as item,
|
|
228
|
+
{#each items as item, i (getKey(item, i + extendedRange[0]))}
|
|
229
|
+
{@const index = i + extendedRange[0]}
|
|
226
230
|
<ListItem
|
|
227
|
-
|
|
228
|
-
offset={rerender &&
|
|
229
|
-
|
|
230
|
-
hide={rerender && virtualizer[IS_ITEM_HIDDEN](index + extendedRange[0])}
|
|
231
|
+
{index}
|
|
232
|
+
offset={rerender && virtualizer[GET_ITEM_OFFSET](index)}
|
|
233
|
+
hide={rerender && virtualizer[IS_ITEM_HIDDEN](index)}
|
|
231
234
|
{horizontal}
|
|
232
235
|
resizer={virtualizer[OBSERVE_ITEM_RESIZE]}
|
|
233
236
|
>
|
|
234
|
-
<slot {item} />
|
|
237
|
+
<slot {item} {index} />
|
|
235
238
|
</ListItem>
|
|
236
239
|
{/each}
|
|
237
240
|
</div>
|
package/lib/vue/VList.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** @jsxImportSource vue */
|
|
2
|
-
import { ComponentOptionsMixin, SlotsType } from "vue";
|
|
2
|
+
import { ComponentOptionsMixin, SlotsType, VNode } from "vue";
|
|
3
3
|
import { VirtualizerHandle } from "./Virtualizer";
|
|
4
4
|
interface VListHandle extends VirtualizerHandle {
|
|
5
5
|
}
|
|
@@ -104,6 +104,9 @@ export declare const VList: import("vue").DefineComponent<{
|
|
|
104
104
|
overscan: number;
|
|
105
105
|
horizontal: boolean;
|
|
106
106
|
}, SlotsType<{
|
|
107
|
-
default:
|
|
107
|
+
default: (arg: {
|
|
108
|
+
item: any;
|
|
109
|
+
index: number;
|
|
110
|
+
}) => VNode[];
|
|
108
111
|
}>>;
|
|
109
112
|
export {};
|
package/lib/vue/Virtualizer.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** @jsxImportSource vue */
|
|
2
|
-
import { ComponentOptionsMixin, SlotsType, PropType, NativeElements } from "vue";
|
|
2
|
+
import { VNode, ComponentOptionsMixin, SlotsType, PropType, NativeElements } from "vue";
|
|
3
3
|
import { ScrollToIndexOpts } from "../core/types";
|
|
4
4
|
export interface VirtualizerHandle {
|
|
5
5
|
/**
|
|
@@ -194,5 +194,8 @@ export declare const Virtualizer: import("vue").DefineComponent<{
|
|
|
194
194
|
as: keyof import("vue").IntrinsicElementAttributes;
|
|
195
195
|
item: keyof import("vue").IntrinsicElementAttributes;
|
|
196
196
|
}, SlotsType<{
|
|
197
|
-
default:
|
|
197
|
+
default: (arg: {
|
|
198
|
+
item: any;
|
|
199
|
+
index: number;
|
|
200
|
+
}) => VNode[];
|
|
198
201
|
}>>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** @jsxImportSource vue */
|
|
2
|
-
import { ComponentOptionsMixin, SlotsType, PropType, NativeElements } from "vue";
|
|
2
|
+
import { VNode, ComponentOptionsMixin, SlotsType, PropType, NativeElements } from "vue";
|
|
3
3
|
export declare const WindowVirtualizer: import("vue").DefineComponent<{
|
|
4
4
|
/**
|
|
5
5
|
* The data items rendered by this component.
|
|
@@ -121,5 +121,8 @@ export declare const WindowVirtualizer: import("vue").DefineComponent<{
|
|
|
121
121
|
as: keyof import("vue").IntrinsicElementAttributes;
|
|
122
122
|
item: keyof import("vue").IntrinsicElementAttributes;
|
|
123
123
|
}, SlotsType<{
|
|
124
|
-
default:
|
|
124
|
+
default: (arg: {
|
|
125
|
+
item: any;
|
|
126
|
+
index: number;
|
|
127
|
+
}) => VNode[];
|
|
125
128
|
}>>;
|
package/lib/vue/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e=require("vue");const t=null,o=Math.min,r=Math.max,n=Math.abs,s=setTimeout,i=(e,t,n)=>o(n,r(t,e)),l="function"==typeof queueMicrotask?queueMicrotask:e=>{Promise.resolve().then(e)},c=e=>{let t,o;return(...r)=>(t||(t=!0,o=e(...r)),o)},a=-1,u=(e,t,o)=>{const r=o?"unshift":"push";for(let o=0;o<t;o++)e[r](a);return e},f=(e,t)=>{const o=e.t[t];return o===a?e.o:o},d=(e,t,r)=>{const n=e.t[t]===a;return e.t[t]=r,e.i=o(t,e.i),n},_=(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+=f(e,o),e.u[++o]=r;return e.i=t,r},p=(e,t,o)=>{for(;o>=0&&o<e.l;){const r=_(e,o);if(r<=t){if(r+f(e,o)>t)break;o++}else o--}return i(o,0,e.l-1)},h=(e,t,r)=>{const n=t-e.l;return e.i=r?-1:o(t-1,e.i),e.l=t,n>0?(u(e.u,n),u(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===a?e.o:o)),0))},g="undefined"!=typeof window,m=()=>document.documentElement,v=e=>e.ownerDocument,b=e=>e.defaultView,y=/*#__PURE__*/c((()=>!!g&&"rtl"===getComputedStyle(m()).direction)),S=/*#__PURE__*/c((()=>/iP(hone|od|ad)/.test(navigator.userAgent))),z=/*#__PURE__*/c((()=>"scrollBehavior"in m().style)),w=(e,t,n,s,i)=>(1!==s&&(e-=r(0,n)),2!==s&&(t+=r(0,n)),[r(e,0),o(t,i-1)]),x=(e,s=40,i=0,l,c=!1)=>{let g=!!i,m=[],v=0,b=0,y=0,z=0,w=0,x=0,k=0,O=0,I=0,C=g?[0,r(i-1,0)]:t,j=[0,0],B=0;const R=((e,t)=>({o:t,t:u([],e),l:e,i:-1,u:u([],e)}))(e,s),q=new Set,N=()=>y-b,T=e=>((e,t,r,n)=>{const s=p(e,t,o(r,e.l-1));return[s,p(e,t+n,s)]})(R,e,j[0],v),E=()=>(e=>e.l?_(e,e.l-1)+f(e,e.l-1):0)(R),M=e=>_(R,e)-x,H=e=>f(R,e),A=e=>{e&&(S()&&0!==O?x+=e:(w+=e,z++))};return{p:()=>m,h:()=>(e=>[[...e.t],e.o])(R),m:()=>k?j:(j=T(r(0,N()+x+w)),C?[o(j[0],C[0]),r(j[1],C[1])]:j),v:e=>R.t[e]===a,S:()=>!!v,k:()=>!!C&&R.t.slice(r(0,C[0]-1),o(R.l-1,C[1]+1)+1).includes(a),O:M,I:H,C:()=>R.l,j:()=>y,B:()=>O,R:()=>v,q:()=>b,N:E,T:()=>z,M:()=>(k=w,w=0,[k,2===I||N()+v>=E()]),H(e,t){const o=[e,t];return q.add(o),()=>{q.delete(o)}},A(e,o){let s,i,l=0;switch(e){case 1:{const e=k;k=0;const r=o-y,s=n(r);e&&s<n(e)+1||0!==I||(O=r<0?2:1),g&&(C=t,g=!1),y=o,l=4;const c=N();c>=-v&&c<=E()&&(l+=1,i=s>v);break}case 2:l=8,0!==O&&(s=!0,l+=1),O=0,I=0,C=t;break;case 3:{const e=o.filter((([e,t])=>R.t[e]!==t));if(!e.length)break;A(e.reduce(((e,[t,o])=>((2===I||(C?t<C[0]:M(t)+(0===O&&0===I?H(t):0)<N()))&&(e+=o-H(t)),e)),0));for(const[t,o]of e){const e=H(t),r=d(R,t,o);c&&(B+=r?o:o-e)}c&&v&&B>v&&(A(((e,t)=>{let o=0;const n=e.t.filter(((e,r)=>{const n=e!==a;return n&&r<t&&o++,n})),s=e.o;return e.i=-1,((e.o=(e=>{const t=(e=>[...e].sort(((e,t)=>e-t)))(e),o=e.length/2|0;return t.length%2==0?(t[o-1]+t[o])/2:t[o]})(n))-s)*r(t-o,0)})(R,j[0])),c=!1),l=3,i=!0;break}case 4:v!==o&&(v=o,l=3);break;case 5:o[1]?(A(h(R,o[0],!0)),I=2,l=1):h(R,o[0]);break;case 6:b=o;break;case 7:I=1;break;case 8:C=T(o),l=1}l&&(m=[],s&&x&&(w+=x,x=0,z++),q.forEach((([e,t])=>{l&e&&t(i)})))}}},k=e=>{let t;return{J(o){(t||(t=new(b(v(o)).ResizeObserver)(e))).observe(o)},D(e){t.unobserve(e)},L(){t&&t.disconnect()}}},O=(e,t)=>t&&y()?-e:e,I=(e,o,r,n,i,l)=>{const c=Date.now;let a=0,u=!1,f=!1,d=!1,_=!1;const p=(()=>{let o;const r=()=>{o!=t&&clearTimeout(o)},n=()=>{r(),o=s((()=>{o=t,(()=>{if(u||f)return u=!1,void p();d=!1,e.A(2)})()}),150)};return n.P=r,n})(),h=()=>{a=c(),d&&(_=!0),l&&e.A(6,l()),e.A(1,n()),p()},g=t=>{if(u||0===e.B()||t.ctrlKey)return;const o=c()-a;150>o&&50<o&&(r?t.deltaX:t.deltaY)&&(u=!0)},m=()=>{f=!0,d=_=!1},v=()=>{f=!1,S()&&(d=!0)};return o.addEventListener("scroll",h),o.addEventListener("wheel",g,{passive:!0}),o.addEventListener("touchstart",m,{passive:!0}),o.addEventListener("touchend",v,{passive:!0}),{L:()=>{o.removeEventListener("scroll",h),o.removeEventListener("wheel",g),o.removeEventListener("touchstart",m),o.removeEventListener("touchend",v),p.P()},W:()=>{const[t,o]=e.M();t&&(i(O(t,r),o,_),_=!1,o&&e.R()>e.N()&&e.A(1,n()))}}},C=/*#__PURE__*/e.defineComponent({props:{X:{type:Object,required:!0},Y:{type:Function,required:!0},F:{type:Number,required:!0},U:{type:Number,required:!0},V:{type:Boolean},G:{type:Boolean},K:{type:Boolean},Z:{type:String,required:!0}},setup(t){const o=e.ref();return e.watch((()=>o.value&&t.F),((e,r,n)=>{n(t.Y(o.value,t.F))}),{flush:"post"}),()=>{const{X:r,U:n,V:s,G:i,K:l,Z:c}=t,a={margin:0,padding:0,position:s&&l?void 0:"absolute",[i?"height":"width"]:"100%",[i?"top":"left"]:"0px",[i?y()?"right":"left":"top"]:n+"px",visibility:!s||l?"visible":"hidden"};return i&&(a.display="flex"),e.createVNode(c,{ref:o,style:a},"function"==typeof(u=r)||"[object Object]"===Object.prototype.toString.call(u)&&!e.isVNode(u)?r:{default:()=>[r],_:2},8,["style"]);var u}}}),j=(e,o)=>{const r=e.key;return r!=t?r:"_"+o},B={data:{type:Array,required:!0},overscan:{type:Number,default:4},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"}},R=/*#__PURE__*/e.defineComponent({props:B,emits:["scroll","scrollEnd","rangeChange"],setup(o,{emit:n,expose:c,slots:a}){var u;let f=!!o.ssrCount;const d=o.horizontal,_=e.ref(),p=x(o.data.length,null!==(u=o.itemSize)&&void 0!==u?u:40,o.ssrCount,0,!o.itemSize),h=((e,o)=>{let r;const n=o?"width":"height",s=new WeakMap,i=k((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{$(e){i.J(r=e)},ee:(e,t)=>(s.set(e,t),i.J(e),()=>{s.delete(e),i.D(e)}),L:i.L}})(p,d),g=((e,t)=>{let o,r,n;const c=t?"scrollLeft":"scrollTop",a=t?"overflowX":"overflowY",u=async(r,i)=>{if(!o)return void l((()=>u(r,i)));n&&n();const a=()=>{let t;return[new Promise(((o,r)=>{t=o,n=r,e.S()&&s(r,150)})),e.H(2,(()=>{t&&t()}))]};if(i&&z()){for(;e.A(8,r()),e.k();){const[e,t]=a();try{await e}catch(e){return}finally{t()}}o.scrollTo({[t?"left":"top"]:O(r(),t),behavior:"smooth"})}else for(;;){const[n,s]=a();try{o[c]=O(r(),t),e.A(7),await n}catch(e){return}finally{s()}}};return{J(i){o=i,r=I(e,i,t,(()=>O(i[c],t)),((t,o,r)=>{if(r){const e=i.style,t=e[a];e[a]="hidden",s((()=>{e[a]=t}))}o?(i[c]=e.j()+t,n&&n()):i[c]+=t}))},L(){r&&r.L()},te(e){u((()=>e))},oe(t){t+=e.j(),u((()=>t))},re(t,{align:o,smooth:r,offset:n=0}={}){if(t=i(t,0,e.C()-1),"nearest"===o){const r=e.O(t),n=e.j();if(r<n)o="start";else{if(!(r+e.I(t)>n+e.R()))return;o="end"}}u((()=>n+e.q()+e.O(t)+("end"===o?e.I(t)-e.R():"center"===o?(e.I(t)-e.R())/2:0)),r)},W:()=>{r&&r.W()}}})(p,d),m=e.ref(p.p()),v=p.H(1,(()=>{m.value=p.p()})),b=p.H(4,(()=>{n("scroll",p.j())})),y=p.H(8,(()=>{n("scrollEnd")}));return e.onMounted((()=>{f=!1,l((()=>{const e=e=>{h.$(e),g.J(e)};o.scrollRef?e(o.scrollRef):e(_.value.parentElement)}))})),e.onUnmounted((()=>{v(),b(),y(),h.L(),g.L()})),e.watch((()=>o.data.length),(e=>{p.A(5,[e,o.shift])})),e.watch((()=>o.startMargin),(e=>{p.A(6,e)}),{immediate:!0}),e.watch([m,p.T],(([,e],[,t])=>{e!==t&&g.W()}),{flush:"post"}),e.watch([m,p.m],(([,[e,t]],[,[o,r]])=>{o===e&&r===t||n("rangeChange",e,t)}),{flush:"post"}),c({get scrollOffset(){return p.j()},get scrollSize(){return(e=>r(e.N(),e.R()))(p)},get viewportSize(){return p.R()},getItemOffset:p.O,scrollToIndex:g.re,scrollTo:g.te,scrollBy:g.oe}),()=>{m.value;const t=o.as,r=o.item,n=o.data.length,[s,i]=p.m(),l=p.B(),c=p.N(),u=[];for(let[t,c]=w(s,i,o.overscan,l,n);t<=c;t++){const n=a.default(o.data[t])[0];u.push(e.createVNode(C,{key:j(n,t),Y:h.ee,F:t,U:p.O(t),V:p.v(t),X:n,G:d,K:f,Z:r},null,8,["_resizer","_index","_offset","_hide","_children","_isHorizontal","_isSSR","_as"]))}return e.createVNode(t,{ref:_,style:{overflowAnchor:"none",flex:"none",position:"relative",visibility:"hidden",width:d?c+"px":"100%",height:d?"100%":c+"px",pointerEvents:0!==l?"none":"auto"}},"function"==typeof(g=u)||"[object Object]"===Object.prototype.toString.call(g)&&!e.isVNode(g)?u:{default:()=>[u],_:2},8,["style"]);var g}}}),q={data:{type:Array,required:!0},overscan:{type:Number,default:4},itemSize:Number,shift:Boolean,horizontal:Boolean,ssrCount:Number},N=/*#__PURE__*/e.defineComponent({props:q,emits:["scroll","scrollEnd","rangeChange"],setup(t,{emit:o,expose:r,slots:n}){const s=t.horizontal,i=e=>{o("scroll",e)},l=()=>{o("scrollEnd")},c=(e,t)=>{o("rangeChange",e,t)},a=e.ref();return r({get scrollOffset(){return a.value.scrollOffset},get scrollSize(){return a.value.scrollSize},get viewportSize(){return a.value.viewportSize},getItemOffset:(...e)=>a.value.getItemOffset(...e),scrollToIndex:(...e)=>a.value.scrollToIndex(...e),scrollTo:(...e)=>a.value.scrollTo(...e),scrollBy:(...e)=>a.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(R,{ref:a,data:t.data,overscan:t.overscan,itemSize:t.itemSize,shift:t.shift,ssrCount:t.ssrCount,horizontal:s,onScroll:i,onScrollEnd:l,onRangeChange:c},(o=n,"function"==typeof o||"[object Object]"===Object.prototype.toString.call(o)&&!e.isVNode(o)?n:{default:()=>[n],_:2}),8,["data","overscan","itemSize","shift","ssrCount","horizontal","onScroll","onScrollEnd","onRangeChange"])],4);var o}}}),T={data:{type:Array,required:!0},overscan:{type:Number,default:4},itemSize:Number,shift:Boolean,horizontal:Boolean,as:{type:String,default:"div"},item:{type:String,default:"div"}},E=/*#__PURE__*/e.defineComponent({props:T,emits:["scrollEnd","rangeChange"],setup(o,{emit:r,slots:n}){var s;const i=o.horizontal,l=e.ref(),c=x(o.data.length,null!==(s=o.itemSize)&&void 0!==s?s:40,void 0,0,!o.itemSize),a=((e,o)=>{const r=o?"width":"height",n=o?"innerWidth":"innerHeight",s=new WeakMap,i=k((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{$(t){const o=b(v(t)),r=()=>{e.A(4,o[n])};o.addEventListener("resize",r),r(),l=()=>{o.removeEventListener("resize",r)}},ee:(e,t)=>(s.set(e,t),i.J(e),()=>{s.delete(e),i.D(e)}),L(){l&&l(),i.L()}}})(c,i),u=((e,t)=>{let o;return{J(r){const n=t?"scrollX":"scrollY",s=v(r),i=b(s),l=s.body,c=(e,t,o,r=0)=>{const n=o?"offsetLeft":"offsetTop",s=r+(o&&y()?i.innerWidth-e[n]-e.offsetWidth:e[n]),l=e.offsetParent;return e!==t&&l?c(l,t,o,s):s};o=I(e,i,t,(()=>O(i[n],t)),((o,r)=>{r?i.scroll({[t?"left":"top"]:e.j()+o}):i.scrollBy(t?o:0,t?0:o)}),(()=>c(r,l,t)))},L(){o&&o.L()},W:()=>{o&&o.W()}}})(c,i),f=e.ref(c.p()),d=c.H(1,(()=>{f.value=c.p()})),_=c.H(8,(()=>{r("scrollEnd")}));return e.onMounted((()=>{const e=l.value;e&&(a.$(e),u.J(e))})),e.onUnmounted((()=>{d(),_(),a.L(),u.L()})),e.watch((()=>o.data.length),(e=>{c.A(5,[e,o.shift])})),e.watch([f,c.T],(([,e],[,t])=>{e!==t&&u.W()}),{flush:"post"}),e.watch([f,c.m],(([,[e,t]],[,[o,n]])=>{o===e&&n===t||r("rangeChange",e,t)}),{flush:"post"}),()=>{f.value;const t=o.as,r=o.item,s=o.data.length,[u,d]=c.m(),_=c.B(),p=c.N(),h=[];for(let[t,l]=w(u,d,o.overscan,_,s);t<=l;t++){const s=n.default(o.data[t])[0];h.push(e.createVNode(C,{key:j(s,t),Y:a.ee,F:t,U:c.O(t),V:c.v(t),X:s,G:i,Z:r},null,8,["_resizer","_index","_offset","_hide","_children","_isHorizontal","_as"]))}return e.createVNode(t,{ref:l,style:{overflowAnchor:"none",flex:"none",position:"relative",visibility:"hidden",width:i?p+"px":"100%",height:i?"100%":p+"px",pointerEvents:0!==_?"none":"auto"}},"function"==typeof(g=h)||"[object Object]"===Object.prototype.toString.call(g)&&!e.isVNode(g)?h:{default:()=>[h],_:2},8,["style"]);var g}}});exports.VList=N,exports.Virtualizer=R,exports.WindowVirtualizer=E;
|
|
1
|
+
var e=require("vue");const t=null,o=Math.min,r=Math.max,n=Math.abs,s=setTimeout,i=(e,t,n)=>o(n,r(t,e)),l="function"==typeof queueMicrotask?queueMicrotask:e=>{Promise.resolve().then(e)},c=e=>{let t,o;return(...r)=>(t||(t=!0,o=e(...r)),o)},a=-1,u=(e,t,o)=>{const r=o?"unshift":"push";for(let o=0;o<t;o++)e[r](a);return e},f=(e,t)=>{const o=e.t[t];return o===a?e.o:o},d=(e,t,r)=>{const n=e.t[t]===a;return e.t[t]=r,e.i=o(t,e.i),n},_=(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+=f(e,o),e.u[++o]=r;return e.i=t,r},p=(e,t,o)=>{for(;o>=0&&o<e.l;){const r=_(e,o);if(r<=t){if(r+f(e,o)>t)break;o++}else o--}return i(o,0,e.l-1)},h=(e,t,r)=>{const n=t-e.l;return e.i=r?-1:o(t-1,e.i),e.l=t,n>0?(u(e.u,n),u(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===a?e.o:o)),0))},g="undefined"!=typeof window,m=()=>document.documentElement,v=e=>e.ownerDocument,b=e=>e.defaultView,y=/*#__PURE__*/c((()=>!!g&&"rtl"===getComputedStyle(m()).direction)),S=/*#__PURE__*/c((()=>/iP(hone|od|ad)/.test(navigator.userAgent))),z=/*#__PURE__*/c((()=>"scrollBehavior"in m().style)),x=(e,t,n,s,i)=>(1!==s&&(e-=r(0,n)),2!==s&&(t+=r(0,n)),[r(e,0),o(t,i-1)]),w=(e,s=40,i=0,l,c=!1)=>{let g=!!i,m=[],v=0,b=0,y=0,z=0,x=0,w=0,k=0,O=0,I=0,C=g?[0,r(i-1,0)]:t,j=[0,0],B=0;const R=((e,t)=>({o:t,t:u([],e),l:e,i:-1,u:u([],e)}))(e,s),q=new Set,N=()=>y-b,T=e=>((e,t,r,n)=>{const s=p(e,t,o(r,e.l-1));return[s,p(e,t+n,s)]})(R,e,j[0],v),E=()=>(e=>e.l?_(e,e.l-1)+f(e,e.l-1):0)(R),M=e=>_(R,e)-w,H=e=>f(R,e),A=e=>{e&&(S()&&0!==O?w+=e:(x+=e,z++))};return{p:()=>m,h:()=>(e=>[[...e.t],e.o])(R),m:()=>k?j:(j=T(r(0,N()+w+x)),C?[o(j[0],C[0]),r(j[1],C[1])]:j),v:e=>R.t[e]===a,S:()=>!!v,k:()=>!!C&&R.t.slice(r(0,C[0]-1),o(R.l-1,C[1]+1)+1).includes(a),O:M,I:H,C:()=>R.l,j:()=>y,B:()=>O,R:()=>v,q:()=>b,N:E,T:()=>z,M:()=>(k=x,x=0,[k,2===I||N()+v>=E()]),H(e,t){const o=[e,t];return q.add(o),()=>{q.delete(o)}},A(e,o){let s,i,l=0;switch(e){case 1:{const e=k;k=0;const r=o-y,s=n(r);e&&s<n(e)+1||0!==I||(O=r<0?2:1),g&&(C=t,g=!1),y=o,l=4;const c=N();c>=-v&&c<=E()&&(l+=1,i=s>v);break}case 2:l=8,0!==O&&(s=!0,l+=1),O=0,I=0,C=t;break;case 3:{const e=o.filter((([e,t])=>R.t[e]!==t));if(!e.length)break;A(e.reduce(((e,[t,o])=>((2===I||(C?t<C[0]:M(t)+(0===O&&0===I?H(t):0)<N()))&&(e+=o-H(t)),e)),0));for(const[t,o]of e){const e=H(t),r=d(R,t,o);c&&(B+=r?o:o-e)}c&&v&&B>v&&(A(((e,t)=>{let o=0;const n=e.t.filter(((e,r)=>{const n=e!==a;return n&&r<t&&o++,n})),s=e.o;return e.i=-1,((e.o=(e=>{const t=(e=>[...e].sort(((e,t)=>e-t)))(e),o=e.length/2|0;return t.length%2==0?(t[o-1]+t[o])/2:t[o]})(n))-s)*r(t-o,0)})(R,j[0])),c=!1),l=3,i=!0;break}case 4:v!==o&&(v=o,l=3);break;case 5:o[1]?(A(h(R,o[0],!0)),I=2,l=1):h(R,o[0]);break;case 6:b=o;break;case 7:I=1;break;case 8:C=T(o),l=1}l&&(m=[],s&&w&&(x+=w,w=0,z++),q.forEach((([e,t])=>{l&e&&t(i)})))}}},k=e=>{let t;return{J(o){(t||(t=new(b(v(o)).ResizeObserver)(e))).observe(o)},D(e){t.unobserve(e)},L(){t&&t.disconnect()}}},O=(e,t)=>t&&y()?-e:e,I=(e,o,r,n,i,l)=>{const c=Date.now;let a=0,u=!1,f=!1,d=!1,_=!1;const p=(()=>{let o;const r=()=>{o!=t&&clearTimeout(o)},n=()=>{r(),o=s((()=>{o=t,(()=>{if(u||f)return u=!1,void p();d=!1,e.A(2)})()}),150)};return n.P=r,n})(),h=()=>{a=c(),d&&(_=!0),l&&e.A(6,l()),e.A(1,n()),p()},g=t=>{if(u||0===e.B()||t.ctrlKey)return;const o=c()-a;150>o&&50<o&&(r?t.deltaX:t.deltaY)&&(u=!0)},m=()=>{f=!0,d=_=!1},v=()=>{f=!1,S()&&(d=!0)};return o.addEventListener("scroll",h),o.addEventListener("wheel",g,{passive:!0}),o.addEventListener("touchstart",m,{passive:!0}),o.addEventListener("touchend",v,{passive:!0}),{L:()=>{o.removeEventListener("scroll",h),o.removeEventListener("wheel",g),o.removeEventListener("touchstart",m),o.removeEventListener("touchend",v),p.P()},W:()=>{const[t,o]=e.M();t&&(i(O(t,r),o,_),_=!1,o&&e.R()>e.N()&&e.A(1,n()))}}},C=/*#__PURE__*/e.defineComponent({props:{X:{type:Object,required:!0},Y:{type:Function,required:!0},F:{type:Number,required:!0},U:{type:Number,required:!0},V:{type:Boolean},G:{type:Boolean},K:{type:Boolean},Z:{type:String,required:!0}},setup(t){const o=e.ref();return e.watch((()=>o.value&&t.F),((e,r,n)=>{n(t.Y(o.value,t.F))}),{flush:"post"}),()=>{const{X:r,U:n,V:s,G:i,K:l,Z:c}=t,a={margin:0,padding:0,position:s&&l?void 0:"absolute",[i?"height":"width"]:"100%",[i?"top":"left"]:"0px",[i?y()?"right":"left":"top"]:n+"px",visibility:!s||l?"visible":"hidden"};return i&&(a.display="flex"),e.createVNode(c,{ref:o,style:a},"function"==typeof(u=r)||"[object Object]"===Object.prototype.toString.call(u)&&!e.isVNode(u)?r:{default:()=>[r],_:2},8,["style"]);var u}}}),j=(e,o)=>{const r=e.key;return r!=t?r:"_"+o},B={data:{type:Array,required:!0},overscan:{type:Number,default:4},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"}},R=/*#__PURE__*/e.defineComponent({props:B,emits:["scroll","scrollEnd","rangeChange"],setup(o,{emit:n,expose:c,slots:a}){var u;let f=!!o.ssrCount;const d=o.horizontal,_=e.ref(),p=w(o.data.length,null!==(u=o.itemSize)&&void 0!==u?u:40,o.ssrCount,0,!o.itemSize),h=((e,o)=>{let r;const n=o?"width":"height",s=new WeakMap,i=k((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{$(e){i.J(r=e)},ee:(e,t)=>(s.set(e,t),i.J(e),()=>{s.delete(e),i.D(e)}),L:i.L}})(p,d),g=((e,t)=>{let o,r,n;const c=t?"scrollLeft":"scrollTop",a=t?"overflowX":"overflowY",u=async(r,i)=>{if(!o)return void l((()=>u(r,i)));n&&n();const a=()=>{let t;return[new Promise(((o,r)=>{t=o,n=r,e.S()&&s(r,150)})),e.H(2,(()=>{t&&t()}))]};if(i&&z()){for(;e.A(8,r()),e.k();){const[e,t]=a();try{await e}catch(e){return}finally{t()}}o.scrollTo({[t?"left":"top"]:O(r(),t),behavior:"smooth"})}else for(;;){const[n,s]=a();try{o[c]=O(r(),t),e.A(7),await n}catch(e){return}finally{s()}}};return{J(i){o=i,r=I(e,i,t,(()=>O(i[c],t)),((t,o,r)=>{if(r){const e=i.style,t=e[a];e[a]="hidden",s((()=>{e[a]=t}))}o?(i[c]=e.j()+t,n&&n()):i[c]+=t}))},L(){r&&r.L()},te(e){u((()=>e))},oe(t){t+=e.j(),u((()=>t))},re(t,{align:o,smooth:r,offset:n=0}={}){if(t=i(t,0,e.C()-1),"nearest"===o){const r=e.O(t),n=e.j();if(r<n)o="start";else{if(!(r+e.I(t)>n+e.R()))return;o="end"}}u((()=>n+e.q()+e.O(t)+("end"===o?e.I(t)-e.R():"center"===o?(e.I(t)-e.R())/2:0)),r)},W:()=>{r&&r.W()}}})(p,d),m=e.ref(p.p()),v=p.H(1,(()=>{m.value=p.p()})),b=p.H(4,(()=>{n("scroll",p.j())})),y=p.H(8,(()=>{n("scrollEnd")}));return e.onMounted((()=>{f=!1,l((()=>{const e=e=>{h.$(e),g.J(e)};o.scrollRef?e(o.scrollRef):e(_.value.parentElement)}))})),e.onUnmounted((()=>{v(),b(),y(),h.L(),g.L()})),e.watch((()=>o.data.length),(e=>{p.A(5,[e,o.shift])})),e.watch((()=>o.startMargin),(e=>{p.A(6,e)}),{immediate:!0}),e.watch([m,p.T],(([,e],[,t])=>{e!==t&&g.W()}),{flush:"post"}),e.watch([m,p.m],(([,[e,t]],[,[o,r]])=>{o===e&&r===t||n("rangeChange",e,t)}),{flush:"post"}),c({get scrollOffset(){return p.j()},get scrollSize(){return(e=>r(e.N(),e.R()))(p)},get viewportSize(){return p.R()},getItemOffset:p.O,scrollToIndex:g.re,scrollTo:g.te,scrollBy:g.oe}),()=>{m.value;const t=o.as,r=o.item,n=o.data.length,[s,i]=p.m(),l=p.B(),c=p.N(),u=[];for(let[t,c]=x(s,i,o.overscan,l,n);t<=c;t++){const n=a.default({item:o.data[t],index:t})[0];u.push(e.createVNode(C,{key:j(n,t),Y:h.ee,F:t,U:p.O(t),V:p.v(t),X:n,G:d,K:f,Z:r},null,8,["_resizer","_index","_offset","_hide","_children","_isHorizontal","_isSSR","_as"]))}return e.createVNode(t,{ref:_,style:{overflowAnchor:"none",flex:"none",position:"relative",visibility:"hidden",width:d?c+"px":"100%",height:d?"100%":c+"px",pointerEvents:0!==l?"none":"auto"}},"function"==typeof(g=u)||"[object Object]"===Object.prototype.toString.call(g)&&!e.isVNode(g)?u:{default:()=>[u],_:2},8,["style"]);var g}}}),q={data:{type:Array,required:!0},overscan:{type:Number,default:4},itemSize:Number,shift:Boolean,horizontal:Boolean,ssrCount:Number},N=/*#__PURE__*/e.defineComponent({props:q,emits:["scroll","scrollEnd","rangeChange"],setup(t,{emit:o,expose:r,slots:n}){const s=t.horizontal,i=e=>{o("scroll",e)},l=()=>{o("scrollEnd")},c=(e,t)=>{o("rangeChange",e,t)},a=e.ref();return r({get scrollOffset(){return a.value.scrollOffset},get scrollSize(){return a.value.scrollSize},get viewportSize(){return a.value.viewportSize},getItemOffset:(...e)=>a.value.getItemOffset(...e),scrollToIndex:(...e)=>a.value.scrollToIndex(...e),scrollTo:(...e)=>a.value.scrollTo(...e),scrollBy:(...e)=>a.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(R,{ref:a,data:t.data,overscan:t.overscan,itemSize:t.itemSize,shift:t.shift,ssrCount:t.ssrCount,horizontal:s,onScroll:i,onScrollEnd:l,onRangeChange:c},(o=n,"function"==typeof o||"[object Object]"===Object.prototype.toString.call(o)&&!e.isVNode(o)?n:{default:()=>[n],_:2}),8,["data","overscan","itemSize","shift","ssrCount","horizontal","onScroll","onScrollEnd","onRangeChange"])],4);var o}}}),T={data:{type:Array,required:!0},overscan:{type:Number,default:4},itemSize:Number,shift:Boolean,horizontal:Boolean,as:{type:String,default:"div"},item:{type:String,default:"div"}},E=/*#__PURE__*/e.defineComponent({props:T,emits:["scrollEnd","rangeChange"],setup(o,{emit:r,slots:n}){var s;const i=o.horizontal,l=e.ref(),c=w(o.data.length,null!==(s=o.itemSize)&&void 0!==s?s:40,void 0,0,!o.itemSize),a=((e,o)=>{const r=o?"width":"height",n=o?"innerWidth":"innerHeight",s=new WeakMap,i=k((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{$(t){const o=b(v(t)),r=()=>{e.A(4,o[n])};o.addEventListener("resize",r),r(),l=()=>{o.removeEventListener("resize",r)}},ee:(e,t)=>(s.set(e,t),i.J(e),()=>{s.delete(e),i.D(e)}),L(){l&&l(),i.L()}}})(c,i),u=((e,t)=>{let o;return{J(r){const n=t?"scrollX":"scrollY",s=v(r),i=b(s),l=s.body,c=(e,t,o,r=0)=>{const n=o?"offsetLeft":"offsetTop",s=r+(o&&y()?i.innerWidth-e[n]-e.offsetWidth:e[n]),l=e.offsetParent;return e!==t&&l?c(l,t,o,s):s};o=I(e,i,t,(()=>O(i[n],t)),((o,r)=>{r?i.scroll({[t?"left":"top"]:e.j()+o}):i.scrollBy(t?o:0,t?0:o)}),(()=>c(r,l,t)))},L(){o&&o.L()},W:()=>{o&&o.W()}}})(c,i),f=e.ref(c.p()),d=c.H(1,(()=>{f.value=c.p()})),_=c.H(8,(()=>{r("scrollEnd")}));return e.onMounted((()=>{const e=l.value;e&&(a.$(e),u.J(e))})),e.onUnmounted((()=>{d(),_(),a.L(),u.L()})),e.watch((()=>o.data.length),(e=>{c.A(5,[e,o.shift])})),e.watch([f,c.T],(([,e],[,t])=>{e!==t&&u.W()}),{flush:"post"}),e.watch([f,c.m],(([,[e,t]],[,[o,n]])=>{o===e&&n===t||r("rangeChange",e,t)}),{flush:"post"}),()=>{f.value;const t=o.as,r=o.item,s=o.data.length,[u,d]=c.m(),_=c.B(),p=c.N(),h=[];for(let[t,l]=x(u,d,o.overscan,_,s);t<=l;t++){const s=n.default({item:o.data[t],index:t})[0];h.push(e.createVNode(C,{key:j(s,t),Y:a.ee,F:t,U:c.O(t),V:c.v(t),X:s,G:i,Z:r},null,8,["_resizer","_index","_offset","_hide","_children","_isHorizontal","_as"]))}return e.createVNode(t,{ref:l,style:{overflowAnchor:"none",flex:"none",position:"relative",visibility:"hidden",width:i?p+"px":"100%",height:i?"100%":p+"px",pointerEvents:0!==_?"none":"auto"}},"function"==typeof(g=h)||"[object Object]"===Object.prototype.toString.call(g)&&!e.isVNode(g)?h:{default:()=>[h],_:2},8,["style"]);var g}}});exports.VList=N,exports.Virtualizer=R,exports.WindowVirtualizer=E;
|
|
2
2
|
//# sourceMappingURL=index.js.map
|