virtua 0.36.2 → 0.37.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/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/index.mjs +1 -1
- package/lib/index.mjs.map +1 -1
- package/lib/react/VList.d.ts +1 -1
- package/lib/react/Virtualizer.d.ts +17 -10
- package/lib/react/WindowVirtualizer.d.ts +13 -6
- package/lib/solid/VList.d.ts +1 -1
- package/lib/solid/Virtualizer.d.ts +13 -6
- package/lib/solid/WindowVirtualizer.d.ts +22 -6
- package/lib/solid/index.d.ts +1 -1
- package/lib/solid/index.js +1 -1
- package/lib/solid/index.js.map +1 -1
- package/lib/solid/index.mjs +1 -1
- package/lib/solid/index.mjs.map +1 -1
- package/lib/svelte/VList.svelte +12 -2
- package/lib/svelte/VList.svelte.d.ts +4 -0
- package/lib/svelte/VList.type.d.ts +1 -1
- package/lib/svelte/Virtualizer.svelte +23 -29
- package/lib/svelte/Virtualizer.svelte.d.ts +4 -0
- package/lib/svelte/Virtualizer.type.d.ts +18 -6
- package/lib/svelte/WindowVirtualizer.svelte +24 -29
- package/lib/svelte/WindowVirtualizer.svelte.d.ts +4 -1
- package/lib/svelte/WindowVirtualizer.type.d.ts +16 -4
- package/lib/svelte/WindowVirtualizer.type.js +0 -9
- package/lib/svelte/core.d.ts +39 -31
- package/lib/svelte/core.js +1 -1
- package/lib/vue/VList.d.ts +2 -16
- package/lib/vue/Virtualizer.d.ts +15 -16
- package/lib/vue/WindowVirtualizer.d.ts +18 -16
- 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 +15 -15
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
/** @jsxImportSource vue */
|
|
2
2
|
import { VNode, ComponentOptionsMixin, SlotsType, PropType, NativeElements } from "vue";
|
|
3
|
+
export interface WindowVirtualizerHandle {
|
|
4
|
+
/**
|
|
5
|
+
* Get the start index of visible range of items.
|
|
6
|
+
*/
|
|
7
|
+
readonly startIndex: number;
|
|
8
|
+
/**
|
|
9
|
+
* Get the end index of visible range of items.
|
|
10
|
+
*/
|
|
11
|
+
readonly endIndex: number;
|
|
12
|
+
}
|
|
3
13
|
export declare const WindowVirtualizer: import("vue").DefineComponent<{
|
|
4
14
|
/**
|
|
5
15
|
* The data items rendered by this component.
|
|
@@ -12,10 +22,7 @@ export declare const WindowVirtualizer: import("vue").DefineComponent<{
|
|
|
12
22
|
* Number of items to render above/below the visible bounds of the list. You can increase to avoid showing blank items in fast scrolling.
|
|
13
23
|
* @defaultValue 4
|
|
14
24
|
*/
|
|
15
|
-
overscan:
|
|
16
|
-
type: NumberConstructor;
|
|
17
|
-
default: number;
|
|
18
|
-
};
|
|
25
|
+
overscan: NumberConstructor;
|
|
19
26
|
/**
|
|
20
27
|
* Item size hint for unmeasured items. It will help to reduce scroll jump when items are measured if used properly.
|
|
21
28
|
*
|
|
@@ -49,15 +56,14 @@ export declare const WindowVirtualizer: import("vue").DefineComponent<{
|
|
|
49
56
|
};
|
|
50
57
|
}, void, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
|
|
51
58
|
/**
|
|
52
|
-
* Callback invoked
|
|
59
|
+
* Callback invoked whenever scroll offset changes.
|
|
60
|
+
* @param offset Current scrollTop, or scrollLeft if horizontal: true.
|
|
53
61
|
*/
|
|
54
|
-
|
|
62
|
+
scroll: (offset: number) => void;
|
|
55
63
|
/**
|
|
56
|
-
* Callback invoked when
|
|
57
|
-
* @param startIndex The start index of viewable items.
|
|
58
|
-
* @param endIndex The end index of viewable items.
|
|
64
|
+
* Callback invoked when scrolling stops.
|
|
59
65
|
*/
|
|
60
|
-
|
|
66
|
+
scrollEnd: () => void;
|
|
61
67
|
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
62
68
|
/**
|
|
63
69
|
* The data items rendered by this component.
|
|
@@ -70,10 +76,7 @@ export declare const WindowVirtualizer: import("vue").DefineComponent<{
|
|
|
70
76
|
* Number of items to render above/below the visible bounds of the list. You can increase to avoid showing blank items in fast scrolling.
|
|
71
77
|
* @defaultValue 4
|
|
72
78
|
*/
|
|
73
|
-
overscan:
|
|
74
|
-
type: NumberConstructor;
|
|
75
|
-
default: number;
|
|
76
|
-
};
|
|
79
|
+
overscan: NumberConstructor;
|
|
77
80
|
/**
|
|
78
81
|
* Item size hint for unmeasured items. It will help to reduce scroll jump when items are measured if used properly.
|
|
79
82
|
*
|
|
@@ -106,11 +109,10 @@ export declare const WindowVirtualizer: import("vue").DefineComponent<{
|
|
|
106
109
|
default: string;
|
|
107
110
|
};
|
|
108
111
|
}>> & {
|
|
112
|
+
onScroll?: ((offset: number) => any) | undefined;
|
|
109
113
|
onScrollEnd?: (() => any) | undefined;
|
|
110
|
-
onRangeChange?: ((startIndex: number, endIndex: number) => any) | undefined;
|
|
111
114
|
}, {
|
|
112
115
|
shift: boolean;
|
|
113
|
-
overscan: number;
|
|
114
116
|
horizontal: boolean;
|
|
115
117
|
as: keyof import("vue").IntrinsicElementAttributes;
|
|
116
118
|
item: keyof import("vue").IntrinsicElementAttributes;
|
package/lib/vue/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e=require("vue");const t=null,{min:o,max:r,abs:n,floor:s}=Math,i=setTimeout,l=(e,t,n)=>o(n,r(t,e)),c="function"==typeof queueMicrotask?queueMicrotask:e=>{Promise.resolve().then(e)},a=e=>{let t,o;return(...r)=>(t||(t=!0,o=e(...r)),o)},u=-1,f=(e,t,o)=>{const r=o?"unshift":"push";for(let o=0;o<t;o++)e[r](u);return e},d=(e,t)=>{const o=e.t[t];return o===u?e.o:o},_=(e,t,r)=>{const n=e.t[t]===u;return e.t[t]=r,e.i=o(t,e.i),n},p=(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+=d(e,o),e.u[++o]=r;return e.i=t,r},h=(e,t,o=0,r=e.l-1)=>{for(;o<=r;){const n=s((o+r)/2),i=p(e,n);if(i<=t){if(i+d(e,n)>t)return n;o=n+1}else r=n-1}return l(o,0,e.l-1)},g=(e,t,r)=>{const n=t-e.l;return e.i=r?-1:o(t-1,e.i),e.l=t,n>0?(f(e.u,n),f(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===u?e.o:o)),0))},v="undefined"!=typeof window,m=()=>document.documentElement,b=e=>e.ownerDocument,y=e=>e.defaultView,S=/*#__PURE__*/a((()=>!!v&&"rtl"===getComputedStyle(m()).direction)),z=/*#__PURE__*/a((()=>/iP(hone|od|ad)/.test(navigator.userAgent))),x=/*#__PURE__*/a((()=>"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)]),O=(e,s=40,i=0,l,c=!1)=>{let a=!!i,v=[],m=0,b=0,y=0,S=0,x=0,w=0,O=0,k=0,C=0,I=a?[0,r(i-1,0)]:t,j=[0,0],B=0;const R=((e,t)=>({o:t,t:f([],e),l:e,i:-1,u:f([],e)}))(e,s),q=new Set,N=()=>y-b,T=e=>((e,t,r,n)=>{if(n=o(n,e.l-1),p(e,n)<=t){const o=h(e,t+r,n);return[h(e,t,n,o),o]}{const o=h(e,t,void 0,n);return[o,h(e,t+r,o)]}})(R,e,m,j[0]),E=()=>(e=>e.l?p(e,e.l-1)+d(e,e.l-1):0)(R),H=e=>p(R,e)-w,M=e=>d(R,e),A=e=>{e&&(z()&&0!==k?w+=e:(x+=e,S++))};return{p:()=>v,h:()=>(e=>[e.t.slice(),e.o])(R),v:()=>O?j:(j=T(r(0,N()+w+x)),I?[o(j[0],I[0]),r(j[1],I[1])]:j),m:e=>R.t[e]===u,S:()=>!!I&&R.t.slice(r(0,I[0]-1),o(R.l-1,I[1]+1)+1).includes(u),O:H,k:M,C:()=>R.l,I:()=>y,j:()=>k,B:()=>m,R:()=>b,q:E,N:()=>S,T:()=>(O=x,x=0,[O,2===C||N()+m>=E()]),H(e,t){const o=[e,t];return q.add(o),()=>{q.delete(o)}},M(e,o){let s,i,l=0;switch(e){case 1:{const e=O;O=0;const r=o-y,s=n(r);e&&s<n(e)+1||0!==C||(k=r<0?2:1),a&&(I=t,a=!1),y=o,l=4;const c=N();c>=-m&&c<=E()&&(l+=1,i=s>m);break}case 2:l=8,0!==k&&(s=!0,l+=1),k=0,C=0,I=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===C||(I?t<I[0]:H(t)+(0===k&&0===C?M(t):0)<N()))&&(e+=o-M(t)),e)),0));for(const[t,o]of e){const e=M(t),r=_(R,t,o);c&&(B+=r?o:o-e)}c&&m&&B>m&&(A(((e,t)=>{let o=0;const n=e.t.filter(((e,r)=>{const n=e!==u;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:m!==o&&(m=o,l=3);break;case 5:o[1]?(A(g(R,o[0],!0)),C=2,l=1):g(R,o[0]);break;case 6:b=o;break;case 7:C=1;break;case 8:I=T(o),l=1}l&&(v=[],s&&w&&(x+=w,w=0,S++),q.forEach((([e,t])=>{l&e&&t(i)})))}}},k=e=>{let t;return{A(o){(t||(t=new(y(b(o)).ResizeObserver)(e))).observe(o)},J(e){t.unobserve(e)},L(){t&&t.disconnect()}}},C=(e,t)=>t&&S()?-e:e,I=(e,o,r,n,s,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=i((()=>{o=t,(()=>{if(u||f)return u=!1,void p();d=!1,e.M(2)})()}),150)};return n.P=r,n})(),h=()=>{a=c(),d&&(_=!0),l&&e.M(6,l()),e.M(1,n()),p()},g=t=>{if(u||0===e.j()||t.ctrlKey)return;const o=c()-a;150>o&&50<o&&(r?t.deltaX:t.deltaY)&&(u=!0)},v=()=>{f=!0,d=_=!1},m=()=>{f=!1,z()&&(d=!0)};return o.addEventListener("scroll",h),o.addEventListener("wheel",g,{passive:!0}),o.addEventListener("touchstart",v,{passive:!0}),o.addEventListener("touchend",m,{passive:!0}),{L:()=>{o.removeEventListener("scroll",h),o.removeEventListener("wheel",g),o.removeEventListener("touchstart",v),o.removeEventListener("touchend",m),p.P()},W:()=>{const[t,o]=e.T();t&&(s(C(t,r),o,_),_=!1,o&&e.B()>e.q()&&e.M(1,n()))}}},j=/*#__PURE__*/e.defineComponent({props:{X:{type:Object,required:!0},Y:{type:Function,required:!0},D:{type:Number,required:!0},F:{type:Number,required:!0},U:{type:Boolean},V:{type:Boolean},G:{type:Boolean},K:{type:String,required:!0}},setup(t){const o=e.ref();return e.watch((()=>o.value&&t.D),((e,r,n)=>{n(t.Y(o.value,t.D))}),{flush:"post"}),()=>{const{X:r,F:n,U:s,V:i,G:l,K:c}=t,a={position:s&&l?void 0:"absolute",[i?"height":"width"]:"100%",[i?"top":"left"]:"0px",[i?S()?"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}}}),B=(e,o)=>{const r=e.key;return r!=t?r:"_"+o},R={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"}},q=/*#__PURE__*/e.defineComponent({props:R,emits:["scroll","scrollEnd","rangeChange"],setup(o,{emit:n,expose:s,slots:a}){var u;let f=!!o.ssrCount;const d=o.horizontal,_=e.ref(),p=O(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.M(4,c[n]);else{const e=s.get(l);e!=t&&i.push([e,c[n]])}i.length&&e.M(3,i)}));return{Z(e){i.A(r=e)},$:(e,t)=>(s.set(e,t),i.A(e),()=>{s.delete(e),i.J(e)}),L:i.L}})(p,d),g=((e,t)=>{let o,r,n;const s=t?"scrollLeft":"scrollTop",a=t?"overflowX":"overflowY",u=async(r,l)=>{if(!o)return void c((()=>u(r,l)));n&&n();const a=()=>{let t;return[new Promise(((o,r)=>{t=o,n=r,(e=>!!e.B())(e)&&i(r,150)})),e.H(2,(()=>{t&&t()}))]};if(l&&x()){for(;e.M(8,r()),e.S();){const[e,t]=a();try{await e}catch(e){return}finally{t()}}o.scrollTo({[t?"left":"top"]:C(r(),t),behavior:"smooth"})}else for(;;){const[n,i]=a();try{o[s]=C(r(),t),e.M(7),await n}catch(e){return}finally{i()}}};return{A(l){o=l,r=I(e,l,t,(()=>C(l[s],t)),((t,o,r)=>{if(r){const e=l.style,t=e[a];e[a]="hidden",i((()=>{e[a]=t}))}o?(l[s]=e.I()+t,n&&n()):l[s]+=t}))},L(){r&&r.L()},ee(e){u((()=>e))},te(t){t+=e.I(),u((()=>t))},oe(t,{align:o,smooth:r,offset:n=0}={}){if(t=l(t,0,e.C()-1),"nearest"===o){const r=e.O(t),n=e.I();if(r<n)o="start";else{if(!(r+e.k(t)>n+e.B()))return;o="end"}}u((()=>n+e.R()+e.O(t)+("end"===o?e.k(t)-e.B():"center"===o?(e.k(t)-e.B())/2:0)),r)},W:()=>{r&&r.W()}}})(p,d),v=e.ref(p.p()),m=p.H(1,(()=>{v.value=p.p()})),b=p.H(4,(()=>{n("scroll",p.I())})),y=p.H(8,(()=>{n("scrollEnd")}));return e.onMounted((()=>{f=!1,c((()=>{const e=e=>{h.Z(e),g.A(e)};o.scrollRef?e(o.scrollRef):e(_.value.parentElement)}))})),e.onUnmounted((()=>{m(),b(),y(),h.L(),g.L()})),e.watch((()=>o.data.length),(e=>{p.M(5,[e,o.shift])})),e.watch((()=>o.startMargin),(e=>{p.M(6,e)}),{immediate:!0}),e.watch([v,p.N],(([,e],[,t])=>{e!==t&&g.W()}),{flush:"post"}),e.watch([v,p.v],(([,[e,t]],[,[o,r]])=>{o===e&&r===t||n("rangeChange",e,t)}),{flush:"post"}),s({get scrollOffset(){return p.I()},get scrollSize(){return(e=>r(e.q(),e.B()))(p)},get viewportSize(){return p.B()},getItemOffset:p.O,scrollToIndex:g.oe,scrollTo:g.ee,scrollBy:g.te}),()=>{v.value;const t=o.as,r=o.item,n=o.data.length,[s,i]=p.v(),l=p.j(),c=p.q(),u=[];for(let[t,c]=w(s,i,o.overscan,l,n);t<=c;t++){const n=a.default({item:o.data[t],index:t})[0];u.push(e.createVNode(j,{key:B(n,t),Y:h.$,D:t,F:p.O(t),U:p.m(t),X:n,V:d,G:f,K: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":void 0}},"function"==typeof(g=u)||"[object Object]"===Object.prototype.toString.call(g)&&!e.isVNode(g)?u:{default:()=>[u],_:2},8,["style"]);var g}}}),N={data:{type:Array,required:!0},overscan:{type:Number,default:4},itemSize:Number,shift:Boolean,horizontal:Boolean,ssrCount:Number},T=/*#__PURE__*/e.defineComponent({props:N,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(q,{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}}}),E={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"}},H=/*#__PURE__*/e.defineComponent({props:E,emits:["scrollEnd","rangeChange"],setup(o,{emit:r,slots:n}){var s;const i=o.horizontal,l=e.ref(),c=O(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.M(3,n)}));let l;return{Z(t){const o=y(b(t)),r=()=>{e.M(4,o[n])};o.addEventListener("resize",r),r(),l=()=>{o.removeEventListener("resize",r)}},$:(e,t)=>(s.set(e,t),i.A(e),()=>{s.delete(e),i.J(e)}),L(){l&&l(),i.L()}}})(c,i),u=((e,t)=>{let o;return{A(r){const n=t?"scrollX":"scrollY",s=b(r),i=y(s),l=s.body,c=(e,t,o,r=0)=>{const n=o?"offsetLeft":"offsetTop",s=r+(o&&S()?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,(()=>C(i[n],t)),((o,r)=>{r?i.scroll({[t?"left":"top"]:e.I()+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.Z(e),u.A(e))})),e.onUnmounted((()=>{d(),_(),a.L(),u.L()})),e.watch((()=>o.data.length),(e=>{c.M(5,[e,o.shift])})),e.watch([f,c.N],(([,e],[,t])=>{e!==t&&u.W()}),{flush:"post"}),e.watch([f,c.v],(([,[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.v(),_=c.j(),p=c.q(),h=[];for(let[t,l]=w(u,d,o.overscan,_,s);t<=l;t++){const s=n.default({item:o.data[t],index:t})[0];h.push(e.createVNode(j,{key:B(s,t),Y:a.$,D:t,F:c.O(t),U:c.m(t),X:s,V:i,K: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":void 0}},"function"==typeof(g=h)||"[object Object]"===Object.prototype.toString.call(g)&&!e.isVNode(g)?h:{default:()=>[h],_:2},8,["style"]);var g}}});exports.VList=T,exports.Virtualizer=q,exports.WindowVirtualizer=H;
|
|
1
|
+
var e=require("vue");const t=null,{min:r,max:o,abs:n,floor:s}=Math,i=setTimeout,l=(e,t,n)=>r(n,o(t,e)),c="function"==typeof queueMicrotask?queueMicrotask:e=>{Promise.resolve().then(e)},a=e=>{let t,r;return()=>(t||(t=!0,r=e()),r)},u=-1,f=(e,t,r)=>{const o=r?"unshift":"push";for(let r=0;r<t;r++)e[o](u);return e},d=(e,t)=>{const r=e.t[t];return r===u?e.o:r},_=(e,t,o)=>{const n=e.t[t]===u;return e.t[t]=o,e.i=r(t,e.i),n},p=(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=p(e,n);if(i<=t){if(i+d(e,n)>t)return n;r=n+1}else o=n-1}return l(r,0,e.l-1)},m=(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-(r===u?e.o:r)),0))},g="undefined"!=typeof window,v=()=>document.documentElement,b=e=>e.ownerDocument,y=e=>e.defaultView,S=/*#__PURE__*/a((()=>!!g&&"rtl"===getComputedStyle(v()).direction)),x=/*#__PURE__*/a((()=>/iP(hone|od|ad)/.test(navigator.userAgent))),z=/*#__PURE__*/a((()=>"scrollBehavior"in v().style)),w=(e,s=40,i=4,l=0,c,a=!1)=>{let g=!!l,v=[],b=0,y=0,S=0,z=0,w=0,I=0,O=0,k=0,j=0,B=g?[0,o(l-1,0)]:t,q=[0,0],E=0;const N=((e,t)=>({o:t,t:f([],e),l:e,i:-1,u:f([],e)}))(e,s),R=new Set,T=()=>S-y,C=()=>T()+I+w,H=e=>((e,t,o,n)=>{if(n=r(n,e.l-1),p(e,n)<=t){const r=h(e,t+o,n);return[h(e,t,n,r),r]}{const r=h(e,t,void 0,n);return[r,h(e,t+o,r)]}})(N,e,b,q[0]),M=()=>(e=>e.l?p(e,e.l-1)+d(e,e.l-1):0)(N),A=e=>p(N,e)-I,J=e=>d(N,e),L=e=>{e&&(x()&&0!==k?I+=e:(w+=e,z++))};return{p:()=>v,h:()=>(e=>[e.t.slice(),e.o])(N),m:()=>{if(O)return q;let[e,t]=H(o(0,C()));return B&&(e=r(e,B[0]),t=o(t,B[1])),1!==k&&(e-=o(0,i)),2!==k&&(t+=o(0,i)),q=[o(e,0),r(t,N.l-1)]},v:()=>h(N,C()),S:()=>h(N,C()+b),I:e=>N.t[e]===u,O:()=>!!B&&N.t.slice(o(0,B[0]-1),r(N.l-1,B[1]+1)+1).includes(u),k:A,j:J,B:()=>N.l,q:()=>S,N:()=>0!==k,R:()=>b,T:()=>y,C:M,H:()=>z,M:()=>(O=w,w=0,[O,2===j||T()+b>=M()]),A:(e,t)=>{const r=[e,t];return R.add(r),()=>{R.delete(r)}},J:(e,r)=>{let s,i,l=0;switch(e){case 1:{const e=O;O=0;const o=r-S,s=n(o);e&&s<n(e)+1||0!==j||(k=o<0?2:1),g&&(B=t,g=!1),S=r,l=4;const c=T();c>=-b&&c<=M()&&(l+=1,i=s>b);break}case 2:l=8,0!==k&&(s=!0,l+=1),k=0,j=0,B=t;break;case 3:{const e=r.filter((([e,t])=>N.t[e]!==t));if(!e.length)break;L(e.reduce(((e,[t,r])=>((2===j||(B?t<B[0]:A(t)+(0===k&&0===j?J(t):0)<T()))&&(e+=r-J(t)),e)),0));for(const[t,r]of e){const e=J(t),o=_(N,t,r);a&&(E+=o?r:r-e)}a&&b&&E>b&&(L(((e,t)=>{let r=0;const n=e.t.filter(((e,o)=>{const n=e!==u;return n&&o<t&&r++,n})),s=e.o;return e.i=-1,((e.o=(e=>{const t=(e=>[...e].sort(((e,t)=>e-t)))(e),r=e.length/2|0;return t.length%2==0?(t[r-1]+t[r])/2:t[r]})(n))-s)*o(t-r,0)})(N,h(N,C()))),a=!1),l=3,i=!0;break}case 4:b!==r&&(b=r,l=3);break;case 5:r[1]?(L(m(N,r[0],!0)),j=2,l=1):m(N,r[0]);break;case 6:y=r;break;case 7:j=1;break;case 8:B=H(r),l=1}l&&(v=[],s&&I&&(w+=I,I=0,z++),R.forEach((([e,t])=>{l&e&&t(i)})))}}},I=e=>{let t;return{L(r){(t||(t=new(y(b(r)).ResizeObserver)(e))).observe(r)},P(e){t.unobserve(e)},W(){t&&t.disconnect()}}},O=(e,t)=>t&&S()?-e:e,k=(e,r,o,n,s,l)=>{const c=Date.now;let a=0,u=!1,f=!1,d=!1,_=!1;const p=(()=>{let r;const o=()=>{r!=t&&clearTimeout(r)},n=()=>{o(),r=i((()=>{r=t,(()=>{if(u||f)return u=!1,void p();d=!1,e.J(2)})()}),150)};return n.X=o,n})(),h=()=>{a=c(),d&&(_=!0),l&&e.J(6,l()),e.J(1,n()),p()},m=t=>{if(u||!e.N()||t.ctrlKey)return;const r=c()-a;150>r&&50<r&&(o?t.deltaX:t.deltaY)&&(u=!0)},g=()=>{f=!0,d=_=!1},v=()=>{f=!1,x()&&(d=!0)};return r.addEventListener("scroll",h),r.addEventListener("wheel",m,{passive:!0}),r.addEventListener("touchstart",g,{passive:!0}),r.addEventListener("touchend",v,{passive:!0}),{W:()=>{r.removeEventListener("scroll",h),r.removeEventListener("wheel",m),r.removeEventListener("touchstart",g),r.removeEventListener("touchend",v),p.X()},Y:()=>{const[t,r]=e.M();t&&(s(O(t,o),r,_),_=!1,r&&e.R()>e.C()&&e.J(1,n()))}}},j=/*#__PURE__*/e.defineComponent({props:{F:{type:Object,required:!0},U:{type:Function,required:!0},V:{type:Number,required:!0},D:{type:Number,required:!0},G:{type:Boolean},K:{type:Boolean},Z:{type:Boolean},$:{type:String,required:!0}},setup(t){const r=e.ref();return e.watch((()=>r.value&&t.V),((e,o,n)=>{n(t.U(r.value,t.V))}),{flush:"post"}),()=>{const{F:o,D:n,G:s,K:i,Z:l,$:c}=t,a={position:s&&l?void 0:"absolute",[i?"height":"width"]:"100%",[i?"top":"left"]:"0px",[i?S()?"right":"left":"top"]:n+"px",visibility:!s||l?"visible":"hidden"};return i&&(a.display="flex"),e.createVNode(c,{ref:r,style:a},"function"==typeof(u=o)||"[object Object]"===Object.prototype.toString.call(u)&&!e.isVNode(u)?o:{default:()=>[o],_:2},8,["style"]);var u}}}),B=(e,r)=>{const o=e.key;return o!=t?o:"_"+r},q={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"}},E=/*#__PURE__*/e.defineComponent({props:q,emits:["scroll","scrollEnd"],setup(r,{emit:n,expose:s,slots:a}){let u=!!r.ssrCount;const f=r.horizontal,d=e.ref(),_=w(r.data.length,r.itemSize,r.overscan,r.ssrCount,0,!r.itemSize),p=((e,r)=>{let o;const n=r?"width":"height",s=new WeakMap,i=I((r=>{const i=[];for(const{target:l,contentRect:c}of r)if(l.offsetParent)if(l===o)e.J(4,c[n]);else{const e=s.get(l);e!=t&&i.push([e,c[n]])}i.length&&e.J(3,i)}));return{ee(e){i.L(o=e)},te:(e,t)=>(s.set(e,t),i.L(e),()=>{s.delete(e),i.P(e)}),W:i.W}})(_,f),h=((e,t)=>{let r,o,n;const s=t?"scrollLeft":"scrollTop",a=t?"overflowX":"overflowY",u=async(o,l)=>{if(!r)return void c((()=>u(o,l)));n&&n();const a=()=>{let t;return[new Promise(((r,o)=>{t=r,n=o,(e=>!!e.R())(e)&&i(o,150)})),e.A(2,(()=>{t&&t()}))]};if(l&&z()){for(;e.J(8,o()),e.O();){const[e,t]=a();try{await e}catch(e){return}finally{t()}}r.scrollTo({[t?"left":"top"]:O(o(),t),behavior:"smooth"})}else for(;;){const[n,i]=a();try{r[s]=O(o(),t),e.J(7),await n}catch(e){return}finally{i()}}};return{L(l){r=l,o=k(e,l,t,(()=>O(l[s],t)),((t,r,o)=>{if(o){const e=l.style,t=e[a];e[a]="hidden",i((()=>{e[a]=t}))}r?(l[s]=e.q()+t,n&&n()):l[s]+=t}))},W(){o&&o.W()},re(e){u((()=>e))},oe(t){t+=e.q(),u((()=>t))},ne(t,{align:r,smooth:o,offset:n=0}={}){if(t=l(t,0,e.B()-1),"nearest"===r){const o=e.k(t),n=e.q();if(o<n)r="start";else{if(!(o+e.j(t)>n+e.R()))return;r="end"}}u((()=>n+e.T()+e.k(t)+("end"===r?e.j(t)-e.R():"center"===r?(e.j(t)-e.R())/2:0)),o)},Y:()=>{o&&o.Y()}}})(_,f),m=e.ref(_.p()),g=_.A(1,(()=>{m.value=_.p()})),v=_.A(4,(()=>{n("scroll",_.q())})),b=_.A(8,(()=>{n("scrollEnd")}));return e.onMounted((()=>{u=!1,c((()=>{const e=e=>{p.ee(e),h.L(e)};r.scrollRef?e(r.scrollRef):e(d.value.parentElement)}))})),e.onUnmounted((()=>{g(),v(),b(),p.W(),h.W()})),e.watch((()=>r.data.length),(e=>{_.J(5,[e,r.shift])})),e.watch((()=>r.startMargin),(e=>{_.J(6,e)}),{immediate:!0}),e.watch([m,_.H],(([,e],[,t])=>{e!==t&&h.Y()}),{flush:"post"}),s({get scrollOffset(){return _.q()},get scrollSize(){return(e=>o(e.C(),e.R()))(_)},get viewportSize(){return _.R()},get startIndex(){return _.v()},get endIndex(){return _.S()},getItemOffset:_.k,getItemSize:_.j,scrollToIndex:h.ne,scrollTo:h.re,scrollBy:h.oe}),()=>{m.value;const t=r.as,o=r.item,[n,s]=_.m(),i=_.N(),l=_.C(),c=[];for(let t=n,i=s;t<=i;t++){const n=a.default({item:r.data[t],index:t})[0];c.push(e.createVNode(j,{key:B(n,t),U:p.te,V:t,D:_.k(t),G:_.I(t),F:n,K:f,Z:u,$:o},null,8,["_resizer","_index","_offset","_hide","_children","_isHorizontal","_isSSR","_as"]))}return e.createVNode(t,{ref:d,style:{overflowAnchor:"none",flex:"none",position:"relative",visibility:"hidden",width:f?l+"px":"100%",height:f?"100%":l+"px",pointerEvents:i?"none":void 0}},"function"==typeof(h=c)||"[object Object]"===Object.prototype.toString.call(h)&&!e.isVNode(h)?c:{default:()=>[c],_:2},8,["style"]);var h}}}),N={data:{type:Array,required:!0},overscan:Number,itemSize:Number,shift:Boolean,horizontal:Boolean,ssrCount:Number},R=/*#__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},get startIndex(){return c.value.startIndex},get endIndex(){return c.value.endIndex},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(E,{ref:c,data:t.data,overscan:t.overscan,itemSize:t.itemSize,shift:t.shift,ssrCount:t.ssrCount,horizontal:s,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","overscan","itemSize","shift","ssrCount","horizontal","onScroll","onScrollEnd"])],4);var r}}}),T={data:{type:Array,required:!0},overscan:Number,itemSize:Number,shift:Boolean,horizontal:Boolean,as:{type:String,default:"div"},item:{type:String,default:"div"}},C=/*#__PURE__*/e.defineComponent({props:T,emits:["scroll","scrollEnd"],setup(r,{emit:o,slots:n,expose:s}){const i=r.horizontal,l=e.ref(),c=w(r.data.length,r.itemSize,r.overscan,void 0,0,!r.itemSize),a=((e,r)=>{const o=r?"width":"height",n=r?"innerWidth":"innerHeight",s=new WeakMap,i=I((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.J(3,n)}));let l;return{ee(t){const r=y(b(t)),o=()=>{e.J(4,r[n])};r.addEventListener("resize",o),o(),l=()=>{r.removeEventListener("resize",o)}},te:(e,t)=>(s.set(e,t),i.L(e),()=>{s.delete(e),i.P(e)}),W(){l&&l(),i.W()}}})(c,i),u=((e,t)=>{let r;return{L(o){const n=t?"scrollX":"scrollY",s=b(o),i=y(s),l=s.body,c=(e,t,r,o=0)=>{const n=r?"offsetLeft":"offsetTop",s=o+(r&&S()?i.innerWidth-e[n]-e.offsetWidth:e[n]),l=e.offsetParent;return e!==t&&l?c(l,t,r,s):s};r=k(e,i,t,(()=>O(i[n],t)),((r,o)=>{o?i.scroll({[t?"left":"top"]:e.q()+r}):i.scrollBy(t?r:0,t?0:r)}),(()=>c(o,l,t)))},W(){r&&r.W()},Y:()=>{r&&r.Y()}}})(c,i),f=e.ref(c.p()),d=c.A(1,(()=>{f.value=c.p()})),_=c.A(4,(()=>{o("scroll",c.q())})),p=c.A(8,(()=>{o("scrollEnd")}));return e.onMounted((()=>{const e=l.value;e&&(a.ee(e),u.L(e))})),e.onUnmounted((()=>{d(),_(),p(),a.W(),u.W()})),e.watch((()=>r.data.length),(e=>{c.J(5,[e,r.shift])})),e.watch([f,c.H],(([,e],[,t])=>{e!==t&&u.Y()}),{flush:"post"}),s({get startIndex(){return c.v()},get endIndex(){return c.S()}}),()=>{f.value;const t=r.as,o=r.item,[s,u]=c.m(),d=c.N(),_=c.C(),p=[];for(let t=s,l=u;t<=l;t++){const s=n.default({item:r.data[t],index:t})[0];p.push(e.createVNode(j,{key:B(s,t),U:a.te,V:t,D:c.k(t),G:c.I(t),F:s,K:i,$:o},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?_+"px":"100%",height:i?"100%":_+"px",pointerEvents:d?"none":void 0}},"function"==typeof(h=p)||"[object Object]"===Object.prototype.toString.call(h)&&!e.isVNode(h)?p:{default:()=>[p],_:2},8,["style"]);var h}}});exports.VList=R,exports.Virtualizer=E,exports.WindowVirtualizer=C;
|
|
2
2
|
//# sourceMappingURL=index.js.map
|