virtua 0.51.1 → 0.51.2

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,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;
@@ -689,7 +689,6 @@ var createWindowDriver = (store, isHorizontal) => {
689
689
  cleanupOnWindowResize && cleanupOnWindowResize();
690
690
  resizeObserver._dispose();
691
691
  scrollObserver && scrollObserver._dispose();
692
- viewportElement = undefined;
693
692
  initialized[1](false);
694
693
  initialized = createPromise();
695
694
  },
@@ -982,35 +981,34 @@ var Virtualizer = (props) => {
982
981
  });
983
982
  const isScrolling = createMemo(() => stateVersion() && store.$isScrolling());
984
983
  const totalSize = createMemo(() => stateVersion() && store.$getTotalSize());
984
+ const ref = props.ref;
985
+ if (!isServer && ref) {
986
+ ref({
987
+ get cache() {
988
+ return layout.$snapshot();
989
+ },
990
+ get scrollOffset() {
991
+ return store.$getScrollOffset();
992
+ },
993
+ get scrollSize() {
994
+ return getScrollSize(store);
995
+ },
996
+ get viewportSize() {
997
+ return store.$getViewportSize();
998
+ },
999
+ findItemIndex: store.$findItemIndex,
1000
+ getItemOffset: store.$getItemOffset,
1001
+ getItemSize: store.$getItemSize,
1002
+ scrollToIndex: (index, opts) => scrollToIndex(driver, store, index, opts),
1003
+ scrollTo: (offset) => scrollTo(driver, offset),
1004
+ scrollBy: (offset) => scrollBy(driver, store, offset)
1005
+ });
1006
+ onCleanup(() => ref());
1007
+ }
985
1008
  onMount(() => {
986
1009
  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
1010
  driver.$observe(containerRef, props.scrollRef);
1010
1011
  onCleanup(() => {
1011
- if (props.ref) {
1012
- props.ref();
1013
- }
1014
1012
  store.$dispose();
1015
1013
  driver.$dispose();
1016
1014
  });
@@ -1038,8 +1036,10 @@ var Virtualizer = (props) => {
1038
1036
  mounted.add(i);
1039
1037
  }
1040
1038
  sort([...mounted]).forEach((index) => {
1041
- items.push(props.data[index]);
1042
- indexes.push(index);
1039
+ if (index < count) {
1040
+ items.push(props.data[index]);
1041
+ indexes.push(index);
1042
+ }
1043
1043
  });
1044
1044
  } else {
1045
1045
  for (let [i, j] = range(); i <= j; i++) {
@@ -1146,30 +1146,29 @@ var WindowVirtualizer = (props) => {
1146
1146
  });
1147
1147
  const isScrolling = createMemo(() => stateVersion() && store.$isScrolling());
1148
1148
  const totalSize = createMemo(() => stateVersion() && store.$getTotalSize());
1149
+ const ref = props.ref;
1150
+ if (!isServer && ref) {
1151
+ ref({
1152
+ get cache() {
1153
+ return layout.$snapshot();
1154
+ },
1155
+ get scrollOffset() {
1156
+ return store.$getScrollOffset();
1157
+ },
1158
+ get viewportSize() {
1159
+ return store.$getViewportSize();
1160
+ },
1161
+ findItemIndex: store.$findItemIndex,
1162
+ getItemOffset: store.$getItemOffset,
1163
+ getItemSize: store.$getItemSize,
1164
+ scrollToIndex: (index, opts) => scrollToIndex(driver, store, index, opts)
1165
+ });
1166
+ onCleanup(() => ref());
1167
+ }
1149
1168
  onMount(() => {
1150
1169
  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
1170
  driver.$observe(containerRef);
1169
1171
  onCleanup(() => {
1170
- if (props.ref) {
1171
- props.ref();
1172
- }
1173
1172
  store.$dispose();
1174
1173
  driver.$dispose();
1175
1174
  });