virtua 0.48.3 → 0.48.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/core/index.js CHANGED
@@ -1,2 +1,471 @@
1
- const e=null,{min:t,max:o,abs:r,floor:n}=Math,s=(e,r,n)=>t(n,o(r,e)),i=e=>[...e].sort(((e,t)=>e-t)),c="function"==typeof queueMicrotask?queueMicrotask:e=>{Promise.resolve().then(e)},l=()=>{let e;return[new Promise((t=>{e=t})),e]},f=e=>{let t;return()=>(e&&(t=e(),e=void 0),t)},a=(e,t,o)=>{const r=o?"unshift":"push";for(let o=0;o<t;o++)e[r](-1);return e},u=(e,t)=>{const o=e.t[t];return-1===o?e.o:o},$=(e,o,r)=>{const n=-1===e.t[o];return e.t[o]=r,e.i=t(o,e.i),n},d=(e,t)=>{if(!e.l)return 0;if(e.i>=t)return e.u[t];e.i<0&&(e.u[0]=0,e.i=0);let o=e.i,r=e.u[o];for(;o<t;)r+=u(e,o),e.u[++o]=r;return e.i=t,r},p=(e,t,o=0,r=e.l-1)=>{let i=o;for(;o<=r;){const s=n((o+r)/2);d(e,s)<=t?(i=s,o=s+1):r=s-1}return s(i,0,e.l-1)},h=(e,o,r)=>{const n=o-e.l;return e.i=r?-1:t(o-1,e.i),e.l=o,n>0?(a(e.u,n),a(e.t,n,r),e.o*n):(e.u.splice(n),(r?e.t.splice(0,-n):e.t.splice(n)).reduce(((t,o)=>t-(-1===o?e.o:o)),0))},g="undefined"!=typeof window,m=e=>e.documentElement,v=e=>e.ownerDocument,b=e=>e.defaultView,w=/*#__PURE__*/f((()=>!!/iP(hone|od|ad)/.test(navigator.userAgent)||"MacIntel"===navigator.platform&&navigator.maxTouchPoints>0)),S=/*#__PURE__*/f((()=>"scrollBehavior"in m(document).style)),k=5,I=6,y=1,x=4,_=8,z=e=>o(e.$getTotalSize(),e.$getViewportSize()),T=(n,s=40,c=0,l,f=!1)=>{let g=!!c,m=1,v=0,b=0,S=0,k=0,I=0,y=0,x=0,_=0,z=e,T=[0,g?o(c-1,0):-1],M=0,R=!1;const J=((e,r,n)=>({o:r,t:n?a(n.slice(0,t(e,n.length)),o(0,e-n.length)):a([],e),l:e,i:-1,u:a([],e+1)}))(n,l?l[1]:s,l&&l[0]),C=new Set,W=()=>S-b,B=()=>W()+I+k,L=(e,o)=>((e,o,r,n)=>{if(n=t(n,e.l-1),d(e,n)<=o){const t=p(e,r,n);return[p(e,o,n,t),t]}{const t=p(e,o,void 0,n);return[t,p(e,r,t)]}})(J,e,o,T[0]),N=()=>d(J,J.l),O=(e,t)=>{const o=d(J,e)-I;return t?N()-o-P(e):o},P=e=>u(J,e),q=(e,t=-1)=>J.t[e]===t,V=e=>{e&&(w()&&0!==x||z&&1===_?I+=e:k+=e)};return{$dispose:()=>{C.clear()},$getStateVersion:()=>m,$getCacheSnapshot:()=>(e=>[e.t.slice(),e.o])(J),$getRange:(e=200)=>{if(!R||g)return T;let r,n;if(y)[r,n]=T;else{let s=o(0,B()),i=s+v;f||(e=o(0,e),1!==x&&(s-=e),2!==x&&(i+=e)),[r,n]=T=L(o(0,s),o(0,i)),z&&(r=t(r,z[0]),n=o(n,z[1]))}return[o(r,0),t(n,J.l-1)]},$findItemIndex:e=>p(J,e-b),$isUnmeasuredItem:q,$getItemOffset:O,$getItemSize:P,$getItemsLength:()=>J.l,$getScrollOffset:()=>S,$isScrolling:()=>0!==x,$getViewportSize:()=>v,$getStartSpacerSize:()=>b,$getTotalSize:N,$:()=>(y=k,k=0,[y,2===_]),$subscribe:(e,t)=>{const o=[e,t];return C.add(o),()=>{C.delete(o)}},$update:(t,n)=>{let s,c,l=0;switch(t){case 1:{if(n===S&&0===_)break;const e=y;y=0;const t=n-S,o=r(t);e&&o<r(e)+1||0!==_||(x=t<0?2:1),g&&(g=!1),S=n,l=4;const s=W();s>=-v&&s<=N()&&(l+=1,c=o>v);break}case 2:l=8,0!==x&&(s=!0,l+=1),x=0,_=0,z=e;break;case 3:{const e=n.filter((([e,t])=>!q(e,t)));if(!e.length)break;V(e.reduce(((e,[t,o])=>((2===_||(z&&1===_?t<z[0]:O(t+(0===x&&0===_?1:0))<W()))&&(e+=o-P(t)),e)),0));for(const[t,o]of e){const e=P(t),r=$(J,t,o);f&&(M+=r?o:o-e)}f&&v&&M>v&&(V(((e,t)=>{let r=0;const n=[];e.t.forEach(((e,o)=>{-1!==e&&(n.push(e),o<t&&r++)})),e.i=-1;const s=i(n),c=s.length,l=c/2|0,f=c%2==0?(s[l-1]+s[l])/2:s[l],a=e.o;return((e.o=f)-a)*o(t-r,0)})(J,p(J,B()))),f=!1),l=3,c=!0;break}case 4:v!==n&&(v||(R=c=!0),v=n,l=3);break;case 5:n[1]?(V(h(J,n[0],!0)),_=2,l=1):(h(J,n[0]),l=1);break;case 6:b=n;break;case 7:_=1;break;case 8:z=L(n,n+v),l=1}l&&(m=1+(2147483647&m),s&&I&&(k+=I,I=0),C.forEach((([e,t])=>{l&e&&t(c)})))}}},M=setTimeout,R=(e,t)=>t?-e:e,J=(t,o,r,n,s,i)=>{const c=Date.now;let l=0,f=!1,a=!1,u=!1,$=!1;const d=(()=>{let o;const r=()=>{o!=e&&clearTimeout(o)},n=()=>{r(),o=M((()=>{o=e,(()=>{if(f||a)return f=!1,void d();u=!1,t.$update(2)})()}),150)};return n.p=r,n})(),p=()=>{l=c(),u&&($=!0),i&&t.$update(6,i()),t.$update(1,n()),d()},h=e=>{if(f||!t.$isScrolling()||e.ctrlKey)return;const o=c()-l;150>o&&50<o&&(r?e.deltaX:e.deltaY)&&(f=!0)},g=()=>{a=!0,u=$=!1},m=()=>{a=!1,w()&&(u=!0)};return o.addEventListener("scroll",p),o.addEventListener("wheel",h,{passive:!0}),o.addEventListener("touchstart",g,{passive:!0}),o.addEventListener("touchend",m,{passive:!0}),{h:()=>{o.removeEventListener("scroll",p),o.removeEventListener("wheel",h),o.removeEventListener("touchstart",g),o.removeEventListener("touchend",m),d.p()},m:()=>{const[e,o]=t.$();e&&(s(e,o,$),$=!1,o&&t.$getViewportSize()>t.$getTotalSize()&&t.$update(1,n()))}}},C=(e,t,o)=>{let r;return[async(n,s)=>{if(!await t())return;r&&r();const i=()=>{const[t,o]=l();return r=()=>{o(!1)},e.$getViewportSize()&&M(r,150),[t,e.$subscribe(2,(()=>{o(!0)}))]};if(s&&S())e.$update(8,n()),c((async()=>{for(;;){let t=!0;for(let[o,r]=e.$getRange();o<=r;o++)if(e.$isUnmeasuredItem(o)){t=!1;break}if(t)break;const[o,r]=i();try{if(!await o)return}finally{r()}}e.$update(7),o(n(),s)}));else for(;;){const[t,r]=i();try{if(e.$update(7),o(n()),!await t)return}finally{r()}}},()=>{r&&r()}]},W=(e,t)=>{let o,r,n=l(),i=!1;const c=t?"scrollLeft":"scrollTop",f=t?"overflowX":"overflowY",[a,u]=C(e,(()=>n[0]),((e,r)=>{e=R(e,i),r?o.scrollTo({[t?"left":"top"]:e,behavior:"smooth"}):o[c]=e}));return{$observe(s,l){o=l,t&&(i="rtl"===getComputedStyle(l).direction),r=J(e,l,t,(()=>R(l[c],i)),((t,o,r)=>{if(r){const e=l.style,t=e[f];e[f]="hidden",M((()=>{e[f]=t}))}l[c]=R(e.$getScrollOffset()+t,i),o&&u()})),n[1](!0)},$dispose(){r&&r.h(),n[1](!1),n=l()},$isNegative:()=>i,$scrollTo(e){a((()=>e))},$scrollBy(t){t+=e.$getScrollOffset(),a((()=>t))},$scrollToIndex(t,{align:o,smooth:r,offset:n=0}={}){if(t=s(t,0,e.$getItemsLength()-1),"nearest"===o){const r=e.$getItemOffset(t),n=e.$getScrollOffset();if(r<n)o="start";else{if(!(r+e.$getItemSize(t)>n+e.$getViewportSize()))return;o="end"}}a((()=>n+e.$getStartSpacerSize()+e.$getItemOffset(t)+("end"===o?e.$getItemSize(t)-e.$getViewportSize():"center"===o?(e.$getItemSize(t)-e.$getViewportSize())/2:0)),r)},$fixScrollJump:()=>{r&&r.m()}}},B=(e,t)=>{let o,r,n=l(),i=!1;const c=t?"left":"top",[f]=C(e,(()=>n[0]),((e,t)=>{e=R(e,i);const r=b(v(o));t?r.scroll({[c]:e,behavior:"smooth"}):r.scroll({[c]:e})})),a=(e,t,o,r,n=0)=>{const s=r?"offsetLeft":"offsetTop",c=n+(r&&i?o.innerWidth-e[s]-e.offsetWidth:e[s]),l=e.offsetParent;return e!==t&&l?a(l,t,o,r,c):c};return{$observe(s){o=s;const l=t?"scrollX":"scrollY",f=v(s),u=b(f);t&&(i="rtl"===getComputedStyle(m(f)).direction),r=J(e,u,t,(()=>R(u[l],i)),((t,o)=>{o?u.scroll({[c]:R(e.$getScrollOffset()+t,i)}):u.scrollBy({[c]:R(t,i)})}),(()=>a(s,f.body,u,t))),n[1](!0)},$dispose(){r&&r.h(),o=void 0,n[1](!1),n=l()},$isNegative:()=>i,$fixScrollJump:()=>{r&&r.m()},$scrollToIndex(r,{align:n,smooth:i,offset:c=0}={}){if(!o)return;if(r=s(r,0,e.$getItemsLength()-1),"nearest"===n){const t=e.$getItemOffset(r),o=e.$getScrollOffset();if(t<o)n="start";else{if(!(t+e.$getItemSize(r)>o+e.$getViewportSize()))return;n="end"}}const l=v(o),u=b(l),$=m(l),d=()=>e.$getViewportSize()-(t?$.clientWidth:$.clientHeight);f((()=>c+a(o,l.body,u,t)+e.$getItemOffset(r)+("end"===n?e.$getItemSize(r)-(e.$getViewportSize()-d()):"center"===n?(e.$getItemSize(r)-(e.$getViewportSize()-d()))/2:0)),i)}}},L=(e,t)=>{const o=W(e,!1),r=W(t,!0);return{$observe(e,t){o.$observe(e,t),r.$observe(e,t)},$dispose(){o.$dispose(),r.$dispose()},$isNegative:r.$isNegative,$scrollTo(e,t){null!=e&&o.$scrollTo(e),null!=t&&r.$scrollTo(t)},$scrollBy(e,t){null!=e&&o.$scrollBy(e),null!=t&&r.$scrollBy(t)},$scrollToIndex(e,t){null!=e&&o.$scrollToIndex(e),null!=t&&r.$scrollToIndex(t)},$fixScrollJump(){o.$fixScrollJump(),r.$fixScrollJump()}}},N=e=>{let t;return{v(o){(t||(t=new(b(v(o)).ResizeObserver)(e))).observe(o)},S(e){t.unobserve(e)},h(){t&&t.disconnect()}}},O=(t,o)=>{let r;const n=o?"width":"height",s=new WeakMap,i=N((o=>{const i=[];for(const{target:c,contentRect:l}of o)if(c.offsetParent)if(c===r)t.$update(4,l[n]);else{const t=s.get(c);t!=e&&i.push([t,l[n]])}i.length&&t.$update(3,i)}));return{$observeRoot(e){i.v(r=e)},$observeItem:(e,t)=>(s.set(e,t),i.v(e),()=>{s.delete(e),i.S(e)}),$dispose:i.h}},P=(t,o)=>{const r=o?"width":"height",n=o?"innerWidth":"innerHeight",s=new WeakMap,i=N((o=>{const n=[];for(const{target:t,contentRect:i}of o){if(!t.offsetParent)continue;const o=s.get(t);o!=e&&n.push([o,i[r]])}n.length&&t.$update(3,n)}));let l;return{$observeRoot(e){const o=b(v(e)),r=()=>{t.$update(4,o[n])};o.addEventListener("resize",r),c(r),l=()=>{o.removeEventListener("resize",r)}},$observeItem:(e,t)=>(s.set(e,t),i.v(e),()=>{s.delete(e),i.S(e)}),$dispose(){l&&l(),i.h()}}},q=(e,t)=>{let r;const n=new WeakMap,s=new Set,i=new Set,c=new Map,l=(e,t)=>`${e}-${t}`,f=N((f=>{const a=new Set,u=new Set;for(const{target:o,contentRect:{width:s,height:i}}of f)if(o.offsetParent)if(o===r)e.$update(4,i),t.$update(4,s);else{const e=n.get(o);if(e){const[t,o]=e,r=l(t,o),n=c.get(r);let f,$;n?(n[0]!==i&&(f=!0),n[1]!==s&&($=!0)):f=$=!0,f&&a.add(t),$&&u.add(o),(f||$)&&c.set(r,[i,s])}}if(a.size){const t=[];a.forEach((e=>{let r=0;i.forEach((t=>{const n=c.get(l(e,t));n&&(r=o(r,n[0]))})),r&&t.push([e,r])})),e.$update(3,t)}if(u.size){const e=[];u.forEach((t=>{let r=0;s.forEach((e=>{const n=c.get(l(e,t));n&&(r=o(r,n[1]))})),r&&e.push([t,r])})),t.$update(3,e)}}));return{$observeRoot(e){f.v(r=e)},$observeItem:(e,t,o)=>(n.set(e,[t,o]),s.add(t),i.add(o),f.v(e),()=>{n.delete(e),f.S(e)}),$resizeCols(o){for(const[t]of o)for(let o=0;o<e.$getItemsLength();o++)c.delete(l(o,t));t.$update(3,o)},$resizeRows(o){for(const[e]of o)for(let o=0;o<t.$getItemsLength();o++)c.delete(l(e,o));e.$update(3,o)},$dispose:f.h}};export{k as ACTION_ITEMS_LENGTH_CHANGE,I as ACTION_START_OFFSET_CHANGE,_ as UPDATE_SCROLL_END_EVENT,x as UPDATE_SCROLL_EVENT,y as UPDATE_VIRTUAL_STATE,q as createGridResizer,L as createGridScroller,O as createResizer,W as createScroller,T as createVirtualStore,P as createWindowResizer,B as createWindowScroller,z as getScrollSize,g as isBrowser,c as microtask,i as sort};
1
+ const e = null, {min: t, max: o, abs: r, floor: n} = Math, s = (e, r, n) => t(n, o(r, e)), i = e => [ ...e ].sort(((e, t) => e - t)), c = "function" == typeof queueMicrotask ? queueMicrotask : e => {
2
+ Promise.resolve().then(e);
3
+ }, l = () => {
4
+ let e;
5
+ return [ new Promise((t => {
6
+ e = t;
7
+ })), e ];
8
+ }, f = e => {
9
+ let t;
10
+ return () => (e && (t = e(), e = void 0), t);
11
+ }, a = (e, t, o) => {
12
+ const r = o ? "unshift" : "push";
13
+ for (let o = 0; o < t; o++) e[r](-1);
14
+ return e;
15
+ }, u = (e, t) => {
16
+ const o = e.t[t];
17
+ return -1 === o ? e.o : o;
18
+ }, $ = (e, o, r) => {
19
+ const n = -1 === e.t[o];
20
+ return e.t[o] = r, e.i = t(o, e.i), n;
21
+ }, d = (e, t) => {
22
+ if (!e.l) return 0;
23
+ if (e.i >= t) return e.u[t];
24
+ e.i < 0 && (e.u[0] = 0, e.i = 0);
25
+ let o = e.i, r = e.u[o];
26
+ for (;o < t; ) r += u(e, o), e.u[++o] = r;
27
+ return e.i = t, r;
28
+ }, p = (e, t, o = 0, r = e.l - 1) => {
29
+ let i = o;
30
+ for (;o <= r; ) {
31
+ const s = n((o + r) / 2);
32
+ d(e, s) <= t ? (i = s, o = s + 1) : r = s - 1;
33
+ }
34
+ return s(i, 0, e.l - 1);
35
+ }, h = (e, o, r) => {
36
+ const n = o - e.l;
37
+ return e.i = r ? -1 : t(o - 1, e.i), e.l = o, n > 0 ? (a(e.u, n), a(e.t, n, r),
38
+ e.o * n) : (e.u.splice(n), (r ? e.t.splice(0, -n) : e.t.splice(n)).reduce(((t, o) => t - (-1 === o ? e.o : o)), 0));
39
+ }, g = "undefined" != typeof window, m = e => e.documentElement, v = e => e.ownerDocument, b = e => e.defaultView, w = /*#__PURE__*/ f((() => !!/iP(hone|od|ad)/.test(navigator.userAgent) || "MacIntel" === navigator.platform && navigator.maxTouchPoints > 0)), S = /*#__PURE__*/ f((() => "scrollBehavior" in m(document).style)), k = 5, I = 6, y = 1, x = 4, _ = 8, z = e => o(e.$getTotalSize(), e.$getViewportSize()), T = (n, s = 40, c = 0, l, f = !1) => {
40
+ let g = !!c, m = 1, v = 0, b = 0, S = 0, k = 0, I = 0, y = 0, x = 0, _ = 0, z = e, T = [ 0, g ? o(c - 1, 0) : -1 ], M = 0, R = !1;
41
+ const J = ((e, r, n) => ({
42
+ o: r,
43
+ t: n ? a(n.slice(0, t(e, n.length)), o(0, e - n.length)) : a([], e),
44
+ l: e,
45
+ i: -1,
46
+ u: a([], e + 1)
47
+ }))(n, l ? l[1] : s, l && l[0]), C = new Set, W = () => S - b, B = () => W() + I + k, L = (e, o) => ((e, o, r, n) => {
48
+ if (n = t(n, e.l - 1), d(e, n) <= o) {
49
+ const t = p(e, r, n);
50
+ return [ p(e, o, n, t), t ];
51
+ }
52
+ {
53
+ const t = p(e, o, void 0, n);
54
+ return [ t, p(e, r, t) ];
55
+ }
56
+ })(J, e, o, T[0]), N = () => d(J, J.l), O = (e, t) => {
57
+ const o = d(J, e) - I;
58
+ return t ? N() - o - P(e) : o;
59
+ }, P = e => u(J, e), q = (e, t = -1) => J.t[e] === t, V = e => {
60
+ e && (w() && 0 !== x || z && 1 === _ ? I += e : k += e);
61
+ };
62
+ return {
63
+ $dispose: () => {
64
+ C.clear();
65
+ },
66
+ $getStateVersion: () => m,
67
+ $getCacheSnapshot: () => (e => [ e.t.slice(), e.o ])(J),
68
+ $getRange: (e = 200) => {
69
+ if (!R || g) return T;
70
+ let r, n;
71
+ if (y) [r, n] = T; else {
72
+ let s = o(0, B()), i = s + v;
73
+ f || (e = o(0, e), 1 !== x && (s -= e), 2 !== x && (i += e)), [r, n] = T = L(o(0, s), o(0, i)),
74
+ z && (r = t(r, z[0]), n = o(n, z[1]));
75
+ }
76
+ return [ o(r, 0), t(n, J.l - 1) ];
77
+ },
78
+ $findItemIndex: e => p(J, e - b),
79
+ $isUnmeasuredItem: q,
80
+ $getItemOffset: O,
81
+ $getItemSize: P,
82
+ $getItemsLength: () => J.l,
83
+ $getScrollOffset: () => S,
84
+ $isScrolling: () => 0 !== x,
85
+ $getViewportSize: () => v,
86
+ $getStartSpacerSize: () => b,
87
+ $getTotalSize: N,
88
+ $: () => (y = k, k = 0, [ y, 2 === _ ]),
89
+ $subscribe: (e, t) => {
90
+ const o = [ e, t ];
91
+ return C.add(o), () => {
92
+ C.delete(o);
93
+ };
94
+ },
95
+ $update: (t, n) => {
96
+ let s, c, l = 0;
97
+ switch (t) {
98
+ case 1:
99
+ {
100
+ if (n === S && 0 === _) break;
101
+ const e = y;
102
+ y = 0;
103
+ const t = n - S, o = r(t);
104
+ e && o < r(e) + 1 || 0 !== _ || (x = t < 0 ? 2 : 1), g && (g = !1), S = n, l = 4;
105
+ const s = W();
106
+ s >= -v && s <= N() && (l += 1, c = o > v);
107
+ break;
108
+ }
109
+
110
+ case 2:
111
+ l = 8, 0 !== x && (s = !0, l += 1), x = 0, _ = 0, z = e;
112
+ break;
113
+
114
+ case 3:
115
+ {
116
+ const e = n.filter((([e, t]) => !q(e, t)));
117
+ if (!e.length) break;
118
+ V(e.reduce(((e, [t, o]) => ((2 === _ || (z && 1 === _ ? t < z[0] : O(t + (0 === x && 0 === _ ? 1 : 0)) < W())) && (e += o - P(t)),
119
+ e)), 0));
120
+ for (const [t, o] of e) {
121
+ const e = P(t), r = $(J, t, o);
122
+ f && (M += r ? o : o - e);
123
+ }
124
+ f && v && M > v && (V(((e, t) => {
125
+ let r = 0;
126
+ const n = [];
127
+ e.t.forEach(((e, o) => {
128
+ -1 !== e && (n.push(e), o < t && r++);
129
+ })), e.i = -1;
130
+ const s = i(n), c = s.length, l = c / 2 | 0, f = c % 2 == 0 ? (s[l - 1] + s[l]) / 2 : s[l], a = e.o;
131
+ return ((e.o = f) - a) * o(t - r, 0);
132
+ })(J, p(J, B()))), f = !1), l = 3, c = !0;
133
+ break;
134
+ }
135
+
136
+ case 4:
137
+ v !== n && (v || (R = c = !0), v = n, l = 3);
138
+ break;
139
+
140
+ case 5:
141
+ n[1] ? (V(h(J, n[0], !0)), _ = 2, l = 1) : (h(J, n[0]), l = 1);
142
+ break;
143
+
144
+ case 6:
145
+ b = n;
146
+ break;
147
+
148
+ case 7:
149
+ _ = 1;
150
+ break;
151
+
152
+ case 8:
153
+ z = L(n, n + v), l = 1;
154
+ }
155
+ l && (m = 1 + (2147483647 & m), s && I && (k += I, I = 0), C.forEach((([e, t]) => {
156
+ l & e && t(c);
157
+ })));
158
+ }
159
+ };
160
+ }, M = setTimeout, R = (e, t) => t ? -e : e, J = (t, o, r, n, s, i) => {
161
+ const c = Date.now;
162
+ let l = 0, f = !1, a = !1, u = !1, $ = !1;
163
+ const d = (() => {
164
+ let o;
165
+ const r = () => {
166
+ o != e && clearTimeout(o);
167
+ }, n = () => {
168
+ r(), o = M((() => {
169
+ o = e, (() => {
170
+ if (f || a) return f = !1, void d();
171
+ u = !1, t.$update(2);
172
+ })();
173
+ }), 150);
174
+ };
175
+ return n.p = r, n;
176
+ })(), p = () => {
177
+ l = c(), u && ($ = !0), i && t.$update(6, i()), t.$update(1, n()), d();
178
+ }, h = e => {
179
+ if (f || !t.$isScrolling() || e.ctrlKey) return;
180
+ const o = c() - l;
181
+ 150 > o && 50 < o && (r ? e.deltaX : e.deltaY) && (f = !0);
182
+ }, g = () => {
183
+ a = !0, u = $ = !1;
184
+ }, m = () => {
185
+ a = !1, w() && (u = !0);
186
+ };
187
+ return o.addEventListener("scroll", p), o.addEventListener("wheel", h, {
188
+ passive: !0
189
+ }), o.addEventListener("touchstart", g, {
190
+ passive: !0
191
+ }), o.addEventListener("touchend", m, {
192
+ passive: !0
193
+ }), {
194
+ h: () => {
195
+ o.removeEventListener("scroll", p), o.removeEventListener("wheel", h), o.removeEventListener("touchstart", g),
196
+ o.removeEventListener("touchend", m), d.p();
197
+ },
198
+ m: () => {
199
+ const [e, o] = t.$();
200
+ e && (s(e, o, $), $ = !1, o && t.$getViewportSize() > t.$getTotalSize() && t.$update(1, n()));
201
+ }
202
+ };
203
+ }, C = (e, t, o) => {
204
+ let r;
205
+ return [ async (n, s) => {
206
+ if (!await t()) return;
207
+ r && r();
208
+ const i = () => {
209
+ const [t, o] = l();
210
+ return r = () => {
211
+ o(!1);
212
+ }, e.$getViewportSize() && M(r, 150), [ t, e.$subscribe(2, (() => {
213
+ o(!0);
214
+ })) ];
215
+ };
216
+ if (s && S()) e.$update(8, n()), c((async () => {
217
+ for (;;) {
218
+ let t = !0;
219
+ for (let [o, r] = e.$getRange(); o <= r; o++) if (e.$isUnmeasuredItem(o)) {
220
+ t = !1;
221
+ break;
222
+ }
223
+ if (t) break;
224
+ const [o, r] = i();
225
+ try {
226
+ if (!await o) return;
227
+ } finally {
228
+ r();
229
+ }
230
+ }
231
+ e.$update(7), o(n(), s);
232
+ })); else for (;;) {
233
+ const [t, r] = i();
234
+ try {
235
+ if (e.$update(7), o(n()), !await t) return;
236
+ } finally {
237
+ r();
238
+ }
239
+ }
240
+ }, () => {
241
+ r && r();
242
+ } ];
243
+ }, W = (e, t) => {
244
+ let o, r, n = l(), i = !1;
245
+ const c = t ? "scrollLeft" : "scrollTop", f = t ? "overflowX" : "overflowY", [a, u] = C(e, (() => n[0]), ((e, r) => {
246
+ e = R(e, i), r ? o.scrollTo({
247
+ [t ? "left" : "top"]: e,
248
+ behavior: "smooth"
249
+ }) : o[c] = e;
250
+ }));
251
+ return {
252
+ $observe(s, l) {
253
+ o = l, t && (i = "rtl" === getComputedStyle(l).direction), r = J(e, l, t, (() => R(l[c], i)), ((t, o, r) => {
254
+ if (r) {
255
+ const e = l.style, t = e[f];
256
+ e[f] = "hidden", M((() => {
257
+ e[f] = t;
258
+ }));
259
+ }
260
+ l[c] = R(e.$getScrollOffset() + t, i), o && u();
261
+ })), n[1](!0);
262
+ },
263
+ $dispose() {
264
+ r && r.h(), n[1](!1), n = l();
265
+ },
266
+ $isNegative: () => i,
267
+ $scrollTo(e) {
268
+ a((() => e));
269
+ },
270
+ $scrollBy(t) {
271
+ t += e.$getScrollOffset(), a((() => t));
272
+ },
273
+ $scrollToIndex(t, {align: o, smooth: r, offset: n = 0} = {}) {
274
+ if (t = s(t, 0, e.$getItemsLength() - 1), "nearest" === o) {
275
+ const r = e.$getItemOffset(t), n = e.$getScrollOffset();
276
+ if (r < n) o = "start"; else {
277
+ if (!(r + e.$getItemSize(t) > n + e.$getViewportSize())) return;
278
+ o = "end";
279
+ }
280
+ }
281
+ a((() => n + e.$getStartSpacerSize() + e.$getItemOffset(t) + ("end" === o ? e.$getItemSize(t) - e.$getViewportSize() : "center" === o ? (e.$getItemSize(t) - e.$getViewportSize()) / 2 : 0)), r);
282
+ },
283
+ $fixScrollJump: () => {
284
+ r && r.m();
285
+ }
286
+ };
287
+ }, B = (e, t) => {
288
+ let o, r, n = l(), i = !1;
289
+ const c = t ? "left" : "top", [f] = C(e, (() => n[0]), ((e, t) => {
290
+ e = R(e, i);
291
+ const r = b(v(o));
292
+ t ? r.scroll({
293
+ [c]: e,
294
+ behavior: "smooth"
295
+ }) : r.scroll({
296
+ [c]: e
297
+ });
298
+ })), a = (e, t, o, r, n = 0) => {
299
+ const s = r ? "offsetLeft" : "offsetTop", c = n + (r && i ? o.innerWidth - e[s] - e.offsetWidth : e[s]), l = e.offsetParent;
300
+ return e !== t && l ? a(l, t, o, r, c) : c;
301
+ };
302
+ return {
303
+ $observe(s) {
304
+ o = s;
305
+ const l = t ? "scrollX" : "scrollY", f = v(s), u = b(f);
306
+ t && (i = "rtl" === getComputedStyle(m(f)).direction), r = J(e, u, t, (() => R(u[l], i)), ((t, o) => {
307
+ o ? u.scroll({
308
+ [c]: R(e.$getScrollOffset() + t, i)
309
+ }) : u.scrollBy({
310
+ [c]: R(t, i)
311
+ });
312
+ }), (() => a(s, f.body, u, t))), n[1](!0);
313
+ },
314
+ $dispose() {
315
+ r && r.h(), o = void 0, n[1](!1), n = l();
316
+ },
317
+ $isNegative: () => i,
318
+ $fixScrollJump: () => {
319
+ r && r.m();
320
+ },
321
+ $scrollToIndex(r, {align: n, smooth: i, offset: c = 0} = {}) {
322
+ if (!o) return;
323
+ if (r = s(r, 0, e.$getItemsLength() - 1), "nearest" === n) {
324
+ const t = e.$getItemOffset(r), o = e.$getScrollOffset();
325
+ if (t < o) n = "start"; else {
326
+ if (!(t + e.$getItemSize(r) > o + e.$getViewportSize())) return;
327
+ n = "end";
328
+ }
329
+ }
330
+ const l = v(o), u = b(l), $ = m(l), d = () => e.$getViewportSize() - (t ? $.clientWidth : $.clientHeight);
331
+ f((() => c + a(o, l.body, u, t) + e.$getItemOffset(r) + ("end" === n ? e.$getItemSize(r) - (e.$getViewportSize() - d()) : "center" === n ? (e.$getItemSize(r) - (e.$getViewportSize() - d())) / 2 : 0)), i);
332
+ }
333
+ };
334
+ }, L = (e, t) => {
335
+ const o = W(e, !1), r = W(t, !0);
336
+ return {
337
+ $observe(e, t) {
338
+ o.$observe(e, t), r.$observe(e, t);
339
+ },
340
+ $dispose() {
341
+ o.$dispose(), r.$dispose();
342
+ },
343
+ $isNegative: r.$isNegative,
344
+ $scrollTo(e, t) {
345
+ null != e && o.$scrollTo(e), null != t && r.$scrollTo(t);
346
+ },
347
+ $scrollBy(e, t) {
348
+ null != e && o.$scrollBy(e), null != t && r.$scrollBy(t);
349
+ },
350
+ $scrollToIndex(e, t) {
351
+ null != e && o.$scrollToIndex(e), null != t && r.$scrollToIndex(t);
352
+ },
353
+ $fixScrollJump() {
354
+ o.$fixScrollJump(), r.$fixScrollJump();
355
+ }
356
+ };
357
+ }, N = e => {
358
+ let t;
359
+ return {
360
+ v(o) {
361
+ (t || (t = new (b(v(o)).ResizeObserver)(e))).observe(o);
362
+ },
363
+ S(e) {
364
+ t.unobserve(e);
365
+ },
366
+ h() {
367
+ t && t.disconnect();
368
+ }
369
+ };
370
+ }, O = (t, o) => {
371
+ let r;
372
+ const n = o ? "width" : "height", s = new WeakMap, i = N((o => {
373
+ const i = [];
374
+ for (const {target: c, contentRect: l} of o) if (c.offsetParent) if (c === r) t.$update(4, l[n]); else {
375
+ const t = s.get(c);
376
+ t != e && i.push([ t, l[n] ]);
377
+ }
378
+ i.length && t.$update(3, i);
379
+ }));
380
+ return {
381
+ $observeRoot(e) {
382
+ i.v(r = e);
383
+ },
384
+ $observeItem: (e, t) => (s.set(e, t), i.v(e), () => {
385
+ s.delete(e), i.S(e);
386
+ }),
387
+ $dispose: i.h
388
+ };
389
+ }, P = (t, o) => {
390
+ const r = o ? "width" : "height", n = o ? "innerWidth" : "innerHeight", s = new WeakMap, i = N((o => {
391
+ const n = [];
392
+ for (const {target: t, contentRect: i} of o) {
393
+ if (!t.offsetParent) continue;
394
+ const o = s.get(t);
395
+ o != e && n.push([ o, i[r] ]);
396
+ }
397
+ n.length && t.$update(3, n);
398
+ }));
399
+ let l;
400
+ return {
401
+ $observeRoot(e) {
402
+ const o = b(v(e)), r = () => {
403
+ t.$update(4, o[n]);
404
+ };
405
+ o.addEventListener("resize", r), c(r), l = () => {
406
+ o.removeEventListener("resize", r);
407
+ };
408
+ },
409
+ $observeItem: (e, t) => (s.set(e, t), i.v(e), () => {
410
+ s.delete(e), i.S(e);
411
+ }),
412
+ $dispose() {
413
+ l && l(), i.h();
414
+ }
415
+ };
416
+ }, q = (e, t) => {
417
+ let r;
418
+ const n = new WeakMap, s = new Set, i = new Set, c = new Map, l = (e, t) => `${e}-${t}`, f = N((f => {
419
+ const a = new Set, u = new Set;
420
+ for (const {target: o, contentRect: {width: s, height: i}} of f) if (o.offsetParent) if (o === r) e.$update(4, i),
421
+ t.$update(4, s); else {
422
+ const e = n.get(o);
423
+ if (e) {
424
+ const [t, o] = e, r = l(t, o), n = c.get(r);
425
+ let f, $;
426
+ n ? (n[0] !== i && (f = !0), n[1] !== s && ($ = !0)) : f = $ = !0, f && a.add(t),
427
+ $ && u.add(o), (f || $) && c.set(r, [ i, s ]);
428
+ }
429
+ }
430
+ if (a.size) {
431
+ const t = [];
432
+ a.forEach((e => {
433
+ let r = 0;
434
+ i.forEach((t => {
435
+ const n = c.get(l(e, t));
436
+ n && (r = o(r, n[0]));
437
+ })), r && t.push([ e, r ]);
438
+ })), e.$update(3, t);
439
+ }
440
+ if (u.size) {
441
+ const e = [];
442
+ u.forEach((t => {
443
+ let r = 0;
444
+ s.forEach((e => {
445
+ const n = c.get(l(e, t));
446
+ n && (r = o(r, n[1]));
447
+ })), r && e.push([ t, r ]);
448
+ })), t.$update(3, e);
449
+ }
450
+ }));
451
+ return {
452
+ $observeRoot(e) {
453
+ f.v(r = e);
454
+ },
455
+ $observeItem: (e, t, o) => (n.set(e, [ t, o ]), s.add(t), i.add(o), f.v(e), () => {
456
+ n.delete(e), f.S(e);
457
+ }),
458
+ $resizeCols(o) {
459
+ for (const [t] of o) for (let o = 0; o < e.$getItemsLength(); o++) c.delete(l(o, t));
460
+ t.$update(3, o);
461
+ },
462
+ $resizeRows(o) {
463
+ for (const [e] of o) for (let o = 0; o < t.$getItemsLength(); o++) c.delete(l(e, o));
464
+ e.$update(3, o);
465
+ },
466
+ $dispose: f.h
467
+ };
468
+ };
469
+
470
+ export { k as ACTION_ITEMS_LENGTH_CHANGE, I as ACTION_START_OFFSET_CHANGE, _ as UPDATE_SCROLL_END_EVENT, x as UPDATE_SCROLL_EVENT, y as UPDATE_VIRTUAL_STATE, q as createGridResizer, L as createGridScroller, O as createResizer, W as createScroller, T as createVirtualStore, P as createWindowResizer, B as createWindowScroller, z as getScrollSize, g as isBrowser, c as microtask, i as sort };
2
471
  //# sourceMappingURL=index.js.map