@floor/vlist 0.5.4 → 0.5.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/builder/index.js +259 -1
- package/dist/compression/index.js +116 -1
- package/dist/core/index.js +137 -1
- package/dist/core-light.js +72 -1
- package/dist/data/index.js +233 -1
- package/dist/grid/index.js +203 -1
- package/dist/groups/index.js +210 -1
- package/dist/index.js +1165 -1
- package/dist/react/index.js +1057 -1
- package/dist/scroll/index.js +121 -1
- package/dist/selection/index.js +104 -1
- package/dist/snapshots/index.js +21 -1
- package/dist/svelte/index.js +1045 -1
- package/dist/vue/index.js +1051 -1
- package/dist/window/index.js +18 -1
- package/package.json +4 -2
package/dist/scroll/index.js
CHANGED
|
@@ -1 +1,121 @@
|
|
|
1
|
-
var Gj=(j,J,G={},_="vlist",F=!1)=>{let{autoHide:E=!0,autoHideDelay:D=1000,minThumbSize:H=30,showOnHover:V=!0,hoverZoneWidth:X=16,showOnViewportEnter:Z=!0}=G,Q=0,U=0,W=0,N=0,O=!1,q=!1,y=0,f=0,h=0,I=null,p=!1,R=null,M=null,S=F?"width":"height",x=F?"translateX":"translateY",b=F?(B)=>B.clientX:(B)=>B.clientY,t=F?"left":"top",L=document.createElement("div"),C=document.createElement("div"),A=V?document.createElement("div"):null,i=()=>{if(L.className=`${_}-scrollbar`,C.className=`${_}-scrollbar-thumb`,F)L.classList.add(`${_}-scrollbar--horizontal`);
|
|
1
|
+
var Gj=(j,J,G={},_="vlist",F=!1)=>{let{autoHide:E=!0,autoHideDelay:D=1000,minThumbSize:H=30,showOnHover:V=!0,hoverZoneWidth:X=16,showOnViewportEnter:Z=!0}=G,Q=0,U=0,W=0,N=0,O=!1,q=!1,y=0,f=0,h=0,I=null,p=!1,R=null,M=null,S=F?"width":"height",x=F?"translateX":"translateY",b=F?(B)=>B.clientX:(B)=>B.clientY,t=F?"left":"top",L=document.createElement("div"),C=document.createElement("div"),A=V?document.createElement("div"):null,i=()=>{if(L.className=`${_}-scrollbar`,C.className=`${_}-scrollbar-thumb`,F)L.classList.add(`${_}-scrollbar--horizontal`);
|
|
2
|
+
if(L.appendChild(C),j.appendChild(L),A){if(A.className=`${_}-scrollbar-hover`,F)A.classList.add(`${_}-scrollbar-hover--horizontal`),A.style.height=`${X}
|
|
3
|
+
px`;
|
|
4
|
+
else A.style.width=`${X}
|
|
5
|
+
px`;
|
|
6
|
+
j.appendChild(A)}},T=()=>{if(I)clearTimeout(I),I=null},P=()=>{if(!E)return;
|
|
7
|
+
T(),I=setTimeout(d,D)},k=()=>{if(Q<=U)return;
|
|
8
|
+
if(T(),!p)L.classList.add(`${_}-scrollbar--visible`),p=!0;
|
|
9
|
+
if(E&&!O&&!q)P()},d=()=>{if(O||q)return;
|
|
10
|
+
L.classList.remove(`${_}-scrollbar--visible`),p=!1},r=(B,g)=>{Q=B,U=g;
|
|
11
|
+
let m=Q>U;
|
|
12
|
+
if(L.style.display=m?"":"none",!m){d();
|
|
13
|
+
return}
|
|
14
|
+
let z=U/Q;
|
|
15
|
+
W=Math.max(H,z*U),C.style[S]=`${W}
|
|
16
|
+
px`,N=U-W,s(h)},s=(B)=>{if(h=B,Q<=U||N<=0)return;
|
|
17
|
+
let g=Q-U,z=Math.min(1,Math.max(0,B/g))*N;
|
|
18
|
+
C.style.transform=`${x}(${z}
|
|
19
|
+
px)`},c=(B)=>{if(B.target===C)return;
|
|
20
|
+
let g=L.getBoundingClientRect(),o=b(B)-g[t]-W/2,Kj=Math.max(0,Math.min(o,N))/N,jj=Q-U,Xj=Kj*jj;
|
|
21
|
+
J(Xj),k()},n=(B)=>{B.preventDefault(),B.stopPropagation(),O=!0,y=b(B),f=h,T(),L.classList.add(`${_}-scrollbar--dragging`),document.addEventListener("mousemove",w),document.addEventListener("mouseup",v)},w=(B)=>{if(!O)return;
|
|
22
|
+
let g=b(B)-y,m=N>0?g/N:0,z=Q-U,o=m*z,e=Math.max(0,Math.min(f+o,z)),jj=e/z*N;
|
|
23
|
+
if(C.style.transform=`${x}(${jj}
|
|
24
|
+
px)`,M=e,R===null)R=requestAnimationFrame(()=>{if(M!==null)J(M);
|
|
25
|
+
R=null})},v=()=>{if(O=!1,R!==null)cancelAnimationFrame(R),R=null;
|
|
26
|
+
if(M!==null)J(M),M=null;
|
|
27
|
+
if(L.classList.remove(`${_}-scrollbar--dragging`),E&&!q)P();
|
|
28
|
+
document.removeEventListener("mousemove",w),document.removeEventListener("mouseup",v)},a=()=>{if(Z)k()},K=()=>{if(!O){if(q=!1,E)P()}},Y=()=>{q=!0,T(),k()},$=()=>{if(q=!1,!O&&E)P()},u=()=>{if(T(),R!==null)cancelAnimationFrame(R),R=null;
|
|
29
|
+
if(L.removeEventListener("click",c),L.removeEventListener("mouseenter",Y),L.removeEventListener("mouseleave",$),C.removeEventListener("mousedown",n),j.removeEventListener("mouseenter",a),j.removeEventListener("mouseleave",K),document.removeEventListener("mousemove",w),document.removeEventListener("mouseup",v),A){if(A.removeEventListener("mouseenter",Y),A.removeEventListener("mouseleave",$),A.parentNode)A.parentNode.removeChild(A)}
|
|
30
|
+
if(L.parentNode)L.parentNode.removeChild(L)};
|
|
31
|
+
if(i(),L.addEventListener("click",c),L.addEventListener("mouseenter",Y),L.addEventListener("mouseleave",$),C.addEventListener("mousedown",n),j.addEventListener("mouseenter",a),j.addEventListener("mouseleave",K),A)A.addEventListener("mouseenter",Y),A.addEventListener("mouseleave",$);
|
|
32
|
+
return{show:k,hide:d,updateBounds:r,updatePosition:s,isVisible:()=>p,destroy:u}};
|
|
33
|
+
var Yj=(j)=>{let J=null;
|
|
34
|
+
return{name:"withScrollbar",priority:30,setup(G){let{dom:_,config:F}=G,{classPrefix:E,horizontal:D}=F;
|
|
35
|
+
if(J=Gj(_.viewport,(X)=>G.scrollController.scrollTo(X),j??{},E,D),!_.viewport.classList.contains(`${E}-viewport--custom-scrollbar`))_.viewport.classList.add(`${E}-viewport--custom-scrollbar`);
|
|
36
|
+
let H=G.getCachedCompression();
|
|
37
|
+
J.updateBounds(H.virtualHeight,G.state.viewportState.containerHeight);
|
|
38
|
+
let V=J;
|
|
39
|
+
G.afterScroll.push((X,Z)=>{V.updatePosition(X),V.show()}),G.resizeHandlers.push((X,Z)=>{if(V){let Q=G.getCachedCompression();
|
|
40
|
+
V.updateBounds(Q.virtualHeight,G.state.viewportState.containerHeight)}}),G.contentSizeHandlers.push(()=>{if(V){let X=G.getCachedCompression();
|
|
41
|
+
V.updateBounds(X.virtualHeight,G.state.viewportState.containerHeight)}}),G.destroyHandlers.push(()=>{if(V)V.destroy()})},destroy(){if(J)J.destroy(),J=null}}};
|
|
42
|
+
var Qj=(j=0)=>{let J=[,,,,,,,,];
|
|
43
|
+
for(let G=0;
|
|
44
|
+
G<8;
|
|
45
|
+
G++)J[G]={position:0,time:0};
|
|
46
|
+
return{velocity:0,lastPosition:j,lastTime:performance.now(),samples:J,sampleIndex:0,sampleCount:0}},l=(j,J)=>{let G=performance.now(),_=G-j.lastTime;
|
|
47
|
+
if(_===0)return j;
|
|
48
|
+
if(_>100){j.sampleCount=0,j.sampleIndex=0,j.velocity=0;
|
|
49
|
+
let E=j.samples[0];
|
|
50
|
+
return E.position=J,E.time=G,j.sampleIndex=1,j.sampleCount=1,j.lastPosition=J,j.lastTime=G,j}
|
|
51
|
+
let F=j.samples[j.sampleIndex];
|
|
52
|
+
if(F.position=J,F.time=G,j.sampleIndex=(j.sampleIndex+1)%8,j.sampleCount=Math.min(j.sampleCount+1,8),j.sampleCount>=2){let E=(j.sampleIndex-j.sampleCount+8)%8,D=j.samples[E],H=J-D.position,V=G-D.time;
|
|
53
|
+
j.velocity=V>0?H/V:0}
|
|
54
|
+
return j.lastPosition=J,j.lastTime=G,j},_j=(j)=>j.sampleCount>=3,$j=(j,J={})=>{let{wheel:G=!0,sensitivity:_=1,smoothing:F=!1,idleTimeout:E=150,onScroll:D,onIdle:H,scrollElement:V,horizontal:X=!1}=J,Z=!!V,Q=0,U=0,W=Z?X?window.innerWidth:window.innerHeight:X?j.clientWidth:j.clientHeight,N=J.compressed??!1,O=J.compression,q=Qj(),y=!1,f=null,I=Jj(()=>{let K=X?j.scrollLeft:j.scrollTop,Y=K>=Q?"down":"up";
|
|
55
|
+
if(q=l(q,K),Q=K,D)D({scrollTop:Q,direction:Y,velocity:q.velocity});
|
|
56
|
+
b()}),R=Jj(()=>{let K=j.getBoundingClientRect(),Y=X?Math.max(0,-K.left):Math.max(0,-K.top),$=Y>=Q?"down":"up";
|
|
57
|
+
if(q=l(q,Y),Q=Y,!y)y=!0;
|
|
58
|
+
if(D)D({scrollTop:Q,direction:$,velocity:q.velocity});
|
|
59
|
+
b()}),M=(K)=>{K.preventDefault()},S=(K)=>{if(K.deltaX)return;
|
|
60
|
+
K.preventDefault(),j.scrollLeft+=K.deltaY},x=(K)=>{if(!N)return;
|
|
61
|
+
K.preventDefault();
|
|
62
|
+
let Y=(X?K.deltaX||K.deltaY:K.deltaY)*_,$=Q+Y;
|
|
63
|
+
if(F)$=Q+Y*0.3;
|
|
64
|
+
if($=Math.max(0,Math.min($,U)),$!==Q){let B=$>=Q?"down":"up";
|
|
65
|
+
if(q=l(q,$),Q=$,!y)y=!0;
|
|
66
|
+
if(D)D({scrollTop:Q,direction:B,velocity:q.velocity});
|
|
67
|
+
b()}},b=()=>{if(f)clearTimeout(f);
|
|
68
|
+
f=setTimeout(()=>{if(y=!1,q=Qj(Q),H)H()},E)},t=(K)=>{if(N)return;
|
|
69
|
+
if(N=!0,O=K,U=K.virtualHeight-W,Z)return;
|
|
70
|
+
if(I.cancel(),j.removeEventListener("scroll",I),!G)j.removeEventListener("wheel",M);
|
|
71
|
+
else if(X)j.removeEventListener("wheel",S);
|
|
72
|
+
if(X)j.style.overflowX="hidden";
|
|
73
|
+
else j.style.overflow="hidden";
|
|
74
|
+
if(G)j.addEventListener("wheel",x,{passive:!1});
|
|
75
|
+
let Y=X?j.scrollLeft:j.scrollTop;
|
|
76
|
+
if(Y>0){let $=X?O?.actualHeight??j.scrollWidth:O?.actualHeight??j.scrollHeight;
|
|
77
|
+
Q=Y/$*U}
|
|
78
|
+
if(X)j.scrollLeft=0;
|
|
79
|
+
else j.scrollTop=0},L=()=>{if(!N)return;
|
|
80
|
+
if(N=!1,Z){O=void 0;
|
|
81
|
+
return}
|
|
82
|
+
if(j.removeEventListener("wheel",x),X)j.style.overflowX="auto";
|
|
83
|
+
else j.style.overflow="auto";
|
|
84
|
+
if(j.addEventListener("scroll",I,{passive:!0}),!G)j.addEventListener("wheel",M,{passive:!1});
|
|
85
|
+
else if(X)j.addEventListener("wheel",S,{passive:!1});
|
|
86
|
+
if(O&&Q>0){let Y=Q/U*(O.actualHeight-W);
|
|
87
|
+
if(X)j.scrollLeft=Y;
|
|
88
|
+
else j.scrollTop=Y}
|
|
89
|
+
O=void 0},C=()=>{if(Z||N)return Q;
|
|
90
|
+
return X?j.scrollLeft:j.scrollTop},A=(K,Y=!1)=>{let $=Math.max(0,Math.min(K,U||1/0));
|
|
91
|
+
if(Z){let u=j.getBoundingClientRect();
|
|
92
|
+
if(X){let B=u.left+window.scrollX;
|
|
93
|
+
window.scrollTo({left:B+$,behavior:Y?"smooth":"auto"})}
|
|
94
|
+
else{let B=u.top+window.scrollY;
|
|
95
|
+
window.scrollTo({top:B+$,behavior:Y?"smooth":"auto"})}}
|
|
96
|
+
else if(N){if($===Q)return;
|
|
97
|
+
let B=$>=Q?"down":"up";
|
|
98
|
+
if(q=l(q,$),Q=$,!y)y=!0;
|
|
99
|
+
if(D)D({scrollTop:Q,direction:B,velocity:q.velocity});
|
|
100
|
+
b()}
|
|
101
|
+
else if(X)j.scrollTo({left:$,behavior:Y?"smooth":"auto"});
|
|
102
|
+
else j.scrollTo({top:$,behavior:Y?"smooth":"auto"})},i=(K)=>{A(C()+K)},T=()=>{return C()<=0},P=(K=0)=>{let Y=C(),$=Z||N?U:X?j.scrollWidth-j.clientWidth:j.scrollHeight-j.clientHeight;
|
|
103
|
+
return Y>=$-K},k=()=>{let K=C(),Y=Z||N?U:X?j.scrollWidth-j.clientWidth:j.scrollHeight-j.clientHeight;
|
|
104
|
+
if(Y<=0)return 0;
|
|
105
|
+
return Math.min(1,Math.max(0,K/Y))},d=(K)=>{if(K.compression)O=K.compression,U=O.virtualHeight-W},r=()=>N,s=()=>Math.abs(q.velocity),c=()=>_j(q),n=()=>y,w=()=>Z,v=(K)=>{if(W=K,O)U=O.virtualHeight-W},a=()=>{if(f)clearTimeout(f);
|
|
106
|
+
if(Z)R.cancel(),window.removeEventListener("scroll",R);
|
|
107
|
+
else I.cancel(),j.removeEventListener("scroll",I),j.removeEventListener("wheel",x),j.removeEventListener("wheel",M),j.removeEventListener("wheel",S)};
|
|
108
|
+
if(Z){if(N&&O)U=O.virtualHeight-W;
|
|
109
|
+
window.addEventListener("scroll",R,{passive:!0})}
|
|
110
|
+
else if(N&&O){if(U=O.virtualHeight-W,X)j.style.overflowX="hidden";
|
|
111
|
+
else j.style.overflow="hidden";
|
|
112
|
+
if(G)j.addEventListener("wheel",x,{passive:!1})}
|
|
113
|
+
else{if(X)j.style.overflowX="auto",j.style.overflowY="hidden";
|
|
114
|
+
else j.style.overflow="auto";
|
|
115
|
+
if(j.addEventListener("scroll",I,{passive:!0}),!G)j.addEventListener("wheel",M,{passive:!1});
|
|
116
|
+
else if(X)j.addEventListener("wheel",S,{passive:!1})}
|
|
117
|
+
return{getScrollTop:C,scrollTo:A,scrollBy:i,isAtTop:T,isAtBottom:P,getScrollPercentage:k,getVelocity:s,isTracking:c,isScrolling:n,updateConfig:d,enableCompression:t,disableCompression:L,isCompressed:r,isWindowMode:w,updateContainerHeight:v,destroy:a}},Jj=(j)=>{let J=null,G=null,_=(...F)=>{if(G=F,J===null)J=requestAnimationFrame(()=>{if(J=null,G)j(...G)})};
|
|
118
|
+
return _.cancel=()=>{if(J!==null)cancelAnimationFrame(J),J=null},_},Bj=(j,J,G,_=0)=>{return j+G>=J-_},Oj=(j,J=0)=>{return j<=J},Uj=(j,J,G)=>{let _=J-G;
|
|
119
|
+
if(_<=0)return 0;
|
|
120
|
+
return Math.min(1,Math.max(0,j/_))},qj=(j,J,G,_)=>{return j<=_&&J>=G};
|
|
121
|
+
export{Yj as withScrollbar,Jj as rafThrottle,qj as isRangeVisible,Oj as isAtTop,Bj as isAtBottom,Uj as getScrollPercentage,Gj as createScrollbar,$j as createScrollController};
|
package/dist/selection/index.js
CHANGED
|
@@ -1 +1,104 @@
|
|
|
1
|
-
var H=(D)=>({selected:new Set(D??[]),focusedIndex:-1}),E=(D,B,G)=>{if(G==="none")return D;
|
|
1
|
+
var H=(D)=>({selected:new Set(D??[]),focusedIndex:-1}),E=(D,B,G)=>{if(G==="none")return D;
|
|
2
|
+
let j=new Set(D.selected);
|
|
3
|
+
if(G==="single"){if(j.clear(),B.length>0)j.add(B[0])}
|
|
4
|
+
else for(let J of B)j.add(J);
|
|
5
|
+
return{...D,selected:j}},F=(D,B)=>{let G=new Set(D.selected);
|
|
6
|
+
for(let j of B)G.delete(j);
|
|
7
|
+
return{...D,selected:G}},V=(D,B,G)=>{if(G==="none")return D;
|
|
8
|
+
if(D.selected.has(B))return F(D,[B]);
|
|
9
|
+
else return E(D,[B],G)},C=(D,B,G)=>{if(G!=="multiple")return D;
|
|
10
|
+
return{...D,selected:new Set(B.map((j)=>j.id))}},f=(D)=>({...D,selected:new Set}),w=(D,B)=>{return D.focusedIndex=B,D},u=(D,B,G=!0)=>{if(B===0)return D;
|
|
11
|
+
let j=D.focusedIndex-1;
|
|
12
|
+
if(j<0)j=G?B-1:0;
|
|
13
|
+
return D.focusedIndex=j,D},v=(D,B,G=!0)=>{if(B===0)return D;
|
|
14
|
+
let j=D.focusedIndex+1;
|
|
15
|
+
if(j>=B)j=G?0:B-1;
|
|
16
|
+
return D.focusedIndex=j,D},R=(D,B)=>{if(B===0)return D;
|
|
17
|
+
return D.focusedIndex=0,D},S=(D,B)=>{if(B===0)return D;
|
|
18
|
+
return D.focusedIndex=B-1,D},r=(D,B,G,j)=>{if(B===0)return D;
|
|
19
|
+
let J=j==="up"?D.focusedIndex-G:D.focusedIndex+G;
|
|
20
|
+
return J=Math.max(0,Math.min(B-1,J)),D.focusedIndex=J,D},m=(D,B)=>{return D.selected.has(B)},y=(D)=>{return Array.from(D.selected)},O=(D,B)=>{let G=[];
|
|
21
|
+
for(let j of D.selected){let J=B(j);
|
|
22
|
+
if(J)G.push(J)}
|
|
23
|
+
return G},d=(D)=>{return D.selected.size},l=(D)=>{return D.selected.size===0},c=(D,B,G)=>{if(G==="none"||D.focusedIndex<0||D.focusedIndex>=B.length)return D;
|
|
24
|
+
let j=B[D.focusedIndex];
|
|
25
|
+
if(!j)return D;
|
|
26
|
+
return V(D,j.id,G)},o=(D,B,G,j,J)=>{if(J!=="multiple")return D;
|
|
27
|
+
let q=Math.min(G,j),X=Math.max(G,j),U=[];
|
|
28
|
+
for(let $=q;
|
|
29
|
+
$<=X;
|
|
30
|
+
$++){let k=B[$];
|
|
31
|
+
if(k)U.push(k.id)}
|
|
32
|
+
return E(D,U,J)};
|
|
33
|
+
var h=(D,B,G,j,J,q)=>{if(j===0)return 0;
|
|
34
|
+
let X=Math.max(0,Math.min(D,j-1)),U=B.getOffset(X),$=B.getHeight(X),k=B.getTotalHeight(),T=Math.max(0,k-G),W;
|
|
35
|
+
switch(q){case"center":W=U-G/2+$/2;
|
|
36
|
+
break;
|
|
37
|
+
case"end":W=U-G+$;
|
|
38
|
+
break;
|
|
39
|
+
case"start":default:W=U;
|
|
40
|
+
break}
|
|
41
|
+
return Math.max(0,Math.min(W,T))};
|
|
42
|
+
var p=(D,B,G,j,J="start",q,X=h)=>{return X(D,B,G,j,q,J)};
|
|
43
|
+
var n=(D)=>{let B=D?.mode??"single",G=D?.initial,j=H(G),J=null;
|
|
44
|
+
return{name:"withSelection",priority:50,methods:["select","deselect","toggleSelect","selectAll","clearSelection","getSelected","getSelectedItems"],setup(q){let{dom:X,emitter:U,config:$}=q,{classPrefix:k,ariaIdPrefix:T}=$;
|
|
45
|
+
if(B==="none"){q.methods.set("select",()=>{}),q.methods.set("deselect",()=>{}),q.methods.set("toggleSelect",()=>{}),q.methods.set("selectAll",()=>{}),q.methods.set("clearSelection",()=>{}),q.methods.set("getSelected",()=>[]),q.methods.set("getSelectedItems",()=>[]),q.methods.set("setSelectionMode",()=>{});
|
|
46
|
+
return}
|
|
47
|
+
let{renderIfNeeded:W,forceRender:g}=q.getRenderFns(),b=()=>{q.dom.items.querySelectorAll("[data-index]").forEach((Q)=>{let M=Q,L=M.dataset.id;
|
|
48
|
+
if(L!==void 0){let Y=/^\d+$/.test(L)?parseInt(L,10):L,_=j.selected.has(Y),N=parseInt(M.dataset.index??"-1",10)===j.focusedIndex;
|
|
49
|
+
M.classList.toggle(`${k}-item--selected`,_),M.classList.toggle(`${k}-item--focused`,N),M.ariaSelected=_?"true":"false"}})},x=()=>{if(q.state.isDestroyed)return;
|
|
50
|
+
W(),b()},I=()=>{if(q.state.isDestroyed)return;
|
|
51
|
+
g(),b()};
|
|
52
|
+
q.setRenderFns(x,I);
|
|
53
|
+
let A=()=>{b(),U.emit("selection:change",{selected:y(j),items:O(j,(K)=>q.dataManager.getItemById(K))})};
|
|
54
|
+
J=document.createElement("div"),J.setAttribute("aria-live","polite"),J.setAttribute("aria-atomic","true"),J.className=`${k}-live-region`,J.style.cssText="position:absolute;
|
|
55
|
+
width:1px;
|
|
56
|
+
height:1px;
|
|
57
|
+
padding:0;
|
|
58
|
+
margin:-1px;
|
|
59
|
+
overflow:hidden;
|
|
60
|
+
clip:rect(0,0,0,0);
|
|
61
|
+
white-space:nowrap;
|
|
62
|
+
border:0",X.root.appendChild(J);
|
|
63
|
+
let z=J;
|
|
64
|
+
U.on("selection:change",({selected:K})=>{let Q=K.length;
|
|
65
|
+
if(Q===0)z.textContent="";
|
|
66
|
+
else if(Q===1)z.textContent="1 item selected";
|
|
67
|
+
else z.textContent=`${Q} items selected`}),q.clickHandlers.push((K)=>{if(q.state.isDestroyed)return;
|
|
68
|
+
let M=K.target.closest("[data-index]");
|
|
69
|
+
if(!M)return;
|
|
70
|
+
let L=parseInt(M.dataset.index??"-1",10);
|
|
71
|
+
if(L<0)return;
|
|
72
|
+
let Y=q.dataManager.getItem(L);
|
|
73
|
+
if(!Y)return;
|
|
74
|
+
U.emit("item:click",{item:Y,index:L,event:K}),j=w(j,L),X.root.setAttribute("aria-activedescendant",`${T}-item-${L}`),j=V(j,Y.id,B),A()}),q.keydownHandlers.push((K)=>{if(q.state.isDestroyed)return;
|
|
75
|
+
let Q=q.dataManager.getTotal(),M=j.focusedIndex,L=!1,Y=!1,_=j;
|
|
76
|
+
switch(K.key){case"ArrowUp":_=u(j,Q),L=!0,Y=!0;
|
|
77
|
+
break;
|
|
78
|
+
case"ArrowDown":_=v(j,Q),L=!0,Y=!0;
|
|
79
|
+
break;
|
|
80
|
+
case"Home":_=R(j,Q),L=!0,Y=!0;
|
|
81
|
+
break;
|
|
82
|
+
case"End":_=S(j,Q),L=!0,Y=!0;
|
|
83
|
+
break;
|
|
84
|
+
case" ":case"Enter":if(j.focusedIndex>=0){let Z=q.dataManager.getItem(j.focusedIndex);
|
|
85
|
+
if(Z)_=V(j,Z.id,B);
|
|
86
|
+
L=!0}
|
|
87
|
+
break}
|
|
88
|
+
if(L){K.preventDefault(),j=_;
|
|
89
|
+
let Z=j.focusedIndex;
|
|
90
|
+
if(Z>=0){let N=q.dataManager.getState(),P=p(Z,q.heightCache,q.state.viewportState.containerHeight,N.total,"center",q.getCachedCompression());
|
|
91
|
+
q.scrollController.scrollTo(P),X.root.setAttribute("aria-activedescendant",`${T}-item-${Z}`)}
|
|
92
|
+
else X.root.removeAttribute("aria-activedescendant");
|
|
93
|
+
if(Y){let{selected:N}=j;
|
|
94
|
+
if(M>=0&&M!==Z){let P=q.dataManager.getItem(M);
|
|
95
|
+
if(P)q.renderer.updateItemClasses(M,N.has(P.id),!1)}
|
|
96
|
+
if(Z>=0){let P=q.dataManager.getItem(Z);
|
|
97
|
+
if(P)q.renderer.updateItemClasses(Z,N.has(P.id),!0)}}
|
|
98
|
+
else I(),U.emit("selection:change",{selected:y(j),items:O(j,(N)=>q.dataManager.getItemById(N))})}}),q.methods.set("select",(...K)=>{j=E(j,K,B),A()}),q.methods.set("deselect",(...K)=>{j=F(j,K),A()}),q.methods.set("toggleSelect",(K)=>{j=V(j,K,B),A()}),q.methods.set("selectAll",()=>{if(B!=="multiple")return;
|
|
99
|
+
let K=q.getAllLoadedItems();
|
|
100
|
+
j=C(j,K,B),A()}),q.methods.set("clearSelection",()=>{j=f(j);
|
|
101
|
+
let{renderRange:K,isCompressed:Q}=q.state.viewportState,M=q.getItemsForRange(K),L=Q?q.getCompressionContext():void 0;
|
|
102
|
+
q.renderer.render(M,K,j.selected,j.focusedIndex,L),U.emit("selection:change",{selected:[],items:[]})}),q.methods.set("getSelected",()=>{return y(j)}),q.methods.set("getSelectedItems",()=>{return O(j,(K)=>q.dataManager.getItemById(K))}),q.destroyHandlers.push(()=>{if(z&&z.parentNode)z.remove()})},destroy(){if(J&&J.parentNode)J.remove();
|
|
103
|
+
J=null}}};
|
|
104
|
+
export{n as withSelection,V as toggleSelection,w as setFocusedIndex,o as selectRange,E as selectItems,c as selectFocused,C as selectAll,u as moveFocusUp,S as moveFocusToLast,R as moveFocusToFirst,v as moveFocusDown,r as moveFocusByPage,l as isSelectionEmpty,m as isSelected,d as getSelectionCount,O as getSelectedItems,y as getSelectedIds,F as deselectItems,H as createSelectionState,f as clearSelection};
|
package/dist/snapshots/index.js
CHANGED
|
@@ -1 +1,21 @@
|
|
|
1
|
-
var B=()=>{return{name:"withSnapshots",priority:50,methods:["getScrollSnapshot","restoreScroll"],setup(v){v.methods.set("getScrollSnapshot",()=>{let q=v.scrollController.getScrollTop(),y=v.getCachedCompression(),k=v.getVirtualTotal(),j=v.methods.get("getSelected"),A=j&&j().length>0?j():void 0;
|
|
1
|
+
var B=()=>{return{name:"withSnapshots",priority:50,methods:["getScrollSnapshot","restoreScroll"],setup(v){v.methods.set("getScrollSnapshot",()=>{let q=v.scrollController.getScrollTop(),y=v.getCachedCompression(),k=v.getVirtualTotal(),j=v.methods.get("getSelected"),A=j&&j().length>0?j():void 0;
|
|
2
|
+
if(k===0){let u={index:0,offsetInItem:0};
|
|
3
|
+
if(A)u.selectedIds=A;
|
|
4
|
+
return u}
|
|
5
|
+
let w,b;
|
|
6
|
+
if(y.isCompressed){let U=q/y.virtualHeight*k;
|
|
7
|
+
w=Math.max(0,Math.min(Math.floor(U),k-1)),b=(U-w)*v.heightCache.getHeight(w)}
|
|
8
|
+
else w=v.heightCache.indexAtOffset(q),b=q-v.heightCache.getOffset(w);
|
|
9
|
+
b=Math.max(0,b);
|
|
10
|
+
let S={index:w,offsetInItem:b};
|
|
11
|
+
if(A)S.selectedIds=A;
|
|
12
|
+
return S}),v.methods.set("restoreScroll",(q)=>{let{index:y,offsetInItem:k,selectedIds:j}=q,A=v.getCachedCompression(),w=v.getVirtualTotal();
|
|
13
|
+
if(w===0)return;
|
|
14
|
+
let b=Math.max(0,Math.min(y,w-1)),S;
|
|
15
|
+
if(A.isCompressed){let U=v.heightCache.getHeight(b),z=U>0?k/U:0;
|
|
16
|
+
S=(b+z)/w*A.virtualHeight}
|
|
17
|
+
else S=v.heightCache.getOffset(b)+k;
|
|
18
|
+
let u=Math.max(0,A.virtualHeight-v.state.viewportState.containerHeight);
|
|
19
|
+
if(S=Math.max(0,Math.min(S,u)),v.scrollController.scrollTo(S),j&&j.length>0){let U=v.methods.get("select");
|
|
20
|
+
if(U)U(...j)}})}}};
|
|
21
|
+
export{B as withSnapshots};
|