@floor/vlist 0.5.6 → 0.5.7
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.md +21 -17
- package/dist/builder/index.js +8 -17
- package/dist/compression/index.js +9 -21
- package/dist/core/index.js +3 -7
- package/dist/core-light.js +4 -8
- package/dist/grid/index.js +3 -8
- package/dist/groups/index.js +4 -10
- package/dist/index.js +23 -59
- package/dist/react/index.js +21 -54
- package/dist/scroll/index.js +5 -10
- package/dist/selection/index.js +1 -9
- package/dist/svelte/index.js +21 -54
- package/dist/vue/index.js +21 -54
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -58,35 +58,39 @@ npm install @floor/vlist
|
|
|
58
58
|
For smaller bundles, import only what you need:
|
|
59
59
|
|
|
60
60
|
```typescript
|
|
61
|
-
import { createVList } from '@floor/vlist' // full library (
|
|
62
|
-
import { createVList } from '@floor/vlist/core' // lightweight core (
|
|
61
|
+
import { createVList } from '@floor/vlist' // full library (70 KB / 23 KB gzip)
|
|
62
|
+
import { createVList } from '@floor/vlist/core' // lightweight core (8 KB / 3 KB gzip)
|
|
63
|
+
import { createVList } from '@floor/vlist/core-light' // ultra-minimal (5 KB / 2 KB gzip)
|
|
64
|
+
import { createVList } from '@floor/vlist/builder' // declarative API (17 KB / 6 KB gzip)
|
|
63
65
|
import { createGridLayout } from '@floor/vlist/grid' // grid layout utilities only
|
|
64
66
|
import { createSparseStorage } from '@floor/vlist/data' // data utilities only
|
|
65
|
-
import { getCompressionInfo } from '@floor/vlist/compression'
|
|
66
|
-
import { createSelectionState } from '@floor/vlist/selection'
|
|
67
|
-
import { createScrollController } from '@floor/vlist/scroll'
|
|
68
|
-
import { createGroupLayout } from '@floor/vlist/groups'
|
|
67
|
+
import { getCompressionInfo } from '@floor/vlist/compression' // compression utilities only
|
|
68
|
+
import { createSelectionState } from '@floor/vlist/selection' // selection utilities only
|
|
69
|
+
import { createScrollController } from '@floor/vlist/scroll' // scroll utilities only
|
|
70
|
+
import { createGroupLayout } from '@floor/vlist/groups' // group/sticky header utilities only
|
|
69
71
|
```
|
|
70
72
|
|
|
71
73
|
| Import | Minified | Gzipped | Description |
|
|
72
74
|
|--------|----------|---------|-------------|
|
|
73
|
-
| `@floor/vlist` |
|
|
74
|
-
| **`@floor/vlist/core`** | **
|
|
75
|
-
|
|
|
76
|
-
| `@floor/vlist/
|
|
77
|
-
| `@floor/vlist/
|
|
78
|
-
| `@floor/vlist/
|
|
79
|
-
| `@floor/vlist/
|
|
80
|
-
| `@floor/vlist/
|
|
75
|
+
| `@floor/vlist` | 70 KB | 23 KB | All features (plugins + framework adapters) |
|
|
76
|
+
| **`@floor/vlist/core`** | **8 KB** | **3 KB** | **Core virtual list — 88% smaller** |
|
|
77
|
+
| **`@floor/vlist/core-light`** | **5 KB** | **2 KB** | **Ultra-minimal — 93% smaller** |
|
|
78
|
+
| `@floor/vlist/builder` | 17 KB | 6 KB | Declarative API with chaining |
|
|
79
|
+
| `@floor/vlist/data` | 12 KB | 5 KB | Sparse storage, placeholders, data manager |
|
|
80
|
+
| `@floor/vlist/scroll` | 9 KB | 3 KB | Scroll controller + custom scrollbar |
|
|
81
|
+
| `@floor/vlist/grid` | 10 KB | 4 KB | Grid layout + 2D renderer |
|
|
82
|
+
| `@floor/vlist/groups` | 11 KB | 5 KB | Group layout + sticky headers |
|
|
83
|
+
| `@floor/vlist/compression` | 8 KB | 3 KB | Large-list compression utilities |
|
|
84
|
+
| `@floor/vlist/selection` | 6 KB | 2 KB | Selection state management |
|
|
81
85
|
|
|
82
86
|
### Framework Adapters
|
|
83
87
|
|
|
84
88
|
Thin wrappers for React, Vue, and Svelte — each under 1 KB:
|
|
85
89
|
|
|
86
90
|
```typescript
|
|
87
|
-
import { useVList } from '@floor/vlist/react' // React hook (
|
|
88
|
-
import { useVList } from '@floor/vlist/vue' // Vue 3 composable (
|
|
89
|
-
import { vlist } from '@floor/vlist/svelte' // Svelte action (
|
|
91
|
+
import { useVList } from '@floor/vlist/react' // React hook (62 KB / 21 KB gzip)
|
|
92
|
+
import { useVList } from '@floor/vlist/vue' // Vue 3 composable (62 KB / 21 KB gzip)
|
|
93
|
+
import { vlist } from '@floor/vlist/svelte' // Svelte action (62 KB / 20 KB gzip)
|
|
90
94
|
```
|
|
91
95
|
|
|
92
96
|
| Import | Minified | Gzipped | Description |
|
package/dist/builder/index.js
CHANGED
|
@@ -93,17 +93,11 @@ let F=null,P=()=>F?F.getTotal():B.length,Bj=[],Gj=[],Wj=[],Dj=[],o=[],Vj=[],L=ne
|
|
|
93
93
|
else _.viewport.scrollTop=j},Cj=(j=2)=>{let J=N.getTotalHeight();
|
|
94
94
|
return O+R>=J-j},pj=!1,y,T,kj=(j,J,Z,q,W)=>{DJ(j,J,Z,q,W)},Xj=(j,J,Z,q,W)=>{return _J(j,J,Z,q,W)},_j=(j,J)=>{if(typeof J==="string")j.innerHTML=J;
|
|
95
95
|
else j.replaceChildren(J)},Lj=(j,J)=>{let Z=Math.round(N.getOffset(J));
|
|
96
|
-
if($)j.style.transform=`translateX(${Z}
|
|
97
|
-
px)
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
px`,yj!=null)Z.style.height=`${yj}
|
|
102
|
-
px`}
|
|
103
|
-
else Z.style.height=`${N.getHeight(j)}
|
|
104
|
-
px`;
|
|
105
|
-
return Z.dataset.index=String(j),Z.dataset.id=String(J.id),Z.ariaSelected="false",Z.id=`${Rj}-item-${j}`,r=String(P()),Z.setAttribute("aria-setsize",r),Z.setAttribute("aria-posinset",String(j+1)),_j(Z,t(J,j,Uj)),Lj(Z,j),Z},n=()=>{let j=`${N.getTotalHeight()}
|
|
106
|
-
px`;
|
|
96
|
+
if($)j.style.transform=`translateX(${Z}px)`;
|
|
97
|
+
else j.style.transform=`translateY(${Z}px)`},hj=(j,J)=>{let Z=e.acquire();
|
|
98
|
+
if(Z.className=xj,$){if(Z.style.width=`${N.getHeight(j)}px`,yj!=null)Z.style.height=`${yj}px`}
|
|
99
|
+
else Z.style.height=`${N.getHeight(j)}px`;
|
|
100
|
+
return Z.dataset.index=String(j),Z.dataset.id=String(J.id),Z.ariaSelected="false",Z.id=`${Rj}-item-${j}`,r=String(P()),Z.setAttribute("aria-setsize",r),Z.setAttribute("aria-posinset",String(j+1)),_j(Z,t(J,j,Uj)),Lj(Z,j),Z},n=()=>{let j=`${N.getTotalHeight()}px`;
|
|
107
101
|
if($)_.content.style.width=j;
|
|
108
102
|
else _.content.style.height=j},Nj=new Set,Mj=-1,gj=()=>{if(l)return;
|
|
109
103
|
let j=P();
|
|
@@ -118,10 +112,8 @@ G++){let A=F?F.getItem(G):B[G];
|
|
|
118
112
|
if(!A)continue;
|
|
119
113
|
let b=v.get(G);
|
|
120
114
|
if(b){let w=b.dataset.id,Qj=String(A.id);
|
|
121
|
-
if(w!==Qj)if(_j(b,t(A,G,Uj)),b.dataset.id=Qj,$)b.style.width=`${N.getHeight(G)}
|
|
122
|
-
px`;
|
|
123
|
-
else b.style.height=`${N.getHeight(G)}
|
|
124
|
-
px`;
|
|
115
|
+
if(w!==Qj)if(_j(b,t(A,G,Uj)),b.dataset.id=Qj,$)b.style.width=`${N.getHeight(G)}px`;
|
|
116
|
+
else b.style.height=`${N.getHeight(G)}px`;
|
|
125
117
|
Lj(b,G);
|
|
126
118
|
let qj=Nj.has(A.id),$J=G===Mj;
|
|
127
119
|
if(b.classList.toggle(`${D}-item--selected`,qj),b.classList.toggle(`${D}-item--focused`,$J),b.ariaSelected=qj?"true":"false",Z)b.setAttribute("aria-setsize",r)}
|
|
@@ -181,8 +173,7 @@ Z<j;
|
|
|
181
173
|
Z++){let q=F.getItem(Z);
|
|
182
174
|
if(q)J.push(q)}
|
|
183
175
|
return J}
|
|
184
|
-
return[...B]},getVirtualTotal(){return P()},getCachedCompression(){return{isCompressed:!1,actualHeight:N.getTotalHeight(),virtualHeight:N.getTotalHeight(),ratio:1}},getCompressionContext(){return{scrollTop:O,totalItems:P(),containerHeight:R,rangeStart:E.start}},renderIfNeeded(){y()},forceRender(){T()},getRenderFns(){return{renderIfNeeded:y,forceRender:T}},setRenderFns(j,J){y=j,T=J},setVirtualTotalFn(j){P=j},rebuildHeightCache(j){N.rebuild(j??P())},setHeightConfig(j){N=Sj(j,P())},updateContentSize(j){let J=`${j}
|
|
185
|
-
px`;
|
|
176
|
+
return[...B]},getVirtualTotal(){return P()},getCachedCompression(){return{isCompressed:!1,actualHeight:N.getTotalHeight(),virtualHeight:N.getTotalHeight(),ratio:1}},getCompressionContext(){return{scrollTop:O,totalItems:P(),containerHeight:R,rangeStart:E.start}},renderIfNeeded(){y()},forceRender(){T()},getRenderFns(){return{renderIfNeeded:y,forceRender:T}},setRenderFns(j,J){y=j,T=J},setVirtualTotalFn(j){P=j},rebuildHeightCache(j){N.rebuild(j??P())},setHeightConfig(j){N=Sj(j,P())},updateContentSize(j){let J=`${j}px`;
|
|
186
177
|
if($)_.content.style.width=J;
|
|
187
178
|
else _.content.style.height=J},updateCompressionMode(){},setVisibleRangeFn(j){kj=j},setScrollToPosFn(j){Xj=j},setPositionElementFn(j){Lj=j},setScrollFns(j,J){u=j,S=(Z)=>{J(Z),i()}},setScrollTarget(j){g.removeEventListener("scroll",i),g=j,g.addEventListener("scroll",i,{passive:!0})},getScrollTarget(){return g},setContainerDimensions(j){dj=j.width,sj=j.height,jj=j.width(),R=j.height(),H.viewportState.containerHeight=R},disableViewportResize(){if(Aj)Aj=!1,bj.unobserve(_.viewport)}};
|
|
188
179
|
F={getState:()=>({total:B.length,cached:B.length,isLoading:!1,pendingRanges:[],error:void 0,hasMore:!1,cursor:void 0}),getTotal:()=>B.length,getCached:()=>B.length,getIsLoading:()=>!1,getHasMore:()=>!1,getStorage:()=>null,getPlaceholders:()=>null,getItem:(j)=>B[j],getItemById:(j)=>{let J=z.get(j);
|
|
@@ -47,16 +47,11 @@ return Math.floor(N*J)}
|
|
|
47
47
|
return K.indexAtOffset(j)},Dy=(j,K)=>{if(typeof K==="number")return j*K>F;
|
|
48
48
|
return K.getTotalHeight()>F},_y=(j)=>{if(j<=0)return 0;
|
|
49
49
|
return Math.floor(F/j)},Ey=(j,K)=>{let J=w(j,K);
|
|
50
|
-
if(!J.isCompressed)return`No compression needed (${j} items, ${(J.actualHeight/1e6).toFixed(2)}
|
|
51
|
-
M px)
|
|
52
|
-
return`Compressed to ${(J.ratio*100).toFixed(1)}% (${j} items, ${(J.actualHeight/1e6).toFixed(1)}
|
|
53
|
-
M px → ${(J.virtualHeight/1e6).toFixed(1)}
|
|
54
|
-
M px virtual)`};
|
|
50
|
+
if(!J.isCompressed)return`No compression needed (${j} items, ${(J.actualHeight/1e6).toFixed(2)}M px)`;
|
|
51
|
+
return`Compressed to ${(J.ratio*100).toFixed(1)}% (${j} items, ${(J.actualHeight/1e6).toFixed(1)}M px → ${(J.virtualHeight/1e6).toFixed(1)}M px virtual)`};
|
|
55
52
|
var i=(j,K,J={},y="vlist",N=!1)=>{let{autoHide:Q=!0,autoHideDelay:q=1000,minThumbSize:V=30,showOnHover:B=!0,hoverZoneWidth:E=16,showOnViewportEnter:L=!0}=J,Y=0,W=0,G=0,X=0,$=!1,D=!1,z=0,M=0,b=0,f=null,T=!1,Z=null,P=null,Qy=N?"width":"height",o=N?"translateX":"translateY",u=N?(_)=>_.clientX:(_)=>_.clientY,Yy=N?"left":"top",U=document.createElement("div"),R=document.createElement("div"),O=B?document.createElement("div"):null,$y=()=>{if(U.className=`${y}-scrollbar`,R.className=`${y}-scrollbar-thumb`,N)U.classList.add(`${y}-scrollbar--horizontal`);
|
|
56
|
-
if(U.appendChild(R),j.appendChild(U),O){if(O.className=`${y}-scrollbar-hover`,N)O.classList.add(`${y}-scrollbar-hover--horizontal`),O.style.height=`${E}
|
|
57
|
-
px`;
|
|
58
|
-
else O.style.width=`${E}
|
|
59
|
-
px`;
|
|
53
|
+
if(U.appendChild(R),j.appendChild(U),O){if(O.className=`${y}-scrollbar-hover`,N)O.classList.add(`${y}-scrollbar-hover--horizontal`),O.style.height=`${E}px`;
|
|
54
|
+
else O.style.width=`${E}px`;
|
|
60
55
|
j.appendChild(O)}},S=()=>{if(f)clearTimeout(f),f=null},v=()=>{if(!Q)return;
|
|
61
56
|
S(),f=setTimeout(d,q)},H=()=>{if(Y<=W)return;
|
|
62
57
|
if(S(),!T)U.classList.add(`${y}-scrollbar--visible`),T=!0;
|
|
@@ -66,16 +61,13 @@ let C=Y>W;
|
|
|
66
61
|
if(U.style.display=C?"":"none",!C){d();
|
|
67
62
|
return}
|
|
68
63
|
let k=W/Y;
|
|
69
|
-
G=Math.max(V,k*W),R.style[Qy]=`${G}
|
|
70
|
-
px`,X=W-G,e(b)},e=(_)=>{if(b=_,Y<=W||X<=0)return;
|
|
64
|
+
G=Math.max(V,k*W),R.style[Qy]=`${G}px`,X=W-G,e(b)},e=(_)=>{if(b=_,Y<=W||X<=0)return;
|
|
71
65
|
let A=Y-W,k=Math.min(1,Math.max(0,_/A))*X;
|
|
72
|
-
R.style.transform=`${o}(${k}
|
|
73
|
-
px)`},t=(_)=>{if(_.target===R)return;
|
|
66
|
+
R.style.transform=`${o}(${k}px)`},t=(_)=>{if(_.target===R)return;
|
|
74
67
|
let A=U.getBoundingClientRect(),m=u(_)-A[Yy]-G/2,Ky=Math.max(0,Math.min(m,X))/X,h=Y-W,qy=Ky*h;
|
|
75
68
|
K(qy),H()},yy=(_)=>{_.preventDefault(),_.stopPropagation(),$=!0,z=u(_),M=b,S(),U.classList.add(`${y}-scrollbar--dragging`),document.addEventListener("mousemove",x),document.addEventListener("mouseup",g)},x=(_)=>{if(!$)return;
|
|
76
69
|
let A=u(_)-z,C=X>0?A/X:0,k=Y-W,m=C*k,s=Math.max(0,Math.min(M+m,k)),h=s/k*X;
|
|
77
|
-
if(R.style.transform=`${o}(${h}
|
|
78
|
-
px)`,P=s,Z===null)Z=requestAnimationFrame(()=>{if(P!==null)K(P);
|
|
70
|
+
if(R.style.transform=`${o}(${h}px)`,P=s,Z===null)Z=requestAnimationFrame(()=>{if(P!==null)K(P);
|
|
79
71
|
Z=null})},g=()=>{if($=!1,Z!==null)cancelAnimationFrame(Z),Z=null;
|
|
80
72
|
if(P!==null)K(P),P=null;
|
|
81
73
|
if(U.classList.remove(`${y}-scrollbar--dragging`),Q&&!D)v();
|
|
@@ -106,11 +98,7 @@ return E()},y.setVisibleRangeFn((L,Y,W,G,X)=>{let $=w(G,W);
|
|
|
106
98
|
c(L,Y,W,G,$,X)}),y.setScrollToPosFn((L,Y,W,G,X)=>{let $=w(G,Y);
|
|
107
99
|
return a(L,Y,W,G,$,X)}),y.setPositionElementFn((L,Y)=>{let W=y.getVirtualTotal(),G=w(W,y.heightCache);
|
|
108
100
|
if(G.isCompressed){let X=Math.round(r(Y,y.scrollController.getScrollTop(),y.heightCache,W,y.state.viewportState.containerHeight,G)),$=y.config.horizontal;
|
|
109
|
-
L.style.transform=$?`translateX(${X}
|
|
110
|
-
px)`:`translateY(${X}
|
|
111
|
-
px)`}
|
|
101
|
+
L.style.transform=$?`translateX(${X}px)`:`translateY(${X}px)`}
|
|
112
102
|
else{let X=Math.round(y.heightCache.getOffset(Y)),$=y.config.horizontal;
|
|
113
|
-
L.style.transform=$?`translateX(${X}
|
|
114
|
-
px)`:`translateY(${X}
|
|
115
|
-
px)`}}),B(),y.destroyHandlers.push(()=>{if(j)j.destroy(),j=null})},destroy(){if(j)j.destroy(),j=null}}};
|
|
103
|
+
L.style.transform=$?`translateX(${X}px)`:`translateY(${X}px)`}}),B(),y.destroyHandlers.push(()=>{if(j)j.destroy(),j=null})},destroy(){if(j)j.destroy(),j=null}}};
|
|
116
104
|
export{Ly as withCompression,Dy as needsCompression,_y as getMaxItemsWithoutCompression,w as getCompressionState,Ey as getCompressionInfo,Uy as calculateIndexFromScrollPosition,c as calculateCompressedVisibleRange,a as calculateCompressedScrollToIndex,Gy as calculateCompressedRenderRange,r as calculateCompressedItemPosition,F as MAX_VIRTUAL_HEIGHT};
|
package/dist/core/index.js
CHANGED
|
@@ -51,11 +51,8 @@ if(!B.item.template)throw Error("[vlist] item.template is required");
|
|
|
51
51
|
let{item:X,items:Y,overscan:U=3,classPrefix:$="vlist",scrollElement:q,ariaLabel:J}=B,{height:F,template:N}=X,k=!!q,_=Y?[...Y]:[],y=!1,R=null,D=0,l=`${$}-${Nj++}`,o=_j(B.container),V=$j(o,$,J),W=Zj(),A=Yj(F,_.length),I=Qj();
|
|
52
52
|
if(k)V.root.style.overflow="visible",V.root.style.height="auto",V.viewport.style.overflow="visible",V.viewport.style.height="auto";
|
|
53
53
|
let E=k?window.innerHeight:V.viewport.clientHeight,h={start:0,end:0},M={start:0,end:0},C={start:-1,end:-1},b=new Map,f={selected:!1,focused:!1},n=`${$}-item`,T="",p=(j,K)=>{if(typeof K==="string")j.innerHTML=K;
|
|
54
|
-
else j.replaceChildren(K)},c=(j,K)=>{j.style.transform=`translateY(${Math.round(A.getOffset(K))}
|
|
55
|
-
px)
|
|
56
|
-
return G.className=n,G.style.height=`${A.getHeight(j)}
|
|
57
|
-
px`,G.dataset.index=String(j),G.dataset.id=String(K.id),G.ariaSelected="false",G.id=`${l}-item-${j}`,T=String(_.length),G.setAttribute("aria-setsize",T),G.setAttribute("aria-posinset",String(j+1)),p(G,N(K,j,f)),c(G,j),G},v=()=>{V.content.style.height=`${A.getTotalHeight()}
|
|
58
|
-
px`},P=()=>{if(y)return;
|
|
54
|
+
else j.replaceChildren(K)},c=(j,K)=>{j.style.transform=`translateY(${Math.round(A.getOffset(K))}px)`},i=(j,K)=>{let G=I.acquire();
|
|
55
|
+
return G.className=n,G.style.height=`${A.getHeight(j)}px`,G.dataset.index=String(j),G.dataset.id=String(K.id),G.ariaSelected="false",G.id=`${l}-item-${j}`,T=String(_.length),G.setAttribute("aria-setsize",T),G.setAttribute("aria-posinset",String(j+1)),p(G,N(K,j,f)),c(G,j),G},v=()=>{V.content.style.height=`${A.getTotalHeight()}px`},P=()=>{if(y)return;
|
|
59
56
|
if(Vj(D,E,A,_.length,h),Lj(h,U,_.length,M),M.start===C.start&&M.end===C.end)return;
|
|
60
57
|
let j=String(_.length),K=j!==T;
|
|
61
58
|
T=j;
|
|
@@ -67,8 +64,7 @@ Z++){let L=_[Z];
|
|
|
67
64
|
if(!L)continue;
|
|
68
65
|
let z=b.get(Z);
|
|
69
66
|
if(z){let H=z.dataset.id,w=String(L.id);
|
|
70
|
-
if(H!==w)p(z,N(L,Z,f)),z.dataset.id=w,z.style.height=`${A.getHeight(Z)}
|
|
71
|
-
px`;
|
|
67
|
+
if(H!==w)p(z,N(L,Z,f)),z.dataset.id=w,z.style.height=`${A.getHeight(Z)}px`;
|
|
72
68
|
if(c(z,Z),K)z.setAttribute("aria-setsize",T)}
|
|
73
69
|
else{let H=i(Z,L);
|
|
74
70
|
G.appendChild(H),Q.push({index:Z,element:H})}}
|
package/dist/core-light.js
CHANGED
|
@@ -22,15 +22,12 @@ return}
|
|
|
22
22
|
let j=W.indexAtOffset(B),Q=j,N=W.getOffset(j)-B;
|
|
23
23
|
while(Q<J-1&&N<K)N+=W.getHeight(Q),Q++;
|
|
24
24
|
G.start=j,G.end=Math.min(Q,J-1)},Kj=(B,K,W,J)=>{J.start=Math.max(0,B.start-K),J.end=Math.min(W-1,B.end+K)},Qj=0,Uj=(B)=>{let{item:K,items:W,overscan:J=3,classPrefix:G="vlist",ariaLabel:j}=B,{height:Q,template:N}=K,Z=W?[...W]:[],y=!1,H=0,O=null,h=`${G}-${Qj++}`,c=qj(B.container),$=Bj(c,G,j),D=jj(),F=e(Q,Z.length),b=Gj(),w=$.viewport.clientHeight,S={start:0,end:0},M={start:0,end:0},L={start:-1,end:-1},A=new Map,P={selected:!1,focused:!1},m=`${G}-item`,z="",v=(q,U)=>{if(typeof U==="string")q.innerHTML=U;
|
|
25
|
-
else q.replaceChildren(U)},I=(q,U)=>{q.style.transform=`translateY(${Math.round(F.getOffset(U))}
|
|
26
|
-
|
|
27
|
-
X.className=m,X.style.height=`${F.getHeight(q)}
|
|
28
|
-
px`,X.dataset.index=String(q),X.dataset.id=String(U.id),X.ariaSelected="false",X.id=`${h}-item-${q}`,z=String(Z.length),X.setAttribute("aria-setsize",z),X.setAttribute("aria-posinset",String(q+1));
|
|
25
|
+
else q.replaceChildren(U)},I=(q,U)=>{q.style.transform=`translateY(${Math.round(F.getOffset(U))}px)`},d=(q,U)=>{let X=b.acquire();
|
|
26
|
+
X.className=m,X.style.height=`${F.getHeight(q)}px`,X.dataset.index=String(q),X.dataset.id=String(U.id),X.ariaSelected="false",X.id=`${h}-item-${q}`,z=String(Z.length),X.setAttribute("aria-setsize",z),X.setAttribute("aria-posinset",String(q+1));
|
|
29
27
|
let V=U.id===O;
|
|
30
28
|
if(P.selected=V,V)X.classList.add(`${G}-item--selected`);
|
|
31
29
|
else X.classList.remove(`${G}-item--selected`);
|
|
32
|
-
return v(X,N(U,q,P)),I(X,q),X},f=()=>{$.content.style.height=`${F.getTotalHeight()}
|
|
33
|
-
px`},C=()=>{if(y)return;
|
|
30
|
+
return v(X,N(U,q,P)),I(X,q),X},f=()=>{$.content.style.height=`${F.getTotalHeight()}px`},C=()=>{if(y)return;
|
|
34
31
|
if(Jj(H,w,F,Z.length,S),Kj(S,J,Z.length,M),M.start===L.start&&M.end===L.end)return;
|
|
35
32
|
let q=String(Z.length),U=q!==z;
|
|
36
33
|
z=q;
|
|
@@ -42,8 +39,7 @@ Y++){let k=Z[Y];
|
|
|
42
39
|
if(!k)continue;
|
|
43
40
|
let _=A.get(Y);
|
|
44
41
|
if(_){let T=_.dataset.id,p=String(k.id);
|
|
45
|
-
if(T!==p)v(_,N(k,Y,P)),_.dataset.id=p,_.style.height=`${F.getHeight(Y)}
|
|
46
|
-
px`;
|
|
42
|
+
if(T!==p)v(_,N(k,Y,P)),_.dataset.id=p,_.style.height=`${F.getHeight(Y)}px`;
|
|
47
43
|
let g=k.id===O;
|
|
48
44
|
if(P.selected=g,g)_.classList.add(`${G}-item--selected`);
|
|
49
45
|
else _.classList.remove(`${G}-item--selected`);
|
package/dist/grid/index.js
CHANGED
|
@@ -89,15 +89,11 @@ if(p<x&&!u.has(p)){let l=J.getHeight(R);
|
|
|
89
89
|
z+=l,u.add(p)}}
|
|
90
90
|
f=z}
|
|
91
91
|
else f=A(Z,U);
|
|
92
|
-
Q.style.transform=`translate(${Math.round(_)}
|
|
93
|
-
px, ${Math.round(f)}
|
|
94
|
-
px)`},v=(Q,Z)=>{let U=Q.dataset.id?.startsWith("__group_header"),L=U?P:j.getColumnWidth(P),E;
|
|
92
|
+
Q.style.transform=`translate(${Math.round(_)}px, ${Math.round(f)}px)`},v=(Q,Z)=>{let U=Q.dataset.id?.startsWith("__group_header"),L=U?P:j.getColumnWidth(P),E;
|
|
95
93
|
if(F||U)E=J.getHeight(Z)-j.gap;
|
|
96
94
|
else{let _=j.getRow(Z);
|
|
97
95
|
E=J.getHeight(_)-j.gap}
|
|
98
|
-
Q.style.width=`${L}
|
|
99
|
-
px`,Q.style.height=`${E}
|
|
100
|
-
px`},I=(Q,Z,U,L,E)=>{let _=b.acquire(),f=B(U,L);
|
|
96
|
+
Q.style.width=`${L}px`,Q.style.height=`${E}px`},I=(Q,Z,U,L,E)=>{let _=b.acquire(),f=B(U,L);
|
|
101
97
|
if(_.className=y,_.dataset.index=String(Q),_.dataset.id=String(Z.id),_.dataset.row=String(j.getRow(Q)),_.dataset.col=String(j.getCol(Q)),_.ariaSelected=String(U),O)_.id=`${O}-item-${Q}`;
|
|
102
98
|
if(G)K=String(G()),_.setAttribute("aria-setsize",K),_.setAttribute("aria-posinset",String(Q+1));
|
|
103
99
|
v(_,Q);
|
|
@@ -164,8 +160,7 @@ for(let A=0;
|
|
|
164
160
|
A<M;
|
|
165
161
|
A++)if(q.getCol(A)===0){let S=j.heightCache.getHeight(A);
|
|
166
162
|
V+=S}
|
|
167
|
-
j.heightCache.getTotalHeight=()=>V,j.dom.content.style.height=`${V}
|
|
168
|
-
px`,B()}),j.methods.set("updateGrid",(k)=>{if(k.columns!==void 0){if(!Number.isInteger(k.columns)||k.columns<1)throw Error("[vlist/builder] updateGrid: columns must be a positive integer >= 1");
|
|
163
|
+
j.heightCache.getTotalHeight=()=>V,j.dom.content.style.height=`${V}px`,B()}),j.methods.set("updateGrid",(k)=>{if(k.columns!==void 0){if(!Number.isInteger(k.columns)||k.columns<1)throw Error("[vlist/builder] updateGrid: columns must be a positive integer >= 1");
|
|
169
164
|
P.columns=k.columns}
|
|
170
165
|
if(k.gap!==void 0){if(k.gap<0)throw Error("[vlist/builder] updateGrid: gap must be non-negative");
|
|
171
166
|
P.gap=k.gap}
|
package/dist/groups/index.js
CHANGED
|
@@ -48,15 +48,11 @@ if(x<p&&!C.has(x)){let h=j.getHeight(f);
|
|
|
48
48
|
k+=h,C.add(x)}}
|
|
49
49
|
y=k}
|
|
50
50
|
else y=w(K,U);
|
|
51
|
-
N.style.transform=`translate(${Math.round(V)}
|
|
52
|
-
px, ${Math.round(y)}
|
|
53
|
-
px)`},I=(N,K)=>{let U=N.dataset.id?.startsWith("__group_header"),O=U?b:J.getColumnWidth(b),A;
|
|
51
|
+
N.style.transform=`translate(${Math.round(V)}px, ${Math.round(y)}px)`},I=(N,K)=>{let U=N.dataset.id?.startsWith("__group_header"),O=U?b:J.getColumnWidth(b),A;
|
|
54
52
|
if(G||U)A=j.getHeight(K)-J.gap;
|
|
55
53
|
else{let V=J.getRow(K);
|
|
56
54
|
A=j.getHeight(V)-J.gap}
|
|
57
|
-
N.style.width=`${O}
|
|
58
|
-
px`,N.style.height=`${A}
|
|
59
|
-
px`},u=(N,K,U,O,A)=>{let V=B.acquire(),y=L(U,O);
|
|
55
|
+
N.style.width=`${O}px`,N.style.height=`${A}px`},u=(N,K,U,O,A)=>{let V=B.acquire(),y=L(U,O);
|
|
60
56
|
if(V.className=F,V.dataset.index=String(N),V.dataset.id=String(K.id),V.dataset.row=String(J.getRow(N)),V.dataset.col=String(J.getCol(N)),V.ariaSelected=String(U),M)V.id=`${M}-item-${N}`;
|
|
61
57
|
if(X)E=String(X()),V.setAttribute("aria-setsize",E),V.setAttribute("aria-posinset",String(N+1));
|
|
62
58
|
I(V,N);
|
|
@@ -140,8 +136,7 @@ let P=Z.groups;
|
|
|
140
136
|
if(z<0||z>=P.length){q.textContent="";
|
|
141
137
|
return}
|
|
142
138
|
let L=P[z],F=J.headerTemplate(L.key,L.groupIndex),R=Z.getHeaderHeight(z);
|
|
143
|
-
if(q.style.height=`${R}
|
|
144
|
-
px`,typeof F==="string")q.innerHTML=F;
|
|
139
|
+
if(q.style.height=`${R}px`,typeof F==="string")q.innerHTML=F;
|
|
145
140
|
else q.replaceChildren(F)},b=(z)=>{let P=Z.groups;
|
|
146
141
|
if(P.length===0){Y();
|
|
147
142
|
return}
|
|
@@ -158,8 +153,7 @@ D(L);
|
|
|
158
153
|
let R=Z.getHeaderHeight(L),H=0,v=L+1;
|
|
159
154
|
if(v<P.length){let w=j.getOffset(P[v].headerLayoutIndex)-z;
|
|
160
155
|
if(w<R)H=w-R}
|
|
161
|
-
if(H!==B)B=H,q.style.transform=H===0?"":`translateY(${Math.round(H)}
|
|
162
|
-
px)`},G=()=>{if(M)return;
|
|
156
|
+
if(H!==B)B=H,q.style.transform=H===0?"":`translateY(${Math.round(H)}px)`},G=()=>{if(M)return;
|
|
163
157
|
M=!0,q.style.display=""},Y=()=>{if(!M)return;
|
|
164
158
|
M=!1,q.style.display="none",X=-1,B=0,q.style.transform=""},_=()=>{let z=X;
|
|
165
159
|
if(X=-1,z>=0)D(z)},E=()=>{q.remove(),X=-1,M=!1};
|
package/dist/index.js
CHANGED
|
@@ -72,11 +72,8 @@ return Math.floor(K*Q)}
|
|
|
72
72
|
return $.indexAtOffset(j)},rj=(j,$)=>{if(typeof $==="number")return j*$>L2;
|
|
73
73
|
return $.getTotalHeight()>L2},nj=(j)=>{if(j<=0)return 0;
|
|
74
74
|
return Math.floor(L2/j)},oj=(j,$)=>{let Q=M2(j,$);
|
|
75
|
-
if(!Q.isCompressed)return`No compression needed (${j} items, ${(Q.actualHeight/1e6).toFixed(2)}
|
|
76
|
-
M px)
|
|
77
|
-
return`Compressed to ${(Q.ratio*100).toFixed(1)}% (${j} items, ${(Q.actualHeight/1e6).toFixed(1)}
|
|
78
|
-
M px → ${(Q.virtualHeight/1e6).toFixed(1)}
|
|
79
|
-
M px virtual)`};
|
|
75
|
+
if(!Q.isCompressed)return`No compression needed (${j} items, ${(Q.actualHeight/1e6).toFixed(2)}M px)`;
|
|
76
|
+
return`Compressed to ${(Q.ratio*100).toFixed(1)}% (${j} items, ${(Q.actualHeight/1e6).toFixed(1)}M px → ${(Q.virtualHeight/1e6).toFixed(1)}M px virtual)`};
|
|
80
77
|
var t2=()=>{};
|
|
81
78
|
var b2=(j)=>{return j!==null&&typeof j==="object"&&j.__groupHeader===!0};
|
|
82
79
|
var ij={};
|
|
@@ -99,15 +96,11 @@ if(J2<Z2&&!d.has(J2)){let o=Q.getHeight(x);
|
|
|
99
96
|
k+=o,d.add(J2)}}
|
|
100
97
|
q2=k}
|
|
101
98
|
else q2=H(S,h);
|
|
102
|
-
b.style.transform=`translate(${Math.round(r)}
|
|
103
|
-
px, ${Math.round(q2)}
|
|
104
|
-
px)`},T=(b,S)=>{let h=b.dataset.id?.startsWith("__group_header"),m=h?U:J.getColumnWidth(U),s;
|
|
99
|
+
b.style.transform=`translate(${Math.round(r)}px, ${Math.round(q2)}px)`},T=(b,S)=>{let h=b.dataset.id?.startsWith("__group_header"),m=h?U:J.getColumnWidth(U),s;
|
|
105
100
|
if(_||h)s=Q.getHeight(S)-J.gap;
|
|
106
101
|
else{let r=J.getRow(S);
|
|
107
102
|
s=Q.getHeight(r)-J.gap}
|
|
108
|
-
b.style.width=`${m}
|
|
109
|
-
px`,b.style.height=`${s}
|
|
110
|
-
px`},g=(b,S,h,m,s)=>{let r=V.acquire(),q2=F(h,m);
|
|
103
|
+
b.style.width=`${m}px`,b.style.height=`${s}px`},g=(b,S,h,m,s)=>{let r=V.acquire(),q2=F(h,m);
|
|
111
104
|
if(r.className=O,r.dataset.index=String(b),r.dataset.id=String(S.id),r.dataset.row=String(J.getRow(b)),r.dataset.col=String(J.getCol(b)),r.ariaSelected=String(h),Z)r.id=`${Z}-item-${b}`;
|
|
112
105
|
if(q)W=String(q()),r.setAttribute("aria-setsize",W),r.setAttribute("aria-posinset",String(b+1));
|
|
113
106
|
T(r,b);
|
|
@@ -236,17 +229,11 @@ let x=null,J2=()=>x?x.getTotal():M.length,o=[],Q2=[],v=[],f=[],n=[],$2=[],c=new
|
|
|
236
229
|
else B.viewport.scrollTop=Y},A2=(Y=2)=>{let A=T.getTotalHeight();
|
|
237
230
|
return C+t>=A-Y},U2=!1,Y2,V2,B2=(Y,A,P,I,i)=>{tJ(Y,A,P,I,i)},G2=(Y,A,P,I,i)=>{return j4(Y,A,P,I,i)},D2=(Y,A)=>{if(typeof A==="string")Y.innerHTML=A;
|
|
238
231
|
else Y.replaceChildren(A)},F2=(Y,A)=>{let P=Math.round(T.getOffset(A));
|
|
239
|
-
if(Q)Y.style.transform=`translateX(${P}
|
|
240
|
-
px)
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
px`,G!=null)P.style.height=`${G}
|
|
245
|
-
px`}
|
|
246
|
-
else P.style.height=`${T.getHeight(Y)}
|
|
247
|
-
px`;
|
|
248
|
-
return P.dataset.index=String(Y),P.dataset.id=String(A.id),P.ariaSelected="false",P.id=`${W}-item-${Y}`,Z2=String(J2()),P.setAttribute("aria-setsize",Z2),P.setAttribute("aria-posinset",String(Y+1)),D2(P,F(A,Y,r)),F2(P,Y),P},w2=()=>{let Y=`${T.getTotalHeight()}
|
|
249
|
-
px`;
|
|
232
|
+
if(Q)Y.style.transform=`translateX(${P}px)`;
|
|
233
|
+
else Y.style.transform=`translateY(${P}px)`},FJ=(Y,A)=>{let P=g.acquire();
|
|
234
|
+
if(P.className=q2,Q){if(P.style.width=`${T.getHeight(Y)}px`,G!=null)P.style.height=`${G}px`}
|
|
235
|
+
else P.style.height=`${T.getHeight(Y)}px`;
|
|
236
|
+
return P.dataset.index=String(Y),P.dataset.id=String(A.id),P.ariaSelected="false",P.id=`${W}-item-${Y}`,Z2=String(J2()),P.setAttribute("aria-setsize",Z2),P.setAttribute("aria-posinset",String(Y+1)),D2(P,F(A,Y,r)),F2(P,Y),P},w2=()=>{let Y=`${T.getTotalHeight()}px`;
|
|
250
237
|
if(Q)B.content.style.width=Y;
|
|
251
238
|
else B.content.style.height=Y},Dj=new Set,Wj=-1,LJ=()=>{if(e)return;
|
|
252
239
|
let Y=J2();
|
|
@@ -261,10 +248,8 @@ a++){let N2=x?x.getItem(a):M[a];
|
|
|
261
248
|
if(!N2)continue;
|
|
262
249
|
let _2=s.get(a);
|
|
263
250
|
if(_2){let E2=_2.dataset.id,l2=String(N2.id);
|
|
264
|
-
if(E2!==l2)if(D2(_2,F(N2,a,r)),_2.dataset.id=l2,Q)_2.style.width=`${T.getHeight(a)}
|
|
265
|
-
px`;
|
|
266
|
-
else _2.style.height=`${T.getHeight(a)}
|
|
267
|
-
px`;
|
|
251
|
+
if(E2!==l2)if(D2(_2,F(N2,a,r)),_2.dataset.id=l2,Q)_2.style.width=`${T.getHeight(a)}px`;
|
|
252
|
+
else _2.style.height=`${T.getHeight(a)}px`;
|
|
268
253
|
F2(_2,a);
|
|
269
254
|
let s2=Dj.has(N2.id),uJ=a===Wj;
|
|
270
255
|
if(_2.classList.toggle(`${Z}-item--selected`,s2),_2.classList.toggle(`${Z}-item--focused`,uJ),_2.ariaSelected=s2?"true":"false",P)_2.setAttribute("aria-setsize",Z2)}
|
|
@@ -324,8 +309,7 @@ P<Y;
|
|
|
324
309
|
P++){let I=x.getItem(P);
|
|
325
310
|
if(I)A.push(I)}
|
|
326
311
|
return A}
|
|
327
|
-
return[...M]},getVirtualTotal(){return J2()},getCachedCompression(){return{isCompressed:!1,actualHeight:T.getTotalHeight(),virtualHeight:T.getTotalHeight(),ratio:1}},getCompressionContext(){return{scrollTop:C,totalItems:J2(),containerHeight:t,rangeStart:S.start}},renderIfNeeded(){Y2()},forceRender(){V2()},getRenderFns(){return{renderIfNeeded:Y2,forceRender:V2}},setRenderFns(Y,A){Y2=Y,V2=A},setVirtualTotalFn(Y){J2=Y},rebuildHeightCache(Y){T.rebuild(Y??J2())},setHeightConfig(Y){T=mj(Y,J2())},updateContentSize(Y){let A=`${Y}
|
|
328
|
-
px`;
|
|
312
|
+
return[...M]},getVirtualTotal(){return J2()},getCachedCompression(){return{isCompressed:!1,actualHeight:T.getTotalHeight(),virtualHeight:T.getTotalHeight(),ratio:1}},getCompressionContext(){return{scrollTop:C,totalItems:J2(),containerHeight:t,rangeStart:S.start}},renderIfNeeded(){Y2()},forceRender(){V2()},getRenderFns(){return{renderIfNeeded:Y2,forceRender:V2}},setRenderFns(Y,A){Y2=Y,V2=A},setVirtualTotalFn(Y){J2=Y},rebuildHeightCache(Y){T.rebuild(Y??J2())},setHeightConfig(Y){T=mj(Y,J2())},updateContentSize(Y){let A=`${Y}px`;
|
|
329
313
|
if(Q)B.content.style.width=A;
|
|
330
314
|
else B.content.style.height=A},updateCompressionMode(){},setVisibleRangeFn(Y){B2=Y},setScrollToPosFn(Y){G2=Y},setPositionElementFn(Y){F2=Y},setScrollFns(Y,A){X2=Y,K2=(P)=>{A(P),v2()}},setScrollTarget(Y){P2.removeEventListener("scroll",v2),P2=Y,P2.addEventListener("scroll",v2,{passive:!0})},getScrollTarget(){return P2},setContainerDimensions(Y){bJ=Y.width,PJ=Y.height,l=Y.width(),t=Y.height(),m.viewportState.containerHeight=t},disableViewportResize(){if(Nj)Nj=!1,_j.unobserve(B.viewport)}};
|
|
331
315
|
x={getState:()=>({total:M.length,cached:M.length,isLoading:!1,pendingRanges:[],error:void 0,hasMore:!1,cursor:void 0}),getTotal:()=>M.length,getCached:()=>M.length,getIsLoading:()=>!1,getHasMore:()=>!1,getStorage:()=>null,getPlaceholders:()=>null,getItem:(Y)=>M[Y],getItemById:(Y)=>{let A=k.get(Y);
|
|
@@ -500,8 +484,7 @@ for(let H=0;
|
|
|
500
484
|
H<R;
|
|
501
485
|
H++)if($.getCol(H)===0){let M=J.heightCache.getHeight(H);
|
|
502
486
|
B+=M}
|
|
503
|
-
J.heightCache.getTotalHeight=()=>B,J.dom.content.style.height=`${B}
|
|
504
|
-
px`,F()}),J.methods.set("updateGrid",(E)=>{if(E.columns!==void 0){if(!Number.isInteger(E.columns)||E.columns<1)throw Error("[vlist/builder] updateGrid: columns must be a positive integer >= 1");
|
|
487
|
+
J.heightCache.getTotalHeight=()=>B,J.dom.content.style.height=`${B}px`,F()}),J.methods.set("updateGrid",(E)=>{if(E.columns!==void 0){if(!Number.isInteger(E.columns)||E.columns<1)throw Error("[vlist/builder] updateGrid: columns must be a positive integer >= 1");
|
|
505
488
|
U.columns=E.columns}
|
|
506
489
|
if(E.gap!==void 0){if(E.gap<0)throw Error("[vlist/builder] updateGrid: gap must be non-negative");
|
|
507
490
|
U.gap=E.gap}
|
|
@@ -586,8 +569,7 @@ let G=$.groups;
|
|
|
586
569
|
if(N<0||N>=G.length){X.textContent="";
|
|
587
570
|
return}
|
|
588
571
|
let F=G[N],O=J.headerTemplate(F.key,F.groupIndex),y=$.getHeaderHeight(N);
|
|
589
|
-
if(X.style.height=`${y}
|
|
590
|
-
px`,typeof O==="string")X.innerHTML=O;
|
|
572
|
+
if(X.style.height=`${y}px`,typeof O==="string")X.innerHTML=O;
|
|
591
573
|
else X.replaceChildren(O)},U=(N)=>{let G=$.groups;
|
|
592
574
|
if(G.length===0){L();
|
|
593
575
|
return}
|
|
@@ -604,8 +586,7 @@ D(F);
|
|
|
604
586
|
let y=$.getHeaderHeight(F),E=0,R=F+1;
|
|
605
587
|
if(R<G.length){let H=Q.getOffset(G[R].headerLayoutIndex)-N;
|
|
606
588
|
if(H<y)E=H-y}
|
|
607
|
-
if(E!==V)V=E,X.style.transform=E===0?"":`translateY(${Math.round(E)}
|
|
608
|
-
px)`},_=()=>{if(Z)return;
|
|
589
|
+
if(E!==V)V=E,X.style.transform=E===0?"":`translateY(${Math.round(E)}px)`},_=()=>{if(Z)return;
|
|
609
590
|
Z=!0,X.style.display=""},L=()=>{if(!Z)return;
|
|
610
591
|
Z=!1,X.style.display="none",q=-1,V=0,X.style.transform=""},z=()=>{let N=q;
|
|
611
592
|
if(q=-1,N>=0)D(N)},W=()=>{X.remove(),q=-1,Z=!1};
|
|
@@ -676,15 +657,7 @@ _(),z()},N=()=>{if(X.state.isDestroyed)return;
|
|
|
676
657
|
L(),z()};
|
|
677
658
|
X.setRenderFns(W,N);
|
|
678
659
|
let G=()=>{z(),Z.emit("selection:change",{selected:R2(J),items:T2(J,(O)=>X.dataManager.getItemById(O))})};
|
|
679
|
-
K=document.createElement("div"),K.setAttribute("aria-live","polite"),K.setAttribute("aria-atomic","true"),K.className=`${D}-live-region`,K.style.cssText="position:absolute;
|
|
680
|
-
width:1px;
|
|
681
|
-
height:1px;
|
|
682
|
-
padding:0;
|
|
683
|
-
margin:-1px;
|
|
684
|
-
overflow:hidden;
|
|
685
|
-
clip:rect(0,0,0,0);
|
|
686
|
-
white-space:nowrap;
|
|
687
|
-
border:0",q.root.appendChild(K);
|
|
660
|
+
K=document.createElement("div"),K.setAttribute("aria-live","polite"),K.setAttribute("aria-atomic","true"),K.className=`${D}-live-region`,K.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",q.root.appendChild(K);
|
|
688
661
|
let F=K;
|
|
689
662
|
Z.on("selection:change",({selected:O})=>{let y=O.length;
|
|
690
663
|
if(y===0)F.textContent="";
|
|
@@ -727,10 +700,8 @@ let{renderRange:O,isCompressed:y}=X.state.viewportState,E=X.getItemsForRange(O),
|
|
|
727
700
|
X.renderer.render(E,O,J.selected,J.focusedIndex,R),Z.emit("selection:change",{selected:[],items:[]})}),X.methods.set("getSelected",()=>{return R2(J)}),X.methods.set("getSelectedItems",()=>{return T2(J,(O)=>X.dataManager.getItemById(O))}),X.destroyHandlers.push(()=>{if(F&&F.parentNode)F.remove()})},destroy(){if(K&&K.parentNode)K.remove();
|
|
728
701
|
K=null}}};
|
|
729
702
|
var C2=(j,$,Q={},J="vlist",K=!1)=>{let{autoHide:X=!0,autoHideDelay:q=1000,minThumbSize:Z=30,showOnHover:V=!0,hoverZoneWidth:D=16,showOnViewportEnter:U=!0}=Q,_=0,L=0,z=0,W=0,N=!1,G=!1,F=0,O=0,y=0,E=null,R=!1,B=null,H=null,M=K?"width":"height",T=K?"translateX":"translateY",g=K?(o)=>o.clientX:(o)=>o.clientY,t=K?"left":"top",l=document.createElement("div"),e=document.createElement("div"),j2=V?document.createElement("div"):null,C=()=>{if(l.className=`${J}-scrollbar`,e.className=`${J}-scrollbar-thumb`,K)l.classList.add(`${J}-scrollbar--horizontal`);
|
|
730
|
-
if(l.appendChild(e),j.appendChild(l),j2){if(j2.className=`${J}-scrollbar-hover`,K)j2.classList.add(`${J}-scrollbar-hover--horizontal`),j2.style.height=`${D}
|
|
731
|
-
px`;
|
|
732
|
-
else j2.style.width=`${D}
|
|
733
|
-
px`;
|
|
703
|
+
if(l.appendChild(e),j.appendChild(l),j2){if(j2.className=`${J}-scrollbar-hover`,K)j2.classList.add(`${J}-scrollbar-hover--horizontal`),j2.style.height=`${D}px`;
|
|
704
|
+
else j2.style.width=`${D}px`;
|
|
734
705
|
j.appendChild(j2)}},w=()=>{if(E)clearTimeout(E),E=null},p=()=>{if(!X)return;
|
|
735
706
|
w(),E=setTimeout(b,q)},u=()=>{if(_<=L)return;
|
|
736
707
|
if(w(),!R)l.classList.add(`${J}-scrollbar--visible`),R=!0;
|
|
@@ -740,16 +711,13 @@ let v=_>L;
|
|
|
740
711
|
if(l.style.display=v?"":"none",!v){b();
|
|
741
712
|
return}
|
|
742
713
|
let f=L/_;
|
|
743
|
-
z=Math.max(Z,f*L),e.style[M]=`${z}
|
|
744
|
-
px`,W=L-z,h(y)},h=(o)=>{if(y=o,_<=L||W<=0)return;
|
|
714
|
+
z=Math.max(Z,f*L),e.style[M]=`${z}px`,W=L-z,h(y)},h=(o)=>{if(y=o,_<=L||W<=0)return;
|
|
745
715
|
let Q2=_-L,f=Math.min(1,Math.max(0,o/Q2))*W;
|
|
746
|
-
e.style.transform=`${T}(${f}
|
|
747
|
-
px)`},m=(o)=>{if(o.target===e)return;
|
|
716
|
+
e.style.transform=`${T}(${f}px)`},m=(o)=>{if(o.target===e)return;
|
|
748
717
|
let Q2=l.getBoundingClientRect(),n=g(o)-Q2[t]-z/2,c=Math.max(0,Math.min(n,W))/W,X2=_-L,K2=c*X2;
|
|
749
718
|
$(K2),u()},s=(o)=>{o.preventDefault(),o.stopPropagation(),N=!0,F=g(o),O=y,w(),l.classList.add(`${J}-scrollbar--dragging`),document.addEventListener("mousemove",r),document.addEventListener("mouseup",q2)},r=(o)=>{if(!N)return;
|
|
750
719
|
let Q2=g(o)-F,v=W>0?Q2/W:0,f=_-L,n=v*f,$2=Math.max(0,Math.min(O+n,f)),X2=$2/f*W;
|
|
751
|
-
if(e.style.transform=`${T}(${X2}
|
|
752
|
-
px)`,H=$2,B===null)B=requestAnimationFrame(()=>{if(H!==null)$(H);
|
|
720
|
+
if(e.style.transform=`${T}(${X2}px)`,H=$2,B===null)B=requestAnimationFrame(()=>{if(H!==null)$(H);
|
|
753
721
|
B=null})},q2=()=>{if(N=!1,B!==null)cancelAnimationFrame(B),B=null;
|
|
754
722
|
if(H!==null)$(H),H=null;
|
|
755
723
|
if(l.classList.remove(`${J}-scrollbar--dragging`),X&&!G)p();
|
|
@@ -867,13 +835,9 @@ return D()},J.setVisibleRangeFn((U,_,L,z,W)=>{let N=M2(z,L);
|
|
|
867
835
|
o2(U,_,L,z,N,W)}),J.setScrollToPosFn((U,_,L,z,W)=>{let N=M2(z,_);
|
|
868
836
|
return i2(U,_,L,z,N,W)}),J.setPositionElementFn((U,_)=>{let L=J.getVirtualTotal(),z=M2(L,J.heightCache);
|
|
869
837
|
if(z.isCompressed){let W=Math.round(H2(_,J.scrollController.getScrollTop(),J.heightCache,L,J.state.viewportState.containerHeight,z)),N=J.config.horizontal;
|
|
870
|
-
U.style.transform=N?`translateX(${W}
|
|
871
|
-
px)`:`translateY(${W}
|
|
872
|
-
px)`}
|
|
838
|
+
U.style.transform=N?`translateX(${W}px)`:`translateY(${W}px)`}
|
|
873
839
|
else{let W=Math.round(J.heightCache.getOffset(_)),N=J.config.horizontal;
|
|
874
|
-
U.style.transform=N?`translateX(${W}
|
|
875
|
-
px)`:`translateY(${W}
|
|
876
|
-
px)`}}),V(),J.destroyHandlers.push(()=>{if(j)j.destroy(),j=null})},destroy(){if(j)j.destroy(),j=null}}};
|
|
840
|
+
U.style.transform=N?`translateX(${W}px)`:`translateY(${W}px)`}}),V(),J.destroyHandlers.push(()=>{if(j)j.destroy(),j=null})},destroy(){if(j)j.destroy(),j=null}}};
|
|
877
841
|
var GJ=()=>{return{name:"withSnapshots",priority:50,methods:["getScrollSnapshot","restoreScroll"],setup(j){j.methods.set("getScrollSnapshot",()=>{let $=j.scrollController.getScrollTop(),Q=j.getCachedCompression(),J=j.getVirtualTotal(),K=j.methods.get("getSelected"),X=K&&K().length>0?K():void 0;
|
|
878
842
|
if(J===0){let D={index:0,offsetInItem:0};
|
|
879
843
|
if(X)D.selectedIds=X;
|
package/dist/react/index.js
CHANGED
|
@@ -70,15 +70,11 @@ if(Qj<Bj&&!Yj.has(Qj)){let t=Q.getHeight(n);
|
|
|
70
70
|
x+=t,Yj.add(Qj)}}
|
|
71
71
|
Xj=x}
|
|
72
72
|
else Xj=w(T,u);
|
|
73
|
-
z.style.transform=`translate(${Math.round(a)}
|
|
74
|
-
px, ${Math.round(Xj)}
|
|
75
|
-
px)`},v=(z,T)=>{let u=z.dataset.id?.startsWith("__group_header"),h=u?U:j.getColumnWidth(U),l;
|
|
73
|
+
z.style.transform=`translate(${Math.round(a)}px, ${Math.round(Xj)}px)`},v=(z,T)=>{let u=z.dataset.id?.startsWith("__group_header"),h=u?U:j.getColumnWidth(U),l;
|
|
76
74
|
if(F||u)l=Q.getHeight(T)-j.gap;
|
|
77
75
|
else{let a=j.getRow(T);
|
|
78
76
|
l=Q.getHeight(a)-j.gap}
|
|
79
|
-
z.style.width=`${h}
|
|
80
|
-
px`,z.style.height=`${l}
|
|
81
|
-
px`},g=(z,T,u,h,l)=>{let a=E.acquire(),Xj=A(u,h);
|
|
77
|
+
z.style.width=`${h}px`,z.style.height=`${l}px`},g=(z,T,u,h,l)=>{let a=E.acquire(),Xj=A(u,h);
|
|
82
78
|
if(a.className=L,a.dataset.index=String(z),a.dataset.id=String(T.id),a.dataset.row=String(j.getRow(z)),a.dataset.col=String(j.getCol(z)),a.ariaSelected=String(u),Z)a.id=`${Z}-item-${z}`;
|
|
83
79
|
if(q)W=String(q()),a.setAttribute("aria-setsize",W),a.setAttribute("aria-posinset",String(z+1));
|
|
84
80
|
v(a,z);
|
|
@@ -209,17 +205,11 @@ let n=null,Qj=()=>n?n.getTotal():D.length,t=[],Jj=[],C=[],S=[],s=[],e=[],m=new M
|
|
|
209
205
|
else B.viewport.scrollTop=K},Mj=(K=2)=>{let V=v.getTotalHeight();
|
|
210
206
|
return H+o>=V-K},Uj=!1,Kj,_j,Zj=(K,V,P,f,r)=>{C2(K,V,P,f,r)},Gj=(K,V,P,f,r)=>{return f2(K,V,P,f,r)},Wj=(K,V)=>{if(typeof V==="string")K.innerHTML=V;
|
|
211
207
|
else K.replaceChildren(V)},Ej=(K,V)=>{let P=Math.round(v.getOffset(V));
|
|
212
|
-
if(Q)K.style.transform=`translateX(${P}
|
|
213
|
-
px)
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
px`,M!=null)P.style.height=`${M}
|
|
218
|
-
px`}
|
|
219
|
-
else P.style.height=`${v.getHeight(K)}
|
|
220
|
-
px`;
|
|
221
|
-
return P.dataset.index=String(K),P.dataset.id=String(V.id),P.ariaSelected="false",P.id=`${W}-item-${K}`,Bj=String(Qj()),P.setAttribute("aria-setsize",Bj),P.setAttribute("aria-posinset",String(K+1)),Wj(P,A(V,K,a)),Ej(P,K),P},bj=()=>{let K=`${v.getTotalHeight()}
|
|
222
|
-
px`;
|
|
208
|
+
if(Q)K.style.transform=`translateX(${P}px)`;
|
|
209
|
+
else K.style.transform=`translateY(${P}px)`},J2=(K,V)=>{let P=g.acquire();
|
|
210
|
+
if(P.className=Xj,Q){if(P.style.width=`${v.getHeight(K)}px`,M!=null)P.style.height=`${M}px`}
|
|
211
|
+
else P.style.height=`${v.getHeight(K)}px`;
|
|
212
|
+
return P.dataset.index=String(K),P.dataset.id=String(V.id),P.ariaSelected="false",P.id=`${W}-item-${K}`,Bj=String(Qj()),P.setAttribute("aria-setsize",Bj),P.setAttribute("aria-posinset",String(K+1)),Wj(P,A(V,K,a)),Ej(P,K),P},bj=()=>{let K=`${v.getTotalHeight()}px`;
|
|
223
213
|
if(Q)B.content.style.width=K;
|
|
224
214
|
else B.content.style.height=K},mj=new Set,gj=-1,$2=()=>{if(jj)return;
|
|
225
215
|
let K=Qj();
|
|
@@ -234,10 +224,8 @@ c++){let Vj=n?n.getItem(c):D[c];
|
|
|
234
224
|
if(!Vj)continue;
|
|
235
225
|
let Dj=l.get(c);
|
|
236
226
|
if(Dj){let Aj=Dj.dataset.id,Sj=String(Vj.id);
|
|
237
|
-
if(Aj!==Sj)if(Wj(Dj,A(Vj,c,a)),Dj.dataset.id=Sj,Q)Dj.style.width=`${v.getHeight(c)}
|
|
238
|
-
px`;
|
|
239
|
-
else Dj.style.height=`${v.getHeight(c)}
|
|
240
|
-
px`;
|
|
227
|
+
if(Aj!==Sj)if(Wj(Dj,A(Vj,c,a)),Dj.dataset.id=Sj,Q)Dj.style.width=`${v.getHeight(c)}px`;
|
|
228
|
+
else Dj.style.height=`${v.getHeight(c)}px`;
|
|
241
229
|
Ej(Dj,c);
|
|
242
230
|
let fj=mj.has(Vj.id),E2=c===gj;
|
|
243
231
|
if(Dj.classList.toggle(`${Z}-item--selected`,fj),Dj.classList.toggle(`${Z}-item--focused`,E2),Dj.ariaSelected=fj?"true":"false",P)Dj.setAttribute("aria-setsize",Bj)}
|
|
@@ -297,8 +285,7 @@ P<K;
|
|
|
297
285
|
P++){let f=n.getItem(P);
|
|
298
286
|
if(f)V.push(f)}
|
|
299
287
|
return V}
|
|
300
|
-
return[...D]},getVirtualTotal(){return Qj()},getCachedCompression(){return{isCompressed:!1,actualHeight:v.getTotalHeight(),virtualHeight:v.getTotalHeight(),ratio:1}},getCompressionContext(){return{scrollTop:H,totalItems:Qj(),containerHeight:o,rangeStart:T.start}},renderIfNeeded(){Kj()},forceRender(){_j()},getRenderFns(){return{renderIfNeeded:Kj,forceRender:_j}},setRenderFns(K,V){Kj=K,_j=V},setVirtualTotalFn(K){Qj=K},rebuildHeightCache(K){v.rebuild(K??Qj())},setHeightConfig(K){v=EJ(K,Qj())},updateContentSize(K){let V=`${K}
|
|
301
|
-
px`;
|
|
288
|
+
return[...D]},getVirtualTotal(){return Qj()},getCachedCompression(){return{isCompressed:!1,actualHeight:v.getTotalHeight(),virtualHeight:v.getTotalHeight(),ratio:1}},getCompressionContext(){return{scrollTop:H,totalItems:Qj(),containerHeight:o,rangeStart:T.start}},renderIfNeeded(){Kj()},forceRender(){_j()},getRenderFns(){return{renderIfNeeded:Kj,forceRender:_j}},setRenderFns(K,V){Kj=K,_j=V},setVirtualTotalFn(K){Qj=K},rebuildHeightCache(K){v.rebuild(K??Qj())},setHeightConfig(K){v=EJ(K,Qj())},updateContentSize(K){let V=`${K}px`;
|
|
302
289
|
if(Q)B.content.style.width=V;
|
|
303
290
|
else B.content.style.height=V},updateCompressionMode(){},setVisibleRangeFn(K){Zj=K},setScrollToPosFn(K){Gj=K},setPositionElementFn(K){Ej=K},setScrollFns(K,V){$j=K,qj=(P)=>{V(P),kj()}},setScrollTarget(K){Oj.removeEventListener("scroll",kj),Oj=K,Oj.addEventListener("scroll",kj,{passive:!0})},getScrollTarget(){return Oj},setContainerDimensions(K){q2=K.width,K2=K.height,d=K.width(),o=K.height(),h.viewportState.containerHeight=o},disableViewportResize(){if(dj)dj=!1,lj.unobserve(B.viewport)}};
|
|
304
291
|
n={getState:()=>({total:D.length,cached:D.length,isLoading:!1,pendingRanges:[],error:void 0,hasMore:!1,cursor:void 0}),getTotal:()=>D.length,getCached:()=>D.length,getIsLoading:()=>!1,getHasMore:()=>!1,getStorage:()=>null,getPlaceholders:()=>null,getItem:(K)=>D[K],getItemById:(K)=>{let V=x.get(K);
|
|
@@ -461,8 +448,7 @@ for(let w=0;
|
|
|
461
448
|
w<y;
|
|
462
449
|
w++)if(X.getCol(w)===0){let D=j.heightCache.getHeight(w);
|
|
463
450
|
B+=D}
|
|
464
|
-
j.heightCache.getTotalHeight=()=>B,j.dom.content.style.height=`${B}
|
|
465
|
-
px`,A()}),j.methods.set("updateGrid",(G)=>{if(G.columns!==void 0){if(!Number.isInteger(G.columns)||G.columns<1)throw Error("[vlist/builder] updateGrid: columns must be a positive integer >= 1");
|
|
451
|
+
j.heightCache.getTotalHeight=()=>B,j.dom.content.style.height=`${B}px`,A()}),j.methods.set("updateGrid",(G)=>{if(G.columns!==void 0){if(!Number.isInteger(G.columns)||G.columns<1)throw Error("[vlist/builder] updateGrid: columns must be a positive integer >= 1");
|
|
466
452
|
U.columns=G.columns}
|
|
467
453
|
if(G.gap!==void 0){if(G.gap<0)throw Error("[vlist/builder] updateGrid: gap must be non-negative");
|
|
468
454
|
U.gap=G.gap}
|
|
@@ -547,8 +533,7 @@ let M=X.groups;
|
|
|
547
533
|
if(N<0||N>=M.length){$.textContent="";
|
|
548
534
|
return}
|
|
549
535
|
let A=M[N],L=j.headerTemplate(A.key,A.groupIndex),k=X.getHeaderHeight(N);
|
|
550
|
-
if($.style.height=`${k}
|
|
551
|
-
px`,typeof L==="string")$.innerHTML=L;
|
|
536
|
+
if($.style.height=`${k}px`,typeof L==="string")$.innerHTML=L;
|
|
552
537
|
else $.replaceChildren(L)},U=(N)=>{let M=X.groups;
|
|
553
538
|
if(M.length===0){O();
|
|
554
539
|
return}
|
|
@@ -565,8 +550,7 @@ _(A);
|
|
|
565
550
|
let k=X.getHeaderHeight(A),G=0,y=A+1;
|
|
566
551
|
if(y<M.length){let w=Q.getOffset(M[y].headerLayoutIndex)-N;
|
|
567
552
|
if(w<k)G=w-k}
|
|
568
|
-
if(G!==E)E=G,$.style.transform=G===0?"":`translateY(${Math.round(G)}
|
|
569
|
-
px)`},F=()=>{if(Z)return;
|
|
553
|
+
if(G!==E)E=G,$.style.transform=G===0?"":`translateY(${Math.round(G)}px)`},F=()=>{if(Z)return;
|
|
570
554
|
Z=!0,$.style.display=""},O=()=>{if(!Z)return;
|
|
571
555
|
Z=!1,$.style.display="none",q=-1,E=0,$.style.transform=""},b=()=>{let N=q;
|
|
572
556
|
if(q=-1,N>=0)_(N)},W=()=>{$.remove(),q=-1,Z=!1};
|
|
@@ -637,15 +621,7 @@ F(),b()},N=()=>{if($.state.isDestroyed)return;
|
|
|
637
621
|
O(),b()};
|
|
638
622
|
$.setRenderFns(W,N);
|
|
639
623
|
let M=()=>{b(),Z.emit("selection:change",{selected:uj(j),items:hj(j,(L)=>$.dataManager.getItemById(L))})};
|
|
640
|
-
Y=document.createElement("div"),Y.setAttribute("aria-live","polite"),Y.setAttribute("aria-atomic","true"),Y.className=`${_}-live-region`,Y.style.cssText="position:absolute;
|
|
641
|
-
width:1px;
|
|
642
|
-
height:1px;
|
|
643
|
-
padding:0;
|
|
644
|
-
margin:-1px;
|
|
645
|
-
overflow:hidden;
|
|
646
|
-
clip:rect(0,0,0,0);
|
|
647
|
-
white-space:nowrap;
|
|
648
|
-
border:0",q.root.appendChild(Y);
|
|
624
|
+
Y=document.createElement("div"),Y.setAttribute("aria-live","polite"),Y.setAttribute("aria-atomic","true"),Y.className=`${_}-live-region`,Y.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",q.root.appendChild(Y);
|
|
649
625
|
let A=Y;
|
|
650
626
|
Z.on("selection:change",({selected:L})=>{let k=L.length;
|
|
651
627
|
if(k===0)A.textContent="";
|
|
@@ -688,10 +664,8 @@ let{renderRange:L,isCompressed:k}=$.state.viewportState,G=$.getItemsForRange(L),
|
|
|
688
664
|
$.renderer.render(G,L,j.selected,j.focusedIndex,y),Z.emit("selection:change",{selected:[],items:[]})}),$.methods.set("getSelected",()=>{return uj(j)}),$.methods.set("getSelectedItems",()=>{return hj(j,(L)=>$.dataManager.getItemById(L))}),$.destroyHandlers.push(()=>{if(A&&A.parentNode)A.remove()})},destroy(){if(Y&&Y.parentNode)Y.remove();
|
|
689
665
|
Y=null}}};
|
|
690
666
|
var Tj=(J,X,Q={},j="vlist",Y=!1)=>{let{autoHide:$=!0,autoHideDelay:q=1000,minThumbSize:Z=30,showOnHover:E=!0,hoverZoneWidth:_=16,showOnViewportEnter:U=!0}=Q,F=0,O=0,b=0,W=0,N=!1,M=!1,A=0,L=0,k=0,G=null,y=!1,B=null,w=null,D=Y?"width":"height",v=Y?"translateX":"translateY",g=Y?(t)=>t.clientX:(t)=>t.clientY,o=Y?"left":"top",d=document.createElement("div"),jj=document.createElement("div"),i=E?document.createElement("div"):null,H=()=>{if(d.className=`${j}-scrollbar`,jj.className=`${j}-scrollbar-thumb`,Y)d.classList.add(`${j}-scrollbar--horizontal`);
|
|
691
|
-
if(d.appendChild(jj),J.appendChild(d),i){if(i.className=`${j}-scrollbar-hover`,Y)i.classList.add(`${j}-scrollbar-hover--horizontal`),i.style.height=`${_}
|
|
692
|
-
px`;
|
|
693
|
-
else i.style.width=`${_}
|
|
694
|
-
px`;
|
|
667
|
+
if(d.appendChild(jj),J.appendChild(d),i){if(i.className=`${j}-scrollbar-hover`,Y)i.classList.add(`${j}-scrollbar-hover--horizontal`),i.style.height=`${_}px`;
|
|
668
|
+
else i.style.width=`${_}px`;
|
|
695
669
|
J.appendChild(i)}},R=()=>{if(G)clearTimeout(G),G=null},I=()=>{if(!$)return;
|
|
696
670
|
R(),G=setTimeout(z,q)},p=()=>{if(F<=O)return;
|
|
697
671
|
if(R(),!y)d.classList.add(`${j}-scrollbar--visible`),y=!0;
|
|
@@ -701,16 +675,13 @@ let C=F>O;
|
|
|
701
675
|
if(d.style.display=C?"":"none",!C){z();
|
|
702
676
|
return}
|
|
703
677
|
let S=O/F;
|
|
704
|
-
b=Math.max(Z,S*O),jj.style[D]=`${b}
|
|
705
|
-
px`,W=O-b,u(k)},u=(t)=>{if(k=t,F<=O||W<=0)return;
|
|
678
|
+
b=Math.max(Z,S*O),jj.style[D]=`${b}px`,W=O-b,u(k)},u=(t)=>{if(k=t,F<=O||W<=0)return;
|
|
706
679
|
let Jj=F-O,S=Math.min(1,Math.max(0,t/Jj))*W;
|
|
707
|
-
jj.style.transform=`${v}(${S}
|
|
708
|
-
px)`},h=(t)=>{if(t.target===jj)return;
|
|
680
|
+
jj.style.transform=`${v}(${S}px)`},h=(t)=>{if(t.target===jj)return;
|
|
709
681
|
let Jj=d.getBoundingClientRect(),s=g(t)-Jj[o]-b/2,m=Math.max(0,Math.min(s,W))/W,$j=F-O,qj=m*$j;
|
|
710
682
|
X(qj),p()},l=(t)=>{t.preventDefault(),t.stopPropagation(),N=!0,A=g(t),L=k,R(),d.classList.add(`${j}-scrollbar--dragging`),document.addEventListener("mousemove",a),document.addEventListener("mouseup",Xj)},a=(t)=>{if(!N)return;
|
|
711
683
|
let Jj=g(t)-A,C=W>0?Jj/W:0,S=F-O,s=C*S,e=Math.max(0,Math.min(L+s,S)),$j=e/S*W;
|
|
712
|
-
if(jj.style.transform=`${v}(${$j}
|
|
713
|
-
px)`,w=e,B===null)B=requestAnimationFrame(()=>{if(w!==null)X(w);
|
|
684
|
+
if(jj.style.transform=`${v}(${$j}px)`,w=e,B===null)B=requestAnimationFrame(()=>{if(w!==null)X(w);
|
|
714
685
|
B=null})},Xj=()=>{if(N=!1,B!==null)cancelAnimationFrame(B),B=null;
|
|
715
686
|
if(w!==null)X(w),w=null;
|
|
716
687
|
if(d.classList.remove(`${j}-scrollbar--dragging`),$&&!M)I();
|
|
@@ -751,13 +722,9 @@ return _()},j.setVisibleRangeFn((U,F,O,b,W)=>{let N=Fj(b,O);
|
|
|
751
722
|
bJ(U,F,O,b,N,W)}),j.setScrollToPosFn((U,F,O,b,W)=>{let N=Fj(b,F);
|
|
752
723
|
return kJ(U,F,O,b,N,W)}),j.setPositionElementFn((U,F)=>{let O=j.getVirtualTotal(),b=Fj(O,j.heightCache);
|
|
753
724
|
if(b.isCompressed){let W=Math.round(Ij(F,j.scrollController.getScrollTop(),j.heightCache,O,j.state.viewportState.containerHeight,b)),N=j.config.horizontal;
|
|
754
|
-
U.style.transform=N?`translateX(${W}
|
|
755
|
-
px)`:`translateY(${W}
|
|
756
|
-
px)`}
|
|
725
|
+
U.style.transform=N?`translateX(${W}px)`:`translateY(${W}px)`}
|
|
757
726
|
else{let W=Math.round(j.heightCache.getOffset(F)),N=j.config.horizontal;
|
|
758
|
-
U.style.transform=N?`translateX(${W}
|
|
759
|
-
px)`:`translateY(${W}
|
|
760
|
-
px)`}}),E(),j.destroyHandlers.push(()=>{if(J)J.destroy(),J=null})},destroy(){if(J)J.destroy(),J=null}}};
|
|
727
|
+
U.style.transform=N?`translateX(${W}px)`:`translateY(${W}px)`}}),E(),j.destroyHandlers.push(()=>{if(J)J.destroy(),J=null})},destroy(){if(J)J.destroy(),J=null}}};
|
|
761
728
|
var rJ=()=>{return{name:"withSnapshots",priority:50,methods:["getScrollSnapshot","restoreScroll"],setup(J){J.methods.set("getScrollSnapshot",()=>{let X=J.scrollController.getScrollTop(),Q=J.getCachedCompression(),j=J.getVirtualTotal(),Y=J.methods.get("getSelected"),$=Y&&Y().length>0?Y():void 0;
|
|
762
729
|
if(j===0){let _={index:0,offsetInItem:0};
|
|
763
730
|
if($)_.selectedIds=$;
|
package/dist/scroll/index.js
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
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`;
|
|
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}px`;
|
|
3
|
+
else A.style.width=`${X}px`;
|
|
6
4
|
j.appendChild(A)}},T=()=>{if(I)clearTimeout(I),I=null},P=()=>{if(!E)return;
|
|
7
5
|
T(),I=setTimeout(d,D)},k=()=>{if(Q<=U)return;
|
|
8
6
|
if(T(),!p)L.classList.add(`${_}-scrollbar--visible`),p=!0;
|
|
@@ -12,16 +10,13 @@ let m=Q>U;
|
|
|
12
10
|
if(L.style.display=m?"":"none",!m){d();
|
|
13
11
|
return}
|
|
14
12
|
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;
|
|
13
|
+
W=Math.max(H,z*U),C.style[S]=`${W}px`,N=U-W,s(h)},s=(B)=>{if(h=B,Q<=U||N<=0)return;
|
|
17
14
|
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;
|
|
15
|
+
C.style.transform=`${x}(${z}px)`},c=(B)=>{if(B.target===C)return;
|
|
20
16
|
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
17
|
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
18
|
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);
|
|
19
|
+
if(C.style.transform=`${x}(${jj}px)`,M=e,R===null)R=requestAnimationFrame(()=>{if(M!==null)J(M);
|
|
25
20
|
R=null})},v=()=>{if(O=!1,R!==null)cancelAnimationFrame(R),R=null;
|
|
26
21
|
if(M!==null)J(M),M=null;
|
|
27
22
|
if(L.classList.remove(`${_}-scrollbar--dragging`),E&&!q)P();
|
package/dist/selection/index.js
CHANGED
|
@@ -51,15 +51,7 @@ W(),b()},I=()=>{if(q.state.isDestroyed)return;
|
|
|
51
51
|
g(),b()};
|
|
52
52
|
q.setRenderFns(x,I);
|
|
53
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);
|
|
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;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0",X.root.appendChild(J);
|
|
63
55
|
let z=J;
|
|
64
56
|
U.on("selection:change",({selected:K})=>{let Q=K.length;
|
|
65
57
|
if(Q===0)z.textContent="";
|
package/dist/svelte/index.js
CHANGED
|
@@ -70,15 +70,11 @@ if($j<Bj&&!Yj.has($j)){let t=$.getHeight(n);
|
|
|
70
70
|
x+=t,Yj.add($j)}}
|
|
71
71
|
Xj=x}
|
|
72
72
|
else Xj=T(R,u);
|
|
73
|
-
z.style.transform=`translate(${Math.round(a)}
|
|
74
|
-
px, ${Math.round(Xj)}
|
|
75
|
-
px)`},w=(z,R)=>{let u=z.dataset.id?.startsWith("__group_header"),h=u?U:j.getColumnWidth(U),c;
|
|
73
|
+
z.style.transform=`translate(${Math.round(a)}px, ${Math.round(Xj)}px)`},w=(z,R)=>{let u=z.dataset.id?.startsWith("__group_header"),h=u?U:j.getColumnWidth(U),c;
|
|
76
74
|
if(F||u)c=$.getHeight(R)-j.gap;
|
|
77
75
|
else{let a=j.getRow(R);
|
|
78
76
|
c=$.getHeight(a)-j.gap}
|
|
79
|
-
z.style.width=`${h}
|
|
80
|
-
px`,z.style.height=`${c}
|
|
81
|
-
px`},g=(z,R,u,h,c)=>{let a=E.acquire(),Xj=A(u,h);
|
|
77
|
+
z.style.width=`${h}px`,z.style.height=`${c}px`},g=(z,R,u,h,c)=>{let a=E.acquire(),Xj=A(u,h);
|
|
82
78
|
if(a.className=L,a.dataset.index=String(z),a.dataset.id=String(R.id),a.dataset.row=String(j.getRow(z)),a.dataset.col=String(j.getCol(z)),a.ariaSelected=String(u),Z)a.id=`${Z}-item-${z}`;
|
|
83
79
|
if(q)W=String(q()),a.setAttribute("aria-setsize",W),a.setAttribute("aria-posinset",String(z+1));
|
|
84
80
|
w(a,z);
|
|
@@ -207,17 +203,11 @@ let n=null,$j=()=>n?n.getTotal():V.length,t=[],Jj=[],C=[],S=[],s=[],e=[],m=new M
|
|
|
207
203
|
else B.viewport.scrollTop=K},Mj=(K=2)=>{let D=w.getTotalHeight();
|
|
208
204
|
return H+o>=D-K},Uj=!1,Kj,_j,Zj=(K,D,P,f,r)=>{w2(K,D,P,f,r)},Gj=(K,D,P,f,r)=>{return C2(K,D,P,f,r)},Wj=(K,D)=>{if(typeof D==="string")K.innerHTML=D;
|
|
209
205
|
else K.replaceChildren(D)},Ej=(K,D)=>{let P=Math.round(w.getOffset(D));
|
|
210
|
-
if($)K.style.transform=`translateX(${P}
|
|
211
|
-
px)
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
px`,M!=null)P.style.height=`${M}
|
|
216
|
-
px`}
|
|
217
|
-
else P.style.height=`${w.getHeight(K)}
|
|
218
|
-
px`;
|
|
219
|
-
return P.dataset.index=String(K),P.dataset.id=String(D.id),P.ariaSelected="false",P.id=`${W}-item-${K}`,Bj=String($j()),P.setAttribute("aria-setsize",Bj),P.setAttribute("aria-posinset",String(K+1)),Wj(P,A(D,K,a)),Ej(P,K),P},bj=()=>{let K=`${w.getTotalHeight()}
|
|
220
|
-
px`;
|
|
206
|
+
if($)K.style.transform=`translateX(${P}px)`;
|
|
207
|
+
else K.style.transform=`translateY(${P}px)`},eJ=(K,D)=>{let P=g.acquire();
|
|
208
|
+
if(P.className=Xj,$){if(P.style.width=`${w.getHeight(K)}px`,M!=null)P.style.height=`${M}px`}
|
|
209
|
+
else P.style.height=`${w.getHeight(K)}px`;
|
|
210
|
+
return P.dataset.index=String(K),P.dataset.id=String(D.id),P.ariaSelected="false",P.id=`${W}-item-${K}`,Bj=String($j()),P.setAttribute("aria-setsize",Bj),P.setAttribute("aria-posinset",String(K+1)),Wj(P,A(D,K,a)),Ej(P,K),P},bj=()=>{let K=`${w.getTotalHeight()}px`;
|
|
221
211
|
if($)B.content.style.width=K;
|
|
222
212
|
else B.content.style.height=K},xj=new Set,mj=-1,j2=()=>{if(jj)return;
|
|
223
213
|
let K=$j();
|
|
@@ -232,10 +222,8 @@ l++){let Dj=n?n.getItem(l):V[l];
|
|
|
232
222
|
if(!Dj)continue;
|
|
233
223
|
let Vj=c.get(l);
|
|
234
224
|
if(Vj){let Aj=Vj.dataset.id,Cj=String(Dj.id);
|
|
235
|
-
if(Aj!==Cj)if(Wj(Vj,A(Dj,l,a)),Vj.dataset.id=Cj,$)Vj.style.width=`${w.getHeight(l)}
|
|
236
|
-
px`;
|
|
237
|
-
else Vj.style.height=`${w.getHeight(l)}
|
|
238
|
-
px`;
|
|
225
|
+
if(Aj!==Cj)if(Wj(Vj,A(Dj,l,a)),Vj.dataset.id=Cj,$)Vj.style.width=`${w.getHeight(l)}px`;
|
|
226
|
+
else Vj.style.height=`${w.getHeight(l)}px`;
|
|
239
227
|
Ej(Vj,l);
|
|
240
228
|
let Sj=xj.has(Dj.id),M2=l===mj;
|
|
241
229
|
if(Vj.classList.toggle(`${Z}-item--selected`,Sj),Vj.classList.toggle(`${Z}-item--focused`,M2),Vj.ariaSelected=Sj?"true":"false",P)Vj.setAttribute("aria-setsize",Bj)}
|
|
@@ -295,8 +283,7 @@ P<K;
|
|
|
295
283
|
P++){let f=n.getItem(P);
|
|
296
284
|
if(f)D.push(f)}
|
|
297
285
|
return D}
|
|
298
|
-
return[...V]},getVirtualTotal(){return $j()},getCachedCompression(){return{isCompressed:!1,actualHeight:w.getTotalHeight(),virtualHeight:w.getTotalHeight(),ratio:1}},getCompressionContext(){return{scrollTop:H,totalItems:$j(),containerHeight:o,rangeStart:R.start}},renderIfNeeded(){Kj()},forceRender(){_j()},getRenderFns(){return{renderIfNeeded:Kj,forceRender:_j}},setRenderFns(K,D){Kj=K,_j=D},setVirtualTotalFn(K){$j=K},rebuildHeightCache(K){w.rebuild(K??$j())},setHeightConfig(K){w=MJ(K,$j())},updateContentSize(K){let D=`${K}
|
|
299
|
-
px`;
|
|
286
|
+
return[...V]},getVirtualTotal(){return $j()},getCachedCompression(){return{isCompressed:!1,actualHeight:w.getTotalHeight(),virtualHeight:w.getTotalHeight(),ratio:1}},getCompressionContext(){return{scrollTop:H,totalItems:$j(),containerHeight:o,rangeStart:R.start}},renderIfNeeded(){Kj()},forceRender(){_j()},getRenderFns(){return{renderIfNeeded:Kj,forceRender:_j}},setRenderFns(K,D){Kj=K,_j=D},setVirtualTotalFn(K){$j=K},rebuildHeightCache(K){w.rebuild(K??$j())},setHeightConfig(K){w=MJ(K,$j())},updateContentSize(K){let D=`${K}px`;
|
|
300
287
|
if($)B.content.style.width=D;
|
|
301
288
|
else B.content.style.height=D},updateCompressionMode(){},setVisibleRangeFn(K){Zj=K},setScrollToPosFn(K){Gj=K},setPositionElementFn(K){Ej=K},setScrollFns(K,D){Qj=K,qj=(P)=>{D(P),kj()}},setScrollTarget(K){Oj.removeEventListener("scroll",kj),Oj=K,Oj.addEventListener("scroll",kj,{passive:!0})},getScrollTarget(){return Oj},setContainerDimensions(K){$2=K.width,X2=K.height,d=K.width(),o=K.height(),h.viewportState.containerHeight=o},disableViewportResize(){if(gj)gj=!1,dj.unobserve(B.viewport)}};
|
|
302
289
|
n={getState:()=>({total:V.length,cached:V.length,isLoading:!1,pendingRanges:[],error:void 0,hasMore:!1,cursor:void 0}),getTotal:()=>V.length,getCached:()=>V.length,getIsLoading:()=>!1,getHasMore:()=>!1,getStorage:()=>null,getPlaceholders:()=>null,getItem:(K)=>V[K],getItemById:(K)=>{let D=x.get(K);
|
|
@@ -459,8 +446,7 @@ for(let T=0;
|
|
|
459
446
|
T<y;
|
|
460
447
|
T++)if(X.getCol(T)===0){let V=j.heightCache.getHeight(T);
|
|
461
448
|
B+=V}
|
|
462
|
-
j.heightCache.getTotalHeight=()=>B,j.dom.content.style.height=`${B}
|
|
463
|
-
px`,A()}),j.methods.set("updateGrid",(G)=>{if(G.columns!==void 0){if(!Number.isInteger(G.columns)||G.columns<1)throw Error("[vlist/builder] updateGrid: columns must be a positive integer >= 1");
|
|
449
|
+
j.heightCache.getTotalHeight=()=>B,j.dom.content.style.height=`${B}px`,A()}),j.methods.set("updateGrid",(G)=>{if(G.columns!==void 0){if(!Number.isInteger(G.columns)||G.columns<1)throw Error("[vlist/builder] updateGrid: columns must be a positive integer >= 1");
|
|
464
450
|
U.columns=G.columns}
|
|
465
451
|
if(G.gap!==void 0){if(G.gap<0)throw Error("[vlist/builder] updateGrid: gap must be non-negative");
|
|
466
452
|
U.gap=G.gap}
|
|
@@ -545,8 +531,7 @@ let M=X.groups;
|
|
|
545
531
|
if(N<0||N>=M.length){Q.textContent="";
|
|
546
532
|
return}
|
|
547
533
|
let A=M[N],L=j.headerTemplate(A.key,A.groupIndex),k=X.getHeaderHeight(N);
|
|
548
|
-
if(Q.style.height=`${k}
|
|
549
|
-
px`,typeof L==="string")Q.innerHTML=L;
|
|
534
|
+
if(Q.style.height=`${k}px`,typeof L==="string")Q.innerHTML=L;
|
|
550
535
|
else Q.replaceChildren(L)},U=(N)=>{let M=X.groups;
|
|
551
536
|
if(M.length===0){O();
|
|
552
537
|
return}
|
|
@@ -563,8 +548,7 @@ _(A);
|
|
|
563
548
|
let k=X.getHeaderHeight(A),G=0,y=A+1;
|
|
564
549
|
if(y<M.length){let T=$.getOffset(M[y].headerLayoutIndex)-N;
|
|
565
550
|
if(T<k)G=T-k}
|
|
566
|
-
if(G!==E)E=G,Q.style.transform=G===0?"":`translateY(${Math.round(G)}
|
|
567
|
-
px)`},F=()=>{if(Z)return;
|
|
551
|
+
if(G!==E)E=G,Q.style.transform=G===0?"":`translateY(${Math.round(G)}px)`},F=()=>{if(Z)return;
|
|
568
552
|
Z=!0,Q.style.display=""},O=()=>{if(!Z)return;
|
|
569
553
|
Z=!1,Q.style.display="none",q=-1,E=0,Q.style.transform=""},b=()=>{let N=q;
|
|
570
554
|
if(q=-1,N>=0)_(N)},W=()=>{Q.remove(),q=-1,Z=!1};
|
|
@@ -635,15 +619,7 @@ F(),b()},N=()=>{if(Q.state.isDestroyed)return;
|
|
|
635
619
|
O(),b()};
|
|
636
620
|
Q.setRenderFns(W,N);
|
|
637
621
|
let M=()=>{b(),Z.emit("selection:change",{selected:pj(j),items:uj(j,(L)=>Q.dataManager.getItemById(L))})};
|
|
638
|
-
Y=document.createElement("div"),Y.setAttribute("aria-live","polite"),Y.setAttribute("aria-atomic","true"),Y.className=`${_}-live-region`,Y.style.cssText="position:absolute;
|
|
639
|
-
width:1px;
|
|
640
|
-
height:1px;
|
|
641
|
-
padding:0;
|
|
642
|
-
margin:-1px;
|
|
643
|
-
overflow:hidden;
|
|
644
|
-
clip:rect(0,0,0,0);
|
|
645
|
-
white-space:nowrap;
|
|
646
|
-
border:0",q.root.appendChild(Y);
|
|
622
|
+
Y=document.createElement("div"),Y.setAttribute("aria-live","polite"),Y.setAttribute("aria-atomic","true"),Y.className=`${_}-live-region`,Y.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",q.root.appendChild(Y);
|
|
647
623
|
let A=Y;
|
|
648
624
|
Z.on("selection:change",({selected:L})=>{let k=L.length;
|
|
649
625
|
if(k===0)A.textContent="";
|
|
@@ -686,10 +662,8 @@ let{renderRange:L,isCompressed:k}=Q.state.viewportState,G=Q.getItemsForRange(L),
|
|
|
686
662
|
Q.renderer.render(G,L,j.selected,j.focusedIndex,y),Z.emit("selection:change",{selected:[],items:[]})}),Q.methods.set("getSelected",()=>{return pj(j)}),Q.methods.set("getSelectedItems",()=>{return uj(j,(L)=>Q.dataManager.getItemById(L))}),Q.destroyHandlers.push(()=>{if(A&&A.parentNode)A.remove()})},destroy(){if(Y&&Y.parentNode)Y.remove();
|
|
687
663
|
Y=null}}};
|
|
688
664
|
var Rj=(J,X,$={},j="vlist",Y=!1)=>{let{autoHide:Q=!0,autoHideDelay:q=1000,minThumbSize:Z=30,showOnHover:E=!0,hoverZoneWidth:_=16,showOnViewportEnter:U=!0}=$,F=0,O=0,b=0,W=0,N=!1,M=!1,A=0,L=0,k=0,G=null,y=!1,B=null,T=null,V=Y?"width":"height",w=Y?"translateX":"translateY",g=Y?(t)=>t.clientX:(t)=>t.clientY,o=Y?"left":"top",d=document.createElement("div"),jj=document.createElement("div"),i=E?document.createElement("div"):null,H=()=>{if(d.className=`${j}-scrollbar`,jj.className=`${j}-scrollbar-thumb`,Y)d.classList.add(`${j}-scrollbar--horizontal`);
|
|
689
|
-
if(d.appendChild(jj),J.appendChild(d),i){if(i.className=`${j}-scrollbar-hover`,Y)i.classList.add(`${j}-scrollbar-hover--horizontal`),i.style.height=`${_}
|
|
690
|
-
px`;
|
|
691
|
-
else i.style.width=`${_}
|
|
692
|
-
px`;
|
|
665
|
+
if(d.appendChild(jj),J.appendChild(d),i){if(i.className=`${j}-scrollbar-hover`,Y)i.classList.add(`${j}-scrollbar-hover--horizontal`),i.style.height=`${_}px`;
|
|
666
|
+
else i.style.width=`${_}px`;
|
|
693
667
|
J.appendChild(i)}},v=()=>{if(G)clearTimeout(G),G=null},I=()=>{if(!Q)return;
|
|
694
668
|
v(),G=setTimeout(z,q)},p=()=>{if(F<=O)return;
|
|
695
669
|
if(v(),!y)d.classList.add(`${j}-scrollbar--visible`),y=!0;
|
|
@@ -699,16 +673,13 @@ let C=F>O;
|
|
|
699
673
|
if(d.style.display=C?"":"none",!C){z();
|
|
700
674
|
return}
|
|
701
675
|
let S=O/F;
|
|
702
|
-
b=Math.max(Z,S*O),jj.style[V]=`${b}
|
|
703
|
-
px`,W=O-b,u(k)},u=(t)=>{if(k=t,F<=O||W<=0)return;
|
|
676
|
+
b=Math.max(Z,S*O),jj.style[V]=`${b}px`,W=O-b,u(k)},u=(t)=>{if(k=t,F<=O||W<=0)return;
|
|
704
677
|
let Jj=F-O,S=Math.min(1,Math.max(0,t/Jj))*W;
|
|
705
|
-
jj.style.transform=`${w}(${S}
|
|
706
|
-
px)`},h=(t)=>{if(t.target===jj)return;
|
|
678
|
+
jj.style.transform=`${w}(${S}px)`},h=(t)=>{if(t.target===jj)return;
|
|
707
679
|
let Jj=d.getBoundingClientRect(),s=g(t)-Jj[o]-b/2,m=Math.max(0,Math.min(s,W))/W,Qj=F-O,qj=m*Qj;
|
|
708
680
|
X(qj),p()},c=(t)=>{t.preventDefault(),t.stopPropagation(),N=!0,A=g(t),L=k,v(),d.classList.add(`${j}-scrollbar--dragging`),document.addEventListener("mousemove",a),document.addEventListener("mouseup",Xj)},a=(t)=>{if(!N)return;
|
|
709
681
|
let Jj=g(t)-A,C=W>0?Jj/W:0,S=F-O,s=C*S,e=Math.max(0,Math.min(L+s,S)),Qj=e/S*W;
|
|
710
|
-
if(jj.style.transform=`${w}(${Qj}
|
|
711
|
-
px)`,T=e,B===null)B=requestAnimationFrame(()=>{if(T!==null)X(T);
|
|
682
|
+
if(jj.style.transform=`${w}(${Qj}px)`,T=e,B===null)B=requestAnimationFrame(()=>{if(T!==null)X(T);
|
|
712
683
|
B=null})},Xj=()=>{if(N=!1,B!==null)cancelAnimationFrame(B),B=null;
|
|
713
684
|
if(T!==null)X(T),T=null;
|
|
714
685
|
if(d.classList.remove(`${j}-scrollbar--dragging`),Q&&!M)I();
|
|
@@ -749,13 +720,9 @@ return _()},j.setVisibleRangeFn((U,F,O,b,W)=>{let N=Fj(b,O);
|
|
|
749
720
|
zJ(U,F,O,b,N,W)}),j.setScrollToPosFn((U,F,O,b,W)=>{let N=Fj(b,F);
|
|
750
721
|
return PJ(U,F,O,b,N,W)}),j.setPositionElementFn((U,F)=>{let O=j.getVirtualTotal(),b=Fj(O,j.heightCache);
|
|
751
722
|
if(b.isCompressed){let W=Math.round(fj(F,j.scrollController.getScrollTop(),j.heightCache,O,j.state.viewportState.containerHeight,b)),N=j.config.horizontal;
|
|
752
|
-
U.style.transform=N?`translateX(${W}
|
|
753
|
-
px)`:`translateY(${W}
|
|
754
|
-
px)`}
|
|
723
|
+
U.style.transform=N?`translateX(${W}px)`:`translateY(${W}px)`}
|
|
755
724
|
else{let W=Math.round(j.heightCache.getOffset(F)),N=j.config.horizontal;
|
|
756
|
-
U.style.transform=N?`translateX(${W}
|
|
757
|
-
px)`:`translateY(${W}
|
|
758
|
-
px)`}}),E(),j.destroyHandlers.push(()=>{if(J)J.destroy(),J=null})},destroy(){if(J)J.destroy(),J=null}}};
|
|
725
|
+
U.style.transform=N?`translateX(${W}px)`:`translateY(${W}px)`}}),E(),j.destroyHandlers.push(()=>{if(J)J.destroy(),J=null})},destroy(){if(J)J.destroy(),J=null}}};
|
|
759
726
|
var lJ=()=>{return{name:"withSnapshots",priority:50,methods:["getScrollSnapshot","restoreScroll"],setup(J){J.methods.set("getScrollSnapshot",()=>{let X=J.scrollController.getScrollTop(),$=J.getCachedCompression(),j=J.getVirtualTotal(),Y=J.methods.get("getSelected"),Q=Y&&Y().length>0?Y():void 0;
|
|
760
727
|
if(j===0){let _={index:0,offsetInItem:0};
|
|
761
728
|
if(Q)_.selectedIds=Q;
|
package/dist/vue/index.js
CHANGED
|
@@ -70,15 +70,11 @@ if(Qj<Bj&&!Yj.has(Qj)){let t=Q.getHeight(n);
|
|
|
70
70
|
x+=t,Yj.add(Qj)}}
|
|
71
71
|
Xj=x}
|
|
72
72
|
else Xj=w(T,u);
|
|
73
|
-
z.style.transform=`translate(${Math.round(a)}
|
|
74
|
-
px, ${Math.round(Xj)}
|
|
75
|
-
px)`},R=(z,T)=>{let u=z.dataset.id?.startsWith("__group_header"),h=u?U:j.getColumnWidth(U),l;
|
|
73
|
+
z.style.transform=`translate(${Math.round(a)}px, ${Math.round(Xj)}px)`},R=(z,T)=>{let u=z.dataset.id?.startsWith("__group_header"),h=u?U:j.getColumnWidth(U),l;
|
|
76
74
|
if(F||u)l=Q.getHeight(T)-j.gap;
|
|
77
75
|
else{let a=j.getRow(T);
|
|
78
76
|
l=Q.getHeight(a)-j.gap}
|
|
79
|
-
z.style.width=`${h}
|
|
80
|
-
px`,z.style.height=`${l}
|
|
81
|
-
px`},g=(z,T,u,h,l)=>{let a=E.acquire(),Xj=A(u,h);
|
|
77
|
+
z.style.width=`${h}px`,z.style.height=`${l}px`},g=(z,T,u,h,l)=>{let a=E.acquire(),Xj=A(u,h);
|
|
82
78
|
if(a.className=L,a.dataset.index=String(z),a.dataset.id=String(T.id),a.dataset.row=String(j.getRow(z)),a.dataset.col=String(j.getCol(z)),a.ariaSelected=String(u),Z)a.id=`${Z}-item-${z}`;
|
|
83
79
|
if(q)W=String(q()),a.setAttribute("aria-setsize",W),a.setAttribute("aria-posinset",String(z+1));
|
|
84
80
|
R(a,z);
|
|
@@ -209,17 +205,11 @@ let n=null,Qj=()=>n?n.getTotal():D.length,t=[],Jj=[],C=[],S=[],s=[],e=[],m=new M
|
|
|
209
205
|
else B.viewport.scrollTop=K},Mj=(K=2)=>{let V=R.getTotalHeight();
|
|
210
206
|
return H+o>=V-K},Uj=!1,Kj,_j,Zj=(K,V,P,f,r)=>{C2(K,V,P,f,r)},Gj=(K,V,P,f,r)=>{return f2(K,V,P,f,r)},Wj=(K,V)=>{if(typeof V==="string")K.innerHTML=V;
|
|
211
207
|
else K.replaceChildren(V)},Ej=(K,V)=>{let P=Math.round(R.getOffset(V));
|
|
212
|
-
if(Q)K.style.transform=`translateX(${P}
|
|
213
|
-
px)
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
px`,M!=null)P.style.height=`${M}
|
|
218
|
-
px`}
|
|
219
|
-
else P.style.height=`${R.getHeight(K)}
|
|
220
|
-
px`;
|
|
221
|
-
return P.dataset.index=String(K),P.dataset.id=String(V.id),P.ariaSelected="false",P.id=`${W}-item-${K}`,Bj=String(Qj()),P.setAttribute("aria-setsize",Bj),P.setAttribute("aria-posinset",String(K+1)),Wj(P,A(V,K,a)),Ej(P,K),P},bj=()=>{let K=`${R.getTotalHeight()}
|
|
222
|
-
px`;
|
|
208
|
+
if(Q)K.style.transform=`translateX(${P}px)`;
|
|
209
|
+
else K.style.transform=`translateY(${P}px)`},J2=(K,V)=>{let P=g.acquire();
|
|
210
|
+
if(P.className=Xj,Q){if(P.style.width=`${R.getHeight(K)}px`,M!=null)P.style.height=`${M}px`}
|
|
211
|
+
else P.style.height=`${R.getHeight(K)}px`;
|
|
212
|
+
return P.dataset.index=String(K),P.dataset.id=String(V.id),P.ariaSelected="false",P.id=`${W}-item-${K}`,Bj=String(Qj()),P.setAttribute("aria-setsize",Bj),P.setAttribute("aria-posinset",String(K+1)),Wj(P,A(V,K,a)),Ej(P,K),P},bj=()=>{let K=`${R.getTotalHeight()}px`;
|
|
223
213
|
if(Q)B.content.style.width=K;
|
|
224
214
|
else B.content.style.height=K},xj=new Set,mj=-1,$2=()=>{if(jj)return;
|
|
225
215
|
let K=Qj();
|
|
@@ -234,10 +224,8 @@ c++){let Vj=n?n.getItem(c):D[c];
|
|
|
234
224
|
if(!Vj)continue;
|
|
235
225
|
let Dj=l.get(c);
|
|
236
226
|
if(Dj){let Aj=Dj.dataset.id,Cj=String(Vj.id);
|
|
237
|
-
if(Aj!==Cj)if(Wj(Dj,A(Vj,c,a)),Dj.dataset.id=Cj,Q)Dj.style.width=`${R.getHeight(c)}
|
|
238
|
-
px`;
|
|
239
|
-
else Dj.style.height=`${R.getHeight(c)}
|
|
240
|
-
px`;
|
|
227
|
+
if(Aj!==Cj)if(Wj(Dj,A(Vj,c,a)),Dj.dataset.id=Cj,Q)Dj.style.width=`${R.getHeight(c)}px`;
|
|
228
|
+
else Dj.style.height=`${R.getHeight(c)}px`;
|
|
241
229
|
Ej(Dj,c);
|
|
242
230
|
let Sj=xj.has(Vj.id),E2=c===mj;
|
|
243
231
|
if(Dj.classList.toggle(`${Z}-item--selected`,Sj),Dj.classList.toggle(`${Z}-item--focused`,E2),Dj.ariaSelected=Sj?"true":"false",P)Dj.setAttribute("aria-setsize",Bj)}
|
|
@@ -297,8 +285,7 @@ P<K;
|
|
|
297
285
|
P++){let f=n.getItem(P);
|
|
298
286
|
if(f)V.push(f)}
|
|
299
287
|
return V}
|
|
300
|
-
return[...D]},getVirtualTotal(){return Qj()},getCachedCompression(){return{isCompressed:!1,actualHeight:R.getTotalHeight(),virtualHeight:R.getTotalHeight(),ratio:1}},getCompressionContext(){return{scrollTop:H,totalItems:Qj(),containerHeight:o,rangeStart:T.start}},renderIfNeeded(){Kj()},forceRender(){_j()},getRenderFns(){return{renderIfNeeded:Kj,forceRender:_j}},setRenderFns(K,V){Kj=K,_j=V},setVirtualTotalFn(K){Qj=K},rebuildHeightCache(K){R.rebuild(K??Qj())},setHeightConfig(K){R=MJ(K,Qj())},updateContentSize(K){let V=`${K}
|
|
301
|
-
px`;
|
|
288
|
+
return[...D]},getVirtualTotal(){return Qj()},getCachedCompression(){return{isCompressed:!1,actualHeight:R.getTotalHeight(),virtualHeight:R.getTotalHeight(),ratio:1}},getCompressionContext(){return{scrollTop:H,totalItems:Qj(),containerHeight:o,rangeStart:T.start}},renderIfNeeded(){Kj()},forceRender(){_j()},getRenderFns(){return{renderIfNeeded:Kj,forceRender:_j}},setRenderFns(K,V){Kj=K,_j=V},setVirtualTotalFn(K){Qj=K},rebuildHeightCache(K){R.rebuild(K??Qj())},setHeightConfig(K){R=MJ(K,Qj())},updateContentSize(K){let V=`${K}px`;
|
|
302
289
|
if(Q)B.content.style.width=V;
|
|
303
290
|
else B.content.style.height=V},updateCompressionMode(){},setVisibleRangeFn(K){Zj=K},setScrollToPosFn(K){Gj=K},setPositionElementFn(K){Ej=K},setScrollFns(K,V){$j=K,qj=(P)=>{V(P),kj()}},setScrollTarget(K){Oj.removeEventListener("scroll",kj),Oj=K,Oj.addEventListener("scroll",kj,{passive:!0})},getScrollTarget(){return Oj},setContainerDimensions(K){q2=K.width,K2=K.height,d=K.width(),o=K.height(),h.viewportState.containerHeight=o},disableViewportResize(){if(gj)gj=!1,dj.unobserve(B.viewport)}};
|
|
304
291
|
n={getState:()=>({total:D.length,cached:D.length,isLoading:!1,pendingRanges:[],error:void 0,hasMore:!1,cursor:void 0}),getTotal:()=>D.length,getCached:()=>D.length,getIsLoading:()=>!1,getHasMore:()=>!1,getStorage:()=>null,getPlaceholders:()=>null,getItem:(K)=>D[K],getItemById:(K)=>{let V=x.get(K);
|
|
@@ -461,8 +448,7 @@ for(let w=0;
|
|
|
461
448
|
w<y;
|
|
462
449
|
w++)if(X.getCol(w)===0){let D=j.heightCache.getHeight(w);
|
|
463
450
|
B+=D}
|
|
464
|
-
j.heightCache.getTotalHeight=()=>B,j.dom.content.style.height=`${B}
|
|
465
|
-
px`,A()}),j.methods.set("updateGrid",(G)=>{if(G.columns!==void 0){if(!Number.isInteger(G.columns)||G.columns<1)throw Error("[vlist/builder] updateGrid: columns must be a positive integer >= 1");
|
|
451
|
+
j.heightCache.getTotalHeight=()=>B,j.dom.content.style.height=`${B}px`,A()}),j.methods.set("updateGrid",(G)=>{if(G.columns!==void 0){if(!Number.isInteger(G.columns)||G.columns<1)throw Error("[vlist/builder] updateGrid: columns must be a positive integer >= 1");
|
|
466
452
|
U.columns=G.columns}
|
|
467
453
|
if(G.gap!==void 0){if(G.gap<0)throw Error("[vlist/builder] updateGrid: gap must be non-negative");
|
|
468
454
|
U.gap=G.gap}
|
|
@@ -547,8 +533,7 @@ let M=X.groups;
|
|
|
547
533
|
if(N<0||N>=M.length){$.textContent="";
|
|
548
534
|
return}
|
|
549
535
|
let A=M[N],L=j.headerTemplate(A.key,A.groupIndex),k=X.getHeaderHeight(N);
|
|
550
|
-
if($.style.height=`${k}
|
|
551
|
-
px`,typeof L==="string")$.innerHTML=L;
|
|
536
|
+
if($.style.height=`${k}px`,typeof L==="string")$.innerHTML=L;
|
|
552
537
|
else $.replaceChildren(L)},U=(N)=>{let M=X.groups;
|
|
553
538
|
if(M.length===0){O();
|
|
554
539
|
return}
|
|
@@ -565,8 +550,7 @@ _(A);
|
|
|
565
550
|
let k=X.getHeaderHeight(A),G=0,y=A+1;
|
|
566
551
|
if(y<M.length){let w=Q.getOffset(M[y].headerLayoutIndex)-N;
|
|
567
552
|
if(w<k)G=w-k}
|
|
568
|
-
if(G!==E)E=G,$.style.transform=G===0?"":`translateY(${Math.round(G)}
|
|
569
|
-
px)`},F=()=>{if(Z)return;
|
|
553
|
+
if(G!==E)E=G,$.style.transform=G===0?"":`translateY(${Math.round(G)}px)`},F=()=>{if(Z)return;
|
|
570
554
|
Z=!0,$.style.display=""},O=()=>{if(!Z)return;
|
|
571
555
|
Z=!1,$.style.display="none",q=-1,E=0,$.style.transform=""},b=()=>{let N=q;
|
|
572
556
|
if(q=-1,N>=0)_(N)},W=()=>{$.remove(),q=-1,Z=!1};
|
|
@@ -637,15 +621,7 @@ F(),b()},N=()=>{if($.state.isDestroyed)return;
|
|
|
637
621
|
O(),b()};
|
|
638
622
|
$.setRenderFns(W,N);
|
|
639
623
|
let M=()=>{b(),Z.emit("selection:change",{selected:pj(j),items:uj(j,(L)=>$.dataManager.getItemById(L))})};
|
|
640
|
-
Y=document.createElement("div"),Y.setAttribute("aria-live","polite"),Y.setAttribute("aria-atomic","true"),Y.className=`${_}-live-region`,Y.style.cssText="position:absolute;
|
|
641
|
-
width:1px;
|
|
642
|
-
height:1px;
|
|
643
|
-
padding:0;
|
|
644
|
-
margin:-1px;
|
|
645
|
-
overflow:hidden;
|
|
646
|
-
clip:rect(0,0,0,0);
|
|
647
|
-
white-space:nowrap;
|
|
648
|
-
border:0",q.root.appendChild(Y);
|
|
624
|
+
Y=document.createElement("div"),Y.setAttribute("aria-live","polite"),Y.setAttribute("aria-atomic","true"),Y.className=`${_}-live-region`,Y.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",q.root.appendChild(Y);
|
|
649
625
|
let A=Y;
|
|
650
626
|
Z.on("selection:change",({selected:L})=>{let k=L.length;
|
|
651
627
|
if(k===0)A.textContent="";
|
|
@@ -688,10 +664,8 @@ let{renderRange:L,isCompressed:k}=$.state.viewportState,G=$.getItemsForRange(L),
|
|
|
688
664
|
$.renderer.render(G,L,j.selected,j.focusedIndex,y),Z.emit("selection:change",{selected:[],items:[]})}),$.methods.set("getSelected",()=>{return pj(j)}),$.methods.set("getSelectedItems",()=>{return uj(j,(L)=>$.dataManager.getItemById(L))}),$.destroyHandlers.push(()=>{if(A&&A.parentNode)A.remove()})},destroy(){if(Y&&Y.parentNode)Y.remove();
|
|
689
665
|
Y=null}}};
|
|
690
666
|
var Tj=(J,X,Q={},j="vlist",Y=!1)=>{let{autoHide:$=!0,autoHideDelay:q=1000,minThumbSize:Z=30,showOnHover:E=!0,hoverZoneWidth:_=16,showOnViewportEnter:U=!0}=Q,F=0,O=0,b=0,W=0,N=!1,M=!1,A=0,L=0,k=0,G=null,y=!1,B=null,w=null,D=Y?"width":"height",R=Y?"translateX":"translateY",g=Y?(t)=>t.clientX:(t)=>t.clientY,o=Y?"left":"top",d=document.createElement("div"),jj=document.createElement("div"),i=E?document.createElement("div"):null,H=()=>{if(d.className=`${j}-scrollbar`,jj.className=`${j}-scrollbar-thumb`,Y)d.classList.add(`${j}-scrollbar--horizontal`);
|
|
691
|
-
if(d.appendChild(jj),J.appendChild(d),i){if(i.className=`${j}-scrollbar-hover`,Y)i.classList.add(`${j}-scrollbar-hover--horizontal`),i.style.height=`${_}
|
|
692
|
-
px`;
|
|
693
|
-
else i.style.width=`${_}
|
|
694
|
-
px`;
|
|
667
|
+
if(d.appendChild(jj),J.appendChild(d),i){if(i.className=`${j}-scrollbar-hover`,Y)i.classList.add(`${j}-scrollbar-hover--horizontal`),i.style.height=`${_}px`;
|
|
668
|
+
else i.style.width=`${_}px`;
|
|
695
669
|
J.appendChild(i)}},v=()=>{if(G)clearTimeout(G),G=null},I=()=>{if(!$)return;
|
|
696
670
|
v(),G=setTimeout(z,q)},p=()=>{if(F<=O)return;
|
|
697
671
|
if(v(),!y)d.classList.add(`${j}-scrollbar--visible`),y=!0;
|
|
@@ -701,16 +675,13 @@ let C=F>O;
|
|
|
701
675
|
if(d.style.display=C?"":"none",!C){z();
|
|
702
676
|
return}
|
|
703
677
|
let S=O/F;
|
|
704
|
-
b=Math.max(Z,S*O),jj.style[D]=`${b}
|
|
705
|
-
px`,W=O-b,u(k)},u=(t)=>{if(k=t,F<=O||W<=0)return;
|
|
678
|
+
b=Math.max(Z,S*O),jj.style[D]=`${b}px`,W=O-b,u(k)},u=(t)=>{if(k=t,F<=O||W<=0)return;
|
|
706
679
|
let Jj=F-O,S=Math.min(1,Math.max(0,t/Jj))*W;
|
|
707
|
-
jj.style.transform=`${R}(${S}
|
|
708
|
-
px)`},h=(t)=>{if(t.target===jj)return;
|
|
680
|
+
jj.style.transform=`${R}(${S}px)`},h=(t)=>{if(t.target===jj)return;
|
|
709
681
|
let Jj=d.getBoundingClientRect(),s=g(t)-Jj[o]-b/2,m=Math.max(0,Math.min(s,W))/W,$j=F-O,qj=m*$j;
|
|
710
682
|
X(qj),p()},l=(t)=>{t.preventDefault(),t.stopPropagation(),N=!0,A=g(t),L=k,v(),d.classList.add(`${j}-scrollbar--dragging`),document.addEventListener("mousemove",a),document.addEventListener("mouseup",Xj)},a=(t)=>{if(!N)return;
|
|
711
683
|
let Jj=g(t)-A,C=W>0?Jj/W:0,S=F-O,s=C*S,e=Math.max(0,Math.min(L+s,S)),$j=e/S*W;
|
|
712
|
-
if(jj.style.transform=`${R}(${$j}
|
|
713
|
-
px)`,w=e,B===null)B=requestAnimationFrame(()=>{if(w!==null)X(w);
|
|
684
|
+
if(jj.style.transform=`${R}(${$j}px)`,w=e,B===null)B=requestAnimationFrame(()=>{if(w!==null)X(w);
|
|
714
685
|
B=null})},Xj=()=>{if(N=!1,B!==null)cancelAnimationFrame(B),B=null;
|
|
715
686
|
if(w!==null)X(w),w=null;
|
|
716
687
|
if(d.classList.remove(`${j}-scrollbar--dragging`),$&&!M)I();
|
|
@@ -751,13 +722,9 @@ return _()},j.setVisibleRangeFn((U,F,O,b,W)=>{let N=Fj(b,O);
|
|
|
751
722
|
zJ(U,F,O,b,N,W)}),j.setScrollToPosFn((U,F,O,b,W)=>{let N=Fj(b,F);
|
|
752
723
|
return PJ(U,F,O,b,N,W)}),j.setPositionElementFn((U,F)=>{let O=j.getVirtualTotal(),b=Fj(O,j.heightCache);
|
|
753
724
|
if(b.isCompressed){let W=Math.round(fj(F,j.scrollController.getScrollTop(),j.heightCache,O,j.state.viewportState.containerHeight,b)),N=j.config.horizontal;
|
|
754
|
-
U.style.transform=N?`translateX(${W}
|
|
755
|
-
px)`:`translateY(${W}
|
|
756
|
-
px)`}
|
|
725
|
+
U.style.transform=N?`translateX(${W}px)`:`translateY(${W}px)`}
|
|
757
726
|
else{let W=Math.round(j.heightCache.getOffset(F)),N=j.config.horizontal;
|
|
758
|
-
U.style.transform=N?`translateX(${W}
|
|
759
|
-
px)`:`translateY(${W}
|
|
760
|
-
px)`}}),E(),j.destroyHandlers.push(()=>{if(J)J.destroy(),J=null})},destroy(){if(J)J.destroy(),J=null}}};
|
|
727
|
+
U.style.transform=N?`translateX(${W}px)`:`translateY(${W}px)`}}),E(),j.destroyHandlers.push(()=>{if(J)J.destroy(),J=null})},destroy(){if(J)J.destroy(),J=null}}};
|
|
761
728
|
var cJ=()=>{return{name:"withSnapshots",priority:50,methods:["getScrollSnapshot","restoreScroll"],setup(J){J.methods.set("getScrollSnapshot",()=>{let X=J.scrollController.getScrollTop(),Q=J.getCachedCompression(),j=J.getVirtualTotal(),Y=J.methods.get("getSelected"),$=Y&&Y().length>0?Y():void 0;
|
|
762
729
|
if(j===0){let _={index:0,offsetInItem:0};
|
|
763
730
|
if($)_.selectedIds=$;
|