virtua 0.46.7 → 0.47.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.
@@ -38,25 +38,35 @@ export interface VGridHandle {
38
38
  */
39
39
  readonly viewportWidth: number;
40
40
  /**
41
- * Find the start index of visible range of items.
41
+ * Find nearest row index from offset.
42
+ * @param offset offset in pixels from the start of the scroll container
42
43
  */
43
- findStartIndex: () => [x: number, y: number];
44
+ findRowIndex: (offset: number) => number;
44
45
  /**
45
- * Find the end index of visible range of items.
46
+ * Find nearest col index from offset.
47
+ * @param offset offset in pixels from the start of the scroll container
46
48
  */
47
- findEndIndex: () => [x: number, y: number];
49
+ findColIndex: (offset: number) => number;
48
50
  /**
49
- * Get item offset from start.
50
- * @param indexX horizontal index of item
51
- * @param indexY vertical of item
51
+ * Get row offset from start.
52
+ * @param index index of row
52
53
  */
53
- getItemOffset(indexX: number, indexY: number): [x: number, y: number];
54
+ getRowOffset(index: number): number;
54
55
  /**
55
- * Get item size.
56
- * @param indexX horizontal index of item
57
- * @param indexY vertical of item
56
+ * Get col offset from start.
57
+ * @param index index of col
58
+ */
59
+ getColOffset(index: number): number;
60
+ /**
61
+ * Get row size.
62
+ * @param index index of row
63
+ */
64
+ getRowSize(index: number): number;
65
+ /**
66
+ * Get col size.
67
+ * @param index index of col
58
68
  */
59
- getItemSize(indexX: number, indexY: number): [width: number, height: number];
69
+ getColSize(index: number): number;
60
70
  /**
61
71
  * Resize individual columns.
62
72
  * @param cols array of `[index, size]` to update column sizes
@@ -72,19 +82,19 @@ export interface VGridHandle {
72
82
  * @param indexX horizontal index of item
73
83
  * @param indexY vertical index of item
74
84
  */
75
- scrollToIndex(indexX: number, indexY: number): void;
85
+ scrollToIndex(indexX?: number, indexY?: number): void;
76
86
  /**
77
87
  * Scroll to the given offset.
78
88
  * @param offsetX offset from left
79
89
  * @param offsetY offset from top
80
90
  */
81
- scrollTo(offsetX: number, offsetY: number): void;
91
+ scrollTo(offsetX?: number, offsetY?: number): void;
82
92
  /**
83
93
  * Scroll by the given offset.
84
94
  * @param offsetX horizontal offset from current position
85
95
  * @param offsetY vertical offset from current position
86
96
  */
87
- scrollBy(offsetX: number, offsetY: number): void;
97
+ scrollBy(offsetX?: number, offsetY?: number): void;
88
98
  }
89
99
  /**
90
100
  * Props of {@link VGrid}.
@@ -127,13 +137,13 @@ export interface VGridProps extends ViewportComponentAttributes {
127
137
  */
128
138
  bufferSize?: number;
129
139
  /**
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.
140
+ * A prop for SSR. If set, the specified amount of rows will be mounted in the initial rendering regardless of the container size until hydrated.
131
141
  */
132
- initialRowCount?: number;
142
+ ssrRowCount?: number;
133
143
  /**
134
- * If set, the specified amount of cols will be mounted in the initial rendering regardless of the container size. This prop is mostly for SSR.
144
+ * A prop for SSR. If set, the specified amount of cols will be mounted in the initial rendering regardless of the container size until hydrated.
135
145
  */
136
- initialColCount?: number;
146
+ ssrColCount?: number;
137
147
  /**
138
148
  * Component or element type for cell element. This component will get {@link CustomCellComponentProps} as props.
139
149
  * @defaultValue "div"
@@ -22,13 +22,10 @@ export interface VirtualizerHandle {
22
22
  */
23
23
  readonly viewportSize: number;
24
24
  /**
25
- * Find the start index of visible range of items.
25
+ * Find nearest item index from offset.
26
+ * @param offset offset in pixels from the start of the scroll container
26
27
  */
27
- findStartIndex: () => number;
28
- /**
29
- * Find the end index of visible range of items.
30
- */
31
- findEndIndex: () => number;
28
+ findItemIndex: (offset: number) => number;
32
29
  /**
33
30
  * Get item offset from start.
34
31
  * @param index index of item
@@ -10,13 +10,28 @@ export interface WindowVirtualizerHandle {
10
10
  */
11
11
  readonly cache: CacheSnapshot;
12
12
  /**
13
- * Find the start index of visible range of items.
13
+ * Get current scrollTop, or scrollLeft if horizontal: true.
14
14
  */
15
- findStartIndex: () => number;
15
+ readonly scrollOffset: number;
16
16
  /**
17
- * Find the end index of visible range of items.
17
+ * Get current offsetHeight, or offsetWidth if horizontal: true.
18
18
  */
19
- findEndIndex: () => number;
19
+ readonly viewportSize: number;
20
+ /**
21
+ * Find nearest item index from offset.
22
+ * @param offset offset in pixels from the start of the scroll container
23
+ */
24
+ findItemIndex: (offset: number) => number;
25
+ /**
26
+ * Get item offset from start.
27
+ * @param index index of item
28
+ */
29
+ getItemOffset(index: number): number;
30
+ /**
31
+ * Get item size.
32
+ * @param index index of item
33
+ */
34
+ getItemSize(index: number): number;
20
35
  /**
21
36
  * Scroll to the item specified by index.
22
37
  * @param index index of item
@@ -24,13 +24,10 @@ export interface VirtualizerHandle {
24
24
  */
25
25
  readonly viewportSize: number;
26
26
  /**
27
- * Find the start index of visible range of items.
27
+ * Find nearest item index from offset.
28
+ * @param offset offset in pixels from the start of the scroll container
28
29
  */
29
- findStartIndex: () => number;
30
- /**
31
- * Find the end index of visible range of items.
32
- */
33
- findEndIndex: () => number;
30
+ findItemIndex: (offset: number) => number;
34
31
  /**
35
32
  * Get item offset from start.
36
33
  * @param index index of item
@@ -12,13 +12,28 @@ export interface WindowVirtualizerHandle {
12
12
  */
13
13
  readonly cache: CacheSnapshot;
14
14
  /**
15
- * Find the start index of visible range of items.
15
+ * Get current scrollTop, or scrollLeft if horizontal: true.
16
16
  */
17
- findStartIndex: () => number;
17
+ readonly scrollOffset: number;
18
18
  /**
19
- * Find the end index of visible range of items.
19
+ * Get current offsetHeight, or offsetWidth if horizontal: true.
20
20
  */
21
- findEndIndex: () => number;
21
+ readonly viewportSize: number;
22
+ /**
23
+ * Find nearest item index from offset.
24
+ * @param offset offset in pixels from the start of the scroll container
25
+ */
26
+ findItemIndex: (offset: number) => number;
27
+ /**
28
+ * Get item offset from start.
29
+ * @param index index of item
30
+ */
31
+ getItemOffset(index: number): number;
32
+ /**
33
+ * Get item size.
34
+ * @param index index of item
35
+ */
36
+ getItemSize(index: number): number;
22
37
  /**
23
38
  * Scroll to the item specified by index.
24
39
  * @param index index of item
@@ -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)),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=i((r+n)/2);if(v(e,o)<=t){if(v(e,o+1)>t)return o;r=o+1}else n=o-1}return c(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,$=()=>document.documentElement,x=e=>e.ownerDocument,b=e=>e.defaultView,w=/*#__PURE__*/f((()=>!!S&&"rtl"===getComputedStyle($()).direction)),y=/*#__PURE__*/f((()=>!!/iP(hone|od|ad)/.test(navigator.userAgent)||"MacIntel"===navigator.platform&&navigator.maxTouchPoints>0)),z=/*#__PURE__*/f((()=>"scrollBehavior"in $().style)),_=(e,t=40,i=0,c,u=!1)=>{let a=!!i,f=1,S=0,$=0,x=0,b=0,w=0,z=0,_=0,I=0,k=r,T=[0,a?o(i-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+1)}))(e,t,c),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=()=>v(E,E.u),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:()=>{O.clear()},p:()=>f,m:()=>(e=>[e.o.slice(),e.i])(E),S:(e=200)=>{if(!S||a)return T;let t,r;if(z)[t,r]=T;else{let s=o(0,q()),i=s+S;u||(e=o(0,e),1!==_&&(s-=e),2!==_&&(i+=e)),[t,r]=T=J(o(0,s),o(0,i)),k&&(t=n(t,k[0]),r=o(r,k[1]))}return[o(t,0),n(r,E.u-1)]},$:()=>p(E,q()),_:()=>p(E,q()+S),I:P,k:H,T:L,M:()=>E.u,O:()=>x,R:()=>0!==_,q:()=>S,J:()=>$,B,H:()=>(z=b,b=0,[z,2===I]),L:(e,t)=>{const r=[e,t];return O.add(r),()=>{O.delete(r)}},P:(e,t)=>{let n,i,c=0;switch(e){case 1:{if(t===x&&0===I)break;const e=z;z=0;const r=t-x,n=s(r);e&&n<s(e)+1||0!==I||(_=r<0?2:1),a&&(a=!1),x=t,c=4;const o=R();o>=-S&&o<=B()&&(c+=1,i=n>S);break}case 2:c=8,0!==_&&(n=!0,c+=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?1: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 s=l(n),i=s.length,c=i/2|0,u=i%2==0?(s[c-1]+s[c])/2:s[c],a=e.i;return((e.i=u)-a)*o(t-r,0)})(E,p(E,q()))),u=!1),c=3,i=!0;break}case 4:S!==t&&(S||(i=!0),S=t,c=3);break;case 5:t[1]?(W(m(E,t[0],!0)),I=2,c=1):(m(E,t[0]),c=1);break;case 6:$=t;break;case 7:I=1;break;case 8:k=J(t,t+S),c=1}c&&(f=1+(2147483647&f),n&&w&&(b+=w,w=0),O.forEach((([e,t])=>{c&e&&t(i)})))}}},I=setTimeout,k=(e,t)=>t&&w()?-e:e,T=(e,t,n,o,s,i)=>{const c=Date.now;let l=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.P(2)})()}),150)};return o.W=n,o})(),g=()=>{l=c(),f&&(d=!0),i&&e.P(6,i()),e.P(1,o()),h()},v=t=>{if(u||!e.R()||t.ctrlKey)return;const r=c()-l;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}),{j:()=>{t.removeEventListener("scroll",g),t.removeEventListener("wheel",v),t.removeEventListener("touchstart",p),t.removeEventListener("touchend",m),h.W()},C:()=>{const[t,r]=e.H();t&&(s(k(t,n),r,d),d=!1,r&&e.q()>e.B()&&e.P(1,o()))}}},M=(e,t,r)=>{let n;return[async(o,s)=>{if(!await t())return;n&&n();const i=()=>{const[t,r]=a();return n=()=>{r(!1)},e.q()&&I(n,150),[t,e.L(2,(()=>{r(!0)}))]};if(s&&z())e.P(8,o()),u((async()=>{for(;;){let t=!0;for(let[r,n]=e.S();r<=n;r++)if(e.I(r)){t=!1;break}if(t)break;const[r,n]=i();try{if(!await r)return}finally{n()}}e.P(7),r(o(),s)}));else for(;;){const[t,n]=i();try{if(e.P(7),r(o()),!await t)return}finally{n()}}},()=>{n&&n()}]},E=e=>{let t;return{V(r){(t||(t=new(b(x(r)).ResizeObserver)(e))).observe(r)},X(e){t.unobserve(e)},j(){t&&t.disconnect()}}},O=r=>{let n;r=t.mergeProps({Y:"div"},r),t.createEffect((()=>{n&&t.onCleanup(r.D(n,r.U))}));const o=t.createMemo((()=>{const e=r.A,t={contain:"layout style",position:"absolute",[e?"height":"width"]:"100%",[e?"top":"left"]:"0px",[e?w()?"right":"left":"top"]:r.F+"px",visibility:r.G?"hidden":void 0};return e&&(t.display="inline-flex"),t}));return e.createComponent(e.Dynamic,{get component(){return r.Y},get index(){return r.U},ref(e){"function"==typeof n?n(e):n=e},get style(){return o()},get children(){return r.K}})},R=(e,t)=>e[0]===t[0]&&e[1]===t[1],q=n=>{let s;const{itemSize:i,horizontal:u=!1,cache:f}=n;n=t.mergeProps({as:"div"},n);const d=_(n.data.length,i,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.P(4,l[o]);else{const e=s.get(c);e!=r&&i.push([e,l[o]])}i.length&&e.P(3,i)}));return{N(e){i.V(n=e)},Z:(e,t)=>(s.set(e,t),i.V(e),()=>{s.delete(e),i.X(e)}),v:i.j}})(d,u),g=((e,t)=>{let r,n,o=a();const s=t?"scrollLeft":"scrollTop",i=t?"overflowX":"overflowY",[l,u]=M(e,(()=>o[0]),((e,n)=>{e=k(e,t),n?r.scrollTo({[t?"left":"top"]:e,behavior:"smooth"}):r[s]=e}));return{ee(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}))}c[s]=e.O()+t,r&&u()})),o[1](!0)},v(){n&&n.j(),o[1](!1),o=a()},te(e){l((()=>e))},re(t){t+=e.O(),l((()=>t))},ne(t,{align:r,smooth:n,offset:o=0}={}){if(t=c(t,0,e.M()-1),"nearest"===r){const n=e.k(t),o=e.O();if(n<o)r="start";else{if(!(n+e.T(t)>o+e.q()))return;r="end"}}l((()=>o+e.J()+e.k(t)+("end"===r?e.T(t)-e.q():"center"===r?(e.T(t)-e.q())/2:0)),n)},oe:()=>{n&&n.C()}}})(d,u),[v,p]=t.createSignal(d.p());d.L(1,(()=>{p(d.p())})),d.L(4,(()=>{var e;null===(e=n.onScroll)||void 0===e||e.call(n,d.O())})),d.L(8,(()=>{var e;null===(e=n.onScrollEnd)||void 0===e||e.call(n)}));const m=t.createMemo((e=>{v();const t=d.S(n.bufferSize);return e&&R(e,t)?e:t})),S=t.createMemo((()=>v()&&d.R())),$=t.createMemo((()=>v()&&d.B()));t.onMount((()=>{n.ref&&n.ref({get cache(){return d.m()},get scrollOffset(){return d.O()},get scrollSize(){return(e=>o(e.B(),e.q()))(d)},get viewportSize(){return d.q()},findStartIndex:d.$,findEndIndex:d._,getItemOffset:d.k,getItemSize:d.T,scrollToIndex:g.ne,scrollTo:g.te,scrollBy:g.re});const e=n.scrollRef||s.parentElement;h.N(e),g.ee(e),t.onCleanup((()=>{n.ref&&n.ref(),d.v(),h.v(),g.v()}))})),t.createComputed(t.on((()=>n.startMargin||0),(e=>{e!==d.J()&&d.P(6,e)}))),t.createEffect(t.on(v,(()=>{g.oe()})));const x=t.createMemo((()=>{const e=n.data.length;t.untrack((()=>{e!==d.M()&&d.P(5,[e,n.shift])}));const r=[],o=[];if(n.keepMounted){const e=new Set(n.keepMounted);for(let[t,r]=m();t<=r;t++)e.add(t);l([...e]).forEach((e=>{r.push(n.data[e]),o.push(e)}))}else for(let[e,t]=m();e<=t;e++)r.push(n.data[e]),o.push(e);return{se:r,ie:o}}));return e.createComponent(e.Dynamic,{get component(){return n.as},ref(e){"function"==typeof s?s(e):s=e},get style(){return{contain:"size style","overflow-anchor":"none",flex:"none",position:"relative",width:u?$()+"px":"100%",height:u?"100%":$()+"px","pointer-events":S()?"none":void 0}},get children(){return e.createComponent(t.For,{get each(){return x().se},children:(r,o)=>((r,o)=>{const s=t.createMemo((()=>(v(),d.k(o())))),i=t.createMemo((()=>(v(),d.I(o())))),c=t.createMemo((()=>t.untrack((()=>n.children(r,o)))));return e.createComponent(O,{get Y(){return n.item},get U(){return o()},get D(){return h.Z},get F(){return s()},get G(){return i()},get K(){return c()},A:u})})(r,t.createMemo((()=>x().ie[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 s=J(),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(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}})),s;var s},exports.Virtualizer=q,exports.WindowVirtualizer=n=>{let o;const{ref:s,data:i,children:l,itemSize:f,shift:d,horizontal:h=!1,cache:g,onScrollEnd:v}=n,p=_(n.data.length,f,void 0,g,!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.P(3,o)}));let c;return{N(t){const r=b(x(t)),n=()=>{e.P(4,r[o])};r.addEventListener("resize",n),u(n),c=()=>{r.removeEventListener("resize",n)}},Z:(e,t)=>(s.set(e,t),i.V(e),()=>{s.delete(e),i.X(e)}),v(){c&&c(),i.j()}}})(p,h),S=((e,t)=>{let r,n,o=a();const s=t?"left":"top",[i]=M(e,(()=>o[0]),((e,n)=>{e=k(e,t);const o=b(x(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&&w()?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",u=x(i),a=b(u);n=T(e,a,t,(()=>k(a[c],t)),((t,r)=>{r?a.scroll({[s]:e.O()+t}):a.scrollBy({[s]:t})}),(()=>l(i,u.body,a,t))),o[1](!0)},v(){n&&n.j(),r=void 0,o[1](!1),o=a()},oe:()=>{n&&n.C()},ne(n,{align:o,smooth:s,offset:u=0}={}){if(!r)return;if(n=c(n,0,e.M()-1),"nearest"===o){const t=e.k(n),r=e.O();if(t<r)o="start";else{if(!(t+e.T(n)>r+e.q()))return;o="end"}}const a=x(r),f=b(a),d=a.documentElement,h=()=>e.q()-(t?d.clientWidth:d.clientHeight);i((()=>u+l(r,a.body,f,t)+e.k(n)+("end"===o?e.T(n)-(e.q()-h()):"center"===o?(e.T(n)-(e.q()-h()))/2:0)),s)}}})(p,h),[$,y]=t.createSignal(p.p());p.L(1,(()=>{y(p.p())})),p.L(4,(()=>{var e;null===(e=n.onScroll)||void 0===e||e.call(n)})),p.L(8,(()=>{var e;null===(e=n.onScrollEnd)||void 0===e||e.call(n)}));const z=t.createMemo((e=>{$();const t=p.S(n.bufferSize);return e&&R(e,t)?e:t})),I=t.createMemo((()=>$()&&p.R())),q=t.createMemo((()=>$()&&p.B()));t.onMount((()=>{n.ref&&n.ref({get cache(){return p.m()},findStartIndex:p.$,findEndIndex:p._,scrollToIndex:S.ne}),m.N(o),S.ee(o),t.onCleanup((()=>{n.ref&&n.ref(),p.v(),m.v(),S.v()}))})),t.createEffect(t.on($,(()=>{S.oe()})));const J=t.createMemo((()=>{const e=n.data.length;t.untrack((()=>{e!==p.M()&&p.P(5,[e,n.shift])}));const r=[];for(let[e,t]=z();e<=t;e++)r.push(n.data[e]);return r}));return H=B(),"function"==typeof(L=o)?e.use(L,H):o=H,e.setStyleProperty(H,"contain","size style"),e.setStyleProperty(H,"flex","none"),e.setStyleProperty(H,"position","relative"),e.insert(H,e.createComponent(t.For,{get each(){return J()},children:(r,o)=>{const s=t.createMemo((()=>z()[0]+o())),i=t.createMemo((()=>($(),p.k(s())))),c=t.createMemo((()=>($(),p.I(s())))),l=t.createMemo((()=>t.untrack((()=>n.children(r,s)))));return e.createComponent(O,{get U(){return s()},get D(){return m.Z},get F(){return i()},get G(){return c()},get K(){return l()},A:h})}})),e.effect((t=>{var r=h?q()+"px":"100%",n=h?"100%":q()+"px",o=I()?"none":void 0;return r!==t.e&&e.setStyleProperty(H,"width",t.e=r),n!==t.t&&e.setStyleProperty(H,"height",t.t=n),o!==t.a&&e.setStyleProperty(H,"pointer-events",t.a=o),t}),{e:void 0,t:void 0,a:void 0}),H;var H,L};
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)),u="function"==typeof queueMicrotask?queueMicrotask:e=>{Promise.resolve().then(e)},f=()=>{let e;return[new Promise((t=>{e=t})),e]},a=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)=>{let o=r;for(;r<=n;){const s=i((r+n)/2);v(e,s)<=t?(o=s,r=s+1):n=s-1}return c(o,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,$=()=>document.documentElement,b=e=>e.ownerDocument,w=e=>e.defaultView,x=/*#__PURE__*/a((()=>!!S&&"rtl"===getComputedStyle($()).direction)),z=/*#__PURE__*/a((()=>!!/iP(hone|od|ad)/.test(navigator.userAgent)||"MacIntel"===navigator.platform&&navigator.maxTouchPoints>0)),y=/*#__PURE__*/a((()=>"scrollBehavior"in $().style)),_=(e,t=40,i=0,c,u=!1)=>{let f=!!i,a=1,S=0,$=0,b=0,w=0,x=0,y=0,_=0,I=0,k=r,T=[0,f?o(i-1,0):-1],M=0;const O=((e,t,r)=>({i:t,o:r?d(r.slice(0,n(e,r.length)),o(0,e-r.length)):d([],e),u:e,l:-1,h:d([],e+1)}))(e,c?c[1]:t,c&&c[0]),R=new Set,q=()=>b-$,J=()=>q()+x+w,B=(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)]}})(O,e,t,T[0]),E=()=>v(O,O.u),H=e=>v(O,e)-x,L=e=>h(O,e),P=(e,t=-1)=>O.o[e]===t,W=e=>{e&&(z()&&0!==_||k&&1===I?x+=e:w+=e)};return{v:()=>{R.clear()},p:()=>a,m:()=>(e=>[e.o.slice(),e.i])(O),S:(e=200)=>{if(!S||f)return T;let t,r;if(y)[t,r]=T;else{let s=o(0,J()),i=s+S;u||(e=o(0,e),1!==_&&(s-=e),2!==_&&(i+=e)),[t,r]=T=B(o(0,s),o(0,i)),k&&(t=n(t,k[0]),r=o(r,k[1]))}return[o(t,0),n(r,O.u-1)]},$:e=>p(O,e-$),_:P,I:H,k:L,T:()=>O.u,M:()=>b,O:()=>0!==_,R:()=>S,q:()=>$,J:E,B:()=>(y=w,w=0,[y,2===I]),H:(e,t)=>{const r=[e,t];return R.add(r),()=>{R.delete(r)}},L:(e,t)=>{let n,i,c=0;switch(e){case 1:{if(t===b&&0===I)break;const e=y;y=0;const r=t-b,n=s(r);e&&n<s(e)+1||0!==I||(_=r<0?2:1),f&&(f=!1),b=t,c=4;const o=q();o>=-S&&o<=E()&&(c+=1,i=n>S);break}case 2:c=8,0!==_&&(n=!0,c+=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?1:0))<q()))&&(e+=r-L(t)),e)),0));for(const[t,r]of e){const e=L(t),n=g(O,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 s=l(n),i=s.length,c=i/2|0,u=i%2==0?(s[c-1]+s[c])/2:s[c],f=e.i;return((e.i=u)-f)*o(t-r,0)})(O,p(O,J()))),u=!1),c=3,i=!0;break}case 4:S!==t&&(S||(i=!0),S=t,c=3);break;case 5:t[1]?(W(m(O,t[0],!0)),I=2,c=1):(m(O,t[0]),c=1);break;case 6:$=t;break;case 7:I=1;break;case 8:k=B(t,t+S),c=1}c&&(a=1+(2147483647&a),n&&x&&(w+=x,x=0),R.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,u=!1,f=!1,a=!1,d=!1;const h=(()=>{let t;const n=()=>{t!=r&&clearTimeout(t)},o=()=>{n(),t=I((()=>{t=r,(()=>{if(u||f)return u=!1,void h();a=!1,e.L(2)})()}),150)};return o.P=n,o})(),g=()=>{l=c(),a&&(d=!0),i&&e.L(6,i()),e.L(1,o()),h()},v=t=>{if(u||!e.O()||t.ctrlKey)return;const r=c()-l;150>r&&50<r&&(n?t.deltaX:t.deltaY)&&(u=!0)},p=()=>{f=!0,a=d=!1},m=()=>{f=!1,z()&&(a=!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(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,s)=>{if(!await t())return;n&&n();const i=()=>{const[t,r]=f();return n=()=>{r(!1)},e.R()&&I(n,150),[t,e.H(2,(()=>{r(!0)}))]};if(s&&y())e.L(8,o()),u((async()=>{for(;;){let t=!0;for(let[r,n]=e.S();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(w(b(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?x()?"right":"left":"top"]:r.A+"px",visibility:r.F?"hidden":void 0};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:u=!1,cache:a}=n;n=t.mergeProps({as:"div"},n);const d=_(n.data.length,i,void 0,a,!i),h=((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)}),v:i.W}})(d,u),g=((e,t)=>{let r,n,o=f();const s=t?"scrollLeft":"scrollTop",i=t?"overflowX":"overflowY",[l,u]=M(e,(()=>o[0]),((e,n)=>{e=k(e,t),n?r.scrollTo({[t?"left":"top"]:e,behavior:"smooth"}):r[s]=e}));return{Z(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}))}c[s]=e.M()+t,r&&u()})),o[1](!0)},v(){n&&n.W(),o[1](!1),o=f()},ee(e){l((()=>e))},te(t){t+=e.M(),l((()=>t))},re(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)},ne:()=>{n&&n.j()}}})(d,u),[v,p]=t.createSignal(d.p());d.H(1,(()=>{p(d.p())})),d.H(4,(()=>{var e;null===(e=n.onScroll)||void 0===e||e.call(n,d.M())})),d.H(8,(()=>{var e;null===(e=n.onScrollEnd)||void 0===e||e.call(n)}));const m=t.createMemo((e=>{v();const t=d.S(n.bufferSize);return e&&q(e,t)?e:t})),S=t.createMemo((()=>v()&&d.O())),$=t.createMemo((()=>v()&&d.J()));t.onMount((()=>{n.ref&&n.ref({get cache(){return d.m()},get scrollOffset(){return d.M()},get scrollSize(){return(e=>o(e.J(),e.R()))(d)},get viewportSize(){return d.R()},findItemIndex:d.$,getItemOffset:d.I,getItemSize:d.k,scrollToIndex:g.re,scrollTo:g.ee,scrollBy:g.te});const e=n.scrollRef||s.parentElement;h.K(e),g.Z(e),t.onCleanup((()=>{n.ref&&n.ref(),d.v(),h.v(),g.v()}))})),t.createComputed(t.on((()=>n.startMargin||0),(e=>{e!==d.q()&&d.L(6,e)}))),t.createEffect(t.on(v,(()=>{g.ne()})));const b=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]=m();t<=r;t++)e.add(t);l([...e]).forEach((e=>{r.push(n.data[e]),o.push(e)}))}else for(let[e,t]=m();e<=t;e++)r.push(n.data[e]),o.push(e);return{oe:r,se:o}}));return e.createComponent(e.Dynamic,{get component(){return n.as},ref(e){"function"==typeof s?s(e):s=e},get style(){return{contain:"size style","overflow-anchor":"none",flex:"none",position:"relative",width:u?$()+"px":"100%",height:u?"100%":$()+"px","pointer-events":S()?"none":void 0}},get children(){return e.createComponent(t.For,{get each(){return b().oe},children:(r,o)=>((r,o)=>{const s=t.createMemo((()=>(v(),d.I(o())))),i=t.createMemo((()=>(v(),d._(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 h.N},get A(){return s()},get F(){return i()},get G(){return c()},U:u})})(r,t.createMemo((()=>b().se[o()])))})}})};var B=/*#__PURE__*/e.template("<div>"),E=/*#__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 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 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}})),s;var s},exports.Virtualizer=J,exports.WindowVirtualizer=n=>{let o;const{ref:s,data:i,children:l,itemSize:a,shift:d,horizontal:h=!1,cache:g,onScrollEnd:v}=n,p=_(n.data.length,a,void 0,g,!a),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=w(b(t)),n=()=>{e.L(4,r[o])};r.addEventListener("resize",n),u(n),c=()=>{r.removeEventListener("resize",n)}},N:(e,t)=>(s.set(e,t),i.C(e),()=>{s.delete(e),i.V(e)}),v(){c&&c(),i.W()}}})(p,h),S=((e,t)=>{let r,n,o=f();const s=t?"left":"top",[i]=M(e,(()=>o[0]),((e,n)=>{e=k(e,t);const o=w(b(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&&x()?r.innerWidth-e[s]-e.offsetWidth:e[s]),c=e.offsetParent;return e!==t&&c?l(c,t,r,n,i):i};return{Z(i){r=i;const c=t?"scrollX":"scrollY",u=b(i),f=w(u);n=T(e,f,t,(()=>k(f[c],t)),((t,r)=>{r?f.scroll({[s]:e.M()+t}):f.scrollBy({[s]:t})}),(()=>l(i,u.body,f,t))),o[1](!0)},v(){n&&n.W(),r=void 0,o[1](!1),o=f()},ne:()=>{n&&n.j()},re(n,{align:o,smooth:s,offset:u=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 f=b(r),a=w(f),d=f.documentElement,h=()=>e.R()-(t?d.clientWidth:d.clientHeight);i((()=>u+l(r,f.body,a,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),[$,z]=t.createSignal(p.p());p.H(1,(()=>{z(p.p())})),p.H(4,(()=>{var e;null===(e=n.onScroll)||void 0===e||e.call(n)})),p.H(8,(()=>{var e;null===(e=n.onScrollEnd)||void 0===e||e.call(n)}));const y=t.createMemo((e=>{$();const t=p.S(n.bufferSize);return e&&q(e,t)?e:t})),I=t.createMemo((()=>$()&&p.O())),J=t.createMemo((()=>$()&&p.J()));t.onMount((()=>{n.ref&&n.ref({get cache(){return p.m()},get scrollOffset(){return p.M()},get viewportSize(){return p.R()},findItemIndex:p.$,getItemOffset:p.I,getItemSize:p.k,scrollToIndex:S.re}),m.K(o),S.Z(o),t.onCleanup((()=>{n.ref&&n.ref(),p.v(),m.v(),S.v()}))})),t.createEffect(t.on($,(()=>{S.ne()})));const B=t.createMemo((()=>{const e=n.data.length;t.untrack((()=>{e!==p.T()&&p.L(5,[e,n.shift])}));const r=[];for(let[e,t]=y();e<=t;e++)r.push(n.data[e]);return r}));return H=E(),"function"==typeof(L=o)?e.use(L,H):o=H,e.setStyleProperty(H,"contain","size style"),e.setStyleProperty(H,"flex","none"),e.setStyleProperty(H,"position","relative"),e.insert(H,e.createComponent(t.For,{get each(){return B()},children:(r,o)=>{const s=t.createMemo((()=>y()[0]+o())),i=t.createMemo((()=>($(),p.I(s())))),c=t.createMemo((()=>($(),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?J()+"px":"100%",n=h?"100%":J()+"px",o=I()?"none":void 0;return r!==t.e&&e.setStyleProperty(H,"width",t.e=r),n!==t.t&&e.setStyleProperty(H,"height",t.t=n),o!==t.a&&e.setStyleProperty(H,"pointer-events",t.a=o),t}),{e:void 0,t:void 0,a:void 0}),H;var H,L};
2
2
  //# sourceMappingURL=index.cjs.map