@ringcentral/juno 2.40.1 → 2.41.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.
Files changed (178) hide show
  1. package/components/Downshift/SuggestionList/SuggestionList.d.ts +3 -3
  2. package/components/Downshift/utils/useDownshift.d.ts +1 -1
  3. package/components/Virtuoso/index.d.ts +1 -1
  4. package/components/Virtuoso/index.js +1 -1
  5. package/components/Virtuoso/react-virtuoso/AATree.d.ts +1 -1
  6. package/components/Virtuoso/react-virtuoso/AATree.js +60 -48
  7. package/components/Virtuoso/react-virtuoso/TableVirtuoso.d.ts +5 -0
  8. package/components/Virtuoso/react-virtuoso/TableVirtuoso.js +217 -0
  9. package/components/Virtuoso/react-virtuoso/Virtuoso.d.ts +7696 -0
  10. package/components/Virtuoso/react-virtuoso/Virtuoso.js +317 -0
  11. package/components/Virtuoso/react-virtuoso/{Grid.d.ts → VirtuosoGrid.d.ts} +170 -72
  12. package/components/Virtuoso/react-virtuoso/VirtuosoGrid.js +199 -0
  13. package/components/Virtuoso/react-virtuoso/alignToBottomSystem.d.ts +119 -65
  14. package/components/Virtuoso/react-virtuoso/alignToBottomSystem.js +3 -3
  15. package/components/Virtuoso/react-virtuoso/comparators.d.ts +1 -1
  16. package/components/Virtuoso/react-virtuoso/comparators.js +1 -3
  17. package/components/Virtuoso/react-virtuoso/component-interfaces/TableVirtuoso.d.ts +194 -0
  18. package/components/Virtuoso/react-virtuoso/component-interfaces/TableVirtuoso.js +2 -0
  19. package/components/Virtuoso/react-virtuoso/component-interfaces/Virtuoso.d.ts +274 -0
  20. package/components/Virtuoso/react-virtuoso/component-interfaces/Virtuoso.js +2 -0
  21. package/components/Virtuoso/react-virtuoso/component-interfaces/VirtuosoGrid.d.ts +125 -0
  22. package/components/Virtuoso/react-virtuoso/component-interfaces/VirtuosoGrid.js +2 -0
  23. package/components/Virtuoso/react-virtuoso/domIOSystem.d.ts +3 -2
  24. package/components/Virtuoso/react-virtuoso/domIOSystem.js +5 -3
  25. package/components/Virtuoso/react-virtuoso/followOutputSystem.d.ts +80 -43
  26. package/components/Virtuoso/react-virtuoso/followOutputSystem.js +21 -19
  27. package/components/Virtuoso/react-virtuoso/gridSystem.d.ts +57 -31
  28. package/components/Virtuoso/react-virtuoso/gridSystem.js +173 -86
  29. package/components/Virtuoso/react-virtuoso/groupedListSystem.d.ts +76 -67
  30. package/components/Virtuoso/react-virtuoso/groupedListSystem.js +12 -12
  31. package/components/Virtuoso/react-virtuoso/hooks/useChangedChildSizes.d.ts +6 -3
  32. package/components/Virtuoso/react-virtuoso/hooks/useChangedChildSizes.js +36 -17
  33. package/components/Virtuoso/react-virtuoso/hooks/useIsomorphicLayoutEffect.d.ts +2 -2
  34. package/components/Virtuoso/react-virtuoso/hooks/useIsomorphicLayoutEffect.js +3 -2
  35. package/components/Virtuoso/react-virtuoso/hooks/useRcPortalWindowContext.d.ts +2 -0
  36. package/components/Virtuoso/react-virtuoso/hooks/useRcPortalWindowContext.js +5 -0
  37. package/components/Virtuoso/react-virtuoso/hooks/useScrollTop.d.ts +2 -3
  38. package/components/Virtuoso/react-virtuoso/hooks/useScrollTop.js +36 -51
  39. package/components/Virtuoso/react-virtuoso/hooks/useSize.d.ts +2 -3
  40. package/components/Virtuoso/react-virtuoso/hooks/useSize.js +13 -13
  41. package/components/Virtuoso/react-virtuoso/hooks/useWindowViewportRect.js +17 -15
  42. package/components/Virtuoso/react-virtuoso/index.d.ts +7 -1
  43. package/components/Virtuoso/react-virtuoso/index.js +8 -1
  44. package/components/Virtuoso/react-virtuoso/initialItemCountSystem.d.ts +304 -68
  45. package/components/Virtuoso/react-virtuoso/initialItemCountSystem.js +9 -31
  46. package/components/Virtuoso/react-virtuoso/initialScrollTopSystem.d.ts +127 -109
  47. package/components/Virtuoso/react-virtuoso/initialScrollTopSystem.js +7 -7
  48. package/components/Virtuoso/react-virtuoso/initialTopMostItemIndexSystem.d.ts +38 -22
  49. package/components/Virtuoso/react-virtuoso/initialTopMostItemIndexSystem.js +13 -20
  50. package/components/Virtuoso/react-virtuoso/interfaces.d.ts +150 -51
  51. package/components/Virtuoso/react-virtuoso/listStateSystem.d.ts +109 -59
  52. package/components/Virtuoso/react-virtuoso/listStateSystem.js +100 -52
  53. package/components/Virtuoso/react-virtuoso/listSystem.d.ts +1691 -693
  54. package/components/Virtuoso/react-virtuoso/listSystem.js +15 -16
  55. package/components/Virtuoso/react-virtuoso/loggerSystem.d.ts +1 -1
  56. package/components/Virtuoso/react-virtuoso/loggerSystem.js +2 -4
  57. package/components/Virtuoso/react-virtuoso/propsReadySystem.d.ts +1 -1
  58. package/components/Virtuoso/react-virtuoso/propsReadySystem.js +3 -4
  59. package/components/Virtuoso/react-virtuoso/react-urx/index.d.ts +110 -0
  60. package/components/Virtuoso/react-virtuoso/react-urx/index.js +200 -0
  61. package/components/Virtuoso/react-virtuoso/react-urx/package.json +5 -0
  62. package/components/Virtuoso/react-virtuoso/recalcSystem.d.ts +4 -0
  63. package/components/Virtuoso/react-virtuoso/recalcSystem.js +8 -0
  64. package/components/Virtuoso/react-virtuoso/scrollIntoViewSystem.d.ts +144 -78
  65. package/components/Virtuoso/react-virtuoso/scrollIntoViewSystem.js +33 -21
  66. package/components/Virtuoso/react-virtuoso/scrollSeekSystem.d.ts +12 -7
  67. package/components/Virtuoso/react-virtuoso/scrollSeekSystem.js +7 -10
  68. package/components/Virtuoso/react-virtuoso/scrollToIndexSystem.d.ts +19 -11
  69. package/components/Virtuoso/react-virtuoso/scrollToIndexSystem.js +11 -23
  70. package/components/Virtuoso/react-virtuoso/sizeRangeSystem.d.ts +7 -6
  71. package/components/Virtuoso/react-virtuoso/sizeRangeSystem.js +15 -27
  72. package/components/Virtuoso/react-virtuoso/sizeSystem.d.ts +20 -11
  73. package/components/Virtuoso/react-virtuoso/sizeSystem.js +182 -52
  74. package/components/Virtuoso/react-virtuoso/stateFlagsSystem.d.ts +8 -5
  75. package/components/Virtuoso/react-virtuoso/stateFlagsSystem.js +32 -23
  76. package/components/Virtuoso/react-virtuoso/stateLoadSystem.d.ts +318 -0
  77. package/components/Virtuoso/react-virtuoso/stateLoadSystem.js +41 -0
  78. package/components/Virtuoso/react-virtuoso/topItemCountSystem.d.ts +518 -467
  79. package/components/Virtuoso/react-virtuoso/topItemCountSystem.js +5 -5
  80. package/components/Virtuoso/react-virtuoso/totalListHeightSystem.d.ts +115 -63
  81. package/components/Virtuoso/react-virtuoso/totalListHeightSystem.js +6 -13
  82. package/components/Virtuoso/react-virtuoso/upwardScrollFixSystem.d.ts +139 -73
  83. package/components/Virtuoso/react-virtuoso/upwardScrollFixSystem.js +74 -31
  84. package/components/Virtuoso/react-virtuoso/urx/actions.d.ts +127 -0
  85. package/components/Virtuoso/react-virtuoso/urx/actions.js +98 -0
  86. package/components/Virtuoso/react-virtuoso/urx/constants.d.ts +8 -0
  87. package/components/Virtuoso/react-virtuoso/urx/constants.js +6 -0
  88. package/components/Virtuoso/react-virtuoso/urx/index.d.ts +6 -0
  89. package/components/Virtuoso/react-virtuoso/urx/index.js +9 -0
  90. package/components/Virtuoso/react-virtuoso/urx/package.json +5 -0
  91. package/components/Virtuoso/react-virtuoso/urx/pipe.d.ts +220 -0
  92. package/components/Virtuoso/react-virtuoso/urx/pipe.js +279 -0
  93. package/components/Virtuoso/react-virtuoso/urx/streams.d.ts +143 -0
  94. package/components/Virtuoso/react-virtuoso/urx/streams.js +227 -0
  95. package/components/Virtuoso/react-virtuoso/urx/system.d.ts +148 -0
  96. package/components/Virtuoso/react-virtuoso/urx/system.js +106 -0
  97. package/components/Virtuoso/react-virtuoso/urx/transformers.d.ts +71 -0
  98. package/components/Virtuoso/react-virtuoso/urx/transformers.js +106 -0
  99. package/components/Virtuoso/react-virtuoso/urx/utils.d.ts +57 -0
  100. package/components/Virtuoso/react-virtuoso/urx/utils.js +102 -0
  101. package/components/Virtuoso/react-virtuoso/utils/approximatelyEqual.d.ts +1 -0
  102. package/components/Virtuoso/react-virtuoso/utils/approximatelyEqual.js +6 -0
  103. package/components/Virtuoso/react-virtuoso/utils/context.d.ts +13 -0
  104. package/components/Virtuoso/react-virtuoso/utils/context.js +6 -0
  105. package/components/Virtuoso/react-virtuoso/utils/skipFrames.d.ts +1 -0
  106. package/components/Virtuoso/react-virtuoso/utils/skipFrames.js +11 -0
  107. package/components/Virtuoso/react-virtuoso/windowScrollerSystem.d.ts +6 -4
  108. package/components/Virtuoso/react-virtuoso/windowScrollerSystem.js +1 -1
  109. package/components/Virtuoso/utils/isOutOfRange.d.ts +1 -1
  110. package/components/Virtuoso/utils/useHighlightScroll.d.ts +2 -2
  111. package/es6/components/Virtuoso/index.js +1 -1
  112. package/es6/components/Virtuoso/react-virtuoso/AATree.js +60 -48
  113. package/es6/components/Virtuoso/react-virtuoso/{Table.js → TableVirtuoso.js} +73 -52
  114. package/es6/components/Virtuoso/react-virtuoso/{List.js → Virtuoso.js} +85 -161
  115. package/es6/components/Virtuoso/react-virtuoso/VirtuosoGrid.js +198 -0
  116. package/es6/components/Virtuoso/react-virtuoso/alignToBottomSystem.js +3 -3
  117. package/es6/components/Virtuoso/react-virtuoso/comparators.js +1 -3
  118. package/es6/components/Virtuoso/react-virtuoso/component-interfaces/TableVirtuoso.js +0 -0
  119. package/es6/components/Virtuoso/react-virtuoso/component-interfaces/Virtuoso.js +0 -0
  120. package/es6/components/Virtuoso/react-virtuoso/component-interfaces/VirtuosoGrid.js +0 -0
  121. package/es6/components/Virtuoso/react-virtuoso/domIOSystem.js +5 -3
  122. package/es6/components/Virtuoso/react-virtuoso/followOutputSystem.js +21 -19
  123. package/es6/components/Virtuoso/react-virtuoso/gridSystem.js +173 -87
  124. package/es6/components/Virtuoso/react-virtuoso/groupedListSystem.js +13 -13
  125. package/es6/components/Virtuoso/react-virtuoso/hooks/useChangedChildSizes.js +35 -16
  126. package/es6/components/Virtuoso/react-virtuoso/hooks/useIsomorphicLayoutEffect.js +2 -2
  127. package/es6/components/Virtuoso/react-virtuoso/hooks/useRcPortalWindowContext.js +2 -0
  128. package/es6/components/Virtuoso/react-virtuoso/hooks/useScrollTop.js +35 -50
  129. package/es6/components/Virtuoso/react-virtuoso/hooks/useSize.js +11 -12
  130. package/es6/components/Virtuoso/react-virtuoso/hooks/useWindowViewportRect.js +15 -14
  131. package/es6/components/Virtuoso/react-virtuoso/index.js +4 -1
  132. package/es6/components/Virtuoso/react-virtuoso/initialItemCountSystem.js +11 -33
  133. package/es6/components/Virtuoso/react-virtuoso/initialScrollTopSystem.js +7 -7
  134. package/es6/components/Virtuoso/react-virtuoso/initialTopMostItemIndexSystem.js +13 -20
  135. package/es6/components/Virtuoso/react-virtuoso/listStateSystem.js +101 -54
  136. package/es6/components/Virtuoso/react-virtuoso/listSystem.js +15 -16
  137. package/es6/components/Virtuoso/react-virtuoso/loggerSystem.js +2 -4
  138. package/es6/components/Virtuoso/react-virtuoso/propsReadySystem.js +3 -4
  139. package/es6/components/Virtuoso/react-virtuoso/react-urx/index.js +197 -0
  140. package/es6/components/Virtuoso/react-virtuoso/recalcSystem.js +5 -0
  141. package/es6/components/Virtuoso/react-virtuoso/scrollIntoViewSystem.js +34 -22
  142. package/es6/components/Virtuoso/react-virtuoso/scrollSeekSystem.js +7 -10
  143. package/es6/components/Virtuoso/react-virtuoso/scrollToIndexSystem.js +11 -23
  144. package/es6/components/Virtuoso/react-virtuoso/sizeRangeSystem.js +16 -28
  145. package/es6/components/Virtuoso/react-virtuoso/sizeSystem.js +180 -53
  146. package/es6/components/Virtuoso/react-virtuoso/stateFlagsSystem.js +32 -23
  147. package/es6/components/Virtuoso/react-virtuoso/stateLoadSystem.js +39 -0
  148. package/es6/components/Virtuoso/react-virtuoso/topItemCountSystem.js +5 -5
  149. package/es6/components/Virtuoso/react-virtuoso/totalListHeightSystem.js +6 -13
  150. package/es6/components/Virtuoso/react-virtuoso/upwardScrollFixSystem.js +75 -32
  151. package/es6/components/Virtuoso/react-virtuoso/urx/actions.js +90 -0
  152. package/es6/components/Virtuoso/react-virtuoso/urx/constants.js +4 -0
  153. package/es6/components/Virtuoso/react-virtuoso/urx/index.js +6 -0
  154. package/es6/components/Virtuoso/react-virtuoso/urx/pipe.js +266 -0
  155. package/es6/components/Virtuoso/react-virtuoso/urx/streams.js +220 -0
  156. package/es6/components/Virtuoso/react-virtuoso/urx/system.js +102 -0
  157. package/es6/components/Virtuoso/react-virtuoso/urx/transformers.js +101 -0
  158. package/es6/components/Virtuoso/react-virtuoso/urx/utils.js +88 -0
  159. package/es6/components/Virtuoso/react-virtuoso/utils/approximatelyEqual.js +3 -0
  160. package/es6/components/Virtuoso/react-virtuoso/utils/context.js +3 -0
  161. package/es6/components/Virtuoso/react-virtuoso/utils/skipFrames.js +8 -0
  162. package/es6/components/Virtuoso/react-virtuoso/windowScrollerSystem.js +1 -1
  163. package/package.json +2 -2
  164. package/components/Virtuoso/Virtuoso.d.ts +0 -1
  165. package/components/Virtuoso/Virtuoso.js +0 -4
  166. package/components/Virtuoso/react-virtuoso/Grid.js +0 -168
  167. package/components/Virtuoso/react-virtuoso/List.d.ts +0 -6749
  168. package/components/Virtuoso/react-virtuoso/List.js +0 -393
  169. package/components/Virtuoso/react-virtuoso/Table.d.ts +0 -6515
  170. package/components/Virtuoso/react-virtuoso/Table.js +0 -196
  171. package/components/Virtuoso/react-virtuoso/components.d.ts +0 -505
  172. package/components/Virtuoso/react-virtuoso/components.js +0 -9
  173. package/components/Virtuoso/react-virtuoso/utils/conditionalFlushSync.d.ts +0 -1
  174. package/components/Virtuoso/react-virtuoso/utils/conditionalFlushSync.js +0 -11
  175. package/es6/components/Virtuoso/Virtuoso.js +0 -1
  176. package/es6/components/Virtuoso/react-virtuoso/Grid.js +0 -166
  177. package/es6/components/Virtuoso/react-virtuoso/components.js +0 -7
  178. package/es6/components/Virtuoso/react-virtuoso/utils/conditionalFlushSync.js +0 -8
@@ -1,9 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  var tslib_1 = require("tslib");
4
- var u = tslib_1.__importStar(require("@virtuoso.dev/urx"));
4
+ var u = tslib_1.__importStar(require("./urx"));
5
5
  var AATree_1 = require("./AATree");
6
- var comparators_1 = require("./comparators");
7
6
  var groupedListSystem_1 = require("./groupedListSystem");
8
7
  var initialTopMostItemIndexSystem_1 = require("./initialTopMostItemIndexSystem");
9
8
  var propsReadySystem_1 = require("./propsReadySystem");
@@ -11,6 +10,8 @@ var scrollToIndexSystem_1 = require("./scrollToIndexSystem");
11
10
  var sizeRangeSystem_1 = require("./sizeRangeSystem");
12
11
  var sizeSystem_1 = require("./sizeSystem");
13
12
  var stateFlagsSystem_1 = require("./stateFlagsSystem");
13
+ var comparators_1 = require("./comparators");
14
+ var recalcSystem_1 = require("./recalcSystem");
14
15
  function probeItemSet(index, sizes, data) {
15
16
  if (sizeSystem_1.hasGroups(sizes)) {
16
17
  var itemIndex = sizeSystem_1.originalIndexFromItemIndex(index, sizes);
@@ -31,6 +32,7 @@ var EMPTY_LIST_STATE = {
31
32
  bottom: 0,
32
33
  topListHeight: 0,
33
34
  totalCount: 0,
35
+ firstItemIndex: 0,
34
36
  };
35
37
  function transposeItems(items, sizes, firstItemIndex) {
36
38
  var e_1, _a;
@@ -44,7 +46,7 @@ function transposeItems(items, sizes, firstItemIndex) {
44
46
  var endIndex = items[items.length - 1].index;
45
47
  var transposedItems = [];
46
48
  var groupRanges = AATree_1.rangesWithin(sizes.groupOffsetTree, startIndex, endIndex);
47
- var currentRange;
49
+ var currentRange = undefined;
48
50
  var currentGroupIndex = 0;
49
51
  try {
50
52
  for (var items_1 = tslib_1.__values(items), items_1_1 = items_1.next(); !items_1_1.done; items_1_1 = items_1.next()) {
@@ -78,7 +80,7 @@ function transposeItems(items, sizes, firstItemIndex) {
78
80
  }
79
81
  return transposedItems;
80
82
  }
81
- function buildListState(items, topItems, totalCount, sizes, firstItemIndex) {
83
+ function buildListState(items, topItems, totalCount, gap, sizes, firstItemIndex) {
82
84
  var lastSize = sizes.lastSize, lastOffset = sizes.lastOffset, lastIndex = sizes.lastIndex;
83
85
  var offsetTop = 0;
84
86
  var bottom = 0;
@@ -87,7 +89,8 @@ function buildListState(items, topItems, totalCount, sizes, firstItemIndex) {
87
89
  var lastItem = items[items.length - 1];
88
90
  bottom = lastItem.offset + lastItem.size;
89
91
  }
90
- var total = lastOffset + (totalCount - lastIndex) * lastSize;
92
+ var itemCount = totalCount - lastIndex;
93
+ var total = lastOffset + itemCount * lastSize + (itemCount - 1) * gap;
91
94
  var top = offsetTop;
92
95
  var offsetBottom = total - bottom;
93
96
  return {
@@ -99,27 +102,78 @@ function buildListState(items, topItems, totalCount, sizes, firstItemIndex) {
99
102
  top: top,
100
103
  bottom: bottom,
101
104
  totalCount: totalCount,
105
+ firstItemIndex: firstItemIndex,
102
106
  };
103
107
  }
104
108
  exports.buildListState = buildListState;
109
+ function buildListStateFromItemCount(itemCount, initialTopMostItemIndex, sizes, firstItemIndex, gap, data) {
110
+ var e_2, _a;
111
+ var includedGroupsCount = 0;
112
+ if (sizes.groupIndices.length > 0) {
113
+ try {
114
+ for (var _b = tslib_1.__values(sizes.groupIndices), _c = _b.next(); !_c.done; _c = _b.next()) {
115
+ var index = _c.value;
116
+ if (index - includedGroupsCount >= itemCount) {
117
+ break;
118
+ }
119
+ includedGroupsCount++;
120
+ }
121
+ }
122
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
123
+ finally {
124
+ try {
125
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
126
+ }
127
+ finally { if (e_2) throw e_2.error; }
128
+ }
129
+ }
130
+ var adjustedCount = itemCount + includedGroupsCount;
131
+ var initialTopMostItemIndexNumber = initialTopMostItemIndexSystem_1.getInitialTopMostItemIndexNumber(initialTopMostItemIndex, adjustedCount);
132
+ var items = Array.from({ length: adjustedCount }).map(function (_, index) { return ({
133
+ index: index + initialTopMostItemIndexNumber,
134
+ size: 0,
135
+ offset: 0,
136
+ data: data[index + initialTopMostItemIndexNumber],
137
+ }); });
138
+ return buildListState(items, [], adjustedCount, gap, sizes, firstItemIndex);
139
+ }
140
+ exports.buildListStateFromItemCount = buildListStateFromItemCount;
105
141
  exports.listStateSystem = u.system(function (_a) {
106
- var _b = tslib_1.__read(_a, 7), _c = _b[0], sizes = _c.sizes, totalCount = _c.totalCount, data = _c.data, firstItemIndex = _c.firstItemIndex, groupedListSystem = _b[1], _d = _b[2], visibleRange = _d.visibleRange, listBoundary = _d.listBoundary, rangeTopListHeight = _d.topListHeight, _e = _b[3], scrolledToInitialItem = _e.scrolledToInitialItem, initialTopMostItemIndex = _e.initialTopMostItemIndex, topListHeight = _b[4].topListHeight, stateFlags = _b[5], didMount = _b[6].didMount;
142
+ var _b = tslib_1.__read(_a, 8), _c = _b[0], sizes = _c.sizes, totalCount = _c.totalCount, data = _c.data, firstItemIndex = _c.firstItemIndex, gap = _c.gap, groupedListSystem = _b[1], _d = _b[2], visibleRange = _d.visibleRange, listBoundary = _d.listBoundary, rangeTopListHeight = _d.topListHeight, _e = _b[3], scrolledToInitialItem = _e.scrolledToInitialItem, initialTopMostItemIndex = _e.initialTopMostItemIndex, topListHeight = _b[4].topListHeight, stateFlags = _b[5], didMount = _b[6].didMount, recalcInProgress = _b[7].recalcInProgress;
107
143
  var topItemsIndexes = u.statefulStream([]);
144
+ var initialItemCount = u.statefulStream(0);
108
145
  var itemsRendered = u.stream();
109
146
  u.connect(groupedListSystem.topItemsIndexes, topItemsIndexes);
110
- var listState = u.statefulStreamFromEmitter(u.pipe(u.combineLatest(didMount, u.duc(visibleRange), u.duc(totalCount), u.duc(sizes), u.duc(initialTopMostItemIndex), scrolledToInitialItem, u.duc(topItemsIndexes), u.duc(firstItemIndex), data), u.filter(function (_a) {
111
- var _b = tslib_1.__read(_a, 1), mount = _b[0];
112
- return mount;
147
+ var listState = u.statefulStreamFromEmitter(u.pipe(u.combineLatest(didMount, recalcInProgress, u.duc(visibleRange, comparators_1.tupleComparator), u.duc(totalCount), u.duc(sizes), u.duc(initialTopMostItemIndex), scrolledToInitialItem, u.duc(topItemsIndexes), u.duc(firstItemIndex), u.duc(gap), data), u.filter(function (_a) {
148
+ var _b = tslib_1.__read(_a, 11), mount = _b[0], recalcInProgress = _b[1], totalCount = _b[3], data = _b[10];
149
+ // When data length changes, it is synced to totalCount, both of which trigger a recalc separately.
150
+ // Recalc should be skipped then, as the calculation expects both data and totalCount to be in sync.
151
+ var dataChangeInProgress = data && data.length !== totalCount;
152
+ return mount && !recalcInProgress && !dataChangeInProgress;
113
153
  }), u.map(function (_a) {
114
- var e_2, _b;
115
- var _c = tslib_1.__read(_a, 9), _d = tslib_1.__read(_c[1], 2), startOffset = _d[0], endOffset = _d[1], totalCount = _c[2], sizes = _c[3], initialTopMostItemIndex = _c[4], scrolledToInitialItem = _c[5], topItemsIndexes = _c[6], firstItemIndex = _c[7], data = _c[8];
154
+ var e_3, _b;
155
+ var _c = tslib_1.__read(_a, 11), _d = tslib_1.__read(_c[2], 2), startOffset = _d[0], endOffset = _d[1], totalCount = _c[3], sizes = _c[4], initialTopMostItemIndex = _c[5], scrolledToInitialItem = _c[6], topItemsIndexes = _c[7], firstItemIndex = _c[8], gap = _c[9], data = _c[10];
116
156
  var sizesValue = sizes;
117
157
  var sizeTree = sizesValue.sizeTree, offsetTree = sizesValue.offsetTree;
118
- if (totalCount === 0 || (startOffset === 0 && endOffset === 0)) {
119
- return EMPTY_LIST_STATE;
158
+ var initialItemCountValue = u.getValue(initialItemCount);
159
+ if (totalCount === 0) {
160
+ return tslib_1.__assign(tslib_1.__assign({}, EMPTY_LIST_STATE), { totalCount: totalCount });
161
+ }
162
+ // no container measruements yet
163
+ if (startOffset === 0 && endOffset === 0) {
164
+ if (initialItemCountValue === 0) {
165
+ return tslib_1.__assign(tslib_1.__assign({}, EMPTY_LIST_STATE), { totalCount: totalCount });
166
+ }
167
+ else {
168
+ return buildListStateFromItemCount(initialItemCountValue, initialTopMostItemIndex, sizes, firstItemIndex, gap, data || []);
169
+ }
120
170
  }
121
171
  if (AATree_1.empty(sizeTree)) {
122
- return buildListState(probeItemSet(initialTopMostItemIndexSystem_1.getInitialTopMostItemIndexNumber(initialTopMostItemIndex, totalCount), sizesValue, data), [], totalCount, sizesValue, firstItemIndex);
172
+ if (initialItemCountValue > 0) {
173
+ return null;
174
+ }
175
+ var state = buildListState(probeItemSet(initialTopMostItemIndexSystem_1.getInitialTopMostItemIndexNumber(initialTopMostItemIndex, totalCount), sizesValue, data), [], totalCount, gap, sizesValue, firstItemIndex);
176
+ return state;
123
177
  }
124
178
  var topItems = [];
125
179
  if (topItemsIndexes.length > 0) {
@@ -133,42 +187,35 @@ exports.listStateSystem = u.system(function (_a) {
133
187
  var rangeStartIndex = Math.max(range.start, startIndex);
134
188
  var rangeEndIndex = Math.min(range.end, endIndex);
135
189
  for (var i = rangeStartIndex; i <= rangeEndIndex; i++) {
136
- topItems.push({
137
- index: i,
138
- size: size,
139
- offset: offset,
140
- data: data && data[i],
141
- });
190
+ topItems.push({ index: i, size: size, offset: offset, data: data && data[i] });
142
191
  offset += size;
143
192
  }
144
193
  }
145
194
  }
146
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
195
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
147
196
  finally {
148
197
  try {
149
198
  if (_f && !_f.done && (_b = _e.return)) _b.call(_e);
150
199
  }
151
- finally { if (e_2) throw e_2.error; }
200
+ finally { if (e_3) throw e_3.error; }
152
201
  }
153
202
  }
154
203
  // If the list hasn't scrolled to the initial item because the initial item was set,
155
204
  // render empty list.
156
205
  //
157
- // This is a condition to be evaluated past the probe check, do not merge
206
+ // This is a condition to be evaluated after the probe check cycle, do not merge
158
207
  // with the totalCount check above
159
208
  if (!scrolledToInitialItem) {
160
- return buildListState([], topItems, totalCount, sizesValue, firstItemIndex);
209
+ return buildListState([], topItems, totalCount, gap, sizesValue, firstItemIndex);
161
210
  }
162
- var minStartIndex = topItemsIndexes.length > 0
163
- ? topItemsIndexes[topItemsIndexes.length - 1] + 1
164
- : 0;
211
+ var minStartIndex = topItemsIndexes.length > 0 ? topItemsIndexes[topItemsIndexes.length - 1] + 1 : 0;
165
212
  var offsetPointRanges = sizeSystem_1.rangesWithinOffsets(offsetTree, startOffset, endOffset, minStartIndex);
166
213
  if (offsetPointRanges.length === 0) {
167
214
  return null;
168
215
  }
169
216
  var maxIndex = totalCount - 1;
170
217
  var items = u.tap([], function (result) {
171
- var e_3, _a;
218
+ var e_4, _a;
172
219
  try {
173
220
  for (var offsetPointRanges_1 = tslib_1.__values(offsetPointRanges), offsetPointRanges_1_1 = offsetPointRanges_1.next(); !offsetPointRanges_1_1.done; offsetPointRanges_1_1 = offsetPointRanges_1.next()) {
174
221
  var range = offsetPointRanges_1_1.value;
@@ -177,8 +224,9 @@ exports.listStateSystem = u.system(function (_a) {
177
224
  var rangeStartIndex = range.start;
178
225
  var size = point.size;
179
226
  if (point.offset < startOffset) {
180
- rangeStartIndex += Math.floor((startOffset - point.offset) / size);
181
- offset += (rangeStartIndex - range.start) * size;
227
+ rangeStartIndex += Math.floor((startOffset - point.offset + gap) / (size + gap));
228
+ var itemCount = rangeStartIndex - range.start;
229
+ offset += itemCount * size + itemCount * gap;
182
230
  }
183
231
  if (rangeStartIndex < minStartIndex) {
184
232
  offset += (minStartIndex - rangeStartIndex) * size;
@@ -189,28 +237,25 @@ exports.listStateSystem = u.system(function (_a) {
189
237
  if (offset >= endOffset) {
190
238
  break;
191
239
  }
192
- result.push({
193
- index: i,
194
- size: size,
195
- offset: offset,
196
- data: data && data[i],
197
- });
198
- offset += size;
240
+ result.push({ index: i, size: size, offset: offset, data: data && data[i] });
241
+ offset += size + gap;
199
242
  }
200
243
  }
201
244
  }
202
- catch (e_3_1) { e_3 = { error: e_3_1 }; }
245
+ catch (e_4_1) { e_4 = { error: e_4_1 }; }
203
246
  finally {
204
247
  try {
205
248
  if (offsetPointRanges_1_1 && !offsetPointRanges_1_1.done && (_a = offsetPointRanges_1.return)) _a.call(offsetPointRanges_1);
206
249
  }
207
- finally { if (e_3) throw e_3.error; }
250
+ finally { if (e_4) throw e_4.error; }
208
251
  }
209
252
  });
210
- return buildListState(items, topItems, totalCount, sizesValue, firstItemIndex);
211
- }), u.filter(function (value) { return value !== null; }), u.distinctUntilChanged()), EMPTY_LIST_STATE);
212
- u.connect(u.pipe(data, u.filter(function (data) { return data !== undefined; }), u.map(function (data) { return data.length; })), totalCount);
213
- u.connect(u.pipe(listState, u.map(u.prop('topListHeight'))), topListHeight);
253
+ return buildListState(items, topItems, totalCount, gap, sizesValue, firstItemIndex);
254
+ }),
255
+ //@ts-expect-error filter needs to be fixed
256
+ u.filter(function (value) { return value !== null; }), u.distinctUntilChanged()), EMPTY_LIST_STATE);
257
+ u.connect(u.pipe(data, u.filter(u.isDefined), u.map(function (data) { return data === null || data === void 0 ? void 0 : data.length; })), totalCount);
258
+ u.connect(u.pipe(listState, u.map(function (value) { return value.topListHeight; })), topListHeight);
214
259
  u.connect(topListHeight, rangeTopListHeight);
215
260
  u.connect(u.pipe(listState, u.map(function (state) { return [state.top, state.bottom]; })), listBoundary);
216
261
  u.connect(u.pipe(listState, u.map(function (state) { return state.items; })), itemsRendered);
@@ -239,15 +284,18 @@ exports.listStateSystem = u.system(function (_a) {
239
284
  return items.length > 0;
240
285
  }), u.map(function (_a) {
241
286
  var items = _a.items;
287
+ var startIndex = 0;
288
+ var endIndex = items.length - 1;
289
+ while (items[startIndex].type === 'group' && startIndex < endIndex) {
290
+ startIndex++;
291
+ }
292
+ while (items[endIndex].type === 'group' && endIndex > startIndex) {
293
+ endIndex--;
294
+ }
242
295
  return {
243
- startIndex: items[0].index,
244
- endIndex: items[items.length - 1].index,
296
+ startIndex: items[startIndex].index,
297
+ endIndex: items[endIndex].index,
245
298
  };
246
299
  }), u.distinctUntilChanged(comparators_1.rangeComparator)));
247
- return tslib_1.__assign({ listState: listState,
248
- topItemsIndexes: topItemsIndexes,
249
- endReached: endReached,
250
- startReached: startReached,
251
- rangeChanged: rangeChanged,
252
- itemsRendered: itemsRendered }, stateFlags);
253
- }, u.tup(sizeSystem_1.sizeSystem, groupedListSystem_1.groupedListSystem, sizeRangeSystem_1.sizeRangeSystem, initialTopMostItemIndexSystem_1.initialTopMostItemIndexSystem, scrollToIndexSystem_1.scrollToIndexSystem, stateFlagsSystem_1.stateFlagsSystem, propsReadySystem_1.propsReadySystem), { singleton: true });
300
+ return tslib_1.__assign({ listState: listState, topItemsIndexes: topItemsIndexes, endReached: endReached, startReached: startReached, rangeChanged: rangeChanged, itemsRendered: itemsRendered, initialItemCount: initialItemCount }, stateFlags);
301
+ }, u.tup(sizeSystem_1.sizeSystem, groupedListSystem_1.groupedListSystem, sizeRangeSystem_1.sizeRangeSystem, initialTopMostItemIndexSystem_1.initialTopMostItemIndexSystem, scrollToIndexSystem_1.scrollToIndexSystem, stateFlagsSystem_1.stateFlagsSystem, propsReadySystem_1.propsReadySystem, recalcSystem_1.recalcSystem), { singleton: true });