virtua 0.39.0 → 0.39.1

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 CHANGED
@@ -366,7 +366,7 @@ This package uses [exports of package.json](https://nodejs.org/api/packages.html
366
366
  - 🟠 - Supported but partial, limited or requires some user custom code
367
367
  - ❌ - Not officially supported
368
368
 
369
- ### Benchmarks
369
+ ### Benchmark
370
370
 
371
371
  WIP
372
372
 
@@ -1,6 +1,7 @@
1
1
  /** @jsxImportSource vue */
2
- import { ComponentOptionsMixin, SlotsType, VNode } from "vue";
2
+ import { ComponentOptionsMixin, SlotsType, VNode, PropType } from "vue";
3
3
  import { VirtualizerHandle } from "./Virtualizer";
4
+ import { ItemProps } from "./utils";
4
5
  interface VListHandle extends VirtualizerHandle {
5
6
  }
6
7
  export declare const VList: import("vue").DefineComponent<{
@@ -35,6 +36,16 @@ export declare const VList: import("vue").DefineComponent<{
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
37
  */
37
38
  ssrCount: NumberConstructor;
39
+ /**
40
+ * A function that provides properties/attributes for item element
41
+ *
42
+ * **This prop will be merged into `item` prop in the future**
43
+ */
44
+ itemProps: PropType<ItemProps>;
45
+ /**
46
+ * List of indexes that should be always mounted, even when off screen.
47
+ */
48
+ keepMounted: PropType<number[]>;
38
49
  }, VListHandle, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
39
50
  /**
40
51
  * Callback invoked whenever scroll offset changes.
@@ -77,6 +88,16 @@ export declare const VList: import("vue").DefineComponent<{
77
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.
78
89
  */
79
90
  ssrCount: NumberConstructor;
91
+ /**
92
+ * A function that provides properties/attributes for item element
93
+ *
94
+ * **This prop will be merged into `item` prop in the future**
95
+ */
96
+ itemProps: PropType<ItemProps>;
97
+ /**
98
+ * List of indexes that should be always mounted, even when off screen.
99
+ */
100
+ keepMounted: PropType<number[]>;
80
101
  }>> & {
81
102
  onScroll?: ((offset: number) => any) | undefined;
82
103
  onScrollEnd?: (() => any) | undefined;
@@ -1,6 +1,7 @@
1
1
  /** @jsxImportSource vue */
2
2
  import { VNode, ComponentOptionsMixin, SlotsType, PropType, NativeElements } from "vue";
3
3
  import { ScrollToIndexOpts } from "../core";
4
+ import { ItemProps } from "./utils";
4
5
  export interface VirtualizerHandle {
5
6
  /**
6
7
  * Get current scrollTop, or scrollLeft if horizontal: true.
@@ -108,6 +109,16 @@ export declare const Virtualizer: import("vue").DefineComponent<{
108
109
  type: PropType<keyof NativeElements>;
109
110
  default: string;
110
111
  };
112
+ /**
113
+ * A function that provides properties/attributes for item element
114
+ *
115
+ * **This prop will be merged into `item` prop in the future**
116
+ */
117
+ itemProps: PropType<ItemProps>;
118
+ /**
119
+ * List of indexes that should be always mounted, even when off screen.
120
+ */
121
+ keepMounted: PropType<number[]>;
111
122
  }, VirtualizerHandle, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
112
123
  /**
113
124
  * Callback invoked whenever scroll offset changes.
@@ -177,6 +188,16 @@ export declare const Virtualizer: import("vue").DefineComponent<{
177
188
  type: PropType<keyof NativeElements>;
178
189
  default: string;
179
190
  };
191
+ /**
192
+ * A function that provides properties/attributes for item element
193
+ *
194
+ * **This prop will be merged into `item` prop in the future**
195
+ */
196
+ itemProps: PropType<ItemProps>;
197
+ /**
198
+ * List of indexes that should be always mounted, even when off screen.
199
+ */
200
+ keepMounted: PropType<number[]>;
180
201
  }>> & {
181
202
  onScroll?: ((offset: number) => any) | undefined;
182
203
  onScrollEnd?: (() => any) | undefined;
package/lib/vue/index.js CHANGED
@@ -1,2 +1,2 @@
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="function"==typeof queueMicrotask?queueMicrotask:e=>{Promise.resolve().then(e)},c=e=>{let t,r;return()=>(t||(t=!0,r=e()),r)},a=-1,u=(e,t,r)=>{const o=r?"unshift":"push";for(let r=0;r<t;r++)e[o](a);return e},f=(e,t)=>{const r=e.t[t];return r===a?e.o:r},d=(e,t,o)=>{const n=e.t[t]===a;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+=f(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+f(e,n)>t)return n;r=n+1}else o=n-1}return i(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?(u(e.u,n),u(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===a?e.o:r)),0))},_="undefined"!=typeof window,v=()=>document.documentElement,b=e=>e.ownerDocument,y=e=>e.defaultView,S=/*#__PURE__*/c((()=>!!_&&"rtl"===getComputedStyle(v()).direction)),g=/*#__PURE__*/c((()=>/iP(hone|od|ad)/.test(navigator.userAgent))),x=/*#__PURE__*/c((()=>"scrollBehavior"in v().style)),z=e=>!!e.p(),$=(e,s=40,i=4,l=0,c,_=!1)=>{let v=!!l,b=[],y=0,S=0,x=0,z=0,$=0,w=0,I=0,O=0,j=0,k=v?[0,o(l-1,0)]:t,E=[0,0],T=0;const q=((e,t)=>({o:t,t:u([],e),l:e,i:-1,u:u([],e)}))(e,s),B=new Set,R=()=>x-S,N=()=>R()+w+$,C=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)]}})(q,e,y,E[0]),H=()=>(e=>e.l?p(e,e.l-1)+f(e,e.l-1):0)(q),M=e=>p(q,e)-w,A=e=>f(q,e),J=e=>{e&&(g()&&0!==O?w+=e:($+=e,z++))};return{h:()=>b,m:()=>(e=>[e.t.slice(),e.o])(q),v:()=>{if(I)return E;let[e,t]=C(o(0,N()));return k&&(e=r(e,k[0]),t=o(t,k[1])),1!==O&&(e-=o(0,i)),2!==O&&(t+=o(0,i)),E=[o(e,0),r(t,q.l-1)]},S:()=>h(q,N()),I:()=>h(q,N()+y),O:e=>q.t[e]===a,j:()=>!!k&&q.t.slice(o(0,k[0]-1),r(q.l-1,k[1]+1)+1).includes(a),k:M,T:A,q:()=>q.l,B:()=>x,R:()=>0!==O,p:()=>y,N:()=>S,C:H,H:()=>z,M:()=>(I=$,$=0,[I,2===j||R()+y>=H()]),A:(e,t)=>{const r=[e,t];return B.add(r),()=>{B.delete(r)}},J:(e,r)=>{let s,i,l=0;switch(e){case 1:{const e=I;I=0;const o=r-x,s=n(o);e&&s<n(e)+1||0!==j||(O=o<0?2:1),v&&(k=t,v=!1),x=r,l=4;const c=R();c>=-y&&c<=H()&&(l+=1,i=s>y);break}case 2:l=8,0!==O&&(s=!0,l+=1),O=0,j=0,k=t;break;case 3:{const e=r.filter((([e,t])=>q.t[e]!==t));if(!e.length)break;J(e.reduce(((e,[t,r])=>((2===j||(k?t<k[0]:M(t)+(0===O&&0===j?A(t):0)<R()))&&(e+=r-A(t)),e)),0));for(const[t,r]of e){const e=A(t),o=d(q,t,r);_&&(T+=o?r:r-e)}_&&y&&T>y&&(J(((e,t)=>{let r=0;const n=[];e.t.forEach(((e,o)=>{e!==a&&(n.push(e),o<t&&r++)})),e.i=-1;const s=(i=n,[...i].sort(((e,t)=>e-t)));var i;const l=s.length,c=l/2|0,u=l%2==0?(s[c-1]+s[c])/2:s[c],f=e.o;return((e.o=u)-f)*o(t-r,0)})(q,h(q,N()))),_=!1),l=3,i=!0;break}case 4:y!==r&&(y=r,l=3);break;case 5:r[1]?(J(m(q,r[0],!0)),j=2,l=1):(m(q,r[0]),l=1);break;case 6:S=r;break;case 7:j=1;break;case 8:k=C(r),l=1}l&&(b=[],s&&w&&($+=w,w=0,z++),B.forEach((([e,t])=>{l&e&&t(i)})))}}},w=setTimeout,I=(e,t)=>t&&S()?-e:e,O=(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.J(2)})()}),150)};return n.P=o,n})(),h=()=>{c=l(),f&&(d=!0),i&&e.J(6,i()),e.J(1,n()),p()},m=t=>{if(a||!e.R()||t.ctrlKey)return;const r=l()-c;150>r&&50<r&&(o?t.deltaX:t.deltaY)&&(a=!0)},_=()=>{u=!0,f=d=!1},v=()=>{u=!1,g()&&(f=!0)};return r.addEventListener("scroll",h),r.addEventListener("wheel",m,{passive:!0}),r.addEventListener("touchstart",_,{passive:!0}),r.addEventListener("touchend",v,{passive:!0}),{L:()=>{r.removeEventListener("scroll",h),r.removeEventListener("wheel",m),r.removeEventListener("touchstart",_),r.removeEventListener("touchend",v),p.P()},W:()=>{const[t,r]=e.M();t&&(s(I(t,o),r,d),d=!1,r&&e.p()>e.C()&&e.J(1,n()))}}},j=e=>{let t;return{X(r){(t||(t=new(y(b(r)).ResizeObserver)(e))).observe(r)},Y(e){t.unobserve(e)},L(){t&&t.disconnect()}}},k=/*#__PURE__*/e.defineComponent({props:{F:{type:Object,required:!0},U:{type:Object,required:!0},V:{type:Object,required:!0},D:{type:Function,required:!0},G:{type:Number,required:!0},K:{type:Boolean},Z:{type:Boolean},ee:{type:String,required:!0}},setup(t){const r=e.ref(),o=e.computed((()=>t.F.value&&t.U.k(t.G))),n=e.computed((()=>t.F.value&&t.U.O(t.G)));return e.watch((()=>r.value&&t.G),((e,o,n)=>{n(t.D(r.value,t.G))}),{flush:"post"}),()=>{const{V:s,K:i,Z:l,ee:c}=t,a=n.value,u={position:a&&l?void 0:"absolute",[i?"height":"width"]:"100%",[i?"top":"left"]:"0px",[i?S()?"right":"left":"top"]:o.value+"px",visibility:!a||l?"visible":"hidden"};return i&&(u.display="flex"),e.createVNode(c,{ref:r,style:u},"function"==typeof(f=s)||"[object Object]"===Object.prototype.toString.call(f)&&!e.isVNode(f)?s:{default:()=>[s],_:2},8,["style"]);var f}}}),E=(e,t)=>{const r=e.key;return null!=r?r:"_"+t},T=(e,t)=>e[0]===t[0]&&e[1]===t[1],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"}},B=/*#__PURE__*/e.defineComponent({props:q,emits:["scroll","scrollEnd"],setup(r,{emit:n,expose:s,slots:c}){let a=!!r.ssrCount;const u=r.horizontal,f=e.ref(),d=$(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=j((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{te(e){i.X(o=e)},re:(e,t)=>(s.set(e,t),i.X(e),()=>{s.delete(e),i.Y(e)}),oe:i.L}})(d,u),h=((e,t)=>{let r,o,n;const s=t?"scrollLeft":"scrollTop",c=t?"overflowX":"overflowY",a=async(o,i)=>{if(!r)return void l((()=>a(o,i)));n&&n();const c=()=>{let t;return[new Promise(((r,o)=>{t=r,n=o,z(e)&&w(o,150)})),e.A(2,(()=>{t&&t()}))]};if(i&&x()){for(;e.J(8,o()),e.j();){const[e,t]=c();try{await e}catch(e){return}finally{t()}}r.scrollTo({[t?"left":"top"]:I(o(),t),behavior:"smooth"})}else for(;;){const[n,i]=c();try{r[s]=I(o(),t),e.J(7),await n}catch(e){return}finally{i()}}};return{ne(i){r=i,o=O(e,i,t,(()=>I(i[s],t)),((t,r,o)=>{if(o){const e=i.style,t=e[c];e[c]="hidden",w((()=>{e[c]=t}))}r?(i[s]=e.B()+t,n&&n()):i[s]+=t}))},oe(){o&&o.L()},se(e){a((()=>e))},ie(t){t+=e.B(),a((()=>t))},le(t,{align:r,smooth:o,offset:n=0}={}){if(t=i(t,0,e.q()-1),"nearest"===r){const o=e.k(t),n=e.B();if(o<n)r="start";else{if(!(o+e.T(t)>n+e.p()))return;r="end"}}a((()=>n+e.N()+e.k(t)+("end"===r?e.T(t)-e.p():"center"===r?(e.T(t)-e.p())/2:0)),o)},ce:()=>{o&&o.W()}}})(d,u),m=e.ref(d.h()),_=d.A(1,(()=>{m.value=d.h()})),v=d.A(4,(()=>{n("scroll",d.B())})),b=d.A(8,(()=>{n("scrollEnd")})),y=e.computed((e=>{m.value;const t=d.v();return e&&T(e,t)?e:t})),S=e.computed((()=>m.value&&d.R())),g=e.computed((()=>m.value&&d.C())),q=e.computed((()=>m.value&&d.H()));return e.onMounted((()=>{a=!1,l((()=>{const e=e=>{p.te(e),h.ne(e)};r.scrollRef?e(r.scrollRef):e(f.value.parentElement)}))})),e.onUnmounted((()=>{_(),v(),b(),p.oe(),h.oe()})),e.watch((()=>r.data.length),(e=>{d.J(5,[e,r.shift])})),e.watch((()=>r.startMargin),(e=>{d.J(6,e)}),{immediate:!0}),e.watch([q],(()=>{h.ce()}),{flush:"post"}),s({get scrollOffset(){return d.B()},get scrollSize(){return(e=>o(e.C(),e.p()))(d)},get viewportSize(){return d.p()},findStartIndex:d.S,findEndIndex:d.I,getItemOffset:d.k,getItemSize:d.T,scrollToIndex:h.le,scrollTo:h.se,scrollBy:h.ie}),()=>{const t=r.as,o=r.item,[n,s]=y.value,i=g.value,l=[];for(let t=n,i=s;t<=i;t++){const n=c.default({item:r.data[t],index:t})[0];l.push(e.createVNode(k,{key:E(n,t),F:m,U:d,D:p.re,G:t,V:n,K:u,Z:a,ee:o},null,8,["_rerender","_store","_resizer","_index","_children","_isHorizontal","_isSSR","_as"]))}return e.createVNode(t,{ref:f,style:{overflowAnchor:"none",flex:"none",position:"relative",visibility:"hidden",width:u?i+"px":"100%",height:u?"100%":i+"px",pointerEvents:S.value?"none":void 0}},"function"==typeof(h=l)||"[object Object]"===Object.prototype.toString.call(h)&&!e.isVNode(h)?l:{default:()=>[l],_:2},8,["style"]);var h}}}),R={data:{type:Array,required:!0},overscan:Number,itemSize:Number,shift:Boolean,horizontal:Boolean,ssrCount:Number},N=/*#__PURE__*/e.defineComponent({props:R,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(B,{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}}}),C={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:C,emits:["scroll","scrollEnd"],setup(r,{emit:o,slots:n,expose:s}){const c=r.horizontal,a=e.ref(),u=$(r.data.length,r.itemSize,r.overscan,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.J(3,n)}));let l;return{te(t){const r=y(b(t)),o=()=>{e.J(4,r[n])};r.addEventListener("resize",o),o(),l=()=>{r.removeEventListener("resize",o)}},re:(e,t)=>(s.set(e,t),i.X(e),()=>{s.delete(e),i.Y(e)}),oe(){l&&l(),i.L()}}})(u,c),d=((e,t)=>{let r,o,n;const s=(e,t,r,o,n=0)=>{const i=o?"offsetLeft":"offsetTop",l=n+(o&&S()?r.innerWidth-e[i]-e.offsetWidth:e[i]),c=e.offsetParent;return e!==t&&c?s(c,t,r,o,l):l},c=async(o,s)=>{if(!r)return void l((()=>c(o,s)));n&&n();const i=()=>{let t;return[new Promise(((r,o)=>{t=r,n=o,z(e)&&w(o,150)})),e.A(2,(()=>{t&&t()}))]},a=y(b(r));if(s&&x()){for(;e.J(8,o()),e.j();){const[e,t]=i();try{await e}catch(e){return}finally{t()}}a.scroll({[t?"left":"top"]:I(o(),t),behavior:"smooth"})}else for(;;){const[r,n]=i();try{a.scroll({[t?"left":"top"]:I(o(),t)}),e.J(7),await r}catch(e){return}finally{n()}}};return{ne(n){r=n;const i=t?"scrollX":"scrollY",l=b(n),c=y(l),a=l.body;o=O(e,c,t,(()=>I(c[i],t)),((r,o)=>{o?c.scroll({[t?"left":"top"]:e.B()+r}):c.scrollBy(t?r:0,t?0:r)}),(()=>s(n,a,c,t)))},oe(){o&&o.L(),r=void 0},ce:()=>{o&&o.W()},le(o,{align:n,smooth:l,offset:a=0}={}){if(!r)return;if(o=i(o,0,e.q()-1),"nearest"===n){const t=e.k(o),r=e.B();if(t<r)n="start";else{if(!(t+e.T(o)>r+e.p()))return;n="end"}}const u=b(r),f=y(u),d=u.documentElement,p=()=>e.p()-(t?d.clientWidth:d.clientHeight);c((()=>a+s(r,u.body,f,t)+e.k(o)+("end"===n?e.T(o)-(e.p()-p()):"center"===n?(e.T(o)-(e.p()-p()))/2:0)),l)}}})(u,c),p=e.ref(u.h()),h=u.A(1,(()=>{p.value=u.h()})),m=u.A(4,(()=>{o("scroll",u.B())})),_=u.A(8,(()=>{o("scrollEnd")})),v=e.computed((e=>{p.value;const t=u.v();return e&&T(e,t)?e:t})),g=e.computed((()=>p.value&&u.R())),q=e.computed((()=>p.value&&u.C())),B=e.computed((()=>p.value&&u.H()));return e.onMounted((()=>{const e=a.value;e&&(f.te(e),d.ne(e))})),e.onUnmounted((()=>{h(),m(),_(),f.oe(),d.oe()})),e.watch((()=>r.data.length),(e=>{u.J(5,[e,r.shift])})),e.watch([B],(()=>{d.ce()}),{flush:"post"}),s({findStartIndex:u.S,findEndIndex:u.I,scrollToIndex:d.le}),()=>{const t=r.as,o=r.item,[s,i]=v.value,l=q.value,d=[];for(let t=s,l=i;t<=l;t++){const s=n.default({item:r.data[t],index:t})[0];d.push(e.createVNode(k,{key:E(s,t),F:p,U:u,D:f.re,G:t,V:s,K:c,ee:o},null,8,["_rerender","_store","_resizer","_index","_children","_isHorizontal","_as"]))}return e.createVNode(t,{ref:a,style:{overflowAnchor:"none",flex:"none",position:"relative",visibility:"hidden",width:c?l+"px":"100%",height:c?"100%":l+"px",pointerEvents:g.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=N,exports.Virtualizer=B,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=e=>{let t,r;return()=>(t||(t=!0,r=e()),r)},u=-1,d=(e,t,r)=>{const o=r?"unshift":"push";for(let r=0;r<t;r++)e[o](u);return e},f=(e,t)=>{const r=e.t[t];return r===u?e.o:r},p=(e,t,o)=>{const n=e.t[t]===u;return e.t[t]=o,e.i=r(t,e.i),n},h=(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+=f(e,r),e.u[++r]=o;return e.i=t,o},m=(e,t,r=0,o=e.l-1)=>{for(;r<=o;){const n=s((r+o)/2),i=h(e,n);if(i<=t){if(i+f(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?(d(e.u,n),d(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))},v="undefined"!=typeof window,b=()=>document.documentElement,y=e=>e.ownerDocument,S=e=>e.defaultView,g=/*#__PURE__*/a((()=>!!v&&"rtl"===getComputedStyle(b()).direction)),x=/*#__PURE__*/a((()=>/iP(hone|od|ad)/.test(navigator.userAgent))),z=/*#__PURE__*/a((()=>"scrollBehavior"in b().style)),$=e=>!!e.p(),w=(e,s=40,i=4,c=0,a,v=!1)=>{let b=!!c,y=[],S=0,g=0,z=0,$=0,w=0,I=0,k=0,O=0,j=0,E=b?[0,o(c-1,0)]:t,T=[0,0],q=0;const B=((e,t)=>({o:t,t:d([],e),l:e,i:-1,u:d([],e)}))(e,s),P=new Set,R=()=>z-g,M=()=>R()+I+w,N=e=>((e,t,o,n)=>{if(n=r(n,e.l-1),h(e,n)<=t){const r=m(e,t+o,n);return[m(e,t,n,r),r]}{const r=m(e,t,void 0,n);return[r,m(e,t+o,r)]}})(B,e,S,T[0]),A=()=>(e=>e.l?h(e,e.l-1)+f(e,e.l-1):0)(B),C=e=>h(B,e)-I,H=e=>f(B,e),J=e=>{e&&(x()&&0!==O?I+=e:(w+=e,$++))};return{h:()=>y,m:()=>(e=>[e.t.slice(),e.o])(B),v:()=>{if(k)return T;let[e,t]=N(o(0,M()));return E&&(e=r(e,E[0]),t=o(t,E[1])),1!==O&&(e-=o(0,i)),2!==O&&(t+=o(0,i)),T=[o(e,0),r(t,B.l-1)]},S:()=>m(B,M()),I:()=>m(B,M()+S),k:e=>B.t[e]===u,O:()=>!!E&&B.t.slice(o(0,E[0]-1),r(B.l-1,E[1]+1)+1).includes(u),j:C,T:H,q:()=>B.l,B:()=>z,P:()=>0!==O,p:()=>S,R:()=>g,M:A,N:()=>$,A:()=>(k=w,w=0,[k,2===j||R()+S>=A()]),C:(e,t)=>{const r=[e,t];return P.add(r),()=>{P.delete(r)}},H:(e,r)=>{let s,i,c=0;switch(e){case 1:{const e=k;k=0;const o=r-z,s=n(o);e&&s<n(e)+1||0!==j||(O=o<0?2:1),b&&(E=t,b=!1),z=r,c=4;const l=R();l>=-S&&l<=A()&&(c+=1,i=s>S);break}case 2:c=8,0!==O&&(s=!0,c+=1),O=0,j=0,E=t;break;case 3:{const e=r.filter((([e,t])=>B.t[e]!==t));if(!e.length)break;J(e.reduce(((e,[t,r])=>((2===j||(E?t<E[0]:C(t)+(0===O&&0===j?H(t):0)<R()))&&(e+=r-H(t)),e)),0));for(const[t,r]of e){const e=H(t),o=p(B,t,r);v&&(q+=o?r:r-e)}v&&S&&q>S&&(J(((e,t)=>{let r=0;const n=[];e.t.forEach(((e,o)=>{e!==u&&(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],d=e.o;return((e.o=a)-d)*o(t-r,0)})(B,m(B,M()))),v=!1),c=3,i=!0;break}case 4:S!==r&&(S=r,c=3);break;case 5:r[1]?(J(_(B,r[0],!0)),j=2,c=1):(_(B,r[0]),c=1);break;case 6:g=r;break;case 7:j=1;break;case 8:E=N(r),c=1}c&&(y=[],s&&I&&(w+=I,I=0,$++),P.forEach((([e,t])=>{c&e&&t(i)})))}}},I=setTimeout,k=(e,t)=>t&&g()?-e:e,O=(e,r,o,n,s,i)=>{const l=Date.now;let c=0,a=!1,u=!1,d=!1,f=!1;const p=(()=>{let r;const o=()=>{r!=t&&clearTimeout(r)},n=()=>{o(),r=I((()=>{r=t,(()=>{if(a||u)return a=!1,void p();d=!1,e.H(2)})()}),150)};return n.J=o,n})(),h=()=>{c=l(),d&&(f=!0),i&&e.H(6,i()),e.H(1,n()),p()},m=t=>{if(a||!e.P()||t.ctrlKey)return;const r=l()-c;150>r&&50<r&&(o?t.deltaX:t.deltaY)&&(a=!0)},_=()=>{u=!0,d=f=!1},v=()=>{u=!1,x()&&(d=!0)};return r.addEventListener("scroll",h),r.addEventListener("wheel",m,{passive:!0}),r.addEventListener("touchstart",_,{passive:!0}),r.addEventListener("touchend",v,{passive:!0}),{F:()=>{r.removeEventListener("scroll",h),r.removeEventListener("wheel",m),r.removeEventListener("touchstart",_),r.removeEventListener("touchend",v),p.J()},L:()=>{const[t,r]=e.A();t&&(s(k(t,o),r,f),f=!1,r&&e.p()>e.M()&&e.H(1,n()))}}},j=e=>{let t;return{W(r){(t||(t=new(S(y(r)).ResizeObserver)(e))).observe(r)},X(e){t.unobserve(e)},F(){t&&t.disconnect()}}},E=/*#__PURE__*/e.defineComponent({props:{Y:{type:Object,required:!0},U:{type:Object,required:!0},V:{type:Object,required:!0},D:{type:Function,required:!0},G:{type:Number,required:!0},K:{type:Boolean},Z:{type:Boolean},ee:{type:String,required:!0},te:Object},setup(t){const r=e.ref(),o=e.computed((()=>t.Y.value&&t.U.j(t.G))),n=e.computed((()=>t.Y.value&&t.U.k(t.G)));return e.watch((()=>r.value&&t.G),((e,o,n)=>{n(t.D(r.value,t.G))}),{flush:"post"}),()=>{var s;const{V:i,K:l,Z:c,ee:a}=t,u=n.value,{style:d,...f}=null!==(s=t.te)&&void 0!==s?s:{},p={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",...d};return l&&(p.display="flex"),e.createVNode(a,e.mergeProps({ref:r,style:p},f),"function"==typeof(h=i)||"[object Object]"===Object.prototype.toString.call(h)&&!e.isVNode(h)?i:{default:()=>[i],_:2},16,["style"]);var h}}}),T=(e,t)=>{const r=e.key;return null!=r?r:"_"+t},q=(e,t)=>e[0]===t[0]&&e[1]===t[1],B={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},P=/*#__PURE__*/e.defineComponent({props:B,emits:["scroll","scrollEnd"],setup(r,{emit:n,expose:s,slots:a}){let u=!!r.ssrCount;const d=r.horizontal,f=e.ref(),p=w(r.data.length,r.itemSize,r.overscan,r.ssrCount,0,!r.itemSize),h=((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.H(4,c[n]);else{const e=s.get(l);e!=t&&i.push([e,c[n]])}i.length&&e.H(3,i)}));return{re(e){i.W(o=e)},oe:(e,t)=>(s.set(e,t),i.W(e),()=>{s.delete(e),i.X(e)}),ne:i.F}})(p,d),m=((e,t)=>{let r,o,n;const s=t?"scrollLeft":"scrollTop",l=t?"overflowX":"overflowY",a=async(o,i)=>{if(!r)return void c((()=>a(o,i)));n&&n();const l=()=>{let t;return[new Promise(((r,o)=>{t=r,n=o,$(e)&&I(o,150)})),e.C(2,(()=>{t&&t()}))]};if(i&&z()){for(;e.H(8,o()),e.O();){const[e,t]=l();try{await e}catch(e){return}finally{t()}}r.scrollTo({[t?"left":"top"]:k(o(),t),behavior:"smooth"})}else for(;;){const[n,i]=l();try{r[s]=k(o(),t),e.H(7),await n}catch(e){return}finally{i()}}};return{se(i){r=i,o=O(e,i,t,(()=>k(i[s],t)),((t,r,o)=>{if(o){const e=i.style,t=e[l];e[l]="hidden",I((()=>{e[l]=t}))}r?(i[s]=e.B()+t,n&&n()):i[s]+=t}))},ne(){o&&o.F()},ie(e){a((()=>e))},le(t){t+=e.B(),a((()=>t))},ce(t,{align:r,smooth:o,offset:n=0}={}){if(t=i(t,0,e.q()-1),"nearest"===r){const o=e.j(t),n=e.B();if(o<n)r="start";else{if(!(o+e.T(t)>n+e.p()))return;r="end"}}a((()=>n+e.R()+e.j(t)+("end"===r?e.T(t)-e.p():"center"===r?(e.T(t)-e.p())/2:0)),o)},ae:()=>{o&&o.L()}}})(p,d),_=e.ref(p.h()),v=p.C(1,(()=>{_.value=p.h()})),b=p.C(4,(()=>{n("scroll",p.B())})),y=p.C(8,(()=>{n("scrollEnd")})),S=e.computed((e=>{_.value;const t=p.v();return e&&q(e,t)?e:t})),g=e.computed((()=>_.value&&p.P())),x=e.computed((()=>_.value&&p.M())),B=e.computed((()=>_.value&&p.N()));return e.onMounted((()=>{u=!1,c((()=>{const e=e=>{h.re(e),m.se(e)};r.scrollRef?e(r.scrollRef):e(f.value.parentElement)}))})),e.onUnmounted((()=>{v(),b(),y(),h.ne(),m.ne()})),e.watch((()=>r.data.length),(e=>{p.H(5,[e,r.shift])})),e.watch((()=>r.startMargin),(e=>{p.H(6,e)}),{immediate:!0}),e.watch([B],(()=>{m.ae()}),{flush:"post"}),s({get scrollOffset(){return p.B()},get scrollSize(){return(e=>o(e.M(),e.p()))(p)},get viewportSize(){return p.p()},findStartIndex:p.S,findEndIndex:p.I,getItemOffset:p.j,getItemSize:p.T,scrollToIndex:m.ce,scrollTo:m.ie,scrollBy:m.le}),()=>{const t=r.as,o=r.item,[n,s]=S.value,i=x.value,c=[];function m(t){var n;const s=a.default({item:r.data[t],index:t})[0];return e.createVNode(E,{key:T(s,t),Y:_,U:p,D:h.oe,G:t,V:s,K:d,Z:u,ee:o,te:null===(n=r.itemProps)||void 0===n?void 0:n.call(r,{item:r.data[t],index:t})},null,8,["_rerender","_store","_resizer","_index","_children","_isHorizontal","_isSSR","_as","_itemProps"])}for(let e=n,t=s;e<=t;e++)c.push(m(e));if(r.keepMounted){const e=[],t=[];l(r.keepMounted).forEach((r=>{r<n&&e.push(m(r)),r>s&&t.push(m(r))})),c.unshift(...e),c.push(...t)}return e.createVNode(t,{ref:f,style:{overflowAnchor:"none",flex:"none",position:"relative",visibility:"hidden",width:d?i+"px":"100%",height:d?"100%":i+"px",pointerEvents:g.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}}}),R={data:{type:Array,required:!0},overscan:Number,itemSize:Number,shift:Boolean,horizontal:Boolean,ssrCount:Number,itemProps:Function,keepMounted:Array},M=/*#__PURE__*/e.defineComponent({props:R,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(P,{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},(r=n,"function"==typeof r||"[object Object]"===Object.prototype.toString.call(r)&&!e.isVNode(r)?n:{default:()=>[n],_:2}),8,["data","overscan","itemSize","itemProps","shift","ssrCount","horizontal","keepMounted","onScroll","onScrollEnd"])],4);var r}}}),N={data:{type:Array,required:!0},overscan:Number,itemSize:Number,shift:Boolean,horizontal:Boolean,as:{type:String,default:"div"},item:{type:String,default:"div"}},A=/*#__PURE__*/e.defineComponent({props:N,emits:["scroll","scrollEnd"],setup(r,{emit:o,slots:n,expose:s}){const l=r.horizontal,a=e.ref(),u=w(r.data.length,r.itemSize,r.overscan,void 0,0,!r.itemSize),d=((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.H(3,n)}));let l;return{re(t){const r=S(y(t)),o=()=>{e.H(4,r[n])};r.addEventListener("resize",o),o(),l=()=>{r.removeEventListener("resize",o)}},oe:(e,t)=>(s.set(e,t),i.W(e),()=>{s.delete(e),i.X(e)}),ne(){l&&l(),i.F()}}})(u,l),f=((e,t)=>{let r,o,n;const s=(e,t,r,o,n=0)=>{const i=o?"offsetLeft":"offsetTop",l=n+(o&&g()?r.innerWidth-e[i]-e.offsetWidth:e[i]),c=e.offsetParent;return e!==t&&c?s(c,t,r,o,l):l},l=async(o,s)=>{if(!r)return void c((()=>l(o,s)));n&&n();const i=()=>{let t;return[new Promise(((r,o)=>{t=r,n=o,$(e)&&I(o,150)})),e.C(2,(()=>{t&&t()}))]},a=S(y(r));if(s&&z()){for(;e.H(8,o()),e.O();){const[e,t]=i();try{await e}catch(e){return}finally{t()}}a.scroll({[t?"left":"top"]:k(o(),t),behavior:"smooth"})}else for(;;){const[r,n]=i();try{a.scroll({[t?"left":"top"]:k(o(),t)}),e.H(7),await r}catch(e){return}finally{n()}}};return{se(n){r=n;const i=t?"scrollX":"scrollY",l=y(n),c=S(l),a=l.body;o=O(e,c,t,(()=>k(c[i],t)),((r,o)=>{o?c.scroll({[t?"left":"top"]:e.B()+r}):c.scrollBy(t?r:0,t?0:r)}),(()=>s(n,a,c,t)))},ne(){o&&o.F(),r=void 0},ae:()=>{o&&o.L()},ce(o,{align:n,smooth:c,offset:a=0}={}){if(!r)return;if(o=i(o,0,e.q()-1),"nearest"===n){const t=e.j(o),r=e.B();if(t<r)n="start";else{if(!(t+e.T(o)>r+e.p()))return;n="end"}}const u=y(r),d=S(u),f=u.documentElement,p=()=>e.p()-(t?f.clientWidth:f.clientHeight);l((()=>a+s(r,u.body,d,t)+e.j(o)+("end"===n?e.T(o)-(e.p()-p()):"center"===n?(e.T(o)-(e.p()-p()))/2:0)),c)}}})(u,l),p=e.ref(u.h()),h=u.C(1,(()=>{p.value=u.h()})),m=u.C(4,(()=>{o("scroll",u.B())})),_=u.C(8,(()=>{o("scrollEnd")})),v=e.computed((e=>{p.value;const t=u.v();return e&&q(e,t)?e:t})),b=e.computed((()=>p.value&&u.P())),x=e.computed((()=>p.value&&u.M())),B=e.computed((()=>p.value&&u.N()));return e.onMounted((()=>{const e=a.value;e&&(d.re(e),f.se(e))})),e.onUnmounted((()=>{h(),m(),_(),d.ne(),f.ne()})),e.watch((()=>r.data.length),(e=>{u.H(5,[e,r.shift])})),e.watch([B],(()=>{f.ae()}),{flush:"post"}),s({findStartIndex:u.S,findEndIndex:u.I,scrollToIndex:f.ce}),()=>{const t=r.as,o=r.item,[s,i]=v.value,c=x.value,f=[];for(let t=s,c=i;t<=c;t++){const s=n.default({item:r.data[t],index:t})[0];f.push(e.createVNode(E,{key:T(s,t),Y:p,U:u,D:d.oe,G:t,V:s,K:l,ee:o},null,8,["_rerender","_store","_resizer","_index","_children","_isHorizontal","_as"]))}return e.createVNode(t,{ref:a,style:{overflowAnchor:"none",flex:"none",position:"relative",visibility:"hidden",width:l?c+"px":"100%",height:l?"100%":c+"px",pointerEvents:b.value?"none":void 0}},"function"==typeof(h=f)||"[object Object]"===Object.prototype.toString.call(h)&&!e.isVNode(h)?f:{default:()=>[f],_:2},8,["style"]);var h}}});exports.VList=M,exports.Virtualizer=P,exports.WindowVirtualizer=A;
2
2
  //# sourceMappingURL=index.js.map