virtua 0.51.1 → 0.51.3
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/angular/index.js +50 -55
- package/lib/angular/index.js.map +1 -1
- package/lib/core/index.cjs +189 -194
- package/lib/core/index.cjs.map +1 -1
- package/lib/core/index.js +129 -134
- package/lib/core/index.js.map +1 -1
- package/lib/index.cjs +27 -32
- package/lib/index.cjs.map +1 -1
- package/lib/index.js +59 -64
- package/lib/index.js.map +1 -1
- package/lib/solid/Virtualizer.d.ts +1 -1
- package/lib/solid/WindowVirtualizer.d.ts +1 -1
- package/lib/solid/index.cjs +81 -86
- package/lib/solid/index.cjs.map +1 -1
- package/lib/solid/index.js +212 -217
- package/lib/solid/index.js.map +1 -1
- package/lib/solid/index.jsx +65 -67
- package/lib/solid/index.jsx.map +1 -1
- package/lib/svelte/Virtualizer.svelte +2 -1
- package/lib/svelte/WindowVirtualizer.svelte +2 -1
- package/lib/vue/index.cjs +118 -123
- package/lib/vue/index.cjs.map +1 -1
- package/lib/vue/index.js +28 -33
- package/lib/vue/index.js.map +1 -1
- package/package.json +1 -1
package/lib/solid/index.jsx
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { For, createComputed, createEffect, createMemo, createSignal, mergeProps, on, onCleanup, onMount, splitProps, untrack } from "solid-js";
|
|
2
|
-
import { Dynamic } from "solid-js/web";
|
|
2
|
+
import { Dynamic, isServer } from "solid-js/web";
|
|
3
3
|
|
|
4
4
|
//#region src/core/utils.ts
|
|
5
5
|
var NULL = null;
|
|
@@ -572,18 +572,18 @@ var createContainerDriver = (store, isHorizontal) => {
|
|
|
572
572
|
let viewportElement;
|
|
573
573
|
let scrollObserver;
|
|
574
574
|
let initialized = createPromise();
|
|
575
|
-
const sizeKey = isHorizontal ? "width" : "height";
|
|
576
575
|
const mountedIndexes = new WeakMap();
|
|
577
576
|
const resizeObserver = createResizeObserver((entries) => {
|
|
578
577
|
const resizes = [];
|
|
579
|
-
for (const { target, contentRect } of entries) {
|
|
580
|
-
if (!target.offsetParent) continue;
|
|
578
|
+
for (const { target, contentRect: { width, height } } of entries) {
|
|
581
579
|
if (target === viewportElement) {
|
|
582
|
-
|
|
583
|
-
|
|
580
|
+
if (width || height) {
|
|
581
|
+
store.$update(4, isHorizontal ? width : height);
|
|
582
|
+
}
|
|
583
|
+
} else if (target.offsetParent) {
|
|
584
584
|
const index = mountedIndexes.get(target);
|
|
585
585
|
if (index != null) {
|
|
586
|
-
resizes.push([index,
|
|
586
|
+
resizes.push([index, isHorizontal ? width : height]);
|
|
587
587
|
}
|
|
588
588
|
}
|
|
589
589
|
}
|
|
@@ -637,19 +637,17 @@ var createWindowDriver = (store, isHorizontal) => {
|
|
|
637
637
|
let getBaseOffset;
|
|
638
638
|
let onViewportResize;
|
|
639
639
|
let initialized = createPromise();
|
|
640
|
-
const sizeKey = isHorizontal ? "width" : "height";
|
|
641
640
|
const mountedIndexes = new WeakMap();
|
|
642
641
|
const resizeObserver = createResizeObserver((entries) => {
|
|
643
642
|
const resizes = [];
|
|
644
|
-
for (const { target, contentRect } of entries) {
|
|
643
|
+
for (const { target, contentRect: { width, height } } of entries) {
|
|
645
644
|
if (target === viewportElement) {
|
|
646
645
|
onViewportResize && onViewportResize();
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
resizes.push([index, contentRect[sizeKey]]);
|
|
646
|
+
} else if (target.offsetParent) {
|
|
647
|
+
const index = mountedIndexes.get(target);
|
|
648
|
+
if (index != null) {
|
|
649
|
+
resizes.push([index, isHorizontal ? width : height]);
|
|
650
|
+
}
|
|
653
651
|
}
|
|
654
652
|
}
|
|
655
653
|
if (resizes.length) {
|
|
@@ -689,7 +687,6 @@ var createWindowDriver = (store, isHorizontal) => {
|
|
|
689
687
|
cleanupOnWindowResize && cleanupOnWindowResize();
|
|
690
688
|
resizeObserver._dispose();
|
|
691
689
|
scrollObserver && scrollObserver._dispose();
|
|
692
|
-
viewportElement = undefined;
|
|
693
690
|
initialized[1](false);
|
|
694
691
|
initialized = createPromise();
|
|
695
692
|
},
|
|
@@ -728,11 +725,12 @@ var createContainerGridDriver = (rowStore, colStore) => {
|
|
|
728
725
|
const resizedRows = new Set();
|
|
729
726
|
const resizedCols = new Set();
|
|
730
727
|
for (const { target, contentRect: { width, height } } of entries) {
|
|
731
|
-
if (!target.offsetParent) continue;
|
|
732
728
|
if (target === viewportElement) {
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
729
|
+
if (width || height) {
|
|
730
|
+
rowStore.$update(4, height);
|
|
731
|
+
colStore.$update(4, width);
|
|
732
|
+
}
|
|
733
|
+
} else if (target.offsetParent) {
|
|
736
734
|
const cell = mountedIndexes.get(target);
|
|
737
735
|
if (cell) {
|
|
738
736
|
const [rowIndex, colIndex] = cell;
|
|
@@ -982,35 +980,34 @@ var Virtualizer = (props) => {
|
|
|
982
980
|
});
|
|
983
981
|
const isScrolling = createMemo(() => stateVersion() && store.$isScrolling());
|
|
984
982
|
const totalSize = createMemo(() => stateVersion() && store.$getTotalSize());
|
|
983
|
+
const ref = props.ref;
|
|
984
|
+
if (!isServer && ref) {
|
|
985
|
+
ref({
|
|
986
|
+
get cache() {
|
|
987
|
+
return layout.$snapshot();
|
|
988
|
+
},
|
|
989
|
+
get scrollOffset() {
|
|
990
|
+
return store.$getScrollOffset();
|
|
991
|
+
},
|
|
992
|
+
get scrollSize() {
|
|
993
|
+
return getScrollSize(store);
|
|
994
|
+
},
|
|
995
|
+
get viewportSize() {
|
|
996
|
+
return store.$getViewportSize();
|
|
997
|
+
},
|
|
998
|
+
findItemIndex: store.$findItemIndex,
|
|
999
|
+
getItemOffset: store.$getItemOffset,
|
|
1000
|
+
getItemSize: store.$getItemSize,
|
|
1001
|
+
scrollToIndex: (index, opts) => scrollToIndex(driver, store, index, opts),
|
|
1002
|
+
scrollTo: (offset) => scrollTo(driver, offset),
|
|
1003
|
+
scrollBy: (offset) => scrollBy(driver, store, offset)
|
|
1004
|
+
});
|
|
1005
|
+
onCleanup(() => ref());
|
|
1006
|
+
}
|
|
985
1007
|
onMount(() => {
|
|
986
1008
|
setIsSSR(false);
|
|
987
|
-
if (props.ref) {
|
|
988
|
-
props.ref({
|
|
989
|
-
get cache() {
|
|
990
|
-
return layout.$snapshot();
|
|
991
|
-
},
|
|
992
|
-
get scrollOffset() {
|
|
993
|
-
return store.$getScrollOffset();
|
|
994
|
-
},
|
|
995
|
-
get scrollSize() {
|
|
996
|
-
return getScrollSize(store);
|
|
997
|
-
},
|
|
998
|
-
get viewportSize() {
|
|
999
|
-
return store.$getViewportSize();
|
|
1000
|
-
},
|
|
1001
|
-
findItemIndex: store.$findItemIndex,
|
|
1002
|
-
getItemOffset: store.$getItemOffset,
|
|
1003
|
-
getItemSize: store.$getItemSize,
|
|
1004
|
-
scrollToIndex: (index, opts) => scrollToIndex(driver, store, index, opts),
|
|
1005
|
-
scrollTo: (offset) => scrollTo(driver, offset),
|
|
1006
|
-
scrollBy: (offset) => scrollBy(driver, store, offset)
|
|
1007
|
-
});
|
|
1008
|
-
}
|
|
1009
1009
|
driver.$observe(containerRef, props.scrollRef);
|
|
1010
1010
|
onCleanup(() => {
|
|
1011
|
-
if (props.ref) {
|
|
1012
|
-
props.ref();
|
|
1013
|
-
}
|
|
1014
1011
|
store.$dispose();
|
|
1015
1012
|
driver.$dispose();
|
|
1016
1013
|
});
|
|
@@ -1038,8 +1035,10 @@ var Virtualizer = (props) => {
|
|
|
1038
1035
|
mounted.add(i);
|
|
1039
1036
|
}
|
|
1040
1037
|
sort([...mounted]).forEach((index) => {
|
|
1041
|
-
|
|
1042
|
-
|
|
1038
|
+
if (index < count) {
|
|
1039
|
+
items.push(props.data[index]);
|
|
1040
|
+
indexes.push(index);
|
|
1041
|
+
}
|
|
1043
1042
|
});
|
|
1044
1043
|
} else {
|
|
1045
1044
|
for (let [i, j] = range(); i <= j; i++) {
|
|
@@ -1146,30 +1145,29 @@ var WindowVirtualizer = (props) => {
|
|
|
1146
1145
|
});
|
|
1147
1146
|
const isScrolling = createMemo(() => stateVersion() && store.$isScrolling());
|
|
1148
1147
|
const totalSize = createMemo(() => stateVersion() && store.$getTotalSize());
|
|
1148
|
+
const ref = props.ref;
|
|
1149
|
+
if (!isServer && ref) {
|
|
1150
|
+
ref({
|
|
1151
|
+
get cache() {
|
|
1152
|
+
return layout.$snapshot();
|
|
1153
|
+
},
|
|
1154
|
+
get scrollOffset() {
|
|
1155
|
+
return store.$getScrollOffset();
|
|
1156
|
+
},
|
|
1157
|
+
get viewportSize() {
|
|
1158
|
+
return store.$getViewportSize();
|
|
1159
|
+
},
|
|
1160
|
+
findItemIndex: store.$findItemIndex,
|
|
1161
|
+
getItemOffset: store.$getItemOffset,
|
|
1162
|
+
getItemSize: store.$getItemSize,
|
|
1163
|
+
scrollToIndex: (index, opts) => scrollToIndex(driver, store, index, opts)
|
|
1164
|
+
});
|
|
1165
|
+
onCleanup(() => ref());
|
|
1166
|
+
}
|
|
1149
1167
|
onMount(() => {
|
|
1150
1168
|
setIsSSR(false);
|
|
1151
|
-
if (props.ref) {
|
|
1152
|
-
props.ref({
|
|
1153
|
-
get cache() {
|
|
1154
|
-
return layout.$snapshot();
|
|
1155
|
-
},
|
|
1156
|
-
get scrollOffset() {
|
|
1157
|
-
return store.$getScrollOffset();
|
|
1158
|
-
},
|
|
1159
|
-
get viewportSize() {
|
|
1160
|
-
return store.$getViewportSize();
|
|
1161
|
-
},
|
|
1162
|
-
findItemIndex: store.$findItemIndex,
|
|
1163
|
-
getItemOffset: store.$getItemOffset,
|
|
1164
|
-
getItemSize: store.$getItemSize,
|
|
1165
|
-
scrollToIndex: (index, opts) => scrollToIndex(driver, store, index, opts)
|
|
1166
|
-
});
|
|
1167
|
-
}
|
|
1168
1169
|
driver.$observe(containerRef);
|
|
1169
1170
|
onCleanup(() => {
|
|
1170
|
-
if (props.ref) {
|
|
1171
|
-
props.ref();
|
|
1172
|
-
}
|
|
1173
1171
|
store.$dispose();
|
|
1174
1172
|
driver.$dispose();
|
|
1175
1173
|
});
|