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.
@@ -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 when scrolling stops.
59
+ * Callback invoked whenever scroll offset changes.
60
+ * @param offset Current scrollTop, or scrollLeft if horizontal: true.
53
61
  */
54
- scrollEnd: () => void;
62
+ scroll: (offset: number) => void;
55
63
  /**
56
- * Callback invoked when visible items range changes.
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
- rangeChange: (startIndex: number, endIndex: number) => void;
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