virtua 0.37.4 → 0.38.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.
@@ -1,32 +1,17 @@
1
1
  <script lang="ts" generics="T">
2
2
  import { onMount, onDestroy } from "svelte";
3
3
  import {
4
+ ACTION_ITEMS_LENGTH_CHANGE,
5
+ ACTION_START_OFFSET_CHANGE,
4
6
  type StateVersion,
5
- CHANGE_ITEM_LENGTH,
6
- createVirtualizer,
7
- FIX_SCROLL_JUMP,
8
- GET_ITEM_OFFSET,
9
- GET_JUMP_COUNT,
10
- GET_RANGE,
11
- GET_IS_SCROLLING,
12
- GET_SCROLL_OFFSET,
13
- GET_SCROLL_SIZE,
14
- GET_TOTAL_SIZE,
15
- GET_VIEWPORT_SIZE,
16
- IS_ITEM_HIDDEN,
17
- OBSERVE_ITEM_RESIZE,
18
- ON_MOUNT,
19
- ON_UN_MOUNT,
20
- SCROLL_BY,
21
- SCROLL_TO,
22
- SCROLL_TO_INDEX,
23
- CHANGE_START_MARGIN,
24
- GET_START_SPACER_SIZE,
25
- GET_ITEMS_LENGTH,
26
- GET_ITEM_SIZE,
27
- FIND_START_INDEX,
28
- FIND_END_INDEX,
29
- } from "./core";
7
+ UPDATE_SCROLL_END_EVENT,
8
+ UPDATE_SCROLL_EVENT,
9
+ UPDATE_VIRTUAL_STATE,
10
+ createResizer,
11
+ createScroller,
12
+ createVirtualStore,
13
+ getScrollSize as _getScrollSize,
14
+ } from "../core";
30
15
  import { defaultGetKey, styleToString, iterRange } from "./utils";
31
16
  import ListItem from "./ListItem.svelte";
32
17
  import type { VirtualizerHandle, VirtualizerProps } from "./Virtualizer.type";
@@ -49,17 +34,24 @@
49
34
  onscrollend,
50
35
  }: Props = $props();
51
36
 
52
- const virtualizer = createVirtualizer(
37
+ const store = createVirtualStore(
53
38
  data.length,
54
39
  itemSize,
55
40
  overscan,
56
- horizontal,
57
- (v) => {
58
- rerender = v;
59
- },
60
- (offset) => {
61
- onscroll && onscroll(offset);
62
- },
41
+ undefined,
42
+ undefined,
43
+ !itemSize
44
+ );
45
+ const resizer = createResizer(store, horizontal);
46
+ const scroller = createScroller(store, horizontal);
47
+ const unsubscribeStore = store.$subscribe(UPDATE_VIRTUAL_STATE, () => {
48
+ rerender = store.$getStateVersion();
49
+ });
50
+ const unsubscribeOnScroll = store.$subscribe(UPDATE_SCROLL_EVENT, () => {
51
+ onscroll && onscroll(store.$getScrollOffset());
52
+ });
53
+ const unsubscribeOnScrollEnd = store.$subscribe(
54
+ UPDATE_SCROLL_END_EVENT,
63
55
  () => {
64
56
  onscrollend && onscrollend();
65
57
  }
@@ -69,31 +61,39 @@
69
61
 
70
62
  let rerender: StateVersion = $state([]);
71
63
 
72
- let range = $derived(rerender && virtualizer[GET_RANGE]());
73
- let isScrolling = $derived(rerender && virtualizer[GET_IS_SCROLLING]());
74
- let totalSize = $derived(rerender && virtualizer[GET_TOTAL_SIZE]());
75
- let jumpCount = $derived(rerender && virtualizer[GET_JUMP_COUNT]());
64
+ let range = $derived(rerender && store.$getRange());
65
+ let isScrolling = $derived(rerender && store.$isScrolling());
66
+ let totalSize = $derived(rerender && store.$getTotalSize());
67
+ let jumpCount = $derived(rerender && store.$getJumpCount());
76
68
 
77
69
  onMount(() => {
70
+ const assignRef = (scrollable: HTMLElement) => {
71
+ resizer.$observeRoot(scrollable);
72
+ scroller.$observe(scrollable);
73
+ };
78
74
  if (scrollRef) {
79
- virtualizer[ON_MOUNT](scrollRef);
75
+ assignRef(scrollRef);
80
76
  } else {
81
- virtualizer[ON_MOUNT](containerRef!.parentElement!);
77
+ assignRef(containerRef!.parentElement!);
82
78
  }
83
79
  });
84
80
  onDestroy(() => {
85
- virtualizer[ON_UN_MOUNT]();
81
+ unsubscribeStore();
82
+ unsubscribeOnScroll();
83
+ unsubscribeOnScrollEnd();
84
+ resizer.$dispose();
85
+ scroller.$dispose();
86
86
  });
87
87
 
88
88
  $effect.pre(() => {
89
- if (data.length !== virtualizer[GET_ITEMS_LENGTH]()) {
90
- virtualizer[CHANGE_ITEM_LENGTH](data.length, shift);
89
+ if (data.length !== store.$getItemsLength()) {
90
+ store.$update(ACTION_ITEMS_LENGTH_CHANGE, [data.length, shift]);
91
91
  }
92
92
  });
93
93
 
94
94
  $effect.pre(() => {
95
- if (startMargin !== virtualizer[GET_START_SPACER_SIZE]()) {
96
- virtualizer[CHANGE_START_MARGIN](startMargin);
95
+ if (startMargin !== store.$getStartSpacerSize()) {
96
+ store.$update(ACTION_START_OFFSET_CHANGE, startMargin);
97
97
  }
98
98
  });
99
99
 
@@ -101,39 +101,31 @@
101
101
  $effect(() => {
102
102
  if (prevJumpCount === jumpCount) return;
103
103
  prevJumpCount = jumpCount;
104
- virtualizer[FIX_SCROLL_JUMP]();
104
+ scroller.$fixScrollJump();
105
105
  });
106
106
 
107
- export const getScrollOffset = virtualizer[
108
- GET_SCROLL_OFFSET
109
- ] satisfies VirtualizerHandle["getScrollOffset"] as VirtualizerHandle["getScrollOffset"];
110
- export const getScrollSize = virtualizer[
111
- GET_SCROLL_SIZE
112
- ] satisfies VirtualizerHandle["getScrollSize"] as VirtualizerHandle["getScrollSize"];
113
- export const getViewportSize = virtualizer[
114
- GET_VIEWPORT_SIZE
115
- ] satisfies VirtualizerHandle["getViewportSize"] as VirtualizerHandle["getViewportSize"];
116
- export const findStartIndex = virtualizer[
117
- FIND_START_INDEX
118
- ] satisfies VirtualizerHandle["findStartIndex"] as VirtualizerHandle["findStartIndex"];
119
- export const findEndIndex = virtualizer[
120
- FIND_END_INDEX
121
- ] satisfies VirtualizerHandle["findEndIndex"] as VirtualizerHandle["findEndIndex"];
122
- export const getItemOffset = virtualizer[
123
- GET_ITEM_OFFSET
124
- ] satisfies VirtualizerHandle["getItemOffset"] as VirtualizerHandle["getItemOffset"];
125
- export const getItemSize = virtualizer[
126
- GET_ITEM_SIZE
127
- ] satisfies VirtualizerHandle["getItemSize"] as VirtualizerHandle["getItemSize"];
128
- export const scrollToIndex = virtualizer[
129
- SCROLL_TO_INDEX
130
- ] satisfies VirtualizerHandle["scrollToIndex"] as VirtualizerHandle["scrollToIndex"];
131
- export const scrollTo = virtualizer[
132
- SCROLL_TO
133
- ] satisfies VirtualizerHandle["scrollTo"] as VirtualizerHandle["scrollTo"];
134
- export const scrollBy = virtualizer[
135
- SCROLL_BY
136
- ] satisfies VirtualizerHandle["scrollBy"] as VirtualizerHandle["scrollBy"];
107
+ export const getScrollOffset =
108
+ store.$getScrollOffset satisfies VirtualizerHandle["getScrollOffset"] as VirtualizerHandle["getScrollOffset"];
109
+ export const getScrollSize = (() =>
110
+ _getScrollSize(
111
+ store
112
+ )) satisfies VirtualizerHandle["getScrollSize"] as VirtualizerHandle["getScrollSize"];
113
+ export const getViewportSize =
114
+ store.$getViewportSize satisfies VirtualizerHandle["getViewportSize"] as VirtualizerHandle["getViewportSize"];
115
+ export const findStartIndex =
116
+ store.$findStartIndex satisfies VirtualizerHandle["findStartIndex"] as VirtualizerHandle["findStartIndex"];
117
+ export const findEndIndex =
118
+ store.$findEndIndex satisfies VirtualizerHandle["findEndIndex"] as VirtualizerHandle["findEndIndex"];
119
+ export const getItemOffset =
120
+ store.$getItemOffset satisfies VirtualizerHandle["getItemOffset"] as VirtualizerHandle["getItemOffset"];
121
+ export const getItemSize =
122
+ store.$getItemSize satisfies VirtualizerHandle["getItemSize"] as VirtualizerHandle["getItemSize"];
123
+ export const scrollToIndex =
124
+ scroller.$scrollToIndex satisfies VirtualizerHandle["scrollToIndex"] as VirtualizerHandle["scrollToIndex"];
125
+ export const scrollTo =
126
+ scroller.$scrollTo satisfies VirtualizerHandle["scrollTo"] as VirtualizerHandle["scrollTo"];
127
+ export const scrollBy =
128
+ scroller.$scrollBy satisfies VirtualizerHandle["scrollBy"] as VirtualizerHandle["scrollBy"];
137
129
 
138
130
  let containerStyle = $derived(
139
131
  styleToString({
@@ -161,10 +153,10 @@
161
153
  {item}
162
154
  {index}
163
155
  as={itemAs}
164
- offset={rerender && virtualizer[GET_ITEM_OFFSET](index)}
165
- hide={rerender && virtualizer[IS_ITEM_HIDDEN](index)}
156
+ offset={rerender && store.$getItemOffset(index)}
157
+ hide={rerender && store.$isUnmeasuredItem(index)}
166
158
  {horizontal}
167
- resizer={virtualizer[OBSERVE_ITEM_RESIZE]}
159
+ resizer={resizer.$observeItem}
168
160
  />
169
161
  {/each}
170
162
  </svelte:element>
@@ -1,6 +1,8 @@
1
1
  import type { VirtualizerProps } from "./Virtualizer.type";
2
+ interface Props extends VirtualizerProps<T> {
3
+ }
2
4
  declare class __sveltets_Render<T> {
3
- props(): VirtualizerProps<T>;
5
+ props(): Props;
4
6
  events(): {};
5
7
  slots(): {};
6
8
  bindings(): "";
@@ -12,7 +14,7 @@ declare class __sveltets_Render<T> {
12
14
  findEndIndex: () => number;
13
15
  getItemOffset: (index: number) => number;
14
16
  getItemSize: (index: number) => number;
15
- scrollToIndex: (index: number, opts?: import("../core/types").ScrollToIndexOpts) => void;
17
+ scrollToIndex: (index: number, opts?: import("../core").ScrollToIndexOpts) => void;
16
18
  scrollTo: (offset: number) => void;
17
19
  scrollBy: (offset: number) => void;
18
20
  };
@@ -1,7 +1,7 @@
1
1
  // @ts-nocheck
2
2
  import { type Snippet } from "svelte";
3
3
  import type { SvelteHTMLElements } from "svelte/elements";
4
- import { type ScrollToIndexOpts } from "../core/types";
4
+ import { type ScrollToIndexOpts } from "../core";
5
5
  /**
6
6
  * Props of {@link Virtualizer}.
7
7
  */
@@ -1,24 +1,16 @@
1
1
  <script lang="ts" generics="T">
2
2
  import { onMount, onDestroy } from "svelte";
3
3
  import {
4
+ ACTION_ITEMS_LENGTH_CHANGE,
4
5
  type StateVersion,
5
- CHANGE_ITEM_LENGTH,
6
- createWindowVirtualizer,
7
- FIX_SCROLL_JUMP,
8
- GET_ITEM_OFFSET,
9
- GET_JUMP_COUNT,
10
- GET_RANGE,
11
- GET_IS_SCROLLING,
12
- GET_TOTAL_SIZE,
13
- IS_ITEM_HIDDEN,
14
- OBSERVE_ITEM_RESIZE,
15
- ON_MOUNT,
16
- ON_UN_MOUNT,
17
- GET_ITEMS_LENGTH,
18
- FIND_START_INDEX,
19
- FIND_END_INDEX,
20
- SCROLL_TO_INDEX,
21
- } from "./core";
6
+ UPDATE_SCROLL_END_EVENT,
7
+ UPDATE_SCROLL_EVENT,
8
+ UPDATE_VIRTUAL_STATE,
9
+ createVirtualStore,
10
+ getScrollSize as _getScrollSize,
11
+ createWindowResizer,
12
+ createWindowScroller,
13
+ } from "../core";
22
14
  import { defaultGetKey, iterRange, styleToString } from "./utils";
23
15
  import ListItem from "./ListItem.svelte";
24
16
  import type {
@@ -40,17 +32,25 @@
40
32
  onscrollend,
41
33
  }: Props = $props();
42
34
 
43
- const virtualizer = createWindowVirtualizer(
35
+ const store = createVirtualStore(
44
36
  data.length,
45
37
  itemSize,
46
38
  overscan,
47
- horizontal,
48
- (v) => {
49
- rerender = v;
50
- },
51
- (offset) => {
52
- onscroll && onscroll(offset);
53
- },
39
+ undefined,
40
+ undefined,
41
+ !itemSize
42
+ );
43
+ const resizer = createWindowResizer(store, horizontal);
44
+ const scroller = createWindowScroller(store, horizontal);
45
+ const unsubscribeStore = store.$subscribe(UPDATE_VIRTUAL_STATE, () => {
46
+ rerender = store.$getStateVersion();
47
+ });
48
+
49
+ const unsubscribeOnScroll = store.$subscribe(UPDATE_SCROLL_EVENT, () => {
50
+ onscroll && onscroll(store.$getScrollOffset());
51
+ });
52
+ const unsubscribeOnScrollEnd = store.$subscribe(
53
+ UPDATE_SCROLL_END_EVENT,
54
54
  () => {
55
55
  onscrollend && onscrollend();
56
56
  }
@@ -60,21 +60,26 @@
60
60
 
61
61
  let rerender: StateVersion = $state([]);
62
62
 
63
- let range = $derived(rerender && virtualizer[GET_RANGE]());
64
- let isScrolling = $derived(rerender && virtualizer[GET_IS_SCROLLING]());
65
- let totalSize = $derived(rerender && virtualizer[GET_TOTAL_SIZE]());
66
- let jumpCount = $derived(rerender && virtualizer[GET_JUMP_COUNT]());
63
+ let range = $derived(rerender && store.$getRange());
64
+ let isScrolling = $derived(rerender && store.$isScrolling());
65
+ let totalSize = $derived(rerender && store.$getTotalSize());
66
+ let jumpCount = $derived(rerender && store.$getJumpCount());
67
67
 
68
68
  onMount(() => {
69
- virtualizer[ON_MOUNT](containerRef!);
69
+ resizer.$observeRoot(containerRef!);
70
+ scroller.$observe(containerRef!);
70
71
  });
71
72
  onDestroy(() => {
72
- virtualizer[ON_UN_MOUNT]();
73
+ unsubscribeStore();
74
+ unsubscribeOnScroll();
75
+ unsubscribeOnScrollEnd();
76
+ resizer.$dispose();
77
+ scroller.$dispose();
73
78
  });
74
79
 
75
80
  $effect.pre(() => {
76
- if (data.length !== virtualizer[GET_ITEMS_LENGTH]()) {
77
- virtualizer[CHANGE_ITEM_LENGTH](data.length, shift);
81
+ if (data.length !== store.$getItemsLength()) {
82
+ store.$update(ACTION_ITEMS_LENGTH_CHANGE, [data.length, shift]);
78
83
  }
79
84
  });
80
85
 
@@ -82,18 +87,15 @@
82
87
  $effect(() => {
83
88
  if (prevJumpCount === jumpCount) return;
84
89
  prevJumpCount = jumpCount;
85
- virtualizer[FIX_SCROLL_JUMP]();
90
+ scroller.$fixScrollJump();
86
91
  });
87
92
 
88
- export const findStartIndex = virtualizer[
89
- FIND_START_INDEX
90
- ] satisfies WindowVirtualizerHandle["findStartIndex"] as WindowVirtualizerHandle["findStartIndex"];
91
- export const findEndIndex = virtualizer[
92
- FIND_END_INDEX
93
- ] satisfies WindowVirtualizerHandle["findEndIndex"] as WindowVirtualizerHandle["findEndIndex"];
94
- export const scrollToIndex = virtualizer[
95
- SCROLL_TO_INDEX
96
- ] satisfies WindowVirtualizerHandle["scrollToIndex"] as WindowVirtualizerHandle["scrollToIndex"];
93
+ export const findStartIndex =
94
+ store.$findStartIndex satisfies WindowVirtualizerHandle["findStartIndex"] as WindowVirtualizerHandle["findStartIndex"];
95
+ export const findEndIndex =
96
+ store.$findEndIndex satisfies WindowVirtualizerHandle["findEndIndex"] as WindowVirtualizerHandle["findEndIndex"];
97
+ export const scrollToIndex =
98
+ scroller.$scrollToIndex satisfies WindowVirtualizerHandle["scrollToIndex"] as WindowVirtualizerHandle["scrollToIndex"];
97
99
 
98
100
  let containerStyle = $derived(
99
101
  styleToString({
@@ -121,10 +123,10 @@
121
123
  {item}
122
124
  {index}
123
125
  as={"div"}
124
- offset={rerender && virtualizer[GET_ITEM_OFFSET](index)}
125
- hide={rerender && virtualizer[IS_ITEM_HIDDEN](index)}
126
+ offset={rerender && store.$getItemOffset(index)}
127
+ hide={rerender && store.$isUnmeasuredItem(index)}
126
128
  {horizontal}
127
- resizer={virtualizer[OBSERVE_ITEM_RESIZE]}
129
+ resizer={resizer.$observeItem}
128
130
  />
129
131
  {/each}
130
132
  </div>
@@ -1,13 +1,15 @@
1
1
  import type { WindowVirtualizerProps } from "./WindowVirtualizer.type";
2
+ interface Props extends WindowVirtualizerProps<T> {
3
+ }
2
4
  declare class __sveltets_Render<T> {
3
- props(): WindowVirtualizerProps<T>;
5
+ props(): Props;
4
6
  events(): {};
5
7
  slots(): {};
6
8
  bindings(): "";
7
9
  exports(): {
8
10
  findStartIndex: () => number;
9
11
  findEndIndex: () => number;
10
- scrollToIndex: (index: number, opts?: import("../core/types").ScrollToIndexOpts) => void;
12
+ scrollToIndex: (index: number, opts?: import("../core").ScrollToIndexOpts) => void;
11
13
  };
12
14
  }
13
15
  interface $$IsomorphicComponent {
@@ -1,6 +1,6 @@
1
1
  // @ts-nocheck
2
2
  import { type Snippet } from "svelte";
3
- import { type ScrollToIndexOpts } from "../core/types";
3
+ import { type ScrollToIndexOpts } from "../core";
4
4
  /**
5
5
  * Props of {@link WindowVirtualizer}.
6
6
  */
@@ -0,0 +1 @@
1
+ export {};
@@ -1,5 +1,5 @@
1
1
  // @ts-nocheck
2
- import type { ItemsRange } from "../core/types";
2
+ import type { ItemsRange } from "../core";
3
3
  export declare const styleToString: (obj: Record<string, string | undefined>) => string;
4
4
  export declare const defaultGetKey: (_data: unknown, i: number) => string;
5
5
  export declare function iterRange([start, end]: ItemsRange): Generator<number, void, unknown>;
@@ -1,6 +1,6 @@
1
1
  /** @jsxImportSource vue */
2
2
  import { VNode, ComponentOptionsMixin, SlotsType, PropType, NativeElements } from "vue";
3
- import { ScrollToIndexOpts } from "../core/types";
3
+ import { ScrollToIndexOpts } from "../core";
4
4
  export interface VirtualizerHandle {
5
5
  /**
6
6
  * Get current scrollTop, or scrollLeft if horizontal: true.
@@ -1,6 +1,6 @@
1
1
  /** @jsxImportSource vue */
2
2
  import { VNode, ComponentOptionsMixin, SlotsType, PropType, NativeElements } from "vue";
3
- import { ScrollToIndexOpts } from "../core/types";
3
+ import { ScrollToIndexOpts } from "../core";
4
4
  export interface WindowVirtualizerHandle {
5
5
  /**
6
6
  * Find the start index of visible range of items.
package/lib/vue/index.js CHANGED
@@ -1,2 +1,2 @@
1
- var e=require("vue");const t=null,{min:r,max:o,abs:n,floor:s}=Math,i=setTimeout,l=(e,t,n)=>r(n,o(t,e)),c="function"==typeof queueMicrotask?queueMicrotask:e=>{Promise.resolve().then(e)},a=e=>{let t,r;return()=>(t||(t=!0,r=e()),r)},u=-1,f=(e,t,r)=>{const o=r?"unshift":"push";for(let r=0;r<t;r++)e[o](u);return e},d=(e,t)=>{const r=e.t[t];return r===u?e.o:r},_=(e,t,o)=>{const n=e.t[t]===u;return e.t[t]=o,e.i=r(t,e.i),n},p=(e,t)=>{if(!e.l)return 0;if(e.i>=t)return e.u[t];e.i<0&&(e.u[0]=0,e.i=0);let r=e.i,o=e.u[r];for(;r<t;)o+=d(e,r),e.u[++r]=o;return e.i=t,o},h=(e,t,r=0,o=e.l-1)=>{for(;r<=o;){const n=s((r+o)/2),i=p(e,n);if(i<=t){if(i+d(e,n)>t)return n;r=n+1}else o=n-1}return l(r,0,e.l-1)},m=(e,t,o)=>{const n=t-e.l;return e.i=o?-1:r(t-1,e.i),e.l=t,n>0?(f(e.u,n),f(e.t,n,o),e.o*n):(e.u.splice(n),(o?e.t.splice(0,-n):e.t.splice(n)).reduce(((t,r)=>t-(r===u?e.o:r)),0))},v="undefined"!=typeof window,b=()=>document.documentElement,y=e=>e.ownerDocument,S=e=>e.defaultView,g=/*#__PURE__*/a((()=>!!v&&"rtl"===getComputedStyle(b()).direction)),x=/*#__PURE__*/a((()=>/iP(hone|od|ad)/.test(navigator.userAgent))),z=/*#__PURE__*/a((()=>"scrollBehavior"in b().style)),w=e=>!!e.p(),I=(e,s=40,i=4,l=0,c,a=!1)=>{let v=!!l,b=[],y=0,S=0,g=0,z=0,w=0,I=0,O=0,j=0,k=0,E=v?[0,o(l-1,0)]:t,T=[0,0],q=0;const B=((e,t)=>({o:t,t:f([],e),l:e,i:-1,u:f([],e)}))(e,s),R=new Set,N=()=>g-S,C=()=>N()+I+w,H=e=>((e,t,o,n)=>{if(n=r(n,e.l-1),p(e,n)<=t){const r=h(e,t+o,n);return[h(e,t,n,r),r]}{const r=h(e,t,void 0,n);return[r,h(e,t+o,r)]}})(B,e,y,T[0]),M=()=>(e=>e.l?p(e,e.l-1)+d(e,e.l-1):0)(B),A=e=>p(B,e)-I,J=e=>d(B,e),P=e=>{e&&(x()&&0!==j?I+=e:(w+=e,z++))};return{h:()=>b,m:()=>(e=>[e.t.slice(),e.o])(B),v:()=>{if(O)return T;let[e,t]=H(o(0,C()));return E&&(e=r(e,E[0]),t=o(t,E[1])),1!==j&&(e-=o(0,i)),2!==j&&(t+=o(0,i)),T=[o(e,0),r(t,B.l-1)]},S:()=>h(B,C()),I:()=>h(B,C()+y),O:e=>B.t[e]===u,j:()=>!!E&&B.t.slice(o(0,E[0]-1),r(B.l-1,E[1]+1)+1).includes(u),k:A,T:J,q:()=>B.l,B:()=>g,R:()=>0!==j,p:()=>y,N:()=>S,C:M,H:()=>z,M:()=>(O=w,w=0,[O,2===k||N()+y>=M()]),A:(e,t)=>{const r=[e,t];return R.add(r),()=>{R.delete(r)}},J:(e,r)=>{let s,i,l=0;switch(e){case 1:{const e=O;O=0;const o=r-g,s=n(o);e&&s<n(e)+1||0!==k||(j=o<0?2:1),v&&(E=t,v=!1),g=r,l=4;const c=N();c>=-y&&c<=M()&&(l+=1,i=s>y);break}case 2:l=8,0!==j&&(s=!0,l+=1),j=0,k=0,E=t;break;case 3:{const e=r.filter((([e,t])=>B.t[e]!==t));if(!e.length)break;P(e.reduce(((e,[t,r])=>((2===k||(E?t<E[0]:A(t)+(0===j&&0===k?J(t):0)<N()))&&(e+=r-J(t)),e)),0));for(const[t,r]of e){const e=J(t),o=_(B,t,r);a&&(q+=o?r:r-e)}a&&y&&q>y&&(P(((e,t)=>{let r=0;const n=e.t.filter(((e,o)=>{const n=e!==u;return n&&o<t&&r++,n})),s=e.o;return e.i=-1,((e.o=(e=>{const t=(e=>[...e].sort(((e,t)=>e-t)))(e),r=e.length/2|0;return t.length%2==0?(t[r-1]+t[r])/2:t[r]})(n))-s)*o(t-r,0)})(B,h(B,C()))),a=!1),l=3,i=!0;break}case 4:y!==r&&(y=r,l=3);break;case 5:r[1]?(P(m(B,r[0],!0)),k=2,l=1):m(B,r[0]);break;case 6:S=r;break;case 7:k=1;break;case 8:E=H(r),l=1}l&&(b=[],s&&I&&(w+=I,I=0,z++),R.forEach((([e,t])=>{l&e&&t(i)})))}}},O=e=>{let t;return{P(r){(t||(t=new(S(y(r)).ResizeObserver)(e))).observe(r)},L(e){t.unobserve(e)},W(){t&&t.disconnect()}}},j=(e,t)=>t&&g()?-e:e,k=(e,r,o,n,s,l)=>{const c=Date.now;let a=0,u=!1,f=!1,d=!1,_=!1;const p=(()=>{let r;const o=()=>{r!=t&&clearTimeout(r)},n=()=>{o(),r=i((()=>{r=t,(()=>{if(u||f)return u=!1,void p();d=!1,e.J(2)})()}),150)};return n.X=o,n})(),h=()=>{a=c(),d&&(_=!0),l&&e.J(6,l()),e.J(1,n()),p()},m=t=>{if(u||!e.R()||t.ctrlKey)return;const r=c()-a;150>r&&50<r&&(o?t.deltaX:t.deltaY)&&(u=!0)},v=()=>{f=!0,d=_=!1},b=()=>{f=!1,x()&&(d=!0)};return r.addEventListener("scroll",h),r.addEventListener("wheel",m,{passive:!0}),r.addEventListener("touchstart",v,{passive:!0}),r.addEventListener("touchend",b,{passive:!0}),{W:()=>{r.removeEventListener("scroll",h),r.removeEventListener("wheel",m),r.removeEventListener("touchstart",v),r.removeEventListener("touchend",b),p.X()},Y:()=>{const[t,r]=e.M();t&&(s(j(t,o),r,_),_=!1,r&&e.p()>e.C()&&e.J(1,n()))}}},E=/*#__PURE__*/e.defineComponent({props:{F:{type:Object,required:!0},U:{type:Object,required:!0},V:{type:Object,required:!0},D:{type:Function,required:!0},G:{type:Number,required:!0},K:{type:Boolean},Z:{type:Boolean},ee:{type:String,required:!0}},setup(t){const r=e.ref(),o=e.computed((()=>t.F.value&&t.U.k(t.G))),n=e.computed((()=>t.F.value&&t.U.O(t.G)));return e.watch((()=>r.value&&t.G),((e,o,n)=>{n(t.D(r.value,t.G))}),{flush:"post"}),()=>{const{V:s,K:i,Z:l,ee:c}=t,a=n.value,u={position:a&&l?void 0:"absolute",[i?"height":"width"]:"100%",[i?"top":"left"]:"0px",[i?g()?"right":"left":"top"]:o.value+"px",visibility:!a||l?"visible":"hidden"};return i&&(u.display="flex"),e.createVNode(c,{ref:r,style:u},"function"==typeof(f=s)||"[object Object]"===Object.prototype.toString.call(f)&&!e.isVNode(f)?s:{default:()=>[s],_:2},8,["style"]);var f}}}),T=(e,r)=>{const o=e.key;return o!=t?o:"_"+r},q=(e,t)=>e[0]===t[0]&&e[1]===t[1],B={data:{type:Array,required:!0},overscan:Number,itemSize:Number,shift:Boolean,horizontal:Boolean,startMargin:{type:Number,default:0},ssrCount:Number,scrollRef:Object,as:{type:String,default:"div"},item:{type:String,default:"div"}},R=/*#__PURE__*/e.defineComponent({props:B,emits:["scroll","scrollEnd"],setup(r,{emit:n,expose:s,slots:a}){let u=!!r.ssrCount;const f=r.horizontal,d=e.ref(),_=I(r.data.length,r.itemSize,r.overscan,r.ssrCount,0,!r.itemSize),p=((e,r)=>{let o;const n=r?"width":"height",s=new WeakMap,i=O((r=>{const i=[];for(const{target:l,contentRect:c}of r)if(l.offsetParent)if(l===o)e.J(4,c[n]);else{const e=s.get(l);e!=t&&i.push([e,c[n]])}i.length&&e.J(3,i)}));return{te(e){i.P(o=e)},re:(e,t)=>(s.set(e,t),i.P(e),()=>{s.delete(e),i.L(e)}),W:i.W}})(_,f),h=((e,t)=>{let r,o,n;const s=t?"scrollLeft":"scrollTop",a=t?"overflowX":"overflowY",u=async(o,l)=>{if(!r)return void c((()=>u(o,l)));n&&n();const a=()=>{let t;return[new Promise(((r,o)=>{t=r,n=o,w(e)&&i(o,150)})),e.A(2,(()=>{t&&t()}))]};if(l&&z()){for(;e.J(8,o()),e.j();){const[e,t]=a();try{await e}catch(e){return}finally{t()}}r.scrollTo({[t?"left":"top"]:j(o(),t),behavior:"smooth"})}else for(;;){const[n,i]=a();try{r[s]=j(o(),t),e.J(7),await n}catch(e){return}finally{i()}}};return{P(l){r=l,o=k(e,l,t,(()=>j(l[s],t)),((t,r,o)=>{if(o){const e=l.style,t=e[a];e[a]="hidden",i((()=>{e[a]=t}))}r?(l[s]=e.B()+t,n&&n()):l[s]+=t}))},W(){o&&o.W()},oe(e){u((()=>e))},ne(t){t+=e.B(),u((()=>t))},se(t,{align:r,smooth:o,offset:n=0}={}){if(t=l(t,0,e.q()-1),"nearest"===r){const o=e.k(t),n=e.B();if(o<n)r="start";else{if(!(o+e.T(t)>n+e.p()))return;r="end"}}u((()=>n+e.N()+e.k(t)+("end"===r?e.T(t)-e.p():"center"===r?(e.T(t)-e.p())/2:0)),o)},Y:()=>{o&&o.Y()}}})(_,f),m=e.ref(_.h()),v=_.A(1,(()=>{m.value=_.h()})),b=_.A(4,(()=>{n("scroll",_.B())})),y=_.A(8,(()=>{n("scrollEnd")})),S=e.computed((e=>{m.value;const t=_.v();return e&&q(e,t)?e:t})),g=e.computed((()=>m.value&&_.R())),x=e.computed((()=>m.value&&_.C())),B=e.computed((()=>m.value&&_.H()));return e.onMounted((()=>{u=!1,c((()=>{const e=e=>{p.te(e),h.P(e)};r.scrollRef?e(r.scrollRef):e(d.value.parentElement)}))})),e.onUnmounted((()=>{v(),b(),y(),p.W(),h.W()})),e.watch((()=>r.data.length),(e=>{_.J(5,[e,r.shift])})),e.watch((()=>r.startMargin),(e=>{_.J(6,e)}),{immediate:!0}),e.watch([B],(()=>{h.Y()}),{flush:"post"}),s({get scrollOffset(){return _.B()},get scrollSize(){return(e=>o(e.C(),e.p()))(_)},get viewportSize(){return _.p()},findStartIndex:_.S,findEndIndex:_.I,getItemOffset:_.k,getItemSize:_.T,scrollToIndex:h.se,scrollTo:h.oe,scrollBy:h.ne}),()=>{const t=r.as,o=r.item,[n,s]=S.value,i=x.value,l=[];for(let t=n,i=s;t<=i;t++){const n=a.default({item:r.data[t],index:t})[0];l.push(e.createVNode(E,{key:T(n,t),F:m,U:_,D:p.re,G:t,V:n,K:f,Z:u,ee:o},null,8,["_rerender","_store","_resizer","_index","_children","_isHorizontal","_isSSR","_as"]))}return e.createVNode(t,{ref:d,style:{overflowAnchor:"none",flex:"none",position:"relative",visibility:"hidden",width:f?i+"px":"100%",height:f?"100%":i+"px",pointerEvents:g.value?"none":void 0}},"function"==typeof(c=l)||"[object Object]"===Object.prototype.toString.call(c)&&!e.isVNode(c)?l:{default:()=>[l],_:2},8,["style"]);var c}}}),N={data:{type:Array,required:!0},overscan:Number,itemSize:Number,shift:Boolean,horizontal:Boolean,ssrCount:Number},C=/*#__PURE__*/e.defineComponent({props:N,emits:["scroll","scrollEnd"],setup(t,{emit:r,expose:o,slots:n}){const s=t.horizontal,i=e=>{r("scroll",e)},l=()=>{r("scrollEnd")},c=e.ref();return o({get scrollOffset(){return c.value.scrollOffset},get scrollSize(){return c.value.scrollSize},get viewportSize(){return c.value.viewportSize},findStartIndex:(...e)=>c.value.findStartIndex(...e),findEndIndex:(...e)=>c.value.findEndIndex(...e),getItemOffset:(...e)=>c.value.getItemOffset(...e),getItemSize:(...e)=>c.value.getItemSize(...e),scrollToIndex:(...e)=>c.value.scrollToIndex(...e),scrollTo:(...e)=>c.value.scrollTo(...e),scrollBy:(...e)=>c.value.scrollBy(...e)}),()=>{return e.createVNode("div",{style:{display:s?"inline-block":"block",[s?"overflowX":"overflowY"]:"auto",contain:"strict",width:"100%",height:"100%"}},[e.createVNode(R,{ref:c,data:t.data,overscan:t.overscan,itemSize:t.itemSize,shift:t.shift,ssrCount:t.ssrCount,horizontal:s,onScroll:i,onScrollEnd:l},(r=n,"function"==typeof r||"[object Object]"===Object.prototype.toString.call(r)&&!e.isVNode(r)?n:{default:()=>[n],_:2}),8,["data","overscan","itemSize","shift","ssrCount","horizontal","onScroll","onScrollEnd"])],4);var r}}}),H={data:{type:Array,required:!0},overscan:Number,itemSize:Number,shift:Boolean,horizontal:Boolean,as:{type:String,default:"div"},item:{type:String,default:"div"}},M=/*#__PURE__*/e.defineComponent({props:H,emits:["scroll","scrollEnd"],setup(r,{emit:o,slots:n,expose:s}){const a=r.horizontal,u=e.ref(),f=I(r.data.length,r.itemSize,r.overscan,void 0,0,!r.itemSize),d=((e,r)=>{const o=r?"width":"height",n=r?"innerWidth":"innerHeight",s=new WeakMap,i=O((r=>{const n=[];for(const{target:e,contentRect:i}of r){if(!e.offsetParent)continue;const r=s.get(e);r!=t&&n.push([r,i[o]])}n.length&&e.J(3,n)}));let l;return{te(t){const r=S(y(t)),o=()=>{e.J(4,r[n])};r.addEventListener("resize",o),o(),l=()=>{r.removeEventListener("resize",o)}},re:(e,t)=>(s.set(e,t),i.P(e),()=>{s.delete(e),i.L(e)}),W(){l&&l(),i.W()}}})(f,a),_=((e,t)=>{let r,o,n;const s=(e,t,r,o,n=0)=>{const i=o?"offsetLeft":"offsetTop",l=n+(o&&g()?r.innerWidth-e[i]-e.offsetWidth:e[i]),c=e.offsetParent;return e!==t&&c?s(c,t,r,o,l):l},a=async(o,s)=>{if(!r)return void c((()=>a(o,s)));n&&n();const l=()=>{let t;return[new Promise(((r,o)=>{t=r,n=o,w(e)&&i(o,150)})),e.A(2,(()=>{t&&t()}))]},u=S(y(r));if(s&&z()){for(;e.J(8,o()),e.j();){const[e,t]=l();try{await e}catch(e){return}finally{t()}}u.scroll({[t?"left":"top"]:j(o(),t),behavior:"smooth"})}else for(;;){const[r,n]=l();try{u.scroll({[t?"left":"top"]:j(o(),t)}),e.J(7),await r}catch(e){return}finally{n()}}};return{P(n){r=n;const i=t?"scrollX":"scrollY",l=y(n),c=S(l),a=l.body;o=k(e,c,t,(()=>j(c[i],t)),((r,o)=>{o?c.scroll({[t?"left":"top"]:e.B()+r}):c.scrollBy(t?r:0,t?0:r)}),(()=>s(n,a,c,t)))},W(){o&&o.W(),r=void 0},Y:()=>{o&&o.Y()},se(o,{align:n,smooth:i,offset:c=0}={}){if(!r)return;if(o=l(o,0,e.q()-1),"nearest"===n){const t=e.k(o),r=e.B();if(t<r)n="start";else{if(!(t+e.T(o)>r+e.p()))return;n="end"}}const u=y(r),f=S(u);a((()=>{const i=s(r,u.body,f,t),l=f.innerHeight-u.documentElement.clientHeight,a=f.innerHeight-u.documentElement.clientWidth,d="end"===n||"center"===n?t?a:l:0;return c+i+e.k(o)+("end"===n?e.T(o)-(e.p()-d):"center"===n?(e.T(o)-(e.p()-d))/2:0)}),i)}}})(f,a),p=e.ref(f.h()),h=f.A(1,(()=>{p.value=f.h()})),m=f.A(4,(()=>{o("scroll",f.B())})),v=f.A(8,(()=>{o("scrollEnd")})),b=e.computed((e=>{p.value;const t=f.v();return e&&q(e,t)?e:t})),x=e.computed((()=>p.value&&f.R())),B=e.computed((()=>p.value&&f.C())),R=e.computed((()=>p.value&&f.H()));return e.onMounted((()=>{const e=u.value;e&&(d.te(e),_.P(e))})),e.onUnmounted((()=>{h(),m(),v(),d.W(),_.W()})),e.watch((()=>r.data.length),(e=>{f.J(5,[e,r.shift])})),e.watch([R],(()=>{_.Y()}),{flush:"post"}),s({findStartIndex:f.S,findEndIndex:f.I,scrollToIndex:_.se}),()=>{const t=r.as,o=r.item,[s,i]=b.value,l=B.value,c=[];for(let t=s,l=i;t<=l;t++){const s=n.default({item:r.data[t],index:t})[0];c.push(e.createVNode(E,{key:T(s,t),F:p,U:f,D:d.re,G:t,V:s,K:a,ee:o},null,8,["_rerender","_store","_resizer","_index","_children","_isHorizontal","_as"]))}return e.createVNode(t,{ref:u,style:{overflowAnchor:"none",flex:"none",position:"relative",visibility:"hidden",width:a?l+"px":"100%",height:a?"100%":l+"px",pointerEvents:x.value?"none":void 0}},"function"==typeof(_=c)||"[object Object]"===Object.prototype.toString.call(_)&&!e.isVNode(_)?c:{default:()=>[c],_:2},8,["style"]);var _}}});exports.VList=C,exports.Virtualizer=R,exports.WindowVirtualizer=M;
1
+ var e=require("vue");const t=null,{min:r,max:o,abs:n,floor:s}=Math,i=setTimeout,l=(e,t,n)=>r(n,o(t,e)),c="function"==typeof queueMicrotask?queueMicrotask:e=>{Promise.resolve().then(e)},a=e=>{let t,r;return()=>(t||(t=!0,r=e()),r)},u=-1,f=(e,t,r)=>{const o=r?"unshift":"push";for(let r=0;r<t;r++)e[o](u);return e},d=(e,t)=>{const r=e.t[t];return r===u?e.o:r},p=(e,t,o)=>{const n=e.t[t]===u;return e.t[t]=o,e.i=r(t,e.i),n},h=(e,t)=>{if(!e.l)return 0;if(e.i>=t)return e.u[t];e.i<0&&(e.u[0]=0,e.i=0);let r=e.i,o=e.u[r];for(;r<t;)o+=d(e,r),e.u[++r]=o;return e.i=t,o},m=(e,t,r=0,o=e.l-1)=>{for(;r<=o;){const n=s((r+o)/2),i=h(e,n);if(i<=t){if(i+d(e,n)>t)return n;r=n+1}else o=n-1}return l(r,0,e.l-1)},_=(e,t,o)=>{const n=t-e.l;return e.i=o?-1:r(t-1,e.i),e.l=t,n>0?(f(e.u,n),f(e.t,n,o),e.o*n):(e.u.splice(n),(o?e.t.splice(0,-n):e.t.splice(n)).reduce(((t,r)=>t-(r===u?e.o:r)),0))},v="undefined"!=typeof window,b=()=>document.documentElement,y=e=>e.ownerDocument,S=e=>e.defaultView,g=/*#__PURE__*/a((()=>!!v&&"rtl"===getComputedStyle(b()).direction)),x=/*#__PURE__*/a((()=>/iP(hone|od|ad)/.test(navigator.userAgent))),z=/*#__PURE__*/a((()=>"scrollBehavior"in b().style)),$=e=>!!e.p(),w=(e,s=40,i=4,l=0,c,a=!1)=>{let v=!!l,b=[],y=0,S=0,g=0,z=0,$=0,w=0,I=0,O=0,j=0,k=v?[0,o(l-1,0)]:t,E=[0,0],T=0;const q=((e,t)=>({o:t,t:f([],e),l:e,i:-1,u:f([],e)}))(e,s),B=new Set,R=()=>g-S,N=()=>R()+w+$,C=e=>((e,t,o,n)=>{if(n=r(n,e.l-1),h(e,n)<=t){const r=m(e,t+o,n);return[m(e,t,n,r),r]}{const r=m(e,t,void 0,n);return[r,m(e,t+o,r)]}})(q,e,y,E[0]),H=()=>(e=>e.l?h(e,e.l-1)+d(e,e.l-1):0)(q),M=e=>h(q,e)-w,A=e=>d(q,e),J=e=>{e&&(x()&&0!==O?w+=e:($+=e,z++))};return{h:()=>b,m:()=>(e=>[e.t.slice(),e.o])(q),v:()=>{if(I)return E;let[e,t]=C(o(0,N()));return k&&(e=r(e,k[0]),t=o(t,k[1])),1!==O&&(e-=o(0,i)),2!==O&&(t+=o(0,i)),E=[o(e,0),r(t,q.l-1)]},S:()=>m(q,N()),I:()=>m(q,N()+y),O:e=>q.t[e]===u,j:()=>!!k&&q.t.slice(o(0,k[0]-1),r(q.l-1,k[1]+1)+1).includes(u),k:M,T:A,q:()=>q.l,B:()=>g,R:()=>0!==O,p:()=>y,N:()=>S,C:H,H:()=>z,M:()=>(I=$,$=0,[I,2===j||R()+y>=H()]),A:(e,t)=>{const r=[e,t];return B.add(r),()=>{B.delete(r)}},J:(e,r)=>{let s,i,l=0;switch(e){case 1:{const e=I;I=0;const o=r-g,s=n(o);e&&s<n(e)+1||0!==j||(O=o<0?2:1),v&&(k=t,v=!1),g=r,l=4;const c=R();c>=-y&&c<=H()&&(l+=1,i=s>y);break}case 2:l=8,0!==O&&(s=!0,l+=1),O=0,j=0,k=t;break;case 3:{const e=r.filter((([e,t])=>q.t[e]!==t));if(!e.length)break;J(e.reduce(((e,[t,r])=>((2===j||(k?t<k[0]:M(t)+(0===O&&0===j?A(t):0)<R()))&&(e+=r-A(t)),e)),0));for(const[t,r]of e){const e=A(t),o=p(q,t,r);a&&(T+=o?r:r-e)}a&&y&&T>y&&(J(((e,t)=>{let r=0;const n=[];e.t.forEach(((e,o)=>{e!==u&&(n.push(e),o<t&&r++)})),e.i=-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.o;return((e.o=a)-f)*o(t-r,0)})(q,m(q,N()))),a=!1),l=3,i=!0;break}case 4:y!==r&&(y=r,l=3);break;case 5:r[1]?(J(_(q,r[0],!0)),j=2,l=1):_(q,r[0]);break;case 6:S=r;break;case 7:j=1;break;case 8:k=C(r),l=1}l&&(b=[],s&&w&&($+=w,w=0,z++),B.forEach((([e,t])=>{l&e&&t(i)})))}}},I=(e,t)=>t&&g()?-e:e,O=(e,r,o,n,s,l)=>{const c=Date.now;let a=0,u=!1,f=!1,d=!1,p=!1;const h=(()=>{let r;const o=()=>{r!=t&&clearTimeout(r)},n=()=>{o(),r=i((()=>{r=t,(()=>{if(u||f)return u=!1,void h();d=!1,e.J(2)})()}),150)};return n.P=o,n})(),m=()=>{a=c(),d&&(p=!0),l&&e.J(6,l()),e.J(1,n()),h()},_=t=>{if(u||!e.R()||t.ctrlKey)return;const r=c()-a;150>r&&50<r&&(o?t.deltaX:t.deltaY)&&(u=!0)},v=()=>{f=!0,d=p=!1},b=()=>{f=!1,x()&&(d=!0)};return r.addEventListener("scroll",m),r.addEventListener("wheel",_,{passive:!0}),r.addEventListener("touchstart",v,{passive:!0}),r.addEventListener("touchend",b,{passive:!0}),{L:()=>{r.removeEventListener("scroll",m),r.removeEventListener("wheel",_),r.removeEventListener("touchstart",v),r.removeEventListener("touchend",b),h.P()},W:()=>{const[t,r]=e.M();t&&(s(I(t,o),r,p),p=!1,r&&e.p()>e.C()&&e.J(1,n()))}}},j=e=>{let t;return{X(r){(t||(t=new(S(y(r)).ResizeObserver)(e))).observe(r)},Y(e){t.unobserve(e)},L(){t&&t.disconnect()}}},k=/*#__PURE__*/e.defineComponent({props:{F:{type:Object,required:!0},U:{type:Object,required:!0},V:{type:Object,required:!0},D:{type:Function,required:!0},G:{type:Number,required:!0},K:{type:Boolean},Z:{type:Boolean},ee:{type:String,required:!0}},setup(t){const r=e.ref(),o=e.computed((()=>t.F.value&&t.U.k(t.G))),n=e.computed((()=>t.F.value&&t.U.O(t.G)));return e.watch((()=>r.value&&t.G),((e,o,n)=>{n(t.D(r.value,t.G))}),{flush:"post"}),()=>{const{V:s,K:i,Z:l,ee:c}=t,a=n.value,u={position:a&&l?void 0:"absolute",[i?"height":"width"]:"100%",[i?"top":"left"]:"0px",[i?g()?"right":"left":"top"]:o.value+"px",visibility:!a||l?"visible":"hidden"};return i&&(u.display="flex"),e.createVNode(c,{ref:r,style:u},"function"==typeof(f=s)||"[object Object]"===Object.prototype.toString.call(f)&&!e.isVNode(f)?s:{default:()=>[s],_:2},8,["style"]);var f}}}),E=(e,t)=>{const r=e.key;return null!=r?r:"_"+t},T=(e,t)=>e[0]===t[0]&&e[1]===t[1],q={data:{type:Array,required:!0},overscan:Number,itemSize:Number,shift:Boolean,horizontal:Boolean,startMargin:{type:Number,default:0},ssrCount:Number,scrollRef:Object,as:{type:String,default:"div"},item:{type:String,default:"div"}},B=/*#__PURE__*/e.defineComponent({props:q,emits:["scroll","scrollEnd"],setup(r,{emit:n,expose:s,slots:a}){let u=!!r.ssrCount;const f=r.horizontal,d=e.ref(),p=w(r.data.length,r.itemSize,r.overscan,r.ssrCount,0,!r.itemSize),h=((e,r)=>{let o;const n=r?"width":"height",s=new WeakMap,i=j((r=>{const i=[];for(const{target:l,contentRect:c}of r)if(l.offsetParent)if(l===o)e.J(4,c[n]);else{const e=s.get(l);e!=t&&i.push([e,c[n]])}i.length&&e.J(3,i)}));return{te(e){i.X(o=e)},re:(e,t)=>(s.set(e,t),i.X(e),()=>{s.delete(e),i.Y(e)}),oe:i.L}})(p,f),m=((e,t)=>{let r,o,n;const s=t?"scrollLeft":"scrollTop",a=t?"overflowX":"overflowY",u=async(o,l)=>{if(!r)return void c((()=>u(o,l)));n&&n();const a=()=>{let t;return[new Promise(((r,o)=>{t=r,n=o,$(e)&&i(o,150)})),e.A(2,(()=>{t&&t()}))]};if(l&&z()){for(;e.J(8,o()),e.j();){const[e,t]=a();try{await e}catch(e){return}finally{t()}}r.scrollTo({[t?"left":"top"]:I(o(),t),behavior:"smooth"})}else for(;;){const[n,i]=a();try{r[s]=I(o(),t),e.J(7),await n}catch(e){return}finally{i()}}};return{ne(l){r=l,o=O(e,l,t,(()=>I(l[s],t)),((t,r,o)=>{if(o){const e=l.style,t=e[a];e[a]="hidden",i((()=>{e[a]=t}))}r?(l[s]=e.B()+t,n&&n()):l[s]+=t}))},oe(){o&&o.L()},se(e){u((()=>e))},ie(t){t+=e.B(),u((()=>t))},le(t,{align:r,smooth:o,offset:n=0}={}){if(t=l(t,0,e.q()-1),"nearest"===r){const o=e.k(t),n=e.B();if(o<n)r="start";else{if(!(o+e.T(t)>n+e.p()))return;r="end"}}u((()=>n+e.N()+e.k(t)+("end"===r?e.T(t)-e.p():"center"===r?(e.T(t)-e.p())/2:0)),o)},ce:()=>{o&&o.W()}}})(p,f),_=e.ref(p.h()),v=p.A(1,(()=>{_.value=p.h()})),b=p.A(4,(()=>{n("scroll",p.B())})),y=p.A(8,(()=>{n("scrollEnd")})),S=e.computed((e=>{_.value;const t=p.v();return e&&T(e,t)?e:t})),g=e.computed((()=>_.value&&p.R())),x=e.computed((()=>_.value&&p.C())),q=e.computed((()=>_.value&&p.H()));return e.onMounted((()=>{u=!1,c((()=>{const e=e=>{h.te(e),m.ne(e)};r.scrollRef?e(r.scrollRef):e(d.value.parentElement)}))})),e.onUnmounted((()=>{v(),b(),y(),h.oe(),m.oe()})),e.watch((()=>r.data.length),(e=>{p.J(5,[e,r.shift])})),e.watch((()=>r.startMargin),(e=>{p.J(6,e)}),{immediate:!0}),e.watch([q],(()=>{m.ce()}),{flush:"post"}),s({get scrollOffset(){return p.B()},get scrollSize(){return(e=>o(e.C(),e.p()))(p)},get viewportSize(){return p.p()},findStartIndex:p.S,findEndIndex:p.I,getItemOffset:p.k,getItemSize:p.T,scrollToIndex:m.le,scrollTo:m.se,scrollBy:m.ie}),()=>{const t=r.as,o=r.item,[n,s]=S.value,i=x.value,l=[];for(let t=n,i=s;t<=i;t++){const n=a.default({item:r.data[t],index:t})[0];l.push(e.createVNode(k,{key:E(n,t),F:_,U:p,D:h.re,G:t,V:n,K:f,Z:u,ee:o},null,8,["_rerender","_store","_resizer","_index","_children","_isHorizontal","_isSSR","_as"]))}return e.createVNode(t,{ref:d,style:{overflowAnchor:"none",flex:"none",position:"relative",visibility:"hidden",width:f?i+"px":"100%",height:f?"100%":i+"px",pointerEvents:g.value?"none":void 0}},"function"==typeof(c=l)||"[object Object]"===Object.prototype.toString.call(c)&&!e.isVNode(c)?l:{default:()=>[l],_:2},8,["style"]);var c}}}),R={data:{type:Array,required:!0},overscan:Number,itemSize:Number,shift:Boolean,horizontal:Boolean,ssrCount:Number},N=/*#__PURE__*/e.defineComponent({props:R,emits:["scroll","scrollEnd"],setup(t,{emit:r,expose:o,slots:n}){const s=t.horizontal,i=e=>{r("scroll",e)},l=()=>{r("scrollEnd")},c=e.ref();return o({get scrollOffset(){return c.value.scrollOffset},get scrollSize(){return c.value.scrollSize},get viewportSize(){return c.value.viewportSize},findStartIndex:(...e)=>c.value.findStartIndex(...e),findEndIndex:(...e)=>c.value.findEndIndex(...e),getItemOffset:(...e)=>c.value.getItemOffset(...e),getItemSize:(...e)=>c.value.getItemSize(...e),scrollToIndex:(...e)=>c.value.scrollToIndex(...e),scrollTo:(...e)=>c.value.scrollTo(...e),scrollBy:(...e)=>c.value.scrollBy(...e)}),()=>{return e.createVNode("div",{style:{display:s?"inline-block":"block",[s?"overflowX":"overflowY"]:"auto",contain:"strict",width:"100%",height:"100%"}},[e.createVNode(B,{ref:c,data:t.data,overscan:t.overscan,itemSize:t.itemSize,shift:t.shift,ssrCount:t.ssrCount,horizontal:s,onScroll:i,onScrollEnd:l},(r=n,"function"==typeof r||"[object Object]"===Object.prototype.toString.call(r)&&!e.isVNode(r)?n:{default:()=>[n],_:2}),8,["data","overscan","itemSize","shift","ssrCount","horizontal","onScroll","onScrollEnd"])],4);var r}}}),C={data:{type:Array,required:!0},overscan:Number,itemSize:Number,shift:Boolean,horizontal:Boolean,as:{type:String,default:"div"},item:{type:String,default:"div"}},H=/*#__PURE__*/e.defineComponent({props:C,emits:["scroll","scrollEnd"],setup(r,{emit:o,slots:n,expose:s}){const a=r.horizontal,u=e.ref(),f=w(r.data.length,r.itemSize,r.overscan,void 0,0,!r.itemSize),d=((e,r)=>{const o=r?"width":"height",n=r?"innerWidth":"innerHeight",s=new WeakMap,i=j((r=>{const n=[];for(const{target:e,contentRect:i}of r){if(!e.offsetParent)continue;const r=s.get(e);r!=t&&n.push([r,i[o]])}n.length&&e.J(3,n)}));let l;return{te(t){const r=S(y(t)),o=()=>{e.J(4,r[n])};r.addEventListener("resize",o),o(),l=()=>{r.removeEventListener("resize",o)}},re:(e,t)=>(s.set(e,t),i.X(e),()=>{s.delete(e),i.Y(e)}),oe(){l&&l(),i.L()}}})(f,a),p=((e,t)=>{let r,o,n;const s=(e,t,r,o,n=0)=>{const i=o?"offsetLeft":"offsetTop",l=n+(o&&g()?r.innerWidth-e[i]-e.offsetWidth:e[i]),c=e.offsetParent;return e!==t&&c?s(c,t,r,o,l):l},a=async(o,s)=>{if(!r)return void c((()=>a(o,s)));n&&n();const l=()=>{let t;return[new Promise(((r,o)=>{t=r,n=o,$(e)&&i(o,150)})),e.A(2,(()=>{t&&t()}))]},u=S(y(r));if(s&&z()){for(;e.J(8,o()),e.j();){const[e,t]=l();try{await e}catch(e){return}finally{t()}}u.scroll({[t?"left":"top"]:I(o(),t),behavior:"smooth"})}else for(;;){const[r,n]=l();try{u.scroll({[t?"left":"top"]:I(o(),t)}),e.J(7),await r}catch(e){return}finally{n()}}};return{ne(n){r=n;const i=t?"scrollX":"scrollY",l=y(n),c=S(l),a=l.body;o=O(e,c,t,(()=>I(c[i],t)),((r,o)=>{o?c.scroll({[t?"left":"top"]:e.B()+r}):c.scrollBy(t?r:0,t?0:r)}),(()=>s(n,a,c,t)))},oe(){o&&o.L(),r=void 0},ce:()=>{o&&o.W()},le(o,{align:n,smooth:i,offset:c=0}={}){if(!r)return;if(o=l(o,0,e.q()-1),"nearest"===n){const t=e.k(o),r=e.B();if(t<r)n="start";else{if(!(t+e.T(o)>r+e.p()))return;n="end"}}const u=y(r),f=S(u);a((()=>{const i=s(r,u.body,f,t),l=f.innerHeight-u.documentElement.clientHeight,a=f.innerHeight-u.documentElement.clientWidth,d="end"===n||"center"===n?t?a:l:0;return c+i+e.k(o)+("end"===n?e.T(o)-(e.p()-d):"center"===n?(e.T(o)-(e.p()-d))/2:0)}),i)}}})(f,a),h=e.ref(f.h()),m=f.A(1,(()=>{h.value=f.h()})),_=f.A(4,(()=>{o("scroll",f.B())})),v=f.A(8,(()=>{o("scrollEnd")})),b=e.computed((e=>{h.value;const t=f.v();return e&&T(e,t)?e:t})),x=e.computed((()=>h.value&&f.R())),q=e.computed((()=>h.value&&f.C())),B=e.computed((()=>h.value&&f.H()));return e.onMounted((()=>{const e=u.value;e&&(d.te(e),p.ne(e))})),e.onUnmounted((()=>{m(),_(),v(),d.oe(),p.oe()})),e.watch((()=>r.data.length),(e=>{f.J(5,[e,r.shift])})),e.watch([B],(()=>{p.ce()}),{flush:"post"}),s({findStartIndex:f.S,findEndIndex:f.I,scrollToIndex:p.le}),()=>{const t=r.as,o=r.item,[s,i]=b.value,l=q.value,c=[];for(let t=s,l=i;t<=l;t++){const s=n.default({item:r.data[t],index:t})[0];c.push(e.createVNode(k,{key:E(s,t),F:h,U:f,D:d.re,G:t,V:s,K:a,ee:o},null,8,["_rerender","_store","_resizer","_index","_children","_isHorizontal","_as"]))}return e.createVNode(t,{ref:u,style:{overflowAnchor:"none",flex:"none",position:"relative",visibility:"hidden",width:a?l+"px":"100%",height:a?"100%":l+"px",pointerEvents:x.value?"none":void 0}},"function"==typeof(p=c)||"[object Object]"===Object.prototype.toString.call(p)&&!e.isVNode(p)?c:{default:()=>[c],_:2},8,["style"]);var p}}});exports.VList=N,exports.Virtualizer=B,exports.WindowVirtualizer=H;
2
2
  //# sourceMappingURL=index.js.map