virtua 0.53.1 → 0.53.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.
Files changed (55) hide show
  1. package/lib/angular/VGrid.d.ts +5 -1
  2. package/lib/angular/VList.d.ts +5 -1
  3. package/lib/angular/VMasonry.d.ts +5 -1
  4. package/lib/angular/Virtualizer.d.ts +5 -1
  5. package/lib/angular/WindowVirtualizer.d.ts +5 -1
  6. package/lib/angular/index.js +368 -352
  7. package/lib/angular/index.js.map +1 -1
  8. package/lib/core/index.cjs +101 -108
  9. package/lib/core/index.cjs.map +1 -1
  10. package/lib/core/index.d.ts +1 -1
  11. package/lib/core/index.js +193 -200
  12. package/lib/core/index.js.map +1 -1
  13. package/lib/index.cjs +413 -404
  14. package/lib/index.cjs.map +1 -1
  15. package/lib/index.js +416 -408
  16. package/lib/index.js.map +1 -1
  17. package/lib/react/VGrid.d.ts +4 -0
  18. package/lib/react/VList.d.ts +1 -1
  19. package/lib/react/VMasonry.d.ts +4 -0
  20. package/lib/react/Virtualizer.d.ts +4 -0
  21. package/lib/react/WindowVirtualizer.d.ts +4 -0
  22. package/lib/react/types.d.ts +1 -1
  23. package/lib/solid/VGrid.d.ts +4 -0
  24. package/lib/solid/VList.d.ts +1 -1
  25. package/lib/solid/VMasonry.d.ts +4 -0
  26. package/lib/solid/Virtualizer.d.ts +4 -0
  27. package/lib/solid/WindowVirtualizer.d.ts +4 -0
  28. package/lib/solid/index.cjs +446 -436
  29. package/lib/solid/index.cjs.map +1 -1
  30. package/lib/solid/index.js +410 -400
  31. package/lib/solid/index.js.map +1 -1
  32. package/lib/solid/index.jsx +38 -22
  33. package/lib/solid/index.jsx.map +1 -1
  34. package/lib/solid/types.d.ts +1 -1
  35. package/lib/svelte/VGrid.svelte +26 -6
  36. package/lib/svelte/VGrid.type.d.ts +4 -0
  37. package/lib/svelte/VList.svelte +2 -0
  38. package/lib/svelte/VList.type.d.ts +1 -1
  39. package/lib/svelte/VMasonry.svelte +9 -2
  40. package/lib/svelte/VMasonry.type.d.ts +4 -0
  41. package/lib/svelte/Virtualizer.svelte +9 -2
  42. package/lib/svelte/Virtualizer.type.d.ts +4 -0
  43. package/lib/svelte/WindowVirtualizer.svelte +9 -2
  44. package/lib/svelte/WindowVirtualizer.type.d.ts +4 -0
  45. package/lib/svelte/types.d.ts +1 -1
  46. package/lib/vue/VGrid.d.ts +4 -0
  47. package/lib/vue/VList.d.ts +1 -1
  48. package/lib/vue/VMasonry.d.ts +4 -0
  49. package/lib/vue/Virtualizer.d.ts +4 -0
  50. package/lib/vue/WindowVirtualizer.d.ts +4 -0
  51. package/lib/vue/index.cjs +619 -609
  52. package/lib/vue/index.cjs.map +1 -1
  53. package/lib/vue/index.js +599 -589
  54. package/lib/vue/index.js.map +1 -1
  55. package/package.json +1 -1
@@ -60,7 +60,7 @@ var UPDATE_SCROLL_END_EVENT = 8;
60
60
  var getScrollSize = (store) => {
61
61
  return max(store.$getTotalSize(), store.$getViewportSize());
62
62
  };
63
- var createVirtualStore = ({ $getRange: getRange, $findIndex: findIndex, $getItemOffset: getOffset, $getItemSize: getItemSize, $isSizeEqual: isSizeEqual, $getTotalSize: getTotalSize, $getLength: getLength, $setLength: setLength, $isEstimating: isEstimating, $resize: resize, $relayout: relayout }, ssrCount = 0) => {
63
+ var createVirtualStore = ({ $getRange: getRange, $getItemOffset: getOffset, $getItemSize: getItemSize, $isSizeEqual: isSizeEqual, $getTotalSize: getTotalSize, $getLength: getLength, $setLength: setLength, $isEstimating: isEstimating, $resize: resize }, ssrCount = 0) => {
64
64
  let isSSR = !!ssrCount;
65
65
  let stateVersion = 1;
66
66
  let viewportSize = 0;
@@ -134,12 +134,12 @@ var createVirtualStore = ({ $getRange: getRange, $findIndex: findIndex, $getItem
134
134
  }
135
135
  return [max(startIndex, 0), min(endIndex, getLength() - 1)];
136
136
  },
137
- $findItemIndex: (offset) => findIndex(offset - startSpacerSize),
138
137
  $isUnmeasuredItem: isSizeEqual,
139
138
  $getItemOffset: getItemOffset,
140
139
  $getItemSize: getItemSize,
141
140
  $getItemsLength: getLength,
142
141
  $getScrollOffset: () => scrollOffset,
142
+ $getVisibleOffset: getVisibleOffset,
143
143
  $isScrolling: () => _scrollDirection !== SCROLL_IDLE,
144
144
  $getViewportSize: () => viewportSize,
145
145
  $getStartSpacerSize: () => startSpacerSize,
@@ -236,9 +236,8 @@ var createVirtualStore = ({ $getRange: getRange, $findIndex: findIndex, $getItem
236
236
  break;
237
237
  }
238
238
  case 9: {
239
- const relayoutJump = relayout(payload, getVisibleOffset());
240
- if (relayoutJump != null) {
241
- applyJump(relayoutJump);
239
+ if (payload != null) {
240
+ applyJump(payload);
242
241
  mutated = 1 + 2;
243
242
  }
244
243
  break;
@@ -907,8 +906,6 @@ var getBoxStyle = (from, to, inset, edge, zIndex) => {
907
906
  //#region src/core/layouts/masonry.ts
908
907
  var createMasonryLayout = (length, lanesOpt, gap = 0, itemSize, snapshot) => {
909
908
  let lanes = max(lanesOpt, 1);
910
- let nextLanes = lanes;
911
- let nextGap = gap;
912
909
  let defaultItemSize = snapshot && snapshot[1] || itemSize || 40;
913
910
  let computedIndex = -1;
914
911
  let estimatingIndexes = itemSize ? undefined : new Set();
@@ -979,7 +976,6 @@ var createMasonryLayout = (length, lanesOpt, gap = 0, itemSize, snapshot) => {
979
976
  const end = findIndex(getOffset, length, endOffset);
980
977
  return [min(findStart(startOffset), end), end];
981
978
  },
982
- $findIndex: (offset) => findIndex(getOffset, length, offset),
983
979
  $getItemOffset: getOffset,
984
980
  $getItemSize: getSize,
985
981
  $isSizeEqual: (index, size = -1) => sizes[index] === size,
@@ -1037,7 +1033,8 @@ var createMasonryLayout = (length, lanesOpt, gap = 0, itemSize, snapshot) => {
1037
1033
  }
1038
1034
  return 0;
1039
1035
  },
1040
- $relayout: (_, scrollOffset) => {
1036
+ $relayout: (nextLanes, nextGap = 0, scrollOffset) => {
1037
+ nextLanes = max(nextLanes, 1);
1041
1038
  if (nextLanes === lanes && nextGap === gap) {
1042
1039
  return;
1043
1040
  }
@@ -1049,10 +1046,6 @@ var createMasonryLayout = (length, lanesOpt, gap = 0, itemSize, snapshot) => {
1049
1046
  estimatingIndexes = itemSize ? undefined : new Set();
1050
1047
  return getOffset(startIndex) - prevStartOffset;
1051
1048
  },
1052
- $setOptions: (lanes, gap = 0) => {
1053
- nextLanes = max(lanes, 1);
1054
- nextGap = gap;
1055
- },
1056
1049
  $isEstimating: () => isEstimating,
1057
1050
  $snapshot: () => [sizes.slice(), defaultItemSize],
1058
1051
  $getLanes: () => lanes,
@@ -1627,6 +1620,9 @@ var Virtualizer = (props) => {
1627
1620
  store.$subscribe(8, () => {
1628
1621
  props.onScrollEnd?.();
1629
1622
  });
1623
+ store.$subscribe(2, () => {
1624
+ props.onResize?.();
1625
+ });
1630
1626
  const range = createMemo((prev) => {
1631
1627
  stateVersion();
1632
1628
  const next = store.$getRange(props.bufferSize);
@@ -1652,7 +1648,7 @@ var Virtualizer = (props) => {
1652
1648
  get viewportSize() {
1653
1649
  return store.$getViewportSize();
1654
1650
  },
1655
- findItemIndex: store.$findItemIndex,
1651
+ findItemIndex: (offset) => layout.$findIndex(offset - store.$getStartSpacerSize()),
1656
1652
  getItemOffset: store.$getItemOffset,
1657
1653
  getItemSize: store.$getItemSize,
1658
1654
  scrollToIndex: (index, opts) => scrollToIndex(driver, store, index, opts),
@@ -1757,6 +1753,7 @@ var VList = (props) => {
1757
1753
  "item",
1758
1754
  "onScroll",
1759
1755
  "onScrollEnd",
1756
+ "onResize",
1760
1757
  "style"
1761
1758
  ]);
1762
1759
  return <div {...others} style={{
@@ -1767,7 +1764,7 @@ var VList = (props) => {
1767
1764
  height: "100%",
1768
1765
  ...local.style
1769
1766
  }}>
1770
- <Virtualizer ref={local.ref} data={local.data} bufferSize={local.bufferSize} itemSize={local.itemSize} ssrCount={local.ssrCount} shift={local.shift} horizontal={local.horizontal} keepMounted={local.keepMounted} cache={local.cache} item={local.item} onScroll={local.onScroll} onScrollEnd={local.onScrollEnd}>
1767
+ <Virtualizer ref={local.ref} data={local.data} bufferSize={local.bufferSize} itemSize={local.itemSize} ssrCount={local.ssrCount} shift={local.shift} horizontal={local.horizontal} keepMounted={local.keepMounted} cache={local.cache} item={local.item} onScroll={local.onScroll} onScrollEnd={local.onScrollEnd} onResize={local.onResize}>
1771
1768
  {local.children}
1772
1769
  </Virtualizer>
1773
1770
  </div>;
@@ -1792,6 +1789,9 @@ var WindowVirtualizer = (props) => {
1792
1789
  store.$subscribe(8, () => {
1793
1790
  props.onScrollEnd?.();
1794
1791
  });
1792
+ store.$subscribe(2, () => {
1793
+ props.onResize?.();
1794
+ });
1795
1795
  const range = createMemo((prev) => {
1796
1796
  stateVersion();
1797
1797
  const next = store.$getRange(props.bufferSize);
@@ -1814,7 +1814,7 @@ var WindowVirtualizer = (props) => {
1814
1814
  get viewportSize() {
1815
1815
  return store.$getViewportSize();
1816
1816
  },
1817
- findItemIndex: store.$findItemIndex,
1817
+ findItemIndex: (offset) => layout.$findIndex(offset - store.$getStartSpacerSize()),
1818
1818
  getItemOffset: store.$getItemOffset,
1819
1819
  getItemSize: store.$getItemSize,
1820
1820
  scrollToIndex: (index, opts) => scrollToIndex(driver, store, index, opts)
@@ -1944,6 +1944,7 @@ var VGrid = (props) => {
1944
1944
  "onVerticalScroll",
1945
1945
  "onHorizontalScroll",
1946
1946
  "onScrollEnd",
1947
+ "onResize",
1947
1948
  "style"
1948
1949
  ]);
1949
1950
  const rowLayout = createGridLayout(rows, rowHeight, gap);
@@ -1976,6 +1977,18 @@ var VGrid = (props) => {
1976
1977
  };
1977
1978
  rowStore.$subscribe(8, notifyScrollEnd);
1978
1979
  colStore.$subscribe(8, notifyScrollEnd);
1980
+ let resized;
1981
+ const notifyResize = () => {
1982
+ if (!resized) {
1983
+ resized = true;
1984
+ microtask(() => {
1985
+ resized = false;
1986
+ props.onResize && props.onResize();
1987
+ });
1988
+ }
1989
+ };
1990
+ rowStore.$subscribe(2, notifyResize);
1991
+ colStore.$subscribe(2, notifyResize);
1979
1992
  createComputed(() => {
1980
1993
  rowLayout.$setPinned(props.headerRows, props.footerRows);
1981
1994
  colLayout.$setPinned(props.headerCols, props.footerCols);
@@ -1987,8 +2000,8 @@ var VGrid = (props) => {
1987
2000
  if (colLength !== colStore.$getItemsLength()) {
1988
2001
  colStore.$update(5, [colLength]);
1989
2002
  }
1990
- rowStore.$update(9, rowSizes());
1991
- colStore.$update(9, colSizes());
2003
+ rowStore.$update(9, rowLayout.$relayout(rowSizes(), rowStore.$getVisibleOffset()));
2004
+ colStore.$update(9, colLayout.$relayout(colSizes(), colStore.$getVisibleOffset()));
1992
2005
  });
1993
2006
  const rowCount = createMemo(() => stateVersion() && rowStore.$getItemsLength());
1994
2007
  const colCount = createMemo(() => stateVersion() && colStore.$getItemsLength());
@@ -2037,8 +2050,8 @@ var VGrid = (props) => {
2037
2050
  get viewportWidth() {
2038
2051
  return colStore.$getViewportSize();
2039
2052
  },
2040
- findRowIndex: rowStore.$findItemIndex,
2041
- findColIndex: colStore.$findItemIndex,
2053
+ findRowIndex: rowLayout.$findIndex,
2054
+ findColIndex: colLayout.$findIndex,
2042
2055
  getRowOffset: rowStore.$getItemOffset,
2043
2056
  getColOffset: colStore.$getItemOffset,
2044
2057
  getRowSize: rowStore.$getItemSize,
@@ -2111,6 +2124,7 @@ var VMasonry = (props) => {
2111
2124
  "cache",
2112
2125
  "onScroll",
2113
2126
  "onScrollEnd",
2127
+ "onResize",
2114
2128
  "style"
2115
2129
  ]);
2116
2130
  const layout = createMasonryLayout(props.data.length, props.lanes, props.gap, itemSize, cache);
@@ -2126,9 +2140,11 @@ var VMasonry = (props) => {
2126
2140
  store.$subscribe(8, () => {
2127
2141
  props.onScrollEnd?.();
2128
2142
  });
2143
+ store.$subscribe(2, () => {
2144
+ props.onResize?.();
2145
+ });
2129
2146
  createComputed(() => {
2130
- layout.$setOptions(props.lanes, props.gap);
2131
- store.$update(9, undefined);
2147
+ store.$update(9, layout.$relayout(props.lanes, props.gap, store.$getVisibleOffset()));
2132
2148
  });
2133
2149
  const range = createMemo((prev) => {
2134
2150
  stateVersion();