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