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.
- package/lib/core/index.d.ts +7 -0
- package/lib/core/index.js +1 -0
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/index.mjs +1 -1
- package/lib/index.mjs.map +1 -1
- package/lib/react/Virtualizer.d.ts +1 -1
- package/lib/react/WindowVirtualizer.d.ts +1 -1
- package/lib/solid/Virtualizer.d.ts +1 -1
- package/lib/solid/WindowVirtualizer.d.ts +1 -1
- package/lib/solid/index.js +1 -1
- package/lib/solid/index.js.map +1 -1
- package/lib/solid/index.mjs +1 -1
- package/lib/solid/index.mjs.map +1 -1
- package/lib/svelte/ListItem.svelte +1 -1
- package/lib/svelte/ListItem.svelte.d.ts +1 -1
- package/lib/svelte/VList.svelte.d.ts +4 -2
- package/lib/svelte/Virtualizer.svelte +70 -78
- package/lib/svelte/Virtualizer.svelte.d.ts +4 -2
- package/lib/svelte/Virtualizer.type.d.ts +1 -1
- package/lib/svelte/WindowVirtualizer.svelte +48 -46
- package/lib/svelte/WindowVirtualizer.svelte.d.ts +4 -2
- package/lib/svelte/WindowVirtualizer.type.d.ts +1 -1
- package/lib/svelte/types.js +1 -0
- package/lib/svelte/utils.d.ts +1 -1
- package/lib/vue/Virtualizer.d.ts +1 -1
- package/lib/vue/WindowVirtualizer.d.ts +1 -1
- package/lib/vue/index.js +1 -1
- package/lib/vue/index.js.map +1 -1
- package/lib/vue/index.mjs +1 -1
- package/lib/vue/index.mjs.map +1 -1
- package/package.json +31 -31
- package/lib/svelte/core.d.ts +0 -80
- package/lib/svelte/core.js +0 -1
|
@@ -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
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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
|
|
37
|
+
const store = createVirtualStore(
|
|
53
38
|
data.length,
|
|
54
39
|
itemSize,
|
|
55
40
|
overscan,
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
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 &&
|
|
73
|
-
let isScrolling = $derived(rerender &&
|
|
74
|
-
let totalSize = $derived(rerender &&
|
|
75
|
-
let jumpCount = $derived(rerender &&
|
|
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
|
-
|
|
75
|
+
assignRef(scrollRef);
|
|
80
76
|
} else {
|
|
81
|
-
|
|
77
|
+
assignRef(containerRef!.parentElement!);
|
|
82
78
|
}
|
|
83
79
|
});
|
|
84
80
|
onDestroy(() => {
|
|
85
|
-
|
|
81
|
+
unsubscribeStore();
|
|
82
|
+
unsubscribeOnScroll();
|
|
83
|
+
unsubscribeOnScrollEnd();
|
|
84
|
+
resizer.$dispose();
|
|
85
|
+
scroller.$dispose();
|
|
86
86
|
});
|
|
87
87
|
|
|
88
88
|
$effect.pre(() => {
|
|
89
|
-
if (data.length !==
|
|
90
|
-
|
|
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 !==
|
|
96
|
-
|
|
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
|
-
|
|
104
|
+
scroller.$fixScrollJump();
|
|
105
105
|
});
|
|
106
106
|
|
|
107
|
-
export const getScrollOffset =
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
export const getViewportSize =
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
export const
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
export const
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
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 &&
|
|
165
|
-
hide={rerender &&
|
|
156
|
+
offset={rerender && store.$getItemOffset(index)}
|
|
157
|
+
hide={rerender && store.$isUnmeasuredItem(index)}
|
|
166
158
|
{horizontal}
|
|
167
|
-
resizer={
|
|
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():
|
|
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
|
|
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
|
|
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
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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
|
|
35
|
+
const store = createVirtualStore(
|
|
44
36
|
data.length,
|
|
45
37
|
itemSize,
|
|
46
38
|
overscan,
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
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 &&
|
|
64
|
-
let isScrolling = $derived(rerender &&
|
|
65
|
-
let totalSize = $derived(rerender &&
|
|
66
|
-
let jumpCount = $derived(rerender &&
|
|
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
|
-
|
|
69
|
+
resizer.$observeRoot(containerRef!);
|
|
70
|
+
scroller.$observe(containerRef!);
|
|
70
71
|
});
|
|
71
72
|
onDestroy(() => {
|
|
72
|
-
|
|
73
|
+
unsubscribeStore();
|
|
74
|
+
unsubscribeOnScroll();
|
|
75
|
+
unsubscribeOnScrollEnd();
|
|
76
|
+
resizer.$dispose();
|
|
77
|
+
scroller.$dispose();
|
|
73
78
|
});
|
|
74
79
|
|
|
75
80
|
$effect.pre(() => {
|
|
76
|
-
if (data.length !==
|
|
77
|
-
|
|
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
|
-
|
|
90
|
+
scroller.$fixScrollJump();
|
|
86
91
|
});
|
|
87
92
|
|
|
88
|
-
export const findStartIndex =
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
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 &&
|
|
125
|
-
hide={rerender &&
|
|
126
|
+
offset={rerender && store.$getItemOffset(index)}
|
|
127
|
+
hide={rerender && store.$isUnmeasuredItem(index)}
|
|
126
128
|
{horizontal}
|
|
127
|
-
resizer={
|
|
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():
|
|
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
|
|
12
|
+
scrollToIndex: (index: number, opts?: import("../core").ScrollToIndexOpts) => void;
|
|
11
13
|
};
|
|
12
14
|
}
|
|
13
15
|
interface $$IsomorphicComponent {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/lib/svelte/utils.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// @ts-nocheck
|
|
2
|
-
import type { ItemsRange } from "../core
|
|
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>;
|
package/lib/vue/Virtualizer.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/** @jsxImportSource vue */
|
|
2
2
|
import { VNode, ComponentOptionsMixin, SlotsType, PropType, NativeElements } from "vue";
|
|
3
|
-
import { ScrollToIndexOpts } from "../core
|
|
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
|
|
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
|