virtua 0.37.1 → 0.37.3
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/lib/svelte/Virtualizer.svelte +3 -12
- package/lib/svelte/WindowVirtualizer.svelte +3 -12
- package/lib/svelte/utils.d.ts +2 -0
- package/lib/svelte/utils.js +5 -0
- package/lib/vue/index.js +1 -1
- package/lib/vue/index.js.map +1 -1
- package/lib/vue/index.mjs +1 -1
- package/lib/vue/index.mjs.map +1 -1
- package/package.json +2 -2
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
FIND_START_INDEX,
|
|
28
28
|
FIND_END_INDEX,
|
|
29
29
|
} from "./core";
|
|
30
|
-
import { defaultGetKey, styleToString } from "./utils";
|
|
30
|
+
import { defaultGetKey, styleToString, iterRange } from "./utils";
|
|
31
31
|
import ListItem from "./ListItem.svelte";
|
|
32
32
|
import type { VirtualizerHandle, VirtualizerProps } from "./Virtualizer.type";
|
|
33
33
|
|
|
@@ -135,15 +135,6 @@
|
|
|
135
135
|
SCROLL_BY
|
|
136
136
|
] satisfies VirtualizerHandle["scrollBy"] as VirtualizerHandle["scrollBy"];
|
|
137
137
|
|
|
138
|
-
let items = $derived.by(() => {
|
|
139
|
-
const [startIndex, endIndex] = range;
|
|
140
|
-
const newItems: T[] = [];
|
|
141
|
-
for (let i = startIndex, j = endIndex; i <= j; i++) {
|
|
142
|
-
newItems.push(data[i]!);
|
|
143
|
-
}
|
|
144
|
-
return newItems;
|
|
145
|
-
});
|
|
146
|
-
|
|
147
138
|
let containerStyle = $derived(
|
|
148
139
|
styleToString({
|
|
149
140
|
// contain: "content",
|
|
@@ -163,8 +154,8 @@
|
|
|
163
154
|
Customizable list virtualizer for advanced usage. See {@link VirtualizerProps} and {@link VirtualizerHandle}.
|
|
164
155
|
-->
|
|
165
156
|
<svelte:element this={as} bind:this={containerRef} style={containerStyle}>
|
|
166
|
-
{#each
|
|
167
|
-
{@const
|
|
157
|
+
{#each iterRange(range) as index (getKey(data[index]!, index))}
|
|
158
|
+
{@const item = data[index]!}
|
|
168
159
|
<ListItem
|
|
169
160
|
{children}
|
|
170
161
|
{item}
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
FIND_START_INDEX,
|
|
19
19
|
FIND_END_INDEX,
|
|
20
20
|
} from "./core";
|
|
21
|
-
import { defaultGetKey, styleToString } from "./utils";
|
|
21
|
+
import { defaultGetKey, iterRange, styleToString } from "./utils";
|
|
22
22
|
import ListItem from "./ListItem.svelte";
|
|
23
23
|
import type {
|
|
24
24
|
WindowVirtualizerHandle,
|
|
@@ -91,15 +91,6 @@
|
|
|
91
91
|
FIND_END_INDEX
|
|
92
92
|
] satisfies WindowVirtualizerHandle["findEndIndex"] as WindowVirtualizerHandle["findEndIndex"];
|
|
93
93
|
|
|
94
|
-
let items = $derived.by(() => {
|
|
95
|
-
const [startIndex, endIndex] = range;
|
|
96
|
-
const newItems: T[] = [];
|
|
97
|
-
for (let i = startIndex, j = endIndex; i <= j; i++) {
|
|
98
|
-
newItems.push(data[i]!);
|
|
99
|
-
}
|
|
100
|
-
return newItems;
|
|
101
|
-
});
|
|
102
|
-
|
|
103
94
|
let containerStyle = $derived(
|
|
104
95
|
styleToString({
|
|
105
96
|
// contain: "content",
|
|
@@ -119,8 +110,8 @@
|
|
|
119
110
|
{@link Virtualizer} controlled by the window scrolling. See {@link WindowVirtualizerProps} and {@link WindowVirtualizerHandle}.
|
|
120
111
|
-->
|
|
121
112
|
<div bind:this={containerRef} style={containerStyle}>
|
|
122
|
-
{#each
|
|
123
|
-
{@const
|
|
113
|
+
{#each iterRange(range) as index (getKey(data[index]!, index))}
|
|
114
|
+
{@const item = data[index]!}
|
|
124
115
|
<ListItem
|
|
125
116
|
{children}
|
|
126
117
|
{item}
|
package/lib/svelte/utils.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
// @ts-nocheck
|
|
2
|
+
import type { ItemsRange } from "../core/types";
|
|
2
3
|
export declare const styleToString: (obj: Record<string, string | undefined>) => string;
|
|
3
4
|
export declare const defaultGetKey: (_data: unknown, i: number) => string;
|
|
5
|
+
export declare function iterRange([start, end]: ItemsRange): Generator<number, void, unknown>;
|
package/lib/svelte/utils.js
CHANGED
package/lib/vue/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e=require("vue");const t=null,{min:r,max:o,abs:n,floor:s}=Math,i=setTimeout,l=(e,t,n)=>r(n,o(t,e)),c="function"==typeof queueMicrotask?queueMicrotask:e=>{Promise.resolve().then(e)},a=e=>{let t,r;return()=>(t||(t=!0,r=e()),r)},f=-1,u=(e,t,r)=>{const o=r?"unshift":"push";for(let r=0;r<t;r++)e[o](f);return e},d=(e,t)=>{const r=e.t[t];return r===f?e.o:r},_=(e,t,o)=>{const n=e.t[t]===f;return e.t[t]=o,e.i=r(t,e.i),n},p=(e,t)=>{if(!e.l)return 0;if(e.i>=t)return e.u[t];e.i<0&&(e.u[0]=0,e.i=0);let r=e.i,o=e.u[r];for(;r<t;)o+=d(e,r),e.u[++r]=o;return e.i=t,o},h=(e,t,r=0,o=e.l-1)=>{for(;r<=o;){const n=s((r+o)/2),i=p(e,n);if(i<=t){if(i+d(e,n)>t)return n;r=n+1}else o=n-1}return l(r,0,e.l-1)},m=(e,t,o)=>{const n=t-e.l;return e.i=o?-1:r(t-1,e.i),e.l=t,n>0?(u(e.u,n),u(e.t,n,o),e.o*n):(e.u.splice(n),(o?e.t.splice(0,-n):e.t.splice(n)).reduce(((t,r)=>t-(r===f?e.o:r)),0))},v="undefined"!=typeof window,b=()=>document.documentElement,S=e=>e.ownerDocument,y=e=>e.defaultView,g=/*#__PURE__*/a((()=>!!v&&"rtl"===getComputedStyle(b()).direction)),x=/*#__PURE__*/a((()=>/iP(hone|od|ad)/.test(navigator.userAgent))),z=/*#__PURE__*/a((()=>"scrollBehavior"in b().style)),w=(e,s=40,i=4,l=0,c,a=!1)=>{let v=!!l,b=[],S=0,y=0,g=0,z=0,w=0,I=0,O=0,k=0,j=0,E=v?[0,o(l-1,0)]:t,B=[0,0],q=0;const N=((e,t)=>({o:t,t:u([],e),l:e,i:-1,u:u([],e)}))(e,s),R=new Set,T=()=>g-y,C=()=>T()+I+w,H=e=>((e,t,o,n)=>{if(n=r(n,e.l-1),p(e,n)<=t){const r=h(e,t+o,n);return[h(e,t,n,r),r]}{const r=h(e,t,void 0,n);return[r,h(e,t+o,r)]}})(N,e,S,B[0]),M=()=>(e=>e.l?p(e,e.l-1)+d(e,e.l-1):0)(N),A=e=>p(N,e)-I,J=e=>d(N,e),L=e=>{e&&(x()&&0!==k?I+=e:(w+=e,z++))};return{p:()=>b,h:()=>(e=>[e.t.slice(),e.o])(N),m:()=>{if(O)return B;let[e,t]=H(o(0,C()));return E&&(e=r(e,E[0]),t=o(t,E[1])),1!==k&&(e-=o(0,i)),2!==k&&(t+=o(0,i)),B=[o(e,0),r(t,N.l-1)]},v:()=>h(N,C()),S:()=>h(N,C()+S),I:e=>N.t[e]===f,O:()=>!!E&&N.t.slice(o(0,E[0]-1),r(N.l-1,E[1]+1)+1).includes(f),k:A,j:J,B:()=>N.l,q:()=>g,N:()=>0!==k,R:()=>S,T:()=>y,C:M,H:()=>z,M:()=>(O=w,w=0,[O,2===j||T()+S>=M()]),A:(e,t)=>{const r=[e,t];return R.add(r),()=>{R.delete(r)}},J:(e,r)=>{let s,i,l=0;switch(e){case 1:{const e=O;O=0;const o=r-g,s=n(o);e&&s<n(e)+1||0!==j||(k=o<0?2:1),v&&(E=t,v=!1),g=r,l=4;const c=T();c>=-S&&c<=M()&&(l+=1,i=s>S);break}case 2:l=8,0!==k&&(s=!0,l+=1),k=0,j=0,E=t;break;case 3:{const e=r.filter((([e,t])=>N.t[e]!==t));if(!e.length)break;L(e.reduce(((e,[t,r])=>((2===j||(E?t<E[0]:A(t)+(0===k&&0===j?J(t):0)<T()))&&(e+=r-J(t)),e)),0));for(const[t,r]of e){const e=J(t),o=_(N,t,r);a&&(q+=o?r:r-e)}a&&S&&q>S&&(L(((e,t)=>{let r=0;const n=e.t.filter(((e,o)=>{const n=e!==f;return n&&o<t&&r++,n})),s=e.o;return e.i=-1,((e.o=(e=>{const t=(e=>[...e].sort(((e,t)=>e-t)))(e),r=e.length/2|0;return t.length%2==0?(t[r-1]+t[r])/2:t[r]})(n))-s)*o(t-r,0)})(N,h(N,C()))),a=!1),l=3,i=!0;break}case 4:S!==r&&(S=r,l=3);break;case 5:r[1]?(L(m(N,r[0],!0)),j=2,l=1):m(N,r[0]);break;case 6:y=r;break;case 7:j=1;break;case 8:E=H(r),l=1}l&&(b=[],s&&I&&(w+=I,I=0,z++),R.forEach((([e,t])=>{l&e&&t(i)})))}}},I=e=>{let t;return{L(r){(t||(t=new(y(S(r)).ResizeObserver)(e))).observe(r)},P(e){t.unobserve(e)},W(){t&&t.disconnect()}}},O=(e,t)=>t&&g()?-e:e,k=(e,r,o,n,s,l)=>{const c=Date.now;let a=0,f=!1,u=!1,d=!1,_=!1;const p=(()=>{let r;const o=()=>{r!=t&&clearTimeout(r)},n=()=>{o(),r=i((()=>{r=t,(()=>{if(f||u)return f=!1,void p();d=!1,e.J(2)})()}),150)};return n.X=o,n})(),h=()=>{a=c(),d&&(_=!0),l&&e.J(6,l()),e.J(1,n()),p()},m=t=>{if(f||!e.N()||t.ctrlKey)return;const r=c()-a;150>r&&50<r&&(o?t.deltaX:t.deltaY)&&(f=!0)},v=()=>{u=!0,d=_=!1},b=()=>{u=!1,x()&&(d=!0)};return r.addEventListener("scroll",h),r.addEventListener("wheel",m,{passive:!0}),r.addEventListener("touchstart",v,{passive:!0}),r.addEventListener("touchend",b,{passive:!0}),{W:()=>{r.removeEventListener("scroll",h),r.removeEventListener("wheel",m),r.removeEventListener("touchstart",v),r.removeEventListener("touchend",b),p.X()},Y:()=>{const[t,r]=e.M();t&&(s(O(t,o),r,_),_=!1,r&&e.R()>e.C()&&e.J(1,n()))}}},j=/*#__PURE__*/e.defineComponent({props:{F:{type:Object,required:!0},U:{type:Function,required:!0},V:{type:Number,required:!0},D:{type:Number,required:!0},G:{type:Boolean},K:{type:Boolean},Z:{type:Boolean},$:{type:String,required:!0}},setup(t){const r=e.ref();return e.watch((()=>r.value&&t.V),((e,o,n)=>{n(t.U(r.value,t.V))}),{flush:"post"}),()=>{const{F:o,D:n,G:s,K:i,Z:l,$:c}=t,a={position:s&&l?void 0:"absolute",[i?"height":"width"]:"100%",[i?"top":"left"]:"0px",[i?g()?"right":"left":"top"]:n+"px",visibility:!s||l?"visible":"hidden"};return i&&(a.display="flex"),e.createVNode(c,{ref:r,style:a},"function"==typeof(f=o)||"[object Object]"===Object.prototype.toString.call(f)&&!e.isVNode(f)?o:{default:()=>[o],_:2},8,["style"]);var f}}}),E=(e,r)=>{const o=e.key;return o!=t?o:"_"+r},B={data:{type:Array,required:!0},overscan:Number,itemSize:Number,shift:Boolean,horizontal:Boolean,startMargin:{type:Number,default:0},ssrCount:Number,scrollRef:Object,as:{type:String,default:"div"},item:{type:String,default:"div"}},q=/*#__PURE__*/e.defineComponent({props:B,emits:["scroll","scrollEnd"],setup(r,{emit:n,expose:s,slots:a}){let f=!!r.ssrCount;const u=r.horizontal,d=e.ref(),_=w(r.data.length,r.itemSize,r.overscan,r.ssrCount,0,!r.itemSize),p=((e,r)=>{let o;const n=r?"width":"height",s=new WeakMap,i=I((r=>{const i=[];for(const{target:l,contentRect:c}of r)if(l.offsetParent)if(l===o)e.J(4,c[n]);else{const e=s.get(l);e!=t&&i.push([e,c[n]])}i.length&&e.J(3,i)}));return{ee(e){i.L(o=e)},te:(e,t)=>(s.set(e,t),i.L(e),()=>{s.delete(e),i.P(e)}),W:i.W}})(_,u),h=((e,t)=>{let r,o,n;const s=t?"scrollLeft":"scrollTop",a=t?"overflowX":"overflowY",f=async(o,l)=>{if(!r)return void c((()=>f(o,l)));n&&n();const a=()=>{let t;return[new Promise(((r,o)=>{t=r,n=o,(e=>!!e.R())(e)&&i(o,150)})),e.A(2,(()=>{t&&t()}))]};if(l&&z()){for(;e.J(8,o()),e.O();){const[e,t]=a();try{await e}catch(e){return}finally{t()}}r.scrollTo({[t?"left":"top"]:O(o(),t),behavior:"smooth"})}else for(;;){const[n,i]=a();try{r[s]=O(o(),t),e.J(7),await n}catch(e){return}finally{i()}}};return{L(l){r=l,o=k(e,l,t,(()=>O(l[s],t)),((t,r,o)=>{if(o){const e=l.style,t=e[a];e[a]="hidden",i((()=>{e[a]=t}))}r?(l[s]=e.q()+t,n&&n()):l[s]+=t}))},W(){o&&o.W()},re(e){f((()=>e))},oe(t){t+=e.q(),f((()=>t))},ne(t,{align:r,smooth:o,offset:n=0}={}){if(t=l(t,0,e.B()-1),"nearest"===r){const o=e.k(t),n=e.q();if(o<n)r="start";else{if(!(o+e.j(t)>n+e.R()))return;r="end"}}f((()=>n+e.T()+e.k(t)+("end"===r?e.j(t)-e.R():"center"===r?(e.j(t)-e.R())/2:0)),o)},Y:()=>{o&&o.Y()}}})(_,u),m=e.ref(_.p()),v=_.A(1,(()=>{m.value=_.p()})),b=_.A(4,(()=>{n("scroll",_.q())})),S=_.A(8,(()=>{n("scrollEnd")}));return e.onMounted((()=>{f=!1,c((()=>{const e=e=>{p.ee(e),h.L(e)};r.scrollRef?e(r.scrollRef):e(d.value.parentElement)}))})),e.onUnmounted((()=>{v(),b(),S(),p.W(),h.W()})),e.watch((()=>r.data.length),(e=>{_.J(5,[e,r.shift])})),e.watch((()=>r.startMargin),(e=>{_.J(6,e)}),{immediate:!0}),e.watch([m,_.H],(([,e],[,t])=>{e!==t&&h.Y()}),{flush:"post"}),s({get scrollOffset(){return _.q()},get scrollSize(){return(e=>o(e.C(),e.R()))(_)},get viewportSize(){return _.R()},findStartIndex:_.v,findEndIndex:_.S,getItemOffset:_.k,getItemSize:_.j,scrollToIndex:h.ne,scrollTo:h.re,scrollBy:h.oe}),()=>{m.value;const t=r.as,o=r.item,[n,s]=_.m(),i=_.N(),l=_.C(),c=[];for(let t=n,i=s;t<=i;t++){const n=a.default({item:r.data[t],index:t})[0];c.push(e.createVNode(j,{key:E(n,t),U:p.te,V:t,D:_.k(t),G:_.I(t),F:n,K:u,Z:f,$:o},null,8,["_resizer","_index","_offset","_hide","_children","_isHorizontal","_isSSR","_as"]))}return e.createVNode(t,{ref:d,style:{overflowAnchor:"none",flex:"none",position:"relative",visibility:"hidden",width:u?l+"px":"100%",height:u?"100%":l+"px",pointerEvents:i?"none":void 0}},"function"==typeof(h=c)||"[object Object]"===Object.prototype.toString.call(h)&&!e.isVNode(h)?c:{default:()=>[c],_:2},8,["style"]);var h}}}),N={data:{type:Array,required:!0},overscan:Number,itemSize:Number,shift:Boolean,horizontal:Boolean,ssrCount:Number},R=/*#__PURE__*/e.defineComponent({props:N,emits:["scroll","scrollEnd"],setup(t,{emit:r,expose:o,slots:n}){const s=t.horizontal,i=e=>{r("scroll",e)},l=()=>{r("scrollEnd")},c=e.ref();return o({get scrollOffset(){return c.value.scrollOffset},get scrollSize(){return c.value.scrollSize},get viewportSize(){return c.value.viewportSize},findStartIndex:(...e)=>c.value.findStartIndex(...e),findEndIndex:(...e)=>c.value.findEndIndex(...e),getItemOffset:(...e)=>c.value.getItemOffset(...e),getItemSize:(...e)=>c.value.getItemSize(...e),scrollToIndex:(...e)=>c.value.scrollToIndex(...e),scrollTo:(...e)=>c.value.scrollTo(...e),scrollBy:(...e)=>c.value.scrollBy(...e)}),()=>{return e.createVNode("div",{style:{display:s?"inline-block":"block",[s?"overflowX":"overflowY"]:"auto",contain:"strict",width:"100%",height:"100%"}},[e.createVNode(q,{ref:c,data:t.data,overscan:t.overscan,itemSize:t.itemSize,shift:t.shift,ssrCount:t.ssrCount,horizontal:s,onScroll:i,onScrollEnd:l},(r=n,"function"==typeof r||"[object Object]"===Object.prototype.toString.call(r)&&!e.isVNode(r)?n:{default:()=>[n],_:2}),8,["data","overscan","itemSize","shift","ssrCount","horizontal","onScroll","onScrollEnd"])],4);var r}}}),T={data:{type:Array,required:!0},overscan:Number,itemSize:Number,shift:Boolean,horizontal:Boolean,as:{type:String,default:"div"},item:{type:String,default:"div"}},C=/*#__PURE__*/e.defineComponent({props:T,emits:["scroll","scrollEnd"],setup(r,{emit:o,slots:n,expose:s}){const i=r.horizontal,l=e.ref(),c=w(r.data.length,r.itemSize,r.overscan,void 0,0,!r.itemSize),a=((e,r)=>{const o=r?"width":"height",n=r?"innerWidth":"innerHeight",s=new WeakMap,i=I((r=>{const n=[];for(const{target:e,contentRect:i}of r){if(!e.offsetParent)continue;const r=s.get(e);r!=t&&n.push([r,i[o]])}n.length&&e.J(3,n)}));let l;return{ee(t){const r=y(S(t)),o=()=>{e.J(4,r[n])};r.addEventListener("resize",o),o(),l=()=>{r.removeEventListener("resize",o)}},te:(e,t)=>(s.set(e,t),i.L(e),()=>{s.delete(e),i.P(e)}),W(){l&&l(),i.W()}}})(c,i),f=((e,t)=>{let r;return{L(o){const n=t?"scrollX":"scrollY",s=S(o),i=y(s),l=s.body,c=(e,t,r,o=0)=>{const n=r?"offsetLeft":"offsetTop",s=o+(r&&g()?i.innerWidth-e[n]-e.offsetWidth:e[n]),l=e.offsetParent;return e!==t&&l?c(l,t,r,s):s};r=k(e,i,t,(()=>O(i[n],t)),((r,o)=>{o?i.scroll({[t?"left":"top"]:e.q()+r}):i.scrollBy(t?r:0,t?0:r)}),(()=>c(o,l,t)))},W(){r&&r.W()},Y:()=>{r&&r.Y()}}})(c,i),u=e.ref(c.p()),d=c.A(1,(()=>{u.value=c.p()})),_=c.A(4,(()=>{o("scroll",c.q())})),p=c.A(8,(()=>{o("scrollEnd")}));return e.onMounted((()=>{const e=l.value;e&&(a.ee(e),f.L(e))})),e.onUnmounted((()=>{d(),_(),p(),a.W(),f.W()})),e.watch((()=>r.data.length),(e=>{c.J(5,[e,r.shift])})),e.watch([u,c.H],(([,e],[,t])=>{e!==t&&f.Y()}),{flush:"post"}),s({findStartIndex:c.v,findEndIndex:c.S}),()=>{u.value;const t=r.as,o=r.item,[s,f]=c.m(),d=c.N(),_=c.C(),p=[];for(let t=s,l=f;t<=l;t++){const s=n.default({item:r.data[t],index:t})[0];p.push(e.createVNode(j,{key:E(s,t),U:a.te,V:t,D:c.k(t),G:c.I(t),F:s,K:i,$:o},null,8,["_resizer","_index","_offset","_hide","_children","_isHorizontal","_as"]))}return e.createVNode(t,{ref:l,style:{overflowAnchor:"none",flex:"none",position:"relative",visibility:"hidden",width:i?_+"px":"100%",height:i?"100%":_+"px",pointerEvents:d?"none":void 0}},"function"==typeof(h=p)||"[object Object]"===Object.prototype.toString.call(h)&&!e.isVNode(h)?p:{default:()=>[p],_:2},8,["style"]);var h}}});exports.VList=R,exports.Virtualizer=q,exports.WindowVirtualizer=C;
|
|
1
|
+
var e=require("vue");const t=null,{min:r,max:o,abs:n,floor:s}=Math,i=setTimeout,l=(e,t,n)=>r(n,o(t,e)),c="function"==typeof queueMicrotask?queueMicrotask:e=>{Promise.resolve().then(e)},a=e=>{let t,r;return()=>(t||(t=!0,r=e()),r)},u=-1,d=(e,t,r)=>{const o=r?"unshift":"push";for(let r=0;r<t;r++)e[o](u);return e},f=(e,t)=>{const r=e.t[t];return r===u?e.o:r},_=(e,t,o)=>{const n=e.t[t]===u;return e.t[t]=o,e.i=r(t,e.i),n},p=(e,t)=>{if(!e.l)return 0;if(e.i>=t)return e.u[t];e.i<0&&(e.u[0]=0,e.i=0);let r=e.i,o=e.u[r];for(;r<t;)o+=f(e,r),e.u[++r]=o;return e.i=t,o},h=(e,t,r=0,o=e.l-1)=>{for(;r<=o;){const n=s((r+o)/2),i=p(e,n);if(i<=t){if(i+f(e,n)>t)return n;r=n+1}else o=n-1}return l(r,0,e.l-1)},m=(e,t,o)=>{const n=t-e.l;return e.i=o?-1:r(t-1,e.i),e.l=t,n>0?(d(e.u,n),d(e.t,n,o),e.o*n):(e.u.splice(n),(o?e.t.splice(0,-n):e.t.splice(n)).reduce(((t,r)=>t-(r===u?e.o:r)),0))},b="undefined"!=typeof window,v=()=>document.documentElement,S=e=>e.ownerDocument,y=e=>e.defaultView,g=/*#__PURE__*/a((()=>!!b&&"rtl"===getComputedStyle(v()).direction)),x=/*#__PURE__*/a((()=>/iP(hone|od|ad)/.test(navigator.userAgent))),z=/*#__PURE__*/a((()=>"scrollBehavior"in v().style)),w=(e,s=40,i=4,l=0,c,a=!1)=>{let b=!!l,v=[],S=0,y=0,g=0,z=0,w=0,I=0,O=0,j=0,k=0,E=b?[0,o(l-1,0)]:t,q=[0,0],B=0;const R=((e,t)=>({o:t,t:d([],e),l:e,i:-1,u:d([],e)}))(e,s),T=new Set,N=()=>g-y,C=()=>N()+I+w,H=e=>((e,t,o,n)=>{if(n=r(n,e.l-1),p(e,n)<=t){const r=h(e,t+o,n);return[h(e,t,n,r),r]}{const r=h(e,t,void 0,n);return[r,h(e,t+o,r)]}})(R,e,S,q[0]),M=()=>(e=>e.l?p(e,e.l-1)+f(e,e.l-1):0)(R),A=e=>p(R,e)-I,J=e=>f(R,e),L=e=>{e&&(x()&&0!==j?I+=e:(w+=e,z++))};return{p:()=>v,h:()=>(e=>[e.t.slice(),e.o])(R),m:()=>{if(O)return q;let[e,t]=H(o(0,C()));return E&&(e=r(e,E[0]),t=o(t,E[1])),1!==j&&(e-=o(0,i)),2!==j&&(t+=o(0,i)),q=[o(e,0),r(t,R.l-1)]},v:()=>h(R,C()),S:()=>h(R,C()+S),I:e=>R.t[e]===u,O:()=>!!E&&R.t.slice(o(0,E[0]-1),r(R.l-1,E[1]+1)+1).includes(u),j:A,k:J,q:()=>R.l,B:()=>g,R:()=>0!==j,T:()=>S,N:()=>y,C:M,H:()=>z,M:()=>(O=w,w=0,[O,2===k||N()+S>=M()]),A:(e,t)=>{const r=[e,t];return T.add(r),()=>{T.delete(r)}},J:(e,r)=>{let s,i,l=0;switch(e){case 1:{const e=O;O=0;const o=r-g,s=n(o);e&&s<n(e)+1||0!==k||(j=o<0?2:1),b&&(E=t,b=!1),g=r,l=4;const c=N();c>=-S&&c<=M()&&(l+=1,i=s>S);break}case 2:l=8,0!==j&&(s=!0,l+=1),j=0,k=0,E=t;break;case 3:{const e=r.filter((([e,t])=>R.t[e]!==t));if(!e.length)break;L(e.reduce(((e,[t,r])=>((2===k||(E?t<E[0]:A(t)+(0===j&&0===k?J(t):0)<N()))&&(e+=r-J(t)),e)),0));for(const[t,r]of e){const e=J(t),o=_(R,t,r);a&&(B+=o?r:r-e)}a&&S&&B>S&&(L(((e,t)=>{let r=0;const n=e.t.filter(((e,o)=>{const n=e!==u;return n&&o<t&&r++,n})),s=e.o;return e.i=-1,((e.o=(e=>{const t=(e=>[...e].sort(((e,t)=>e-t)))(e),r=e.length/2|0;return t.length%2==0?(t[r-1]+t[r])/2:t[r]})(n))-s)*o(t-r,0)})(R,h(R,C()))),a=!1),l=3,i=!0;break}case 4:S!==r&&(S=r,l=3);break;case 5:r[1]?(L(m(R,r[0],!0)),k=2,l=1):m(R,r[0]);break;case 6:y=r;break;case 7:k=1;break;case 8:E=H(r),l=1}l&&(v=[],s&&I&&(w+=I,I=0,z++),T.forEach((([e,t])=>{l&e&&t(i)})))}}},I=e=>{let t;return{L(r){(t||(t=new(y(S(r)).ResizeObserver)(e))).observe(r)},P(e){t.unobserve(e)},W(){t&&t.disconnect()}}},O=(e,t)=>t&&g()?-e:e,j=(e,r,o,n,s,l)=>{const c=Date.now;let a=0,u=!1,d=!1,f=!1,_=!1;const p=(()=>{let r;const o=()=>{r!=t&&clearTimeout(r)},n=()=>{o(),r=i((()=>{r=t,(()=>{if(u||d)return u=!1,void p();f=!1,e.J(2)})()}),150)};return n.X=o,n})(),h=()=>{a=c(),f&&(_=!0),l&&e.J(6,l()),e.J(1,n()),p()},m=t=>{if(u||!e.R()||t.ctrlKey)return;const r=c()-a;150>r&&50<r&&(o?t.deltaX:t.deltaY)&&(u=!0)},b=()=>{d=!0,f=_=!1},v=()=>{d=!1,x()&&(f=!0)};return r.addEventListener("scroll",h),r.addEventListener("wheel",m,{passive:!0}),r.addEventListener("touchstart",b,{passive:!0}),r.addEventListener("touchend",v,{passive:!0}),{W:()=>{r.removeEventListener("scroll",h),r.removeEventListener("wheel",m),r.removeEventListener("touchstart",b),r.removeEventListener("touchend",v),p.X()},Y:()=>{const[t,r]=e.M();t&&(s(O(t,o),r,_),_=!1,r&&e.T()>e.C()&&e.J(1,n()))}}},k=/*#__PURE__*/e.defineComponent({props:{F:{type:Object,required:!0},U:{type:Object,required:!0},V:{type:Object,required:!0},D:{type:Function,required:!0},G:{type:Number,required:!0},K:{type:Boolean},Z:{type:Boolean},ee:{type:String,required:!0}},setup(t){const r=e.ref(),o=e.computed((()=>t.F.value&&t.U.j(t.G))),n=e.computed((()=>t.F.value&&t.U.I(t.G)));return e.watch((()=>r.value&&t.G),((e,o,n)=>{n(t.D(r.value,t.G))}),{flush:"post"}),()=>{const{V:s,K:i,Z:l,ee:c}=t,a=n.value,u={position:a&&l?void 0:"absolute",[i?"height":"width"]:"100%",[i?"top":"left"]:"0px",[i?g()?"right":"left":"top"]:o.value+"px",visibility:!a||l?"visible":"hidden"};return i&&(u.display="flex"),e.createVNode(c,{ref:r,style:u},"function"==typeof(d=s)||"[object Object]"===Object.prototype.toString.call(d)&&!e.isVNode(d)?s:{default:()=>[s],_:2},8,["style"]);var d}}}),E=(e,r)=>{const o=e.key;return o!=t?o:"_"+r},q=(e,t)=>e[0]===t[0]&&e[1]===t[1],B={data:{type:Array,required:!0},overscan:Number,itemSize:Number,shift:Boolean,horizontal:Boolean,startMargin:{type:Number,default:0},ssrCount:Number,scrollRef:Object,as:{type:String,default:"div"},item:{type:String,default:"div"}},R=/*#__PURE__*/e.defineComponent({props:B,emits:["scroll","scrollEnd"],setup(r,{emit:n,expose:s,slots:a}){let u=!!r.ssrCount;const d=r.horizontal,f=e.ref(),_=w(r.data.length,r.itemSize,r.overscan,r.ssrCount,0,!r.itemSize),p=((e,r)=>{let o;const n=r?"width":"height",s=new WeakMap,i=I((r=>{const i=[];for(const{target:l,contentRect:c}of r)if(l.offsetParent)if(l===o)e.J(4,c[n]);else{const e=s.get(l);e!=t&&i.push([e,c[n]])}i.length&&e.J(3,i)}));return{te(e){i.L(o=e)},re:(e,t)=>(s.set(e,t),i.L(e),()=>{s.delete(e),i.P(e)}),W:i.W}})(_,d),h=((e,t)=>{let r,o,n;const s=t?"scrollLeft":"scrollTop",a=t?"overflowX":"overflowY",u=async(o,l)=>{if(!r)return void c((()=>u(o,l)));n&&n();const a=()=>{let t;return[new Promise(((r,o)=>{t=r,n=o,(e=>!!e.T())(e)&&i(o,150)})),e.A(2,(()=>{t&&t()}))]};if(l&&z()){for(;e.J(8,o()),e.O();){const[e,t]=a();try{await e}catch(e){return}finally{t()}}r.scrollTo({[t?"left":"top"]:O(o(),t),behavior:"smooth"})}else for(;;){const[n,i]=a();try{r[s]=O(o(),t),e.J(7),await n}catch(e){return}finally{i()}}};return{L(l){r=l,o=j(e,l,t,(()=>O(l[s],t)),((t,r,o)=>{if(o){const e=l.style,t=e[a];e[a]="hidden",i((()=>{e[a]=t}))}r?(l[s]=e.B()+t,n&&n()):l[s]+=t}))},W(){o&&o.W()},oe(e){u((()=>e))},ne(t){t+=e.B(),u((()=>t))},se(t,{align:r,smooth:o,offset:n=0}={}){if(t=l(t,0,e.q()-1),"nearest"===r){const o=e.j(t),n=e.B();if(o<n)r="start";else{if(!(o+e.k(t)>n+e.T()))return;r="end"}}u((()=>n+e.N()+e.j(t)+("end"===r?e.k(t)-e.T():"center"===r?(e.k(t)-e.T())/2:0)),o)},Y:()=>{o&&o.Y()}}})(_,d),m=e.ref(_.p()),b=_.A(1,(()=>{m.value=_.p()})),v=_.A(4,(()=>{n("scroll",_.B())})),S=_.A(8,(()=>{n("scrollEnd")})),y=e.computed((e=>{m.value;const t=_.m();return e&&q(e,t)?e:t})),g=e.computed((()=>m.value&&_.R())),x=e.computed((()=>m.value&&_.C())),B=e.computed((()=>m.value&&_.H()));return e.onMounted((()=>{u=!1,c((()=>{const e=e=>{p.te(e),h.L(e)};r.scrollRef?e(r.scrollRef):e(f.value.parentElement)}))})),e.onUnmounted((()=>{b(),v(),S(),p.W(),h.W()})),e.watch((()=>r.data.length),(e=>{_.J(5,[e,r.shift])})),e.watch((()=>r.startMargin),(e=>{_.J(6,e)}),{immediate:!0}),e.watch([B],(()=>{h.Y()}),{flush:"post"}),s({get scrollOffset(){return _.B()},get scrollSize(){return(e=>o(e.C(),e.T()))(_)},get viewportSize(){return _.T()},findStartIndex:_.v,findEndIndex:_.S,getItemOffset:_.j,getItemSize:_.k,scrollToIndex:h.se,scrollTo:h.oe,scrollBy:h.ne}),()=>{const t=r.as,o=r.item,[n,s]=y.value,i=x.value,l=[];for(let t=n,i=s;t<=i;t++){const n=a.default({item:r.data[t],index:t})[0];l.push(e.createVNode(k,{key:E(n,t),F:m,U:_,D:p.re,G:t,V:n,K:d,Z:u,ee:o},null,8,["_rerender","_store","_resizer","_index","_children","_isHorizontal","_isSSR","_as"]))}return e.createVNode(t,{ref:f,style:{overflowAnchor:"none",flex:"none",position:"relative",visibility:"hidden",width:d?i+"px":"100%",height:d?"100%":i+"px",pointerEvents:g.value?"none":void 0}},"function"==typeof(c=l)||"[object Object]"===Object.prototype.toString.call(c)&&!e.isVNode(c)?l:{default:()=>[l],_:2},8,["style"]);var c}}}),T={data:{type:Array,required:!0},overscan:Number,itemSize:Number,shift:Boolean,horizontal:Boolean,ssrCount:Number},N=/*#__PURE__*/e.defineComponent({props:T,emits:["scroll","scrollEnd"],setup(t,{emit:r,expose:o,slots:n}){const s=t.horizontal,i=e=>{r("scroll",e)},l=()=>{r("scrollEnd")},c=e.ref();return o({get scrollOffset(){return c.value.scrollOffset},get scrollSize(){return c.value.scrollSize},get viewportSize(){return c.value.viewportSize},findStartIndex:(...e)=>c.value.findStartIndex(...e),findEndIndex:(...e)=>c.value.findEndIndex(...e),getItemOffset:(...e)=>c.value.getItemOffset(...e),getItemSize:(...e)=>c.value.getItemSize(...e),scrollToIndex:(...e)=>c.value.scrollToIndex(...e),scrollTo:(...e)=>c.value.scrollTo(...e),scrollBy:(...e)=>c.value.scrollBy(...e)}),()=>{return e.createVNode("div",{style:{display:s?"inline-block":"block",[s?"overflowX":"overflowY"]:"auto",contain:"strict",width:"100%",height:"100%"}},[e.createVNode(R,{ref:c,data:t.data,overscan:t.overscan,itemSize:t.itemSize,shift:t.shift,ssrCount:t.ssrCount,horizontal:s,onScroll:i,onScrollEnd:l},(r=n,"function"==typeof r||"[object Object]"===Object.prototype.toString.call(r)&&!e.isVNode(r)?n:{default:()=>[n],_:2}),8,["data","overscan","itemSize","shift","ssrCount","horizontal","onScroll","onScrollEnd"])],4);var r}}}),C={data:{type:Array,required:!0},overscan:Number,itemSize:Number,shift:Boolean,horizontal:Boolean,as:{type:String,default:"div"},item:{type:String,default:"div"}},H=/*#__PURE__*/e.defineComponent({props:C,emits:["scroll","scrollEnd"],setup(r,{emit:o,slots:n,expose:s}){const i=r.horizontal,l=e.ref(),c=w(r.data.length,r.itemSize,r.overscan,void 0,0,!r.itemSize),a=((e,r)=>{const o=r?"width":"height",n=r?"innerWidth":"innerHeight",s=new WeakMap,i=I((r=>{const n=[];for(const{target:e,contentRect:i}of r){if(!e.offsetParent)continue;const r=s.get(e);r!=t&&n.push([r,i[o]])}n.length&&e.J(3,n)}));let l;return{te(t){const r=y(S(t)),o=()=>{e.J(4,r[n])};r.addEventListener("resize",o),o(),l=()=>{r.removeEventListener("resize",o)}},re:(e,t)=>(s.set(e,t),i.L(e),()=>{s.delete(e),i.P(e)}),W(){l&&l(),i.W()}}})(c,i),u=((e,t)=>{let r;return{L(o){const n=t?"scrollX":"scrollY",s=S(o),i=y(s),l=s.body,c=(e,t,r,o=0)=>{const n=r?"offsetLeft":"offsetTop",s=o+(r&&g()?i.innerWidth-e[n]-e.offsetWidth:e[n]),l=e.offsetParent;return e!==t&&l?c(l,t,r,s):s};r=j(e,i,t,(()=>O(i[n],t)),((r,o)=>{o?i.scroll({[t?"left":"top"]:e.B()+r}):i.scrollBy(t?r:0,t?0:r)}),(()=>c(o,l,t)))},W(){r&&r.W()},Y:()=>{r&&r.Y()}}})(c,i),d=e.ref(c.p()),f=c.A(1,(()=>{d.value=c.p()})),_=c.A(4,(()=>{o("scroll",c.B())})),p=c.A(8,(()=>{o("scrollEnd")})),h=e.computed((e=>{d.value;const t=c.m();return e&&q(e,t)?e:t})),m=e.computed((()=>d.value&&c.R())),b=e.computed((()=>d.value&&c.C())),v=e.computed((()=>d.value&&c.H()));return e.onMounted((()=>{const e=l.value;e&&(a.te(e),u.L(e))})),e.onUnmounted((()=>{f(),_(),p(),a.W(),u.W()})),e.watch((()=>r.data.length),(e=>{c.J(5,[e,r.shift])})),e.watch([v],(()=>{u.Y()}),{flush:"post"}),s({findStartIndex:c.v,findEndIndex:c.S}),()=>{const t=r.as,o=r.item,[s,u]=h.value,f=b.value,_=[];for(let t=s,l=u;t<=l;t++){const s=n.default({item:r.data[t],index:t})[0];_.push(e.createVNode(k,{key:E(s,t),F:d,U:c,D:a.re,G:t,V:s,K:i,ee:o},null,8,["_rerender","_store","_resizer","_index","_children","_isHorizontal","_as"]))}return e.createVNode(t,{ref:l,style:{overflowAnchor:"none",flex:"none",position:"relative",visibility:"hidden",width:i?f+"px":"100%",height:i?"100%":f+"px",pointerEvents:m.value?"none":void 0}},"function"==typeof(p=_)||"[object Object]"===Object.prototype.toString.call(p)&&!e.isVNode(p)?_:{default:()=>[_],_:2},8,["style"]);var p}}});exports.VList=N,exports.Virtualizer=R,exports.WindowVirtualizer=H;
|
|
2
2
|
//# sourceMappingURL=index.js.map
|