virtua 0.40.3 → 0.41.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -36,6 +36,26 @@ export interface VGridHandle {
36
36
  * Get current offsetWidth.
37
37
  */
38
38
  readonly viewportWidth: number;
39
+ /**
40
+ * Find the start index of visible range of items.
41
+ */
42
+ findStartIndex: () => [x: number, y: number];
43
+ /**
44
+ * Find the end index of visible range of items.
45
+ */
46
+ findEndIndex: () => [x: number, y: number];
47
+ /**
48
+ * Get item offset from start.
49
+ * @param indexX horizontal index of item
50
+ * @param indexY vertical of item
51
+ */
52
+ getItemOffset(indexX: number, indexY: number): [x: number, y: number];
53
+ /**
54
+ * Get item size.
55
+ * @param indexX horizontal index of item
56
+ * @param indexY vertical of item
57
+ */
58
+ getItemSize(indexX: number, indexY: number): [width: number, height: number];
39
59
  /**
40
60
  * Scroll to the item specified by index.
41
61
  * @param indexX horizontal index of item
@@ -12,7 +12,7 @@ export interface VListHandle extends VirtualizerHandle {
12
12
  /**
13
13
  * Props of {@link VList}.
14
14
  */
15
- export interface VListProps<T> extends Pick<VirtualizerProps<T>, "ref" | "data" | "children" | "overscan" | "itemSize" | "shift" | "horizontal" | "onScroll" | "onScrollEnd">, ViewportComponentAttributes {
15
+ export interface VListProps<T> extends Pick<VirtualizerProps<T>, "ref" | "data" | "children" | "overscan" | "itemSize" | "shift" | "horizontal" | "cache" | "onScroll" | "onScrollEnd">, ViewportComponentAttributes {
16
16
  }
17
17
  /**
18
18
  * Virtualized list component. See {@link VListProps} and {@link VListHandle}.
@@ -1,12 +1,16 @@
1
1
  /**
2
2
  * @jsxImportSource solid-js
3
3
  */
4
- import { JSX, type ValidComponent } from "solid-js";
5
- import { ScrollToIndexOpts } from "../core";
4
+ import { JSX, type ValidComponent, Accessor } from "solid-js";
5
+ import { ScrollToIndexOpts, CacheSnapshot } from "../core";
6
6
  /**
7
7
  * Methods of {@link Virtualizer}.
8
8
  */
9
9
  export interface VirtualizerHandle {
10
+ /**
11
+ * Get current {@link CacheSnapshot}.
12
+ */
13
+ readonly cache: CacheSnapshot;
10
14
  /**
11
15
  * Get current scrollTop, or scrollLeft if horizontal: true.
12
16
  */
@@ -69,7 +73,7 @@ export interface VirtualizerProps<T> {
69
73
  /**
70
74
  * The elements renderer function.
71
75
  */
72
- children: (data: T, index: number) => JSX.Element;
76
+ children: (data: T, index: Accessor<number>) => JSX.Element;
73
77
  /**
74
78
  * Number of items to render above/below the visible bounds of the list. Lower value will give better performance but you can increase to avoid showing blank items in fast scrolling.
75
79
  * @defaultValue 4
@@ -104,6 +108,12 @@ export interface VirtualizerProps<T> {
104
108
  * If true, rendered as a horizontally scrollable list. Otherwise rendered as a vertically scrollable list.
105
109
  */
106
110
  horizontal?: boolean;
111
+ /**
112
+ * You can restore cache by passing a {@link CacheSnapshot} on mount. This is useful when you want to restore scroll position after navigation. The snapshot can be obtained from {@link VirtualizerHandle.cache}.
113
+ *
114
+ * **The length of items should be the same as when you take the snapshot, otherwise restoration may not work as expected.**
115
+ */
116
+ cache?: CacheSnapshot;
107
117
  /**
108
118
  * If you put an element before virtualizer, you have to define its height with this prop.
109
119
  */
@@ -1,12 +1,16 @@
1
1
  /**
2
2
  * @jsxImportSource solid-js
3
3
  */
4
- import { JSX } from "solid-js";
5
- import { ScrollToIndexOpts } from "../core";
4
+ import { JSX, Accessor } from "solid-js";
5
+ import { ScrollToIndexOpts, CacheSnapshot } from "../core";
6
6
  /**
7
7
  * Methods of {@link WindowVirtualizer}.
8
8
  */
9
9
  export interface WindowVirtualizerHandle {
10
+ /**
11
+ * Get current {@link CacheSnapshot}.
12
+ */
13
+ readonly cache: CacheSnapshot;
10
14
  /**
11
15
  * Find the start index of visible range of items.
12
16
  */
@@ -37,7 +41,7 @@ export interface WindowVirtualizerProps<T> {
37
41
  /**
38
42
  * The elements renderer function.
39
43
  */
40
- children: (data: T, index: number) => JSX.Element;
44
+ children: (data: T, index: Accessor<number>) => JSX.Element;
41
45
  /**
42
46
  * Number of items to render above/below the visible bounds of the list. Lower value will give better performance but you can increase to avoid showing blank items in fast scrolling.
43
47
  * @defaultValue 4
@@ -58,6 +62,12 @@ export interface WindowVirtualizerProps<T> {
58
62
  * If true, rendered as a horizontally scrollable list. Otherwise rendered as a vertically scrollable list.
59
63
  */
60
64
  horizontal?: boolean;
65
+ /**
66
+ * You can restore cache by passing a {@link CacheSnapshot} on mount. This is useful when you want to restore scroll position after navigation. The snapshot can be obtained from {@link WindowVirtualizerHandle.cache}.
67
+ *
68
+ * **The length of items should be the same as when you take the snapshot, otherwise restoration may not work as expected.**
69
+ */
70
+ cache?: CacheSnapshot;
61
71
  /**
62
72
  * Callback invoked whenever scroll offset changes.
63
73
  */
@@ -1,2 +1,2 @@
1
- var e=require("solid-js/web"),t=require("solid-js");const r=null,{min:n,max:o,abs:s,floor:i}=Math,l=(e,t,r)=>n(r,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,f=(e,t,r)=>{const n=r?"unshift":"push";for(let r=0;r<t;r++)e[n](u);return e},d=(e,t)=>{const r=e.o[t];return r===u?e.i:r},h=(e,t,r)=>{const o=e.o[t]===u;return e.o[t]=r,e.l=n(t,e.l),o},v=(e,t)=>{if(!e.u)return 0;if(e.l>=t)return e.h[t];e.l<0&&(e.h[0]=0,e.l=0);let r=e.l,n=e.h[r];for(;r<t;)n+=d(e,r),e.h[++r]=n;return e.l=t,n},g=(e,t,r=0,n=e.u-1)=>{for(;r<=n;){const o=i((r+n)/2),s=v(e,o);if(s<=t){if(s+d(e,o)>t)return o;r=o+1}else n=o-1}return l(r,0,e.u-1)},p=(e,t,r)=>{const o=t-e.u;return e.l=r?-1:n(t-1,e.l),e.u=t,o>0?(f(e.h,o),f(e.o,o,r),e.i*o):(e.h.splice(o),(r?e.o.splice(0,-o):e.o.splice(o)).reduce(((t,r)=>t-(r===u?e.i:r)),0))},m="undefined"!=typeof window,_=()=>document.documentElement,w=e=>e.ownerDocument,$=e=>e.defaultView,S=/*#__PURE__*/a((()=>!!m&&"rtl"===getComputedStyle(_()).direction)),x=/*#__PURE__*/a((()=>/iP(hone|od|ad)/.test(navigator.userAgent))),b=/*#__PURE__*/a((()=>"scrollBehavior"in _().style)),y=e=>!!e.v(),z=(e,t=40,i=4,l=0,c,a=!1)=>{let m=!!l,_=1,w=0,$=0,S=0,b=0,y=0,z=0,I=0,k=0,T=m?[0,o(l-1,0)]:r,M=[0,0],E=0;const R=((e,t)=>({i:t,o:f([],e),u:e,l:-1,h:f([],e)}))(e,t),O=new Set,q=()=>S-$,J=()=>q()+y+b,P=e=>((e,t,r,o)=>{if(o=n(o,e.u-1),v(e,o)<=t){const n=g(e,t+r,o);return[g(e,t,o,n),n]}{const n=g(e,t,void 0,o);return[n,g(e,t+r,n)]}})(R,e,w,M[0]),B=()=>(e=>e.u?v(e,e.u-1)+d(e,e.u-1):0)(R),H=e=>v(R,e)-y,L=e=>d(R,e),W=e=>{e&&(x()&&0!==I?y+=e:b+=e)};return{p:()=>_,m:()=>(e=>[e.o.slice(),e.i])(R),_:()=>{let e,t;return z?[e,t]=M:([e,t]=M=P(o(0,J())),T&&(e=n(e,T[0]),t=o(t,T[1]))),1!==I&&(e-=o(0,i)),2!==I&&(t+=o(0,i)),[o(e,0),n(t,R.u-1)]},$:()=>g(R,J()),S:()=>g(R,J()+w),I:e=>R.o[e]===u,k:()=>!!T&&R.o.slice(o(0,T[0]-1),n(R.u-1,T[1]+1)+1).includes(u),T:H,M:L,R:()=>R.u,O:()=>S,q:()=>0!==I,v:()=>w,J:()=>$,P:B,B:()=>(z=b,b=0,[z,2===k||q()+w>=B()]),H:(e,t)=>{const r=[e,t];return O.add(r),()=>{O.delete(r)}},L:(e,t)=>{let n,i,l=0;switch(e){case 1:{const e=z;z=0;const n=t-S,o=s(n);e&&o<s(e)+1||0!==k||(I=n<0?2:1),m&&(T=r,m=!1),S=t,l=4;const c=q();c>=-w&&c<=B()&&(l+=1,i=o>w);break}case 2:l=8,0!==I&&(n=!0,l+=1),I=0,k=0,T=r;break;case 3:{const e=t.filter((([e,t])=>R.o[e]!==t));if(!e.length)break;W(e.reduce(((e,[t,r])=>((2===k||(T?!m&&t<T[0]:H(t)+(0===I&&0===k?L(t):0)<q()))&&(e+=r-L(t)),e)),0));for(const[t,r]of e){const e=L(t),n=h(R,t,r);a&&(E+=n?r:r-e)}a&&w&&E>w&&(W(((e,t)=>{let r=0;const n=[];e.o.forEach(((e,o)=>{e!==u&&(n.push(e),o<t&&r++)})),e.l=-1;const s=(i=n,[...i].sort(((e,t)=>e-t)));var i;const l=s.length,c=l/2|0,a=l%2==0?(s[c-1]+s[c])/2:s[c],f=e.i;return((e.i=a)-f)*o(t-r,0)})(R,g(R,J()))),a=!1),l=3,i=!0;break}case 4:w!==t&&(w=t,l=3);break;case 5:t[1]?(W(p(R,t[0],!0)),k=2,l=1):(p(R,t[0]),l=1);break;case 6:$=t;break;case 7:k=1;break;case 8:T=P(t),l=1}l&&(_=1+(2147483647&_),n&&y&&(b+=y,y=0),O.forEach((([e,t])=>{l&e&&t(i)})))}}},I=setTimeout,k=(e,t)=>t&&S()?-e:e,T=(e,t,n,o,s,i)=>{const l=Date.now;let c=0,a=!1,u=!1,f=!1,d=!1;const h=(()=>{let t;const n=()=>{t!=r&&clearTimeout(t)},o=()=>{n(),t=I((()=>{t=r,(()=>{if(a||u)return a=!1,void h();f=!1,e.L(2)})()}),150)};return o.W=n,o})(),v=()=>{c=l(),f&&(d=!0),i&&e.L(6,i()),e.L(1,o()),h()},g=t=>{if(a||!e.q()||t.ctrlKey)return;const r=l()-c;150>r&&50<r&&(n?t.deltaX:t.deltaY)&&(a=!0)},p=()=>{u=!0,f=d=!1},m=()=>{u=!1,x()&&(f=!0)};return t.addEventListener("scroll",v),t.addEventListener("wheel",g,{passive:!0}),t.addEventListener("touchstart",p,{passive:!0}),t.addEventListener("touchend",m,{passive:!0}),{j:()=>{t.removeEventListener("scroll",v),t.removeEventListener("wheel",g),t.removeEventListener("touchstart",p),t.removeEventListener("touchend",m),h.W()},C:()=>{const[t,r]=e.B();t&&(s(k(t,n),r,d),d=!1,r&&e.v()>e.P()&&e.L(1,o()))}}},M=e=>{let t;return{U(r){(t||(t=new($(w(r)).ResizeObserver)(e))).observe(r)},V(e){t.unobserve(e)},j(){t&&t.disconnect()}}},E=r=>{let n;r=t.mergeProps({X:"div"},r),t.createEffect((()=>{n&&t.onCleanup(r.Y(n,r.D))}));const o=t.createMemo((()=>{const e=r.F,t={position:"absolute",[e?"height":"width"]:"100%",[e?"top":"left"]:"0px",[e?S()?"right":"left":"top"]:r.A+"px",visibility:r.G?"hidden":"visible"};return e&&(t.display="flex"),t}));return e.createComponent(e.Dynamic,{get component(){return r.X},ref(e){"function"==typeof n?n(e):n=e},get style(){return o()},get children(){return r.K}})},R=e=>{let r=new Map;return t.onCleanup((()=>{for(const e of r.values())e.j()})),t.createMemo((()=>{const n=e.N,[o,s]=e.Z,i=new Map,l=[];for(let c=o;c<=s;c++){const o=n[c],s=r.get(c);l.push(s?s.ee:t.createRoot((r=>{const n=t.createSignal(o),s=e.te(n[0],c);return i.set(c,{re:n,ee:s,j:r}),s}))),s&&(o!==s.re&&s.re[1](o),i.set(c,s))}for(const[e,t]of r.entries())i.has(e)||t.j();return r=i,l}))},O=(e,t)=>e[0]===t[0]&&e[1]===t[1],q=n=>{let s;const{itemSize:i,horizontal:a=!1,overscan:u}=n;n=t.mergeProps({as:"div"},n);const f=z(n.data.length,i,u,void 0,0,!i),d=((e,t)=>{let n;const o=t?"width":"height",s=new WeakMap,i=M((t=>{const i=[];for(const{target:l,contentRect:c}of t)if(l.offsetParent)if(l===n)e.L(4,c[o]);else{const e=s.get(l);e!=r&&i.push([e,c[o]])}i.length&&e.L(3,i)}));return{ne(e){i.U(n=e)},oe:(e,t)=>(s.set(e,t),i.U(e),()=>{s.delete(e),i.V(e)}),se:i.j}})(f,a),h=((e,t)=>{let r,n,o;const s=t?"scrollLeft":"scrollTop",i=t?"overflowX":"overflowY",a=async(n,i)=>{if(!r)return void c((()=>a(n,i)));o&&o();const l=()=>{let t;return[new Promise(((r,n)=>{t=r,o=n,y(e)&&I(n,150)})),e.H(2,(()=>{t&&t()}))]};if(i&&b()){for(;e.L(8,n()),e.k();){const[e,t]=l();try{await e}catch(e){return}finally{t()}}r.scrollTo({[t?"left":"top"]:k(n(),t),behavior:"smooth"})}else for(;;){const[o,i]=l();try{r[s]=k(n(),t),e.L(7),await o}catch(e){return}finally{i()}}};return{ie(l){r=l,n=T(e,l,t,(()=>k(l[s],t)),((t,r,n)=>{if(n){const e=l.style,t=e[i];e[i]="hidden",I((()=>{e[i]=t}))}r?(l[s]=e.O()+t,o&&o()):l[s]+=t}))},se(){n&&n.j()},le(e){a((()=>e))},ce(t){t+=e.O(),a((()=>t))},ae(t,{align:r,smooth:n,offset:o=0}={}){if(t=l(t,0,e.R()-1),"nearest"===r){const n=e.T(t),o=e.O();if(n<o)r="start";else{if(!(n+e.M(t)>o+e.v()))return;r="end"}}a((()=>o+e.J()+e.T(t)+("end"===r?e.M(t)-e.v():"center"===r?(e.M(t)-e.v())/2:0)),n)},ue:()=>{n&&n.C()}}})(f,a),[v,g]=t.createSignal(f.p()),p=f.H(1,(()=>{g(f.p())})),m=f.H(4,(()=>{var e;null===(e=n.onScroll)||void 0===e||e.call(n,f.O())})),_=f.H(8,(()=>{var e;null===(e=n.onScrollEnd)||void 0===e||e.call(n)})),w=t.createMemo((e=>{v();const t=f._();return e&&O(e,t)?e:t})),$=t.createMemo((()=>v()&&f.q())),S=t.createMemo((()=>v()&&f.P()));return t.onMount((()=>{n.ref&&n.ref({get scrollOffset(){return f.O()},get scrollSize(){return(e=>o(e.P(),e.v()))(f)},get viewportSize(){return f.v()},findStartIndex:f.$,findEndIndex:f.S,getItemOffset:f.T,getItemSize:f.M,scrollToIndex:h.ae,scrollTo:h.le,scrollBy:h.ce});const e=n.scrollRef||s.parentElement;d.ne(e),h.ie(e),t.onCleanup((()=>{n.ref&&n.ref(),p(),m(),_(),d.se(),h.se()}))})),t.createComputed(t.on((()=>n.data.length),(e=>{e!==f.R()&&f.L(5,[e,n.shift])}))),t.createComputed(t.on((()=>n.startMargin||0),(e=>{e!==f.J()&&f.L(6,e)}))),t.createEffect(t.on(v,(()=>{h.ue()}))),e.createComponent(e.Dynamic,{get component(){return n.as},ref(e){"function"==typeof s?s(e):s=e},get style(){return{"overflow-anchor":"none",flex:"none",position:"relative",visibility:"hidden",width:a?S()+"px":"100%",height:a?"100%":S()+"px","pointer-events":$()?"none":void 0}},get children(){return e.createComponent(R,{get N(){return n.data},get Z(){return w()},te:(r,o)=>{const s=t.createMemo((()=>(v(),f.T(o)))),i=t.createMemo((()=>(v(),f.I(o))));return e.createComponent(E,{get X(){return n.item},D:o,get Y(){return d.oe},get A(){return s()},get G(){return i()},get K(){return n.children(r(),o)},F:a})}})}})};var J=/*#__PURE__*/e.template("<div>"),P=/*#__PURE__*/e.template("<div>");exports.VList=t=>{const{ref:r,data:n,children:o,overscan:s,itemSize:i,shift:l,horizontal:c,onScroll:a,onScrollEnd:u,style:f,...d}=t;return h=J(),e.spread(h,e.mergeProps(d,{get style(){return{display:c?"inline-block":"block",[c?"overflow-x":"overflow-y"]:"auto",contain:"strict",width:"100%",height:"100%",...t.style}}}),!1,!0),e.insert(h,e.createComponent(q,{ref(e){var r=t.ref;"function"==typeof r?r(e):t.ref=e},get data(){return t.data},get overscan(){return t.overscan},get itemSize(){return t.itemSize},get shift(){return t.shift},horizontal:c,get onScroll(){return t.onScroll},get onScrollEnd(){return t.onScrollEnd},get children(){return t.children}})),h;var h},exports.Virtualizer=q,exports.WindowVirtualizer=n=>{let o;const{ref:s,data:i,children:a,overscan:u,itemSize:f,shift:d,horizontal:h=!1,onScrollEnd:v}=n,g=z(n.data.length,f,u,void 0,0,!f),p=((e,t)=>{const n=t?"width":"height",o=t?"innerWidth":"innerHeight",s=new WeakMap,i=M((t=>{const o=[];for(const{target:e,contentRect:i}of t){if(!e.offsetParent)continue;const t=s.get(e);t!=r&&o.push([t,i[n]])}o.length&&e.L(3,o)}));let l;return{ne(t){const r=$(w(t)),n=()=>{e.L(4,r[o])};r.addEventListener("resize",n),n(),l=()=>{r.removeEventListener("resize",n)}},oe:(e,t)=>(s.set(e,t),i.U(e),()=>{s.delete(e),i.V(e)}),se(){l&&l(),i.j()}}})(g,h),m=((e,t)=>{let r,n,o;const s=(e,t,r,n,o=0)=>{const i=n?"offsetLeft":"offsetTop",l=o+(n&&S()?r.innerWidth-e[i]-e.offsetWidth:e[i]),c=e.offsetParent;return e!==t&&c?s(c,t,r,n,l):l},i=async(n,s)=>{if(!r)return void c((()=>i(n,s)));o&&o();const l=()=>{let t;return[new Promise(((r,n)=>{t=r,o=n,y(e)&&I(n,150)})),e.H(2,(()=>{t&&t()}))]},a=$(w(r));if(s&&b()){for(;e.L(8,n()),e.k();){const[e,t]=l();try{await e}catch(e){return}finally{t()}}a.scroll({[t?"left":"top"]:k(n(),t),behavior:"smooth"})}else for(;;){const[r,o]=l();try{a.scroll({[t?"left":"top"]:k(n(),t)}),e.L(7),await r}catch(e){return}finally{o()}}};return{ie(o){r=o;const i=t?"scrollX":"scrollY",l=w(o),c=$(l),a=l.body;n=T(e,c,t,(()=>k(c[i],t)),((r,n)=>{n?c.scroll({[t?"left":"top"]:e.O()+r}):c.scrollBy(t?r:0,t?0:r)}),(()=>s(o,a,c,t)))},se(){n&&n.j(),r=void 0},ue:()=>{n&&n.C()},ae(n,{align:o,smooth:c,offset:a=0}={}){if(!r)return;if(n=l(n,0,e.R()-1),"nearest"===o){const t=e.T(n),r=e.O();if(t<r)o="start";else{if(!(t+e.M(n)>r+e.v()))return;o="end"}}const u=w(r),f=$(u),d=u.documentElement,h=()=>e.v()-(t?d.clientWidth:d.clientHeight);i((()=>a+s(r,u.body,f,t)+e.T(n)+("end"===o?e.M(n)-(e.v()-h()):"center"===o?(e.M(n)-(e.v()-h()))/2:0)),c)}}})(g,h),[_,x]=t.createSignal(g.p()),q=g.H(1,(()=>{x(g.p())})),J=g.H(4,(()=>{var e;null===(e=n.onScroll)||void 0===e||e.call(n)})),B=g.H(8,(()=>{var e;null===(e=n.onScrollEnd)||void 0===e||e.call(n)})),H=t.createMemo((e=>{_();const t=g._();return e&&O(e,t)?e:t})),L=t.createMemo((()=>_()&&g.q())),W=t.createMemo((()=>_()&&g.P()));return t.onMount((()=>{n.ref&&n.ref({findStartIndex:g.$,findEndIndex:g.S,scrollToIndex:m.ae}),p.ne(o),m.ie(o),t.onCleanup((()=>{n.ref&&n.ref(),q(),J(),B(),p.se(),m.se()}))})),t.createComputed(t.on((()=>n.data.length),(e=>{e!==g.R()&&g.L(5,[e,n.shift])}))),t.createEffect(t.on(_,(()=>{m.ue()}))),j=P(),"function"==typeof(C=o)?e.use(C,j):o=j,j.style.setProperty("overflow-anchor","none"),j.style.setProperty("flex","none"),j.style.setProperty("position","relative"),j.style.setProperty("visibility","hidden"),e.insert(j,e.createComponent(R,{get N(){return n.data},get Z(){return H()},te:(r,o)=>{const s=t.createMemo((()=>(_(),g.T(o)))),i=t.createMemo((()=>(_(),g.I(o))));return e.createComponent(E,{D:o,get Y(){return p.oe},get A(){return s()},get G(){return i()},get K(){return n.children(r(),o)},F:h})}})),e.effect((e=>{var t=h?W()+"px":"100%",r=h?"100%":W()+"px",n=L()?"none":void 0;return t!==e.e&&(null!=(e.e=t)?j.style.setProperty("width",t):j.style.removeProperty("width")),r!==e.t&&(null!=(e.t=r)?j.style.setProperty("height",r):j.style.removeProperty("height")),n!==e.a&&(null!=(e.a=n)?j.style.setProperty("pointer-events",n):j.style.removeProperty("pointer-events")),e}),{e:void 0,t:void 0,a:void 0}),j;var j,C};
1
+ var e=require("solid-js/web"),t=require("solid-js");const r=null,{min:n,max:o,abs:s,floor:i}=Math,c=(e,t,r)=>n(r,o(t,e)),l="function"==typeof queueMicrotask?queueMicrotask:e=>{Promise.resolve().then(e)},a=e=>{let t,r;return()=>(t||(t=!0,r=e()),r)},u=-1,f=(e,t,r)=>{const n=r?"unshift":"push";for(let r=0;r<t;r++)e[n](u);return e},d=(e,t)=>{const r=e.o[t];return r===u?e.i:r},h=(e,t,r)=>{const o=e.o[t]===u;return e.o[t]=r,e.l=n(t,e.l),o},v=(e,t)=>{if(!e.u)return 0;if(e.l>=t)return e.h[t];e.l<0&&(e.h[0]=0,e.l=0);let r=e.l,n=e.h[r];for(;r<t;)n+=d(e,r),e.h[++r]=n;return e.l=t,n},g=(e,t,r=0,n=e.u-1)=>{for(;r<=n;){const o=i((r+n)/2),s=v(e,o);if(s<=t){if(s+d(e,o)>t)return o;r=o+1}else n=o-1}return c(r,0,e.u-1)},p=(e,t,r)=>{const o=t-e.u;return e.l=r?-1:n(t-1,e.l),e.u=t,o>0?(f(e.h,o),f(e.o,o,r),e.i*o):(e.h.splice(o),(r?e.o.splice(0,-o):e.o.splice(o)).reduce(((t,r)=>t-(r===u?e.i:r)),0))},m="undefined"!=typeof window,$=()=>document.documentElement,w=e=>e.ownerDocument,S=e=>e.defaultView,x=/*#__PURE__*/a((()=>!!m&&"rtl"===getComputedStyle($()).direction)),b=/*#__PURE__*/a((()=>/iP(hone|od|ad)/.test(navigator.userAgent))),y=/*#__PURE__*/a((()=>"scrollBehavior"in $().style)),_=e=>!!e.v(),z=(e,t=40,i=4,c=0,l,a=!1)=>{let m=!!c,$=1,w=0,S=0,x=0,y=0,_=0,z=0,I=0,k=0,T=m?[0,o(c-1,0)]:r,E=[0,0],R=0;const M=((e,t,r)=>({i:r?r[1]:t,o:r&&r[0]?f(r[0].slice(0,n(e,r[0].length)),o(0,e-r[0].length)):f([],e),u:e,l:-1,h:f([],e)}))(e,t,l),O=new Set,q=()=>x-S,J=()=>q()+_+y,P=e=>((e,t,r,o)=>{if(o=n(o,e.u-1),v(e,o)<=t){const n=g(e,t+r,o);return[g(e,t,o,n),n]}{const n=g(e,t,void 0,o);return[n,g(e,t+r,n)]}})(M,e,w,E[0]),B=()=>(e=>e.u?v(e,e.u-1)+d(e,e.u-1):0)(M),H=e=>v(M,e)-_,L=e=>d(M,e),W=e=>{e&&(b()&&0!==I?_+=e:y+=e)};return{p:()=>$,m:()=>(e=>[e.o.slice(),e.i])(M),$:()=>{let e,t;return z?[e,t]=E:([e,t]=E=P(o(0,J())),T&&(e=n(e,T[0]),t=o(t,T[1]))),1!==I&&(e-=o(0,i)),2!==I&&(t+=o(0,i)),[o(e,0),n(t,M.u-1)]},S:()=>g(M,J()),_:()=>g(M,J()+w),I:e=>M.o[e]===u,k:()=>!!T&&M.o.slice(o(0,T[0]-1),n(M.u-1,T[1]+1)+1).includes(u),T:H,R:L,M:()=>M.u,O:()=>x,q:()=>0!==I,v:()=>w,J:()=>S,P:B,B:()=>(z=y,y=0,[z,2===k||q()+w>=B()]),H:(e,t)=>{const r=[e,t];return O.add(r),()=>{O.delete(r)}},L:(e,t)=>{let n,i,c=0;switch(e){case 1:{const e=z;z=0;const n=t-x,o=s(n);e&&o<s(e)+1||0!==k||(I=n<0?2:1),m&&(T=r,m=!1),x=t,c=4;const l=q();l>=-w&&l<=B()&&(c+=1,i=o>w);break}case 2:c=8,0!==I&&(n=!0,c+=1),I=0,k=0,T=r;break;case 3:{const e=t.filter((([e,t])=>M.o[e]!==t));if(!e.length)break;W(e.reduce(((e,[t,r])=>((2===k||(T?!m&&t<T[0]:H(t)+(0===I&&0===k?L(t):0)<q()))&&(e+=r-L(t)),e)),0));for(const[t,r]of e){const e=L(t),n=h(M,t,r);a&&(R+=n?r:r-e)}a&&w&&R>w&&(W(((e,t)=>{let r=0;const n=[];e.o.forEach(((e,o)=>{e!==u&&(n.push(e),o<t&&r++)})),e.l=-1;const s=(i=n,[...i].sort(((e,t)=>e-t)));var i;const c=s.length,l=c/2|0,a=c%2==0?(s[l-1]+s[l])/2:s[l],f=e.i;return((e.i=a)-f)*o(t-r,0)})(M,g(M,J()))),a=!1),c=3,i=!0;break}case 4:w!==t&&(w=t,c=3);break;case 5:t[1]?(W(p(M,t[0],!0)),k=2,c=1):(p(M,t[0]),c=1);break;case 6:S=t;break;case 7:k=1;break;case 8:T=P(t),c=1}c&&($=1+(2147483647&$),n&&_&&(y+=_,_=0),O.forEach((([e,t])=>{c&e&&t(i)})))}}},I=setTimeout,k=(e,t)=>t&&x()?-e:e,T=(e,t,n,o,s,i)=>{const c=Date.now;let l=0,a=!1,u=!1,f=!1,d=!1;const h=(()=>{let t;const n=()=>{t!=r&&clearTimeout(t)},o=()=>{n(),t=I((()=>{t=r,(()=>{if(a||u)return a=!1,void h();f=!1,e.L(2)})()}),150)};return o.W=n,o})(),v=()=>{l=c(),f&&(d=!0),i&&e.L(6,i()),e.L(1,o()),h()},g=t=>{if(a||!e.q()||t.ctrlKey)return;const r=c()-l;150>r&&50<r&&(n?t.deltaX:t.deltaY)&&(a=!0)},p=()=>{u=!0,f=d=!1},m=()=>{u=!1,b()&&(f=!0)};return t.addEventListener("scroll",v),t.addEventListener("wheel",g,{passive:!0}),t.addEventListener("touchstart",p,{passive:!0}),t.addEventListener("touchend",m,{passive:!0}),{j:()=>{t.removeEventListener("scroll",v),t.removeEventListener("wheel",g),t.removeEventListener("touchstart",p),t.removeEventListener("touchend",m),h.W()},C:()=>{const[t,r]=e.B();t&&(s(k(t,n),r,d),d=!1,r&&e.v()>e.P()&&e.L(1,o()))}}},E=e=>{let t;return{U(r){(t||(t=new(S(w(r)).ResizeObserver)(e))).observe(r)},V(e){t.unobserve(e)},j(){t&&t.disconnect()}}},R=r=>{let n;r=t.mergeProps({X:"div"},r),t.createEffect((()=>{n&&t.onCleanup(r.Y(n,r.D))}));const o=t.createMemo((()=>{const e=r.F,t={position:"absolute",[e?"height":"width"]:"100%",[e?"top":"left"]:"0px",[e?x()?"right":"left":"top"]:r.A+"px",visibility:r.G?"hidden":"visible"};return e&&(t.display="flex"),t}));return e.createComponent(e.Dynamic,{get component(){return r.X},ref(e){"function"==typeof n?n(e):n=e},get style(){return o()},get children(){return r.K}})},M=(e,t)=>e[0]===t[0]&&e[1]===t[1],O=n=>{let s;const{itemSize:i,horizontal:a=!1,overscan:u,cache:f}=n;n=t.mergeProps({as:"div"},n);const d=z(n.data.length,i,u,void 0,f,!i),h=((e,t)=>{let n;const o=t?"width":"height",s=new WeakMap,i=E((t=>{const i=[];for(const{target:c,contentRect:l}of t)if(c.offsetParent)if(c===n)e.L(4,l[o]);else{const e=s.get(c);e!=r&&i.push([e,l[o]])}i.length&&e.L(3,i)}));return{N(e){i.U(n=e)},Z:(e,t)=>(s.set(e,t),i.U(e),()=>{s.delete(e),i.V(e)}),ee:i.j}})(d,a),v=((e,t)=>{let r,n,o;const s=t?"scrollLeft":"scrollTop",i=t?"overflowX":"overflowY",a=async(n,i)=>{if(!r)return void l((()=>a(n,i)));o&&o();const c=()=>{let t;return[new Promise(((r,n)=>{t=r,o=n,_(e)&&I(n,150)})),e.H(2,(()=>{t&&t()}))]};if(i&&y()){for(;e.L(8,n()),e.k();){const[e,t]=c();try{await e}catch(e){return}finally{t()}}r.scrollTo({[t?"left":"top"]:k(n(),t),behavior:"smooth"})}else for(;;){const[o,i]=c();try{r[s]=k(n(),t),e.L(7),await o}catch(e){return}finally{i()}}};return{te(c){r=c,n=T(e,c,t,(()=>k(c[s],t)),((t,r,n)=>{if(n){const e=c.style,t=e[i];e[i]="hidden",I((()=>{e[i]=t}))}r?(c[s]=e.O()+t,o&&o()):c[s]+=t}))},ee(){n&&n.j()},re(e){a((()=>e))},ne(t){t+=e.O(),a((()=>t))},oe(t,{align:r,smooth:n,offset:o=0}={}){if(t=c(t,0,e.M()-1),"nearest"===r){const n=e.T(t),o=e.O();if(n<o)r="start";else{if(!(n+e.R(t)>o+e.v()))return;r="end"}}a((()=>o+e.J()+e.T(t)+("end"===r?e.R(t)-e.v():"center"===r?(e.R(t)-e.v())/2:0)),n)},se:()=>{n&&n.C()}}})(d,a),[g,p]=t.createSignal(d.p()),m=d.H(1,(()=>{p(d.p())})),$=d.H(4,(()=>{var e;null===(e=n.onScroll)||void 0===e||e.call(n,d.O())})),w=d.H(8,(()=>{var e;null===(e=n.onScrollEnd)||void 0===e||e.call(n)})),S=t.createMemo((e=>{g();const t=d.$();return e&&M(e,t)?e:t})),x=t.createMemo((()=>g()&&d.q())),b=t.createMemo((()=>g()&&d.P()));t.onMount((()=>{n.ref&&n.ref({get cache(){return d.m()},get scrollOffset(){return d.O()},get scrollSize(){return(e=>o(e.P(),e.v()))(d)},get viewportSize(){return d.v()},findStartIndex:d.S,findEndIndex:d._,getItemOffset:d.T,getItemSize:d.R,scrollToIndex:v.oe,scrollTo:v.re,scrollBy:v.ne});const e=n.scrollRef||s.parentElement;h.N(e),v.te(e),t.onCleanup((()=>{n.ref&&n.ref(),m(),$(),w(),h.ee(),v.ee()}))})),t.createComputed(t.on((()=>n.data.length),(e=>{e!==d.M()&&d.L(5,[e,n.shift])}))),t.createComputed(t.on((()=>n.startMargin||0),(e=>{e!==d.J()&&d.L(6,e)}))),t.createEffect(t.on(g,(()=>{v.se()})));const O=t.createMemo((()=>{const[e,t]=S();return t>=0?n.data.slice(e,t+1):[]}));return e.createComponent(e.Dynamic,{get component(){return n.as},ref(e){"function"==typeof s?s(e):s=e},get style(){return{"overflow-anchor":"none",flex:"none",position:"relative",visibility:"hidden",width:a?b()+"px":"100%",height:a?"100%":b()+"px","pointer-events":x()?"none":void 0}},get children(){return e.createComponent(t.For,{get each(){return O()},children:(r,o)=>{const s=t.createMemo((()=>S()[0]+o())),i=t.createMemo((()=>(g(),d.T(s())))),c=t.createMemo((()=>(g(),d.I(s())))),l=t.createMemo((()=>t.untrack((()=>n.children(r,s)))));return e.createComponent(R,{get X(){return n.item},get D(){return s()},get Y(){return h.Z},get A(){return i()},get G(){return c()},get K(){return l()},F:a})}})}})};var q=/*#__PURE__*/e.template("<div>"),J=/*#__PURE__*/e.template("<div>");exports.VList=t=>{const{ref:r,data:n,children:o,overscan:s,itemSize:i,shift:c,horizontal:l,cache:a,onScroll:u,onScrollEnd:f,style:d,...h}=t;return v=q(),e.spread(v,e.mergeProps(h,{get style(){return{display:l?"inline-block":"block",[l?"overflow-x":"overflow-y"]:"auto",contain:"strict",width:"100%",height:"100%",...t.style}}}),!1,!0),e.insert(v,e.createComponent(O,{ref(e){var r=t.ref;"function"==typeof r?r(e):t.ref=e},get data(){return t.data},get overscan(){return t.overscan},get itemSize(){return t.itemSize},get shift(){return t.shift},horizontal:l,cache:a,get onScroll(){return t.onScroll},get onScrollEnd(){return t.onScrollEnd},get children(){return t.children}})),v;var v},exports.Virtualizer=O,exports.WindowVirtualizer=n=>{let o;const{ref:s,data:i,children:a,overscan:u,itemSize:f,shift:d,horizontal:h=!1,cache:v,onScrollEnd:g}=n,p=z(n.data.length,f,u,void 0,v,!f),m=((e,t)=>{const n=t?"width":"height",o=t?"innerWidth":"innerHeight",s=new WeakMap,i=E((t=>{const o=[];for(const{target:e,contentRect:i}of t){if(!e.offsetParent)continue;const t=s.get(e);t!=r&&o.push([t,i[n]])}o.length&&e.L(3,o)}));let c;return{N(t){const r=S(w(t)),n=()=>{e.L(4,r[o])};r.addEventListener("resize",n),n(),c=()=>{r.removeEventListener("resize",n)}},Z:(e,t)=>(s.set(e,t),i.U(e),()=>{s.delete(e),i.V(e)}),ee(){c&&c(),i.j()}}})(p,h),$=((e,t)=>{let r,n,o;const s=(e,t,r,n,o=0)=>{const i=n?"offsetLeft":"offsetTop",c=o+(n&&x()?r.innerWidth-e[i]-e.offsetWidth:e[i]),l=e.offsetParent;return e!==t&&l?s(l,t,r,n,c):c},i=async(n,s)=>{if(!r)return void l((()=>i(n,s)));o&&o();const c=()=>{let t;return[new Promise(((r,n)=>{t=r,o=n,_(e)&&I(n,150)})),e.H(2,(()=>{t&&t()}))]},a=S(w(r));if(s&&y()){for(;e.L(8,n()),e.k();){const[e,t]=c();try{await e}catch(e){return}finally{t()}}a.scroll({[t?"left":"top"]:k(n(),t),behavior:"smooth"})}else for(;;){const[r,o]=c();try{a.scroll({[t?"left":"top"]:k(n(),t)}),e.L(7),await r}catch(e){return}finally{o()}}};return{te(o){r=o;const i=t?"scrollX":"scrollY",c=w(o),l=S(c),a=c.body;n=T(e,l,t,(()=>k(l[i],t)),((r,n)=>{n?l.scroll({[t?"left":"top"]:e.O()+r}):l.scrollBy(t?r:0,t?0:r)}),(()=>s(o,a,l,t)))},ee(){n&&n.j(),r=void 0},se:()=>{n&&n.C()},oe(n,{align:o,smooth:l,offset:a=0}={}){if(!r)return;if(n=c(n,0,e.M()-1),"nearest"===o){const t=e.T(n),r=e.O();if(t<r)o="start";else{if(!(t+e.R(n)>r+e.v()))return;o="end"}}const u=w(r),f=S(u),d=u.documentElement,h=()=>e.v()-(t?d.clientWidth:d.clientHeight);i((()=>a+s(r,u.body,f,t)+e.T(n)+("end"===o?e.R(n)-(e.v()-h()):"center"===o?(e.R(n)-(e.v()-h()))/2:0)),l)}}})(p,h),[b,O]=t.createSignal(p.p()),q=p.H(1,(()=>{O(p.p())})),P=p.H(4,(()=>{var e;null===(e=n.onScroll)||void 0===e||e.call(n)})),B=p.H(8,(()=>{var e;null===(e=n.onScrollEnd)||void 0===e||e.call(n)})),H=t.createMemo((e=>{b();const t=p.$();return e&&M(e,t)?e:t})),L=t.createMemo((()=>b()&&p.q())),W=t.createMemo((()=>b()&&p.P()));t.onMount((()=>{n.ref&&n.ref({get cache(){return p.m()},findStartIndex:p.S,findEndIndex:p._,scrollToIndex:$.oe}),m.N(o),$.te(o),t.onCleanup((()=>{n.ref&&n.ref(),q(),P(),B(),m.ee(),$.ee()}))})),t.createComputed(t.on((()=>n.data.length),(e=>{e!==p.M()&&p.L(5,[e,n.shift])}))),t.createEffect(t.on(b,(()=>{$.se()})));const j=t.createMemo((()=>{const[e,t]=H();return t>=0?n.data.slice(e,t+1):[]}));return C=J(),"function"==typeof(U=o)?e.use(U,C):o=C,C.style.setProperty("overflow-anchor","none"),C.style.setProperty("flex","none"),C.style.setProperty("position","relative"),C.style.setProperty("visibility","hidden"),e.insert(C,e.createComponent(t.For,{get each(){return j()},children:(r,o)=>{const s=t.createMemo((()=>H()[0]+o())),i=t.createMemo((()=>(b(),p.T(s())))),c=t.createMemo((()=>(b(),p.I(s())))),l=t.createMemo((()=>t.untrack((()=>n.children(r,s)))));return e.createComponent(R,{get D(){return s()},get Y(){return m.Z},get A(){return i()},get G(){return c()},get K(){return l()},F:h})}})),e.effect((e=>{var t=h?W()+"px":"100%",r=h?"100%":W()+"px",n=L()?"none":void 0;return t!==e.e&&(null!=(e.e=t)?C.style.setProperty("width",t):C.style.removeProperty("width")),r!==e.t&&(null!=(e.t=r)?C.style.setProperty("height",r):C.style.removeProperty("height")),n!==e.a&&(null!=(e.a=n)?C.style.setProperty("pointer-events",n):C.style.removeProperty("pointer-events")),e}),{e:void 0,t:void 0,a:void 0}),C;var C,U};
2
2
  //# sourceMappingURL=index.js.map