@vielzeug/scroll 2.1.2 → 2.2.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/errors.cjs +1 -1
- package/dist/errors.cjs.map +1 -1
- package/dist/errors.d.ts +0 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +1 -1
- package/dist/errors.js.map +1 -1
- package/dist/scroll.cjs +1 -1
- package/dist/scroll.cjs.map +1 -1
- package/dist/scroll.iife.js +1 -1
- package/dist/scroll.iife.js.map +1 -1
- package/dist/scroll.js +1 -1
- package/dist/scroll.js.map +1 -1
- package/package.json +3 -2
package/dist/scroll.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
function e(){return new Map}var t=36,n=3;function r(e,t=0){return Number.isFinite(e)?Math.max(0,Math.floor(e)):t}function i(e,t){return!Number.isFinite(e)||e<=0||e>1e7?t:e}function a(e){return typeof Window<`u`&&e instanceof Window||typeof e.innerHeight==`number`&&typeof e.document==`object`}function o(e,t){if(typeof e==`number`){let n=r(e,t);return{end:n,start:n}}return{end:r(e?.end??t),start:r(e?.start??t)}}function s(e,t,n){let r=new ResizeObserver(e=>{for(let t of e)n(t)});return r.observe(t),e.addEventListener(`abort`,()=>r.disconnect(),{once:!0}),()=>r.disconnect()}function c(e,t){if(typeof e==`function`)return n=>{try{return i(e(n),t)}catch(e){return`${n}${e}`,t}};let n=typeof e==`number`?i(e,t):t;return()=>n}var l=class e extends Error{constructor(e,t){super(e,t),this.name=new.target.name,Object.setPrototypeOf(this,new.target.prototype)}static is(t){return t instanceof e}},u=class extends l{},d=class extends l{};function f(e,t){if(!Number.isFinite(e)||!Number.isInteger(e)||e<0)throw new u(`${t} must be a finite non-negative integer.`);return e}function p(e,t){if(!Number.isFinite(e)||e<0)throw new u(`${t} must be a finite non-negative number.`);return e}function m(e,t){if(!Number.isFinite(e)||e<=0||e>1e7)throw new u(`${t} must be a finite positive number no greater than 10000000.`);return e}function h(e,t=`overscan`){if(typeof e==`number`){f(e,t);return}if(typeof e!=`object`||!e||Array.isArray(e))throw new u(`${t} must be a finite non-negative integer or an overscan object.`);e.start!==void 0&&f(e.start,`${t}.start`),e.end!==void 0&&f(e.end,`${t}.end`)}function g(e,t,n){if(a(e))return e.addEventListener(`scroll`,t,{passive:!0}),e.addEventListener(`resize`,n,{passive:!0}),{detach(){e.removeEventListener(`scroll`,t),e.removeEventListener(`resize`,n)},scrollTo:(t,n,r)=>e.scrollTo({behavior:r,left:t,top:n}),x:{readOffset:()=>e.scrollX,readViewportSize:()=>e.innerWidth,writeOffset:(t,n)=>e.scrollTo({behavior:n,left:t})},y:{readOffset:()=>e.scrollY,readViewportSize:()=>e.innerHeight,writeOffset:(t,n)=>e.scrollTo({behavior:n,top:t})}};let r=new ResizeObserver(n);return e.addEventListener(`scroll`,t,{passive:!0}),r.observe(e),{detach(){e.removeEventListener(`scroll`,t),r.disconnect()},scrollTo:(t,n,r)=>e.scrollTo({behavior:r,left:t,top:n}),x:{readOffset:()=>e.scrollLeft,readViewportSize:()=>e.clientWidth,writeOffset:(t,n)=>e.scrollTo({behavior:n,left:t})},y:{readOffset:()=>e.scrollTop,readViewportSize:()=>e.clientHeight,writeOffset:(t,n)=>e.scrollTo({behavior:n,top:t})}}}function _(e,t,n){let r=e,i=n,a=t,o=[],s=0,c=-1,l=-1,u=-1,d=!1,f=1/0;function p(e){return o[e]??0}function m(e){return p(e)+a(e)}function h(e=!1){e&&(c=-1,l=-1,u=-1);let t=[0],n=0;for(let e=0;e<r;e++)n+=a(e)+(e<r-1?i:0),t.push(n);o=t,s=n}function g(e){if(!Number.isFinite(e)||e>=r)return;c=-1,l=-1,u=-1;let t=o[e]??0;for(let n=e;n<r;n++)o[n]=t,t+=a(n)+(n<r-1?i:0);o[r]=t,s=t}function _(e){let t=0,n=r-1;for(;t<n;){let r=t+n>>1;m(r)<=e?t=r+1:n=r}return t}function v(e,t){let n=t,i=r-1;for(;n<i;){let t=n+i+1>>1;p(t)<e?n=t:i=t-1}return n}function y(e,t,n,i){let a=_(e),o=v(t,a);return{renderEnd:Math.min(r-1,o+i),renderStart:Math.max(0,a-n)}}function b(e,t){return e===c&&t===l&&s===u}function x(e,t){c=e,l=t,u=s}function S(){c=-1,l=-1,u=-1}function C(e){d||(d=!0,queueMicrotask(()=>{d=!1;let t=f;f=1/0,g(t),e()}))}function w(e){e<f&&(f=e)}function T(e){let t=p(e),n=a(e);return{end:t+n,index:e,size:n,start:t}}return{commitDedup:x,computeRange:y,consumeMinChangedIndex(){let e=f;return f=1/0,e},get count(){return r},endAt:m,findFirst:_,findLast:v,get gap(){return i},isDedupSame:b,itemAt:T,markChanged:w,get minChangedIndex(){return f},get pendingBuild(){return d},get prevEnd(){return l},get prevStart(){return c},get prevTotalSize(){return u},rebuild:h,rebuildFrom:g,resetDedup:S,scheduleBuild:C,setCount(e){r=e},setGap(e){i=e},sizeAt(e){return a(e)},startAt:p,get totalSize(){return s}}}function v(e){if(!e.stickyFn||e.count===0||e.scrollOffset<=0)return[];let t=-1,n=0,r=e.count-1;for(;n<=r;){let i=n+r>>1;e.startAt(i)<e.scrollOffset?(t=i,n=i+1):r=i-1}if(t<0)return[];let i=-1;for(let n=t;n>=0;n--)if(e.stickyFn(n)){i=n;break}if(i===-1)return[];let a=e.sizeAt(i),o=1/0;for(let t=i+1;t<e.count;t++)if(e.stickyFn(t)){o=e.startAt(t);break}let s=Math.min(e.scrollOffset,o-a);return[{end:s+a,index:i,size:a,start:s}]}function y(e,t){typeof t.estimateSize==`number`&&m(t.estimateSize,`estimateSize`),t.gap!==void 0&&f(t.gap,`gap`),t.initialOffset!==void 0&&p(t.initialOffset,`initialOffset`),t.overscan!==void 0&&h(t.overscan),t.scrollEndDelay!==void 0&&p(t.scrollEndDelay,`scrollEndDelay`);let n=!!t.horizontal,a=e=>e,l=t.keyboardScroll??!1,u=f(t.count,`count`),d=c(t.estimateSize,36),y=r(t.gap??0),b=t.getItemKey??a,x=o(t.overscan,3),S=t.sticky??null,C=l,w=t.autoMeasure??!1,T=t.onChange,E=t.onScrollEnd,D=t.onScrollingChange,O=t.scrollEndDelay??150,k=null;t.signal&&(k=t.signal({items:[],stickyItems:[],totalSize:0}));function A(e){k&&(k.value=e),T?.(e)}let j=null,M=`onscrollend`in e;function N(){G&&(G=!1,D?.(!1),E?.(V))}function P(){G||(G=!0,D?.(!0)),M||(j!==null&&clearTimeout(j),j=setTimeout(N,O))}let F=t.measurementCache??new Map,I=[],L=[],R=_(u,e=>F.get(b(e))??d(e),y),z=-1,B=0,V=0,H=0,U=-1,W=!1,G=!1;function K(e){let t=Number.isFinite(e)?e:0,n=Math.max(0,R.totalSize-H);return Math.min(n,Math.max(0,t))}function q(){if(W)return;if(u===0||H<=0){(R.prevStart!==-1||R.prevTotalSize!==R.totalSize)&&(R.commitDedup(-1,-1),I=[],L=[],A({items:I,stickyItems:L,totalSize:R.totalSize}));return}let{renderEnd:t,renderStart:n}=R.computeRange(V,V+H,x.start,x.end),r=S!==null&&V!==U;if(R.isDedupSame(n,t)&&!r)return;R.commitDedup(n,t),U=V;let i=[];for(let e=n;e<=t;e++)i.push(R.itemAt(e));I=i,L=S?v({count:u,scrollOffset:V,sizeAt:R.sizeAt,startAt:R.startAt,stickyFn:S}):[],A({items:I,stickyItems:L,totalSize:R.totalSize}),w&&I.length>0&&queueMicrotask(()=>{if(!(W||e instanceof Window))for(let t of I){let n=b(t.index),r=e?.querySelector?.(`[data-vz-key="${n}"]`);r instanceof HTMLElement&&re(t.index,r)}})}function ee(e,t){if(!Number.isFinite(e))return!1;let n=Math.floor(e);if(n<0||n>=u)return!1;let r=i(t,-1);if(r<=0)return!1;let a=b(n);return F.get(a)!==r&&(F.set(a,r),R.markChanged(n),!0)}function te(){if(V<=0||u===0){z=-1;return}z=R.findFirst(V),B=V-R.startAt(z)}function J(){if(z<0)return;let e=R.startAt(z)+B-V;if(z=-1,Math.abs(e)>=1){let t=K(V+e);$.writeOffset(t,`auto`),V=t}}function Y(e){if(W)return;let t=!1;for(let{index:n,size:r}of e)ee(n,r)&&(t=!0);t&&(R.pendingBuild||te(),R.scheduleBuild(()=>{J(),q()}))}function ne(e,t){Y([{index:e,size:t}])}function re(e,t){return W?()=>{}:s(Q.signal,t,t=>{ne(e,n?t.contentRect.width:t.contentRect.height)})}function ie(e){e.count!==void 0&&f(e.count,`count`),typeof e.estimateSize==`number`&&m(e.estimateSize,`estimateSize`),e.gap!==void 0&&f(e.gap,`gap`),e.overscan!==void 0&&h(e.overscan),e.scrollEndDelay!==void 0&&p(e.scrollEndDelay,`scrollEndDelay`);let t=!1,n=!1;if(Object.hasOwn(e,`onChange`)&&(T=e.onChange),Object.hasOwn(e,`onScrollEnd`)&&(E=e.onScrollEnd),Object.hasOwn(e,`onScrollingChange`)&&(D=e.onScrollingChange),e.scrollEndDelay!==void 0&&(O=e.scrollEndDelay),e.count!==void 0){let n=e.count;n!==u&&(u=n,R.setCount(u),t=!0)}if(Object.hasOwn(e,`estimateSize`)&&(d=c(e.estimateSize,36),F.clear(),t=!0),e.gap!==void 0){let n=e.gap;n!==y&&(y=n,R.setGap(y),t=!0)}if(Object.hasOwn(e,`getItemKey`)){let n=e.getItemKey??a;n!==b&&(b=n,F.clear(),t=!0)}if(Object.hasOwn(e,`measurementCache`)&&e.measurementCache!==void 0&&(F=e.measurementCache,t=!0),e.overscan!==void 0){let t=o(e.overscan,3);(t.start!==x.start||t.end!==x.end)&&(x=t,n=!0)}if(Object.hasOwn(e,`sticky`)){let t=e.sticky??null;t!==S&&(S=t,R.resetDedup()),n=!0}Object.hasOwn(e,`keyboardScroll`)&&(C=e.keyboardScroll??!1),Object.hasOwn(e,`autoMeasure`)&&(w=e.autoMeasure??!1),t&&(te(),R.rebuild(!0),J()),(n||t)&&q()}function X(){W||(F.clear(),R.rebuild(!0),q())}function ae(){W||(R.rebuild(!0),q())}function oe(e){if(W)return;let t=r(e);if(t===0)return;u+=t,R.setCount(u),R.rebuild(!0);let n=R.startAt(t),i=K(V+n);$.writeOffset(i,`auto`),V=i,q()}function se(e){W||ie(e)}function Z(t,n={}){if(W||u<=0)return;let r=Math.max(0,Math.min(Number.isFinite(t)?Math.floor(t):0,u-1)),i=n.align??`auto`,a=n.behavior??`auto`,o=R.startAt(r),s=R.sizeAt(r),c=o+s,l;if(i===`start`)l=o;else if(i===`end`)l=c-H;else if(i===`center`)l=o-(H-s)/2;else{let e=V,t=e+H;if(o>=e&&c<=t){n.onComplete&&queueMicrotask(n.onComplete);return}l=o<e?o:c-H}$.writeOffset(K(l),a),n.onComplete&&(a===`smooth`&&`onscrollend`in e?e.addEventListener(`scrollend`,n.onComplete,{once:!0}):queueMicrotask(n.onComplete))}function ce(e,t={}){W||$.writeOffset(K(e),t.behavior??`auto`)}function le(e={}){ce(0,e)}function ue(e={}){ce(Math.max(0,R.totalSize-H),e)}function de(e=0){return R.totalSize-(V+H)<=e}let Q=new AbortController;function fe(){W||(W=!0,Q.abort(),j!==null&&(clearTimeout(j),j=null),M&&e.removeEventListener(`scrollend`,N),he.detach())}function pe(){V=K($.readOffset()),P(),q()}function me(){H=$.readViewportSize(),q()}let he=g(e,pe,me),$=n?he.x:he.y;if(C){let t=e=>{if(W||!(e instanceof KeyboardEvent)||u===0)return;let t=!1,n=V,r=Math.max(H*.8,H-100);switch(e.key){case`ArrowUp`:case`ArrowLeft`:{let e=typeof d(0)==`number`?d(0):36;n=Math.max(0,V-(e+y)),t=!0;break}case`ArrowDown`:case`ArrowRight`:{let e=typeof d(0)==`number`?d(0):36;n=Math.min(R.totalSize-H,V+(e+y)),t=!0;break}case`PageUp`:n=Math.max(0,V-r),t=!0;break;case`PageDown`:n=Math.min(R.totalSize-H,V+r),t=!0;break;case`Home`:n=0,t=!0;break;case`End`:n=Math.max(0,R.totalSize-H),t=!0}t&&(e.preventDefault(),$.writeOffset(n,`auto`),V=K(n),q())};typeof e==`object`&&e&&`addEventListener`in e&&(e.addEventListener(`keydown`,t),Q.signal.addEventListener(`abort`,()=>{e.removeEventListener(`keydown`,t)}))}return M&&e.addEventListener(`scrollend`,N,{passive:!0}),R.rebuild(!0),t.initialOffset!==void 0&&$.writeOffset(K(t.initialOffset),`auto`),V=K($.readOffset()),H=$.readViewportSize(),q(),{get count(){return u},get disposalSignal(){return Q.signal},dispose:fe,get disposed(){return W},invalidate:X,isAtEnd:de,get isScrolling(){return G},get items(){return I},measure:ne,measureBatch:Y,measureEl:re,prepend:oe,refresh:ae,get scrollOffset(){return V},scrollToBottom:ue,scrollToIndex:Z,scrollToOffset:ce,scrollToTop:le,get stickyItems(){return L},[Symbol.dispose]:fe,get totalSize(){return R.totalSize},update:se}}function b(){let e=new Map,t=new Map,n=[],r=!1;return{acquire(i,a){if(!r)return a();let o=e.get(i);if(o)return t.set(i,o),o;let s=n.pop()??a();return t.set(i,s),s},beginCycle(){t=new Map,r=!0},clear(){for(let t of e.values())t.remove();e.clear(),t.clear(),n.length=0,r=!1},endCycle(){if(r){r=!1;for(let[r,i]of e)t.has(r)||(i.remove(),n.push(i));e=t}}}}function x(e){if(typeof e.estimateSize==`number`&&m(e.estimateSize,`estimateSize`),e.gap!==void 0&&f(e.gap,`gap`),e.overscan!==void 0&&h(e.overscan),e.stickToBottom!==void 0&&typeof e.stickToBottom!=`boolean`){if(e.stickToBottom===null||Array.isArray(e.stickToBottom))throw new u(`stickToBottom must be a boolean or options object.`);e.stickToBottom.threshold!==void 0&&p(e.stickToBottom.threshold,`stickToBottom.threshold`)}let t=[],n=!1,r=new AbortController,i=e.listElement,a=null;e.signal&&(a=e.signal({items:[],stickyItems:[],totalSize:0}));function o(e){a&&(a.value=e),x(e)}let s=b(),c=null;function l(n){let r=t[n];return r!==void 0&&e.getItemKey?e.getItemKey(n,r):n}function g(n){if(e.estimateSize===void 0)return 36;if(typeof e.estimateSize==`number`)return e.estimateSize;let r=t[n];return r===void 0?36:e.estimateSize(n,r)}function _(t){e.horizontal?(i.style.height=``,i.style.width=`${t}px`):(i.style.height=`${t}px`,i.style.width=``)}function v(e){let n=t[e.index];if(n===void 0)throw new d(`toRenderItem: index ${e.index} is out of range (currentItems.length=${t.length})`);return{...e,data:n}}function x(t){_(t.totalSize),s.beginCycle();try{e.render({items:t.items.map(v),listEl:i,recycle:(e,t)=>s.acquire(e,t),stickyItems:t.stickyItems.map(v),totalSize:t.totalSize})}finally{s.endCycle()}}function S(){s.clear(),e.clear?e.clear(i):i.textContent=``,i.style.height=``,i.style.width=``,i.style.position=``,i.style.contain=``}function C(){let t=e.stickToBottom;return t?t===!0?{enabled:!0,threshold:48}:{enabled:t.enabled??!0,threshold:t.threshold??48}:{enabled:!1,threshold:48}}function w(){let n=y(e.scrollElement,{count:t.length,estimateSize:g,gap:e.gap,getItemKey:l,horizontal:e.horizontal,keyboardScroll:e.keyboardScroll,measurementCache:e.measurementCache,onChange:o,overscan:e.overscan??3,sticky:e.sticky?n=>{let r=t[n];return r!==void 0&&e.sticky(n,r)}:void 0});return c=n,i.style.position=`relative`,i.style.contain=`layout`,n}function T(){n||(n=!0,r.abort(),c?.dispose(),c=null,S())}return{get count(){return c?.count??0},get disposalSignal(){return r.signal},dispose:T,get disposed(){return n},invalidate(){n||c?.invalidate()},isAtEnd(e){return c?.isAtEnd(e)??!0},get isScrolling(){return c?.isScrolling??!1},get items(){return c?.items??[]},measure(e,t){n||c?.measure(e,t)},measureBatch(e){n||c?.measureBatch(e)},measureEl(e,t){return n?()=>{}:c?.measureEl(e,t)??(()=>{})},refresh(){n||c?.refresh()},get scrollOffset(){return c?.scrollOffset??0},scrollToBottom(e){n||c?.scrollToBottom(e)},scrollToIndex(e,t){n||c?.scrollToIndex(e,t)},scrollToOffset(e,t){n||c?.scrollToOffset(e,t)},scrollToTop(e){n||c?.scrollToTop(e)},setItems(r){if(n)return;let i=C(),a=i.enabled&&(c?.isAtEnd(i.threshold)??!0);if(t=r,r.length===0){c?.dispose(),c=null,S();return}if(!c){let e=w();a&&e.scrollToBottom();return}let o=r.length!==c.count;c.update({count:r.length}),o?e.getItemKey||c.invalidate():e.getItemKey?c.refresh():c.invalidate(),a&&c.scrollToBottom()},get stickyItems(){return c?.stickyItems??[]},[Symbol.dispose]:T,get totalSize(){return c?.totalSize??0}}}function S(e,t){let n=document.createElement(`div`);n.style.cssText=t.horizontal?`overflow: auto hidden; width: 100%; height: 100%;`:`overflow: hidden auto; width: 100%; height: 100%;`,t.containerClass&&(n.className=t.containerClass);let r=document.createElement(`div`);n.appendChild(r),e.appendChild(n);let i;try{i=x({...t,listElement:r,scrollElement:n})}catch(e){throw n.remove(),e}let a=i.dispose.bind(i);return Object.assign(i,{dispose(){a(),n.remove()},[Symbol.dispose](){a(),n.remove()}})}function C(e,t,n,r,i,a){return a===`start`?e:a===`end`?t-i:a===`center`?e-(i-n)/2:e>=r&&t<=r+i?null:e<r?e:t-i}function w(e,t){typeof t.estimateRowSize==`number`&&m(t.estimateRowSize,`estimateRowSize`),typeof t.estimateColSize==`number`&&m(t.estimateColSize,`estimateColSize`),t.initialScrollTop!==void 0&&p(t.initialScrollTop,`initialScrollTop`),t.initialScrollLeft!==void 0&&p(t.initialScrollLeft,`initialScrollLeft`),t.rowGap!==void 0&&f(t.rowGap,`rowGap`),t.colGap!==void 0&&f(t.colGap,`colGap`),t.overscanY!==void 0&&h(t.overscanY,`overscanY`),t.overscanX!==void 0&&h(t.overscanX,`overscanX`);let n=f(t.rowCount,`rowCount`),a=f(t.colCount,`colCount`),l=c(t.estimateRowSize,36),u=c(t.estimateColSize,36),d=o(t.overscanY,3),v=o(t.overscanX,3),y=t.keyboardScroll??!1,b=t.onChange,x=t.onRangeChange,S=null;t.signal&&(S=t.signal({cols:[],rows:[],totalHeight:0,totalWidth:0}));function w(e){S&&(S.value=e),b?.(e)}let T=t.rowMeasurementCache??new Map,E=t.colMeasurementCache??new Map,D=0,O=0,k=0,A=0,j=[],M=[],N=!1,P=_(n,e=>T.get(e)??l(e),r(t.rowGap??0)),F=_(a,e=>E.get(e)??u(e),r(t.colGap??0)),I=!1;function L(e){let t=Number.isFinite(e)?e:0;return Math.min(Math.max(0,P.totalSize-k),Math.max(0,t))}function R(e){let t=Number.isFinite(e)?e:0;return Math.min(Math.max(0,F.totalSize-A),Math.max(0,t))}function z(){if(N)return;let e=P.totalSize,t=F.totalSize;if(n===0||a===0||k<=0||A<=0){(P.prevStart!==-1||P.prevTotalSize!==e||F.prevTotalSize!==t)&&(P.commitDedup(-1,-1),F.commitDedup(-1,-1),j=[],M=[],w({cols:[],rows:[],totalHeight:e,totalWidth:t}));return}let{renderEnd:r,renderStart:i}=P.computeRange(D,D+k,d.start,d.end),{renderEnd:o,renderStart:s}=F.computeRange(O,O+A,v.start,v.end),c=P.isDedupSame(i,r),l=F.isDedupSame(s,o);if(c&&l)return;P.commitDedup(i,r),F.commitDedup(s,o),(!c||!l)&&x&&x({firstCol:s,firstRow:i,lastCol:o,lastRow:r});let u=[];for(let e=i;e<=r;e++)u.push(P.itemAt(e));let f=[];for(let e=s;e<=o;e++)f.push(F.itemAt(e));j=u,M=f,w({cols:M,rows:j,totalHeight:e,totalWidth:t})}function B(e,t){if(!Number.isFinite(e))return!1;let r=Math.floor(e);if(r<0||r>=n)return!1;let a=i(t,-1);return a<=0||T.get(r)===a?!1:(T.set(r,a),P.markChanged(r),!0)}function V(e,t){if(!Number.isFinite(e))return!1;let n=Math.floor(e);if(n<0||n>=a)return!1;let r=i(t,-1);return r<=0||E.get(n)===r?!1:(E.set(n,r),F.markChanged(n),!0)}function H(){I||(I=!0,queueMicrotask(()=>{I=!1;let e=P.consumeMinChangedIndex();e!==1/0&&P.rebuildFrom(e);let t=F.consumeMinChangedIndex();t!==1/0&&F.rebuildFrom(t),z()}))}function U(e,t){N||B(e,t)&&H()}function W(e,t){N||V(e,t)&&H()}function G(e,t){if(N)return;let n=!1;for(let{index:t,size:r}of e)B(t,r)&&(n=!0);for(let{index:e,size:r}of t)V(e,r)&&(n=!0);n&&H()}function K(e,t){return N?()=>{}:s(X.signal,t,t=>U(e,t.contentRect.height))}function q(e,t){return N?()=>{}:s(X.signal,t,t=>W(e,t.contentRect.width))}function ee(){N||(T.clear(),E.clear(),P.rebuild(!0),F.rebuild(!0),z())}function te(){N||(P.rebuild(!0),F.rebuild(!0),z())}function J(e){if(N)return;let t=r(e);if(t===0)return;n+=t,P.setCount(n),P.rebuild(!0);let i=P.startAt(t),a=L(D+i);Z.scrollTo(O,a,`auto`),D=a,z()}function Y(e,t={}){if(N||n===0)return;let r=Math.max(0,Math.min(Math.floor(Number.isFinite(e)?e:0),n-1)),i=t.behavior??`auto`,a=P.startAt(r),o=P.sizeAt(r),s=C(a,a+o,o,D,k,t.rowAlign??`auto`);s!==null&&Z.scrollTo(O,L(s),i)}function ne(e,t={}){if(N||a===0)return;let n=Math.max(0,Math.min(Math.floor(Number.isFinite(e)?e:0),a-1)),r=t.behavior??`auto`,i=F.startAt(n),o=F.sizeAt(n),s=C(i,i+o,o,O,A,t.colAlign??`auto`);s!==null&&Z.scrollTo(R(s),D,r)}function re(e,t,r={}){if(N||n===0||a===0)return;let i=Math.max(0,Math.min(Math.floor(Number.isFinite(e)?e:0),n-1)),o=Math.max(0,Math.min(Math.floor(Number.isFinite(t)?t:0),a-1)),s=r.behavior??`auto`,c=P.startAt(i),l=P.sizeAt(i),u=F.startAt(o),d=F.sizeAt(o),f=C(c,c+l,l,D,k,r.rowAlign??`auto`),p=C(u,u+d,d,O,A,r.colAlign??`auto`);(f!==null||p!==null)&&Z.scrollTo(p===null?O:R(p),f===null?D:L(f),s)}function ie(e){if(N)return;e.rowCount!==void 0&&f(e.rowCount,`rowCount`),e.colCount!==void 0&&f(e.colCount,`colCount`),typeof e.estimateRowSize==`number`&&m(e.estimateRowSize,`estimateRowSize`),typeof e.estimateColSize==`number`&&m(e.estimateColSize,`estimateColSize`),e.rowGap!==void 0&&f(e.rowGap,`rowGap`),e.colGap!==void 0&&f(e.colGap,`colGap`),e.overscanY!==void 0&&h(e.overscanY,`overscanY`),e.overscanX!==void 0&&h(e.overscanX,`overscanX`);let t=!1,r=!1,i=!1;if(Object.hasOwn(e,`onChange`)&&(b=e.onChange),Object.hasOwn(e,`onRangeChange`)&&(x=e.onRangeChange),e.rowCount!==void 0){let r=e.rowCount;r!==n&&(n=r,P.setCount(n),t=!0)}if(e.colCount!==void 0){let t=e.colCount;t!==a&&(a=t,F.setCount(a),r=!0)}if(e.rowGap!==void 0){let n=e.rowGap;n!==P.gap&&(P.setGap(n),t=!0)}if(e.colGap!==void 0){let t=e.colGap;t!==F.gap&&(F.setGap(t),r=!0)}if(`estimateRowSize`in e&&(l=c(e.estimateRowSize,36),T.clear(),t=!0),`estimateColSize`in e&&(u=c(e.estimateColSize,36),E.clear(),r=!0),e.overscanY!==void 0){let t=o(e.overscanY,3);(t.start!==d.start||t.end!==d.end)&&(d=t,i=!0)}if(e.overscanX!==void 0){let t=o(e.overscanX,3);(t.start!==v.start||t.end!==v.end)&&(v=t,i=!0)}Object.hasOwn(e,`keyboardScroll`)&&(y=e.keyboardScroll??!1),t&&P.rebuild(!0),r&&F.rebuild(!0),(t||r||i)&&z()}let X=new AbortController;function ae(){N||(N=!0,X.abort(),Z.detach())}function oe(){D=L(Z.y.readOffset()),O=R(Z.x.readOffset()),z()}function se(){k=Z.y.readViewportSize(),A=Z.x.readViewportSize(),z()}let Z=g(e,oe,se);if(P.rebuild(!0),F.rebuild(!0),k=Z.y.readViewportSize(),A=Z.x.readViewportSize(),t.initialScrollTop===void 0?t.initialScrollLeft!==void 0&&Z.scrollTo(R(t.initialScrollLeft),0,`auto`):Z.scrollTo(t.initialScrollLeft??0,L(t.initialScrollTop),`auto`),D=L(Z.y.readOffset()),O=R(Z.x.readOffset()),z(),y){let i=e=>{if(N||!(e instanceof KeyboardEvent)||n===0||a===0)return;let i=!1,o=D,s=O,c=Math.max(k*.8,k-100),d=(typeof l(0)==`number`?l(0):36)+r(t.rowGap??0),f=(typeof u(0)==`number`?u(0):36)+r(t.colGap??0);switch(e.key){case`ArrowUp`:o=Math.max(0,D-d),i=!0;break;case`ArrowDown`:o=Math.min(P.totalSize-k,D+d),i=!0;break;case`ArrowLeft`:s=Math.max(0,O-f),i=!0;break;case`ArrowRight`:s=Math.min(F.totalSize-A,O+f),i=!0;break;case`PageUp`:o=Math.max(0,D-c),i=!0;break;case`PageDown`:o=Math.min(P.totalSize-k,D+c),i=!0;break;case`Home`:o=0,i=!0;break;case`End`:o=Math.max(0,P.totalSize-k),i=!0}i&&(e.preventDefault(),Z.scrollTo(s,o,`auto`),D=L(o),O=R(s),N||z())};typeof e==`object`&&e&&`addEventListener`in e&&(e.addEventListener(`keydown`,i),X.signal.addEventListener(`abort`,()=>{e.removeEventListener(`keydown`,i)}))}return{get cols(){return M},get disposalSignal(){return X.signal},dispose:ae,get disposed(){return N},invalidate:ee,measureBatch:G,measureColEl:q,measureColumn:W,measureRow:U,measureRowEl:K,prependRows:J,refresh:te,get rows(){return j},get scrollLeft(){return O},scrollToCell:re,scrollToColumn:ne,get scrollTop(){return D},scrollToRow:Y,[Symbol.dispose]:ae,get totalHeight(){return P.totalSize},get totalWidth(){return F.totalSize},update:ie}}function T(e){let t=[];for(let n=0;n<e.length;n++){let r=e[n];t.push({isHeader:!0,itemIndex:-1,label:r.label,sectionIndex:n});for(let e=0;e<r.items.length;e++)t.push({isHeader:!1,item:r.items[e],itemIndex:e,sectionIndex:n})}return t}function E(e,t){typeof t.estimateHeaderSize==`number`&&m(t.estimateHeaderSize,`estimateHeaderSize`),typeof t.estimateItemSize==`number`&&m(t.estimateItemSize,`estimateItemSize`),t.overscan!==void 0&&h(t.overscan),t.scrollEndDelay!==void 0&&p(t.scrollEndDelay,`scrollEndDelay`);let n=t.sections,r=T(n);function i(e){return typeof e==`function`?t=>{let i=r[t];return e(n[i.sectionIndex],i.sectionIndex)}:c(typeof e==`number`?e:void 0,36)}let a=i(t.estimateHeaderSize),o=typeof t.estimateItemSize==`function`?t.estimateItemSize:null,s=o?null:c(typeof t.estimateItemSize==`number`?t.estimateItemSize:void 0,36),l=t.getItemKey;function u(e){let t=r[e];return t?t.isHeader?a(e):o?o(t.item,t.itemIndex,t.sectionIndex):s(e):36}function d(e){let t=r[e];return t?t.isHeader?`__header_${t.sectionIndex}`:l?l(t.item,t.itemIndex,t.sectionIndex):e:e}let f=!1,g=[],_=t.onChange,v=t.onScrollEnd,b=t.onScrollingChange,x=null;t.signal&&(x=t.signal({headers:[],items:[],stickyHeader:null,totalSize:0}));function S(e){x&&(x.value=e),_?.(e)}function C(e){let t=[],n=[],i=null;for(let i of e.items){let e=r[i.index];e&&(e.isHeader?n.push({...i,label:e.label??``,sectionIndex:e.sectionIndex}):t.push({...i,data:e.item,itemIndex:e.itemIndex,sectionIndex:e.sectionIndex}))}if(e.stickyItems.length>0){let t=e.stickyItems[0],n=r[t.index];n?.isHeader&&(i={...t,label:n.label??``,sectionIndex:n.sectionIndex})}return g=t,{headers:n,items:t,stickyHeader:i,totalSize:e.totalSize}}let w=y(e,{count:r.length,estimateSize:u,getItemKey:d,horizontal:t.horizontal,measurementCache:t.measurementCache,onChange:e=>{S(C(e))},onScrollEnd:e=>v?.(e),onScrollingChange:e=>b?.(e),overscan:t.overscan??3,scrollEndDelay:t.scrollEndDelay,sticky:e=>r[e]?.isHeader??!1}),E=new AbortController;function D(){f||(f=!0,E.abort(),w.dispose())}function O(e,t){if(e<0||e>=n.length)return-1;let r=0;for(let i=0;i<n.length;i++){if(i===e)return t===void 0?r:r+1+t;r+=1+n[i].items.length}return-1}return{get count(){return w.count},get disposalSignal(){return E.signal},dispose:D,get disposed(){return f},invalidate(){f||w.invalidate()},get isScrolling(){return w.isScrolling},get items(){return g},measure(e,t){f||w.measure(e,t)},measureBatch(e){f||w.measureBatch(e)},measureEl(e,t){return f?()=>{}:w.measureEl(e,t)},refresh(){f||w.refresh()},get scrollOffset(){return w.scrollOffset},scrollToBottom(e){f||w.scrollToBottom(e)},scrollToIndex(e,t){f||w.scrollToIndex(e,t)},scrollToItem(e,t,n={}){if(f)return;let r=O(e,t);r<0||w.scrollToIndex(r,n)},scrollToOffset(e,t){f||w.scrollToOffset(e,t)},scrollToSection(e,t={}){if(f)return;let n=O(e);n<0||w.scrollToIndex(n,t)},scrollToTop(e){f||w.scrollToTop(e)},get stickyItems(){return w.stickyItems},[Symbol.dispose]:D,get totalSize(){return w.totalSize},update(e,t){if(f)return;t&&(typeof t.estimateHeaderSize==`number`&&m(t.estimateHeaderSize,`estimateHeaderSize`),typeof t.estimateItemSize==`number`&&m(t.estimateItemSize,`estimateItemSize`),t.overscan!==void 0&&h(t.overscan),t.scrollEndDelay!==void 0&&p(t.scrollEndDelay,`scrollEndDelay`),Object.hasOwn(t,`onChange`)&&(_=t.onChange),Object.hasOwn(t,`onScrollEnd`)&&(v=t.onScrollEnd),Object.hasOwn(t,`onScrollingChange`)&&(b=t.onScrollingChange),t.estimateHeaderSize!==void 0&&(a=i(t.estimateHeaderSize)),t.estimateItemSize!==void 0&&(o=typeof t.estimateItemSize==`function`?t.estimateItemSize:null,s=o?null:c(typeof t.estimateItemSize==`number`?t.estimateItemSize:void 0,36)),t.getItemKey!==void 0&&(l=t.getItemKey)),n=e;let u=r.length;r=T(n);let d={count:r.length};t?.measurementCache!==void 0&&(d.measurementCache=t.measurementCache),t?.overscan!==void 0&&(d.overscan=t.overscan),t?.scrollEndDelay!==void 0&&(d.scrollEndDelay=t.scrollEndDelay),r.length!==u||t?.measurementCache!==void 0||t?.overscan!==void 0||t?.scrollEndDelay!==void 0?w.update(d):w.refresh()}}}export{t as DEFAULT_ESTIMATE_SIZE,n as DEFAULT_OVERSCAN,u as ScrollConfigurationError,l as ScrollError,d as ScrollRangeError,x as createDomVirtualList,w as createGridVirtualizer,E as createGroupedVirtualizer,e as createMeasurementCache,S as createVirtualScroller,y as createVirtualizer};
|
|
1
|
+
function e(){return new Map}var t=36,n=3;function r(e,t=0){return Number.isFinite(e)?Math.max(0,Math.floor(e)):t}function i(e,t){return!Number.isFinite(e)||e<=0||e>1e7?t:e}function a(e){return typeof Window<`u`&&e instanceof Window||typeof e.innerHeight==`number`&&typeof e.document==`object`}function o(e,t){if(typeof e==`number`){let n=r(e,t);return{end:n,start:n}}return{end:r(e?.end??t),start:r(e?.start??t)}}function s(e,t,n){let r=new ResizeObserver(e=>{for(let t of e)n(t)});return r.observe(t),e.addEventListener(`abort`,()=>r.disconnect(),{once:!0}),()=>r.disconnect()}function c(e,t){if(typeof e==`function`)return n=>{try{return i(e(n),t)}catch(e){return`${n}${e}`,t}};let n=typeof e==`number`?i(e,t):t;return()=>n}var l=class extends Error{constructor(e,t){super(e,t),this.name=new.target.name,Object.setPrototypeOf(this,new.target.prototype)}},u=class extends l{},d=class extends l{};function f(e,t){if(!Number.isFinite(e)||!Number.isInteger(e)||e<0)throw new u(`${t} must be a finite non-negative integer.`);return e}function p(e,t){if(!Number.isFinite(e)||e<0)throw new u(`${t} must be a finite non-negative number.`);return e}function m(e,t){if(!Number.isFinite(e)||e<=0||e>1e7)throw new u(`${t} must be a finite positive number no greater than 10000000.`);return e}function h(e,t=`overscan`){if(typeof e==`number`){f(e,t);return}if(typeof e!=`object`||!e||Array.isArray(e))throw new u(`${t} must be a finite non-negative integer or an overscan object.`);e.start!==void 0&&f(e.start,`${t}.start`),e.end!==void 0&&f(e.end,`${t}.end`)}function g(e,t,n){if(a(e))return e.addEventListener(`scroll`,t,{passive:!0}),e.addEventListener(`resize`,n,{passive:!0}),{detach(){e.removeEventListener(`scroll`,t),e.removeEventListener(`resize`,n)},scrollTo:(t,n,r)=>e.scrollTo({behavior:r,left:t,top:n}),x:{readOffset:()=>e.scrollX,readViewportSize:()=>e.innerWidth,writeOffset:(t,n)=>e.scrollTo({behavior:n,left:t})},y:{readOffset:()=>e.scrollY,readViewportSize:()=>e.innerHeight,writeOffset:(t,n)=>e.scrollTo({behavior:n,top:t})}};let r=new ResizeObserver(n);return e.addEventListener(`scroll`,t,{passive:!0}),r.observe(e),{detach(){e.removeEventListener(`scroll`,t),r.disconnect()},scrollTo:(t,n,r)=>e.scrollTo({behavior:r,left:t,top:n}),x:{readOffset:()=>e.scrollLeft,readViewportSize:()=>e.clientWidth,writeOffset:(t,n)=>e.scrollTo({behavior:n,left:t})},y:{readOffset:()=>e.scrollTop,readViewportSize:()=>e.clientHeight,writeOffset:(t,n)=>e.scrollTo({behavior:n,top:t})}}}function _(e,t,n){let r=e,i=n,a=t,o=[],s=0,c=-1,l=-1,u=-1,d=!1,f=1/0;function p(e){return o[e]??0}function m(e){return p(e)+a(e)}function h(e=!1){e&&(c=-1,l=-1,u=-1);let t=[0],n=0;for(let e=0;e<r;e++)n+=a(e)+(e<r-1?i:0),t.push(n);o=t,s=n}function g(e){if(!Number.isFinite(e)||e>=r)return;c=-1,l=-1,u=-1;let t=o[e]??0;for(let n=e;n<r;n++)o[n]=t,t+=a(n)+(n<r-1?i:0);o[r]=t,s=t}function _(e){let t=0,n=r-1;for(;t<n;){let r=t+n>>1;m(r)<=e?t=r+1:n=r}return t}function v(e,t){let n=t,i=r-1;for(;n<i;){let t=n+i+1>>1;p(t)<e?n=t:i=t-1}return n}function y(e,t,n,i){let a=_(e),o=v(t,a);return{renderEnd:Math.min(r-1,o+i),renderStart:Math.max(0,a-n)}}function b(e,t){return e===c&&t===l&&s===u}function x(e,t){c=e,l=t,u=s}function S(){c=-1,l=-1,u=-1}function C(e){d||(d=!0,queueMicrotask(()=>{d=!1;let t=f;f=1/0,g(t),e()}))}function w(e){e<f&&(f=e)}function T(e){let t=p(e),n=a(e);return{end:t+n,index:e,size:n,start:t}}return{commitDedup:x,computeRange:y,consumeMinChangedIndex(){let e=f;return f=1/0,e},get count(){return r},endAt:m,findFirst:_,findLast:v,get gap(){return i},isDedupSame:b,itemAt:T,markChanged:w,get minChangedIndex(){return f},get pendingBuild(){return d},get prevEnd(){return l},get prevStart(){return c},get prevTotalSize(){return u},rebuild:h,rebuildFrom:g,resetDedup:S,scheduleBuild:C,setCount(e){r=e},setGap(e){i=e},sizeAt(e){return a(e)},startAt:p,get totalSize(){return s}}}function v(e){if(!e.stickyFn||e.count===0||e.scrollOffset<=0)return[];let t=-1,n=0,r=e.count-1;for(;n<=r;){let i=n+r>>1;e.startAt(i)<e.scrollOffset?(t=i,n=i+1):r=i-1}if(t<0)return[];let i=-1;for(let n=t;n>=0;n--)if(e.stickyFn(n)){i=n;break}if(i===-1)return[];let a=e.sizeAt(i),o=1/0;for(let t=i+1;t<e.count;t++)if(e.stickyFn(t)){o=e.startAt(t);break}let s=Math.min(e.scrollOffset,o-a);return[{end:s+a,index:i,size:a,start:s}]}function y(e,t){typeof t.estimateSize==`number`&&m(t.estimateSize,`estimateSize`),t.gap!==void 0&&f(t.gap,`gap`),t.initialOffset!==void 0&&p(t.initialOffset,`initialOffset`),t.overscan!==void 0&&h(t.overscan),t.scrollEndDelay!==void 0&&p(t.scrollEndDelay,`scrollEndDelay`);let n=!!t.horizontal,a=e=>e,l=t.keyboardScroll??!1,u=f(t.count,`count`),d=c(t.estimateSize,36),y=r(t.gap??0),b=t.getItemKey??a,x=o(t.overscan,3),S=t.sticky??null,C=l,w=t.autoMeasure??!1,T=t.onChange,E=t.onScrollEnd,D=t.onScrollingChange,O=t.scrollEndDelay??150,k=null;t.signal&&(k=t.signal({items:[],stickyItems:[],totalSize:0}));function A(e){k&&(k.value=e),T?.(e)}let j=null,M=`onscrollend`in e;function N(){G&&(G=!1,D?.(!1),E?.(V))}function P(){G||(G=!0,D?.(!0)),M||(j!==null&&clearTimeout(j),j=setTimeout(N,O))}let F=t.measurementCache??new Map,I=[],L=[],R=_(u,e=>F.get(b(e))??d(e),y),z=-1,B=0,V=0,H=0,U=-1,W=!1,G=!1;function K(e){let t=Number.isFinite(e)?e:0,n=Math.max(0,R.totalSize-H);return Math.min(n,Math.max(0,t))}function q(){if(W)return;if(u===0||H<=0){(R.prevStart!==-1||R.prevTotalSize!==R.totalSize)&&(R.commitDedup(-1,-1),I=[],L=[],A({items:I,stickyItems:L,totalSize:R.totalSize}));return}let{renderEnd:t,renderStart:n}=R.computeRange(V,V+H,x.start,x.end),r=S!==null&&V!==U;if(R.isDedupSame(n,t)&&!r)return;R.commitDedup(n,t),U=V;let i=[];for(let e=n;e<=t;e++)i.push(R.itemAt(e));I=i,L=S?v({count:u,scrollOffset:V,sizeAt:R.sizeAt,startAt:R.startAt,stickyFn:S}):[],A({items:I,stickyItems:L,totalSize:R.totalSize}),w&&I.length>0&&queueMicrotask(()=>{if(!(W||e instanceof Window))for(let t of I){let n=b(t.index),r=e?.querySelector?.(`[data-vz-key="${n}"]`);r instanceof HTMLElement&&re(t.index,r)}})}function ee(e,t){if(!Number.isFinite(e))return!1;let n=Math.floor(e);if(n<0||n>=u)return!1;let r=i(t,-1);if(r<=0)return!1;let a=b(n);return F.get(a)!==r&&(F.set(a,r),R.markChanged(n),!0)}function te(){if(V<=0||u===0){z=-1;return}z=R.findFirst(V),B=V-R.startAt(z)}function J(){if(z<0)return;let e=R.startAt(z)+B-V;if(z=-1,Math.abs(e)>=1){let t=K(V+e);$.writeOffset(t,`auto`),V=t}}function Y(e){if(W)return;let t=!1;for(let{index:n,size:r}of e)ee(n,r)&&(t=!0);t&&(R.pendingBuild||te(),R.scheduleBuild(()=>{J(),q()}))}function ne(e,t){Y([{index:e,size:t}])}function re(e,t){return W?()=>{}:s(Q.signal,t,t=>{ne(e,n?t.contentRect.width:t.contentRect.height)})}function ie(e){e.count!==void 0&&f(e.count,`count`),typeof e.estimateSize==`number`&&m(e.estimateSize,`estimateSize`),e.gap!==void 0&&f(e.gap,`gap`),e.overscan!==void 0&&h(e.overscan),e.scrollEndDelay!==void 0&&p(e.scrollEndDelay,`scrollEndDelay`);let t=!1,n=!1;if(Object.hasOwn(e,`onChange`)&&(T=e.onChange),Object.hasOwn(e,`onScrollEnd`)&&(E=e.onScrollEnd),Object.hasOwn(e,`onScrollingChange`)&&(D=e.onScrollingChange),e.scrollEndDelay!==void 0&&(O=e.scrollEndDelay),e.count!==void 0){let n=e.count;n!==u&&(u=n,R.setCount(u),t=!0)}if(Object.hasOwn(e,`estimateSize`)&&(d=c(e.estimateSize,36),F.clear(),t=!0),e.gap!==void 0){let n=e.gap;n!==y&&(y=n,R.setGap(y),t=!0)}if(Object.hasOwn(e,`getItemKey`)){let n=e.getItemKey??a;n!==b&&(b=n,F.clear(),t=!0)}if(Object.hasOwn(e,`measurementCache`)&&e.measurementCache!==void 0&&(F=e.measurementCache,t=!0),e.overscan!==void 0){let t=o(e.overscan,3);(t.start!==x.start||t.end!==x.end)&&(x=t,n=!0)}if(Object.hasOwn(e,`sticky`)){let t=e.sticky??null;t!==S&&(S=t,R.resetDedup()),n=!0}Object.hasOwn(e,`keyboardScroll`)&&(C=e.keyboardScroll??!1),Object.hasOwn(e,`autoMeasure`)&&(w=e.autoMeasure??!1),t&&(te(),R.rebuild(!0),J()),(n||t)&&q()}function X(){W||(F.clear(),R.rebuild(!0),q())}function ae(){W||(R.rebuild(!0),q())}function oe(e){if(W)return;let t=r(e);if(t===0)return;u+=t,R.setCount(u),R.rebuild(!0);let n=R.startAt(t),i=K(V+n);$.writeOffset(i,`auto`),V=i,q()}function se(e){W||ie(e)}function Z(t,n={}){if(W||u<=0)return;let r=Math.max(0,Math.min(Number.isFinite(t)?Math.floor(t):0,u-1)),i=n.align??`auto`,a=n.behavior??`auto`,o=R.startAt(r),s=R.sizeAt(r),c=o+s,l;if(i===`start`)l=o;else if(i===`end`)l=c-H;else if(i===`center`)l=o-(H-s)/2;else{let e=V,t=e+H;if(o>=e&&c<=t){n.onComplete&&queueMicrotask(n.onComplete);return}l=o<e?o:c-H}$.writeOffset(K(l),a),n.onComplete&&(a===`smooth`&&`onscrollend`in e?e.addEventListener(`scrollend`,n.onComplete,{once:!0}):queueMicrotask(n.onComplete))}function ce(e,t={}){W||$.writeOffset(K(e),t.behavior??`auto`)}function le(e={}){ce(0,e)}function ue(e={}){ce(Math.max(0,R.totalSize-H),e)}function de(e=0){return R.totalSize-(V+H)<=e}let Q=new AbortController;function fe(){W||(W=!0,Q.abort(),j!==null&&(clearTimeout(j),j=null),M&&e.removeEventListener(`scrollend`,N),he.detach())}function pe(){V=K($.readOffset()),P(),q()}function me(){H=$.readViewportSize(),q()}let he=g(e,pe,me),$=n?he.x:he.y;if(C){let t=e=>{if(W||!(e instanceof KeyboardEvent)||u===0)return;let t=!1,n=V,r=Math.max(H*.8,H-100);switch(e.key){case`ArrowUp`:case`ArrowLeft`:{let e=typeof d(0)==`number`?d(0):36;n=Math.max(0,V-(e+y)),t=!0;break}case`ArrowDown`:case`ArrowRight`:{let e=typeof d(0)==`number`?d(0):36;n=Math.min(R.totalSize-H,V+(e+y)),t=!0;break}case`PageUp`:n=Math.max(0,V-r),t=!0;break;case`PageDown`:n=Math.min(R.totalSize-H,V+r),t=!0;break;case`Home`:n=0,t=!0;break;case`End`:n=Math.max(0,R.totalSize-H),t=!0}t&&(e.preventDefault(),$.writeOffset(n,`auto`),V=K(n),q())};typeof e==`object`&&e&&`addEventListener`in e&&(e.addEventListener(`keydown`,t),Q.signal.addEventListener(`abort`,()=>{e.removeEventListener(`keydown`,t)}))}return M&&e.addEventListener(`scrollend`,N,{passive:!0}),R.rebuild(!0),t.initialOffset!==void 0&&$.writeOffset(K(t.initialOffset),`auto`),V=K($.readOffset()),H=$.readViewportSize(),q(),{get count(){return u},get disposalSignal(){return Q.signal},dispose:fe,get disposed(){return W},invalidate:X,isAtEnd:de,get isScrolling(){return G},get items(){return I},measure:ne,measureBatch:Y,measureEl:re,prepend:oe,refresh:ae,get scrollOffset(){return V},scrollToBottom:ue,scrollToIndex:Z,scrollToOffset:ce,scrollToTop:le,get stickyItems(){return L},[Symbol.dispose]:fe,get totalSize(){return R.totalSize},update:se}}function b(){let e=new Map,t=new Map,n=[],r=!1;return{acquire(i,a){if(!r)return a();let o=e.get(i);if(o)return t.set(i,o),o;let s=n.pop()??a();return t.set(i,s),s},beginCycle(){t=new Map,r=!0},clear(){for(let t of e.values())t.remove();e.clear(),t.clear(),n.length=0,r=!1},endCycle(){if(r){r=!1;for(let[r,i]of e)t.has(r)||(i.remove(),n.push(i));e=t}}}}function x(e){if(typeof e.estimateSize==`number`&&m(e.estimateSize,`estimateSize`),e.gap!==void 0&&f(e.gap,`gap`),e.overscan!==void 0&&h(e.overscan),e.stickToBottom!==void 0&&typeof e.stickToBottom!=`boolean`){if(e.stickToBottom===null||Array.isArray(e.stickToBottom))throw new u(`stickToBottom must be a boolean or options object.`);e.stickToBottom.threshold!==void 0&&p(e.stickToBottom.threshold,`stickToBottom.threshold`)}let t=[],n=!1,r=new AbortController,i=e.listElement,a=null;e.signal&&(a=e.signal({items:[],stickyItems:[],totalSize:0}));function o(e){a&&(a.value=e),x(e)}let s=b(),c=null;function l(n){let r=t[n];return r!==void 0&&e.getItemKey?e.getItemKey(n,r):n}function g(n){if(e.estimateSize===void 0)return 36;if(typeof e.estimateSize==`number`)return e.estimateSize;let r=t[n];return r===void 0?36:e.estimateSize(n,r)}function _(t){e.horizontal?(i.style.height=``,i.style.width=`${t}px`):(i.style.height=`${t}px`,i.style.width=``)}function v(e){let n=t[e.index];if(n===void 0)throw new d(`toRenderItem: index ${e.index} is out of range (currentItems.length=${t.length})`);return{...e,data:n}}function x(t){_(t.totalSize),s.beginCycle();try{e.render({items:t.items.map(v),listEl:i,recycle:(e,t)=>s.acquire(e,t),stickyItems:t.stickyItems.map(v),totalSize:t.totalSize})}finally{s.endCycle()}}function S(){s.clear(),e.clear?e.clear(i):i.textContent=``,i.style.height=``,i.style.width=``,i.style.position=``,i.style.contain=``}function C(){let t=e.stickToBottom;return t?t===!0?{enabled:!0,threshold:48}:{enabled:t.enabled??!0,threshold:t.threshold??48}:{enabled:!1,threshold:48}}function w(){let n=y(e.scrollElement,{count:t.length,estimateSize:g,gap:e.gap,getItemKey:l,horizontal:e.horizontal,keyboardScroll:e.keyboardScroll,measurementCache:e.measurementCache,onChange:o,overscan:e.overscan??3,sticky:e.sticky?n=>{let r=t[n];return r!==void 0&&e.sticky(n,r)}:void 0});return c=n,i.style.position=`relative`,i.style.contain=`layout`,n}function T(){n||(n=!0,r.abort(),c?.dispose(),c=null,S())}return{get count(){return c?.count??0},get disposalSignal(){return r.signal},dispose:T,get disposed(){return n},invalidate(){n||c?.invalidate()},isAtEnd(e){return c?.isAtEnd(e)??!0},get isScrolling(){return c?.isScrolling??!1},get items(){return c?.items??[]},measure(e,t){n||c?.measure(e,t)},measureBatch(e){n||c?.measureBatch(e)},measureEl(e,t){return n?()=>{}:c?.measureEl(e,t)??(()=>{})},refresh(){n||c?.refresh()},get scrollOffset(){return c?.scrollOffset??0},scrollToBottom(e){n||c?.scrollToBottom(e)},scrollToIndex(e,t){n||c?.scrollToIndex(e,t)},scrollToOffset(e,t){n||c?.scrollToOffset(e,t)},scrollToTop(e){n||c?.scrollToTop(e)},setItems(r){if(n)return;let i=C(),a=i.enabled&&(c?.isAtEnd(i.threshold)??!0);if(t=r,r.length===0){c?.dispose(),c=null,S();return}if(!c){let e=w();a&&e.scrollToBottom();return}let o=r.length!==c.count;c.update({count:r.length}),o?e.getItemKey||c.invalidate():e.getItemKey?c.refresh():c.invalidate(),a&&c.scrollToBottom()},get stickyItems(){return c?.stickyItems??[]},[Symbol.dispose]:T,get totalSize(){return c?.totalSize??0}}}function S(e,t){let n=document.createElement(`div`);n.style.cssText=t.horizontal?`overflow: auto hidden; width: 100%; height: 100%;`:`overflow: hidden auto; width: 100%; height: 100%;`,t.containerClass&&(n.className=t.containerClass);let r=document.createElement(`div`);n.appendChild(r),e.appendChild(n);let i;try{i=x({...t,listElement:r,scrollElement:n})}catch(e){throw n.remove(),e}let a=i.dispose.bind(i);return Object.assign(i,{dispose(){a(),n.remove()},[Symbol.dispose](){a(),n.remove()}})}function C(e,t,n,r,i,a){return a===`start`?e:a===`end`?t-i:a===`center`?e-(i-n)/2:e>=r&&t<=r+i?null:e<r?e:t-i}function w(e,t){typeof t.estimateRowSize==`number`&&m(t.estimateRowSize,`estimateRowSize`),typeof t.estimateColSize==`number`&&m(t.estimateColSize,`estimateColSize`),t.initialScrollTop!==void 0&&p(t.initialScrollTop,`initialScrollTop`),t.initialScrollLeft!==void 0&&p(t.initialScrollLeft,`initialScrollLeft`),t.rowGap!==void 0&&f(t.rowGap,`rowGap`),t.colGap!==void 0&&f(t.colGap,`colGap`),t.overscanY!==void 0&&h(t.overscanY,`overscanY`),t.overscanX!==void 0&&h(t.overscanX,`overscanX`);let n=f(t.rowCount,`rowCount`),a=f(t.colCount,`colCount`),l=c(t.estimateRowSize,36),u=c(t.estimateColSize,36),d=o(t.overscanY,3),v=o(t.overscanX,3),y=t.keyboardScroll??!1,b=t.onChange,x=t.onRangeChange,S=null;t.signal&&(S=t.signal({cols:[],rows:[],totalHeight:0,totalWidth:0}));function w(e){S&&(S.value=e),b?.(e)}let T=t.rowMeasurementCache??new Map,E=t.colMeasurementCache??new Map,D=0,O=0,k=0,A=0,j=[],M=[],N=!1,P=_(n,e=>T.get(e)??l(e),r(t.rowGap??0)),F=_(a,e=>E.get(e)??u(e),r(t.colGap??0)),I=!1;function L(e){let t=Number.isFinite(e)?e:0;return Math.min(Math.max(0,P.totalSize-k),Math.max(0,t))}function R(e){let t=Number.isFinite(e)?e:0;return Math.min(Math.max(0,F.totalSize-A),Math.max(0,t))}function z(){if(N)return;let e=P.totalSize,t=F.totalSize;if(n===0||a===0||k<=0||A<=0){(P.prevStart!==-1||P.prevTotalSize!==e||F.prevTotalSize!==t)&&(P.commitDedup(-1,-1),F.commitDedup(-1,-1),j=[],M=[],w({cols:[],rows:[],totalHeight:e,totalWidth:t}));return}let{renderEnd:r,renderStart:i}=P.computeRange(D,D+k,d.start,d.end),{renderEnd:o,renderStart:s}=F.computeRange(O,O+A,v.start,v.end),c=P.isDedupSame(i,r),l=F.isDedupSame(s,o);if(c&&l)return;P.commitDedup(i,r),F.commitDedup(s,o),(!c||!l)&&x&&x({firstCol:s,firstRow:i,lastCol:o,lastRow:r});let u=[];for(let e=i;e<=r;e++)u.push(P.itemAt(e));let f=[];for(let e=s;e<=o;e++)f.push(F.itemAt(e));j=u,M=f,w({cols:M,rows:j,totalHeight:e,totalWidth:t})}function B(e,t){if(!Number.isFinite(e))return!1;let r=Math.floor(e);if(r<0||r>=n)return!1;let a=i(t,-1);return a<=0||T.get(r)===a?!1:(T.set(r,a),P.markChanged(r),!0)}function V(e,t){if(!Number.isFinite(e))return!1;let n=Math.floor(e);if(n<0||n>=a)return!1;let r=i(t,-1);return r<=0||E.get(n)===r?!1:(E.set(n,r),F.markChanged(n),!0)}function H(){I||(I=!0,queueMicrotask(()=>{I=!1;let e=P.consumeMinChangedIndex();e!==1/0&&P.rebuildFrom(e);let t=F.consumeMinChangedIndex();t!==1/0&&F.rebuildFrom(t),z()}))}function U(e,t){N||B(e,t)&&H()}function W(e,t){N||V(e,t)&&H()}function G(e,t){if(N)return;let n=!1;for(let{index:t,size:r}of e)B(t,r)&&(n=!0);for(let{index:e,size:r}of t)V(e,r)&&(n=!0);n&&H()}function K(e,t){return N?()=>{}:s(X.signal,t,t=>U(e,t.contentRect.height))}function q(e,t){return N?()=>{}:s(X.signal,t,t=>W(e,t.contentRect.width))}function ee(){N||(T.clear(),E.clear(),P.rebuild(!0),F.rebuild(!0),z())}function te(){N||(P.rebuild(!0),F.rebuild(!0),z())}function J(e){if(N)return;let t=r(e);if(t===0)return;n+=t,P.setCount(n),P.rebuild(!0);let i=P.startAt(t),a=L(D+i);Z.scrollTo(O,a,`auto`),D=a,z()}function Y(e,t={}){if(N||n===0)return;let r=Math.max(0,Math.min(Math.floor(Number.isFinite(e)?e:0),n-1)),i=t.behavior??`auto`,a=P.startAt(r),o=P.sizeAt(r),s=C(a,a+o,o,D,k,t.rowAlign??`auto`);s!==null&&Z.scrollTo(O,L(s),i)}function ne(e,t={}){if(N||a===0)return;let n=Math.max(0,Math.min(Math.floor(Number.isFinite(e)?e:0),a-1)),r=t.behavior??`auto`,i=F.startAt(n),o=F.sizeAt(n),s=C(i,i+o,o,O,A,t.colAlign??`auto`);s!==null&&Z.scrollTo(R(s),D,r)}function re(e,t,r={}){if(N||n===0||a===0)return;let i=Math.max(0,Math.min(Math.floor(Number.isFinite(e)?e:0),n-1)),o=Math.max(0,Math.min(Math.floor(Number.isFinite(t)?t:0),a-1)),s=r.behavior??`auto`,c=P.startAt(i),l=P.sizeAt(i),u=F.startAt(o),d=F.sizeAt(o),f=C(c,c+l,l,D,k,r.rowAlign??`auto`),p=C(u,u+d,d,O,A,r.colAlign??`auto`);(f!==null||p!==null)&&Z.scrollTo(p===null?O:R(p),f===null?D:L(f),s)}function ie(e){if(N)return;e.rowCount!==void 0&&f(e.rowCount,`rowCount`),e.colCount!==void 0&&f(e.colCount,`colCount`),typeof e.estimateRowSize==`number`&&m(e.estimateRowSize,`estimateRowSize`),typeof e.estimateColSize==`number`&&m(e.estimateColSize,`estimateColSize`),e.rowGap!==void 0&&f(e.rowGap,`rowGap`),e.colGap!==void 0&&f(e.colGap,`colGap`),e.overscanY!==void 0&&h(e.overscanY,`overscanY`),e.overscanX!==void 0&&h(e.overscanX,`overscanX`);let t=!1,r=!1,i=!1;if(Object.hasOwn(e,`onChange`)&&(b=e.onChange),Object.hasOwn(e,`onRangeChange`)&&(x=e.onRangeChange),e.rowCount!==void 0){let r=e.rowCount;r!==n&&(n=r,P.setCount(n),t=!0)}if(e.colCount!==void 0){let t=e.colCount;t!==a&&(a=t,F.setCount(a),r=!0)}if(e.rowGap!==void 0){let n=e.rowGap;n!==P.gap&&(P.setGap(n),t=!0)}if(e.colGap!==void 0){let t=e.colGap;t!==F.gap&&(F.setGap(t),r=!0)}if(`estimateRowSize`in e&&(l=c(e.estimateRowSize,36),T.clear(),t=!0),`estimateColSize`in e&&(u=c(e.estimateColSize,36),E.clear(),r=!0),e.overscanY!==void 0){let t=o(e.overscanY,3);(t.start!==d.start||t.end!==d.end)&&(d=t,i=!0)}if(e.overscanX!==void 0){let t=o(e.overscanX,3);(t.start!==v.start||t.end!==v.end)&&(v=t,i=!0)}Object.hasOwn(e,`keyboardScroll`)&&(y=e.keyboardScroll??!1),t&&P.rebuild(!0),r&&F.rebuild(!0),(t||r||i)&&z()}let X=new AbortController;function ae(){N||(N=!0,X.abort(),Z.detach())}function oe(){D=L(Z.y.readOffset()),O=R(Z.x.readOffset()),z()}function se(){k=Z.y.readViewportSize(),A=Z.x.readViewportSize(),z()}let Z=g(e,oe,se);if(P.rebuild(!0),F.rebuild(!0),k=Z.y.readViewportSize(),A=Z.x.readViewportSize(),t.initialScrollTop===void 0?t.initialScrollLeft!==void 0&&Z.scrollTo(R(t.initialScrollLeft),0,`auto`):Z.scrollTo(t.initialScrollLeft??0,L(t.initialScrollTop),`auto`),D=L(Z.y.readOffset()),O=R(Z.x.readOffset()),z(),y){let i=e=>{if(N||!(e instanceof KeyboardEvent)||n===0||a===0)return;let i=!1,o=D,s=O,c=Math.max(k*.8,k-100),d=(typeof l(0)==`number`?l(0):36)+r(t.rowGap??0),f=(typeof u(0)==`number`?u(0):36)+r(t.colGap??0);switch(e.key){case`ArrowUp`:o=Math.max(0,D-d),i=!0;break;case`ArrowDown`:o=Math.min(P.totalSize-k,D+d),i=!0;break;case`ArrowLeft`:s=Math.max(0,O-f),i=!0;break;case`ArrowRight`:s=Math.min(F.totalSize-A,O+f),i=!0;break;case`PageUp`:o=Math.max(0,D-c),i=!0;break;case`PageDown`:o=Math.min(P.totalSize-k,D+c),i=!0;break;case`Home`:o=0,i=!0;break;case`End`:o=Math.max(0,P.totalSize-k),i=!0}i&&(e.preventDefault(),Z.scrollTo(s,o,`auto`),D=L(o),O=R(s),N||z())};typeof e==`object`&&e&&`addEventListener`in e&&(e.addEventListener(`keydown`,i),X.signal.addEventListener(`abort`,()=>{e.removeEventListener(`keydown`,i)}))}return{get cols(){return M},get disposalSignal(){return X.signal},dispose:ae,get disposed(){return N},invalidate:ee,measureBatch:G,measureColEl:q,measureColumn:W,measureRow:U,measureRowEl:K,prependRows:J,refresh:te,get rows(){return j},get scrollLeft(){return O},scrollToCell:re,scrollToColumn:ne,get scrollTop(){return D},scrollToRow:Y,[Symbol.dispose]:ae,get totalHeight(){return P.totalSize},get totalWidth(){return F.totalSize},update:ie}}function T(e){let t=[];for(let n=0;n<e.length;n++){let r=e[n];t.push({isHeader:!0,itemIndex:-1,label:r.label,sectionIndex:n});for(let e=0;e<r.items.length;e++)t.push({isHeader:!1,item:r.items[e],itemIndex:e,sectionIndex:n})}return t}function E(e,t){typeof t.estimateHeaderSize==`number`&&m(t.estimateHeaderSize,`estimateHeaderSize`),typeof t.estimateItemSize==`number`&&m(t.estimateItemSize,`estimateItemSize`),t.overscan!==void 0&&h(t.overscan),t.scrollEndDelay!==void 0&&p(t.scrollEndDelay,`scrollEndDelay`);let n=t.sections,r=T(n);function i(e){return typeof e==`function`?t=>{let i=r[t];return e(n[i.sectionIndex],i.sectionIndex)}:c(typeof e==`number`?e:void 0,36)}let a=i(t.estimateHeaderSize),o=typeof t.estimateItemSize==`function`?t.estimateItemSize:null,s=o?null:c(typeof t.estimateItemSize==`number`?t.estimateItemSize:void 0,36),l=t.getItemKey;function u(e){let t=r[e];return t?t.isHeader?a(e):o?o(t.item,t.itemIndex,t.sectionIndex):s(e):36}function d(e){let t=r[e];return t?t.isHeader?`__header_${t.sectionIndex}`:l?l(t.item,t.itemIndex,t.sectionIndex):e:e}let f=!1,g=[],_=t.onChange,v=t.onScrollEnd,b=t.onScrollingChange,x=null;t.signal&&(x=t.signal({headers:[],items:[],stickyHeader:null,totalSize:0}));function S(e){x&&(x.value=e),_?.(e)}function C(e){let t=[],n=[],i=null;for(let i of e.items){let e=r[i.index];e&&(e.isHeader?n.push({...i,label:e.label??``,sectionIndex:e.sectionIndex}):t.push({...i,data:e.item,itemIndex:e.itemIndex,sectionIndex:e.sectionIndex}))}if(e.stickyItems.length>0){let t=e.stickyItems[0],n=r[t.index];n?.isHeader&&(i={...t,label:n.label??``,sectionIndex:n.sectionIndex})}return g=t,{headers:n,items:t,stickyHeader:i,totalSize:e.totalSize}}let w=y(e,{count:r.length,estimateSize:u,getItemKey:d,horizontal:t.horizontal,measurementCache:t.measurementCache,onChange:e=>{S(C(e))},onScrollEnd:e=>v?.(e),onScrollingChange:e=>b?.(e),overscan:t.overscan??3,scrollEndDelay:t.scrollEndDelay,sticky:e=>r[e]?.isHeader??!1}),E=new AbortController;function D(){f||(f=!0,E.abort(),w.dispose())}function O(e,t){if(e<0||e>=n.length)return-1;let r=0;for(let i=0;i<n.length;i++){if(i===e)return t===void 0?r:r+1+t;r+=1+n[i].items.length}return-1}return{get count(){return w.count},get disposalSignal(){return E.signal},dispose:D,get disposed(){return f},invalidate(){f||w.invalidate()},get isScrolling(){return w.isScrolling},get items(){return g},measure(e,t){f||w.measure(e,t)},measureBatch(e){f||w.measureBatch(e)},measureEl(e,t){return f?()=>{}:w.measureEl(e,t)},refresh(){f||w.refresh()},get scrollOffset(){return w.scrollOffset},scrollToBottom(e){f||w.scrollToBottom(e)},scrollToIndex(e,t){f||w.scrollToIndex(e,t)},scrollToItem(e,t,n={}){if(f)return;let r=O(e,t);r<0||w.scrollToIndex(r,n)},scrollToOffset(e,t){f||w.scrollToOffset(e,t)},scrollToSection(e,t={}){if(f)return;let n=O(e);n<0||w.scrollToIndex(n,t)},scrollToTop(e){f||w.scrollToTop(e)},get stickyItems(){return w.stickyItems},[Symbol.dispose]:D,get totalSize(){return w.totalSize},update(e,t){if(f)return;t&&(typeof t.estimateHeaderSize==`number`&&m(t.estimateHeaderSize,`estimateHeaderSize`),typeof t.estimateItemSize==`number`&&m(t.estimateItemSize,`estimateItemSize`),t.overscan!==void 0&&h(t.overscan),t.scrollEndDelay!==void 0&&p(t.scrollEndDelay,`scrollEndDelay`),Object.hasOwn(t,`onChange`)&&(_=t.onChange),Object.hasOwn(t,`onScrollEnd`)&&(v=t.onScrollEnd),Object.hasOwn(t,`onScrollingChange`)&&(b=t.onScrollingChange),t.estimateHeaderSize!==void 0&&(a=i(t.estimateHeaderSize)),t.estimateItemSize!==void 0&&(o=typeof t.estimateItemSize==`function`?t.estimateItemSize:null,s=o?null:c(typeof t.estimateItemSize==`number`?t.estimateItemSize:void 0,36)),t.getItemKey!==void 0&&(l=t.getItemKey)),n=e;let u=r.length;r=T(n);let d={count:r.length};t?.measurementCache!==void 0&&(d.measurementCache=t.measurementCache),t?.overscan!==void 0&&(d.overscan=t.overscan),t?.scrollEndDelay!==void 0&&(d.scrollEndDelay=t.scrollEndDelay),r.length!==u||t?.measurementCache!==void 0||t?.overscan!==void 0||t?.scrollEndDelay!==void 0?w.update(d):w.refresh()}}}export{t as DEFAULT_ESTIMATE_SIZE,n as DEFAULT_OVERSCAN,u as ScrollConfigurationError,l as ScrollError,d as ScrollRangeError,x as createDomVirtualList,w as createGridVirtualizer,E as createGroupedVirtualizer,e as createMeasurementCache,S as createVirtualScroller,y as createVirtualizer};
|
|
2
2
|
//# sourceMappingURL=scroll.js.map
|