virtua 0.45.2 → 0.46.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.
@@ -122,10 +122,10 @@ export interface VGridProps extends ViewportComponentAttributes {
122
122
  */
123
123
  cellWidth?: number;
124
124
  /**
125
- * Number of items to render above/below the visible bounds of the grid. Lower value will give better performance but you can increase to avoid showing blank items in fast scrolling.
126
- * @defaultValue 2
125
+ * Extra item space in pixels to render before/after the viewport. The minimum value is 0. Lower value will give better performance but you can increase to avoid showing blank items in fast scrolling.
126
+ * @defaultValue 200
127
127
  */
128
- overscan?: number;
128
+ bufferSize?: number;
129
129
  /**
130
130
  * If set, the specified amount of rows will be mounted in the initial rendering regardless of the container size. This prop is mostly for SSR.
131
131
  */
@@ -9,7 +9,7 @@ export interface VListHandle extends VirtualizerHandle {
9
9
  /**
10
10
  * Props of {@link VList}.
11
11
  */
12
- export interface VListProps<T = unknown> extends Pick<VirtualizerProps<T>, "children" | "data" | "overscan" | "itemSize" | "shift" | "horizontal" | "cache" | "ssrCount" | "item" | "onScroll" | "onScrollEnd" | "keepMounted">, ViewportComponentAttributes {
12
+ export interface VListProps<T = unknown> extends Pick<VirtualizerProps<T>, "children" | "data" | "bufferSize" | "itemSize" | "shift" | "horizontal" | "cache" | "ssrCount" | "item" | "onScroll" | "onScrollEnd" | "keepMounted">, ViewportComponentAttributes {
13
13
  /**
14
14
  * If true, items are aligned to the end of the list when total size of items are smaller than viewport size. It's useful for chat like app.
15
15
  */
@@ -71,12 +71,12 @@ export interface VirtualizerProps<T = unknown> {
71
71
  */
72
72
  data?: ArrayLike<T>;
73
73
  /**
74
- * 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
- * @defaultValue 4
74
+ * Extra item space in pixels to render before/after the viewport. The minimum value is 0. Lower value will give better performance but you can increase to avoid showing blank items in fast scrolling.
75
+ * @defaultValue 200
76
76
  */
77
- overscan?: number;
77
+ bufferSize?: number;
78
78
  /**
79
- * Item size hint for unmeasured items. It will help to reduce scroll jump when items are measured if used properly.
79
+ * Item size hint for unmeasured items in pixels. It will help to reduce scroll jump when items are measured if used properly.
80
80
  *
81
81
  * - If not set, initial item sizes will be automatically estimated from measured sizes. This is recommended for most cases.
82
82
  * - If set, you can opt out estimation and use the value as initial item size.
@@ -101,11 +101,11 @@ export interface VirtualizerProps<T = unknown> {
101
101
  */
102
102
  cache?: CacheSnapshot;
103
103
  /**
104
- * If you put an element before virtualizer, you have to define its height with this prop.
104
+ * The offset to the scrollable parent before virtualizer in pixels. If you put an element before virtualizer, you have to set its height to this prop.
105
105
  */
106
106
  startMargin?: number;
107
107
  /**
108
- * A prop for SSR. If set, the specified amount of items will be mounted in the initial rendering regardless of the container size until hydrated.
108
+ * A prop for SSR. If set, the specified amount of items will be mounted in the initial rendering regardless of the container size until hydrated. The minimum value is 0.
109
109
  */
110
110
  ssrCount?: number;
111
111
  /**
@@ -39,12 +39,12 @@ export interface WindowVirtualizerProps<T = unknown> {
39
39
  */
40
40
  data?: ArrayLike<T>;
41
41
  /**
42
- * 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
- * @defaultValue 4
42
+ * Extra item space in pixels to render before/after the viewport. The minimum value is 0. Lower value will give better performance but you can increase to avoid showing blank items in fast scrolling.
43
+ * @defaultValue 200
44
44
  */
45
- overscan?: number;
45
+ bufferSize?: number;
46
46
  /**
47
- * Item size hint for unmeasured items. It will help to reduce scroll jump when items are measured if used properly.
47
+ * Item size hint for unmeasured items in pixels. It will help to reduce scroll jump when items are measured if used properly.
48
48
  *
49
49
  * - If not set, initial item sizes will be automatically estimated from measured sizes. This is recommended for most cases.
50
50
  * - If set, you can opt out estimation and use the value as initial item size.
@@ -65,7 +65,7 @@ export interface WindowVirtualizerProps<T = unknown> {
65
65
  */
66
66
  cache?: CacheSnapshot;
67
67
  /**
68
- * A prop for SSR. If set, the specified amount of items will be mounted in the initial rendering regardless of the container size until hydrated.
68
+ * A prop for SSR. If set, the specified amount of items will be mounted in the initial rendering regardless of the container size until hydrated. The minimum value is 0.
69
69
  */
70
70
  ssrCount?: number;
71
71
  /**
@@ -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" | "cache" | "item" | "onScroll" | "onScrollEnd" | "keepMounted">, ViewportComponentAttributes {
15
+ export interface VListProps<T> extends Pick<VirtualizerProps<T>, "ref" | "data" | "children" | "bufferSize" | "itemSize" | "shift" | "horizontal" | "cache" | "item" | "onScroll" | "onScrollEnd" | "keepMounted">, ViewportComponentAttributes {
16
16
  }
17
17
  /**
18
18
  * Virtualized list component. See {@link VListProps} and {@link VListHandle}.
@@ -75,10 +75,10 @@ export interface VirtualizerProps<T> {
75
75
  */
76
76
  children: (data: T, index: Accessor<number>) => JSX.Element;
77
77
  /**
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.
79
- * @defaultValue 4
78
+ * Extra item space in pixels to render before/after the viewport. The minimum value is 0. Lower value will give better performance but you can increase to avoid showing blank items in fast scrolling.
79
+ * @defaultValue 200
80
80
  */
81
- overscan?: number;
81
+ bufferSize?: number;
82
82
  /**
83
83
  * Component or element type for container element.
84
84
  * @defaultValue "div"
@@ -94,7 +94,7 @@ export interface VirtualizerProps<T> {
94
94
  */
95
95
  scrollRef?: HTMLElement;
96
96
  /**
97
- * Item size hint for unmeasured items. It will help to reduce scroll jump when items are measured if used properly.
97
+ * Item size hint for unmeasured items in pixels. It will help to reduce scroll jump when items are measured if used properly.
98
98
  *
99
99
  * - If not set, initial item sizes will be automatically estimated from measured sizes. This is recommended for most cases.
100
100
  * - If set, you can opt out estimation and use the value as initial item size.
@@ -119,7 +119,7 @@ export interface VirtualizerProps<T> {
119
119
  */
120
120
  cache?: CacheSnapshot;
121
121
  /**
122
- * If you put an element before virtualizer, you have to define its height with this prop.
122
+ * The offset to the scrollable parent before virtualizer in pixels. If you put an element before virtualizer, you have to set its height to this prop.
123
123
  */
124
124
  startMargin?: number;
125
125
  /**
@@ -43,12 +43,12 @@ export interface WindowVirtualizerProps<T> {
43
43
  */
44
44
  children: (data: T, index: Accessor<number>) => JSX.Element;
45
45
  /**
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.
47
- * @defaultValue 4
46
+ * Extra item space in pixels to render before/after the viewport. The minimum value is 0. Lower value will give better performance but you can increase to avoid showing blank items in fast scrolling.
47
+ * @defaultValue 200
48
48
  */
49
- overscan?: number;
49
+ bufferSize?: number;
50
50
  /**
51
- * Item size hint for unmeasured items. It will help to reduce scroll jump when items are measured if used properly.
51
+ * Item size hint for unmeasured items in pixels. It will help to reduce scroll jump when items are measured if used properly.
52
52
  *
53
53
  * - If not set, initial item sizes will be automatically estimated from measured sizes. This is recommended for most cases.
54
54
  * - If set, you can opt out estimation and use the value as initial item size.
@@ -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,c=(e,t,r)=>n(r,o(t,e)),l=e=>[...e].sort(((e,t)=>e-t)),a="function"==typeof queueMicrotask?queueMicrotask:e=>{Promise.resolve().then(e)},u=()=>{let e;return[new Promise((t=>{e=t})),e]},f=e=>{let t;return()=>(e&&(t=e(),e=void 0),t)},d=-1,h=(e,t,r)=>{const n=r?"unshift":"push";for(let r=0;r<t;r++)e[n](d);return e},g=(e,t)=>{const r=e.o[t];return r===d?e.i:r},v=(e,t,r)=>{const o=e.o[t]===d;return e.o[t]=r,e.l=n(t,e.l),o},p=(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+=g(e,r),e.h[++r]=n;return e.l=t,n},m=(e,t,r=0,n=e.u-1)=>{for(;r<=n;){const o=i((r+n)/2),s=p(e,o);if(s<=t){if(s+g(e,o)>t)return o;r=o+1}else n=o-1}return c(r,0,e.u-1)},x=(e,t,r)=>{const o=t-e.u;return e.l=r?-1:n(t-1,e.l),e.u=t,o>0?(h(e.h,o),h(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===d?e.i:r)),0))},S="undefined"!=typeof window,$=()=>document.documentElement,w=e=>e.ownerDocument,b=e=>e.defaultView,y=/*#__PURE__*/f((()=>!!S&&"rtl"===getComputedStyle($()).direction)),_=/*#__PURE__*/f((()=>!!/iP(hone|od|ad)/.test(navigator.userAgent)||"MacIntel"===navigator.platform&&navigator.maxTouchPoints>0)),z=/*#__PURE__*/f((()=>"scrollBehavior"in $().style)),I=(e,t=40,i=4,c=0,a,u=!1)=>{let f=!!c,S=1,$=0,w=0,b=0,y=0,z=0,I=0,k=0,T=0,M=f?[0,o(c-1,0)]:r,E=[0,0],O=0;const R=((e,t,r)=>({i:r?r[1]:t,o:r&&r[0]?h(r[0].slice(0,n(e,r[0].length)),o(0,e-r[0].length)):h([],e),u:e,l:-1,h:h([],e)}))(e,t,a),q=new Set,J=()=>b-w,B=()=>J()+z+y,H=e=>((e,t,r,o)=>{if(o=n(o,e.u-1),p(e,o)<=t){const n=m(e,t+r,o);return[m(e,t,o,n),n]}{const n=m(e,t,void 0,o);return[n,m(e,t+r,n)]}})(R,e,$,E[0]),L=()=>(e=>e.u?p(e,e.u-1)+g(e,e.u-1):0)(R),P=e=>p(R,e)-z,W=e=>g(R,e),j=e=>{e&&(_()&&0!==k||M&&1===T?z+=e:y+=e)};return{v:()=>S,p:()=>(e=>[e.o.slice(),e.i])(R),m:()=>{let e,t;return I?[e,t]=E:([e,t]=E=H(o(0,B())),M&&(e=n(e,M[0]),t=o(t,M[1]))),1!==k&&(e-=o(0,i)),2!==k&&(t+=o(0,i)),[o(e,0),n(t,R.u-1)]},S:()=>m(R,B()),$:()=>m(R,B()+$),_:e=>R.o[e]===d,I:P,k:W,T:()=>R.u,M:()=>b,O:()=>0!==k,R:()=>$,q:()=>w,J:L,B:()=>(I=y,y=0,[I,2===T]),H:(e,t)=>{const r=[e,t];return q.add(r),()=>{q.delete(r)}},L:(e,t)=>{let n,i,c=0;switch(e){case 1:{const e=I;I=0;const n=t-b,o=s(n);e&&o<s(e)+1||0!==T||(k=n<0?2:1),f&&(M=r,f=!1),b=t,c=4;const l=J();l>=-$&&l<=L()&&(c+=1,i=o>$);break}case 2:c=8,0!==k&&(n=!0,c+=1),k=0,T=0,M=r;break;case 3:{const e=t.filter((([e,t])=>R.o[e]!==t));if(!e.length)break;j(e.reduce(((e,[t,r])=>((2===T||(M&&1===T?t<M[0]:P(t)+(0===k&&0===T?W(t):0)<J()))&&(e+=r-W(t)),e)),0));for(const[t,r]of e){const e=W(t),n=v(R,t,r);u&&(O+=n?r:r-e)}u&&$&&O>$&&(j(((e,t)=>{let r=0;const n=[];e.o.forEach(((e,o)=>{e!==d&&(n.push(e),o<t&&r++)})),e.l=-1;const s=l(n),i=s.length,c=i/2|0,a=i%2==0?(s[c-1]+s[c])/2:s[c],u=e.i;return((e.i=a)-u)*o(t-r,0)})(R,m(R,B()))),u=!1),c=3,i=!0;break}case 4:$!==t&&($=t,c=3);break;case 5:t[1]?(j(x(R,t[0],!0)),T=2,c=1):(x(R,t[0]),c=1);break;case 6:w=t;break;case 7:T=1;break;case 8:M=H(t),c=1}c&&(S=1+(2147483647&S),n&&z&&(y+=z,z=0),q.forEach((([e,t])=>{c&e&&t(i)})))}}},k=setTimeout,T=(e,t)=>t&&y()?-e:e,M=(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=k((()=>{t=r,(()=>{if(a||u)return a=!1,void h();f=!1,e.L(2)})()}),150)};return o.P=n,o})(),g=()=>{l=c(),f&&(d=!0),i&&e.L(6,i()),e.L(1,o()),h()},v=t=>{if(a||!e.O()||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,_()&&(f=!0)};return t.addEventListener("scroll",g),t.addEventListener("wheel",v,{passive:!0}),t.addEventListener("touchstart",p,{passive:!0}),t.addEventListener("touchend",m,{passive:!0}),{W:()=>{t.removeEventListener("scroll",g),t.removeEventListener("wheel",v),t.removeEventListener("touchstart",p),t.removeEventListener("touchend",m),h.P()},j:()=>{const[t,r]=e.B();t&&(s(T(t,n),r,d),d=!1,r&&e.R()>e.J()&&e.L(1,o()))}}},E=(e,t,r)=>{let n;return[async(o,s)=>{if(!await t())return;n&&n();const i=()=>{const[t,r]=u();return n=()=>{r(!1)},e.R()&&k(n,150),[t,e.H(2,(()=>{r(!0)}))]};if(s&&z())e.L(8,o()),a((async()=>{for(;;){let t=!0;for(let[r,n]=e.m();r<=n;r++)if(e._(r)){t=!1;break}if(t)break;const[r,n]=i();try{if(!await r)return}finally{n()}}e.L(7),r(o(),s)}));else for(;;){const[t,n]=i();try{if(e.L(7),r(o()),!await t)return}finally{n()}}},()=>{n&&n()}]},O=e=>{let t;return{C(r){(t||(t=new(b(w(r)).ResizeObserver)(e))).observe(r)},V(e){t.unobserve(e)},W(){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.U,t={contain:"layout style",position:"absolute",[e?"height":"width"]:"100%",[e?"top":"left"]:"0px",[e?y()?"right":"left":"top"]:r.A+"px",visibility:r.F?"hidden":"visible"};return e&&(t.display="inline-flex"),t}));return e.createComponent(e.Dynamic,{get component(){return r.X},get index(){return r.D},ref(e){"function"==typeof n?n(e):n=e},get style(){return o()},get children(){return r.G}})},q=(e,t)=>e[0]===t[0]&&e[1]===t[1],J=n=>{let s;const{itemSize:i,horizontal:a=!1,overscan:f,cache:d}=n;n=t.mergeProps({as:"div"},n);const h=I(n.data.length,i,f,void 0,d,!i),g=((e,t)=>{let n;const o=t?"width":"height",s=new WeakMap,i=O((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{K(e){i.C(n=e)},N:(e,t)=>(s.set(e,t),i.C(e),()=>{s.delete(e),i.V(e)}),Z:i.W}})(h,a),v=((e,t)=>{let r,n,o=u();const s=t?"scrollLeft":"scrollTop",i=t?"overflowX":"overflowY",[l,a]=E(e,(()=>o[0]),((e,n)=>{e=T(e,t),n?r.scrollTo({[t?"left":"top"]:e,behavior:"smooth"}):r[s]=e}));return{ee(c){r=c,n=M(e,c,t,(()=>T(c[s],t)),((t,r,n)=>{if(n){const e=c.style,t=e[i];e[i]="hidden",k((()=>{e[i]=t}))}c[s]=e.M()+t,r&&a()})),o[1](!0)},Z(){n&&n.W(),o[1](!1),o=u()},te(e){l((()=>e))},re(t){t+=e.M(),l((()=>t))},ne(t,{align:r,smooth:n,offset:o=0}={}){if(t=c(t,0,e.T()-1),"nearest"===r){const n=e.I(t),o=e.M();if(n<o)r="start";else{if(!(n+e.k(t)>o+e.R()))return;r="end"}}l((()=>o+e.q()+e.I(t)+("end"===r?e.k(t)-e.R():"center"===r?(e.k(t)-e.R())/2:0)),n)},oe:()=>{n&&n.j()}}})(h,a),[p,m]=t.createSignal(h.v()),x=h.H(1,(()=>{m(h.v())})),S=h.H(4,(()=>{var e;null===(e=n.onScroll)||void 0===e||e.call(n,h.M())})),$=h.H(8,(()=>{var e;null===(e=n.onScrollEnd)||void 0===e||e.call(n)})),w=t.createMemo((e=>{p();const t=h.m();return e&&q(e,t)?e:t})),b=t.createMemo((()=>p()&&h.O())),y=t.createMemo((()=>p()&&h.J()));t.onMount((()=>{n.ref&&n.ref({get cache(){return h.p()},get scrollOffset(){return h.M()},get scrollSize(){return(e=>o(e.J(),e.R()))(h)},get viewportSize(){return h.R()},findStartIndex:h.S,findEndIndex:h.$,getItemOffset:h.I,getItemSize:h.k,scrollToIndex:v.ne,scrollTo:v.te,scrollBy:v.re});const e=n.scrollRef||s.parentElement;g.K(e),v.ee(e),t.onCleanup((()=>{n.ref&&n.ref(),x(),S(),$(),g.Z(),v.Z()}))})),t.createComputed(t.on((()=>n.startMargin||0),(e=>{e!==h.q()&&h.L(6,e)}))),t.createEffect(t.on(p,(()=>{v.oe()})));const _=t.createMemo((()=>{const e=n.data.length;t.untrack((()=>{e!==h.T()&&h.L(5,[e,n.shift])}));const[r,o]=w(),s=[],i=[];if(n.keepMounted){const e=new Set(n.keepMounted);for(let t=r,n=o;t<=n;t++)e.add(t);l([...e]).forEach((e=>{s.push(n.data[e]),i.push(e)}))}else for(let e=r,t=o;e<=t;e++)s.push(n.data[e]),i.push(e);return{se:s,ie:i}}));return e.createComponent(e.Dynamic,{get component(){return n.as},ref(e){"function"==typeof s?s(e):s=e},get style(){return{contain:"size paint style","overflow-anchor":"none",overflow:"clip",flex:"none",position:"relative",width:a?y()+"px":"100%",height:a?"100%":y()+"px","pointer-events":b()?"none":void 0}},get children(){return e.createComponent(t.For,{get each(){return _().se},children:(r,o)=>((r,o)=>{const s=t.createMemo((()=>(p(),h.I(o())))),i=t.createMemo((()=>(p(),h._(o())))),c=t.createMemo((()=>t.untrack((()=>n.children(r,o)))));return e.createComponent(R,{get X(){return n.item},get D(){return o()},get Y(){return g.N},get A(){return s()},get F(){return i()},get G(){return c()},U:a})})(r,t.createMemo((()=>_().ie[o()])))})}})};var B=/*#__PURE__*/e.template("<div>"),H=/*#__PURE__*/e.template("<div style=overflow-anchor:none>");exports.VList=r=>{const[n,o]=t.splitProps(r,["ref","data","children","overscan","itemSize","shift","horizontal","keepMounted","cache","item","onScroll","onScrollEnd","style"]);return s=B(),e.spread(s,e.mergeProps(o,{get style(){return{display:n.horizontal?"inline-block":"block",[n.horizontal?"overflow-x":"overflow-y"]:"auto",contain:"strict",width:"100%",height:"100%",...n.style}}}),!1,!0),e.insert(s,e.createComponent(J,{ref(e){var t=n.ref;"function"==typeof t?t(e):n.ref=e},get data(){return n.data},get overscan(){return n.overscan},get itemSize(){return n.itemSize},get shift(){return n.shift},get horizontal(){return n.horizontal},get keepMounted(){return n.keepMounted},get cache(){return n.cache},get item(){return n.item},get onScroll(){return n.onScroll},get onScrollEnd(){return n.onScrollEnd},get children(){return n.children}})),s;var s},exports.Virtualizer=J,exports.WindowVirtualizer=n=>{let o;const{ref:s,data:i,children:l,overscan:a,itemSize:f,shift:d,horizontal:h=!1,cache:g,onScrollEnd:v}=n,p=I(n.data.length,f,a,void 0,g,!f),m=((e,t)=>{const n=t?"width":"height",o=t?"innerWidth":"innerHeight",s=new WeakMap,i=O((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{K(t){const r=b(w(t)),n=()=>{e.L(4,r[o])};r.addEventListener("resize",n),n(),c=()=>{r.removeEventListener("resize",n)}},N:(e,t)=>(s.set(e,t),i.C(e),()=>{s.delete(e),i.V(e)}),Z(){c&&c(),i.W()}}})(p,h),x=((e,t)=>{let r,n,o=u();const s=t?"left":"top",[i]=E(e,(()=>o[0]),((e,n)=>{e=T(e,t);const o=b(w(r));n?o.scroll({[s]:e,behavior:"smooth"}):o.scroll({[s]:e})})),l=(e,t,r,n,o=0)=>{const s=n?"offsetLeft":"offsetTop",i=o+(n&&y()?r.innerWidth-e[s]-e.offsetWidth:e[s]),c=e.offsetParent;return e!==t&&c?l(c,t,r,n,i):i};return{ee(i){r=i;const c=t?"scrollX":"scrollY",a=w(i),u=b(a);n=M(e,u,t,(()=>T(u[c],t)),(t=>{u.scroll({[s]:e.M()+t})}),(()=>l(i,a.body,u,t))),o[1](!0)},Z(){n&&n.W(),r=void 0,o[1](!1),o=u()},oe:()=>{n&&n.j()},ne(n,{align:o,smooth:s,offset:a=0}={}){if(!r)return;if(n=c(n,0,e.T()-1),"nearest"===o){const t=e.I(n),r=e.M();if(t<r)o="start";else{if(!(t+e.k(n)>r+e.R()))return;o="end"}}const u=w(r),f=b(u),d=u.documentElement,h=()=>e.R()-(t?d.clientWidth:d.clientHeight);i((()=>a+l(r,u.body,f,t)+e.I(n)+("end"===o?e.k(n)-(e.R()-h()):"center"===o?(e.k(n)-(e.R()-h()))/2:0)),s)}}})(p,h),[S,$]=t.createSignal(p.v()),_=p.H(1,(()=>{$(p.v())})),z=p.H(4,(()=>{var e;null===(e=n.onScroll)||void 0===e||e.call(n)})),k=p.H(8,(()=>{var e;null===(e=n.onScrollEnd)||void 0===e||e.call(n)})),J=t.createMemo((e=>{S();const t=p.m();return e&&q(e,t)?e:t})),B=t.createMemo((()=>S()&&p.O())),L=t.createMemo((()=>S()&&p.J()));t.onMount((()=>{n.ref&&n.ref({get cache(){return p.p()},findStartIndex:p.S,findEndIndex:p.$,scrollToIndex:x.ne}),m.K(o),x.ee(o),t.onCleanup((()=>{n.ref&&n.ref(),_(),z(),k(),m.Z(),x.Z()}))})),t.createEffect(t.on(S,(()=>{x.oe()})));const P=t.createMemo((()=>{const e=n.data.length;t.untrack((()=>{e!==p.T()&&p.L(5,[e,n.shift])}));const[r,o]=J(),s=[];for(let e=r,t=o;e<=t;e++)s.push(n.data[e]);return s}));return W=H(),"function"==typeof(j=o)?e.use(j,W):o=W,e.setStyleProperty(W,"contain","size paint style"),e.setStyleProperty(W,"overflow","clip"),e.setStyleProperty(W,"flex","none"),e.setStyleProperty(W,"position","relative"),e.insert(W,e.createComponent(t.For,{get each(){return P()},children:(r,o)=>{const s=t.createMemo((()=>J()[0]+o())),i=t.createMemo((()=>(S(),p.I(s())))),c=t.createMemo((()=>(S(),p._(s())))),l=t.createMemo((()=>t.untrack((()=>n.children(r,s)))));return e.createComponent(R,{get D(){return s()},get Y(){return m.N},get A(){return i()},get F(){return c()},get G(){return l()},U:h})}})),e.effect((t=>{var r=h?L()+"px":"100%",n=h?"100%":L()+"px",o=B()?"none":void 0;return r!==t.e&&e.setStyleProperty(W,"width",t.e=r),n!==t.t&&e.setStyleProperty(W,"height",t.t=n),o!==t.a&&e.setStyleProperty(W,"pointer-events",t.a=o),t}),{e:void 0,t:void 0,a:void 0}),W;var W,j};
1
+ var e=require("solid-js/web"),t=require("solid-js");const r=null,{min:n,max:o,abs:i,floor:s}=Math,l=(e,t,r)=>n(r,o(t,e)),c=e=>[...e].sort(((e,t)=>e-t)),u="function"==typeof queueMicrotask?queueMicrotask:e=>{Promise.resolve().then(e)},a=()=>{let e;return[new Promise((t=>{e=t})),e]},f=e=>{let t;return()=>(e&&(t=e(),e=void 0),t)},d=(e,t,r)=>{const n=r?"unshift":"push";for(let r=0;r<t;r++)e[n](-1);return e},h=(e,t)=>{const r=e.o[t];return-1===r?e.i:r},g=(e,t,r)=>{const o=-1===e.o[t];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+=h(e,r),e.h[++r]=n;return e.l=t,n},p=(e,t,r=0,n=e.u-1)=>{for(;r<=n;){const o=s((r+n)/2),i=v(e,o);if(i<=t){if(i+h(e,o)>t)return o;r=o+1}else n=o-1}return l(r,0,e.u-1)},m=(e,t,r)=>{const o=t-e.u;return e.l=r?-1:n(t-1,e.l),e.u=t,o>0?(d(e.h,o),d(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-(-1===r?e.i:r)),0))},S="undefined"!=typeof window,x=()=>document.documentElement,$=e=>e.ownerDocument,b=e=>e.defaultView,w=/*#__PURE__*/f((()=>!!S&&"rtl"===getComputedStyle(x()).direction)),y=/*#__PURE__*/f((()=>!!/iP(hone|od|ad)/.test(navigator.userAgent)||"MacIntel"===navigator.platform&&navigator.maxTouchPoints>0)),z=/*#__PURE__*/f((()=>"scrollBehavior"in x().style)),_=(e,t=40,s=0,l,u=!1)=>{let a=!!s,f=1,S=0,x=0,$=0,b=0,w=0,z=0,_=0,I=0,k=r,T=[0,a?o(s-1,0):-1],M=0;const E=((e,t,r)=>({i:r?r[1]:t,o:r&&r[0]?d(r[0].slice(0,n(e,r[0].length)),o(0,e-r[0].length)):d([],e),u:e,l:-1,h:d([],e)}))(e,t,l),O=new Set,R=()=>$-x,q=()=>R()+w+b,J=(e,t)=>((e,t,r,o)=>{if(o=n(o,e.u-1),v(e,o)<=t){const n=p(e,r,o);return[p(e,t,o,n),n]}{const n=p(e,t,void 0,o);return[n,p(e,r,n)]}})(E,e,t,T[0]),B=()=>(e=>e.u?v(e,e.u-1)+h(e,e.u-1):0)(E),H=e=>v(E,e)-w,L=e=>h(E,e),P=(e,t=-1)=>E.o[e]===t,W=e=>{e&&(y()&&0!==_||k&&1===I?w+=e:b+=e)};return{v:()=>f,p:()=>(e=>[e.o.slice(),e.i])(E),m:(e=200)=>{if(!S||a)return T;let t,r;if(z)[t,r]=T;else{e=o(0,e);let i=o(0,q()),s=i+S;u||(1!==_&&(i-=e),2!==_&&(s+=e)),[t,r]=T=J(o(0,i),o(0,s)),k&&(t=n(t,k[0]),r=o(r,k[1]))}return[o(t,0),n(r,E.u-1)]},S:()=>p(E,q()),$:()=>p(E,q()+S),_:P,I:H,k:L,T:()=>E.u,M:()=>$,O:()=>0!==_,R:()=>S,q:()=>x,J:B,B:()=>(z=b,b=0,[z,2===I]),H:(e,t)=>{const r=[e,t];return O.add(r),()=>{O.delete(r)}},L:(e,t)=>{let n,s,l=0;switch(e){case 1:{const e=z;z=0;const r=t-$,n=i(r);e&&n<i(e)+1||0!==I||(_=r<0?2:1),a&&(a=!1),$=t,l=4;const o=R();o>=-S&&o<=B()&&(l+=1,s=n>S);break}case 2:l=8,0!==_&&(n=!0,l+=1),_=0,I=0,k=r;break;case 3:{const e=t.filter((([e,t])=>!P(e,t)));if(!e.length)break;W(e.reduce(((e,[t,r])=>((2===I||(k&&1===I?t<k[0]:H(t)+(0===_&&0===I?L(t):0)<R()))&&(e+=r-L(t)),e)),0));for(const[t,r]of e){const e=L(t),n=g(E,t,r);u&&(M+=n?r:r-e)}u&&S&&M>S&&(W(((e,t)=>{let r=0;const n=[];e.o.forEach(((e,o)=>{-1!==e&&(n.push(e),o<t&&r++)})),e.l=-1;const i=c(n),s=i.length,l=s/2|0,u=s%2==0?(i[l-1]+i[l])/2:i[l],a=e.i;return((e.i=u)-a)*o(t-r,0)})(E,p(E,q()))),u=!1),l=3,s=!0;break}case 4:S!==t&&(S=t,l=3);break;case 5:t[1]?(W(m(E,t[0],!0)),I=2,l=1):(m(E,t[0]),l=1);break;case 6:x=t;break;case 7:I=1;break;case 8:k=J(t,t+S),l=1}l&&(f=1+(2147483647&f),n&&w&&(b+=w,w=0),O.forEach((([e,t])=>{l&e&&t(s)})))}}},I=setTimeout,k=(e,t)=>t&&w()?-e:e,T=(e,t,n,o,i,s)=>{const l=Date.now;let c=0,u=!1,a=!1,f=!1,d=!1;const h=(()=>{let t;const n=()=>{t!=r&&clearTimeout(t)},o=()=>{n(),t=I((()=>{t=r,(()=>{if(u||a)return u=!1,void h();f=!1,e.L(2)})()}),150)};return o.P=n,o})(),g=()=>{c=l(),f&&(d=!0),s&&e.L(6,s()),e.L(1,o()),h()},v=t=>{if(u||!e.O()||t.ctrlKey)return;const r=l()-c;150>r&&50<r&&(n?t.deltaX:t.deltaY)&&(u=!0)},p=()=>{a=!0,f=d=!1},m=()=>{a=!1,y()&&(f=!0)};return t.addEventListener("scroll",g),t.addEventListener("wheel",v,{passive:!0}),t.addEventListener("touchstart",p,{passive:!0}),t.addEventListener("touchend",m,{passive:!0}),{W:()=>{t.removeEventListener("scroll",g),t.removeEventListener("wheel",v),t.removeEventListener("touchstart",p),t.removeEventListener("touchend",m),h.P()},j:()=>{const[t,r]=e.B();t&&(i(k(t,n),r,d),d=!1,r&&e.R()>e.J()&&e.L(1,o()))}}},M=(e,t,r)=>{let n;return[async(o,i)=>{if(!await t())return;n&&n();const s=()=>{const[t,r]=a();return n=()=>{r(!1)},e.R()&&I(n,150),[t,e.H(2,(()=>{r(!0)}))]};if(i&&z())e.L(8,o()),u((async()=>{for(;;){let t=!0;for(let[r,n]=e.m();r<=n;r++)if(e._(r)){t=!1;break}if(t)break;const[r,n]=s();try{if(!await r)return}finally{n()}}e.L(7),r(o(),i)}));else for(;;){const[t,n]=s();try{if(e.L(7),r(o()),!await t)return}finally{n()}}},()=>{n&&n()}]},E=e=>{let t;return{C(r){(t||(t=new(b($(r)).ResizeObserver)(e))).observe(r)},V(e){t.unobserve(e)},W(){t&&t.disconnect()}}},O=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.U,t={contain:"layout style",position:"absolute",[e?"height":"width"]:"100%",[e?"top":"left"]:"0px",[e?w()?"right":"left":"top"]:r.A+"px",visibility:r.F?"hidden":"visible"};return e&&(t.display="inline-flex"),t}));return e.createComponent(e.Dynamic,{get component(){return r.X},get index(){return r.D},ref(e){"function"==typeof n?n(e):n=e},get style(){return o()},get children(){return r.G}})},R=(e,t)=>e[0]===t[0]&&e[1]===t[1],q=n=>{let i;const{itemSize:s,horizontal:u=!1,cache:f}=n;n=t.mergeProps({as:"div"},n);const d=_(n.data.length,s,void 0,f,!s),h=((e,t)=>{let n;const o=t?"width":"height",i=new WeakMap,s=E((t=>{const s=[];for(const{target:l,contentRect:c}of t)if(l.offsetParent)if(l===n)e.L(4,c[o]);else{const e=i.get(l);e!=r&&s.push([e,c[o]])}s.length&&e.L(3,s)}));return{K(e){s.C(n=e)},N:(e,t)=>(i.set(e,t),s.C(e),()=>{i.delete(e),s.V(e)}),Z:s.W}})(d,u),g=((e,t)=>{let r,n,o=a();const i=t?"scrollLeft":"scrollTop",s=t?"overflowX":"overflowY",[c,u]=M(e,(()=>o[0]),((e,n)=>{e=k(e,t),n?r.scrollTo({[t?"left":"top"]:e,behavior:"smooth"}):r[i]=e}));return{ee(l){r=l,n=T(e,l,t,(()=>k(l[i],t)),((t,r,n)=>{if(n){const e=l.style,t=e[s];e[s]="hidden",I((()=>{e[s]=t}))}l[i]=e.M()+t,r&&u()})),o[1](!0)},Z(){n&&n.W(),o[1](!1),o=a()},te(e){c((()=>e))},re(t){t+=e.M(),c((()=>t))},ne(t,{align:r,smooth:n,offset:o=0}={}){if(t=l(t,0,e.T()-1),"nearest"===r){const n=e.I(t),o=e.M();if(n<o)r="start";else{if(!(n+e.k(t)>o+e.R()))return;r="end"}}c((()=>o+e.q()+e.I(t)+("end"===r?e.k(t)-e.R():"center"===r?(e.k(t)-e.R())/2:0)),n)},oe:()=>{n&&n.j()}}})(d,u),[v,p]=t.createSignal(d.v()),m=d.H(1,(()=>{p(d.v())})),S=d.H(4,(()=>{var e;null===(e=n.onScroll)||void 0===e||e.call(n,d.M())})),x=d.H(8,(()=>{var e;null===(e=n.onScrollEnd)||void 0===e||e.call(n)})),$=t.createMemo((e=>{v();const t=d.m(n.bufferSize);return e&&R(e,t)?e:t})),b=t.createMemo((()=>v()&&d.O())),w=t.createMemo((()=>v()&&d.J()));t.onMount((()=>{n.ref&&n.ref({get cache(){return d.p()},get scrollOffset(){return d.M()},get scrollSize(){return(e=>o(e.J(),e.R()))(d)},get viewportSize(){return d.R()},findStartIndex:d.S,findEndIndex:d.$,getItemOffset:d.I,getItemSize:d.k,scrollToIndex:g.ne,scrollTo:g.te,scrollBy:g.re});const e=n.scrollRef||i.parentElement;h.K(e),g.ee(e),t.onCleanup((()=>{n.ref&&n.ref(),m(),S(),x(),h.Z(),g.Z()}))})),t.createComputed(t.on((()=>n.startMargin||0),(e=>{e!==d.q()&&d.L(6,e)}))),t.createEffect(t.on(v,(()=>{g.oe()})));const y=t.createMemo((()=>{const e=n.data.length;t.untrack((()=>{e!==d.T()&&d.L(5,[e,n.shift])}));const r=[],o=[];if(n.keepMounted){const e=new Set(n.keepMounted);for(let[t,r]=$();t<=r;t++)e.add(t);c([...e]).forEach((e=>{r.push(n.data[e]),o.push(e)}))}else for(let[e,t]=$();e<=t;e++)r.push(n.data[e]),o.push(e);return{ie:r,se:o}}));return e.createComponent(e.Dynamic,{get component(){return n.as},ref(e){"function"==typeof i?i(e):i=e},get style(){return{contain:"size paint style","overflow-anchor":"none",overflow:"clip",flex:"none",position:"relative",width:u?w()+"px":"100%",height:u?"100%":w()+"px","pointer-events":b()?"none":void 0}},get children(){return e.createComponent(t.For,{get each(){return y().ie},children:(r,o)=>((r,o)=>{const i=t.createMemo((()=>(v(),d.I(o())))),s=t.createMemo((()=>(v(),d._(o())))),l=t.createMemo((()=>t.untrack((()=>n.children(r,o)))));return e.createComponent(O,{get X(){return n.item},get D(){return o()},get Y(){return h.N},get A(){return i()},get F(){return s()},get G(){return l()},U:u})})(r,t.createMemo((()=>y().se[o()])))})}})};var J=/*#__PURE__*/e.template("<div>"),B=/*#__PURE__*/e.template("<div style=overflow-anchor:none>");exports.VList=r=>{const[n,o]=t.splitProps(r,["ref","data","children","bufferSize","itemSize","shift","horizontal","keepMounted","cache","item","onScroll","onScrollEnd","style"]);return i=J(),e.spread(i,e.mergeProps(o,{get style(){return{display:n.horizontal?"inline-block":"block",[n.horizontal?"overflow-x":"overflow-y"]:"auto",contain:"strict",width:"100%",height:"100%",...n.style}}}),!1,!0),e.insert(i,e.createComponent(q,{ref(e){var t=n.ref;"function"==typeof t?t(e):n.ref=e},get data(){return n.data},get bufferSize(){return n.bufferSize},get itemSize(){return n.itemSize},get shift(){return n.shift},get horizontal(){return n.horizontal},get keepMounted(){return n.keepMounted},get cache(){return n.cache},get item(){return n.item},get onScroll(){return n.onScroll},get onScrollEnd(){return n.onScrollEnd},get children(){return n.children}})),i;var i},exports.Virtualizer=q,exports.WindowVirtualizer=n=>{let o;const{ref:i,data:s,children:c,itemSize:u,shift:f,horizontal:d=!1,cache:h,onScrollEnd:g}=n,v=_(n.data.length,u,void 0,h,!u),p=((e,t)=>{const n=t?"width":"height",o=t?"innerWidth":"innerHeight",i=new WeakMap,s=E((t=>{const o=[];for(const{target:e,contentRect:s}of t){if(!e.offsetParent)continue;const t=i.get(e);t!=r&&o.push([t,s[n]])}o.length&&e.L(3,o)}));let l;return{K(t){const r=b($(t)),n=()=>{e.L(4,r[o])};r.addEventListener("resize",n),n(),l=()=>{r.removeEventListener("resize",n)}},N:(e,t)=>(i.set(e,t),s.C(e),()=>{i.delete(e),s.V(e)}),Z(){l&&l(),s.W()}}})(v,d),m=((e,t)=>{let r,n,o=a();const i=t?"left":"top",[s]=M(e,(()=>o[0]),((e,n)=>{e=k(e,t);const o=b($(r));n?o.scroll({[i]:e,behavior:"smooth"}):o.scroll({[i]:e})})),c=(e,t,r,n,o=0)=>{const i=n?"offsetLeft":"offsetTop",s=o+(n&&w()?r.innerWidth-e[i]-e.offsetWidth:e[i]),l=e.offsetParent;return e!==t&&l?c(l,t,r,n,s):s};return{ee(s){r=s;const l=t?"scrollX":"scrollY",u=$(s),a=b(u);n=T(e,a,t,(()=>k(a[l],t)),((t,r)=>{r?a.scroll({[i]:e.M()+t}):a.scrollBy({[i]:t})}),(()=>c(s,u.body,a,t))),o[1](!0)},Z(){n&&n.W(),r=void 0,o[1](!1),o=a()},oe:()=>{n&&n.j()},ne(n,{align:o,smooth:i,offset:u=0}={}){if(!r)return;if(n=l(n,0,e.T()-1),"nearest"===o){const t=e.I(n),r=e.M();if(t<r)o="start";else{if(!(t+e.k(n)>r+e.R()))return;o="end"}}const a=$(r),f=b(a),d=a.documentElement,h=()=>e.R()-(t?d.clientWidth:d.clientHeight);s((()=>u+c(r,a.body,f,t)+e.I(n)+("end"===o?e.k(n)-(e.R()-h()):"center"===o?(e.k(n)-(e.R()-h()))/2:0)),i)}}})(v,d),[S,x]=t.createSignal(v.v()),y=v.H(1,(()=>{x(v.v())})),z=v.H(4,(()=>{var e;null===(e=n.onScroll)||void 0===e||e.call(n)})),I=v.H(8,(()=>{var e;null===(e=n.onScrollEnd)||void 0===e||e.call(n)})),q=t.createMemo((e=>{S();const t=v.m(n.bufferSize);return e&&R(e,t)?e:t})),J=t.createMemo((()=>S()&&v.O())),H=t.createMemo((()=>S()&&v.J()));t.onMount((()=>{n.ref&&n.ref({get cache(){return v.p()},findStartIndex:v.S,findEndIndex:v.$,scrollToIndex:m.ne}),p.K(o),m.ee(o),t.onCleanup((()=>{n.ref&&n.ref(),y(),z(),I(),p.Z(),m.Z()}))})),t.createEffect(t.on(S,(()=>{m.oe()})));const L=t.createMemo((()=>{const e=n.data.length;t.untrack((()=>{e!==v.T()&&v.L(5,[e,n.shift])}));const r=[];for(let[e,t]=q();e<=t;e++)r.push(n.data[e]);return r}));return P=B(),"function"==typeof(W=o)?e.use(W,P):o=P,e.setStyleProperty(P,"contain","size paint style"),e.setStyleProperty(P,"overflow","clip"),e.setStyleProperty(P,"flex","none"),e.setStyleProperty(P,"position","relative"),e.insert(P,e.createComponent(t.For,{get each(){return L()},children:(r,o)=>{const i=t.createMemo((()=>q()[0]+o())),s=t.createMemo((()=>(S(),v.I(i())))),l=t.createMemo((()=>(S(),v._(i())))),c=t.createMemo((()=>t.untrack((()=>n.children(r,i)))));return e.createComponent(O,{get D(){return i()},get Y(){return p.N},get A(){return s()},get F(){return l()},get G(){return c()},U:d})}})),e.effect((t=>{var r=d?H()+"px":"100%",n=d?"100%":H()+"px",o=J()?"none":void 0;return r!==t.e&&e.setStyleProperty(P,"width",t.e=r),n!==t.t&&e.setStyleProperty(P,"height",t.t=n),o!==t.a&&e.setStyleProperty(P,"pointer-events",t.a=o),t}),{e:void 0,t:void 0,a:void 0}),P;var P,W};
2
2
  //# sourceMappingURL=index.cjs.map