vlist 3.0.0-next.3 → 3.0.0-next.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.github.md +28 -26
- package/README.md +25 -25
- package/dist/config.d.ts +35 -10
- package/dist/config.js +1 -1
- package/dist/core/dom.d.ts +21 -1
- package/dist/core/fold.d.ts +52 -0
- package/dist/core/pool.d.ts +8 -1
- package/dist/core/runway.d.ts +23 -1
- package/dist/core/types.d.ts +18 -0
- package/dist/index.js +1 -1
- package/dist/internals.js +1 -1
- package/dist/plugins/carousel/plugin.d.ts +12 -4
- package/dist/plugins/groups/async-bridge.d.ts +6 -6
- package/dist/plugins/groups/layout.d.ts +2 -2
- package/dist/plugins/groups/plugin.d.ts +4 -4
- package/dist/plugins/groups/sticky.d.ts +2 -1
- package/dist/plugins/groups/types.d.ts +2 -2
- package/dist/plugins/search/plugin.d.ts +3 -0
- package/dist/plugins/selection/plugin.d.ts +3 -3
- package/dist/plugins/sortable/plugin.d.ts +3 -0
- package/dist/plugins/tree/layout.d.ts +2 -0
- package/dist/rendering/sizes.d.ts +12 -0
- package/dist/size.json +1 -1
- package/dist/synthetic.js +1 -1
- package/dist/types.d.ts +2 -2
- package/dist/utils/apply-scroll-behavior.d.ts +15 -0
- package/dist/vlist-tree.css +1 -1
- package/dist/vlist.css +1 -1
- package/package.json +2 -2
package/dist/synthetic.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var Ae=3,ct="vlist";var fe=150;var we=(e)=>e<0.5?2*e*e:1-(-2*e+2)**2/2,mt=300;var ze="__placeholder_";function ft(e){let{state:t,viewport:o,isX:i,onFrame:r,onIdle:c}=e,l=e.idleTimeout||fe,u=null,g=null;function w(T=i?o.scrollLeft:o.scrollTop){t.prevScrollPosition=t.scrollPosition,t.scrollPosition=T,t.scrollDirection=T>t.prevScrollPosition?1:T<t.prevScrollPosition?-1:0,r(),C()}function C(){if(u!==null)clearTimeout(u);u=setTimeout(()=>{u=null,t.scrollDirection=0,c()},l)}function E(){if(g!==null)cancelAnimationFrame(g),g=null}function h(T,k,_,p=we,B){E();let S=t.scrollPosition,R=typeof T==="function"?T:()=>T,M=R();if(Math.abs(M-S)<1){if(_)_(M);else if(i)o.scrollLeft=M;else o.scrollTop=M;B?.();return}let a=performance.now();function v(H){M=R();let P=H-a,I=Math.min(P/k,1),f=S+(M-S)*p(I);if(_)_(f);else if(i)o.scrollLeft=f;else o.scrollTop=f;if(!_)w(f);if(I<1)g=requestAnimationFrame(v);else g=null,B?.()}g=requestAnimationFrame(v)}return{attach(){},detach(){if(E(),u!==null)clearTimeout(u),u=null},cancelScroll:E,smoothScrollTo:h,commitScroll:w}}var Me={top:0,right:0,bottom:0,left:0},pt=(e)=>{if(e==null)return Me;if(typeof e==="number")return e===0?Me:{top:e,right:e,bottom:e,left:e};if(e.length===2){let[c,l]=e;return c===0&&l===0?Me:{top:c,right:l,bottom:c,left:l}}let[t,o,i,r]=e;return t===0&&o===0&&i===0&&r===0?Me:{top:t,right:o,bottom:i,left:r}},bt=(e,t)=>t?e.left+e.right:e.top+e.bottom,vt=(e,t)=>t?e.top+e.bottom:e.left+e.right;function gt(e){let t={visibleIndices:new Int32Array(e),visibleOffsets:new Float64Array(e),visibleSizes:new Float64Array(e),visibleCount:0,startIndex:0,totalSize:0,capacity:e,scrollPosition:0,prevScrollPosition:0,scrollDirection:0,baseOffset:0,prevBaseOffset:0,containerSize:0,crossSize:0,totalItems:0,prevRangeStart:0,prevRangeEnd:-1,renderPending:!1,initialized:!1,destroyed:!1,windowClamped:!1,windowClampReported:!1,prevAriaTotal:-1,ensureCapacity(o){if(o<=t.capacity)return;let i=o+8,r=new Int32Array(i),c=new Float64Array(i),l=new Float64Array(i);r.set(t.visibleIndices),c.set(t.visibleOffsets),l.set(t.visibleSizes),t.visibleIndices=r,t.visibleOffsets=c,t.visibleSizes=l,t.capacity=i},resizeCapacity(o,i,r=Ae){if(i<=0||o<=0)return;t.ensureCapacity(Math.ceil(o/i)+r*2)},clear(){t.visibleCount=0,t.startIndex=0}};return t}var Ft=(e,t,o)=>{let i=t;return{getOffset:(r)=>r*e,getSize:(r)=>e,indexAtOffset:(r)=>{if(i===0||e===0)return 0;return Math.max(0,Math.min(Math.floor(r/e),i-1))},getTotalSize:()=>{let r=i*e;return r>0?r-o:0},getTotal:()=>i,rebuild:(r)=>{i=r},isVariable:()=>!1}},Dt=(e,t,o)=>{let i=t,r=new Float64Array(0),c=(u)=>{i=u,r=new Float64Array(u+1),r[0]=0;for(let g=0;g<u;g++)r[g+1]=r[g]+e(g)};c(t);let l=(u)=>{if(i===0)return 0;if(u<=0)return 0;if(u>=r[i])return i-1;let g=0,w=i-1;while(g<w){let C=g+w+1>>>1;if(r[C]<=u)g=C;else w=C-1}return g};return{getOffset:(u)=>{if(u<=0)return 0;if(u>=i)return r[i];return r[u]},getSize:(u)=>e(u),indexAtOffset:(u)=>l(u),getTotalSize:()=>{let u=r[i]??0;return u>0?u-o:0},getTotal:()=>i,rebuild:(u)=>c(u),isVariable:()=>!0}},_e=(e,t,o=0)=>{if(typeof e==="number")return Ft(e,t,o);return Dt(e,t,o)};function ht(e){let t=[],o=`${e}-item`,i=document.createElement("div");return i.className=o,{acquire(){if(t.length>0)return t.pop();return i.cloneNode(!1)},release(r){if(r.className=o,r.removeAttribute("style"),r.removeAttribute("id"),r.removeAttribute("role"),r.removeAttribute("aria-selected"),r.removeAttribute("aria-posinset"),r.removeAttribute("aria-setsize"),r.removeAttribute("data-index"),r.removeAttribute("data-id"),r.textContent="",t.length<100)t.push(r)},get size(){return t.length},clear(){t.length=0}}}function Ke(e){let t=e.querySelectorAll("a[href],button,input,select,textarea,[tabindex]");for(let o=0;o<t.length;o++)t[o].setAttribute("tabindex","-1")}function Ue(e){if(typeof e==="string"){let t=document.querySelector(e);if(!t)throw Error(`[vlist] Container not found: ${e}`);return t}return e}function St(e,t,o,i){let r=o?`${t} ${t}--horizontal`:t,c=o?"overflow-x:auto;overflow-y:hidden;height:100%;width:100%":"overflow:auto;height:100%;width:100%",l=o?"position:relative;height:100%;overflow-anchor:none":"position:relative;width:100%;overflow-anchor:none",u=' role="list"';if(i)u+=` aria-label="${i.replace(/"/g,""")}"`;if(o)u+=' aria-orientation="horizontal"';e.insertAdjacentHTML("beforeend",`<div class="${r}"><div class="${t}-viewport" style="${c}" tabindex="-1"><div class="${t}-content" style="${l}"${u}></div></div></div>`);let g=e.lastElementChild,w=g.firstElementChild,C=w.firstElementChild,E=document.createElement("div");return E.className=`${t}-live`,E.style.cssText="position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0",E.setAttribute("aria-live","polite"),E.setAttribute("aria-atomic","true"),E.setAttribute("role","status"),g.appendChild(E),{root:g,viewport:w,content:C,liveRegion:E}}function Nt(e,t){if(e.getTotal()<=0)return{index:0,offsetPx:0};let i=t<=0?0:t,r=e.indexAtOffset(i),c=i-e.getOffset(r);return{index:r,offsetPx:c>0?c:0}}function Bt(e,t){let o=$t(e,t);return e.getOffset(o.index)+o.offsetPx}function $t(e,t){let o=e.getTotal();if(o<=0)return{index:0,offsetPx:0};let{index:i,offsetPx:r}=t;if(i<0)return{index:0,offsetPx:0};if(i>o-1)i=o-1;while(r>0&&i<o-1){let c=e.getSize(i);if(r<c)break;r-=c,i++}while(r<0&&i>0)i--,r+=e.getSize(i);if(r<0)r=0;return{index:i,offsetPx:r}}function xt(e){let{sizeCache:t,getPixel:o,setPixel:i,getContainerSize:r}=e;function c(){let u=t.getTotalSize()+e.padding-r();return u>0?u:0}function l(u){if(u<=0)return 0;let g=c();return u>g?g:u}return{getLogical(){return Nt(t,o())},setLogical(u){i(l(Bt(t,u)))},getPixelEquivalent(){return o()},setPixelEquivalent(u){i(l(u))},getMaxPixelEquivalent:c,getRenderOrigin:e.getRenderOrigin,scrollByPx(u){i(l(o()+u))}}}var Ee=[],Kt={calculate:Ee,commit:Ee,afterScroll:Ee,idle:Ee,resize:Ee};function yt(e){if(e.length===0)return Kt;let t=[],o=[],i=[],r=[],c=[];for(let l=0;l<e.length;l++){let u=e[l].hooks;if(u===void 0)continue;if(u.onCalculate!==void 0)t.push(u.onCalculate);if(u.onCommit!==void 0)o.push(u.onCommit);if(u.onAfterScroll!==void 0)i.push(u.onAfterScroll);if(u.onIdle!==void 0)r.push(u.onIdle);if(u.onResize!==void 0)c.push(u.onResize)}return{calculate:t,commit:o,afterScroll:i,idle:r,resize:c}}function Et(e,t){for(let o=0;o<e.length;o++)e[o](t)}function Ie(e,t){for(let o=0;o<e.length;o++)e[o](t)}function Ge(e,t,o){for(let i=0;i<e.length;i++)e[i](t,o)}function It(e){for(let t=0;t<e.length;t++)e[t]()}function Tt(e,t,o){for(let i=0;i<e.length;i++)e[i](t,o)}function Lt(e,t,o,i,r,c,l,u){let g=i!==0||r!==0;return{prefix:e,selectedClass:`${e}-item--selected`,focusedClass:`${e}-item--focused`,placeholderClass:`${e}-item--placeholder`,replacedClass:`${e}-item--replaced`,translateProp:t?"translateX(":"translateY(",sizeProp:t?"width":"height",itemRole:"listitem",interactive:!1,startPadding:o,gap:l,hasCrossPad:g,crossStartProp:g?t?"top":"left":"",crossEndProp:g?t?"bottom":"right":"",crossStartVal:g?i+"px":"",crossEndVal:g?r+"px":"",oddClass:c,emitter:u??null,indexMap:null,ariaTotalFn:null}}function Ut(e,t,o,i,r){if(e.containerSize<=0||e.totalItems===0)return e.clear(),!0;let{scrollPosition:c,containerSize:l,totalItems:u}=e,g=r??0;e.totalSize=t.getTotalSize();let w=t.indexAtOffset(g>0?Math.max(0,c-g):c),C=t.indexAtOffset(c+l);if(C<u-1)C++;w=Math.max(0,w),C=Math.min(u-1,Math.max(0,C));let E=Math.max(0,w-o),h=Math.min(u-1,C+o),T=Math.ceil(l)+o*2;if(h-E+1>T)h=E+T-1,e.windowClamped=!0;let k=h-E+1;if(k>e.capacity)e.ensureCapacity(k);let _=Math.min(k,e.capacity);if(E===e.prevRangeStart&&h===e.prevRangeEnd&&!e.renderPending&&e.baseOffset===e.prevBaseOffset)return!1;e.visibleCount=_,e.startIndex=E;for(let p=0;p<_;p++){let B=E+p;e.visibleIndices[p]=B,e.visibleOffsets[p]=t.getOffset(B),e.visibleSizes[p]=t.getSize(B)}return Et(i.calculate,e),e.prevRangeStart=E,e.prevRangeEnd=h,e.prevBaseOffset=e.baseOffset,e.renderPending=!1,!0}var W={selected:!1,focused:!1};function Gt(e,t,o){for(let i=0;i<t;i++)if(e[i]===o)return!0;return!1}function Wt(e,t){if(t<=1)return!0;let o=e[0];for(let i=1;i<t;i++){let r=e[i];if(r!==o+1)return!1;o=r}return!0}function Xt(e,t,o,i,r,c,l,u,g,w){let C=g?null:r(),{visibleCount:E,visibleIndices:h}=e,T=l.ariaTotalFn?l.ariaTotalFn():e.totalItems,k=l.interactive?String(T):"",_=l.interactive&&T!==e.prevAriaTotal,p=null,B=l.indexMap;for(let S=0;S<E;S++){let R=h[S],M=B?B(R):R,a=e.visibleOffsets[S],v=e.visibleSizes[S],H=g?g(R):C[R];if(w)w(M,W);else W.selected=!1,W.focused=!1;let P=c.get(R),I=P;if(P===void 0){let f=t.acquire();if(H!==void 0){let y;try{y=i(H,M,W)}catch(F){if(l.emitter)l.emitter.emit("error",{error:F instanceof Error?F:Error(String(F)),context:`template:render:${M}`});t.release(f);continue}if(typeof y==="string")f.innerHTML=y;else f.textContent="",f.appendChild(y);Ke(f)}if(f.setAttribute("role",l.itemRole),f.setAttribute("data-index",String(M)),l.interactive)f.id=l.prefix+"-item-"+R,f.setAttribute("aria-posinset",String(M+1)),f.setAttribute("aria-setsize",k);if(H!==void 0){let y=String(H.id);if(f.setAttribute("data-id",y),y.startsWith(ze))f.classList.add(l.placeholderClass)}if(l.hasCrossPad)f.style.setProperty(l.crossStartProp,l.crossStartVal),f.style.setProperty(l.crossEndProp,l.crossEndVal);if(w){if(f.classList.toggle(l.selectedClass,W.selected),f.classList.toggle(l.focusedClass,W.focused),W.selected)f.setAttribute("aria-selected","true");else f.removeAttribute("aria-selected");f._lastSelected=W.selected,f._lastFocused=W.focused}if(l.oddClass)f.classList.toggle(l.oddClass,(R&1)===1);let K=a-e.baseOffset+l.startPadding;f.style.transform=l.translateProp+K+"px)",f._lastOffset=K;let b=v-l.gap;if(f.style[l.sizeProp]=b+"px",f._lastSize=b,f._lastItem=H,c.set(R,f),p===null)p=document.createDocumentFragment();p.appendChild(f)}else{if(_)P.setAttribute("aria-setsize",k);if(H!==void 0&&I._lastItem!==H){let b=P.getAttribute("data-id"),y=String(H.id),F;try{F=i(H,M,W)}catch(O){if(l.emitter)l.emitter.emit("error",{error:O instanceof Error?O:Error(String(O)),context:`template:render:${M}`});continue}if(typeof F==="string")P.innerHTML=F;else P.textContent="",P.appendChild(F);if(Ke(P),P.setAttribute("data-id",y),I._lastItem=H,b!==y){let O=b!==null&&b.startsWith(ze),N=y.startsWith(ze);if(O!==N)P.classList.toggle(l.placeholderClass,N);if(O&&!N)P.classList.add(l.replacedClass),setTimeout(()=>{P.classList.remove(l.replacedClass)},300)}}if(w){if(I._lastSelected!==W.selected){if(P.classList.toggle(l.selectedClass,W.selected),W.selected)P.setAttribute("aria-selected","true");else P.removeAttribute("aria-selected");I._lastSelected=W.selected}if(I._lastFocused!==W.focused)P.classList.toggle(l.focusedClass,W.focused),I._lastFocused=W.focused}let f=a-e.baseOffset+l.startPadding;if(I._lastOffset!==f)P.style.transform=l.translateProp+f+"px)",I._lastOffset=f;let K=v-l.gap;if(I._lastSize!==K)P.style[l.sizeProp]=K+"px",I._lastSize=K}}if(p!==null)o.appendChild(p);if(E>0&&Wt(h,E)){let S=h[0],R=h[E-1];for(let[M,a]of c)if(M<S||M>R)a.remove(),t.release(a),c.delete(M)}else for(let[S,R]of c)if(!Gt(h,E,S))R.remove(),t.release(R),c.delete(S);if(l.interactive)e.prevAriaTotal=e.totalItems;Ie(u.commit,e)}function We(e,t,o,i,r,c,l,u,g,w,C,E){let h=Ut(e,t,o,w,g.startPadding);if(e.windowClamped&&!e.windowClampReported)e.windowClampReported=!0,queueMicrotask(()=>{if(e.destroyed)return;g.emitter?.emit("error",{error:Error("[vlist] render window capped to the viewport: the item size spec reports sizes below 1px"),context:"render:window-ceiling"})});if(h)Xt(e,i,r,c,l,u,g,w,C,E)}var Xe=()=>{let e={},t=(c,l)=>{if(!e[c])e[c]=new Set;return e[c].add(l),()=>o(c,l)},o=(c,l)=>{e[c]?.delete(l)};return{on:t,off:o,emit:(c,l)=>{e[c]?.forEach((u)=>{try{u(l)}catch(g){}})},clear:(c)=>{if(c)delete e[c];else for(let l in e)delete e[l]}}};var Ct=2,Pt=(e=0)=>({velocity:0,sampleCount:0}),At=(e,t)=>{let o=performance.now(),i=e._lt??o,r=e._lp??t,c=o-i;if(e._lp=t,e._lt=o,c===0)return e.sampleCount=Math.min(e.sampleCount+1,5),e;if(c>100)return e.velocity=0,e.sampleCount=1,e;return e.velocity=Math.abs(t-r)/c,e.sampleCount=Math.min(e.sampleCount+1,5),e};function qt(e){let{item:t}=e;if(t.height!==void 0&&typeof t.height==="number"){if(!Number.isFinite(t.height)||t.height<=0)throw Error(`vlist: item.height must be a positive number, got ${t.height}`)}if(t.width!==void 0&&typeof t.width==="number"){if(!Number.isFinite(t.width)||t.width<=0)throw Error(`vlist: item.width must be a positive number, got ${t.width}`)}if(t.estimatedHeight!==void 0){if(!Number.isFinite(t.estimatedHeight)||t.estimatedHeight<=0)throw Error(`vlist: item.estimatedHeight must be a positive number, got ${t.estimatedHeight}`)}if(t.estimatedWidth!==void 0){if(!Number.isFinite(t.estimatedWidth)||t.estimatedWidth<=0)throw Error(`vlist: item.estimatedWidth must be a positive number, got ${t.estimatedWidth}`)}if(t.gap!==void 0){if(typeof t.gap!=="number"||!Number.isFinite(t.gap)||t.gap<0)throw Error(`vlist: item.gap must be a non-negative number, got ${t.gap}`)}if(e.overscan!==void 0){if(typeof e.overscan!=="number"||!Number.isFinite(e.overscan)||e.overscan<0)throw Error(`vlist: overscan must be a non-negative number, got ${e.overscan}`)}let o=e.scroll;if(o?.mode!==void 0||o?.runway!==void 0)throw Error('vlist 3.0: scroll.mode and scroll.runway were removed; bounded mode is gone. Use "vlist/synthetic" for huge lists or "vlist" for native scrolling.')}function Yt(e,t){let o=e==="horizontal"?"x":"y";if(t.some((r)=>r.name==="grid"))return{primary:o,cross:o==="x"?"y":"x"};return{primary:o}}function Zt(e,t){let o=Yt(e.orientation,t),i=o.primary==="x",r=pt(e.padding);return{axis:o,hasCrossAxis:o.cross!==void 0,overscan:e.overscan??Ae,reverse:e.reverse??!1,classPrefix:e.classPrefix??ct,mainAxisPadding:bt(r,i),crossAxisPadding:vt(r,i),startPadding:i?r.left:r.top,endPadding:i?r.right:r.bottom,crossPadStart:i?r.top:r.left,crossPadEnd:i?r.bottom:r.right,striped:e.item.striped||!1,gap:e.item.gap??0}}function jt(e,t){if(t)return e.item.width??e.item.estimatedWidth??100;return e.item.height??e.item.estimatedHeight??40}function Jt(e){let t=[...e];return t.sort((o,i)=>(o.priority??50)-(i.priority??50)),t}function Qt(e){let t=new Set;for(let o of e){if(t.has(o.name))throw Error(`[vlist] Duplicate plugin: ${o.name}`);t.add(o.name)}for(let o of e)if(o.conflicts){for(let i of o.conflicts)if(t.has(i))throw Error(`[vlist] Plugin "${o.name}" conflicts with "${i}"`)}}function en(e,t){for(let o of e)o.validateConfig?.(t)}function wt(e,t=[],o,i){if(qt(e),o&&typeof e.scroll?.scrollbar==="string")throw Error('vlist 3.0: scroll.scrollbar strings require "vlist"; use the scrollbar() plugin with "vlist/synthetic".');if(e.orientation==="horizontal"&&getComputedStyle(Ue(e.container)).direction==="rtl")throw Error("vlist: horizontal RTL lists are not supported; use a vertical list, or an LTR container");let r=Zt(e,t),c=r.axis.primary==="x",l=jt(e,c),u=r.gap,g=u>0?typeof l==="function"?(d)=>l(d)+u:l+u:l,w=typeof l==="number"?l:20,C=e.items?.length??0,E=r.striped?`${r.classPrefix}-item--odd`:"",h=Xe(),T=Lt(r.classPrefix,c,r.startPadding,r.crossPadStart,r.crossPadEnd,E,u,h),k=t.length>0?Jt(t):t;if(t.length>0)Qt(k),en(k,r);let _=Ue(e.container),p=St(_,r.classPrefix,c,e.ariaLabel);if(e.scroll?.scrollbar==="none")p.viewport.classList.add(`${r.classPrefix}-viewport--no-scrollbar`);if(e.scroll?.gutter==="stable")p.viewport.classList.add(`${r.classPrefix}-viewport--gutter-stable`);let S=_e(g,C,u),R=ht(r.classPrefix),M=Math.ceil(4096/w)+r.overscan*2+8,a=gt(M);a.totalItems=C;let v=e.items?[...e.items]:[],H=()=>v,P=new Map,I=Pt(),f={velocity:0,reliable:!1},K={range:{start:0,end:-1}},b={scrollPosition:0,direction:"down"},y={scrollPosition:0},F=-1,O=-1,N=-1,Z=null,x=yt(k),A=new Map,X=[],le=[],pe=[],J=null,j=null,be,ae,ee=null,ue=null,Y=null,de=null,s=null,z=null,G=null,D=null,U=!1,Te=!1,ve=null,Ye=0,Ze=0,je=null,Je=null,Qe=null,He=null,Oe=null,Ve=null,Le=null,Q=null,ge=null,et=null;a.containerSize=c?p.viewport.clientWidth:p.viewport.clientHeight,a.crossSize=c?p.viewport.clientHeight:p.viewport.clientWidth;function he(d){if(j)j(d);else{if(c)p.viewport.scrollLeft=d;else p.viewport.scrollTop=d;ae?.()}}let tt=xt({sizeCache:S,getPixel:()=>a.scrollPosition,setPixel:he,getRenderOrigin:()=>a.baseOffset,getContainerSize:()=>a.containerSize,padding:r.mainAxisPadding});if(t.length>0){let d={pool:R,config:r,emitter:h,template:e.item.template,getState(){return a},dom:{...p,renderedElement(n){let m=A.get("_getRenderedElement");if(m)return m(n);return P.get(n)??null},enableListbox(){let n=p.content.getAttribute("role");if(!n||n==="list")p.content.setAttribute("role","listbox"),p.content.setAttribute("tabindex","0");T.itemRole="option",T.interactive=!0}},scroll:{...tt,to:he,shiftBy(n){if(Q?.shiftBy)Q.shiftBy(n);else d.scroll.to(a.scrollPosition+n)},smoothTo(n,m,L,V){if(He)He(n,m,j??void 0,L,V);else d.scroll.to(typeof n==="function"?n():n)},cancel(){se?.cancelScroll()},commit(n){ae(n)},setSource(n){j=n.write,be=n.onContentSize,U=!0},setTarget(n){ve=n},setBoundedWrap(n,m){ge=n,et=m},setToPosFn(n){Oe=n},setToIndexFn(n){Ve=n},onFrame:De,onIdle:Ce,disableResize(){Te=!0}},items:{all:H,at(n){return Y?Y(n):v[n]},removeById(n){if(s)return s(n);let m=v.findIndex((L)=>L.id===n);if(m===-1)return-1;return v.splice(m,1),a.totalItems=v.length,S.rebuild(a.totalItems),te(),m},insertAt(n,m){if(z){z(n,m);return}v.splice(m,0,n),a.totalItems=v.length,S.rebuild(a.totalItems),te()},setGetFn(n){Y=n},setRemoveFn(n){s=n},setInsertFn(n){z=n},setUpdateFn(n){G=n},setIndexByIdFn(n){D=n},setTotalFn(n){J=n,T.ariaTotalFn=n},setIndexMapFn(n){T.indexMap=n}},sizes:{cache:S,get rawSpec(){return l},setConfig(n,m=0){let L=_e(n,a.totalItems,m),V=A.get("_setSizeCacheBase");if(V){let q=S.rebuild;Object.assign(S,L),S.rebuild=q,V(L.rebuild)}else Object.assign(S,L)},rebuild(){S.rebuild(a.totalItems)}},render:{force(){ne()},ifNeeded(){Se()},contentSize:ot,setFn(n,m){ee=()=>{let{prevRangeStart:L,prevRangeEnd:V}=a;if(n(),a.prevRangeStart!==L||a.prevRangeEnd!==V)Ie(x.commit,a)},ue=()=>{m(),Ie(x.commit,a)}},setStateFn(n){de=n},getStateFn(){return de}},hooks:{method(n,m){if(!n.startsWith("_")&&A.has(n))throw Error(`[vlist] duplicate method "${n}"; rename it or use a set*Fn hook`);A.set(n,m)},get(n){return A.get(n)},onClick(n){X.push(n)},onKeydown(n){le.push(n)},onDestroy(n){pe.push(n)}},nav:{set(n){if(n.ud!==void 0)Ye=n.ud;if(n.lr!==void 0)Ze=n.lr;if(n.scrollIndex)je=n.scrollIndex;if(n.navigate)Je=n.navigate;if(n.total)Qe=n.total},get:(()=>{let n={ud:0,lr:0,scrollIndex:null,navigate:null,total:null};return()=>(n.ud=Ye,n.lr=Ze,n.scrollIndex=je,n.navigate=Je,n.total=Qe,n)})()}};for(let n of k)if(n.setup)try{n.setup(d)}catch(m){let L=m instanceof Error?m:Error(String(m));h.emit("error",{error:L,context:`plugin:setup:${n.name}`})}}let ke=r.classPrefix+"--scrolling",ce=!1,Fe=e.scroll?.idleTimeout??fe;function nt(){if(b.scrollPosition=a.scrollPosition,c)b.direction=a.scrollDirection>0?"right":"left";else b.direction=a.scrollDirection>0?"down":"up";if(h.emit("scroll",b),At(I,a.scrollPosition),f.velocity=I.velocity,f.reliable=I.sampleCount>=Ct,h.emit("velocity:change",f),a.startIndex!==F||a.prevRangeEnd!==O)F=a.startIndex,O=a.prevRangeEnd,K.range.start=a.startIndex,K.range.end=a.prevRangeEnd,h.emit("range:change",K)}function ot(d,n=!0){if(Q){if(n)Q.refresh(d);return}a.totalSize=d;let m=d+r.mainAxisPadding;if(be?.(m),n)p.content.style[c?"width":"height"]=m+"px"}function te(){let d=ee?a.totalSize:S.getTotalSize();if(ot(d,!ee),Q||ee)return;i?.onContentSize(d,h)}function rt(){if(!Le)return;if((J?J():v.length)===0)return;let n=Le;Le=null,$e.scrollToIndex(n.index,n.alignOrOptions)}function Se(){if(ee)ee();else We(a,S,r.overscan,R,p.content,e.item.template,H,P,T,x,Y,de);rt()}function De(){if(!ce)ce=!0,p.root.classList.add(ke);if(Se(),Ge(x.afterScroll,a.scrollPosition,a.scrollDirection),a.scrollPosition!==N)N=a.scrollPosition,nt()}function Ce(){if(ce)ce=!1,p.root.classList.remove(ke);a.scrollDirection=0,It(x.idle),f.velocity=0,f.reliable=!1,h.emit("velocity:change",f),y.scrollPosition=a.scrollPosition,h.emit("scroll:idle",y)}function ne(){if(a.renderPending=!0,ue)ue();else We(a,S,r.overscan,R,p.content,e.item.template,H,P,T,x,Y,de);if(rt(),Ge(x.afterScroll,a.scrollPosition,a.scrollDirection),a.scrollPosition!==N){if(N=a.scrollPosition,nt(),Z!==null)clearTimeout(Z);Z=setTimeout(Ce,Fe)}}let it=U?!1:e.scroll?.wheel!==!1,se;if(U&&ge)throw Error("vlist: page() is not compatible with the carousel plugin — bounded page-mode scrolling is not implemented yet.");if(!U&&(o||ge))Q=(o??et)({state:a,sizeCache:S,viewport:p.viewport,content:p.content,isX:c,wheelEnabled:it,idleTimeout:Fe,...ve?{scrollTarget:ve}:{},mainAxisPadding:r.mainAxisPadding,...ge?{wrap:ge,onFold(d){let n=I;if(n._lp!==void 0)n._lp-=d;N-=d}}:{},onFrame:De,onIdle:Ce}),se=Q,j=(d)=>Q.setLogical(d);else{let d=(U?ft:i.native)({state:a,viewport:p.viewport,isX:c,wheelEnabled:it,idleTimeout:Fe,...ve?{scrollTarget:ve}:{},onFrame:De,onIdle:Ce});se=d,ae=d.commitScroll}He=se.smoothScrollTo;function Ne(d){let m=d.target.closest("[data-index]");if(!m)return null;let L=parseInt(m.getAttribute("data-index"),10);if(Number.isNaN(L))return null;let V=A.get("_layoutToDataIndex"),q,re=L;if(V){let oe=V(L);if(oe<0)return null;let me=A.get("_getItemAtLayout"),ye=A.get("_getItem");q=me?me(L):ye?ye(oe):Y?Y(oe):v[oe],re=oe}else q=Y?Y(L):v[L];if(q===void 0)return null;return{item:q,index:re}}function lt(d){for(let m=0;m<X.length;m++)X[m](d);let n=Ne(d);if(n)h.emit("item:click",{item:n.item,index:n.index,event:d})}function st(d){let n=Ne(d);if(n)h.emit("item:dblclick",{item:n.item,index:n.index,event:d})}function at(d){let n=Ne(d);if(n)h.emit("item:contextmenu",{item:n.item,index:n.index,event:d})}function ut(d){let n=d.target?.tagName;if((n==="INPUT"||n==="TEXTAREA"||n==="SELECT")&&!((d.ctrlKey||d.metaKey)&&(d.key==="f"||d.key==="F")))return;for(let m=0;m<le.length;m++)le[m](d)}if(p.content.addEventListener("click",lt),p.content.addEventListener("dblclick",st),p.content.addEventListener("contextmenu",at),le.length>0)p.root.addEventListener("keydown",ut);let Be=null;if(!Te)setTimeout(()=>{if(a.destroyed)return;Be=new ResizeObserver((n)=>{for(let m of n){let{width:L,height:V}=m.contentRect,q=c?L:V,re=c?V:L;if(Math.abs(q-a.containerSize)<1&&Math.abs(re-a.crossSize)<1)continue;if(a.containerSize=q,a.crossSize=re,a.resizeCapacity(q,w,r.overscan),Q)Q.refresh(S.getTotalSize());ne(),Tt(x.resize,L,V),h.emit("resize",{width:L,height:V})}}),Be.observe(p.viewport)},0);a.resizeCapacity(a.containerSize,w,r.overscan),te(),a.initialized=!0;let xe=null;if(e.defer)xe=requestAnimationFrame(()=>{if(xe=null,!a.destroyed)Se()});else Se();if(!U)se.attach();let $e={get element(){return p.root},get items(){return v},get total(){return J?J():v.length},setItems(d){v=[...d],a.totalItems=v.length,S.rebuild(a.totalItems),te(),ne()},appendItems(d){let n=()=>Math.max(0,S.getTotalSize()+r.mainAxisPadding-a.containerSize),m=r.reverse&&a.scrollPosition>=n()-1;if(v.push(...d),a.totalItems=v.length,S.rebuild(a.totalItems),te(),ne(),m)he(n())},prependItems(d){let n=a.totalItems>0,m=S.getTotalSize();if(v.unshift(...d),a.totalItems=v.length,S.rebuild(a.totalItems),te(),ne(),!r.reverse||!n)return;let L=S.getTotalSize()-m;if(L<=0)return;let V=Math.max(0,S.getTotalSize()+r.mainAxisPadding-a.containerSize);he(Math.min(a.scrollPosition+L,V))},updateItem(d,n){if(G){if(!G(d,n))return}else{let m=v.findIndex((L)=>L.id===d);if(m===-1)return;v[m]={...v[m],...n}}ne()},insertItem(d,n){if(z)z(d,n??a.totalItems);else{if(n===void 0)v.push(d);else v.splice(n,0,d);a.totalItems=v.length,S.rebuild(a.totalItems),te()}ne()},removeItem(d){if(s){if(s(d)<0)return}else{let n=v.findIndex((m)=>m.id===d);if(n===-1)return;v.splice(n,1),a.totalItems=v.length,S.rebuild(a.totalItems),te()}ne()},removeItems(d){if(s){let V=0;for(let q of d)if(s(q)>=0)V++;if(V>0)ne();return V}let n=new Set(d),m=v.length;v=v.filter((V)=>!n.has(V.id));let L=m-v.length;if(L>0)a.totalItems=v.length,S.rebuild(a.totalItems),te(),a.renderPending=!0,Se();return L},getItemAt(d){if(T.indexMap){let m=A.get("_getLoadedItem");return m?m(d):v[d]}let n=A.get("_getItemAtLayout");if(n){let m=A.get("_dataToLayoutIndex");return n(m?m(d):d)}return Y?Y(d):v[d]},getIndexById(d){if(D)return D(d);return v.findIndex((n)=>n.id===d)},scrollToIndex(d,n="start"){let m=J?J():v.length;if(m===0){Le={index:d,alignOrOptions:n};return}let L=typeof n==="string"?n:n.align??"start",V=typeof n==="object"?n.behavior:void 0,q=typeof n==="object"?n.duration:void 0,re=typeof n==="object"?n.easing:void 0;if(Ve&&Ve(d,L,V,q,re)!==!1)return;let oe=Math.max(0,Math.min(d,m-1)),me=S.getOffset(oe),ye=S.getSize(oe),Pe=a.containerSize,Ot=S.getTotalSize(),dt=r.mainAxisPadding,Vt=Math.max(0,Ot+dt-Pe),ie;if(Oe)ie=Oe(oe,S,Pe,m,L);else{let kt=r.startPadding;switch(L){case"center":ie=kt+me-(Pe-ye)/2;break;case"end":ie=me+ye+dt-Pe;break;default:ie=me}ie=Math.max(0,Math.min(ie,Vt))}if(V==="smooth")se.smoothScrollTo(ie,q??mt,j??void 0,re);else he(ie)},getScrollPosition(){return tt.getPixelEquivalent()},on:h.on.bind(h),off:h.off.bind(h),destroy(){if(a.destroyed)return;if(a.destroyed=!0,ce)ce=!1,p.root.classList.remove(ke);if(xe!==null)cancelAnimationFrame(xe),xe=null;if(Z!==null)clearTimeout(Z),Z=null;se.detach(),Be?.disconnect(),p.content.removeEventListener("click",lt),p.content.removeEventListener("dblclick",st),p.content.removeEventListener("contextmenu",at),p.root.removeEventListener("keydown",ut);let d=[];for(let n of pe)try{n()}catch(m){d.push(m instanceof Error?m:Error(String(m)))}for(let n of k)if(n.destroy)try{n.destroy()}catch(m){d.push(m instanceof Error?m:Error(String(m)))}for(let[,n]of P)n.remove();if(P.clear(),R.clear(),p.root.remove(),h.emit("destroy",void 0),h.clear(),d.length>0)for(let n of d)console.error("vlist: error during destroy:",n)}};for(let[d,n]of A){if(d.startsWith("_"))continue;$e[d]=n}return $e}var Mt=1,_t=2;var zt=(e)=>1-(1-e)**3;function Rt({getMax:e,onChange:t=()=>{},onFinish:o,axis:i="y",reducedMotion:r}){let c=0,l=0,u=null,g=0,w=0,C=0,E=0,h=0,T=null,k=0,_=0,p=0,B=0,S=400,R=zt,M=()=>p,a=0.006,v=(b)=>Math.max(0,Math.min(e(),b)),H=(b,y)=>i==="y"?y:b,P=(b,y)=>i==="y"?b:y;function I(b){let y=v(b);if(y!==c)c=y,t(c);return y!==b}function f(){h=0,l=u===null?0:5}function K(b){f(),I(b)}return{get position(){return c},get state(){return l},get velocity(){return h},get active(){return l===3||l===4},begin(b,y,F,O){if(u!==null){f();return}f(),u=b,g=C=H(y,F),w=P(y,F),E=O,l=1},move(b,y,F,O){if(b!==u||l!==1&&l!==2)return!1;let N=H(y,F);if(l===1){let A=Math.abs(N-g),X=Math.abs(P(y,F)-w);if(Math.max(A,X)<6)return!1;if(X>A*1.2)return f(),!1;if(A<X*1.2)return!1;l=2}let Z=C-N,x=O-E;if(x>0){let A=Math.max(-3,Math.min(3,Z/x));h=x>80?0:A*h<0?A:0.65*A+0.35*h}if(C=N,E=O,I(c+Z))h=0;return!0},end(b,y){if(b!==u)return;if(u=null,l===2&&!r()&&y-E<=80&&Math.abs(h)>=0.02)T=null,l=3;else h=0,l=0},cancel:f,reset(){u=null,f()},jump:K,shiftBy(b){_+=b,B+=b,I(c+b)},by(b){f();let y=c;return I(c+b),c!==y},smooth(b,y=400,F=zt){if(f(),B=0,M=typeof b==="function"?b:()=>b,u!==null||r()||y<=0){I(M());return}S=y,R=F,_=c,p=v(M()+B),T=null,l=4},resize(){f(),I(c)},tick(b){if(l!==3&&l!==4)return;if(T===null){if(T=b,l===4)k=b;return}let y=b-T;if(y<=0)return;if(T=b,y>100){if(l===4)I(v(M()+B)),l=0,o?.();else f();return}if(l===4){p=v(M()+B);let N=Math.min(1,(b-k)/S);if(I(_+(p-_)*R(N)),N===1)l=0,o?.();return}let F=Math.exp(-a*y),O=I(c+h*(1-F)/a);if(h*=F,O||Math.abs(h)<0.02)h=0,l=0}}}var Re=(e)=>e.pointerType==="touch"||e.pointerType==="pen";function qe(e){if(e.closest("textarea,select,[contenteditable]:not([contenteditable=false])"))return!0;let t=e.closest("input");return!!t&&!/^(button|submit|reset|checkbox|radio|image)$/.test(t.type)}function Ht(e){let{state:t,viewport:o,content:i,isX:r,onFrame:c,onIdle:l,mainAxisPadding:u,wrap:g}=e,w=o.parentElement??o,C=o.ownerDocument.defaultView,E=o.ownerDocument,h=C.matchMedia("(prefers-reduced-motion: reduce)"),T=0,k=null,_=null,p=!1,B=!1,S=!1,R=-1,M=-1,a=null,v=null,H=!1,P=!1,I=!1,f=!1,K,b=new Set;function y(s){let z=t.scrollPosition;if(g){let G=g.lapSize(),D=G>0?Math.trunc((s-g.home())/G):0;if(D!==0&&Math.abs(D)>=g.thresholdLaps){let U=D*G;S=!0,x.shiftBy(-U),S=!1,s=x.position,z-=U,e.onFold?.(U),g.onFold?.(U)}}if(t.prevScrollPosition=z,t.scrollPosition=t.baseOffset=s,t.scrollDirection=s>z?1:s<z?-1:0,!B)c()}function F(){if(_=null,x.active||x.state===_t||x.state===Mt)return;t.scrollDirection=0,l()}function O(){if(!p)return;if(_!==null)clearTimeout(_);_=setTimeout(F,e.idleTimeout||fe)}function N(){if(p&&k===null&&x.active)k=requestAnimationFrame(Z)}function Z(s){if(k=null,x.tick(s),x.active)N();else O()}let x=Rt({axis:r?"x":"y",getMax:()=>T,reducedMotion:()=>h.matches,onChange(s){if(!S)y(s)},onFinish(){let s=K;K=void 0,s?.()}});function A(){if(K=void 0,k!==null)cancelAnimationFrame(k),k=null;if(x.cancel(),_!==null)clearTimeout(_),_=null}function X(){if(A(),x.reset(),f&&a!==null&&o.hasPointerCapture(a))o.releasePointerCapture(a);f=!1,b.clear(),a=v=null,H=P=I=!1,O()}function le(s){if(!Re(s))return;if(s.isPrimary){if(b.size)X();b.clear()}if(b.add(s.pointerId),b.size>1){I=!0,A();return}if(!(s.target instanceof Element)||qe(s.target)){A();return}a=s.pointerId,H=!1,P=x.active,v=null,A(),x.begin(s.pointerId,s.clientX,s.clientY,s.timeStamp)}function pe(s){if(!Re(s)||s.target instanceof Node&&o.contains(s.target))return;if(s.isPrimary&&b.size)X();else if(b.size)b.add(s.pointerId),I=!0,A()}function J(s){if(!Re(s)||I)return;if(x.move(s.pointerId,s.clientX,s.clientY,s.timeStamp)){if(H=!0,!f)o.setPointerCapture(s.pointerId),f=!0;if(s.cancelable)s.preventDefault()}}function j(s){if(!Re(s)||!b.has(s.pointerId))return;let z=s.type==="pointercancel";if(z)A();if(a===s.pointerId){if(!z&&!I&&(H||P))v=s.pointerId;if(f&&o.hasPointerCapture(s.pointerId))o.releasePointerCapture(s.pointerId);f=!1,a=null,H=P=!1}if(x.end(s.pointerId,s.timeStamp),b.delete(s.pointerId),!b.size){if(I||z)x.reset();I=!1}N(),O()}function be(s){let z=s.pointerId;if(s.detail!==0&&v!==null&&(z===v||z===void 0))v=null,s.preventDefault(),s.stopImmediatePropagation()}function ae(s){if(s.ctrlKey||s.defaultPrevented||!(s.target instanceof Element)||qe(s.target))return;let z=s.deltaMode===1?16:s.deltaMode===2?t.containerSize:1,G=r?s.deltaX:s.deltaY,D=r?s.deltaY:s.deltaX,U=r?o.scrollHeight>o.clientHeight:o.scrollWidth>o.clientWidth;if(U&&Math.abs(D)>Math.abs(G))return;if(U&&D!==0)if(s.preventDefault(),r)o.scrollTop+=D*z;else o.scrollLeft+=D*z;let Te=r&&!U&&G===0?D:G;if(A(),x.by(Te*z))s.preventDefault();O()}function ee(s){if(s.defaultPrevented||s.ctrlKey||s.metaKey||s.altKey||!(s.target instanceof Element)||qe(s.target))return;if((s.key===" "||s.key==="Enter")&&s.target.closest("button,summary,a,input"))return;let z=e.sizeCache,G=z.getSize(z.indexAtOffset(x.position)),D;if(s.key===(r?"ArrowRight":"ArrowDown"))D=x.position+G;if(s.key===(r?"ArrowLeft":"ArrowUp"))D=x.position-G;if(s.key==="PageDown"||s.key===" ")D=x.position+t.containerSize*(s.shiftKey&&s.key===" "?-1:1);if(s.key==="PageUp")D=x.position-t.containerSize;if(s.key==="Home")D=0;if(s.key==="End")D=T;if(D!==void 0)s.preventDefault(),Y(D)}function ue(){if(E.hidden)X()}function Y(s){let z=x.position;if(A(),x.jump(s),z===Math.max(0,Math.min(T,s)))y(x.position);O()}function de(s){let z=R!==t.containerSize||M!==t.crossSize,G=s!==t.totalSize||z;if(R=t.containerSize,M=t.crossSize,t.totalSize=s,T=Math.max(0,s+u-t.containerSize),G){if(B=!0,z)A(),x.resize();else x.shiftBy(0);y(x.position),B=!1}}return{setLogical:Y,refresh:de,shiftBy(s){if(t.totalSize=e.sizeCache.getTotalSize(),T=Math.max(0,t.totalSize+u-t.containerSize),x.shiftBy(s),!x.active)O()},cancelScroll(){A(),O()},getLogical:()=>t.scrollPosition,getMaxLogical:()=>T,smoothScrollTo(s,z,G,D=we,U){if(A(),x.smooth(s,z,D),K=U,!x.active)K=void 0,U?.(),O();else N()},attach(){if(p)return;if(p=!0,o.style.overflowX=r?"hidden":"auto",o.style.overflowY=r?"auto":"hidden",o.style.touchAction=r?"pan-y pinch-zoom":"pan-x pinch-zoom",o.style.overflowAnchor="none",i.style[r?"width":"height"]="100%",i.style.overflow="clip",i.style.overflowAnchor="none",o.addEventListener("pointerdown",le),C.addEventListener("pointerdown",pe),o.addEventListener("pointermove",J,{passive:!1}),C.addEventListener("pointerup",j),C.addEventListener("pointercancel",j),o.addEventListener("click",be,!0),e.wheelEnabled)o.addEventListener("wheel",ae,{passive:!1});w.addEventListener("keydown",ee),C.addEventListener("blur",X),E.addEventListener("visibilitychange",ue),h.addEventListener("change",X),N()},detach(){if(p=!1,X(),_!==null)clearTimeout(_),_=null;o.removeEventListener("pointerdown",le),C.removeEventListener("pointerdown",pe),o.removeEventListener("pointermove",J),C.removeEventListener("pointerup",j),C.removeEventListener("pointercancel",j),o.removeEventListener("click",be,!0),o.removeEventListener("wheel",ae),w.removeEventListener("keydown",ee),C.removeEventListener("blur",X),E.removeEventListener("visibilitychange",ue),h.removeEventListener("change",X),o.style.overflowX=o.style.overflowY=o.style.touchAction=o.style.overflowAnchor="",i.style.overflow=i.style.overflowAnchor=""}}}function Wn(e,t=[]){return wt(e,t,Ht)}export{Wn as createVList};
|
|
1
|
+
var we=3,vt="vlist";var fe=150;var Me=(e)=>e<0.5?2*e*e:1-(-2*e+2)**2/2,gt=300;var ze="__placeholder_";function ht(e){let{state:t,viewport:o,isX:i,onFrame:r,onIdle:u}=e,l=e.idleTimeout||fe,d=null,y=null;function C(I=i?o.scrollLeft:o.scrollTop){t.prevScrollPosition=t.scrollPosition,t.scrollPosition=I,t.scrollDirection=I>t.prevScrollPosition?1:I<t.prevScrollPosition?-1:0,r(),v()}function v(){if(d!==null)clearTimeout(d);d=setTimeout(()=>{d=null,t.scrollDirection=0,u()},l)}function h(){if(y!==null)cancelAnimationFrame(y),y=null}function f(I,_,M,p=Me,B){h();let x=t.scrollPosition,R=typeof I==="function"?I:()=>I,H=R();if(Math.abs(H-x)<1){if(M)M(H);else if(i)o.scrollLeft=H;else o.scrollTop=H;B?.();return}let a=performance.now();function S(O){H=R();let P=O-a,A=Math.min(P/_,1),b=x+(H-x)*p(A);if(M)M(b);else if(i)o.scrollLeft=b;else o.scrollTop=b;if(!M)C(b);if(A<1)y=requestAnimationFrame(S);else y=null,B?.()}y=requestAnimationFrame(S)}return{attach(){},detach(){if(h(),d!==null)clearTimeout(d),d=null},cancelScroll:h,smoothScrollTo:f,commitScroll:C}}var _e={top:0,right:0,bottom:0,left:0},St=(e)=>{if(e==null)return _e;if(typeof e==="number")return e===0?_e:{top:e,right:e,bottom:e,left:e};if(e.length===2){let[u,l]=e;return u===0&&l===0?_e:{top:u,right:l,bottom:u,left:l}}let[t,o,i,r]=e;return t===0&&o===0&&i===0&&r===0?_e:{top:t,right:o,bottom:i,left:r}},yt=(e,t)=>t?e.left+e.right:e.top+e.bottom,xt=(e,t)=>t?e.top+e.bottom:e.left+e.right;function Et(e){let t={visibleIndices:new Int32Array(e),visibleOffsets:new Float64Array(e),visibleSizes:new Float64Array(e),visibleCount:0,startIndex:0,totalSize:0,capacity:e,scrollPosition:0,prevScrollPosition:0,scrollDirection:0,baseOffset:0,prevBaseOffset:0,containerSize:0,crossSize:0,totalItems:0,prevRangeStart:0,prevRangeEnd:-1,renderPending:!1,initialized:!1,destroyed:!1,windowClamped:!1,windowClampReported:!1,prevAriaTotal:-1,ensureCapacity(o){if(o<=t.capacity)return;let i=o+8,r=new Int32Array(i),u=new Float64Array(i),l=new Float64Array(i);r.set(t.visibleIndices),u.set(t.visibleOffsets),l.set(t.visibleSizes),t.visibleIndices=r,t.visibleOffsets=u,t.visibleSizes=l,t.capacity=i},resizeCapacity(o,i,r=we){if(i<=0||o<=0)return;t.ensureCapacity(Math.ceil(o/i)+r*2)},clear(){t.visibleCount=0,t.startIndex=0}};return t}var Gt=(e,t,o)=>{let i=t;return{getOffset:(r)=>r*e,getSize:(r)=>e,indexAtOffset:(r)=>{if(i===0||e===0)return 0;return Math.max(0,Math.min(Math.floor(r/e),i-1))},getTotalSize:()=>{let r=i*e;return r>0?r-o:0},getTotal:()=>i,rebuild:(r)=>{i=r},invalidate:()=>{},isVariable:()=>!1}};var It=(e,t,o,i)=>{while(t<o){let r=t+o+1>>>1;if(e[r]<=i)t=r;else o=r-1}return t},qt=(e,t,o)=>{let i=0,r=0,u=new Float64Array(0),l=new Float64Array(0),d=new Float64Array(1),y=(v,h)=>{for(let f=v;f<r;f++){if(f<=h){let I=f<<9,_=Math.min(I+512,i),M=0;for(let p=I;p<_;p++)u[p]=M,M+=e(p);l[f]=M}d[f+1]=d[f]+l[f]}},C=(v)=>{i=v,r=Math.ceil(v/512),u=new Float64Array(v),l=new Float64Array(r),d=new Float64Array(r+1),y(0,r-1)};return C(t),{getOffset:(v)=>{if(v<=0)return 0;if(v>=i)return d[r];return d[v>>>9]+u[v]},getSize:(v)=>e(v),indexAtOffset:(v)=>{if(i===0||v<=0)return 0;if(v>=d[r])return i-1;let h=It(d,0,r-1,v),f=h<<9;return It(u,f,Math.min(f+512,i)-1,v-d[h])},getTotalSize:()=>{let v=d[r];return v>0?v-o:0},getTotal:()=>i,rebuild:(v)=>C(v),invalidate:(v,h=v)=>{if(v>=0&&h<i)y(v>>>9,h>>>9)},isVariable:()=>!0}},He=(e,t,o=0)=>{if(typeof e==="number")return Gt(e,t,o);return qt(e,t,o)};function Tt(e){let t=[],o=`${e}-item`,i=document.createElement("div");return i.className=o,{acquire(){if(t.length>0)return t.pop();return i.cloneNode(!1)},release(r){r.className=o,r.removeAttribute("style"),r.removeAttribute("id"),r.removeAttribute("role"),r.removeAttribute("aria-selected"),r.removeAttribute("aria-posinset"),r.removeAttribute("aria-setsize"),r.removeAttribute("data-index"),r.removeAttribute("data-id"),r.textContent="",t.push(r)},get size(){return t.length},trim(r){let u=r>0?r:0;if(t.length>u)t.length=u},clear(){t.length=0}}}function Ue(e){let t=e.querySelectorAll("a[href],button,input,select,textarea,[tabindex]");for(let o=0;o<t.length;o++)t[o].setAttribute("tabindex","-1");e._stamp=0}function Ge(e){if(typeof e==="string"){let t=document.querySelector(e);if(!t)throw Error(`[vlist] Container not found: ${e}`);return t}return e}function Lt(e,t,o,i){let r=o?`${t} ${t}--horizontal`:t,u=o?"overflow-x:auto;overflow-y:hidden;height:100%;width:100%":"overflow:auto;height:100%;width:100%",l=o?"position:relative;height:100%;overflow-anchor:none":"position:relative;width:100%;overflow-anchor:none",d=' role="list"';if(i)d+=` aria-label="${i.replace(/"/g,""")}"`;if(o)d+=' aria-orientation="horizontal"';e.insertAdjacentHTML("beforeend",`<div class="${r}"><div class="${t}-viewport" style="${u}" tabindex="-1"><div class="${t}-content" style="${l}"${d}></div></div></div>`);let y=e.lastElementChild,C=y.firstElementChild,v=C.firstElementChild,h=document.createElement("div");return h.className=`${t}-live`,h.style.cssText="position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0",h.setAttribute("aria-live","polite"),h.setAttribute("aria-atomic","true"),h.setAttribute("role","status"),y.appendChild(h),{root:y,viewport:C,content:v,liveRegion:h}}function Yt(e,t){if(e.getTotal()<=0)return{index:0,offsetPx:0};let i=t<=0?0:t,r=e.indexAtOffset(i),u=i-e.getOffset(r);return{index:r,offsetPx:u>0?u:0}}function Xt(e,t){let o=Zt(e,t);return e.getOffset(o.index)+o.offsetPx}function Zt(e,t){let o=e.getTotal();if(o<=0)return{index:0,offsetPx:0};let{index:i,offsetPx:r}=t;if(i<0)return{index:0,offsetPx:0};if(i>o-1)i=o-1;while(r>0&&i<o-1){let u=e.getSize(i);if(r<u)break;r-=u,i++}while(r<0&&i>0)i--,r+=e.getSize(i);if(r<0)r=0;return{index:i,offsetPx:r}}function Ct(e){let{sizeCache:t,getPixel:o,setPixel:i,getContainerSize:r}=e;function u(){let d=t.getTotalSize()+e.padding-r();return d>0?d:0}function l(d){if(d<=0)return 0;let y=u();return d>y?y:d}return{getLogical(){return Yt(t,o())},setLogical(d){i(l(Xt(t,d)))},getPixelEquivalent(){return o()},setPixelEquivalent(d){i(l(d))},getMaxPixelEquivalent:u,getRenderOrigin:e.getRenderOrigin,scrollByPx(d){i(l(o()+d))}}}var Ie=[],jt={calculate:Ie,commit:Ie,afterScroll:Ie,idle:Ie,resize:Ie};function Pt(e){if(e.length===0)return jt;let t=[],o=[],i=[],r=[],u=[];for(let l=0;l<e.length;l++){let d=e[l].hooks;if(d===void 0)continue;if(d.onCalculate!==void 0)t.push(d.onCalculate);if(d.onCommit!==void 0)o.push(d.onCommit);if(d.onAfterScroll!==void 0)i.push(d.onAfterScroll);if(d.onIdle!==void 0)r.push(d.onIdle);if(d.onResize!==void 0)u.push(d.onResize)}return{calculate:t,commit:o,afterScroll:i,idle:r,resize:u}}function At(e,t){for(let o=0;o<e.length;o++)e[o](t)}function Te(e,t){for(let o=0;o<e.length;o++)e[o](t)}function qe(e,t,o){for(let i=0;i<e.length;i++)e[i](t,o)}function wt(e){for(let t=0;t<e.length;t++)e[t]()}function Mt(e,t,o){for(let i=0;i<e.length;i++)e[i](t,o)}function zt(e,t,o,i,r,u,l,d){let y=i!==0||r!==0;return{prefix:e,selectedClass:`${e}-item--selected`,focusedClass:`${e}-item--focused`,placeholderClass:`${e}-item--placeholder`,replacedClass:`${e}-item--replaced`,translateProp:t?"translateX(":"translateY(",sizeProp:t?"width":"height",itemRole:"listitem",interactive:!1,startPadding:o,gap:l,hasCrossPad:y,crossStartProp:y?t?"top":"left":"",crossEndProp:y?t?"bottom":"right":"",crossStartVal:y?i+"px":"",crossEndVal:y?r+"px":"",oddClass:u,emitter:d??null,indexMap:null,ariaTotalFn:null}}function Jt(e,t,o,i,r){if(e.containerSize<=0||e.totalItems===0)return e.clear(),!0;let{scrollPosition:u,containerSize:l,totalItems:d}=e,y=r??0;e.totalSize=t.getTotalSize();let C=t.indexAtOffset(y>0?Math.max(0,u-y):u),v=t.indexAtOffset(u+l);if(v<d-1)v++;C=Math.max(0,C),v=Math.min(d-1,Math.max(0,v));let h=Math.max(0,C-o),f=Math.min(d-1,v+o),I=Math.ceil(l)+o*2;if(f-h+1>I)f=h+I-1,e.windowClamped=!0;let _=f-h+1;if(_>e.capacity)e.ensureCapacity(_);let M=Math.min(_,e.capacity);if(h===e.prevRangeStart&&f===e.prevRangeEnd&&!e.renderPending&&e.baseOffset===e.prevBaseOffset)return!1;e.visibleCount=M,e.startIndex=h;for(let p=0;p<M;p++){let B=h+p;e.visibleIndices[p]=B,e.visibleOffsets[p]=t.getOffset(B),e.visibleSizes[p]=t.getSize(B)}return At(i.calculate,e),e.prevRangeStart=h,e.prevRangeEnd=f,e.prevBaseOffset=e.baseOffset,e.renderPending=!1,!0}var U={selected:!1,focused:!1};function Qt(e,t,o){for(let i=0;i<t;i++)if(e[i]===o)return!0;return!1}function en(e,t){if(t<=1)return!0;let o=e[0];for(let i=1;i<t;i++){let r=e[i];if(r!==o+1)return!1;o=r}return!0}function tn(e,t,o,i,r,u,l,d,y,C){let v=y?null:r(),{visibleCount:h,visibleIndices:f}=e,I=l.ariaTotalFn?l.ariaTotalFn():e.totalItems,_=l.interactive?String(I):"",M=l.interactive&&I!==e.prevAriaTotal,p=null,B=l.indexMap;for(let x=0;x<h;x++){let R=f[x],H=B?B(R):R,a=e.visibleOffsets[x],S=e.visibleSizes[x],O=y?y(R):v[R];if(C)C(H,U);else U.selected=!1,U.focused=!1;let P=u.get(R),A=P;if(P===void 0){let b=t.acquire();if(O!==void 0){let E;try{E=i(O,H,U)}catch(V){if(l.emitter)l.emitter.emit("error",{error:V instanceof Error?V:Error(String(V)),context:`template:render:${H}`});t.release(b);continue}if(typeof E==="string")b.innerHTML=E;else b.textContent="",b.appendChild(E);Ue(b)}if(b.setAttribute("role",l.itemRole),b.setAttribute("data-index",String(H)),l.interactive)b.id=l.prefix+"-item-"+R,b.setAttribute("aria-posinset",String(H+1)),b.setAttribute("aria-setsize",_);if(O!==void 0){let E=String(O.id);if(b.setAttribute("data-id",E),E.startsWith(ze))b.classList.add(l.placeholderClass)}if(l.hasCrossPad)b.style.setProperty(l.crossStartProp,l.crossStartVal),b.style.setProperty(l.crossEndProp,l.crossEndVal);if(C){if(b.classList.toggle(l.selectedClass,U.selected),b.classList.toggle(l.focusedClass,U.focused),U.selected)b.setAttribute("aria-selected","true");else b.removeAttribute("aria-selected");b._lastSelected=U.selected,b._lastFocused=U.focused}if(l.oddClass)b.classList.toggle(l.oddClass,(R&1)===1);let W=a-e.baseOffset+l.startPadding;b.style.transform=l.translateProp+W+"px)",b._lastOffset=W;let g=S-l.gap;if(b.style[l.sizeProp]=g+"px",b._lastSize=g,b._lastItem=O,u.set(R,b),p===null)p=document.createDocumentFragment();p.appendChild(b)}else{if(M)P.setAttribute("aria-setsize",_);if(O!==void 0&&A._lastItem!==O){let g=P.getAttribute("data-id"),E=String(O.id),V;try{V=i(O,H,U)}catch(F){if(l.emitter)l.emitter.emit("error",{error:F instanceof Error?F:Error(String(F)),context:`template:render:${H}`});continue}if(typeof V==="string")P.innerHTML=V;else P.textContent="",P.appendChild(V);if(Ue(P),P.setAttribute("data-id",E),A._lastItem=O,g!==E){let F=g!==null&&g.startsWith(ze),N=E.startsWith(ze);if(F!==N)P.classList.toggle(l.placeholderClass,N);if(F&&!N)P.classList.add(l.replacedClass),setTimeout(()=>{P.classList.remove(l.replacedClass)},300)}}if(C){if(A._lastSelected!==U.selected){if(P.classList.toggle(l.selectedClass,U.selected),U.selected)P.setAttribute("aria-selected","true");else P.removeAttribute("aria-selected");A._lastSelected=U.selected}if(A._lastFocused!==U.focused)P.classList.toggle(l.focusedClass,U.focused),A._lastFocused=U.focused}let b=a-e.baseOffset+l.startPadding;if(A._lastOffset!==b)P.style.transform=l.translateProp+b+"px)",A._lastOffset=b;let W=S-l.gap;if(A._lastSize!==W)P.style[l.sizeProp]=W+"px",A._lastSize=W}}if(p!==null)o.appendChild(p);if(h>0&&en(f,h)){let x=f[0],R=f[h-1];for(let[H,a]of u)if(H<x||H>R)a.remove(),t.release(a),u.delete(H)}else for(let[x,R]of u)if(!Qt(f,h,x))R.remove(),t.release(R),u.delete(x);if(l.interactive)e.prevAriaTotal=e.totalItems;Te(d.commit,e)}function Ye(e,t,o,i,r,u,l,d,y,C,v,h){let f=Jt(e,t,o,C,y.startPadding);if(e.windowClamped&&!e.windowClampReported)e.windowClampReported=!0,queueMicrotask(()=>{if(e.destroyed)return;y.emitter?.emit("error",{error:Error("[vlist] render window capped to the viewport: the item size spec reports sizes below 1px"),context:"render:window-ceiling"})});if(f)tn(e,i,r,u,l,d,y,C,v,h)}var Xe=()=>{let e={},t=(u,l)=>{if(!e[u])e[u]=new Set;return e[u].add(l),()=>o(u,l)},o=(u,l)=>{e[u]?.delete(l)};return{on:t,off:o,emit:(u,l)=>{e[u]?.forEach((d)=>{try{d(l)}catch(y){}})},clear:(u)=>{if(u)delete e[u];else for(let l in e)delete e[l]}}};var _t=2,Ht=(e=0)=>({velocity:0,sampleCount:0}),Rt=(e,t)=>{let o=performance.now(),i=e._lt??o,r=e._lp??t,u=o-i;if(e._lp=t,e._lt=o,u===0)return e.sampleCount=Math.min(e.sampleCount+1,5),e;if(u>100)return e.velocity=0,e.sampleCount=1,e;return e.velocity=Math.abs(t-r)/u,e.sampleCount=Math.min(e.sampleCount+1,5),e};function nn(e){let{item:t}=e;if(t.height!==void 0&&typeof t.height==="number"){if(!Number.isFinite(t.height)||t.height<=0)throw Error(`vlist: item.height must be a positive number, got ${t.height}`)}if(t.width!==void 0&&typeof t.width==="number"){if(!Number.isFinite(t.width)||t.width<=0)throw Error(`vlist: item.width must be a positive number, got ${t.width}`)}if(t.estimatedHeight!==void 0){if(!Number.isFinite(t.estimatedHeight)||t.estimatedHeight<=0)throw Error(`vlist: item.estimatedHeight must be a positive number, got ${t.estimatedHeight}`)}if(t.estimatedWidth!==void 0){if(!Number.isFinite(t.estimatedWidth)||t.estimatedWidth<=0)throw Error(`vlist: item.estimatedWidth must be a positive number, got ${t.estimatedWidth}`)}if(t.gap!==void 0){if(typeof t.gap!=="number"||!Number.isFinite(t.gap)||t.gap<0)throw Error(`vlist: item.gap must be a non-negative number, got ${t.gap}`)}if(e.overscan!==void 0){if(typeof e.overscan!=="number"||!Number.isFinite(e.overscan)||e.overscan<0)throw Error(`vlist: overscan must be a non-negative number, got ${e.overscan}`)}let o=e.scroll;if(o?.mode!==void 0||o?.runway!==void 0)throw Error('vlist 3.0: scroll.mode and scroll.runway were removed; bounded mode is gone. Use "vlist/synthetic" for huge lists or "vlist" for native scrolling.')}function on(e,t){let o=e==="horizontal"?"x":"y";if(t.some((r)=>r.name==="grid"))return{primary:o,cross:o==="x"?"y":"x"};return{primary:o}}function rn(e,t){let o=on(e.orientation,t),i=o.primary==="x",r=St(e.padding);return{axis:o,hasCrossAxis:o.cross!==void 0,overscan:e.overscan??we,reverse:e.reverse??!1,classPrefix:e.classPrefix??vt,mainAxisPadding:yt(r,i),crossAxisPadding:xt(r,i),startPadding:i?r.left:r.top,endPadding:i?r.right:r.bottom,crossPadStart:i?r.top:r.left,crossPadEnd:i?r.bottom:r.right,striped:e.item.striped||!1,gap:e.item.gap??0}}function ln(e,t){if(t)return e.item.width??e.item.estimatedWidth??100;return e.item.height??e.item.estimatedHeight??40}function sn(e){let t=[...e];return t.sort((o,i)=>(o.priority??50)-(i.priority??50)),t}function an(e){let t=new Set;for(let o of e){if(t.has(o.name))throw Error(`[vlist] Duplicate plugin: ${o.name}`);t.add(o.name)}for(let o of e)if(o.conflicts){for(let i of o.conflicts)if(t.has(i))throw Error(`[vlist] Plugin "${o.name}" conflicts with "${i}"`)}}function un(e,t){for(let o of e)o.validateConfig?.(t)}function Ot(e,t=[],o,i){if(nn(e),o&&typeof e.scroll?.scrollbar==="string")throw Error('vlist 3.0: scroll.scrollbar strings require "vlist"; use the scrollbar() plugin with "vlist/synthetic".');if(e.orientation==="horizontal"&&getComputedStyle(Ge(e.container)).direction==="rtl")throw Error("vlist: horizontal RTL lists are not supported; use a vertical list, or an LTR container");let r=rn(e,t),u=r.axis.primary==="x",l=ln(e,u),d=r.gap,y=d>0?typeof l==="function"?(c)=>l(c)+d:l+d:l,C=typeof l==="number"?l:20,v=e.items?.length??0,h=r.striped?`${r.classPrefix}-item--odd`:"",f=Xe(),I=zt(r.classPrefix,u,r.startPadding,r.crossPadStart,r.crossPadEnd,h,d,f),_=t.length>0?sn(t):t;if(t.length>0)an(_),un(_,r);let M=Ge(e.container),p=Lt(M,r.classPrefix,u,e.ariaLabel);if(e.scroll?.scrollbar==="none")p.viewport.classList.add(`${r.classPrefix}-viewport--no-scrollbar`);if(e.scroll?.gutter==="stable")p.viewport.classList.add(`${r.classPrefix}-viewport--gutter-stable`);let x=He(y,v,d),R=Tt(r.classPrefix),H=Math.ceil(4096/C)+r.overscan*2+8,a=Et(H);a.totalItems=v;let S=e.items?[...e.items]:[],O=()=>S,P=new Map,A=Ht(),b={velocity:0,reliable:!1},W={range:{start:0,end:-1}},g={scrollPosition:0,direction:"down"},E={scrollPosition:0},V=-1,F=-1,N=-1,j=null,T=Pt(_),z=new Map,G=[],se=[],pe=[],be=(c)=>{let n=(m)=>{c.push(m instanceof Error?m:Error(String(m)))};for(let m of pe)try{m()}catch(L){n(L)}for(let m of _)if(m.destroy)try{m.destroy()}catch(L){n(L)}},Z=null,Q=null,ve,ce,ee=null,de=null,X=null,s=null,w=null,K=null,D=null,q=null,re=!1,je=!1,ge=null,Je=0,Qe=0,et=null,tt=null,nt=null,ot=null,Fe=null,ke=null,Ve=null,Ce=null,J=null,he=null,rt=null;a.containerSize=u?p.viewport.clientWidth:p.viewport.clientHeight,a.crossSize=u?p.viewport.clientHeight:p.viewport.clientWidth;function Se(c){if(Q)Q(c);else{if(u)p.viewport.scrollLeft=c;else p.viewport.scrollTop=c;ce?.()}}let it=Ct({sizeCache:x,getPixel:()=>a.scrollPosition,setPixel:Se,getRenderOrigin:()=>a.baseOffset,getContainerSize:()=>a.containerSize,padding:r.mainAxisPadding});if(t.length>0){let c={pool:R,config:r,emitter:f,template:e.item.template,getState(){return a},dom:{...p,renderedElement(n){let m=z.get("_getRenderedElement");if(m)return m(n);return P.get(n)??null},enableListbox(){let n=p.content.getAttribute("role");if(!n||n==="list")p.content.setAttribute("role","listbox"),p.content.setAttribute("tabindex","0");I.itemRole="option",I.interactive=!0}},scroll:{...it,to:Se,shiftBy(n){if(J?.shiftBy)J.shiftBy(n);else c.scroll.to(a.scrollPosition+n)},smoothTo(n,m,L,k){if(Fe)Fe(n,m,Q??void 0,L,k);else c.scroll.to(typeof n==="function"?n():n)},cancel(){ue?.cancelScroll()},commit(n){ce(n)},setSource(n){Q=n.write,ve=n.onContentSize,re=!0},setTarget(n){ge=n},setBoundedWrap(n,m){he=n,rt=m},setToPosFn(n){ke=n},setToIndexFn(n){Ve=n},onFrame:Be,onIdle:Pe,disableResize(){je=!0}},items:{all:O,at(n){return X?X(n):S[n]},removeById(n){if(w)return w(n);let m=S.findIndex((L)=>L.id===n);if(m===-1)return-1;return S.splice(m,1),a.totalItems=S.length,x.rebuild(a.totalItems),te(),m},insertAt(n,m){if(K){K(n,m);return}S.splice(m,0,n),a.totalItems=S.length,x.rebuild(a.totalItems),te()},setGetFn(n){X=n},setRemoveFn(n){w=n},setInsertFn(n){K=n},setUpdateFn(n){D=n},setIndexByIdFn(n){q=n},setTotalFn(n){Z=n,I.ariaTotalFn=n},setIndexMapFn(n){I.indexMap=n}},sizes:{cache:x,get rawSpec(){return l},setConfig(n,m=0){let L=He(n,a.totalItems,m),k=z.get("_setSizeCacheBase");if(k){let Y=x.rebuild;Object.assign(x,L),x.rebuild=Y,k(L.rebuild)}else Object.assign(x,L)},rebuild(){x.rebuild(a.totalItems)}},render:{force(){ne()},ifNeeded(){ye()},contentSize:st,setFn(n,m){ee=()=>{let{prevRangeStart:L,prevRangeEnd:k}=a;if(n(),a.prevRangeStart!==L||a.prevRangeEnd!==k)Te(T.commit,a)},de=()=>{m(),Te(T.commit,a)}},setStateFn(n){s=n},getStateFn(){return s}},hooks:{method(n,m){if(!n.startsWith("_")&&z.has(n))throw Error(`[vlist] duplicate method "${n}"; rename it or use a set*Fn hook`);z.set(n,m)},get(n){return z.get(n)},onClick(n){G.push(n)},onKeydown(n){se.push(n)},onDestroy(n){pe.push(n)}},nav:{set(n){if(n.ud!==void 0)Je=n.ud;if(n.lr!==void 0)Qe=n.lr;if(n.scrollIndex)et=n.scrollIndex;if(n.navigate)tt=n.navigate;if(n.total)nt=n.total;if(n.reveal)ot=n.reveal},get:(()=>{let n={ud:0,lr:0,scrollIndex:null,navigate:null,total:null,reveal:null};return()=>(n.ud=Je,n.lr=Qe,n.scrollIndex=et,n.navigate=tt,n.total=nt,n.reveal=ot,n)})()}};for(let n of _)if(n.setup)try{n.setup(c)}catch(m){let L=m instanceof Error?m:Error(String(m));f.emit("error",{error:L,context:`plugin:setup:${n.name}`})}}let De=r.classPrefix+"--scrolling",ae=!1,Ne=e.scroll?.idleTimeout??fe;function lt(){if(g.scrollPosition=a.scrollPosition,u)g.direction=a.scrollDirection>0?"right":"left";else g.direction=a.scrollDirection>0?"down":"up";if(f.emit("scroll",g),Rt(A,a.scrollPosition),b.velocity=A.velocity,b.reliable=A.sampleCount>=_t,f.emit("velocity:change",b),a.startIndex!==V||a.prevRangeEnd!==F)V=a.startIndex,F=a.prevRangeEnd,W.range.start=a.startIndex,W.range.end=a.prevRangeEnd,f.emit("range:change",W)}function st(c,n=!0){if(J){if(n)J.refresh(c);return}a.totalSize=c;let m=c+r.mainAxisPadding;if(ve?.(m),n)p.content.style[u?"width":"height"]=m+"px"}function te(){let c=ee?a.totalSize:x.getTotalSize();if(st(c,!ee),J||ee)return;i?.onContentSize(c,f)}function at(){if(!Ce)return;if((Z?Z():S.length)===0)return;let n=Ce;Ce=null,We.scrollToIndex(n.index,n.alignOrOptions)}function ye(){if(ee)ee();else Ye(a,x,r.overscan,R,p.content,e.item.template,O,P,I,T,X,s);at()}function Be(){if(!ae)ae=!0,p.root.classList.add(De);if(ye(),qe(T.afterScroll,a.scrollPosition,a.scrollDirection),a.scrollPosition!==N)N=a.scrollPosition,lt()}function ut(){R.trim(P.size)}function Pe(){if(ae)ae=!1,p.root.classList.remove(De);a.scrollDirection=0,ut(),wt(T.idle),b.velocity=0,b.reliable=!1,f.emit("velocity:change",b),E.scrollPosition=a.scrollPosition,f.emit("scroll:idle",E)}function ne(){if(a.renderPending=!0,de)de();else Ye(a,x,r.overscan,R,p.content,e.item.template,O,P,I,T,X,s);if(at(),qe(T.afterScroll,a.scrollPosition,a.scrollDirection),a.scrollPosition!==N){if(N=a.scrollPosition,lt(),j!==null)clearTimeout(j);j=setTimeout(Pe,Ne)}else if(!ae)ut()}let ct=re?!1:e.scroll?.wheel!==!1,ue;if(re&&he)throw be([]),p.root.remove(),Error("vlist: page() is not compatible with the carousel plugin — bounded page-mode scrolling is not implemented yet.");if(!re&&(o||he))J=(o??rt)({state:a,sizeCache:x,viewport:p.viewport,content:p.content,isX:u,wheelEnabled:ct,idleTimeout:Ne,...ge?{scrollTarget:ge}:{},mainAxisPadding:r.mainAxisPadding,...he?{wrap:he,rendered:P,classPrefix:r.classPrefix,oddClass:h,onFold(c){let n=A;if(n._lp!==void 0)n._lp-=c;N-=c}}:{},onFrame:Be,onIdle:Pe}),ue=J,Q=(c)=>J.setLogical(c);else{let c=(re?ht:i.native)({state:a,viewport:p.viewport,isX:u,wheelEnabled:ct,idleTimeout:Ne,...ge?{scrollTarget:ge}:{},onFrame:Be,onIdle:Pe});ue=c,ce=c.commitScroll}Fe=ue.smoothScrollTo;function Ke(c){let m=c.target.closest("[data-index]");if(!m)return null;let L=parseInt(m.getAttribute("data-index"),10);if(Number.isNaN(L))return null;let k=z.get("_layoutToDataIndex"),Y,ie=L;if(k){let oe=k(L);if(oe<0)return null;let me=z.get("_getItemAtLayout"),Ee=z.get("_getItem");Y=me?me(L):Ee?Ee(oe):X?X(oe):S[oe],ie=oe}else Y=X?X(L):S[L];if(Y===void 0)return null;return{item:Y,index:ie}}function dt(c){for(let m=0;m<G.length;m++)G[m](c);let n=Ke(c);if(n)f.emit("item:click",{item:n.item,index:n.index,event:c})}function mt(c){let n=Ke(c);if(n)f.emit("item:dblclick",{item:n.item,index:n.index,event:c})}function ft(c){let n=Ke(c);if(n)f.emit("item:contextmenu",{item:n.item,index:n.index,event:c})}function pt(c){let n=c.target?.tagName;if((n==="INPUT"||n==="TEXTAREA"||n==="SELECT")&&!((c.ctrlKey||c.metaKey)&&(c.key==="f"||c.key==="F")))return;for(let m=0;m<se.length;m++)se[m](c)}if(p.content.addEventListener("click",dt),p.content.addEventListener("dblclick",mt),p.content.addEventListener("contextmenu",ft),se.length>0)p.root.addEventListener("keydown",pt);let $e=null;if(!je)setTimeout(()=>{if(a.destroyed)return;$e=new ResizeObserver((n)=>{for(let m of n){let{width:L,height:k}=m.contentRect,Y=u?L:k,ie=u?k:L;if(Math.abs(Y-a.containerSize)<1&&Math.abs(ie-a.crossSize)<1)continue;if(a.containerSize=Y,a.crossSize=ie,a.resizeCapacity(Y,C,r.overscan),J)J.refresh(x.getTotalSize());ne(),Mt(T.resize,L,k),f.emit("resize",{width:L,height:k})}}),$e.observe(p.viewport)},0);a.resizeCapacity(a.containerSize,C,r.overscan),te(),a.initialized=!0;let xe=null;if(e.defer)xe=requestAnimationFrame(()=>{if(xe=null,!a.destroyed)ye()});else ye();if(!re)ue.attach();let We={get element(){return p.root},get items(){return S},get total(){return Z?Z():S.length},setItems(c){S=[...c],a.totalItems=S.length,x.rebuild(a.totalItems),te(),ne()},appendItems(c){let n=()=>Math.max(0,x.getTotalSize()+r.mainAxisPadding-a.containerSize),m=r.reverse&&a.scrollPosition>=n()-1;if(S.push(...c),a.totalItems=S.length,x.rebuild(a.totalItems),te(),ne(),m)Se(n())},prependItems(c){let n=a.totalItems>0,m=x.getTotalSize();if(S.unshift(...c),a.totalItems=S.length,x.rebuild(a.totalItems),te(),ne(),!r.reverse||!n)return;let L=x.getTotalSize()-m;if(L<=0)return;let k=Math.max(0,x.getTotalSize()+r.mainAxisPadding-a.containerSize);Se(Math.min(a.scrollPosition+L,k))},updateItem(c,n){if(D){if(!D(c,n))return}else{let m=S.findIndex((L)=>L.id===c);if(m===-1)return;S[m]={...S[m],...n}}ne()},insertItem(c,n){if(K)K(c,n??a.totalItems);else{if(n===void 0)S.push(c);else S.splice(n,0,c);a.totalItems=S.length,x.rebuild(a.totalItems),te()}ne()},removeItem(c){if(w){if(w(c)<0)return}else{let n=S.findIndex((m)=>m.id===c);if(n===-1)return;S.splice(n,1),a.totalItems=S.length,x.rebuild(a.totalItems),te()}ne()},removeItems(c){if(w){let k=0;for(let Y of c)if(w(Y)>=0)k++;if(k>0)ne();return k}let n=new Set(c),m=S.length;S=S.filter((k)=>!n.has(k.id));let L=m-S.length;if(L>0)a.totalItems=S.length,x.rebuild(a.totalItems),te(),a.renderPending=!0,ye();return L},getItemAt(c){if(I.indexMap){let m=z.get("_getLoadedItem");return m?m(c):S[c]}let n=z.get("_getItemAtLayout");if(n){let m=z.get("_dataToLayoutIndex");return n(m?m(c):c)}return X?X(c):S[c]},getIndexById(c){if(q)return q(c);return S.findIndex((n)=>n.id===c)},scrollToIndex(c,n="start"){let m=Z?Z():S.length;if(m===0){Ce={index:c,alignOrOptions:n};return}let L=typeof n==="string"?n:n.align??"start",k=typeof n==="object"?n.behavior:void 0,Y=typeof n==="object"?n.duration:void 0,ie=typeof n==="object"?n.easing:void 0;if(Ve&&Ve(c,L,k,Y,ie)!==!1)return;let oe=Math.max(0,Math.min(c,m-1)),me=x.getOffset(oe),Ee=x.getSize(oe),Ae=a.containerSize,$t=x.getTotalSize(),bt=r.mainAxisPadding,Wt=Math.max(0,$t+bt-Ae),le;if(ke)le=ke(oe,x,Ae,m,L);else{let Ut=r.startPadding;switch(L){case"center":le=Ut+me-(Ae-Ee)/2;break;case"end":le=me+Ee+bt-Ae;break;default:le=me}le=Math.max(0,Math.min(le,Wt))}if(k==="smooth")ue.smoothScrollTo(le,Y??gt,Q??void 0,ie);else Se(le)},getScrollPosition(){return it.getPixelEquivalent()},on:f.on.bind(f),off:f.off.bind(f),destroy(){if(a.destroyed)return;if(a.destroyed=!0,ae)ae=!1,p.root.classList.remove(De);if(xe!==null)cancelAnimationFrame(xe),xe=null;if(j!==null)clearTimeout(j),j=null;ue.detach(),$e?.disconnect(),p.content.removeEventListener("click",dt),p.content.removeEventListener("dblclick",mt),p.content.removeEventListener("contextmenu",ft),p.root.removeEventListener("keydown",pt);let c=[];be(c);for(let[,n]of P)n.remove();if(P.clear(),R.clear(),p.root.remove(),f.emit("destroy",void 0),f.clear(),c.length>0)for(let n of c)console.error("vlist: error during destroy:",n)}};for(let[c,n]of z){if(c.startsWith("_"))continue;We[c]=n}return We}var Re=new Int32Array(0),Le=[];function cn(e,t,o,i,r){if(t===0||e.size===0)return;let u=e.size;if(Re.length<u)Re=new Int32Array(u);if(Le.length<u)Le.length=u;let l=0;for(let[h,f]of e)Re[l]=h,Le[l]=f,l++;e.clear();let d=o+"-item-",y=i.getAttribute("aria-activedescendant"),C=null,v=r&&t&1;for(let h=0;h<u;h++){let f=Re[h],I=Le[h];Le[h]=void 0;let _=f-t;if(e.set(_,I),y!==null&&I.id===y)C=I;if(I.id===d+f)I.id=d+_;if(v)I.classList.toggle(r)}if(C!==null)i.setAttribute("aria-activedescendant",C.id)}function dn(e,t,o){if(t===0&&o===0)return;e.prevRangeStart-=t,e.prevRangeEnd-=t,e.startIndex-=t,e.prevBaseOffset-=o;let i=e.visibleCount;for(let r=0;r<i;r++)e.visibleIndices[r]-=t,e.visibleOffsets[r]-=o}function Ft(e,t){let o=t>1?Math.trunc(e):Math.floor(e);return Math.abs(o)<t?0:o}function kt(e,t,o,i,r,u,l){let d=e.lapSize(),y=e.itemsPerLap(),C=d>0?Math.round(t/d)*y:0;if(C===0)return;if(r)cn(r,C,u,i,l);dn(o,C,t)}var Dt=1,Nt=2;var Vt=(e)=>1-(1-e)**3;function Bt({getMax:e,onChange:t=()=>{},onFinish:o,axis:i="y",reducedMotion:r}){let u=0,l=0,d=null,y=0,C=0,v=0,h=0,f=0,I=null,_=0,M=0,p=0,B=0,x=400,R=Vt,H=()=>p,a=0.006,S=(g)=>{let E=e();return Number.isFinite(E)?Math.max(0,Math.min(E,g)):g},O=(g,E)=>i==="y"?E:g,P=(g,E)=>i==="y"?g:E;function A(g){let E=S(g);if(E!==u)u=E,t(u);return E!==g}function b(){f=0,l=d===null?0:5}function W(g){b(),A(g)}return{get position(){return u},get state(){return l},get velocity(){return f},get active(){return l===3||l===4},begin(g,E,V,F){if(d!==null){b();return}b(),d=g,y=v=O(E,V),C=P(E,V),h=F,l=1},move(g,E,V,F){if(g!==d||l!==1&&l!==2)return!1;let N=O(E,V);if(l===1){let z=Math.abs(N-y),G=Math.abs(P(E,V)-C);if(Math.max(z,G)<6)return!1;if(G>z*1.2)return b(),!1;if(z<G*1.2)return!1;l=2}let j=v-N,T=F-h;if(T>0){let z=Math.max(-3,Math.min(3,j/T));f=T>80?0:z*f<0?z:0.65*z+0.35*f}if(v=N,h=F,A(u+j))f=0;return!0},end(g,E){if(g!==d)return;if(d=null,l===2&&!r()&&E-h<=80&&Math.abs(f)>=0.02)I=null,l=3;else f=0,l=0},cancel:b,reset(){d=null,b()},jump:W,shiftBy(g){M+=g,B+=g,A(u+g)},by(g){b();let E=u;return A(u+g),u!==E},smooth(g,E=400,V=Vt){if(b(),B=0,H=typeof g==="function"?g:()=>g,d!==null||r()||E<=0){A(H());return}x=E,R=V,M=u,p=S(H()+B),I=null,l=4},resize(){b(),A(u)},tick(g){if(l!==3&&l!==4)return;if(I===null){if(I=g,l===4)_=g;return}let E=g-I;if(E<=0)return;if(I=g,E>100){if(l===4)A(S(H()+B)),l=0,o?.();else b();return}if(l===4){p=S(H()+B);let N=Math.min(1,(g-_)/x);if(A(M+(p-M)*R(N)),N===1)l=0,o?.();return}let V=Math.exp(-a*E),F=A(u+f*(1-V)/a);if(f*=V,F||Math.abs(f)<0.02)f=0,l=0}}}var Oe=(e)=>e.pointerType==="touch"||e.pointerType==="pen";function Ze(e){if(e.closest("textarea,select,[contenteditable]:not([contenteditable=false])"))return!0;let t=e.closest("input");return!!t&&!/^(button|submit|reset|checkbox|radio|image)$/.test(t.type)}function Kt(e){let{state:t,viewport:o,content:i,isX:r,onFrame:u,onIdle:l,mainAxisPadding:d,wrap:y}=e,C=o.parentElement??o,v=o.ownerDocument.defaultView,h=o.ownerDocument,f=v.matchMedia("(prefers-reduced-motion: reduce)"),I=0,_=null,M=null,p=!1,B=!1,x=!1,R=-1,H=-1,a=null,S=null,O=!1,P=!1,A=!1,b=!1,W,g=new Set;function E(s){let w=t.scrollPosition;if(y){let K=y.lapSize(),D=K>0?Ft((s-y.home())/K,y.thresholdLaps):0;if(D!==0){let q=D*K;x=!0,T.shiftBy(-q),x=!1,s=T.position,w-=q,kt(y,q,t,i,e.rendered,e.classPrefix??"",e.oddClass),e.onFold?.(q),y.onFold?.(q)}}if(t.prevScrollPosition=w,t.scrollPosition=t.baseOffset=s,t.scrollDirection=s>w?1:s<w?-1:0,!B)u()}function V(){if(M=null,T.active||T.state===Nt||T.state===Dt)return;t.scrollDirection=0,l()}function F(){if(!p)return;if(M!==null)clearTimeout(M);M=setTimeout(V,e.idleTimeout||fe)}function N(){if(p&&_===null&&T.active)_=requestAnimationFrame(j)}function j(s){if(_=null,T.tick(s),T.active)N();else F()}let T=Bt({axis:r?"x":"y",getMax:()=>y?1/0:I,reducedMotion:()=>f.matches,onChange(s){if(!x)E(s)},onFinish(){let s=W;W=void 0,s?.()}});function z(){if(W=void 0,_!==null)cancelAnimationFrame(_),_=null;if(T.cancel(),M!==null)clearTimeout(M),M=null}function G(){if(z(),T.reset(),b&&a!==null&&o.hasPointerCapture(a))o.releasePointerCapture(a);b=!1,g.clear(),a=S=null,O=P=A=!1,F()}function se(s){if(!Oe(s))return;if(s.isPrimary){if(g.size)G();g.clear()}if(g.add(s.pointerId),g.size>1){A=!0,z();return}if(!(s.target instanceof Element)||Ze(s.target)){z();return}a=s.pointerId,O=!1,P=T.active,S=null,z(),T.begin(s.pointerId,s.clientX,s.clientY,s.timeStamp)}function pe(s){if(!Oe(s)||s.target instanceof Node&&o.contains(s.target))return;if(s.isPrimary&&g.size)G();else if(g.size)g.add(s.pointerId),A=!0,z()}function be(s){if(!Oe(s)||A)return;if(T.move(s.pointerId,s.clientX,s.clientY,s.timeStamp)){if(O=!0,!b)o.setPointerCapture(s.pointerId),b=!0;if(s.cancelable)s.preventDefault()}}function Z(s){if(!Oe(s)||!g.has(s.pointerId))return;let w=s.type==="pointercancel";if(w)z();if(a===s.pointerId){if(!w&&!A&&(O||P))S=s.pointerId;if(b&&o.hasPointerCapture(s.pointerId))o.releasePointerCapture(s.pointerId);b=!1,a=null,O=P=!1}if(T.end(s.pointerId,s.timeStamp),g.delete(s.pointerId),!g.size){if(A||w)T.reset();A=!1}N(),F()}function Q(s){let w=s.pointerId;if(s.detail!==0&&S!==null&&(w===S||w===void 0))S=null,s.preventDefault(),s.stopImmediatePropagation()}function ve(s){if(s.ctrlKey||s.defaultPrevented||!(s.target instanceof Element)||Ze(s.target))return;let w=s.deltaMode===1?16:s.deltaMode===2?t.containerSize:1,K=r?s.deltaX:s.deltaY,D=r?s.deltaY:s.deltaX,q=r?o.scrollHeight>o.clientHeight:o.scrollWidth>o.clientWidth;if(q&&Math.abs(D)>Math.abs(K))return;if(q&&D!==0)if(s.preventDefault(),r)o.scrollTop+=D*w;else o.scrollLeft+=D*w;let re=r&&!q&&K===0?D:K;if(z(),T.by(re*w))s.preventDefault();F()}function ce(s){if(s.defaultPrevented||s.ctrlKey||s.metaKey||s.altKey||!(s.target instanceof Element)||Ze(s.target))return;if((s.key===" "||s.key==="Enter")&&s.target.closest("button,summary,a,input"))return;let w=e.sizeCache,K=w.getSize(w.indexAtOffset(T.position)),D;if(s.key===(r?"ArrowRight":"ArrowDown"))D=T.position+K;if(s.key===(r?"ArrowLeft":"ArrowUp"))D=T.position-K;if(s.key==="PageDown"||s.key===" ")D=T.position+t.containerSize*(s.shiftKey&&s.key===" "?-1:1);if(s.key==="PageUp")D=T.position-t.containerSize;if(s.key==="Home")D=0;if(s.key==="End")D=I;if(D!==void 0)s.preventDefault(),de(D)}function ee(){if(h.hidden)G()}function de(s){let w=T.position;if(z(),T.jump(s),w===(y?s:Math.max(0,Math.min(I,s))))E(T.position);F()}function X(s){let w=R!==t.containerSize||H!==t.crossSize,K=s!==t.totalSize||w;if(R=t.containerSize,H=t.crossSize,t.totalSize=s,I=Math.max(0,s+d-t.containerSize),K){if(B=!0,w)z(),T.resize();else T.shiftBy(0);E(T.position),B=!1}}return{setLogical:de,refresh:X,shiftBy(s){if(t.totalSize=e.sizeCache.getTotalSize(),I=Math.max(0,t.totalSize+d-t.containerSize),T.shiftBy(s),!T.active)F()},cancelScroll(){z(),F()},getLogical:()=>t.scrollPosition,getMaxLogical:()=>I,smoothScrollTo(s,w,K,D=Me,q){if(z(),T.smooth(s,w,D),W=q,!T.active)W=void 0,q?.(),F();else N()},attach(){if(p)return;if(p=!0,o.style.overflowX=r?"hidden":"auto",o.style.overflowY=r?"auto":"hidden",o.style.touchAction=r?"pan-y pinch-zoom":"pan-x pinch-zoom",o.style.overflowAnchor="none",i.style[r?"width":"height"]="100%",i.style.overflow="clip",i.style.overflowAnchor="none",o.addEventListener("pointerdown",se),v.addEventListener("pointerdown",pe),o.addEventListener("pointermove",be,{passive:!1}),v.addEventListener("pointerup",Z),v.addEventListener("pointercancel",Z),o.addEventListener("click",Q,!0),e.wheelEnabled)o.addEventListener("wheel",ve,{passive:!1});C.addEventListener("keydown",ce),v.addEventListener("blur",G),h.addEventListener("visibilitychange",ee),f.addEventListener("change",G),N()},detach(){if(p=!1,G(),M!==null)clearTimeout(M),M=null;o.removeEventListener("pointerdown",se),v.removeEventListener("pointerdown",pe),o.removeEventListener("pointermove",be),v.removeEventListener("pointerup",Z),v.removeEventListener("pointercancel",Z),o.removeEventListener("click",Q,!0),o.removeEventListener("wheel",ve),C.removeEventListener("keydown",ce),v.removeEventListener("blur",G),h.removeEventListener("visibilitychange",ee),f.removeEventListener("change",G),o.style.overflowX=o.style.overflowY=o.style.touchAction=o.style.overflowAnchor="",i.style.overflow=i.style.overflowAnchor=""}}}function ro(e,t=[]){return Ot(e,t,Kt)}export{ro as createVList};
|
package/dist/types.d.ts
CHANGED
|
@@ -38,7 +38,7 @@ export interface GroupHeaderConfig {
|
|
|
38
38
|
*/
|
|
39
39
|
template: (group: string, groupIndex: number) => string | HTMLElement;
|
|
40
40
|
}
|
|
41
|
-
export interface GroupsConfig {
|
|
41
|
+
export interface GroupsConfig<T extends VListItem = VListItem> {
|
|
42
42
|
/**
|
|
43
43
|
* Determine which group an item belongs to.
|
|
44
44
|
* Called with the DATA index (index into the original items array).
|
|
@@ -54,7 +54,7 @@ export interface GroupsConfig {
|
|
|
54
54
|
* @param index - Data index of the item
|
|
55
55
|
* @param item - The item at this index (always provided; undefined only for unloaded async items)
|
|
56
56
|
*/
|
|
57
|
-
getGroupForIndex: (index: number, item?:
|
|
57
|
+
getGroupForIndex: (index: number, item?: T) => string;
|
|
58
58
|
/**
|
|
59
59
|
* Group header configuration — mirrors the `item` config shape.
|
|
60
60
|
*/
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* vlist/utils — Scroll behavior
|
|
3
|
+
*
|
|
4
|
+
* Core animates `{ behavior: "smooth" }` with `SCROLL_DURATION` when the
|
|
5
|
+
* caller omits `duration`, and it forwards `easing`. Layout plugins that
|
|
6
|
+
* replace `scrollToIndex` have to do the same, or a smooth call with no
|
|
7
|
+
* duration jumps.
|
|
8
|
+
*/
|
|
9
|
+
type ScrollTarget = {
|
|
10
|
+
to(position: number): void;
|
|
11
|
+
smoothTo(target: number, duration: number, easing?: (t: number) => number): void;
|
|
12
|
+
};
|
|
13
|
+
export declare function applyScrollBehavior(scroll: ScrollTarget, position: number, behavior?: string, duration?: number, easing?: (t: number) => number): void;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=apply-scroll-behavior.d.ts.map
|
package/dist/vlist-tree.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.vlist--tree{--vlist-item-padding-x:0;--vlist-item-padding-y:0;--vlist-transition-duration:0ms}.vlist--tree .vlist-item{border-bottom:none}.vlist-tree-node--loading .vlist-tree-chevron,.vlist-tree-node--loading [class*="chevron"]{animation:vlist-tree-spin 0.8s linear infinite}@keyframes vlist-tree-spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}.vlist--tree-lines .vlist-tree-node::before{content:"";position:absolute;top:0;bottom:0;left:var(--vlist-tree-guide-start,calc(var(--vlist-tree-indent) / 2));width:calc(var(--vlist-tree-depth) * var(--vlist-tree-indent));background-image:
|
|
1
|
+
.vlist--tree{--vlist-item-padding-x:0;--vlist-item-padding-y:0;--vlist-transition-duration:0ms}.vlist--tree .vlist-item{border-bottom:none}.vlist-tree-node--loading .vlist-tree-chevron,.vlist-tree-node--loading [class*="chevron"]{animation:vlist-tree-spin 0.8s linear infinite}@keyframes vlist-tree-spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}.vlist--tree-lines .vlist-tree-node::before{content:"";position:absolute;top:0;bottom:0;left:var(--vlist-tree-guide-start,calc(var(--vlist-tree-indent) / 2));width:calc(var(--vlist-tree-depth) * var(--vlist-tree-indent));background-image:var(--vlist-tree-guides,none),var(--vlist-tree-elbow,none);background-repeat:no-repeat;background-size:100% 100%,1px 50%;background-position:left top,calc((var(--vlist-tree-depth) - 1) * var(--vlist-tree-indent)) top;opacity:0.12;pointer-events:none}.vlist--tree-lines .vlist-tree-node::after{content:"";position:absolute;top:50%;left:calc(var(--vlist-tree-guide-start,calc(var(--vlist-tree-indent) / 2)) + (var(--vlist-tree-depth) - 1) * var(--vlist-tree-indent));width:calc(var(--vlist-tree-indent) / 2 - 2px);height:1px;background:var(--vlist-tree-line,currentColor);opacity:0.12;pointer-events:none}.vlist--tree-lines .vlist-tree-node[style*="--vlist-tree-depth:0"]::after,.vlist--tree-lines .vlist-tree-node[style*="--vlist-tree-depth:0"]::after{display:none}
|
package/dist/vlist.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
@keyframes vlist-fade-in{from{opacity:0.6}to{opacity:1}}@keyframes vlist-placeholder-pulse{0%,100%{opacity:0.6}50%{opacity:0.4}}:root{--vlist-scrollbar-width:8px;--vlist-scrollbar-track-color:transparent;--vlist-scrollbar-radius:4px;--vlist-custom-scrollbar-track-color:transparent;--vlist-custom-scrollbar-padding-top:2px;--vlist-custom-scrollbar-padding-right:2px;--vlist-custom-scrollbar-padding-bottom:2px;--vlist-custom-scrollbar-padding-left:2px;--vlist-custom-scrollbar-min-thumb-size:15px;--vlist-item-padding-x:1rem;--vlist-item-padding-y:0.75rem;--vlist-border-radius:0.5rem;--vlist-transition-duration:150ms;--vlist-transition-timing:ease-in-out;--vlist-bg:#ffffff;--vlist-bg-hover:rgba(0,0,0,0.04);--vlist-bg-striped:rgba(0,0,0,0.02);--vlist-bg-selected:rgba(59,130,246,0.12);--vlist-bg-selected-hover:rgba(59,130,246,0.18);--vlist-border:#e5e7eb;--vlist-border-selected:#3b82f6;--vlist-text:#111827;--vlist-text-muted:#6b7280;--vlist-focus-ring:#3b82f6;--vlist-group-header-bg:#f3f4f6;--vlist-scrollbar-thumb-color:#d1d5db;--vlist-scrollbar-thumb-hover-color:#9ca3af;--vlist-custom-scrollbar-thumb-color:rgba(0,0,0,0.2);--vlist-custom-scrollbar-thumb-hover-color:rgba(0,0,0,0.3);--vlist-placeholder-bg:rgba(0,0,0,0.2);--vlist-placeholder-bg-strong:rgba(0,0,0,0.24)}[data-theme-mode="dark"]{--vlist-bg:#111827;--vlist-bg-hover:rgba(255,255,255,0.06);--vlist-bg-striped:rgba(255,255,255,0.02);--vlist-bg-selected:rgba(59,130,246,0.2);--vlist-bg-selected-hover:rgba(59,130,246,0.28);--vlist-border:#374151;--vlist-border-selected:#3b82f6;--vlist-text:#f9fafb;--vlist-text-muted:#9ca3af;--vlist-focus-ring:#3b82f6;--vlist-group-header-bg:#1e2433;--vlist-scrollbar-thumb-color:#4b5563;--vlist-scrollbar-thumb-hover-color:#6b7280;--vlist-custom-scrollbar-thumb-color:rgba(255,255,255,0.2);--vlist-custom-scrollbar-thumb-hover-color:rgba(255,255,255,0.3);--vlist-placeholder-bg:rgba(255,255,255,0.3);--vlist-placeholder-bg-strong:rgba(255,255,255,0.35)}@media (prefers-color-scheme:dark){:root:not([data-theme-mode="light"]):not([data-theme-mode="dark"]){--vlist-bg:#111827;--vlist-bg-hover:rgba(255,255,255,0.06);--vlist-bg-striped:rgba(255,255,255,0.02);--vlist-bg-selected:rgba(59,130,246,0.2);--vlist-bg-selected-hover:rgba(59,130,246,0.28);--vlist-border:#374151;--vlist-border-selected:#3b82f6;--vlist-text:#f9fafb;--vlist-text-muted:#9ca3af;--vlist-focus-ring:#3b82f6;--vlist-group-header-bg:#1e2433;--vlist-scrollbar-thumb-color:#4b5563;--vlist-scrollbar-thumb-hover-color:#6b7280;--vlist-custom-scrollbar-thumb-color:rgba(255,255,255,0.2);--vlist-custom-scrollbar-thumb-hover-color:rgba(255,255,255,0.3);--vlist-placeholder-bg:rgba(255,255,255,0.3);--vlist-placeholder-bg-strong:rgba(255,255,255,0.35)}}.dark{--vlist-bg:#111827;--vlist-bg-hover:rgba(255,255,255,0.06);--vlist-bg-striped:rgba(255,255,255,0.02);--vlist-bg-selected:rgba(59,130,246,0.2);--vlist-bg-selected-hover:rgba(59,130,246,0.28);--vlist-border:#374151;--vlist-border-selected:#3b82f6;--vlist-text:#f9fafb;--vlist-text-muted:#9ca3af;--vlist-focus-ring:#3b82f6;--vlist-group-header-bg:#1e2433;--vlist-scrollbar-thumb-color:#4b5563;--vlist-scrollbar-thumb-hover-color:#6b7280;--vlist-custom-scrollbar-thumb-color:rgba(255,255,255,0.2);--vlist-custom-scrollbar-thumb-hover-color:rgba(255,255,255,0.3);--vlist-placeholder-bg:rgba(255,255,255,0.3);--vlist-placeholder-bg-strong:rgba(255,255,255,0.35)}.vlist{position:relative;width:100%;height:100%;box-sizing:border-box;overflow:hidden;background-color:var(--vlist-bg);color:var(--vlist-text);color-scheme:light;border:1px solid var(--vlist-border);border-radius:var(--vlist-border-radius);outline:none}[data-theme-mode="dark"] .vlist,.dark .vlist{color-scheme:dark}@media (prefers-color-scheme:dark){:root:not([data-theme-mode="light"]) .vlist{color-scheme:dark}}.vlist:focus,.vlist:focus-visible,.vlist-content:focus,.vlist-content:focus-visible{outline:none}.vlist-viewport{width:100%;height:100%;overflow:auto;scrollbar-color:var(--vlist-scrollbar-thumb-color) var(--vlist-scrollbar-track-color)}@supports (-moz-appearance:none) and (scrollbar-width:1px){.vlist-viewport{scrollbar-width:var(--vlist-scrollbar-width)}}.vlist-viewport::-webkit-scrollbar{width:var(--vlist-scrollbar-width);height:var(--vlist-scrollbar-width)}.vlist-viewport::-webkit-scrollbar-track{background:var(--vlist-scrollbar-track-color)}.vlist-viewport::-webkit-scrollbar-thumb{background-color:var(--vlist-scrollbar-thumb-color);border-radius:var(--vlist-scrollbar-radius)}.vlist-viewport::-webkit-scrollbar-thumb:hover{background-color:var(--vlist-scrollbar-thumb-hover-color)}.vlist-content{position:relative;width:100%;contain:layout style}.vlist-item,.vlist-group-header{position:absolute;top:0;left:0;right:0;display:flex;align-items:center;background-color:var(--vlist-bg);cursor:default;user-select:none;opacity:1;transition:background-color var(--vlist-transition-duration) var(--vlist-transition-timing),opacity var(--vlist-transition-duration) var(--vlist-transition-timing);contain:content;box-sizing:border-box;will-change:transform}.vlist--scrolling .vlist-item,.vlist--settling .vlist-item,.vlist--scrolling .vlist-group-header,.vlist--settling .vlist-group-header{transition:none}.vlist--selectable .vlist-item{cursor:pointer}.vlist--selectable .vlist-item:hover{background-color:var(--vlist-bg-hover)}.vlist-item.vlist-item--odd{background:var(--vlist-bg-striped)}.vlist-item.vlist-item--selected{background-color:var(--vlist-bg-selected)}.vlist-item.vlist-item--odd.vlist-item--selected{background:var(--vlist-bg-selected)}.vlist-item.vlist-item--selected:hover{background-color:var(--vlist-bg-selected-hover)}.vlist-item.vlist-item--odd.vlist-item--selected:hover{background:var(--vlist-bg-selected-hover)}.vlist-item.vlist-item--focused{outline:2px solid var(--vlist-focus-ring,#3b82f6);outline-offset:-2px;z-index:1}.vlist-item--replaced{animation:vlist-fade-in 0.3s ease-out}.vlist-item--placeholder{opacity:0.6;animation:vlist-placeholder-pulse 2s ease-in-out infinite}.vlist-item--placeholder *:not(:has(*)){color:transparent;background-color:var(--vlist-placeholder-bg);border-radius:4px;width:fit-content;line-height:1.2;transform:scaleY(0.8)}.vlist-item--placeholder:is(strong,b,h1,h2,h3,h4):not(:has(*)){background-color:var(--vlist-placeholder-bg-strong)}.vlist-item.vlist-item--selected.vlist-item--focused{outline-color:var(--vlist-border-selected)}.vlist-scrollbar:focus-visible{outline:2px solid currentColor;outline-offset:-2px;opacity:1;pointer-events:auto}.vlist-scrollbar{position:absolute;top:var(--vlist-custom-scrollbar-padding-top);right:var(--vlist-custom-scrollbar-padding-right);bottom:var(--vlist-custom-scrollbar-padding-bottom);width:var(--vlist-custom-scrollbar-width);background-color:var(--vlist-custom-scrollbar-track-color);opacity:0;transition:opacity 0.2s ease-out;touch-action:none;z-index:10;pointer-events:none}.vlist-scrollbar__hover{position:absolute;top:0;right:0;height:100%;z-index:9;touch-action:none;pointer-events:auto}.vlist-scrollbar__hover--horizontal{top:auto;right:auto;bottom:0;left:0;width:100%;height:auto}.vlist-scrollbar--visible{opacity:1;pointer-events:auto}.vlist-scrollbar__thumb{position:absolute;top:0;left:0;right:0;width:100%;background-color:var(--vlist-custom-scrollbar-thumb-color);border-radius:var(--vlist-custom-scrollbar-radius);cursor:pointer;transition:background-color 0.15s ease-out}.vlist-scrollbar__thumb:hover{background-color:var(--vlist-custom-scrollbar-thumb-hover-color)}.vlist-scrollbar--dragging{opacity:1;pointer-events:auto}.vlist-scrollbar--dragging .vlist-scrollbar__thumb{background-color:var(--vlist-custom-scrollbar-thumb-hover-color)}@media (forced-colors:active){.vlist-scrollbar{forced-color-adjust:none;background-color:Canvas}.vlist-scrollbar__thumb{background-color:CanvasText}.vlist-scrollbar__thumb:hover,.vlist-scrollbar--dragging .vlist-scrollbar__thumb{background-color:Highlight}.vlist-scrollbar:focus-visible{outline-color:Highlight}}.vlist-group-header{cursor:default;background-color:var(--vlist-group-header-bg,#f3f4f6);z-index:1;overflow:hidden}.vlist-group-header:hover{background-color:var(--vlist-group-header-bg,#f3f4f6)}.vlist-sticky-header{left:0;right:0;background-color:var(--vlist-group-header-bg,#f3f4f6)}.vlist--horizontal{overflow:hidden}.vlist--horizontal .vlist-viewport{overflow-x:auto;overflow-y:hidden}.vlist--horizontal .vlist-content{height:100%;width:auto}.vlist--horizontal .vlist-item,.vlist--horizontal .vlist-group-header{position:absolute;top:0;bottom:0;left:0;right:auto;display:flex;align-items:center;justify-content:center;border-bottom:none}.vlist-scrollbar--horizontal{top:auto;left:var(--vlist-custom-scrollbar-padding-left);right:var(--vlist-custom-scrollbar-padding-right);bottom:var(--vlist-custom-scrollbar-padding-bottom);width:auto;height:var(--vlist-custom-scrollbar-width)}.vlist-scrollbar--horizontal .vlist-scrollbar__thumb{top:0;left:0;width:auto;height:100%}.vlist-viewport--gutter{padding-right:calc( var(--vlist-custom-scrollbar-padding-right) + var(--vlist-custom-scrollbar-width) + var(--vlist-custom-scrollbar-padding-left) )}.vlist--horizontal .vlist-viewport--gutter{padding-right:0;padding-bottom:calc( var(--vlist-custom-scrollbar-padding-bottom) + var(--vlist-custom-scrollbar-width) + var(--vlist-custom-scrollbar-padding-top) )}.vlist-viewport--custom-scrollbar{scrollbar-width:none;-ms-overflow-style:none}.vlist-viewport--custom-scrollbar::-webkit-scrollbar{display:none}.vlist-viewport--no-scrollbar{scrollbar-width:none;-ms-overflow-style:none}.vlist-viewport--no-scrollbar::-webkit-scrollbar{display:none}.vlist-viewport--gutter-stable{scrollbar-gutter:stable}.vlist-sort-ghost{opacity:0.85;box-shadow:0 4px 16px rgba(0,0,0,0.18);cursor:grabbing}.vlist-item--touch-sort{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.vlist-sort-ghost--touch{outline:2px solid var(--vlist-focus-ring,#3b82f6);outline-offset:2px}.vlist-item--drag-source{opacity:0 !important;pointer-events:none}.vlist--sorting{cursor:grabbing;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.vlist--sorting *{cursor:inherit !important}.vlist-item--kb-sorting{outline:2px solid var(--vlist-focus-ring,#3b82f6);outline-offset:-2px;background-color:var(--vlist-bg-selected);z-index:1}
|
|
1
|
+
@keyframes vlist-fade-in{from{opacity:0.6}to{opacity:1}}@keyframes vlist-placeholder-pulse{0%,100%{opacity:0.6}50%{opacity:0.4}}:root{--vlist-scrollbar-width:8px;--vlist-scrollbar-track-color:transparent;--vlist-scrollbar-radius:4px;--vlist-custom-scrollbar-track-color:transparent;--vlist-custom-scrollbar-padding-top:2px;--vlist-custom-scrollbar-padding-right:2px;--vlist-custom-scrollbar-padding-bottom:2px;--vlist-custom-scrollbar-padding-left:2px;--vlist-custom-scrollbar-min-thumb-size:15px;--vlist-item-padding-x:1rem;--vlist-item-padding-y:0.75rem;--vlist-border-radius:0.5rem;--vlist-transition-duration:150ms;--vlist-transition-timing:ease-in-out;--vlist-bg:#ffffff;--vlist-bg-hover:rgba(0,0,0,0.04);--vlist-bg-striped:rgba(0,0,0,0.02);--vlist-bg-selected:rgba(59,130,246,0.12);--vlist-bg-selected-hover:rgba(59,130,246,0.18);--vlist-border:#e5e7eb;--vlist-border-selected:#3b82f6;--vlist-text:#111827;--vlist-text-muted:#6b7280;--vlist-focus-ring:#3b82f6;--vlist-group-header-bg:#f3f4f6;--vlist-scrollbar-thumb-color:#d1d5db;--vlist-scrollbar-thumb-hover-color:#9ca3af;--vlist-custom-scrollbar-thumb-color:rgba(0,0,0,0.2);--vlist-custom-scrollbar-thumb-hover-color:rgba(0,0,0,0.3);--vlist-placeholder-bg:rgba(0,0,0,0.2);--vlist-placeholder-bg-strong:rgba(0,0,0,0.24)}[data-theme-mode="dark"]{--vlist-bg:#111827;--vlist-bg-hover:rgba(255,255,255,0.06);--vlist-bg-striped:rgba(255,255,255,0.02);--vlist-bg-selected:rgba(59,130,246,0.2);--vlist-bg-selected-hover:rgba(59,130,246,0.28);--vlist-border:#374151;--vlist-border-selected:#3b82f6;--vlist-text:#f9fafb;--vlist-text-muted:#9ca3af;--vlist-focus-ring:#3b82f6;--vlist-group-header-bg:#1e2433;--vlist-scrollbar-thumb-color:#4b5563;--vlist-scrollbar-thumb-hover-color:#6b7280;--vlist-custom-scrollbar-thumb-color:rgba(255,255,255,0.2);--vlist-custom-scrollbar-thumb-hover-color:rgba(255,255,255,0.3);--vlist-placeholder-bg:rgba(255,255,255,0.3);--vlist-placeholder-bg-strong:rgba(255,255,255,0.35)}@media (prefers-color-scheme:dark){:root:not([data-theme-mode="light"]):not([data-theme-mode="dark"]){--vlist-bg:#111827;--vlist-bg-hover:rgba(255,255,255,0.06);--vlist-bg-striped:rgba(255,255,255,0.02);--vlist-bg-selected:rgba(59,130,246,0.2);--vlist-bg-selected-hover:rgba(59,130,246,0.28);--vlist-border:#374151;--vlist-border-selected:#3b82f6;--vlist-text:#f9fafb;--vlist-text-muted:#9ca3af;--vlist-focus-ring:#3b82f6;--vlist-group-header-bg:#1e2433;--vlist-scrollbar-thumb-color:#4b5563;--vlist-scrollbar-thumb-hover-color:#6b7280;--vlist-custom-scrollbar-thumb-color:rgba(255,255,255,0.2);--vlist-custom-scrollbar-thumb-hover-color:rgba(255,255,255,0.3);--vlist-placeholder-bg:rgba(255,255,255,0.3);--vlist-placeholder-bg-strong:rgba(255,255,255,0.35)}}.dark{--vlist-bg:#111827;--vlist-bg-hover:rgba(255,255,255,0.06);--vlist-bg-striped:rgba(255,255,255,0.02);--vlist-bg-selected:rgba(59,130,246,0.2);--vlist-bg-selected-hover:rgba(59,130,246,0.28);--vlist-border:#374151;--vlist-border-selected:#3b82f6;--vlist-text:#f9fafb;--vlist-text-muted:#9ca3af;--vlist-focus-ring:#3b82f6;--vlist-group-header-bg:#1e2433;--vlist-scrollbar-thumb-color:#4b5563;--vlist-scrollbar-thumb-hover-color:#6b7280;--vlist-custom-scrollbar-thumb-color:rgba(255,255,255,0.2);--vlist-custom-scrollbar-thumb-hover-color:rgba(255,255,255,0.3);--vlist-placeholder-bg:rgba(255,255,255,0.3);--vlist-placeholder-bg-strong:rgba(255,255,255,0.35)}.vlist{position:relative;width:100%;height:100%;box-sizing:border-box;overflow:hidden;background-color:var(--vlist-bg);color:var(--vlist-text);color-scheme:light;border:1px solid var(--vlist-border);border-radius:var(--vlist-border-radius);outline:none}[data-theme-mode="dark"] .vlist,.dark .vlist{color-scheme:dark}@media (prefers-color-scheme:dark){:root:not([data-theme-mode="light"]) .vlist{color-scheme:dark}}.vlist:focus,.vlist:focus-visible,.vlist-content:focus,.vlist-content:focus-visible{outline:none}.vlist-viewport{width:100%;height:100%;overflow:auto;scrollbar-color:var(--vlist-scrollbar-thumb-color) var(--vlist-scrollbar-track-color)}@supports (-moz-appearance:none) and (scrollbar-width:1px){.vlist-viewport{scrollbar-width:var(--vlist-scrollbar-width)}}.vlist-viewport::-webkit-scrollbar{width:var(--vlist-scrollbar-width);height:var(--vlist-scrollbar-width)}.vlist-viewport::-webkit-scrollbar-track{background:var(--vlist-scrollbar-track-color)}.vlist-viewport::-webkit-scrollbar-thumb{background-color:var(--vlist-scrollbar-thumb-color);border-radius:var(--vlist-scrollbar-radius)}.vlist-viewport::-webkit-scrollbar-thumb:hover{background-color:var(--vlist-scrollbar-thumb-hover-color)}.vlist-content{position:relative;width:100%;contain:layout style}.vlist-item,.vlist-group-header{position:absolute;top:0;left:0;right:0;display:flex;align-items:center;background-color:var(--vlist-bg);cursor:default;user-select:none;opacity:1;transition:background-color var(--vlist-transition-duration) var(--vlist-transition-timing),opacity var(--vlist-transition-duration) var(--vlist-transition-timing);contain:content;box-sizing:border-box;will-change:transform}.vlist--scrolling .vlist-item,.vlist--settling .vlist-item,.vlist--scrolling .vlist-group-header,.vlist--settling .vlist-group-header{transition:none}.vlist--selectable .vlist-item{cursor:pointer}.vlist--selectable .vlist-item:hover{background-color:var(--vlist-bg-hover)}.vlist-item>:only-child,.vlist-group-header>:only-child{flex:1 1 auto;min-width:0}.vlist-item.vlist-item--odd{background:var(--vlist-bg-striped)}.vlist-item.vlist-item--selected{background-color:var(--vlist-bg-selected)}.vlist-item.vlist-item--odd.vlist-item--selected{background:var(--vlist-bg-selected)}.vlist-item.vlist-item--selected:hover{background-color:var(--vlist-bg-selected-hover)}.vlist-item.vlist-item--odd.vlist-item--selected:hover{background:var(--vlist-bg-selected-hover)}.vlist-item.vlist-item--focused{outline:2px solid var(--vlist-focus-ring,#3b82f6);outline-offset:-2px;z-index:1}.vlist-item--replaced{animation:vlist-fade-in 0.3s ease-out}.vlist-item--placeholder{opacity:0.6;animation:vlist-placeholder-pulse 2s ease-in-out infinite}.vlist-item--placeholder *:not(:has(*)){color:transparent;background-color:var(--vlist-placeholder-bg);border-radius:4px;width:fit-content;line-height:1.2;transform:scaleY(0.8)}.vlist-item--placeholder:is(strong,b,h1,h2,h3,h4):not(:has(*)){background-color:var(--vlist-placeholder-bg-strong)}.vlist-item.vlist-item--selected.vlist-item--focused{outline-color:var(--vlist-border-selected)}.vlist-scrollbar:focus-visible{outline:2px solid currentColor;outline-offset:-2px;opacity:1;pointer-events:auto}.vlist-scrollbar{position:absolute;top:var(--vlist-custom-scrollbar-padding-top);right:var(--vlist-custom-scrollbar-padding-right);bottom:var(--vlist-custom-scrollbar-padding-bottom);width:var(--vlist-custom-scrollbar-width);background-color:var(--vlist-custom-scrollbar-track-color);opacity:0;transition:opacity 0.2s ease-out;touch-action:none;z-index:10;pointer-events:none}.vlist-scrollbar__hover{position:absolute;top:0;right:0;height:100%;z-index:9;touch-action:none;pointer-events:auto}.vlist-scrollbar__hover--horizontal{top:auto;right:auto;bottom:0;left:0;width:100%;height:auto}.vlist-scrollbar--visible{opacity:1;pointer-events:auto}.vlist-scrollbar__thumb{position:absolute;top:0;left:0;right:0;width:100%;background-color:var(--vlist-custom-scrollbar-thumb-color);border-radius:var(--vlist-custom-scrollbar-radius);cursor:pointer;transition:background-color 0.15s ease-out}.vlist-scrollbar__thumb:hover{background-color:var(--vlist-custom-scrollbar-thumb-hover-color)}.vlist-scrollbar--dragging{opacity:1;pointer-events:auto}.vlist-scrollbar--dragging .vlist-scrollbar__thumb{background-color:var(--vlist-custom-scrollbar-thumb-hover-color)}@media (forced-colors:active){.vlist-scrollbar{forced-color-adjust:none;background-color:Canvas}.vlist-scrollbar__thumb{background-color:CanvasText}.vlist-scrollbar__thumb:hover,.vlist-scrollbar--dragging .vlist-scrollbar__thumb{background-color:Highlight}.vlist-scrollbar:focus-visible{outline-color:Highlight}}.vlist-group-header{cursor:default;background-color:var(--vlist-group-header-bg,#f3f4f6);z-index:1;overflow:hidden}.vlist-group-header:hover{background-color:var(--vlist-group-header-bg,#f3f4f6)}.vlist-sticky-header{left:0;right:0;background-color:var(--vlist-group-header-bg,#f3f4f6)}.vlist--horizontal{overflow:hidden}.vlist--horizontal .vlist-viewport{overflow-x:auto;overflow-y:hidden}.vlist--horizontal .vlist-content{height:100%;width:auto}.vlist--horizontal .vlist-item,.vlist--horizontal .vlist-group-header{position:absolute;top:0;bottom:0;left:0;right:auto;display:flex;align-items:center;justify-content:center;border-bottom:none}.vlist-scrollbar--horizontal{top:auto;left:var(--vlist-custom-scrollbar-padding-left);right:var(--vlist-custom-scrollbar-padding-right);bottom:var(--vlist-custom-scrollbar-padding-bottom);width:auto;height:var(--vlist-custom-scrollbar-width)}.vlist-scrollbar--horizontal .vlist-scrollbar__thumb{top:0;left:0;width:auto;height:100%}.vlist-viewport--gutter{padding-right:calc( var(--vlist-custom-scrollbar-padding-right) + var(--vlist-custom-scrollbar-width) + var(--vlist-custom-scrollbar-padding-left) )}.vlist--horizontal .vlist-viewport--gutter{padding-right:0;padding-bottom:calc( var(--vlist-custom-scrollbar-padding-bottom) + var(--vlist-custom-scrollbar-width) + var(--vlist-custom-scrollbar-padding-top) )}.vlist-viewport--custom-scrollbar{scrollbar-width:none;-ms-overflow-style:none}.vlist-viewport--custom-scrollbar::-webkit-scrollbar{display:none}.vlist-viewport--no-scrollbar{scrollbar-width:none;-ms-overflow-style:none}.vlist-viewport--no-scrollbar::-webkit-scrollbar{display:none}.vlist-viewport--gutter-stable{scrollbar-gutter:stable}.vlist-sort-ghost{opacity:0.85;box-shadow:0 4px 16px rgba(0,0,0,0.18);cursor:grabbing}.vlist-item--touch-sort{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.vlist-sort-ghost--touch{outline:2px solid var(--vlist-focus-ring,#3b82f6);outline-offset:2px}.vlist-item--drag-source{opacity:0 !important;pointer-events:none}.vlist--sorting{cursor:grabbing;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.vlist--sorting *{cursor:inherit !important}.vlist-item--kb-sorting{outline:2px solid var(--vlist-focus-ring,#3b82f6);outline-offset:-2px;background-color:var(--vlist-bg-selected);z-index:1}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vlist",
|
|
3
|
-
"version": "3.0.0-next.
|
|
3
|
+
"version": "3.0.0-next.5",
|
|
4
4
|
"description": "Lightweight, high-performance virtual list with zero dependencies",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Floor IO",
|
|
@@ -79,7 +79,7 @@
|
|
|
79
79
|
"dev": "bun run build.ts --watch",
|
|
80
80
|
"test": "bun test",
|
|
81
81
|
"test:changed": "bun test --changed",
|
|
82
|
-
"test:browser": "bun scripts/rtl-cross-axis-browser.mjs && bun scripts/synthetic-browser.mjs && bun scripts/synthetic-carousel-browser.mjs && bun scripts/synthetic-sortable-browser.mjs",
|
|
82
|
+
"test:browser": "bun scripts/rtl-cross-axis-browser.mjs && bun scripts/synthetic-browser.mjs && bun scripts/synthetic-carousel-browser.mjs && bun scripts/synthetic-sortable-browser.mjs && bun scripts/select-next-browser.mjs && bun scripts/item-fill-browser.mjs",
|
|
83
83
|
"typecheck": "tsc --noEmit && tsc --noEmit -p tsconfig.types.json && tsc --noEmit -p tsconfig.test.json",
|
|
84
84
|
"bench": "bun run scripts/bench.ts",
|
|
85
85
|
"bench:quick": "bun run scripts/bench.ts --quick",
|