@pdanpdan/virtual-scroll 0.4.0 → 0.6.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/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require(`vue`)):typeof define==`function`&&define.amd?define([`exports`,`vue`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.VirtualScroll={},e.Vue))})(this,function(e,t){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var n=class{tree;values;constructor(e){this.tree=new Float64Array(e+1),this.values=new Float64Array(e)}update(e,t){if(!(e<0||e>=this.values.length))for(this.values[e]=this.values[e]+t,e++;e<this.tree.length;)this.tree[e]=this.tree[e]+t,e+=e&-e}query(e){let t=0;for(;e>0;)t+=this.tree[e]||0,e-=e&-e;return t}set(e,t){e<0||e>=this.values.length||(this.values[e]=t)}get length(){return this.values.length}get(e){return this.values[e]||0}getValues(){return this.values}findLowerBound(e){let t=0,n=this.tree.length,r=1<<Math.floor(Math.log2(n-1));for(;r>0;){let i=t+r;if(i<n){let n=this.tree[i]||0;n<=e&&(t=i,e-=n)}r>>=1}return t}rebuild(){this.tree.fill(0);for(let e=0;e<this.values.length;e++)this.tree[e+1]=this.values[e]||0;for(let e=1;e<this.tree.length;e++){let t=e+(e&-e);t<this.tree.length&&(this.tree[t]=this.tree[t]+this.tree[e])}}resize(e){if(e===this.values.length)return;let t=new Float64Array(e);t.set(this.values.subarray(0,Math.min(e,this.values.length))),this.values=t,this.tree=new Float64Array(e+1),this.rebuild()}shift(e){if(e===0)return;let t=this.values.length,n=new Float64Array(t);e>0?n.set(this.values.subarray(0,Math.min(t-e,this.values.length)),e):n.set(this.values.subarray(-e)),this.values=n,this.rebuild()}};function r(e){return e===null||typeof window<`u`&&e===window}function i(e){return!!e&&typeof e==`object`&&`tagName`in e&&e.tagName===`BODY`}function a(e){return r(e)||i(e)}function o(e){return!!e&&`getBoundingClientRect`in e}function s(e){return!!e&&`scrollLeft`in e}function c(e){return typeof e==`object`&&!!e&&(`align`in e||`behavior`in e||`isCorrection`in e)}function l(e,t){return typeof e==`object`&&e?e.x||0:(t===`horizontal`||t===`both`)&&e||0}function u(e,t){return typeof e==`object`&&e?e.y||0:(t===`vertical`||t===`both`)&&e||0}function d(e){let{rowIndex:t,colIndex:n,options:r,itemsLength:i,columnCount:a,direction:o,usableWidth:s,usableHeight:l,totalWidth:u,totalHeight:d,gap:f,columnGap:p,fixedSize:m,fixedWidth:h,relativeScrollX:g,relativeScrollY:_,getItemSizeY:v,getItemSizeX:y,getItemQueryY:b,getItemQueryX:x,getColumnSize:S,getColumnQuery:C,stickyIndices:w}=e,T;T=c(r)?r.align:r;let E=(typeof T==`object`?T.x:T)||`auto`,D=(typeof T==`object`?T.y:T)||`auto`,O=o===`vertical`||o===`both`,k=o===`horizontal`||o===`both`,A=g,j=_,M=0,N=0,P=E===`auto`?`auto`:E,F=D===`auto`?`auto`:D;if(t!=null){let e=0;if(O&&w&&w.length>0){let n,r=0,i=w.length-1;for(;r<=i;){let e=r+i>>>1;w[e]<t?(n=w[e],r=e+1):i=e-1}n!==void 0&&(e=m===null?v(n)-f:m)}let n=0;if(t>=i?(n=d,N=0):(n=m===null?b(t):t*(m+f),N=m===null?v(t)-f:m),D===`start`)j=n-e;else if(D===`center`)j=n-(l-N)/2;else if(D===`end`)j=n-(l-N);else if(!(N<=l-e?n>=_+e-.5&&n+N<=_+l+.5:n<=_+e+.5&&n+N>=_+l-.5)){let t=n-e,r=n-(l-N);N<=l-e?n<_+e?(j=t,F=`start`):(j=r,F=`end`):Math.abs(t-_)<Math.abs(r-_)?(j=t,F=`start`):(j=r,F=`end`)}}if(n!=null){let e=0;if(k&&w&&w.length>0&&(o===`horizontal`||o===`both`)){let t,r=0,i=w.length-1;for(;r<=i;){let e=r+i>>>1;w[e]<n?(t=w[e],r=e+1):i=e-1}t!==void 0&&(e=o===`horizontal`?m===null?y(t)-p:m:h===null?S(t)-p:h)}let t=0;if(n>=a&&a>0?(t=u,M=0):o===`horizontal`?(t=m===null?x(n):n*(m+p),M=m===null?y(n)-p:m):(t=C(n),M=S(n)-p),E===`start`)A=t-e;else if(E===`center`)A=t-(s-M)/2;else if(E===`end`)A=t-(s-M);else if(!(M<=s-e?t>=g+e-.5&&t+M<=g+s+.5:t<=g+e+.5&&t+M>=g+s-.5)){let n=t-e,r=t-(s-M);M<=s-e?t<g+e?(A=n,P=`start`):(A=r,P=`end`):Math.abs(n-g)<Math.abs(r-g)?(A=n,P=`start`):(A=r,P=`end`)}}return A=Math.max(0,Math.min(A,Math.max(0,u-s))),j=Math.max(0,Math.min(j,Math.max(0,d-l))),{targetX:A,targetY:j,itemWidth:M,itemHeight:N,effectiveAlignX:P,effectiveAlignY:F}}function f(e){let{direction:t,relativeScrollX:n,relativeScrollY:r,usableWidth:i,usableHeight:a,itemsLength:o,bufferBefore:s,bufferAfter:c,gap:l,columnGap:u,fixedSize:d,findLowerBoundY:f,findLowerBoundX:p,queryY:m,queryX:h}=e,g=t===`vertical`||t===`both`,_=0,v=o;if(g)if(d!==null)_=Math.floor(r/(d+l)),v=Math.ceil((r+a)/(d+l));else{_=f(r);let e=r+a;v=f(e),v<o&&m(v)<e&&v++}else if(d!==null)_=Math.floor(n/(d+u)),v=Math.ceil((n+i)/(d+u));else{_=p(n);let e=n+i;v=p(e),v<o&&h(v)<e&&v++}return{start:Math.max(0,_-s),end:Math.min(o,v+c)}}function p(e){let{columnCount:t,relativeScrollX:n,usableWidth:r,colBuffer:i,fixedWidth:a,columnGap:o,findLowerBound:s,query:c,totalColsQuery:l}=e;if(!t)return{start:0,end:0,padStart:0,padEnd:0};let u=0,d=t;if(a!==null)u=Math.floor(n/(a+o)),d=Math.ceil((n+r)/(a+o));else{u=s(n);let e=c(u),i=u;for(;i<t&&e<n+r;)e=c(++i);d=i}let f=Math.max(0,u-i),p=Math.min(t,d+i),m=a===null?c(f):f*(a+o),h=a===null?Math.max(0,l()-o):t*(a+o)-o,g=a===null?c(p)-(p>=t?o:0):p*(a+o)-(p>=t?o:0);return{start:f,end:p,padStart:m,padEnd:Math.max(0,h-g)}}function m(e){let{index:t,isSticky:n,direction:r,relativeScrollX:i,relativeScrollY:a,originalX:o,originalY:s,width:c,height:l,stickyIndices:u,fixedSize:d,fixedWidth:f,gap:p,columnGap:m,getItemQueryY:h,getItemQueryX:g}=e,_=!1,v={x:0,y:0};if(!n)return{isStickyActive:_,stickyOffset:v};if((r===`vertical`||r===`both`)&&a>s){let e,n=0,r=u.length-1;for(;n<=r;){let i=n+r>>>1;u[i]>t?(e=u[i],r=i-1):n=i+1}if(e!==void 0){let t=d===null?h(e):e*(d+p);a>=t?_=!1:(_=!0,v.y=Math.max(0,Math.min(l,t-a))-l)}else _=!0}if((r===`horizontal`||r===`both`&&!_)&&i>o){let e,n=0,a=u.length-1;for(;n<=a;){let r=n+a>>>1;u[r]>t?(e=u[r],a=r-1):n=r+1}if(e!==void 0){let t=r===`horizontal`?d===null?g(e):e*(d+m):f===null?g(e):e*(f+m);i>=t?_=!1:(_=!0,v.x=Math.max(0,Math.min(c,t-i))-c)}else _=!0}return{isStickyActive:_,stickyOffset:v}}function h(e){let{index:t,direction:n,fixedSize:r,gap:i,columnGap:a,usableWidth:o,usableHeight:s,totalWidth:c,queryY:l,queryX:u,getSizeY:d,getSizeX:f}=e,p=0,m=0,h=0,g=0;return n===`horizontal`?(p=r===null?u(t):t*(r+a),h=r===null?f(t)-a:r,g=s):(m=(n===`vertical`||n===`both`)&&r!==null?t*(r+i):l(t),g=r===null?d(t)-i:r,h=n===`both`?c:o),{height:g,width:h,x:p,y:m}}function g(e){let{item:t,direction:n,itemSize:r,containerTag:i,paddingStartX:a,paddingStartY:o,isHydrated:s}=e,c=n===`vertical`,l=n===`horizontal`,u=n===`both`,d=r==null||r===0,f={blockSize:l?`100%`:d?`auto`:`${t.size.height}px`};return c&&i===`table`?f.minInlineSize=`100%`:f.inlineSize=c?`100%`:d?`auto`:`${t.size.width}px`,d&&(c||(f.minInlineSize=`1px`),l||(f.minBlockSize=`1px`)),s&&(t.isStickyActive?((c||u)&&(f.insetBlockStart=`${o}px`),(l||u)&&(f.insetInlineStart=`${a}px`),f.transform=`translate(${t.stickyOffset.x}px, ${t.stickyOffset.y}px)`):f.transform=`translate(${t.offset.x}px, ${t.offset.y}px)`),f}function _(e){let{direction:t,itemsLength:n,columnCount:r,fixedSize:i,fixedWidth:a,gap:o,columnGap:s,usableWidth:c,usableHeight:l,queryY:u,queryX:d,queryColumn:f}=e,p=0,m=0;return t===`both`?(r>0&&(p=a===null?Math.max(0,f(r)-s):r*(a+s)-s),m=i===null?Math.max(0,u(n)-(n>0?o:0)):Math.max(0,n*(i+o)-(n>0?o:0)),p=Math.max(p,c),m=Math.max(m,l)):t===`horizontal`?(p=i===null?Math.max(0,d(n)-(n>0?s:0)):Math.max(0,n*(i+s)-(n>0?s:0)),m=l):(p=c,m=i===null?Math.max(0,u(n)-(n>0?o:0)):Math.max(0,n*(i+o)-(n>0?o:0))),{width:p,height:m}}function v(e){let r=(0,t.ref)(0),i=(0,t.ref)(0),a=(0,t.ref)(!1),g=(0,t.ref)(!1),v=(0,t.ref)(!1),y=(0,t.ref)(!1),b=(0,t.ref)(0),x=(0,t.ref)(0),S=(0,t.reactive)({x:0,y:0}),C,w=(0,t.ref)(!1),T=new n(e.value.items?.length||0),E=new n(e.value.items?.length||0),D=new n(e.value.columnCount||0),O=(0,t.ref)(0),k=new Uint8Array,A=new Uint8Array,j=new Uint8Array,M=(0,t.ref)(null),N=(0,t.ref)(!1),P=[],F=(0,t.computed)(()=>e.value.itemSize===void 0||e.value.itemSize===null||e.value.itemSize===0),I=(0,t.computed)(()=>e.value.columnWidth===void 0||e.value.columnWidth===null||e.value.columnWidth===0),L=(0,t.computed)(()=>typeof e.value.itemSize==`number`&&e.value.itemSize>0?e.value.itemSize:null),R=(0,t.computed)(()=>typeof e.value.columnWidth==`number`&&e.value.columnWidth>0?e.value.columnWidth:null),z=(0,t.computed)(()=>e.value.defaultItemSize||L.value||40),B=(0,t.computed)(()=>[...e.value.stickyIndices||[]].sort((e,t)=>e-t)),ee=(0,t.computed)(()=>new Set(B.value)),V=(0,t.computed)(()=>l(e.value.scrollPaddingStart,e.value.direction)),te=(0,t.computed)(()=>l(e.value.scrollPaddingEnd,e.value.direction)),H=(0,t.computed)(()=>u(e.value.scrollPaddingStart,e.value.direction)),U=(0,t.computed)(()=>u(e.value.scrollPaddingEnd,e.value.direction)),W=(0,t.computed)(()=>{let t=e.value.direction===`horizontal`||e.value.direction===`both`;return b.value-(t?V.value+te.value:0)}),G=(0,t.computed)(()=>{let t=e.value.direction===`vertical`||e.value.direction===`both`;return x.value-(t?H.value+U.value:0)}),K=(0,t.computed)(()=>{if(O.value,!g.value&&e.value.ssrRange&&!y.value){let{start:t=0,end:n=0,colStart:r=0,colEnd:i=0}=e.value.ssrRange,a=e.value.columnCount||0;if(e.value.direction===`both`){if(a<=0)return 0;let t=i||a,n=D.query(t)-D.query(r);return Math.max(0,n-(t>r&&e.value.columnGap||0))}if(e.value.direction===`horizontal`){if(L.value!==null){let r=n-t;return Math.max(0,r*(L.value+(e.value.columnGap||0))-(r>0&&e.value.columnGap||0))}let r=T.query(n)-T.query(t);return Math.max(0,r-(n>t&&e.value.columnGap||0))}}return _({direction:e.value.direction||`vertical`,itemsLength:e.value.items.length,columnCount:e.value.columnCount||0,fixedSize:L.value,fixedWidth:R.value,gap:e.value.gap||0,columnGap:e.value.columnGap||0,usableWidth:W.value,usableHeight:G.value,queryY:e=>E.query(e),queryX:e=>T.query(e),queryColumn:e=>D.query(e)}).width}),q=(0,t.computed)(()=>{if(O.value,!g.value&&e.value.ssrRange&&!y.value){let{start:t,end:n}=e.value.ssrRange;if(e.value.direction===`vertical`||e.value.direction===`both`){if(L.value!==null){let r=n-t;return Math.max(0,r*(L.value+(e.value.gap||0))-(r>0&&e.value.gap||0))}let r=E.query(n)-E.query(t);return Math.max(0,r-(n>t&&e.value.gap||0))}}return _({direction:e.value.direction||`vertical`,itemsLength:e.value.items.length,columnCount:e.value.columnCount||0,fixedSize:L.value,fixedWidth:R.value,gap:e.value.gap||0,columnGap:e.value.columnGap||0,usableWidth:W.value,usableHeight:G.value,queryY:e=>E.query(e),queryX:e=>T.query(e),queryColumn:e=>D.query(e)}).height}),J=(0,t.computed)(()=>{let t=e.value.direction===`horizontal`||e.value.direction===`both`?l(e.value.scrollPaddingStart,e.value.direction):0;return Math.max(0,r.value+t-S.x)}),Y=(0,t.computed)(()=>{let t=e.value.direction===`vertical`||e.value.direction===`both`?u(e.value.scrollPaddingStart,e.value.direction):0;return Math.max(0,i.value+t-S.y)}),ne=t=>{O.value;let n=e.value.columnWidth;if(typeof n==`number`&&n>0)return n;if(Array.isArray(n)&&n.length>0){let r=n[t%n.length];return r!=null&&r>0?r:e.value.defaultColumnWidth||100}return typeof n==`function`?n(t):D.get(t)||e.value.defaultColumnWidth||100},X=(t,n,a)=>{let o=typeof a==`object`&&a&&`isCorrection`in a?a.isCorrection:!1,l=e.value.container||window,u=e.value.direction===`vertical`||e.value.direction===`both`,f=e.value.direction===`horizontal`||e.value.direction===`both`,{targetX:p,targetY:m,effectiveAlignX:h,effectiveAlignY:g}=d({rowIndex:t,colIndex:n,options:a,itemsLength:e.value.items.length,columnCount:e.value.columnCount||0,direction:e.value.direction||`vertical`,usableWidth:W.value,usableHeight:G.value,totalWidth:K.value,totalHeight:q.value,gap:e.value.gap||0,columnGap:e.value.columnGap||0,fixedSize:L.value,fixedWidth:R.value,relativeScrollX:J.value,relativeScrollY:Y.value,getItemSizeY:e=>E.get(e),getItemSizeX:e=>T.get(e),getItemQueryY:e=>E.query(e),getItemQueryX:e=>T.query(e),getColumnSize:e=>D.get(e),getColumnQuery:e=>D.query(e),stickyIndices:B.value});if(!o){let e=c(a)?a.behavior:void 0;M.value={rowIndex:t,colIndex:n,options:{align:{x:h,y:g},...e==null?{}:{behavior:e}}}}let _=p+S.x-(f?V.value:0),v=m+S.y-(u?H.value:0),y;c(a)&&(y=a.behavior);let b=o?`auto`:y||`smooth`;if(w.value=!0,typeof window<`u`&&l===window)window.scrollTo({left:n==null?void 0:Math.max(0,_),top:t==null?void 0:Math.max(0,v),behavior:b});else if(s(l)){let e={behavior:b};n!=null&&(e.left=Math.max(0,_)),t!=null&&(e.top=Math.max(0,v)),typeof l.scrollTo==`function`?l.scrollTo(e):(e.left!==void 0&&(l.scrollLeft=e.left),e.top!==void 0&&(l.scrollTop=e.top))}(b===`auto`||b===void 0)&&(n!=null&&(r.value=Math.max(0,_)),t!=null&&(i.value=Math.max(0,v)))},Z=(t,n,a)=>{let o=e.value.container||window;w.value=!0;let c=e.value.direction===`vertical`||e.value.direction===`both`,l=e.value.direction===`horizontal`||e.value.direction===`both`,u=t==null?null:l?Math.max(0,Math.min(t,Math.max(0,K.value-W.value))):Math.max(0,t),d=n==null?null:c?Math.max(0,Math.min(n,Math.max(0,q.value-G.value))):Math.max(0,n),f=typeof window<`u`&&o===window?window.scrollX:o.scrollLeft,p=typeof window<`u`&&o===window?window.scrollY:o.scrollTop,m=u===null?f:u+S.x-(l?V.value:0),h=d===null?p:d+S.y-(c?H.value:0);if(typeof window<`u`&&o===window)window.scrollTo({left:t==null?void 0:m,top:n==null?void 0:h,behavior:a?.behavior||`auto`});else if(s(o)){let e={behavior:a?.behavior||`auto`};t!=null&&(e.left=m),n!=null&&(e.top=h),typeof o.scrollTo==`function`?o.scrollTo(e):(e.left!==void 0&&(o.scrollLeft=e.left),e.top!==void 0&&(o.scrollTop=e.top))}(a?.behavior===`auto`||a?.behavior===void 0)&&(t!=null&&(r.value=m),n!=null&&(i.value=h))},re=()=>{let n=e.value.items,r=n.length,i=e.value.columnCount||0;if(T.resize(r),E.resize(r),D.resize(i),A.length!==r){let e=new Uint8Array(r);e.set(A.subarray(0,Math.min(r,A.length))),A=e}if(j.length!==r){let e=new Uint8Array(r);e.set(j.subarray(0,Math.min(r,j.length))),j=e}if(k.length!==i){let e=new Uint8Array(i);e.set(k.subarray(0,Math.min(i,k.length))),k=e}let a=0;if(e.value.restoreScrollOnPrepend&&P.length>0&&r>P.length){let e=P[0];if(e!==void 0){for(let t=1;t<=r-P.length;t++)if(n[t]===e){a=t;break}}}if(a>0){T.shift(a),E.shift(a),M.value&&M.value.rowIndex!==null&&M.value.rowIndex!==void 0&&(M.value.rowIndex+=a);let i=new Uint8Array(r),o=new Uint8Array(r);i.set(A.subarray(0,Math.min(r-a,A.length)),a),o.set(j.subarray(0,Math.min(r-a,j.length)),a),A=i,j=o;let s=e.value.gap||0,c=e.value.columnGap||0,l=0,u=0;for(let t=0;t<a;t++){let r=typeof e.value.itemSize==`function`?e.value.itemSize(n[t],t):z.value;e.value.direction===`horizontal`?l+=r+c:u+=r+s}(l>0||u>0)&&(0,t.nextTick)(()=>{Z(l>0?J.value+l:null,u>0?Y.value+u:null,{behavior:`auto`})})}if(i>0){let t=e.value.columnGap||0,n=!1,r=e.value.columnWidth;for(let a=0;a<i;a++){let i=D.get(a),o=k[a]===1;if(!I.value||!o&&i===0){let o=0;o=typeof r==`number`&&r>0?r:Array.isArray(r)&&r.length>0?r[a%r.length]||e.value.defaultColumnWidth||100:typeof r==`function`?r(a):e.value.defaultColumnWidth||100;let s=o+t;Math.abs(i-s)>.5?(D.set(a,s),k[a]=I.value?0:1,n=!0):I.value||(k[a]=1)}}n&&D.rebuild()}let o=e.value.gap||0,s=e.value.columnGap||0,c=!1;for(let t=0;t<r;t++){let n=e.value.items[t],r=T.get(t),i=E.get(t),a=e.value.direction===`vertical`,l=e.value.direction===`horizontal`,u=e.value.direction===`both`,d=A[t]===1,f=j[t]===1;if(l){if(!F.value||!d&&r===0){let i=(typeof e.value.itemSize==`function`?e.value.itemSize(n,t):z.value)+s;Math.abs(r-i)>.5?(T.set(t,i),A[t]=F.value?0:1,c=!0):F.value||(A[t]=1)}}else r!==0&&(T.set(t,0),A[t]=0,c=!0);if(a||u){if(!F.value||!f&&i===0){let r=(typeof e.value.itemSize==`function`?e.value.itemSize(n,t):z.value)+o;Math.abs(i-r)>.5?(E.set(t,r),j[t]=F.value?0:1,c=!0):F.value||(j[t]=1)}}else i!==0&&(E.set(t,0),j[t]=0,c=!0)}c&&(T.rebuild(),E.rebuild()),P=[...n],N.value=!0,O.value++},Q=()=>{if(e.value.hostElement&&typeof window<`u`){let t=e.value.hostElement.getBoundingClientRect(),n=e.value.container||window,r=0,i=0;if(n===window)r=t.left+window.scrollX,i=t.top+window.scrollY;else if(n===e.value.hostElement)r=0,i=0;else if(o(n)){let e=n.getBoundingClientRect();r=t.left-e.left+n.scrollLeft,i=t.top-e.top+n.scrollTop}(Math.abs(S.x-r)>.1||Math.abs(S.y-i)>.1)&&(S.x=r,S.y=i)}};(0,t.watch)([()=>e.value.items,()=>e.value.items.length,()=>e.value.direction,()=>e.value.columnCount,()=>e.value.columnWidth,()=>e.value.itemSize,()=>e.value.gap,()=>e.value.columnGap,()=>e.value.defaultItemSize,()=>e.value.defaultColumnWidth],re,{immediate:!0}),(0,t.watch)(()=>[e.value.container,e.value.hostElement],()=>{Q()});let ie=(0,t.computed)(()=>{if(O.value,(!g.value||v.value)&&e.value.ssrRange)return{start:e.value.ssrRange.start,end:e.value.ssrRange.end};let t=e.value.ssrRange&&!a.value?0:e.value.bufferBefore??5,n=e.value.bufferAfter??5;return f({direction:e.value.direction||`vertical`,relativeScrollX:J.value,relativeScrollY:Y.value,usableWidth:W.value,usableHeight:G.value,itemsLength:e.value.items.length,bufferBefore:t,bufferAfter:n,gap:e.value.gap||0,columnGap:e.value.columnGap||0,fixedSize:L.value,findLowerBoundY:e=>E.findLowerBound(e),findLowerBoundX:e=>T.findLowerBound(e),queryY:e=>E.query(e),queryX:e=>T.query(e)})}),ae=(0,t.computed)(()=>{O.value;let t=L.value,n=e.value.gap||0,r=e.value.columnGap||0;return e.value.direction===`horizontal`?t===null?T.findLowerBound(J.value):Math.floor(J.value/(t+r)):t===null?E.findLowerBound(Y.value):Math.floor(Y.value/(t+n))}),oe=[],se=(0,t.computed)(()=>{O.value;let{start:t,end:n}=ie.value,r=[],i=L.value,a=e.value.gap||0,o=e.value.columnGap||0,s=B.value,c=ee.value,l=new Set;for(let e=t;e<n;e++)l.add(e);if(g.value||!e.value.ssrRange){let e=ae.value,r,i=0,a=s.length-1;for(;i<=a;){let t=i+a>>>1;s[t]<e?(r=s[t],i=t+1):a=t-1}r!==void 0&&l.add(r);let o=0,c=s.length-1,u=-1;for(;o<=c;){let e=o+c>>>1;s[e]>=t?(u=e,c=e-1):o=e+1}if(u!==-1)for(let e=u;e<s.length;e++){let t=s[e];if(t>=n)break;l.add(t)}}let u=Array.from(l).sort((e,t)=>e-t),d=e.value.ssrRange?.start||0,f=e.value.ssrRange?.colStart||0,p=0,_=0;!g.value&&e.value.ssrRange&&(_=e.value.direction===`vertical`||e.value.direction===`both`?i===null?E.query(d):d*(i+a):0,e.value.direction===`horizontal`?p=i===null?T.query(f):f*(i+o):e.value.direction===`both`&&(p=D.query(f)));let v=new Map(oe.map(e=>[e.index,e]));for(let t of u){let n=e.value.items[t];if(n===void 0)continue;let{x:i,y:a,width:o,height:l}=h({index:t,direction:e.value.direction||`vertical`,fixedSize:L.value,gap:e.value.gap||0,columnGap:e.value.columnGap||0,usableWidth:W.value,usableHeight:G.value,totalWidth:K.value,queryY:e=>E.query(e),queryX:e=>T.query(e),getSizeY:e=>E.get(e),getSizeX:e=>T.get(e)}),u=c.has(t),d=i,f=a,{isStickyActive:g,stickyOffset:y}=m({index:t,isSticky:u,direction:e.value.direction||`vertical`,relativeScrollX:J.value,relativeScrollY:Y.value,originalX:d,originalY:f,width:o,height:l,stickyIndices:s,fixedSize:L.value,fixedWidth:R.value,gap:e.value.gap||0,columnGap:e.value.columnGap||0,getItemQueryY:e=>E.query(e),getItemQueryX:e=>T.query(e)}),b=d-p,x=f-_,S=v.get(t);S&&S.item===n&&S.offset.x===b&&S.offset.y===x&&S.size.width===o&&S.size.height===l&&S.isSticky===u&&S.isStickyActive===g&&S.stickyOffset.x===y.x&&S.stickyOffset.y===y.y?r.push(S):r.push({item:n,index:t,offset:{x:b,y:x},size:{width:o,height:l},originalX:d,originalY:f,isSticky:u,isStickyActive:g,stickyOffset:y})}return oe=r,r}),ce=(0,t.computed)(()=>{O.value;let t=e.value.columnCount||0;if(!t)return{start:0,end:0,padStart:0,padEnd:0};if((!g.value||v.value)&&e.value.ssrRange){let{colStart:n=0,colEnd:r=0}=e.value.ssrRange;return{start:Math.max(0,n),end:Math.min(t,r||t),padStart:0,padEnd:0}}let n=e.value.ssrRange&&!a.value?0:2;return p({columnCount:t,relativeScrollX:J.value,usableWidth:W.value,colBuffer:n,fixedWidth:R.value,columnGap:e.value.columnGap||0,findLowerBound:e=>D.findLowerBound(e),query:e=>D.query(e),totalColsQuery:()=>D.query(t)})}),le=(0,t.computed)(()=>{O.value;let t=L.value,n=e.value.columnGap||0,r=0;return e.value.direction===`horizontal`?r=t===null?T.findLowerBound(J.value):Math.floor(J.value/(t+n)):e.value.direction===`both`&&(r=D.findLowerBound(J.value)),{items:se.value,currentIndex:ae.value,currentColIndex:r,scrollOffset:{x:J.value,y:Y.value},viewportSize:{width:b.value,height:x.value},totalSize:{width:K.value,height:q.value},isScrolling:a.value,isProgrammaticScroll:w.value,range:ie.value,columnRange:ce.value}}),ue=()=>{w.value=!1,M.value=null},$=e=>{let t=e.target;typeof window>`u`||(t===window||t===document?(r.value=window.scrollX,i.value=window.scrollY,b.value=document.documentElement.clientWidth,x.value=document.documentElement.clientHeight):s(t)&&(r.value=t.scrollLeft,i.value=t.scrollTop,b.value=t.clientWidth,x.value=t.clientHeight),a.value||=(w.value||(M.value=null),!0),clearTimeout(C),C=setTimeout(()=>{a.value=!1,w.value=!1},250))},de=t=>{let n=!1,r=0,i=0,a=e.value.gap||0,o=e.value.columnGap||0,s=J.value,c=Y.value,l=e.value.direction===`horizontal`?L.value===null?T.findLowerBound(s):Math.floor(s/(L.value+o)):L.value===null?E.findLowerBound(c):Math.floor(c/(L.value+a)),u=e.value.direction===`both`?D.findLowerBound(s):e.value.direction===`horizontal`?l:0,d=e.value.direction===`horizontal`,f=e.value.direction===`vertical`,p=e.value.direction===`both`,m=new Set,h=new Set;for(let{index:s,inlineSize:c,blockSize:g,element:_}of t){if(c<=0&&g<=0)continue;let t=F.value||typeof e.value.itemSize==`function`;if(s>=0&&!m.has(s)&&t&&g>0){if(m.add(s),d&&c>0){let e=T.get(s),t=c+o;if(!A[s]||Math.abs(t-e)>.1){let i=t-e;T.update(s,i),A[s]=1,n=!0,s<l&&(r+=i)}}if(f||p){let e=E.get(s),t=g+a;if(!j[s]||Math.abs(t-e)>.1){let r=t-e;E.update(s,r),j[s]=1,n=!0,s<l&&(i+=r)}}}let v=I.value||typeof e.value.columnWidth==`function`;if(p&&_&&e.value.columnCount&&v&&(c>0||_.dataset.colIndex===void 0)){let t=_.dataset.colIndex;if(t!=null){let i=Number.parseInt(t,10);if(i>=0&&i<(e.value.columnCount||0)&&!h.has(i)){h.add(i);let e=D.get(i),t=c+o;if(!k[i]||Math.abs(e-t)>.1){let a=t-e;Math.abs(a)>.1&&(D.update(i,a),n=!0,i<u&&(r+=a)),k[i]=1}}}else{let t=_.dataset.colIndex===void 0?Array.from(_.querySelectorAll(`[data-col-index]`)):[_];for(let i of t){let t=Number.parseInt(i.dataset.colIndex,10);if(t>=0&&t<(e.value.columnCount||0)&&!h.has(t)){h.add(t);let e=i.getBoundingClientRect().width,a=D.get(t),s=e+o;if(!k[t]||Math.abs(a-s)>.1){let e=s-a;Math.abs(e)>.1&&(D.update(t,e),n=!0,t<u&&(r+=e)),k[t]=1}}}}}}n&&(O.value++,!(M.value!==null||w.value)&&(r!==0||i!==0)&&Z(r===0?null:s+r,i===0?null:c+i,{behavior:`auto`}))},fe=(e,t,n,r)=>{de([{index:e,inlineSize:t,blockSize:n,element:r}])},pe=()=>{if(M.value&&!v.value){let{rowIndex:t,colIndex:n,options:r}=M.value;if(c(r)&&r.behavior===`smooth`&&a.value)return;let{targetX:i,targetY:o}=d({rowIndex:t,colIndex:n,options:r,itemsLength:e.value.items.length,columnCount:e.value.columnCount||0,direction:e.value.direction||`vertical`,usableWidth:W.value,usableHeight:G.value,totalWidth:K.value,totalHeight:q.value,gap:e.value.gap||0,columnGap:e.value.columnGap||0,fixedSize:L.value,fixedWidth:R.value,relativeScrollX:J.value,relativeScrollY:Y.value,getItemSizeY:e=>E.get(e),getItemSizeX:e=>T.get(e),getItemQueryY:e=>E.query(e),getItemQueryX:e=>T.query(e),getColumnSize:e=>D.get(e),getColumnQuery:e=>D.query(e),stickyIndices:B.value}),s=n==null||Math.abs(J.value-i)<1,l=t==null||Math.abs(Y.value-o)<1,u=n==null||n===void 0||k[n]===1,f=t==null||t===void 0||j[t]===1;s&&l?u&&f&&(M.value=null):X(t,n,c(r)?{...r,isCorrection:!0}:{align:r,isCorrection:!0})}};(0,t.watch)([O,b,x],pe),(0,t.watch)(a,e=>{e||pe()});let me=null,he=e=>{if(!e||typeof window>`u`)return;let t=e===window?document:e;if(t.addEventListener(`scroll`,$,{passive:!0}),e===window){b.value=document.documentElement.clientWidth,x.value=document.documentElement.clientHeight,r.value=window.scrollX,i.value=window.scrollY;let e=()=>{b.value=document.documentElement.clientWidth,x.value=document.documentElement.clientHeight,Q()};return window.addEventListener(`resize`,e),()=>{t.removeEventListener(`scroll`,$),window.removeEventListener(`resize`,e)}}else return b.value=e.clientWidth,x.value=e.clientHeight,r.value=e.scrollLeft,i.value=e.scrollTop,me=new ResizeObserver(t=>{for(let n of t)n.target===e&&(b.value=e.clientWidth,x.value=e.clientHeight,Q())}),me.observe(e),()=>{t.removeEventListener(`scroll`,$),me?.disconnect()}},ge;return(0,t.getCurrentInstance)()&&((0,t.onMounted)(()=>{y.value=!0,(0,t.watch)(()=>e.value.container,e=>{ge?.(),ge=he(e||null)},{immediate:!0}),Q(),e.value.ssrRange||e.value.initialScrollIndex!==void 0?(0,t.nextTick)(()=>{Q();let n=e.value.initialScrollIndex===void 0?e.value.ssrRange?.start:e.value.initialScrollIndex,r=e.value.initialScrollAlign||`start`;n!=null&&X(n,e.value.ssrRange?.colStart,{align:r,behavior:`auto`}),g.value=!0,v.value=!0,(0,t.nextTick)(()=>{v.value=!1})}):g.value=!0}),(0,t.onUnmounted)(()=>{ge?.()})),{renderedItems:se,totalWidth:K,totalHeight:q,scrollDetails:le,scrollToIndex:X,scrollToOffset:Z,stopProgrammaticScroll:ue,updateItemSize:fe,updateItemSizes:de,updateHostOffset:Q,columnRange:ce,getColumnWidth:ne,refresh:()=>{T.resize(0),E.resize(0),D.resize(0),k.fill(0),A.fill(0),j.fill(0),re()},isHydrated:g}}var y={key:0,class:`virtual-scroll-debug-info`},b=((e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n})((0,t.defineComponent)({__name:`VirtualScroll`,props:{items:{},itemSize:{},direction:{default:`vertical`},bufferBefore:{default:5},bufferAfter:{default:5},container:{},ssrRange:{},columnCount:{default:0},columnWidth:{},containerTag:{default:`div`},wrapperTag:{default:`div`},itemTag:{default:`div`},scrollPaddingStart:{default:0},scrollPaddingEnd:{default:0},stickyHeader:{type:Boolean,default:!1},stickyFooter:{type:Boolean,default:!1},gap:{default:0},columnGap:{default:0},stickyIndices:{default:()=>[]},loadDistance:{default:200},loading:{type:Boolean,default:!1},restoreScrollOnPrepend:{type:Boolean,default:!1},initialScrollIndex:{},initialScrollAlign:{},defaultItemSize:{},defaultColumnWidth:{},debug:{type:Boolean,default:!1}},emits:[`scroll`,`load`,`visibleRangeChange`],setup(e,{expose:n,emit:r}){let i=e,o=r,s=(0,t.useSlots)(),c=(0,t.ref)(null),l=(0,t.ref)(null),u=(0,t.ref)(null),d=(0,t.ref)(null),f=new Map,p=(0,t.ref)(0),m=(0,t.ref)(0),h=(0,t.computed)(()=>{let e=i.container===void 0?c.value:i.container;return e===c.value||typeof window<`u`&&(e===window||e===null)}),_=(0,t.computed)(()=>{let e=i.scrollPaddingStart,t=i.scrollPaddingEnd;i.items.length;let n=typeof e==`object`?e.x||0:(i.direction===`horizontal`||i.direction===`both`)&&e||0,r=typeof e==`object`?e.y||0:(i.direction===`vertical`||i.direction===`both`)&&e||0,a=typeof t==`object`?t.x||0:(i.direction===`horizontal`||i.direction===`both`)&&t||0,o=typeof t==`object`?t.y||0:(i.direction===`vertical`||i.direction===`both`)&&t||0;return{items:i.items,itemSize:i.itemSize,direction:i.direction,bufferBefore:i.bufferBefore,bufferAfter:i.bufferAfter,container:i.container===void 0?c.value:i.container,hostElement:l.value,ssrRange:i.ssrRange,columnCount:i.columnCount,columnWidth:i.columnWidth,scrollPaddingStart:{x:n,y:r+(i.stickyHeader&&h.value?p.value:0)},scrollPaddingEnd:{x:a,y:o+(i.stickyFooter&&h.value?m.value:0)},gap:i.gap,columnGap:i.columnGap,stickyIndices:i.stickyIndices,loadDistance:i.loadDistance,loading:i.loading,restoreScrollOnPrepend:i.restoreScrollOnPrepend,initialScrollIndex:i.initialScrollIndex,initialScrollAlign:i.initialScrollAlign,defaultItemSize:i.defaultItemSize,defaultColumnWidth:i.defaultColumnWidth,debug:i.debug}}),{isHydrated:b,columnRange:x,renderedItems:S,scrollDetails:C,totalHeight:w,totalWidth:T,getColumnWidth:E,scrollToIndex:D,scrollToOffset:O,updateHostOffset:k,updateItemSizes:A,refresh:j,stopProgrammaticScroll:M}=v(_);function N(){j(),(0,t.nextTick)(()=>{let e=[];for(let[t,n]of f.entries())n&&e.push({index:t,inlineSize:n.offsetWidth,blockSize:n.offsetHeight,element:n});e.length>0&&A(e)})}(0,t.watch)(C,(e,t)=>{b.value&&(o(`scroll`,e),(!t||e.range.start!==t.range.start||e.range.end!==t.range.end||e.columnRange.start!==t.columnRange.start||e.columnRange.end!==t.columnRange.end)&&o(`visibleRangeChange`,{start:e.range.start,end:e.range.end,colStart:e.columnRange.start,colEnd:e.columnRange.end}),!i.loading&&(i.direction!==`horizontal`&&e.totalSize.height-(e.scrollOffset.y+e.viewportSize.height)<=i.loadDistance&&o(`load`,`vertical`),i.direction!==`vertical`&&e.totalSize.width-(e.scrollOffset.x+e.viewportSize.width)<=i.loadDistance&&o(`load`,`horizontal`)))}),(0,t.watch)(b,e=>{e&&o(`visibleRangeChange`,{start:C.value.range.start,end:C.value.range.end,colStart:C.value.columnRange.start,colEnd:C.value.columnRange.end})},{once:!0});let P=typeof window>`u`?null:new ResizeObserver(k),F=typeof window>`u`?null:new ResizeObserver(e=>{let t=[];for(let n of e){let e=n.target,r=Number(e.dataset.index),i=e.dataset.colIndex,a=n.contentRect.width,o=n.contentRect.height;n.borderBoxSize&&n.borderBoxSize.length>0?(a=n.borderBoxSize[0].inlineSize,o=n.borderBoxSize[0].blockSize):(a=e.offsetWidth,o=e.offsetHeight),i===void 0?Number.isNaN(r)||t.push({index:r,inlineSize:a,blockSize:o,element:e}):t.push({index:-1,inlineSize:a,blockSize:o,element:e})}t.length>0&&A(t)}),I=typeof window>`u`?null:new ResizeObserver(()=>{p.value=u.value?.offsetHeight||0,m.value=d.value?.offsetHeight||0,k()});(0,t.watch)(u,(e,t)=>{t&&I?.unobserve(t),e&&I?.observe(e)},{immediate:!0}),(0,t.watch)(d,(e,t)=>{t&&I?.unobserve(t),e&&I?.observe(e)},{immediate:!0}),(0,t.onMounted)(()=>{c.value&&P?.observe(c.value);for(let e of f.values())F?.observe(e),i.direction===`both`&&e.querySelectorAll(`[data-col-index]`).forEach(e=>F?.observe(e))}),(0,t.watch)([c,l],([e],[t])=>{t&&P?.unobserve(t),e&&P?.observe(e)});function L(e,t){if(e)f.set(t,e),F?.observe(e),i.direction===`both`&&e.querySelectorAll(`[data-col-index]`).forEach(e=>F?.observe(e));else{let e=f.get(t);e&&(F?.unobserve(e),i.direction===`both`&&e.querySelectorAll(`[data-col-index]`).forEach(e=>F?.unobserve(e)),f.delete(t))}}function R(e){let{viewportSize:t,scrollOffset:n}=C.value,r=i.direction!==`vertical`,a=i.direction!==`horizontal`;switch(e.key){case`Home`:e.preventDefault(),M(),D(0,0,`start`);break;case`End`:{e.preventDefault(),M();let t=i.items.length-1,n=(i.columnCount||0)>0?i.columnCount-1:0;r?a?D(t,n,`end`):D(0,t,`end`):D(t,0,`end`);break}case`ArrowUp`:e.preventDefault(),M(),O(null,n.y-40);break;case`ArrowDown`:e.preventDefault(),M(),O(null,n.y+40);break;case`ArrowLeft`:e.preventDefault(),M(),O(n.x-40,null);break;case`ArrowRight`:e.preventDefault(),M(),O(n.x+40,null);break;case`PageUp`:e.preventDefault(),M(),O(!a&&r?n.x-t.width:null,a?n.y-t.height:null);break;case`PageDown`:e.preventDefault(),M(),O(!a&&r?n.x+t.width:null,a?n.y+t.height:null);break}}(0,t.onUnmounted)(()=>{P?.disconnect(),F?.disconnect(),I?.disconnect()});let z=(0,t.computed)(()=>a(i.container)),B=(0,t.computed)(()=>z.value?{...i.direction===`vertical`?{}:{whiteSpace:`nowrap`}}:i.containerTag===`table`?{minInlineSize:i.direction===`vertical`?`100%`:`auto`}:{...i.direction===`vertical`?{}:{whiteSpace:`nowrap`}}),ee=(0,t.computed)(()=>({inlineSize:i.direction===`vertical`?`100%`:`${T.value}px`,blockSize:i.direction===`horizontal`?`100%`:`${w.value}px`})),V=(0,t.computed)(()=>{let e=i.direction===`horizontal`;return{display:e?`inline-block`:`block`,...e?{blockSize:`100%`,verticalAlign:`top`}:{inlineSize:`100%`}}}),te=(0,t.computed)(()=>({inlineSize:i.direction===`vertical`?`1px`:`${T.value}px`,blockSize:i.direction===`horizontal`?`1px`:`${w.value}px`}));function H(e){return g({containerTag:i.containerTag,direction:i.direction,isHydrated:b.value,item:e,itemSize:i.itemSize,paddingStartX:_.value.scrollPaddingStart.x,paddingStartY:_.value.scrollPaddingStart.y})}let U=(0,t.computed)(()=>i.debug),W=(0,t.computed)(()=>i.containerTag===`table`),G=(0,t.computed)(()=>W.value?`thead`:`div`),K=(0,t.computed)(()=>W.value?`tfoot`:`div`);return n({scrollDetails:C,columnRange:x,getColumnWidth:E,scrollToIndex:D,scrollToOffset:O,refresh:N,stopProgrammaticScroll:M}),(n,r)=>((0,t.openBlock)(),(0,t.createBlock)((0,t.resolveDynamicComponent)(e.containerTag),{ref_key:`hostRef`,ref:c,class:(0,t.normalizeClass)([`virtual-scroll-container`,[`virtual-scroll--${e.direction}`,{"virtual-scroll--hydrated":(0,t.unref)(b),"virtual-scroll--window":z.value,"virtual-scroll--table":W.value}]]),style:(0,t.normalizeStyle)(B.value),tabindex:`0`,onKeydown:R,onWheelPassive:(0,t.unref)(M),onPointerdownPassive:(0,t.unref)(M),onTouchstartPassive:(0,t.unref)(M)},{default:(0,t.withCtx)(()=>[s.header?((0,t.openBlock)(),(0,t.createBlock)((0,t.resolveDynamicComponent)(G.value),{key:0,ref_key:`headerRef`,ref:u,class:(0,t.normalizeClass)([`virtual-scroll-header`,{"virtual-scroll--sticky":e.stickyHeader}])},{default:(0,t.withCtx)(()=>[(0,t.renderSlot)(n.$slots,`header`,{},void 0,!0)]),_:3},8,[`class`])):(0,t.createCommentVNode)(``,!0),((0,t.openBlock)(),(0,t.createBlock)((0,t.resolveDynamicComponent)(e.wrapperTag),{ref_key:`wrapperRef`,ref:l,class:`virtual-scroll-wrapper`,style:(0,t.normalizeStyle)(ee.value)},{default:(0,t.withCtx)(()=>[W.value?((0,t.openBlock)(),(0,t.createBlock)((0,t.resolveDynamicComponent)(e.itemTag),{key:0,class:`virtual-scroll-spacer`,style:(0,t.normalizeStyle)(te.value)},{default:(0,t.withCtx)(()=>[...r[0]||=[(0,t.createElementVNode)(`td`,{style:{padding:`0`,border:`none`,"block-size":`inherit`}},null,-1)]]),_:1},8,[`style`])):(0,t.createCommentVNode)(``,!0),((0,t.openBlock)(!0),(0,t.createElementBlock)(t.Fragment,null,(0,t.renderList)((0,t.unref)(S),r=>((0,t.openBlock)(),(0,t.createBlock)((0,t.resolveDynamicComponent)(e.itemTag),{key:r.index,ref_for:!0,ref:e=>L(e,r.index),"data-index":r.index,class:(0,t.normalizeClass)([`virtual-scroll-item`,{"virtual-scroll--sticky":r.isStickyActive,"virtual-scroll--debug":U.value}]),style:(0,t.normalizeStyle)(H(r))},{default:(0,t.withCtx)(()=>[(0,t.renderSlot)(n.$slots,`item`,{item:r.item,index:r.index,columnRange:(0,t.unref)(x),getColumnWidth:(0,t.unref)(E),isSticky:r.isSticky,isStickyActive:r.isStickyActive},void 0,!0),U.value?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,y,` #`+(0,t.toDisplayString)(r.index)+` (`+(0,t.toDisplayString)(Math.round(r.offset.x))+`, `+(0,t.toDisplayString)(Math.round(r.offset.y))+`) `,1)):(0,t.createCommentVNode)(``,!0)]),_:2},1032,[`data-index`,`class`,`style`]))),128))]),_:3},8,[`style`])),e.loading&&s.loading?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,{key:1,class:`virtual-scroll-loading`,style:(0,t.normalizeStyle)(V.value)},[(0,t.renderSlot)(n.$slots,`loading`,{},void 0,!0)],4)):(0,t.createCommentVNode)(``,!0),s.footer?((0,t.openBlock)(),(0,t.createBlock)((0,t.resolveDynamicComponent)(K.value),{key:2,ref_key:`footerRef`,ref:d,class:(0,t.normalizeClass)([`virtual-scroll-footer`,{"virtual-scroll--sticky":e.stickyFooter}])},{default:(0,t.withCtx)(()=>[(0,t.renderSlot)(n.$slots,`footer`,{},void 0,!0)]),_:3},8,[`class`])):(0,t.createCommentVNode)(``,!0)]),_:3},40,[`class`,`style`,`onWheelPassive`,`onPointerdownPassive`,`onTouchstartPassive`]))}}),[[`__scopeId`,`data-v-922485f2`]]);e.DEFAULT_BUFFER=5,e.DEFAULT_COLUMN_WIDTH=100,e.DEFAULT_ITEM_SIZE=40,e.FenwickTree=n,e.VirtualScroll=b,e.calculateColumnRange=p,e.calculateItemPosition=h,e.calculateItemStyle=g,e.calculateRange=f,e.calculateScrollTarget=d,e.calculateStickyItem=m,e.calculateTotalSize=_,e.getPaddingX=l,e.getPaddingY=u,e.isBody=i,e.isElement=o,e.isScrollToIndexOptions=c,e.isScrollableElement=s,e.isWindow=r,e.isWindowLike=a,e.useVirtualScroll=v});
1
+ (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require(`vue`)):typeof define==`function`&&define.amd?define([`exports`,`vue`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.VirtualScroll={},e.Vue))})(this,function(e,t){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});let n={items:[],currentIndex:0,currentColIndex:0,currentEndIndex:0,currentEndColIndex:0,scrollOffset:{x:0,y:0},displayScrollOffset:{x:0,y:0},viewportSize:{width:0,height:0},displayViewportSize:{width:0,height:0},totalSize:{width:0,height:0},isScrolling:!1,isProgrammaticScroll:!1,range:{start:0,end:0},columnRange:{start:0,end:0,padStart:0,padEnd:0}};var r=class{tree;values;constructor(e){this.tree=new Float64Array(e+1),this.values=new Float64Array(e)}update(e,t){if(!(e<0||e>=this.values.length))for(this.values[e]=this.values[e]+t,e++;e<this.tree.length;)this.tree[e]=this.tree[e]+t,e+=e&-e}query(e){let t=0;for(;e>0;)t+=this.tree[e]||0,e-=e&-e;return t}set(e,t){e<0||e>=this.values.length||(this.values[e]=t)}get length(){return this.values.length}get(e){return this.values[e]||0}getValues(){return this.values}findLowerBound(e){let t=0,n=this.tree.length,r=1<<Math.floor(Math.log2(n-1));for(;r>0;){let i=t+r;if(i<n){let n=this.tree[i]||0;n<=e&&(t=i,e-=n)}r>>=1}return t}rebuild(){this.tree.fill(0);for(let e=0;e<this.values.length;e++)this.tree[e+1]=this.values[e]||0;for(let e=1;e<this.tree.length;e++){let t=e+(e&-e);t<this.tree.length&&(this.tree[t]=this.tree[t]+this.tree[e])}}resize(e){if(e===this.values.length)return;let t=new Float64Array(e);t.set(this.values.subarray(0,Math.min(e,this.values.length))),this.values=t,this.tree=new Float64Array(e+1),this.rebuild()}shift(e){if(e===0)return;let t=this.values.length,n=new Float64Array(t);e>0?n.set(this.values.subarray(0,Math.min(t-e,this.values.length)),e):n.set(this.values.subarray(-e)),this.values=n,this.rebuild()}};let i=1e7;function a(e){return e===null||e===document.documentElement||typeof window<`u`&&e===window}function o(e){return typeof e==`object`&&!!e&&`tagName`in e&&e.tagName===`BODY`}function s(e){return a(e)||o(e)}function c(e){return e!=null&&`getBoundingClientRect`in e}function l(e){return e!=null&&`scrollLeft`in e}function u(e,t){a(e)?window.scrollTo(t):e!=null&&l(e)&&(typeof e.scrollTo==`function`?e.scrollTo(t):(t.left!==void 0&&(e.scrollLeft=t.left),t.top!==void 0&&(e.scrollTop=t.top)))}function d(e){return typeof e==`object`&&!!e&&(`align`in e||`behavior`in e||`isCorrection`in e)}function f(e,t){return typeof e==`object`&&e?e.x||0:(t===`horizontal`||t===`both`)&&e||0}function p(e,t){return typeof e==`object`&&e?e.y||0:(t===`vertical`||t===`both`)&&e||0}function m({scrollPos:e,containerSize:t,count:n,bufferBefore:r,bufferAfter:i,gap:a,fixedSize:o,findLowerBound:s,query:c}){let l=0,u=n,d=e+t;if(o!==null){let t=o+a;l=Math.floor(e/t),u=Math.ceil(d/t)}else l=s(e),u=s(d),u<n&&c(u)<d&&u++;return{start:Math.max(0,l-r),end:Math.min(n,u+i)}}function h(e,t){let n=0,r=e.length-1,i;for(;n<=r;){let a=n+r>>>1;e[a]>t?(i=e[a],r=a-1):n=a+1}return i}function g(e,t){let n=0,r=e.length-1,i;for(;n<=r;){let a=n+r>>>1;e[a]<t?(i=e[a],n=a+1):r=a-1}return i}function _({align:e,targetPos:t,itemSize:n,scrollPos:r,viewSize:i,stickyOffsetStart:a,stickyOffsetEnd:o}){let s=t-a,c=t-(i-o-n);return e===`start`?{target:s,effectiveAlign:`start`}:e===`center`?{target:t-a-(i-a-o-n)/2,effectiveAlign:`center`}:e===`end`?{target:c,effectiveAlign:`end`}:x(t,n,r,i,a,o)?{target:r,effectiveAlign:`auto`}:n<=i-a-o?t<r+a?{target:s,effectiveAlign:`start`}:{target:c,effectiveAlign:`end`}:Math.abs(s-r)<Math.abs(c-r)?{target:s,effectiveAlign:`start`}:{target:c,effectiveAlign:`end`}}function v(e,t,n,r){return e<=0?0:t===null?Math.max(0,r(e)-n):Math.max(0,e*(t+n)-n)}function y({index:e,align:t,viewSize:n,scrollPos:r,fixedSize:i,gap:a,query:o,getSize:s,stickyIndices:c,stickyStart:l,stickyEnd:u=0}){let d=l;if(c&&c.length>0){let t=g(c,e);t!==void 0&&(d+=v(1,i,0,()=>s(t)))}let f=i===null?o(e):e*(i+a),p=i===null?s(e)-a:i,{target:m,effectiveAlign:h}=_({align:t,targetPos:f,itemSize:p,scrollPos:r,viewSize:n,stickyOffsetStart:d,stickyOffsetEnd:u});return{target:m,itemSize:p,effectiveAlign:h}}function b(e,t,n,r,i,a){if(e<=t)return{isActive:!1,offset:0};let o=h(i,r);if(o===void 0)return{isActive:!0,offset:0};let s=a(o);return e>=s?{isActive:!1,offset:0}:{isActive:!0,offset:Math.max(0,Math.min(n,s-e))-n}}function x(e,t,n,r,i=0,a=0){let o=n+i,s=n+r-a;return t<=r-i-a?e>=o-.5&&e+t<=s+.5:e<=o+.5&&e+t>=s-.5}function S(e,t,n){return(e-t)*n}function C(e,t,n){return e/n+t}function ee({rowIndex:e,colIndex:t,options:n,direction:r,viewportWidth:a,viewportHeight:o,totalWidth:s,totalHeight:c,gap:l,columnGap:u,fixedSize:f,fixedWidth:p,relativeScrollX:m,relativeScrollY:h,getItemSizeY:g,getItemSizeX:_,getItemQueryY:v,getItemQueryX:b,getColumnSize:x,getColumnQuery:S,scaleX:C,scaleY:ee,hostOffsetX:te,hostOffsetY:w,stickyIndices:ne,stickyStartX:re=0,stickyStartY:T=0,stickyEndX:ie=0,stickyEndY:E=0,flowPaddingStartX:D=0,flowPaddingStartY:O=0,paddingStartX:k=0,paddingStartY:A=0,paddingEndX:ae=0,paddingEndY:j=0}){let M;M=d(n)?n.align:n;let N=(M&&typeof M==`object`?M.x:M)||`auto`,P=(M&&typeof M==`object`?M.y:M)||`auto`,F=m,I=h,L=0,R=0,z=`auto`,oe=`auto`,se=C===1?s:i,B=ee===1?c:i,V=Math.max(0,te+se-a),ce=Math.max(0,w+B-o),H=(V-te)*C,U=(ce-w)*ee,le=D+re+k,ue=O+T+A;if(e!=null){let t=y({index:e,align:P,viewSize:o,scrollPos:h,fixedSize:f,gap:l,query:v,getSize:g,stickyIndices:ne,stickyStart:T+A,stickyEnd:E+j});I=t.target+ue,R=t.itemSize,oe=t.effectiveAlign}if(t!=null){let e=r===`both`,n=y({index:t,align:N,viewSize:a,scrollPos:m,fixedSize:e?p:f,gap:e||r===`horizontal`?u:l,query:e?S:b,getSize:e?x:_,stickyIndices:ne,stickyStart:re+k,stickyEnd:ie+ae});F=n.target+le,L=n.itemSize,z=n.effectiveAlign}return F=Math.max(0,Math.min(F,H)),I=Math.max(0,Math.min(I,U)),{targetX:F,targetY:I,itemWidth:L,itemHeight:R,effectiveAlignX:z,effectiveAlignY:oe}}function te({direction:e,relativeScrollX:t,relativeScrollY:n,usableWidth:r,usableHeight:i,itemsLength:a,bufferBefore:o,bufferAfter:s,gap:c,columnGap:l,fixedSize:u,findLowerBoundY:d,findLowerBoundX:f,queryY:p,queryX:h}){let g=e===`vertical`||e===`both`;return m({scrollPos:g?n:t,containerSize:g?i:r,count:a,bufferBefore:o,bufferAfter:s,gap:g?c:l,fixedSize:u,findLowerBound:g?d:f,query:g?p:h})}function w({columnCount:e,relativeScrollX:t,usableWidth:n,colBuffer:r,fixedWidth:i,columnGap:a,findLowerBound:o,query:s,totalColsQuery:c}){if(!e)return{start:0,end:0,padStart:0,padEnd:0};let{start:l,end:u}=m({scrollPos:t,containerSize:n,count:e,bufferBefore:r,bufferAfter:r,gap:a,fixedSize:i,findLowerBound:o,query:s}),d=l,f=u,p=i===null?s(d):d*(i+a),h=i===null?Math.max(0,c()-a):e*(i+a)-a,g=i===null?s(f)-(f>0?a:0):f*(i+a)-(f>0?a:0);return{start:d,end:f,padStart:p,padEnd:Math.max(0,h-g)}}function ne({index:e,isSticky:t,direction:n,relativeScrollX:r,relativeScrollY:i,originalX:a,originalY:o,width:s,height:c,stickyIndices:l,fixedSize:u,gap:d,columnGap:f,getItemQueryY:p,getItemQueryX:m}){let h=!1,g=!1,_={x:0,y:0};if(!t)return{isStickyActiveX:h,isStickyActiveY:g,isStickyActive:!1,stickyOffset:_};if(n===`vertical`||n===`both`){let t=b(i,o,c,e,l,e=>u===null?p(e):e*(u+d));g=t.isActive,_.y=t.offset}if(n===`horizontal`){let t=b(r,a,s,e,l,e=>u===null?m(e):e*(u+f));t.isActive&&(h=!0,_.x=t.offset)}return{isStickyActiveX:h,isStickyActiveY:g,isStickyActive:h||g,stickyOffset:_}}function re({index:e,direction:t,fixedSize:n,gap:r,columnGap:i,usableWidth:a,usableHeight:o,totalWidth:s,queryY:c,queryX:l,getSizeY:u,getSizeX:d,columnRange:f}){let p=0,m=0,h=0,g=0;return t===`horizontal`?(p=n===null?l(e):e*(n+i),h=n===null?d(e)-i:n,g=o):t===`both`&&f?(m=n===null?c(e):e*(n+r),g=n===null?u(e)-r:n,p=f.padStart,h=Math.max(0,s-f.padStart-f.padEnd)):(m=n===null?c(e):e*(n+r),g=n===null?u(e)-r:n,h=t===`both`?s:a),{height:g,width:h,x:p,y:m}}function T({item:e,direction:t,itemSize:n,containerTag:r,paddingStartX:i,paddingStartY:a,isHydrated:o,isRtl:s}){let c=t===`vertical`,l=t===`horizontal`,u=t===`both`,d=n==null||n===0,f={blockSize:l?`100%`:d?`auto`:`${e.size.height}px`};if(c&&r===`table`?f.minInlineSize=`100%`:f.inlineSize=c?`100%`:d?`auto`:`${e.size.width}px`,d&&(c||(f.minInlineSize=`1px`),l||(f.minBlockSize=`1px`)),o){let t=e.isStickyActiveY??(e.isStickyActive&&(c||u)),n=e.isStickyActiveX??(e.isStickyActive&&l),r=s?-(n?e.stickyOffset.x:e.offset.x):n?e.stickyOffset.x:e.offset.x,o=t?e.stickyOffset.y:e.offset.y;e.isStickyActive||e.isStickyActiveX||e.isStickyActiveY?(f.insetBlockStart=t?`${a}px`:`auto`,f.insetInlineStart=n?`${i}px`:`auto`,f.transform=`translate(${r}px, ${o}px)`):f.transform=`translate(${r}px, ${e.offset.y}px)`}return f}function ie({direction:e,itemsLength:t,columnCount:n,fixedSize:r,fixedWidth:i,gap:a,columnGap:o,usableWidth:s,usableHeight:c,queryY:l,queryX:u,queryColumn:d}){let f=e===`both`,p=e===`horizontal`,m=0,h=0;return f?(m=v(n,i,o,d),h=v(t,r,a,l)):p?(m=v(t,r,o,u),h=c):(m=s,h=v(t,r,a,l)),{width:f?Math.max(m,s):m,height:f?Math.max(h,c):h}}function E(e){let n=(0,t.computed)(()=>(0,t.toValue)(e)),a=(0,t.ref)(0),o=(0,t.ref)(0),m=(0,t.ref)(!1),h=(0,t.ref)(!1),_=(0,t.ref)(!1),v=(0,t.ref)(!1),y=(0,t.ref)(!1),b=(0,t.ref)(0),x=(0,t.ref)(0),T=(0,t.reactive)({x:0,y:0}),E=(0,t.reactive)({x:0,y:0}),D,O=(0,t.ref)(!1),k=(0,t.ref)(0),A=(0,t.ref)(0),ae=null,j=()=>{if(typeof window>`u`)return;let e=n.value.container||n.value.hostRef||window,t=c(e)?e:document.documentElement;(!ae||!(`direction`in ae))&&(ae=window.getComputedStyle(t));let r=ae.direction===`rtl`;y.value!==r&&(y.value=r)},M=new r(n.value.items?.length||0),N=new r(n.value.items?.length||0),P=new r(n.value.columnCount||0),F=(0,t.ref)(0),I=new Uint8Array,L=new Uint8Array,R=new Uint8Array,z=(0,t.ref)(null),oe=(0,t.ref)(!1),se=[],B=(0,t.computed)(()=>[`vertical`,`horizontal`,`both`].includes(n.value.direction)?n.value.direction:`vertical`),V=(0,t.computed)(()=>n.value.itemSize===void 0||n.value.itemSize===null||n.value.itemSize===0),ce=(0,t.computed)(()=>n.value.columnWidth===void 0||n.value.columnWidth===null||n.value.columnWidth===0),H=(0,t.computed)(()=>typeof n.value.itemSize==`number`&&n.value.itemSize>0?n.value.itemSize:null),U=(0,t.computed)(()=>typeof n.value.columnWidth==`number`&&n.value.columnWidth>0?n.value.columnWidth:null),le=(0,t.computed)(()=>n.value.defaultItemSize||H.value||40),ue=(0,t.computed)(()=>[...n.value.stickyIndices||[]].sort((e,t)=>e-t)),de=(0,t.computed)(()=>new Set(ue.value)),W=(0,t.computed)(()=>f(n.value.scrollPaddingStart,n.value.direction)),fe=(0,t.computed)(()=>f(n.value.scrollPaddingEnd,n.value.direction)),pe=(0,t.computed)(()=>p(n.value.scrollPaddingStart,n.value.direction)),me=(0,t.computed)(()=>p(n.value.scrollPaddingEnd,n.value.direction)),G=(0,t.computed)(()=>f(n.value.stickyStart,n.value.direction)),K=(0,t.computed)(()=>f(n.value.stickyEnd,n.value.direction)),q=(0,t.computed)(()=>p(n.value.stickyStart,n.value.direction)),he=(0,t.computed)(()=>p(n.value.stickyEnd,n.value.direction)),J=(0,t.computed)(()=>f(n.value.flowPaddingStart,n.value.direction)),ge=(0,t.computed)(()=>f(n.value.flowPaddingEnd,n.value.direction)),Y=(0,t.computed)(()=>p(n.value.flowPaddingStart,n.value.direction)),_e=(0,t.computed)(()=>p(n.value.flowPaddingEnd,n.value.direction)),ve=(0,t.computed)(()=>b.value-(B.value===`vertical`?0:G.value+K.value)),ye=(0,t.computed)(()=>x.value-(B.value===`horizontal`?0:q.value+he.value)),be=(0,t.computed)(()=>{if(F.value,!h.value&&n.value.ssrRange&&!v.value){let{start:e=0,end:t=0,colStart:r=0,colEnd:i=0}=n.value.ssrRange,a=n.value.columnCount||0,o=n.value.gap||0,s=n.value.columnGap||0,c=0,l=0;if(B.value===`both`){if(a>0){let e=i||a,t=P.query(e)-P.query(r);c=Math.max(0,t-(e>r?s:0))}if(H.value!==null){let n=t-e;l=Math.max(0,n*(H.value+o)-(n>0?o:0))}else{let n=N.query(t)-N.query(e);l=Math.max(0,n-(t>e?o:0))}}else if(B.value===`horizontal`){if(H.value!==null){let n=t-e;c=Math.max(0,n*(H.value+s)-(n>0?s:0))}else{let n=M.query(t)-M.query(e);c=Math.max(0,n-(t>e?s:0))}l=ye.value}else if(c=ve.value,H.value!==null){let n=t-e;l=Math.max(0,n*(H.value+o)-(n>0?o:0))}else{let n=N.query(t)-N.query(e);l=Math.max(0,n-(t>e?o:0))}return{width:Math.max(c,ve.value),height:Math.max(l,ye.value)}}return ie({direction:B.value,itemsLength:n.value.items.length,columnCount:n.value.columnCount||0,fixedSize:H.value,fixedWidth:U.value,gap:n.value.gap||0,columnGap:n.value.columnGap||0,usableWidth:ve.value,usableHeight:ye.value,queryY:e=>N.query(e),queryX:e=>M.query(e),queryColumn:e=>P.query(e)})}),xe=(0,t.computed)(()=>s(n.value.container)),Se=(0,t.computed)(()=>be.value.width+W.value+fe.value),Ce=(0,t.computed)(()=>be.value.height+pe.value+me.value),X=(0,t.computed)(()=>J.value+G.value+K.value+ge.value+Se.value),Z=(0,t.computed)(()=>Y.value+q.value+he.value+_e.value+Ce.value),we=(0,t.reactive)({x:(0,t.computed)(()=>Math.max(0,T.x-(J.value+G.value))),y:(0,t.computed)(()=>Math.max(0,T.y-(Y.value+q.value)))}),Te=(0,t.computed)(()=>xe.value?X.value:Math.min(X.value,i)),Ee=(0,t.computed)(()=>xe.value?Z.value:Math.min(Z.value,i)),De=(0,t.computed)(()=>xe.value?Se.value:Math.max(0,Te.value-(J.value+G.value+K.value+ge.value))),Oe=(0,t.computed)(()=>xe.value?Ce.value:Math.max(0,Ee.value-(Y.value+q.value+he.value+_e.value))),Q=(0,t.computed)(()=>{if(xe.value||X.value<=1e7)return 1;let e=X.value-b.value,t=Te.value-b.value;return t>0?e/t:1}),ke=(0,t.computed)(()=>{if(xe.value||Z.value<=1e7)return 1;let e=Z.value-x.value,t=Ee.value-x.value;return t>0?e/t:1}),Ae=(0,t.computed)(()=>{if(B.value===`vertical`)return 0;let e=J.value+G.value+W.value;return k.value-e}),$=(0,t.computed)(()=>{if(B.value===`horizontal`)return 0;let e=Y.value+q.value+pe.value;return A.value-e}),je=e=>{F.value;let t=n.value.columnGap||0,r=n.value.columnWidth;if(typeof r==`number`&&r>0)return r;if(Array.isArray(r)&&r.length>0){let t=r[e%r.length];return t!=null&&t>0?t:n.value.defaultColumnWidth||100}if(typeof r==`function`)return r(e);let i=P.get(e);return i>0?i-t:n.value.defaultColumnWidth||100},Me=e=>{if(F.value,B.value===`horizontal`)return ye.value;let t=n.value.gap||0,r=n.value.itemSize;if(typeof r==`number`&&r>0)return r;if(typeof r==`function`){let t=n.value.items[e];return t===void 0?n.value.defaultItemSize||40:r(t,e)}let i=N.get(e);return i>0?i-t:n.value.defaultItemSize||40};function Ne(e,t,r){let i=typeof r==`object`&&r&&`isCorrection`in r?r.isCorrection:!1,s=n.value.container||window,{targetX:c,targetY:l,effectiveAlignX:f,effectiveAlignY:p}=ee({rowIndex:e,colIndex:t,options:r,direction:B.value,viewportWidth:b.value,viewportHeight:x.value,totalWidth:X.value,totalHeight:Z.value,gap:n.value.gap||0,columnGap:n.value.columnGap||0,fixedSize:H.value,fixedWidth:U.value,relativeScrollX:Ae.value,relativeScrollY:$.value,getItemSizeY:e=>N.get(e),getItemSizeX:e=>M.get(e),getItemQueryY:e=>N.query(e),getItemQueryX:e=>M.query(e),getColumnSize:e=>P.get(e),getColumnQuery:e=>P.query(e),scaleX:Q.value,scaleY:ke.value,hostOffsetX:we.x,hostOffsetY:we.y,stickyIndices:ue.value,stickyStartX:G.value,stickyStartY:q.value,stickyEndX:K.value,stickyEndY:he.value,flowPaddingStartX:J.value,flowPaddingStartY:Y.value,paddingStartX:W.value,paddingStartY:pe.value,paddingEndX:fe.value,paddingEndY:me.value});if(!i){let n=d(r)?r.behavior:void 0;z.value={rowIndex:e,colIndex:t,options:{align:{x:f,y:p},...n==null?{}:{behavior:n}}}}let m=C(c,we.x,Q.value),h=C(l,we.y,ke.value),g=y.value?-m:m,_=h,v;d(r)&&(v=r.behavior);let S=i?`auto`:v||`smooth`;O.value=!0;let te={behavior:S};if(t!=null&&(te.left=y.value?g:Math.max(0,g)),e!=null&&(te.top=Math.max(0,_)),u(s,te),(S===`auto`||S===void 0)&&(t!=null&&(a.value=y.value?g:Math.max(0,g),k.value=c),e!=null&&(o.value=Math.max(0,_),A.value=l),z.value)){let e=z.value.options;d(e)?e.behavior=`auto`:z.value.options={align:e,behavior:`auto`}}}let Pe=(e,t,r)=>{let i=n.value.container||window;O.value=!0,z.value=null;let s=e==null?null:Math.max(0,Math.min(e,X.value-b.value)),c=t==null?null:Math.max(0,Math.min(t,Z.value-x.value));s!==null&&(k.value=s),c!==null&&(A.value=c);let l=typeof window<`u`&&i===window?window.scrollX:i.scrollLeft,d=typeof window<`u`&&i===window?window.scrollY:i.scrollTop,f=s===null?null:C(s,we.x,Q.value),p=c===null?null:C(c,we.y,ke.value),m=f===null?l:y.value?-f:f,h=p===null?d:p,g={behavior:r?.behavior||`auto`};e!=null&&(g.left=m),t!=null&&(g.top=h),u(i,g),(r?.behavior===`auto`||r?.behavior===void 0)&&(e!=null&&(a.value=m),t!=null&&(o.value=h))},Fe=(e,t)=>{if(M.resize(e),N.resize(e),P.resize(t),L.length!==e){let t=new Uint8Array(e);t.set(L.subarray(0,Math.min(e,L.length))),L=t}if(R.length!==e){let t=new Uint8Array(e);t.set(R.subarray(0,Math.min(e,R.length))),R=t}if(I.length!==t){let e=new Uint8Array(t);e.set(I.subarray(0,Math.min(t,I.length))),I=e}},Ie=()=>{let e=n.value.items.length,t=n.value.columnCount||0,r=n.value.gap||0,i=n.value.columnGap||0,a=n.value.columnWidth,o=!1,s=!1;if(t>0)for(let e=0;e<t;e++){let t=P.get(e),r=I[e]===1;if(!ce.value||!r&&t===0){let r=0;r=typeof a==`number`&&a>0?a:Array.isArray(a)&&a.length>0?a[e%a.length]||n.value.defaultColumnWidth||100:typeof a==`function`?a(e):n.value.defaultColumnWidth||100;let s=r+i;Math.abs(t-s)>.5?(P.set(e,s),I[e]=ce.value?0:1,o=!0):ce.value||(I[e]=1)}}for(let t=0;t<e;t++){let e=n.value.items[t],a=M.get(t),o=N.get(t),c=L[t]===1,l=R[t]===1;if(B.value===`horizontal`){if(!V.value||!c&&a===0){let r=(typeof n.value.itemSize==`function`?n.value.itemSize(e,t):le.value)+i;Math.abs(a-r)>.5?(M.set(t,r),L[t]=V.value?0:1,s=!0):V.value||(L[t]=1)}}else a!==0&&(M.set(t,0),L[t]=0,s=!0);if(B.value!==`horizontal`){if(!V.value||!l&&o===0){let i=(typeof n.value.itemSize==`function`?n.value.itemSize(e,t):le.value)+r;Math.abs(o-i)>.5?(N.set(t,i),R[t]=V.value?0:1,s=!0):V.value||(R[t]=1)}}else o!==0&&(N.set(t,0),R[t]=0,s=!0)}o&&P.rebuild(),s&&(M.rebuild(),N.rebuild())},Le=()=>{let e=n.value.items,r=e.length;Fe(r,n.value.columnCount||0);let i=0;if(n.value.restoreScrollOnPrepend&&se.length>0&&r>se.length){let t=se[0];if(t!==void 0){for(let n=1;n<=r-se.length;n++)if(e[n]===t){i=n;break}}}if(i>0){M.shift(i),N.shift(i),z.value&&z.value.rowIndex!==null&&z.value.rowIndex!==void 0&&(z.value.rowIndex+=i);let a=new Uint8Array(r),o=new Uint8Array(r);a.set(L.subarray(0,Math.min(r-i,L.length)),i),o.set(R.subarray(0,Math.min(r-i,R.length)),i),L=a,R=o;let s=n.value.gap||0,c=n.value.columnGap||0,l=0,u=0;for(let t=0;t<i;t++){let r=typeof n.value.itemSize==`function`?n.value.itemSize(e[t],t):le.value;B.value===`horizontal`?l+=r+c:u+=r+s}(l>0||u>0)&&(0,t.nextTick)(()=>{Pe(l>0?Ae.value+l:null,u>0?$.value+u:null,{behavior:`auto`,isCorrection:!0})})}Ie(),se=[...e],oe.value=!0,F.value++},Re=()=>{if(typeof window>`u`)return;let e=n.value.container||window,t=t=>{let n=t.getBoundingClientRect();if(e===window)return{x:y.value?document.documentElement.clientWidth-n.right-window.scrollX:n.left+window.scrollX,y:n.top+window.scrollY};if(e===t)return{x:0,y:0};if(c(e)){let t=e.getBoundingClientRect();return{x:y.value?t.right-n.right-e.scrollLeft:n.left-t.left+e.scrollLeft,y:n.top-t.top+e.scrollTop}}return{x:0,y:0}};if(n.value.hostElement){let e=t(n.value.hostElement);(Math.abs(T.x-e.x)>.1||Math.abs(T.y-e.y)>.1)&&(T.x=e.x,T.y=e.y)}if(n.value.hostRef){let e=t(n.value.hostRef);(Math.abs(E.x-e.x)>.1||Math.abs(E.y-e.y)>.1)&&(E.x=e.x,E.y=e.y)}};(0,t.watch)([()=>n.value.items,()=>n.value.items.length,()=>n.value.direction,()=>n.value.columnCount,()=>n.value.columnWidth,()=>n.value.itemSize,()=>n.value.gap,()=>n.value.columnGap,()=>n.value.defaultItemSize,()=>n.value.defaultColumnWidth],Le,{immediate:!0}),(0,t.watch)(()=>[n.value.container,n.value.hostElement],()=>{Re()}),(0,t.watch)(y,(e,t)=>{if(t===void 0||e===t||!v.value)return;if(B.value===`vertical`){Re();return}let n=S(t?Math.abs(a.value):a.value,T.x,Q.value);Re(),Pe(n,null,{behavior:`auto`})},{flush:`sync`}),(0,t.watch)([Q,ke],()=>{!v.value||m.value||O.value||Pe(k.value,A.value,{behavior:`auto`})}),(0,t.watch)([()=>n.value.items.length,()=>n.value.columnCount],([e,n],[r,i])=>{(0,t.nextTick)(()=>{let t=Math.max(0,X.value-b.value),a=Math.max(0,Z.value-x.value);k.value>t||A.value>a?Pe(Math.min(k.value,t),Math.min(A.value,a),{behavior:`auto`}):(e!==r&&ke.value!==1||n!==i&&Q.value!==1)&&Pe(k.value,A.value,{behavior:`auto`}),Re()})});let ze=e=>{let t=n.value.gap||0,r=n.value.columnGap||0,i=H.value;if(B.value===`horizontal`){let t=(i||0)+r;return i!==null&&t>0?Math.floor(e/t):M.findLowerBound(e)}let a=(i||0)+t;return i!==null&&a>0?Math.floor(e/a):N.findLowerBound(e)},Be=e=>B.value===`both`?P.findLowerBound(e):B.value===`horizontal`?ze(e):0,Ve=(0,t.computed)(()=>{if(F.value,(!h.value||_.value)&&n.value.ssrRange)return{start:n.value.ssrRange.start,end:n.value.ssrRange.end};let e=n.value.ssrRange&&!m.value?0:n.value.bufferBefore??5,t=n.value.bufferAfter??5;return te({direction:B.value,relativeScrollX:Ae.value,relativeScrollY:$.value,usableWidth:ve.value,usableHeight:ye.value,itemsLength:n.value.items.length,bufferBefore:e,bufferAfter:t,gap:n.value.gap||0,columnGap:n.value.columnGap||0,fixedSize:H.value,findLowerBoundY:e=>N.findLowerBound(e),findLowerBoundX:e=>M.findLowerBound(e),queryY:e=>N.query(e),queryX:e=>M.query(e)})}),He=(0,t.computed)(()=>{F.value;let e=Ae.value+G.value,t=$.value+q.value;return ze(B.value===`horizontal`?e:t)}),Ue=(0,t.computed)(()=>{F.value;let e=n.value.columnCount||0;if(!e)return{start:0,end:0,padStart:0,padEnd:0};if((!h.value||_.value)&&n.value.ssrRange){let{colStart:t=0,colEnd:r=0}=n.value.ssrRange,i=Math.max(0,t),a=Math.min(e,r||e),o=n.value.columnGap||0,s=U.value===null?P.query(i):i*(U.value+o),c=U.value===null?Math.max(0,P.query(e)-o):e*(U.value+o)-o,l=U.value===null?P.query(a)-(a>0?o:0):a*(U.value+o)-(a>0?o:0);return{start:i,end:a,padStart:s,padEnd:Math.max(0,c-l)}}let t=n.value.ssrRange&&!m.value?0:2;return w({columnCount:e,relativeScrollX:Ae.value,usableWidth:ve.value,colBuffer:t,fixedWidth:U.value,columnGap:n.value.columnGap||0,findLowerBound:e=>P.findLowerBound(e),query:e=>P.query(e),totalColsQuery:()=>P.query(e)})}),We=[],Ge=(0,t.computed)(()=>{F.value;let{start:e,end:t}=Ve.value,r=[],i=H.value,a=n.value.gap||0,o=n.value.columnGap||0,s=ue.value,c=de.value,l=[];if(h.value||!n.value.ssrRange){let t=He.value,n=g(s,t);n!==void 0&&n<e&&l.push(n)}for(let n=e;n<t;n++)l.push(n);let u=n.value.ssrRange?.start||0,d=n.value.ssrRange?.colStart||0,f=0,p=0;!h.value&&n.value.ssrRange&&(p=B.value===`horizontal`?0:i===null?N.query(u):u*(i+a),B.value===`horizontal`?f=i===null?M.query(d):d*(i+o):B.value===`both`&&(f=P.query(d)));let m=new Map(We.map(e=>[e.index,e])),_=-1,v=0,y=-1,b=0,x=e=>e===_+1?(v+=M.get(_),_=e,v):(v=M.query(e),_=e,v),S=e=>e===y+1?(b+=N.get(y),y=e,b):(b=N.query(e),y=e,b),C=J.value+G.value+W.value,ee=Y.value+q.value+pe.value,te=J.value+G.value,w=Y.value+q.value,T=Ue.value;for(let e of l){let t=n.value.items[e];if(t===void 0)continue;let{x:i,y:a,width:o,height:l}=re({index:e,direction:B.value,fixedSize:H.value,gap:n.value.gap||0,columnGap:n.value.columnGap||0,usableWidth:ve.value,usableHeight:ye.value,totalWidth:be.value.width,queryY:S,queryX:x,getSizeY:e=>N.get(e),getSizeX:e=>M.get(e),columnRange:T}),u=c.has(e),d=i,g=a,{isStickyActive:_,isStickyActiveX:v,isStickyActiveY:y,stickyOffset:b}=ne({index:e,isSticky:u,direction:B.value,relativeScrollX:Ae.value,relativeScrollY:$.value,originalX:d,originalY:g,width:o,height:l,stickyIndices:s,fixedSize:H.value,fixedWidth:U.value,gap:n.value.gap||0,columnGap:n.value.columnGap||0,getItemQueryY:S,getItemQueryX:x}),ie=h.value?k.value/Q.value+(i+C-k.value)-te:i-f,E=h.value?A.value/ke.value+(a+ee-A.value)-w:a-p,D=m.get(e);D&&D.item===t&&D.offset.x===ie&&D.offset.y===E&&D.size.width===o&&D.size.height===l&&D.isSticky===u&&D.isStickyActive===_&&D.isStickyActiveX===v&&D.isStickyActiveY===y&&D.stickyOffset.x===b.x&&D.stickyOffset.y===b.y?r.push(D):r.push({item:t,index:e,offset:{x:ie,y:E},size:{width:o,height:l},originalX:d,originalY:g,isSticky:u,isStickyActive:_,isStickyActiveX:v,isStickyActiveY:y,stickyOffset:b})}return We=r,r}),Ke=(0,t.computed)(()=>{F.value;let e=Ae.value+G.value,t=$.value+q.value,n=Ae.value+(b.value-K.value)-1,r=$.value+(x.value-he.value)-1,i=Be(e),s=ze(t),c=ze(B.value===`horizontal`?n:r),l=Be(n);return{items:Ge.value,currentIndex:s,currentColIndex:i,currentEndIndex:c,currentEndColIndex:l,scrollOffset:{x:k.value,y:A.value},displayScrollOffset:{x:y.value?Math.abs(a.value+E.x):Math.max(0,a.value-E.x),y:Math.max(0,o.value-E.y)},viewportSize:{width:b.value,height:x.value},displayViewportSize:{width:b.value,height:x.value},totalSize:{width:X.value,height:Z.value},isScrolling:m.value,isProgrammaticScroll:O.value,range:Ve.value,columnRange:Ue.value}}),qe=()=>{O.value=!1,z.value=null},Je=e=>{let t=e.target;typeof window>`u`||(j(),t===window||t===document?(a.value=window.scrollX,o.value=window.scrollY,b.value=document.documentElement.clientWidth,x.value=document.documentElement.clientHeight):l(t)&&(a.value=t.scrollLeft,o.value=t.scrollTop,b.value=t.clientWidth,x.value=t.clientHeight),k.value=S(y.value?Math.abs(a.value):a.value,we.x,Q.value),A.value=S(o.value,we.y,ke.value),m.value||=(O.value||(z.value=null),!0),clearTimeout(D),D=setTimeout(()=>{m.value=!1,O.value=!1},250))},Ye=e=>{let t=!1,r=0,i=0,a=n.value.gap||0,o=n.value.columnGap||0,s=Ae.value,c=$.value,l=ze(B.value===`horizontal`?s:c),u=Be(s),d=B.value===`horizontal`,f=B.value===`both`,p=new Set,m=new Set,h=(e,i)=>{if(e>=0&&e<(n.value.columnCount||0)&&!m.has(e)){m.add(e);let n=P.get(e),a=i+o;if(!I[e]||Math.abs(n-a)>.1){let i=a-n;Math.abs(i)>.1&&(P.update(e,i),t=!0,e<u&&(r+=i)),I[e]=1}}};for(let{index:s,inlineSize:c,blockSize:u,element:m}of e){if(c<=0&&u<=0)continue;let e=V.value||typeof n.value.itemSize==`function`;if(s>=0&&!p.has(s)&&e&&u>0){if(p.add(s),d&&c>0){let e=M.get(s),n=c+o;if(!L[s]||Math.abs(n-e)>.1){let i=n-e;M.update(s,i),L[s]=1,t=!0,s<l&&(r+=i)}}if(!d){let e=N.get(s),n=u+a;if(!R[s]||Math.abs(n-e)>.1){let r=n-e;N.update(s,r),R[s]=1,t=!0,s<l&&(i+=r)}}}let g=ce.value||typeof n.value.columnWidth==`function`;if(f&&m&&n.value.columnCount&&g&&(c>0||m.dataset.colIndex===void 0)){let e=m.dataset.colIndex;if(e!=null)h(Number.parseInt(e,10),c);else{let e=Array.from(m.querySelectorAll(`[data-col-index]`));for(let t of e)h(Number.parseInt(t.dataset.colIndex,10),t.getBoundingClientRect().width)}}}if(t&&(F.value++,!(z.value!==null||O.value)&&(r!==0||i!==0))){let e=J.value+G.value+W.value,t=Y.value+q.value+pe.value;Pe(r===0?null:s+r+e,i===0?null:c+i+t,{behavior:`auto`})}},Xe=(e,t,n,r)=>{Ye([{index:e,inlineSize:t,blockSize:n,element:r}])};function Ze(){if(z.value&&!_.value){let{rowIndex:e,colIndex:t,options:r}=z.value;if(d(r)&&r.behavior===`smooth`&&m.value)return;let i=n.value.container||window,a=typeof window<`u`&&i===window?window.scrollX:i.scrollLeft,o=typeof window<`u`&&i===window?window.scrollY:i.scrollTop,s=y.value?Math.abs(a):a,c=o,l=S(s,0,Q.value),u=S(c,0,ke.value),{targetX:f,targetY:p}=ee({rowIndex:e,colIndex:t,options:r,direction:B.value,viewportWidth:b.value,viewportHeight:x.value,totalWidth:Se.value,totalHeight:Ce.value,gap:n.value.gap||0,columnGap:n.value.columnGap||0,fixedSize:H.value,fixedWidth:U.value,relativeScrollX:l,relativeScrollY:u,getItemSizeY:e=>N.get(e),getItemSizeX:e=>M.get(e),getItemQueryY:e=>N.query(e),getItemQueryX:e=>M.query(e),getColumnSize:e=>P.get(e),getColumnQuery:e=>P.query(e),scaleX:Q.value,scaleY:ke.value,hostOffsetX:we.x,hostOffsetY:we.y,stickyIndices:ue.value,stickyStartX:G.value,stickyStartY:q.value,stickyEndX:K.value,stickyEndY:he.value,flowPaddingStartX:J.value,flowPaddingStartY:Y.value,paddingStartX:W.value,paddingStartY:pe.value,paddingEndX:fe.value,paddingEndY:me.value}),h=t==null||Math.abs(l-f)<2,g=e==null||Math.abs(u-p)<2,_=t==null||t===void 0||I[t]===1,v=e==null||e===void 0||R[e]===1;h&&g?_&&v&&!m.value&&!O.value&&(z.value=null):Ne(e,t,d(r)?{...r,isCorrection:!0}:{align:r,isCorrection:!0})}}(0,t.watch)([F,b,x],Ze),(0,t.watch)(m,e=>{e||Ze()});let Qe=null,$e=null,et,tt=e=>{if(typeof window>`u`)return;let t=e||window,n=t===window||c(t)&&t===document.documentElement?document:t;if(n.addEventListener(`scroll`,Je,{passive:!0}),ae=null,j(),c(t)&&($e=new MutationObserver(()=>j()),$e.observe(t,{attributes:!0,attributeFilter:[`dir`,`style`]})),et=setInterval(j,1e3),t===window){b.value=document.documentElement.clientWidth,x.value=document.documentElement.clientHeight,a.value=window.scrollX,o.value=window.scrollY;let e=()=>{j(),b.value=document.documentElement.clientWidth,x.value=document.documentElement.clientHeight,Re()};return window.addEventListener(`resize`,e),()=>{n.removeEventListener(`scroll`,Je),window.removeEventListener(`resize`,e),$e?.disconnect(),clearInterval(et),ae=null}}else return b.value=t.clientWidth,x.value=t.clientHeight,a.value=t.scrollLeft,o.value=t.scrollTop,Qe=new ResizeObserver(()=>{j(),b.value=t.clientWidth,x.value=t.clientHeight,Re()}),Qe.observe(t),()=>{n.removeEventListener(`scroll`,Je),Qe?.disconnect(),$e?.disconnect(),clearInterval(et),ae=null}},nt;return(0,t.getCurrentInstance)()&&((0,t.onMounted)(()=>{v.value=!0,j(),(0,t.watch)(()=>n.value.container,e=>{nt?.(),nt=tt(e||null)},{immediate:!0}),Re(),(0,t.nextTick)(()=>{if(Re(),n.value.ssrRange||n.value.initialScrollIndex!==void 0){let e=n.value.initialScrollIndex===void 0?n.value.ssrRange?.start:n.value.initialScrollIndex,r=n.value.initialScrollAlign||`start`;e!=null&&Ne(e,n.value.ssrRange?.colStart,{align:r,behavior:`auto`}),h.value=!0,_.value=!0,(0,t.nextTick)(()=>{_.value=!1})}else h.value=!0})}),(0,t.onUnmounted)(()=>{nt?.()})),{renderedItems:Ge,totalWidth:X,totalHeight:Z,renderedWidth:Te,renderedHeight:Ee,scrollDetails:Ke,getRowHeight:Me,getColumnWidth:je,getRowOffset:e=>Y.value+q.value+pe.value+N.query(e),getColumnOffset:e=>J.value+G.value+W.value+P.query(e),getItemOffset:e=>B.value===`horizontal`?J.value+G.value+W.value+M.query(e):Y.value+q.value+pe.value+N.query(e),getItemSize:e=>{if(B.value===`horizontal`)return Math.max(0,M.get(e)-(n.value.columnGap||0));let t=n.value.itemSize;if(typeof t==`number`&&t>0)return t;if(typeof t==`function`){let r=n.value.items[e];return r===void 0?n.value.defaultItemSize||40:t(r,e)}return Math.max(0,N.get(e)-(n.value.gap||0))},scrollToIndex:Ne,scrollToOffset:Pe,stopProgrammaticScroll:qe,updateItemSize:Xe,updateItemSizes:Ye,updateHostOffset:Re,updateDirection:j,columnRange:Ue,refresh:()=>{M.resize(0),N.resize(0),P.resize(0),I.fill(0),L.fill(0),R.fill(0),Le()},isHydrated:h,isWindowContainer:xe,isRtl:y,scaleX:Q,scaleY:ke,componentOffset:we,renderedVirtualWidth:De,renderedVirtualHeight:Oe}}function D(e){let n=(0,t.computed)(()=>(0,t.toValue)(e.axis)),r=(0,t.computed)(()=>(0,t.toValue)(e.totalSize)),i=(0,t.computed)(()=>(0,t.toValue)(e.position)),a=(0,t.computed)(()=>(0,t.toValue)(e.viewportSize)),o=(0,t.computed)(()=>(0,t.toValue)(e.containerId)),s=(0,t.computed)(()=>!!(0,t.toValue)(e.isRtl)),c=(0,t.computed)(()=>n.value===`horizontal`),l=(0,t.computed)(()=>r.value<=0?0:Math.min(1,a.value/r.value)),u=(0,t.computed)(()=>{let e=r.value-a.value;return e<=0?0:Math.max(0,Math.min(1,i.value/e))}),d=(0,t.computed)(()=>{let e=a.value>0?32/a.value:.1;return Math.max(Math.min(e,.1),l.value)*100}),f=(0,t.computed)(()=>u.value*(100-d.value)),p=(0,t.computed)(()=>c.value?{inlineSize:`${d.value}%`,insetInlineStart:`${f.value}%`}:{blockSize:`${d.value}%`,insetBlockStart:`${f.value}%`}),m=(0,t.computed)(()=>{let e=a.value,t=`var(--vs-scrollbar-has-cross-gap, var(--vsi-scrollbar-has-cross-gap, 0)) * var(--vs-scrollbar-cross-gap, var(--vsi-scrollbar-size, 8px))`;return c.value?{inlineSize:`calc(${Math.max(0,e-4)}px - ${t})`}:{blockSize:`calc(${Math.max(0,e-4)}px - ${t})`}}),h=(0,t.ref)(!1),g=0,_=0;function v(t){let n=t.currentTarget;if(t.target!==n)return;let i=n.getBoundingClientRect(),o=c.value?i.width:i.height,l=0;l=c.value?s.value?i.right-t.clientX:t.clientX-i.left:t.clientY-i.top;let u=d.value/100*o,f=(l-u/2)/(o-u),p=r.value-a.value,m=f*p;m>p-1&&(m=p),e.scrollToOffset(Math.max(0,Math.min(p,m)))}function y(e){h.value=!0,g=c.value?s.value?-e.clientX:e.clientX:e.clientY,_=i.value,e.currentTarget.setPointerCapture(e.pointerId),e.preventDefault(),e.stopPropagation()}function b(t){if(!h.value)return;let n=t.currentTarget.parentElement;if(!n)return;let i=(c.value?s.value?-t.clientX:t.clientX:t.clientY)-g,o=n.getBoundingClientRect(),l=c.value?o.width:o.height,u=l-d.value/100*l;if(u<=0)return;let f=r.value-a.value,p=_+i/u*f;p>f-1&&(p=f),e.scrollToOffset(Math.max(0,Math.min(f,p)))}function x(e){h.value&&(h.value=!1,e.currentTarget.releasePointerCapture(e.pointerId))}return(0,t.getCurrentInstance)()&&(0,t.onUnmounted)(()=>{h.value=!1}),{viewportPercent:l,positionPercent:u,thumbSizePercent:d,thumbPositionPercent:f,trackStyle:m,thumbStyle:p,trackProps:(0,t.computed)(()=>({class:[`virtual-scrollbar-track`,`virtual-scrollbar-track--${c.value?`horizontal`:`vertical`}`],style:m.value,role:`scrollbar`,"aria-orientation":n.value,"aria-valuenow":Math.round(i.value),"aria-valuemin":0,"aria-valuemax":Math.round(r.value-a.value),"aria-controls":o.value,tabindex:-1,onMousedown:v})),thumbProps:(0,t.computed)(()=>({class:[`virtual-scrollbar-thumb`,`virtual-scrollbar-thumb--${c.value?`horizontal`:`vertical`}`,{"virtual-scrollbar-thumb--active":h.value}],style:p.value,onPointerdown:y,onPointermove:b,onPointerup:x,onPointercancel:x})),isDragging:h}}var O=(0,t.defineComponent)({__name:`VirtualScrollbar`,props:{axis:{default:`vertical`},totalSize:{},position:{},viewportSize:{},scrollToOffset:{},containerId:{},isRtl:{type:Boolean,default:!1}},emits:[`scrollToOffset`],setup(e,{emit:n}){let r=e,i=n,{trackProps:a,thumbProps:o}=D({axis:()=>r.axis,totalSize:()=>r.totalSize,position:()=>r.position,viewportSize:()=>r.viewportSize,containerId:()=>r.containerId,isRtl:()=>r.isRtl,scrollToOffset:e=>{r.scrollToOffset?.(e),i(`scrollToOffset`,e)}});return(e,n)=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,(0,t.normalizeProps)((0,t.guardReactiveProps)((0,t.unref)(a))),[(0,t.createElementVNode)(`div`,(0,t.normalizeProps)((0,t.guardReactiveProps)((0,t.unref)(o))),null,16)],16))}}),k={key:0,class:`virtual-scroll-scrollbar-container`},A={key:0,class:`virtual-scroll-debug-info`},ae=.95,j=.1,M=((e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n})((0,t.defineComponent)({__name:`VirtualScroll`,props:{containerTag:{default:`div`},wrapperTag:{default:`div`},itemTag:{default:`div`},stickyHeader:{type:Boolean,default:!1},stickyFooter:{type:Boolean,default:!1},virtualScrollbar:{type:Boolean,default:!1},items:{},itemSize:{},direction:{default:`vertical`},bufferBefore:{default:5},bufferAfter:{default:5},container:{},ssrRange:{},columnCount:{default:0},columnWidth:{},scrollPaddingStart:{default:0},scrollPaddingEnd:{default:0},gap:{default:0},columnGap:{default:0},stickyIndices:{default:()=>[]},loadDistance:{default:200},loading:{type:Boolean,default:!1},restoreScrollOnPrepend:{type:Boolean,default:!1},initialScrollIndex:{},initialScrollAlign:{},defaultItemSize:{},defaultColumnWidth:{},debug:{type:Boolean,default:!1}},emits:[`scroll`,`load`,`visibleRangeChange`],setup(e,{expose:n,emit:r}){let i=e,a=r,o=(0,t.useSlots)(),s=(0,t.ref)(null),c=(0,t.ref)(null),l=(0,t.ref)(null),u=(0,t.ref)(null),d=new Map,m=(0,t.useId)(),h=(0,t.computed)(()=>`vs-container-${m}`),g=(0,t.ref)(0),_=(0,t.ref)(0),v=(0,t.computed)(()=>i.container===void 0?s.value:i.container),y=(0,t.computed)(()=>{let e=v.value;return e===s.value||typeof window<`u`&&(e===window||e===null)}),b=(0,t.computed)(()=>(i.items.length,{items:i.items,itemSize:i.itemSize,direction:i.direction,bufferBefore:i.bufferBefore,bufferAfter:i.bufferAfter,container:v.value,hostElement:c.value,hostRef:s.value,ssrRange:i.ssrRange,columnCount:i.columnCount,columnWidth:i.columnWidth,scrollPaddingStart:{x:f(i.scrollPaddingStart,i.direction),y:p(i.scrollPaddingStart,i.direction)},scrollPaddingEnd:{x:f(i.scrollPaddingEnd,i.direction),y:p(i.scrollPaddingEnd,i.direction)},flowPaddingStart:{x:0,y:i.stickyHeader?0:g.value},flowPaddingEnd:{x:0,y:i.stickyFooter?0:_.value},stickyStart:{x:0,y:i.stickyHeader&&y.value?g.value:0},stickyEnd:{x:0,y:i.stickyFooter&&y.value?_.value:0},gap:i.gap,columnGap:i.columnGap,stickyIndices:i.stickyIndices,loadDistance:i.loadDistance,loading:i.loading,restoreScrollOnPrepend:i.restoreScrollOnPrepend,initialScrollIndex:i.initialScrollIndex,initialScrollAlign:i.initialScrollAlign,defaultItemSize:i.defaultItemSize,defaultColumnWidth:i.defaultColumnWidth,debug:i.debug})),{isHydrated:x,isRtl:C,columnRange:ee,renderedItems:te,scrollDetails:w,renderedHeight:ne,renderedWidth:re,getColumnWidth:ie,getRowHeight:M,scrollToIndex:N,scrollToOffset:P,updateHostOffset:F,updateItemSizes:I,updateDirection:L,getItemOffset:R,getRowOffset:z,getColumnOffset:oe,getItemSize:se,refresh:B,stopProgrammaticScroll:V,scaleX:ce,scaleY:H,isWindowContainer:U,componentOffset:le,renderedVirtualWidth:ue,renderedVirtualHeight:de}=E(b),W=(0,t.computed)(()=>ce.value!==1||H.value!==1),fe=(0,t.computed)(()=>U.value?!1:i.virtualScrollbar===!0||ce.value!==1||H.value!==1);function pe(e){let{displayViewportSize:t}=w.value;e>=ne.value-t.height-.5?P(null,1/0):P(null,S(e,le.y,H.value))}function me(e){let{displayViewportSize:t}=w.value;e>=re.value-t.width-.5?P(1/0,null):P(S(e,le.x,ce.value),null)}let G=D({axis:`vertical`,totalSize:ne,position:(0,t.computed)(()=>w.value.displayScrollOffset.y),viewportSize:(0,t.computed)(()=>w.value.displayViewportSize.height),scrollToOffset:pe,containerId:h,isRtl:C}),K=D({axis:`horizontal`,totalSize:re,position:(0,t.computed)(()=>w.value.displayScrollOffset.x),viewportSize:(0,t.computed)(()=>w.value.displayViewportSize.width),scrollToOffset:me,containerId:h,isRtl:C}),q=(0,t.computed)(()=>i.direction===`both`?{...ee.value,padStart:0,padEnd:0}:ee.value);function he(){B(),L(),(0,t.nextTick)(()=>{let e=[];for(let[t,n]of d.entries())n&&e.push({index:t,inlineSize:n.offsetWidth,blockSize:n.offsetHeight,element:n});e.length>0&&I(e)})}(0,t.watch)(w,(e,t)=>{!x.value||!e||(a(`scroll`,e),(!t||!t.range||!t.columnRange||e.range.start!==t.range.start||e.range.end!==t.range.end||e.columnRange.start!==t.columnRange.start||e.columnRange.end!==t.columnRange.end)&&a(`visibleRangeChange`,{start:e.range.start,end:e.range.end,colStart:e.columnRange.start,colEnd:e.columnRange.end}),!i.loading&&(i.direction!==`horizontal`&&e.totalSize&&e.totalSize.height-(e.scrollOffset.y+e.viewportSize.height)<=i.loadDistance&&a(`load`,`vertical`),i.direction!==`vertical`&&e.totalSize&&e.totalSize.width-(e.scrollOffset.x+e.viewportSize.width)<=i.loadDistance&&a(`load`,`horizontal`)))}),(0,t.watch)(x,e=>{e&&w.value?.range&&w.value?.columnRange&&a(`visibleRangeChange`,{start:w.value.range.start,end:w.value.range.end,colStart:w.value.columnRange.start,colEnd:w.value.columnRange.end})},{once:!0});let J=typeof window>`u`?null:new ResizeObserver(F),ge=typeof window>`u`?null:new ResizeObserver(e=>{let t=[];for(let n of e){let e=n.target,r=Number(e.dataset.index),i=e.dataset.colIndex,a=n.contentRect.width,o=n.contentRect.height;n.borderBoxSize&&n.borderBoxSize.length>0?(a=n.borderBoxSize[0].inlineSize,o=n.borderBoxSize[0].blockSize):(a=e.offsetWidth,o=e.offsetHeight),i===void 0?Number.isNaN(r)||t.push({index:r,inlineSize:a,blockSize:o,element:e}):t.push({index:-1,inlineSize:a,blockSize:o,element:e})}t.length>0&&I(t)}),Y=typeof window>`u`?null:new ResizeObserver(()=>{g.value=l.value?.offsetHeight||0,_.value=u.value?.offsetHeight||0,F()});function _e(e,n){(0,t.watch)(e,(e,t)=>{t&&Y?.unobserve(t),e?Y?.observe(e):n.value=0},{immediate:!0})}_e(l,g),_e(u,_),(0,t.onMounted)(()=>{s.value&&J?.observe(s.value);for(let e of d.values())ge?.observe(e),i.direction===`both`&&e.querySelectorAll(`[data-col-index]`).forEach(e=>ge?.observe(e))}),(0,t.watch)([s,c],([e],[t])=>{t&&J?.unobserve(t),e&&J?.observe(e)}),(0,t.watch)([s,W],([e,t],[n,r])=>{let i=e!==n||t!==r;n&&i&&n.removeEventListener(`wheel`,Q),e&&i&&e.addEventListener(`wheel`,Q,{passive:!t})},{immediate:!0});function ve(e,t){if(e)d.set(t,e),ge?.observe(e),i.direction===`both`&&e.querySelectorAll(`[data-col-index]`).forEach(e=>ge?.observe(e));else{let e=d.get(t);e&&(ge?.unobserve(e),i.direction===`both`&&e.querySelectorAll(`[data-col-index]`).forEach(e=>ge?.unobserve(e)),d.delete(t))}}let ye=(0,t.ref)(!1),be={x:0,y:0},xe={x:0,y:0},Se={x:0,y:0},Ce=0,X={x:0,y:0},Z=null;function we(){let e=()=>{X.x*=ae,X.y*=ae;let t=w.value.scrollOffset.x,n=w.value.scrollOffset.y;P(t+X.x*16,n+X.y*16,{behavior:`auto`}),Math.abs(X.x)>j||Math.abs(X.y)>j?Z=requestAnimationFrame(e):Te()};Z=requestAnimationFrame(e)}function Te(){Z!==null&&(cancelAnimationFrame(Z),Z=null),X={x:0,y:0}}function Ee(e){V(),Te(),W.value&&(e.pointerType===`mouse`&&e.button!==0||(ye.value=!0,be={x:e.clientX,y:e.clientY},Se={x:e.clientX,y:e.clientY},Ce=performance.now(),xe={x:w.value.scrollOffset.x,y:w.value.scrollOffset.y},e.currentTarget.setPointerCapture(e.pointerId)))}function De(e){if(!ye.value)return;let t=performance.now(),n=t-Ce;if(n>0){let t=(Se.x-e.clientX)/n,r=(Se.y-e.clientY)/n;X.x=X.x*.2+t*.8,X.y=X.y*.2+r*.8}Se={x:e.clientX,y:e.clientY},Ce=t;let r=be.x-e.clientX,i=be.y-e.clientY;requestAnimationFrame(()=>{P(xe.x+r,xe.y+i,{behavior:`auto`})})}function Oe(e){ye.value&&(ye.value=!1,e.currentTarget.releasePointerCapture(e.pointerId),(Math.abs(X.x)>j||Math.abs(X.y)>j)&&(Math.abs(X.x)>4*Math.abs(X.y)?X.y=0:Math.abs(X.y)>4*Math.abs(X.x)&&(X.x=0),we()))}function Q(e){let{scrollOffset:t}=w.value;if(V(),W.value){e.preventDefault();let n=e.deltaX,r=e.deltaY;e.shiftKey&&n===0&&(n=r,r=0),P(t.x+n,t.y+r,{behavior:`auto`})}}function ke(e){let{viewportSize:t,scrollOffset:n}=w.value,r=i.direction!==`vertical`,a=i.direction!==`horizontal`,o=b.value.stickyStart,s=b.value.stickyEnd;switch(e.key){case`Home`:e.preventDefault(),V(),N(0,0,{behavior:Math.max(n.x,n.y)>10*(i.direction===`horizontal`?t.width:t.height)?`auto`:`smooth`,align:`start`});break;case`End`:{e.preventDefault(),V();let r=i.items.length-1,a=(i.columnCount||0)>0?i.columnCount-1:0,{totalSize:o}=w.value,s=Math.max(o.width-n.x-t.width,o.height-n.y-t.height)>10*(i.direction===`horizontal`?t.width:t.height)?`auto`:`smooth`;i.direction===`both`?N(r,a,{behavior:s,align:`end`}):N(i.direction===`vertical`?r:0,i.direction===`horizontal`?r:0,{behavior:s,align:`end`});break}case`ArrowUp`:{if(e.preventDefault(),V(),!a)return;let{currentIndex:t,scrollOffset:n}=w.value,r=n.y+o.y+b.value.scrollPaddingStart.y;z(t)<r-1?N(t,null,{align:`start`}):t>0&&N(t-1,null,{align:`start`});break}case`ArrowDown`:{if(e.preventDefault(),V(),!a)return;let{currentEndIndex:r}=w.value,o=n.y+t.height-(s.y+b.value.scrollPaddingEnd.y);z(r)+M(r)>o+1?N(r,null,{align:`end`}):r<i.items.length-1&&N(r+1,null,{align:`end`});break}case`ArrowLeft`:{if(e.preventDefault(),V(),!r)return;let{currentColIndex:a,currentEndColIndex:c}=w.value;if(C.value){let e=n.x+t.width-(s.x+b.value.scrollPaddingEnd.x);(i.columnCount?oe(c)+ie(c):R(c)+se(c))>e+1?N(null,c,{align:`end`}):c<(i.columnCount?i.columnCount-1:i.items.length-1)&&N(null,c+1,{align:`end`})}else{let e=n.x+o.x+b.value.scrollPaddingStart.x;(i.columnCount?oe(a):R(a))<e-1?N(null,a,{align:`start`}):a>0&&N(null,a-1,{align:`start`})}break}case`ArrowRight`:{if(e.preventDefault(),V(),!r)return;let{currentColIndex:a,currentEndColIndex:c}=w.value;if(C.value){let e=n.x+o.x+b.value.scrollPaddingStart.x;(i.columnCount?oe(a):R(a))<e-1?N(null,a,{align:`start`}):a>0&&N(null,a-1,{align:`start`})}else{let e=n.x+t.width-(s.x+b.value.scrollPaddingEnd.x);(i.columnCount?oe(c)+ie(c):R(c)+se(c))>e+1?N(null,c,{align:`end`}):c<(i.columnCount?i.columnCount-1:i.items.length-1)&&N(null,c+1,{align:`end`})}break}case`PageUp`:e.preventDefault(),V(),P(!a&&r?n.x-t.width:null,a?n.y-t.height:null);break;case`PageDown`:e.preventDefault(),V(),P(!a&&r?n.x+t.width:null,a?n.y+t.height:null);break}}(0,t.onUnmounted)(()=>{J?.disconnect(),ge?.disconnect(),Y?.disconnect()});let Ae=(0,t.computed)(()=>{let e={...i.direction===`vertical`?{}:{whiteSpace:`nowrap`}};return(fe.value||!U.value)&&(e.overflow=`auto`),W.value&&(e.touchAction=`none`),U.value?e:i.containerTag===`table`?{...e,display:`block`,minInlineSize:i.direction===`vertical`?`100%`:`auto`}:e}),$=(0,t.computed)(()=>{if(i.direction===`horizontal`)return null;let{displayViewportSize:e,displayScrollOffset:t}=w.value;if(ne.value<=e.height)return null;let n={axis:`vertical`,totalSize:ne.value,position:t.y,viewportSize:e.height,scrollToOffset:pe,containerId:h.value,isRtl:C.value};return{axis:`vertical`,positionPercent:G.positionPercent.value,viewportPercent:G.viewportPercent.value,thumbSizePercent:G.thumbSizePercent.value,thumbPositionPercent:G.thumbPositionPercent.value,trackProps:G.trackProps.value,thumbProps:G.thumbProps.value,scrollbarProps:n,isDragging:G.isDragging.value}}),je=(0,t.computed)(()=>{if(i.direction===`vertical`)return null;let{displayViewportSize:e,displayScrollOffset:t}=w.value;if(re.value<=e.width)return null;let n={axis:`horizontal`,totalSize:re.value,position:t.x,viewportSize:e.width,scrollToOffset:me,containerId:h.value,isRtl:C.value};return{axis:`horizontal`,positionPercent:K.positionPercent.value,viewportPercent:K.viewportPercent.value,thumbSizePercent:K.thumbSizePercent.value,thumbPositionPercent:K.thumbPositionPercent.value,trackProps:K.trackProps.value,thumbProps:K.thumbProps.value,scrollbarProps:n,isDragging:K.isDragging.value}}),Me=(0,t.computed)(()=>{let e=i.direction===`horizontal`,t=i.direction===`vertical`,n=i.direction===`both`,r={inlineSize:t?`100%`:`${ue.value}px`,blockSize:e?`100%`:`${de.value}px`};return x.value||(r.display=`flex`,r.flexDirection=e?`row`:`column`,(e||n)&&i.columnGap&&(r.columnGap=`${i.columnGap}px`),(t||n)&&i.gap&&(r.rowGap=`${i.gap}px`)),r}),Ne=(0,t.computed)(()=>{let e=i.direction===`horizontal`;return{display:e?`inline-block`:`block`,...e?{blockSize:`100%`,verticalAlign:`top`}:{inlineSize:`100%`}}}),Pe=(0,t.computed)(()=>({inlineSize:i.direction===`vertical`?`1px`:`${ue.value}px`,blockSize:i.direction===`horizontal`?`1px`:`${de.value}px`}));function Fe(e){let t=T({containerTag:i.containerTag||`div`,direction:i.direction,isHydrated:x.value,item:e,itemSize:i.itemSize,paddingStartX:b.value.scrollPaddingStart.x,paddingStartY:b.value.scrollPaddingStart.y,isRtl:C.value});return!x.value&&i.direction===`both`&&(t.display=`flex`,i.columnGap&&(t.columnGap=`${i.columnGap}px`)),t}let Ie=(0,t.computed)(()=>i.debug),Le=(0,t.computed)(()=>i.containerTag===`table`),Re=(0,t.computed)(()=>Le.value?`thead`:`div`),ze=(0,t.computed)(()=>Le.value?`tfoot`:`div`);return n({...(0,t.toRefs)(i),scrollDetails:w,columnRange:ee,getColumnWidth:ie,getRowHeight:M,getRowOffset:z,getColumnOffset:oe,getItemOffset:R,getItemSize:se,scrollToIndex:N,scrollToOffset:P,refresh:he,stopProgrammaticScroll:()=>{V(),Te()},updateDirection:L,isRtl:C,isHydrated:x,scaleX:ce,scaleY:H,renderedWidth:re,renderedHeight:ne,componentOffset:le,scrollbarPropsVertical:$,scrollbarPropsHorizontal:je}),(n,r)=>((0,t.openBlock)(),(0,t.createBlock)((0,t.resolveDynamicComponent)(e.containerTag),{id:h.value,ref_key:`hostRef`,ref:s,class:(0,t.normalizeClass)([`virtual-scroll-container`,[`virtual-scroll--${e.direction}`,{"virtual-scroll--hydrated":(0,t.unref)(x),"virtual-scroll--window":(0,t.unref)(U),"virtual-scroll--table":Le.value,"virtual-scroll--hide-scrollbar":fe.value}]]),style:(0,t.normalizeStyle)(Ae.value),tabindex:`0`,onKeydown:ke,onPointerdown:Ee,onPointermove:De,onPointerup:Oe,onPointercancel:Oe},{default:(0,t.withCtx)(()=>[fe.value?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,k,[(0,t.createElementVNode)(`div`,{class:`virtual-scroll-scrollbar-viewport`,style:(0,t.normalizeStyle)({inlineSize:`${(0,t.unref)(w).displayViewportSize.width}px`,blockSize:`${(0,t.unref)(w).displayViewportSize.height}px`,"--vsi-scrollbar-has-cross-gap":e.direction===`both`?1:0})},[o.scrollbar&&$.value?(0,t.renderSlot)(n.$slots,`scrollbar`,(0,t.normalizeProps)((0,t.mergeProps)({key:0},$.value)),void 0,!0):$.value?((0,t.openBlock)(),(0,t.createBlock)(O,(0,t.normalizeProps)((0,t.mergeProps)({key:1},$.value.scrollbarProps)),null,16)):(0,t.createCommentVNode)(``,!0),o.scrollbar&&je.value?(0,t.renderSlot)(n.$slots,`scrollbar`,(0,t.normalizeProps)((0,t.mergeProps)({key:2},je.value)),void 0,!0):je.value?((0,t.openBlock)(),(0,t.createBlock)(O,(0,t.normalizeProps)((0,t.mergeProps)({key:3},je.value.scrollbarProps)),null,16)):(0,t.createCommentVNode)(``,!0)],4)])):(0,t.createCommentVNode)(``,!0),o.header?((0,t.openBlock)(),(0,t.createBlock)((0,t.resolveDynamicComponent)(Re.value),{key:1,ref_key:`headerRef`,ref:l,class:(0,t.normalizeClass)([`virtual-scroll-header`,{"virtual-scroll--sticky":e.stickyHeader}])},{default:(0,t.withCtx)(()=>[(0,t.renderSlot)(n.$slots,`header`,{},void 0,!0)]),_:3},8,[`class`])):(0,t.createCommentVNode)(``,!0),((0,t.openBlock)(),(0,t.createBlock)((0,t.resolveDynamicComponent)(e.wrapperTag),{ref_key:`wrapperRef`,ref:c,class:`virtual-scroll-wrapper`,style:(0,t.normalizeStyle)(Me.value)},{default:(0,t.withCtx)(()=>[Le.value?((0,t.openBlock)(),(0,t.createBlock)((0,t.resolveDynamicComponent)(e.itemTag),{key:0,class:`virtual-scroll-spacer`,style:(0,t.normalizeStyle)(Pe.value)},{default:(0,t.withCtx)(()=>[...r[0]||=[(0,t.createElementVNode)(`td`,{style:{padding:`0`,border:`none`,"block-size":`inherit`}},null,-1)]]),_:1},8,[`style`])):(0,t.createCommentVNode)(``,!0),((0,t.openBlock)(!0),(0,t.createElementBlock)(t.Fragment,null,(0,t.renderList)((0,t.unref)(te),r=>((0,t.openBlock)(),(0,t.createBlock)((0,t.resolveDynamicComponent)(e.itemTag),{key:r.index,ref_for:!0,ref:e=>ve(e,r.index),"data-index":r.index,class:(0,t.normalizeClass)([`virtual-scroll-item`,{"virtual-scroll--sticky":r.isStickyActive,"virtual-scroll--debug":Ie.value}]),style:(0,t.normalizeStyle)(Fe(r))},{default:(0,t.withCtx)(()=>[(0,t.renderSlot)(n.$slots,`item`,{item:r.item,index:r.index,columnRange:q.value,getColumnWidth:(0,t.unref)(ie),gap:i.gap,columnGap:i.columnGap,isSticky:r.isSticky,isStickyActive:r.isStickyActive,isStickyActiveX:r.isStickyActiveX,isStickyActiveY:r.isStickyActiveY,offset:r.offset},void 0,!0),Ie.value?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,A,` #`+(0,t.toDisplayString)(r.index)+` (`+(0,t.toDisplayString)(Math.round(r.offset.x))+`, `+(0,t.toDisplayString)(Math.round(r.offset.y))+`) `,1)):(0,t.createCommentVNode)(``,!0)]),_:2},1032,[`data-index`,`class`,`style`]))),128))]),_:3},8,[`style`])),e.loading&&o.loading?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,{key:2,class:`virtual-scroll-loading`,style:(0,t.normalizeStyle)(Ne.value)},[(0,t.renderSlot)(n.$slots,`loading`,{},void 0,!0)],4)):(0,t.createCommentVNode)(``,!0),o.footer?((0,t.openBlock)(),(0,t.createBlock)((0,t.resolveDynamicComponent)(ze.value),{key:3,ref_key:`footerRef`,ref:u,class:(0,t.normalizeClass)([`virtual-scroll-footer`,{"virtual-scroll--sticky":e.stickyFooter}])},{default:(0,t.withCtx)(()=>[(0,t.renderSlot)(n.$slots,`footer`,{},void 0,!0)]),_:3},8,[`class`])):(0,t.createCommentVNode)(``,!0)]),_:3},40,[`id`,`class`,`style`]))}}),[[`__scopeId`,`data-v-408dd72c`]]);e.BROWSER_MAX_SIZE=i,e.DEFAULT_BUFFER=5,e.DEFAULT_COLUMN_WIDTH=100,e.DEFAULT_ITEM_SIZE=40,e.EMPTY_SCROLL_DETAILS=n,e.FenwickTree=r,e.VirtualScroll=M,e.VirtualScrollbar=O,e.calculateColumnRange=w,e.calculateItemPosition=re,e.calculateItemStyle=T,e.calculateRange=te,e.calculateScrollTarget=ee,e.calculateStickyItem=ne,e.calculateTotalSize=ie,e.displayToVirtual=S,e.findPrevStickyIndex=g,e.getPaddingX=f,e.getPaddingY=p,e.isBody=o,e.isElement=c,e.isItemVisible=x,e.isScrollToIndexOptions=d,e.isScrollableElement=l,e.isWindow=a,e.isWindowLike=s,e.scrollTo=u,e.useVirtualScroll=E,e.useVirtualScrollbar=D,e.virtualToDisplay=C});
2
2
  //# sourceMappingURL=index.js.map