virtua 0.52.9 → 0.52.10

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.
@@ -988,6 +988,7 @@ var createScrollObserver = (store, viewport, scroller, isHorizontal, isRtl, onMo
988
988
  viewport.addEventListener("touchstart", onTouchStart, { passive: true });
989
989
  viewport.addEventListener("touchend", onTouchEnd, { passive: true });
990
990
  return {
991
+ _sync: onScroll,
991
992
  _dispose: () => {
992
993
  viewport.removeEventListener("scroll", onScroll);
993
994
  viewport.removeEventListener("wheel", onWheel);
@@ -1084,13 +1085,20 @@ var createContainerDriver = (store, isHorizontal) => {
1084
1085
  let viewportElement;
1085
1086
  let scrollObserver;
1086
1087
  let initialized = createPromise();
1088
+ let isViewportDisplayed = true;
1087
1089
  const mountedIndexes = new WeakMap();
1088
1090
  const resizeObserver = createResizeObserver((entries) => {
1089
1091
  const resizes = [];
1090
1092
  for (const { target, contentRect: { width, height } } of entries) {
1091
1093
  if (target === viewportElement) {
1092
1094
  if (width || height) {
1095
+ if (!isViewportDisplayed) {
1096
+ scrollObserver._sync();
1097
+ }
1098
+ isViewportDisplayed = true;
1093
1099
  store.$update(4, isHorizontal ? width : height);
1100
+ } else {
1101
+ isViewportDisplayed = false;
1094
1102
  }
1095
1103
  } else if (target.offsetParent) {
1096
1104
  const index = mountedIndexes.get(target);
@@ -1228,6 +1236,7 @@ var createContainerGridDriver = (rowStore, colStore) => {
1228
1236
  let rowScrollObserver;
1229
1237
  let colScrollObserver;
1230
1238
  let initialized = createPromise();
1239
+ let isViewportDisplayed = true;
1231
1240
  const mountedRowIndexes = new WeakMap();
1232
1241
  const mountedColIndexes = new WeakMap();
1233
1242
  const resizeObserver = createResizeObserver((entries) => {
@@ -1236,8 +1245,15 @@ var createContainerGridDriver = (rowStore, colStore) => {
1236
1245
  for (const { target, contentRect: { width, height } } of entries) {
1237
1246
  if (target === viewportElement) {
1238
1247
  if (width || height) {
1248
+ if (!isViewportDisplayed) {
1249
+ rowScrollObserver._sync();
1250
+ colScrollObserver._sync();
1251
+ }
1252
+ isViewportDisplayed = true;
1239
1253
  rowStore.$update(4, height);
1240
1254
  colStore.$update(4, width);
1255
+ } else {
1256
+ isViewportDisplayed = false;
1241
1257
  }
1242
1258
  } else if (target.offsetParent) {
1243
1259
  const rowIndex = mountedRowIndexes.get(target);