@shopify/flash-list 2.0.0-alpha.9 → 2.0.0-rc.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.
Files changed (209) hide show
  1. package/README.md +37 -97
  2. package/android/src/main/kotlin/com/shopify/reactnative/flash_list/BlankAreaEvent.kt +2 -2
  3. package/dist/AnimatedFlashList.d.ts.map +1 -1
  4. package/dist/AnimatedFlashList.js +3 -3
  5. package/dist/AnimatedFlashList.js.map +1 -1
  6. package/dist/FlashList.d.ts +9 -0
  7. package/dist/FlashList.d.ts.map +1 -1
  8. package/dist/FlashList.js +20 -0
  9. package/dist/FlashList.js.map +1 -1
  10. package/dist/FlashListProps.d.ts +30 -10
  11. package/dist/FlashListProps.d.ts.map +1 -1
  12. package/dist/FlashListProps.js.map +1 -1
  13. package/dist/FlashListRef.d.ts +305 -0
  14. package/dist/FlashListRef.d.ts.map +1 -0
  15. package/dist/FlashListRef.js +3 -0
  16. package/dist/FlashListRef.js.map +1 -0
  17. package/dist/MasonryFlashList.js.map +1 -1
  18. package/dist/__tests__/RecyclerView.test.js +72 -28
  19. package/dist/__tests__/RecyclerView.test.js.map +1 -1
  20. package/dist/__tests__/RenderStackManager.test.d.ts +2 -0
  21. package/dist/__tests__/RenderStackManager.test.d.ts.map +1 -0
  22. package/dist/__tests__/RenderStackManager.test.js +485 -0
  23. package/dist/__tests__/RenderStackManager.test.js.map +1 -0
  24. package/dist/__tests__/helpers/createLayoutManager.d.ts.map +1 -1
  25. package/dist/__tests__/helpers/createLayoutManager.js +3 -4
  26. package/dist/__tests__/helpers/createLayoutManager.js.map +1 -1
  27. package/dist/__tests__/useUnmountAwareCallbacks.test.js +1 -1
  28. package/dist/__tests__/useUnmountAwareCallbacks.test.js.map +1 -1
  29. package/dist/benchmark/useBenchmark.js +0 -25
  30. package/dist/benchmark/useBenchmark.js.map +1 -1
  31. package/dist/benchmark/useFlatListBenchmark.js +8 -7
  32. package/dist/benchmark/useFlatListBenchmark.js.map +1 -1
  33. package/dist/index.d.ts +2 -1
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +2 -2
  36. package/dist/index.js.map +1 -1
  37. package/dist/native/config/PlatformHelper.android.d.ts +1 -0
  38. package/dist/native/config/PlatformHelper.android.d.ts.map +1 -1
  39. package/dist/native/config/PlatformHelper.android.js +1 -0
  40. package/dist/native/config/PlatformHelper.android.js.map +1 -1
  41. package/dist/native/config/PlatformHelper.d.ts +1 -0
  42. package/dist/native/config/PlatformHelper.d.ts.map +1 -1
  43. package/dist/native/config/PlatformHelper.ios.d.ts +1 -0
  44. package/dist/native/config/PlatformHelper.ios.d.ts.map +1 -1
  45. package/dist/native/config/PlatformHelper.ios.js +1 -0
  46. package/dist/native/config/PlatformHelper.ios.js.map +1 -1
  47. package/dist/native/config/PlatformHelper.js +1 -0
  48. package/dist/native/config/PlatformHelper.js.map +1 -1
  49. package/dist/native/config/PlatformHelper.web.d.ts +1 -0
  50. package/dist/native/config/PlatformHelper.web.d.ts.map +1 -1
  51. package/dist/native/config/PlatformHelper.web.js +1 -0
  52. package/dist/native/config/PlatformHelper.web.js.map +1 -1
  53. package/dist/recyclerview/RecyclerView.d.ts +2 -1
  54. package/dist/recyclerview/RecyclerView.d.ts.map +1 -1
  55. package/dist/recyclerview/RecyclerView.js +104 -57
  56. package/dist/recyclerview/RecyclerView.js.map +1 -1
  57. package/dist/recyclerview/RecyclerViewContextProvider.d.ts +41 -6
  58. package/dist/recyclerview/RecyclerViewContextProvider.d.ts.map +1 -1
  59. package/dist/recyclerview/RecyclerViewContextProvider.js +4 -0
  60. package/dist/recyclerview/RecyclerViewContextProvider.js.map +1 -1
  61. package/dist/recyclerview/RecyclerViewManager.d.ts +24 -7
  62. package/dist/recyclerview/RecyclerViewManager.d.ts.map +1 -1
  63. package/dist/recyclerview/RecyclerViewManager.js +119 -113
  64. package/dist/recyclerview/RecyclerViewManager.js.map +1 -1
  65. package/dist/recyclerview/RenderStackManager.d.ts +86 -0
  66. package/dist/recyclerview/RenderStackManager.d.ts.map +1 -0
  67. package/dist/recyclerview/RenderStackManager.js +343 -0
  68. package/dist/recyclerview/RenderStackManager.js.map +1 -0
  69. package/dist/recyclerview/ViewHolder.d.ts.map +1 -1
  70. package/dist/recyclerview/ViewHolder.js +5 -3
  71. package/dist/recyclerview/ViewHolder.js.map +1 -1
  72. package/dist/recyclerview/ViewHolderCollection.d.ts +9 -3
  73. package/dist/recyclerview/ViewHolderCollection.d.ts.map +1 -1
  74. package/dist/recyclerview/ViewHolderCollection.js +26 -9
  75. package/dist/recyclerview/ViewHolderCollection.js.map +1 -1
  76. package/dist/recyclerview/components/ScrollAnchor.d.ts +2 -2
  77. package/dist/recyclerview/components/ScrollAnchor.d.ts.map +1 -1
  78. package/dist/recyclerview/components/ScrollAnchor.js +9 -5
  79. package/dist/recyclerview/components/ScrollAnchor.js.map +1 -1
  80. package/dist/recyclerview/components/StickyHeaders.d.ts +1 -1
  81. package/dist/recyclerview/components/StickyHeaders.d.ts.map +1 -1
  82. package/dist/recyclerview/components/StickyHeaders.js +40 -33
  83. package/dist/recyclerview/components/StickyHeaders.js.map +1 -1
  84. package/dist/recyclerview/helpers/EngagedIndicesTracker.d.ts +45 -1
  85. package/dist/recyclerview/helpers/EngagedIndicesTracker.d.ts.map +1 -1
  86. package/dist/recyclerview/helpers/EngagedIndicesTracker.js +77 -20
  87. package/dist/recyclerview/helpers/EngagedIndicesTracker.js.map +1 -1
  88. package/dist/recyclerview/helpers/RenderTimeTracker.d.ts +11 -0
  89. package/dist/recyclerview/helpers/RenderTimeTracker.d.ts.map +1 -0
  90. package/dist/recyclerview/helpers/RenderTimeTracker.js +42 -0
  91. package/dist/recyclerview/helpers/RenderTimeTracker.js.map +1 -0
  92. package/dist/recyclerview/helpers/VelocityTracker.d.ts +29 -0
  93. package/dist/recyclerview/helpers/VelocityTracker.d.ts.map +1 -0
  94. package/dist/recyclerview/helpers/VelocityTracker.js +70 -0
  95. package/dist/recyclerview/helpers/VelocityTracker.js.map +1 -0
  96. package/dist/recyclerview/hooks/useBoundDetection.d.ts +1 -2
  97. package/dist/recyclerview/hooks/useBoundDetection.d.ts.map +1 -1
  98. package/dist/recyclerview/hooks/useBoundDetection.js +56 -22
  99. package/dist/recyclerview/hooks/useBoundDetection.js.map +1 -1
  100. package/dist/recyclerview/hooks/useLayoutState.d.ts +3 -1
  101. package/dist/recyclerview/hooks/useLayoutState.d.ts.map +1 -1
  102. package/dist/recyclerview/hooks/useLayoutState.js +5 -3
  103. package/dist/recyclerview/hooks/useLayoutState.js.map +1 -1
  104. package/dist/recyclerview/hooks/useMappingHelper.d.ts +1 -1
  105. package/dist/recyclerview/hooks/useMappingHelper.d.ts.map +1 -1
  106. package/dist/recyclerview/hooks/useMappingHelper.js +1 -1
  107. package/dist/recyclerview/hooks/useMappingHelper.js.map +1 -1
  108. package/dist/recyclerview/hooks/useOnLoad.d.ts.map +1 -1
  109. package/dist/recyclerview/hooks/useOnLoad.js +4 -6
  110. package/dist/recyclerview/hooks/useOnLoad.js.map +1 -1
  111. package/dist/recyclerview/hooks/useRecyclerViewController.d.ts +5 -49
  112. package/dist/recyclerview/hooks/useRecyclerViewController.d.ts.map +1 -1
  113. package/dist/recyclerview/hooks/useRecyclerViewController.js +315 -204
  114. package/dist/recyclerview/hooks/useRecyclerViewController.js.map +1 -1
  115. package/dist/recyclerview/hooks/useRecyclerViewManager.d.ts +2 -0
  116. package/dist/recyclerview/hooks/useRecyclerViewManager.d.ts.map +1 -1
  117. package/dist/recyclerview/hooks/useRecyclerViewManager.js +11 -1
  118. package/dist/recyclerview/hooks/useRecyclerViewManager.js.map +1 -1
  119. package/dist/recyclerview/hooks/useRecyclingState.d.ts +4 -2
  120. package/dist/recyclerview/hooks/useRecyclingState.d.ts.map +1 -1
  121. package/dist/recyclerview/hooks/useRecyclingState.js +2 -2
  122. package/dist/recyclerview/hooks/useRecyclingState.js.map +1 -1
  123. package/dist/recyclerview/hooks/useSecondaryProps.js +1 -1
  124. package/dist/recyclerview/hooks/useUnmountAwareCallbacks.d.ts +10 -3
  125. package/dist/recyclerview/hooks/useUnmountAwareCallbacks.d.ts.map +1 -1
  126. package/dist/recyclerview/hooks/useUnmountAwareCallbacks.js +33 -4
  127. package/dist/recyclerview/hooks/useUnmountAwareCallbacks.js.map +1 -1
  128. package/dist/recyclerview/hooks/useUnmountFlag.d.ts.map +1 -1
  129. package/dist/recyclerview/hooks/useUnmountFlag.js +1 -0
  130. package/dist/recyclerview/hooks/useUnmountFlag.js.map +1 -1
  131. package/dist/recyclerview/layout-managers/GridLayoutManager.d.ts +18 -4
  132. package/dist/recyclerview/layout-managers/GridLayoutManager.d.ts.map +1 -1
  133. package/dist/recyclerview/layout-managers/GridLayoutManager.js +60 -21
  134. package/dist/recyclerview/layout-managers/GridLayoutManager.js.map +1 -1
  135. package/dist/recyclerview/layout-managers/LayoutManager.d.ts +35 -21
  136. package/dist/recyclerview/layout-managers/LayoutManager.d.ts.map +1 -1
  137. package/dist/recyclerview/layout-managers/LayoutManager.js +92 -28
  138. package/dist/recyclerview/layout-managers/LayoutManager.js.map +1 -1
  139. package/dist/recyclerview/layout-managers/MasonryLayoutManager.d.ts +9 -1
  140. package/dist/recyclerview/layout-managers/MasonryLayoutManager.d.ts.map +1 -1
  141. package/dist/recyclerview/layout-managers/MasonryLayoutManager.js +28 -12
  142. package/dist/recyclerview/layout-managers/MasonryLayoutManager.js.map +1 -1
  143. package/dist/recyclerview/utils/measureLayout.web.d.ts.map +1 -1
  144. package/dist/recyclerview/utils/measureLayout.web.js +1 -3
  145. package/dist/recyclerview/utils/measureLayout.web.js.map +1 -1
  146. package/dist/tsconfig.tsbuildinfo +1 -1
  147. package/dist/viewability/ViewToken.d.ts +2 -2
  148. package/dist/viewability/ViewToken.d.ts.map +1 -1
  149. package/dist/viewability/ViewabilityHelper.js +1 -1
  150. package/dist/viewability/ViewabilityHelper.js.map +1 -1
  151. package/dist/viewability/ViewabilityManager.d.ts.map +1 -1
  152. package/dist/viewability/ViewabilityManager.js +11 -5
  153. package/dist/viewability/ViewabilityManager.js.map +1 -1
  154. package/jestSetup.js +30 -11
  155. package/package.json +2 -1
  156. package/src/AnimatedFlashList.ts +3 -2
  157. package/src/FlashList.tsx +24 -0
  158. package/src/FlashListProps.ts +41 -10
  159. package/src/FlashListRef.ts +320 -0
  160. package/src/MasonryFlashList.tsx +2 -2
  161. package/src/__tests__/RecyclerView.test.tsx +106 -31
  162. package/src/__tests__/RenderStackManager.test.ts +574 -0
  163. package/src/__tests__/helpers/createLayoutManager.ts +2 -3
  164. package/src/__tests__/useUnmountAwareCallbacks.test.tsx +12 -12
  165. package/src/benchmark/useBenchmark.ts +0 -37
  166. package/src/benchmark/useFlatListBenchmark.ts +2 -2
  167. package/src/index.ts +2 -1
  168. package/src/native/config/PlatformHelper.android.ts +1 -0
  169. package/src/native/config/PlatformHelper.ios.ts +1 -0
  170. package/src/native/config/PlatformHelper.ts +1 -0
  171. package/src/native/config/PlatformHelper.web.ts +1 -0
  172. package/src/recyclerview/RecyclerView.tsx +139 -75
  173. package/src/recyclerview/RecyclerViewContextProvider.ts +52 -7
  174. package/src/recyclerview/RecyclerViewManager.ts +135 -98
  175. package/src/recyclerview/RenderStackManager.ts +317 -0
  176. package/src/recyclerview/ViewHolder.tsx +5 -3
  177. package/src/recyclerview/ViewHolderCollection.tsx +42 -14
  178. package/src/recyclerview/components/ScrollAnchor.tsx +21 -9
  179. package/src/recyclerview/components/StickyHeaders.tsx +63 -45
  180. package/src/recyclerview/helpers/EngagedIndicesTracker.ts +118 -23
  181. package/src/recyclerview/helpers/RenderTimeTracker.ts +42 -0
  182. package/src/recyclerview/helpers/VelocityTracker.ts +77 -0
  183. package/src/recyclerview/hooks/useBoundDetection.ts +72 -23
  184. package/src/recyclerview/hooks/useLayoutState.ts +15 -6
  185. package/src/recyclerview/hooks/useMappingHelper.ts +1 -1
  186. package/src/recyclerview/hooks/useOnLoad.ts +4 -6
  187. package/src/recyclerview/hooks/useRecyclerViewController.tsx +364 -254
  188. package/src/recyclerview/hooks/useRecyclerViewManager.ts +13 -1
  189. package/src/recyclerview/hooks/useRecyclingState.ts +11 -7
  190. package/src/recyclerview/hooks/useSecondaryProps.tsx +1 -1
  191. package/src/recyclerview/hooks/useUnmountAwareCallbacks.ts +39 -3
  192. package/src/recyclerview/hooks/useUnmountFlag.ts +1 -0
  193. package/src/recyclerview/layout-managers/GridLayoutManager.ts +67 -23
  194. package/src/recyclerview/layout-managers/LayoutManager.ts +110 -41
  195. package/src/recyclerview/layout-managers/MasonryLayoutManager.ts +30 -8
  196. package/src/recyclerview/utils/measureLayout.web.ts +1 -3
  197. package/src/viewability/ViewToken.ts +2 -2
  198. package/src/viewability/ViewabilityHelper.ts +1 -1
  199. package/src/viewability/ViewabilityManager.ts +16 -9
  200. package/dist/__tests__/RecycleKeyManager.test.d.ts +0 -2
  201. package/dist/__tests__/RecycleKeyManager.test.d.ts.map +0 -1
  202. package/dist/__tests__/RecycleKeyManager.test.js +0 -210
  203. package/dist/__tests__/RecycleKeyManager.test.js.map +0 -1
  204. package/dist/recyclerview/RecycleKeyManager.d.ts +0 -82
  205. package/dist/recyclerview/RecycleKeyManager.d.ts.map +0 -1
  206. package/dist/recyclerview/RecycleKeyManager.js +0 -135
  207. package/dist/recyclerview/RecycleKeyManager.js.map +0 -1
  208. package/src/__tests__/RecycleKeyManager.test.ts +0 -254
  209. package/src/recyclerview/RecycleKeyManager.ts +0 -185
@@ -6,105 +6,81 @@ var ViewabilityManager_1 = tslib_1.__importDefault(require("../viewability/Viewa
6
6
  var GridLayoutManager_1 = require("./layout-managers/GridLayoutManager");
7
7
  var LinearLayoutManager_1 = require("./layout-managers/LinearLayoutManager");
8
8
  var MasonryLayoutManager_1 = require("./layout-managers/MasonryLayoutManager");
9
- var RecycleKeyManager_1 = require("./RecycleKeyManager");
10
9
  var EngagedIndicesTracker_1 = require("./helpers/EngagedIndicesTracker");
11
- // Abstracts layout manager, key manager and viewability manager and generates render stack (progressively on load)
10
+ var RenderStackManager_1 = require("./RenderStackManager");
11
+ // Abstracts layout manager, render stack manager and viewability manager and generates render stack (progressively on load)
12
12
  var RecyclerViewManager = /** @class */ (function () {
13
13
  function RecyclerViewManager(props) {
14
14
  var _this = this;
15
15
  this.initialDrawBatchSize = 1;
16
16
  // Map of index to key
17
- this.renderStack = new Map();
18
17
  this.isFirstLayoutComplete = false;
19
18
  this.hasRenderedProgressively = false;
20
- this.allocatedKeyTracker = new Set();
21
- this.disableRecycling = false;
19
+ this._isDisposed = false;
20
+ this._isLayoutManagerDirty = false;
21
+ this._animationOptimizationsEnabled = false;
22
22
  this.firstItemOffset = 0;
23
23
  this.ignoreScrollEvents = false;
24
24
  // updates render stack based on the engaged indices which are sorted. Recycles unused keys.
25
- // TODO: Write comprehensive tests for this function
26
25
  this.updateRenderStack = function (engagedIndices) {
27
- // console.log("updateRenderStack", engagedIndices);
28
- var e_1, _a, e_2, _b, e_3, _c;
29
- var _d, _e;
30
- _this.allocatedKeyTracker.clear();
31
- var newRenderStack = new Map();
32
- try {
33
- for (var _f = tslib_1.__values(_this.renderStack), _g = _f.next(); !_g.done; _g = _f.next()) {
34
- var _h = tslib_1.__read(_g.value, 2), index = _h[0], key = _h[1];
35
- if (!engagedIndices.includes(index)) {
36
- _this.recycleKeyManager.recycleKey(key);
37
- }
38
- }
39
- }
40
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
41
- finally {
42
- try {
43
- if (_g && !_g.done && (_a = _f.return)) _a.call(_f);
44
- }
45
- finally { if (e_1) throw e_1.error; }
46
- }
47
- if (_this.disableRecycling) {
48
- _this.recycleKeyManager.clearPool();
49
- }
50
- try {
51
- for (var engagedIndices_1 = tslib_1.__values(engagedIndices), engagedIndices_1_1 = engagedIndices_1.next(); !engagedIndices_1_1.done; engagedIndices_1_1 = engagedIndices_1.next()) {
52
- var index = engagedIndices_1_1.value;
53
- var currentKey = _this.renderStack.get(index);
54
- if (currentKey &&
55
- !_this.disableRecycling &&
56
- !_this.allocatedKeyTracker.has(currentKey)) {
57
- _this.recycleKeyManager.recycleKey(currentKey);
58
- }
59
- var newKey = _this.recycleKeyManager.getKey(_this.getItemType(index), _this.getStableId(index), currentKey);
60
- _this.allocatedKeyTracker.add(newKey);
61
- newRenderStack.set(index, newKey);
62
- }
63
- }
64
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
65
- finally {
66
- try {
67
- if (engagedIndices_1_1 && !engagedIndices_1_1.done && (_b = engagedIndices_1.return)) _b.call(engagedIndices_1);
68
- }
69
- finally { if (e_2) throw e_2.error; }
70
- }
71
- try {
72
- // DANGER
73
- for (var _j = tslib_1.__values(_this.renderStack), _k = _j.next(); !_k.done; _k = _j.next()) {
74
- var _l = tslib_1.__read(_k.value, 2), index = _l[0], key = _l[1];
75
- if (_this.recycleKeyManager.hasKeyInPool(key) &&
76
- !newRenderStack.has(index) &&
77
- index < ((_e = (_d = _this.props.data) === null || _d === void 0 ? void 0 : _d.length) !== null && _e !== void 0 ? _e : 0)) {
78
- _this.allocatedKeyTracker.add(key);
79
- newRenderStack.set(index, key);
80
- }
81
- }
82
- }
83
- catch (e_3_1) { e_3 = { error: e_3_1 }; }
84
- finally {
85
- try {
86
- if (_k && !_k.done && (_c = _j.return)) _c.call(_j);
87
- }
88
- finally { if (e_3) throw e_3.error; }
89
- }
90
- _this.renderStack = newRenderStack;
26
+ _this.renderStackManager.sync(_this.getStableId, _this.getItemType, engagedIndices, _this.getDataLength());
91
27
  };
92
- this.props = props;
28
+ this.getStableId = this.getStableId.bind(this);
29
+ this.getItemType = this.getItemType.bind(this);
30
+ this.overrideItemLayout = this.overrideItemLayout.bind(this);
31
+ this.propsRef = props;
93
32
  this.engagedIndicesTracker = new EngagedIndicesTracker_1.RVEngagedIndicesTrackerImpl();
94
- this.recycleKeyManager = new RecycleKeyManager_1.RecycleKeyManagerImpl();
33
+ this.renderStackManager = new RenderStackManager_1.RenderStackManager(props.maxItemsInRecyclePool);
95
34
  this.itemViewabilityManager = new ViewabilityManager_1.default(this);
96
35
  }
36
+ Object.defineProperty(RecyclerViewManager.prototype, "animationOptimizationsEnabled", {
37
+ get: function () {
38
+ return this._animationOptimizationsEnabled;
39
+ },
40
+ set: function (value) {
41
+ this._animationOptimizationsEnabled = value;
42
+ this.renderStackManager.disableRecycling = value;
43
+ },
44
+ enumerable: false,
45
+ configurable: true
46
+ });
47
+ Object.defineProperty(RecyclerViewManager.prototype, "isOffsetProjectionEnabled", {
48
+ get: function () {
49
+ return this.engagedIndicesTracker.enableOffsetProjection;
50
+ },
51
+ enumerable: false,
52
+ configurable: true
53
+ });
54
+ Object.defineProperty(RecyclerViewManager.prototype, "isDisposed", {
55
+ get: function () {
56
+ return this._isDisposed;
57
+ },
58
+ enumerable: false,
59
+ configurable: true
60
+ });
61
+ Object.defineProperty(RecyclerViewManager.prototype, "props", {
62
+ get: function () {
63
+ return this.propsRef;
64
+ },
65
+ enumerable: false,
66
+ configurable: true
67
+ });
68
+ RecyclerViewManager.prototype.setOffsetProjectionEnabled = function (value) {
69
+ this.engagedIndicesTracker.enableOffsetProjection = value;
70
+ };
97
71
  RecyclerViewManager.prototype.updateProps = function (props) {
98
- var _a, _b;
99
- this.props = props;
72
+ var _a, _b, _c, _d;
73
+ this.propsRef = props;
100
74
  this.engagedIndicesTracker.drawDistance =
101
75
  (_a = props.drawDistance) !== null && _a !== void 0 ? _a : this.engagedIndicesTracker.drawDistance;
102
- if (this.props.drawDistance === 0) {
76
+ if (this.propsRef.drawDistance === 0) {
103
77
  this.initialDrawBatchSize = 1;
104
78
  }
105
79
  else {
106
80
  this.initialDrawBatchSize = ((_b = props.numColumns) !== null && _b !== void 0 ? _b : 1) * 2;
107
81
  }
82
+ this.initialDrawBatchSize =
83
+ (_d = (_c = this.propsRef.overrideProps) === null || _c === void 0 ? void 0 : _c.initialDrawBatchSize) !== null && _d !== void 0 ? _d : this.initialDrawBatchSize;
108
84
  };
109
85
  /**
110
86
  * Updates the scroll offset and returns the engaged indices if any
@@ -112,7 +88,7 @@ var RecyclerViewManager = /** @class */ (function () {
112
88
  * @param velocity
113
89
  */
114
90
  RecyclerViewManager.prototype.updateScrollOffset = function (offset, velocity) {
115
- if (this.layoutManager) {
91
+ if (this.layoutManager && !this._isDisposed) {
116
92
  var engagedIndices = this.engagedIndicesTracker.updateScrollOffset(offset - this.firstItemOffset, velocity, this.layoutManager);
117
93
  if (engagedIndices) {
118
94
  this.updateRenderStack(engagedIndices);
@@ -121,6 +97,9 @@ var RecyclerViewManager = /** @class */ (function () {
121
97
  }
122
98
  return undefined;
123
99
  };
100
+ RecyclerViewManager.prototype.updateAverageRenderTime = function (time) {
101
+ this.engagedIndicesTracker.averageRenderTime = time;
102
+ };
124
103
  RecyclerViewManager.prototype.getIsFirstLayoutComplete = function () {
125
104
  return this.isFirstLayoutComplete;
126
105
  };
@@ -130,6 +109,14 @@ var RecyclerViewManager = /** @class */ (function () {
130
109
  }
131
110
  return this.layoutManager.getLayout(index);
132
111
  };
112
+ RecyclerViewManager.prototype.tryGetLayout = function (index) {
113
+ if (this.layoutManager &&
114
+ index >= 0 &&
115
+ index < this.layoutManager.getLayoutCount()) {
116
+ return this.layoutManager.getLayout(index);
117
+ }
118
+ return undefined;
119
+ };
133
120
  // Doesn't include header / foot etc
134
121
  RecyclerViewManager.prototype.getChildContainerDimensions = function () {
135
122
  if (!this.layoutManager) {
@@ -138,7 +125,7 @@ var RecyclerViewManager = /** @class */ (function () {
138
125
  return this.layoutManager.getLayoutSize();
139
126
  };
140
127
  RecyclerViewManager.prototype.getRenderStack = function () {
141
- return this.renderStack;
128
+ return this.renderStackManager.getRenderStack();
142
129
  };
143
130
  RecyclerViewManager.prototype.getWindowSize = function () {
144
131
  if (!this.layoutManager) {
@@ -151,10 +138,10 @@ var RecyclerViewManager = /** @class */ (function () {
151
138
  return this.engagedIndicesTracker.scrollOffset;
152
139
  };
153
140
  RecyclerViewManager.prototype.getMaxScrollOffset = function () {
154
- return Math.max(0, (this.props.horizontal
141
+ return Math.max(0, (this.propsRef.horizontal
155
142
  ? this.getChildContainerDimensions().width
156
143
  : this.getChildContainerDimensions().height) -
157
- (this.props.horizontal
144
+ (this.propsRef.horizontal
158
145
  ? this.getWindowSize().width
159
146
  : this.getWindowSize().height) +
160
147
  this.firstItemOffset);
@@ -166,42 +153,42 @@ var RecyclerViewManager = /** @class */ (function () {
166
153
  RecyclerViewManager.prototype.setScrollDirection = function (scrollDirection) {
167
154
  this.engagedIndicesTracker.setScrollDirection(scrollDirection);
168
155
  };
156
+ RecyclerViewManager.prototype.resetVelocityCompute = function () {
157
+ this.engagedIndicesTracker.resetVelocityHistory();
158
+ };
169
159
  RecyclerViewManager.prototype.updateLayoutParams = function (windowSize, firstItemOffset) {
170
- var _this = this;
171
- var _a, _b, _c, _d, _e;
160
+ var _a, _b, _c;
172
161
  this.firstItemOffset = firstItemOffset;
173
162
  var LayoutManagerClass = this.getLayoutManagerClass();
174
163
  if (this.layoutManager &&
175
164
  Boolean((_a = this.layoutManager) === null || _a === void 0 ? void 0 : _a.isHorizontal()) !==
176
- Boolean(this.props.horizontal)) {
165
+ Boolean(this.propsRef.horizontal)) {
177
166
  throw new Error("Horizontal prop cannot be toggled, you can use a key on FlashList to recreate it.");
178
167
  }
168
+ if (this._isLayoutManagerDirty) {
169
+ this.layoutManager = undefined;
170
+ this._isLayoutManagerDirty = false;
171
+ }
172
+ var layoutManagerParams = {
173
+ windowSize: windowSize,
174
+ maxColumns: (_b = this.propsRef.numColumns) !== null && _b !== void 0 ? _b : 1,
175
+ horizontal: Boolean(this.propsRef.horizontal),
176
+ optimizeItemArrangement: (_c = this.propsRef.optimizeItemArrangement) !== null && _c !== void 0 ? _c : true,
177
+ overrideItemLayout: this.overrideItemLayout,
178
+ getItemType: this.getItemType,
179
+ };
179
180
  if (!(this.layoutManager instanceof LayoutManagerClass)) {
180
181
  // console.log("-----> new LayoutManagerClass");
181
- this.layoutManager = new LayoutManagerClass({
182
- windowSize: windowSize,
183
- maxColumns: (_b = this.props.numColumns) !== null && _b !== void 0 ? _b : 1,
184
- horizontal: Boolean(this.props.horizontal),
185
- optimizeItemArrangement: (_c = this.props.optimizeItemArrangement) !== null && _c !== void 0 ? _c : true,
186
- overrideItemLayout: function (index, layout) {
187
- var _a, _b, _c;
188
- (_b = (_a = _this.props) === null || _a === void 0 ? void 0 : _a.overrideItemLayout) === null || _b === void 0 ? void 0 : _b.call(_a, layout, _this.props.data[index], index, (_c = _this.props.numColumns) !== null && _c !== void 0 ? _c : 1, _this.props.extraData);
189
- },
190
- }, this.layoutManager);
182
+ this.layoutManager = new LayoutManagerClass(layoutManagerParams, this.layoutManager);
191
183
  }
192
184
  else {
193
- this.layoutManager.updateLayoutParams({
194
- windowSize: windowSize,
195
- maxColumns: (_d = this.props.numColumns) !== null && _d !== void 0 ? _d : 1,
196
- horizontal: Boolean(this.props.horizontal),
197
- optimizeItemArrangement: (_e = this.props.optimizeItemArrangement) !== null && _e !== void 0 ? _e : true,
198
- });
185
+ this.layoutManager.updateLayoutParams(layoutManagerParams);
199
186
  }
200
187
  };
201
188
  RecyclerViewManager.prototype.hasLayout = function () {
202
189
  return this.layoutManager !== undefined;
203
190
  };
204
- RecyclerViewManager.prototype.getVisibleIndices = function () {
191
+ RecyclerViewManager.prototype.computeVisibleIndices = function () {
205
192
  if (!this.layoutManager) {
206
193
  throw new Error("LayoutManager is not initialized, visible indices are not unavailable");
207
194
  }
@@ -232,9 +219,9 @@ var RecyclerViewManager = /** @class */ (function () {
232
219
  RecyclerViewManager.prototype.computeItemViewability = function () {
233
220
  // Using higher buffer for masonry to avoid missing items
234
221
  this.itemViewabilityManager.shouldListenToVisibleIndices &&
235
- this.itemViewabilityManager.updateViewableItems(this.props.masonry
222
+ this.itemViewabilityManager.updateViewableItems(this.propsRef.masonry
236
223
  ? this.engagedIndicesTracker.getEngagedIndices().toArray()
237
- : this.getVisibleIndices().toArray());
224
+ : this.computeVisibleIndices().toArray());
238
225
  };
239
226
  RecyclerViewManager.prototype.recordInteraction = function () {
240
227
  this.itemViewabilityManager.recordInteraction();
@@ -245,7 +232,7 @@ var RecyclerViewManager = /** @class */ (function () {
245
232
  RecyclerViewManager.prototype.processDataUpdate = function () {
246
233
  var _a, _b;
247
234
  if (this.hasLayout()) {
248
- this.modifyChildrenLayout([], (_b = (_a = this.props.data) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0);
235
+ this.modifyChildrenLayout([], (_b = (_a = this.propsRef.data) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0);
249
236
  if (!this.recomputeEngagedIndices()) {
250
237
  // recomputeEngagedIndices will update the render stack if there are any changes in the engaged indices.
251
238
  // It's important to update render stack so that elements are assgined right keys incase items were deleted.
@@ -256,31 +243,46 @@ var RecyclerViewManager = /** @class */ (function () {
256
243
  RecyclerViewManager.prototype.recomputeEngagedIndices = function () {
257
244
  return this.updateScrollOffset(this.getAbsoluteLastScrollOffset());
258
245
  };
246
+ RecyclerViewManager.prototype.restoreIfNeeded = function () {
247
+ if (this._isDisposed) {
248
+ this._isDisposed = false;
249
+ }
250
+ };
259
251
  RecyclerViewManager.prototype.dispose = function () {
252
+ this._isDisposed = true;
260
253
  this.itemViewabilityManager.dispose();
261
254
  };
255
+ RecyclerViewManager.prototype.markLayoutManagerDirty = function () {
256
+ this._isLayoutManagerDirty = true;
257
+ };
262
258
  RecyclerViewManager.prototype.getInitialScrollIndex = function () {
263
259
  var _a, _b;
264
- return ((_a = this.props.initialScrollIndex) !== null && _a !== void 0 ? _a : (((_b = this.props.maintainVisibleContentPosition) === null || _b === void 0 ? void 0 : _b.startRenderingFromBottom)
260
+ return ((_a = this.propsRef.initialScrollIndex) !== null && _a !== void 0 ? _a : (((_b = this.propsRef.maintainVisibleContentPosition) === null || _b === void 0 ? void 0 : _b.startRenderingFromBottom)
265
261
  ? this.getDataLength() - 1
266
262
  : undefined));
267
263
  };
264
+ RecyclerViewManager.prototype.shouldMaintainVisibleContentPosition = function () {
265
+ var _a;
266
+ // Return true if maintainVisibleContentPosition is enabled and not horizontal
267
+ return (!((_a = this.propsRef.maintainVisibleContentPosition) === null || _a === void 0 ? void 0 : _a.disabled) &&
268
+ !this.propsRef.horizontal);
269
+ };
268
270
  RecyclerViewManager.prototype.getDataLength = function () {
269
271
  var _a, _b;
270
- return (_b = (_a = this.props.data) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0;
272
+ return (_b = (_a = this.propsRef.data) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0;
271
273
  };
272
274
  RecyclerViewManager.prototype.getLayoutManagerClass = function () {
273
275
  var _a, _b;
274
276
  // throw errors for incompatible props
275
- if (this.props.masonry && this.props.horizontal) {
277
+ if (this.propsRef.masonry && this.propsRef.horizontal) {
276
278
  throw new Error("Masonry and horizontal props are incompatible");
277
279
  }
278
- if (((_a = this.props.numColumns) !== null && _a !== void 0 ? _a : 1) > 1 && this.props.horizontal) {
280
+ if (((_a = this.propsRef.numColumns) !== null && _a !== void 0 ? _a : 1) > 1 && this.propsRef.horizontal) {
279
281
  throw new Error("numColumns and horizontal props are incompatible");
280
282
  }
281
- return this.props.masonry
283
+ return this.propsRef.masonry
282
284
  ? MasonryLayoutManager_1.RVMasonryLayoutManagerImpl
283
- : ((_b = this.props.numColumns) !== null && _b !== void 0 ? _b : 1) > 1 && !this.props.horizontal
285
+ : ((_b = this.propsRef.numColumns) !== null && _b !== void 0 ? _b : 1) > 1 && !this.propsRef.horizontal
284
286
  ? GridLayoutManager_1.RVGridLayoutManagerImpl
285
287
  : LinearLayoutManager_1.RVLinearLayoutManagerImpl;
286
288
  };
@@ -291,7 +293,7 @@ var RecyclerViewManager = /** @class */ (function () {
291
293
  }
292
294
  var initialScrollIndex = this.getInitialScrollIndex();
293
295
  var initialItemLayout = (_a = this.layoutManager) === null || _a === void 0 ? void 0 : _a.getLayout(initialScrollIndex !== null && initialScrollIndex !== void 0 ? initialScrollIndex : 0);
294
- var initialItemOffset = this.props.horizontal
296
+ var initialItemOffset = this.propsRef.horizontal
295
297
  ? initialItemLayout === null || initialItemLayout === void 0 ? void 0 : initialItemLayout.x
296
298
  : initialItemLayout === null || initialItemLayout === void 0 ? void 0 : initialItemLayout.y;
297
299
  if (initialScrollIndex !== undefined) {
@@ -315,7 +317,7 @@ var RecyclerViewManager = /** @class */ (function () {
315
317
  var layoutManager = this.layoutManager;
316
318
  if (layoutManager) {
317
319
  this.applyInitialScrollAdjustment();
318
- var visibleIndices = this.getVisibleIndices();
320
+ var visibleIndices = this.computeVisibleIndices();
319
321
  // console.log("---------> visibleIndices", visibleIndices);
320
322
  this.hasRenderedProgressively = visibleIndices.every(function (index) {
321
323
  return layoutManager.getLayout(index).isHeightMeasured &&
@@ -329,16 +331,20 @@ var RecyclerViewManager = /** @class */ (function () {
329
331
  !this.hasRenderedProgressively &&
330
332
  this.updateRenderStack(
331
333
  // pick first n indices from visible ones and n is size of renderStack
332
- visibleIndices.slice(0, Math.min(visibleIndices.length, this.renderStack.size + this.initialDrawBatchSize)));
334
+ visibleIndices.slice(0, Math.min(visibleIndices.length, this.getRenderStack().size + this.initialDrawBatchSize)));
333
335
  }
334
336
  };
335
337
  RecyclerViewManager.prototype.getItemType = function (index) {
336
338
  var _a, _b, _c;
337
- return ((_c = (_b = (_a = this.props).getItemType) === null || _b === void 0 ? void 0 : _b.call(_a, this.props.data[index], index)) !== null && _c !== void 0 ? _c : "default").toString();
339
+ return ((_c = (_b = (_a = this.propsRef).getItemType) === null || _b === void 0 ? void 0 : _b.call(_a, this.propsRef.data[index], index)) !== null && _c !== void 0 ? _c : "default").toString();
338
340
  };
339
341
  RecyclerViewManager.prototype.getStableId = function (index) {
340
342
  var _a, _b, _c;
341
- return ((_c = (_b = (_a = this.props).keyExtractor) === null || _b === void 0 ? void 0 : _b.call(_a, this.props.data[index], index)) !== null && _c !== void 0 ? _c : index.toString());
343
+ return ((_c = (_b = (_a = this.propsRef).keyExtractor) === null || _b === void 0 ? void 0 : _b.call(_a, this.propsRef.data[index], index)) !== null && _c !== void 0 ? _c : index.toString());
344
+ };
345
+ RecyclerViewManager.prototype.overrideItemLayout = function (index, layout) {
346
+ var _a, _b, _c;
347
+ (_b = (_a = this.propsRef) === null || _a === void 0 ? void 0 : _a.overrideItemLayout) === null || _b === void 0 ? void 0 : _b.call(_a, layout, this.propsRef.data[index], index, (_c = this.propsRef.numColumns) !== null && _c !== void 0 ? _c : 1, this.propsRef.extraData);
342
348
  };
343
349
  return RecyclerViewManager;
344
350
  }());
@@ -1 +1 @@
1
- {"version":3,"file":"RecyclerViewManager.js","sourceRoot":"","sources":["../../src/recyclerview/RecyclerViewManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RecyclerViewManager.js","sourceRoot":"","sources":["../../src/recyclerview/RecyclerViewManager.ts"],"names":[],"mappings":";;;;AAAA,iGAAmE;AAGnE,yEAA8E;AAQ9E,6EAAkF;AAClF,+EAAoF;AAEpF,yEAIyC;AACzC,2DAA0D;AAC1D,4HAA4H;AAC5H;IAkCE,6BAAY,KAA2B;QAAvC,iBAUC;QA3CO,yBAAoB,GAAG,CAAC,CAAC;QAIjC,sBAAsB;QACd,0BAAqB,GAAG,KAAK,CAAC;QAC9B,6BAAwB,GAAG,KAAK,CAAC;QAGjC,gBAAW,GAAG,KAAK,CAAC;QACpB,0BAAqB,GAAG,KAAK,CAAC;QAC9B,mCAA8B,GAAG,KAAK,CAAC;QAExC,oBAAe,GAAG,CAAC,CAAC;QACpB,uBAAkB,GAAG,KAAK,CAAC;QA+BlC,4FAA4F;QACpF,sBAAiB,GAAG,UAAC,cAAkC;YAC7D,KAAI,CAAC,kBAAkB,CAAC,IAAI,CAC1B,KAAI,CAAC,WAAW,EAChB,KAAI,CAAC,WAAW,EAChB,cAAc,EACd,KAAI,CAAC,aAAa,EAAE,CACrB,CAAC;QACJ,CAAC,CAAC;QAnBA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7D,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,qBAAqB,GAAG,IAAI,mDAA2B,EAAE,CAAC;QAC/D,IAAI,CAAC,kBAAkB,GAAG,IAAI,uCAAkB,CAC9C,KAAK,CAAC,qBAAqB,CAC5B,CAAC;QACF,IAAI,CAAC,sBAAsB,GAAG,IAAI,4BAAkB,CAAI,IAAW,CAAC,CAAC;IACvE,CAAC;IA3BD,sBAAW,8DAA6B;aAAxC;YACE,OAAO,IAAI,CAAC,8BAA8B,CAAC;QAC7C,CAAC;aAED,UAAyC,KAAc;YACrD,IAAI,CAAC,8BAA8B,GAAG,KAAK,CAAC;YAC5C,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,GAAG,KAAK,CAAC;QACnD,CAAC;;;OALA;IAOD,sBAAW,0DAAyB;aAApC;YACE,OAAO,IAAI,CAAC,qBAAqB,CAAC,sBAAsB,CAAC;QAC3D,CAAC;;;OAAA;IAED,sBAAW,2CAAU;aAArB;YACE,OAAO,IAAI,CAAC,WAAW,CAAC;QAC1B,CAAC;;;OAAA;IAwBD,sBAAI,sCAAK;aAAT;YACE,OAAO,IAAI,CAAC,QAAQ,CAAC;QACvB,CAAC;;;OAAA;IAED,wDAA0B,GAA1B,UAA2B,KAAc;QACvC,IAAI,CAAC,qBAAqB,CAAC,sBAAsB,GAAG,KAAK,CAAC;IAC5D,CAAC;IAED,yCAAW,GAAX,UAAY,KAA2B;;QACrC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,qBAAqB,CAAC,YAAY;YACrC,MAAA,KAAK,CAAC,YAAY,mCAAI,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC;QAChE,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,KAAK,CAAC,EAAE,CAAC;YACrC,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,oBAAoB,GAAG,CAAC,MAAA,KAAK,CAAC,UAAU,mCAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAC1D,CAAC;QACD,IAAI,CAAC,oBAAoB;YACvB,MAAA,MAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,0CAAE,oBAAoB,mCACjD,IAAI,CAAC,oBAAoB,CAAC;IAC9B,CAAC;IAED;;;;OAIG;IACH,gDAAkB,GAAlB,UACE,MAAc,EACd,QAAmB;QAEnB,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAC5C,IAAM,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC,kBAAkB,CAClE,MAAM,GAAG,IAAI,CAAC,eAAe,EAC7B,QAAQ,EACR,IAAI,CAAC,aAAa,CACnB,CAAC;YAEF,IAAI,cAAc,EAAE,CAAC;gBACnB,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;gBACvC,OAAO,cAAc,CAAC;YACxB,CAAC;QACH,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,qDAAuB,GAAvB,UAAwB,IAAY;QAClC,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,GAAG,IAAI,CAAC;IACtD,CAAC;IAED,sDAAwB,GAAxB;QACE,OAAO,IAAI,CAAC,qBAAqB,CAAC;IACpC,CAAC;IAED,uCAAS,GAAT,UAAU,KAAa;QACrB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CACb,8DAA8D,CAC/D,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;IAED,0CAAY,GAAZ,UAAa,KAAa;QACxB,IACE,IAAI,CAAC,aAAa;YAClB,KAAK,IAAI,CAAC;YACV,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,EAC3C,CAAC;YACD,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,oCAAoC;IACpC,yDAA2B,GAA3B;QACE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CACb,yEAAyE,CAC1E,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC;IAC5C,CAAC;IAED,4CAAc,GAAd;QACE,OAAO,IAAI,CAAC,kBAAkB,CAAC,cAAc,EAAE,CAAC;IAClD,CAAC;IAED,2CAAa,GAAb;QACE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CACb,8DAA8D,CAC/D,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC;IAC7C,CAAC;IAED,wCAAwC;IACxC,iDAAmB,GAAnB;QACE,OAAO,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC;IACjD,CAAC;IAED,gDAAkB,GAAlB;QACE,OAAO,IAAI,CAAC,GAAG,CACb,CAAC,EACD,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU;YACvB,CAAC,CAAC,IAAI,CAAC,2BAA2B,EAAE,CAAC,KAAK;YAC1C,CAAC,CAAC,IAAI,CAAC,2BAA2B,EAAE,CAAC,MAAM,CAAC;YAC5C,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU;gBACvB,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,KAAK;gBAC5B,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC;YAChC,IAAI,CAAC,eAAe,CACvB,CAAC;IACJ,CAAC;IAED,+CAA+C;IAC/C,yDAA2B,GAA3B;QACE,OAAO,IAAI,CAAC,qBAAqB,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC;IACxE,CAAC;IAED,gDAAkB,GAAlB,UAAmB,eAAuC;QACxD,IAAI,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;IACjE,CAAC;IAED,kDAAoB,GAApB;QACE,IAAI,CAAC,qBAAqB,CAAC,oBAAoB,EAAE,CAAC;IACpD,CAAC;IAED,gDAAkB,GAAlB,UAAmB,UAAuB,EAAE,eAAuB;;QACjE,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAM,kBAAkB,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QACxD,IACE,IAAI,CAAC,aAAa;YAClB,OAAO,CAAC,MAAA,IAAI,CAAC,aAAa,0CAAE,YAAY,EAAE,CAAC;gBACzC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EACnC,CAAC;YACD,MAAM,IAAI,KAAK,CACb,mFAAmF,CACpF,CAAC;QACJ,CAAC;QACD,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC/B,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;YAC/B,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;QACrC,CAAC;QACD,IAAM,mBAAmB,GAAiB;YACxC,UAAU,YAAA;YACV,UAAU,EAAE,MAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,mCAAI,CAAC;YACzC,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;YAC7C,uBAAuB,EAAE,MAAA,IAAI,CAAC,QAAQ,CAAC,uBAAuB,mCAAI,IAAI;YACtE,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;YAC3C,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,CAAC;QACF,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,YAAY,kBAAkB,CAAC,EAAE,CAAC;YACxD,gDAAgD;YAEhD,IAAI,CAAC,aAAa,GAAG,IAAI,kBAAkB,CACzC,mBAAmB,EACnB,IAAI,CAAC,aAAa,CACnB,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED,uCAAS,GAAT;QACE,OAAO,IAAI,CAAC,aAAa,KAAK,SAAS,CAAC;IAC1C,CAAC;IAED,mDAAqB,GAArB;QACE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CACb,uEAAuE,CACxE,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,qBAAqB,CAAC,qBAAqB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC9E,CAAC;IAED,+CAAiB,GAAjB;QACE,OAAO,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,EAAE,CAAC;IACxD,CAAC;IAED,kDAAoB,GAApB,UACE,UAA0B,EAC1B,UAAkB;;QAElB,MAAA,IAAI,CAAC,aAAa,0CAAE,YAAY,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QACzD,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;YACrB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,MAAA,IAAI,CAAC,aAAa,0CAAE,eAAe,EAAE,CAAC;YACxC,4CAA4C;YAC5C,IAAI,CAAC,aAAa,CAAC,eAAe,GAAG,KAAK,CAAC;YAC3C,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,IAAI,CAAC,wBAAwB,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC,uBAAuB,EAAE,KAAK,SAAS,CAAC;QACtD,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC7B,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC;IACxC,CAAC;IAED,oDAAsB,GAAtB;QACE,yDAAyD;QACzD,IAAI,CAAC,sBAAsB,CAAC,4BAA4B;YACtD,IAAI,CAAC,sBAAsB,CAAC,mBAAmB,CAC7C,IAAI,CAAC,QAAQ,CAAC,OAAO;gBACnB,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,EAAE,CAAC,OAAO,EAAE;gBAC1D,CAAC,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,OAAO,EAAE,CAC3C,CAAC;IACN,CAAC;IAED,+CAAiB,GAAjB;QACE,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,EAAE,CAAC;IAClD,CAAC;IAED,oDAAsB,GAAtB;QACE,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,EAAE,CAAC;IACvD,CAAC;IAED,+CAAiB,GAAjB;;QACE,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;YACrB,IAAI,CAAC,oBAAoB,CAAC,EAAE,EAAE,MAAA,MAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,0CAAE,MAAM,mCAAI,CAAC,CAAC,CAAC;YAC/D,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE,CAAC;gBACpC,wGAAwG;gBACxG,4GAA4G;gBAC5G,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,EAAE,CAAC,CAAC;YACzE,CAAC;QACH,CAAC;IACH,CAAC;IAED,qDAAuB,GAAvB;QACE,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,2BAA2B,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,6CAAe,GAAf;QACE,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,qCAAO,GAAP;QACE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,CAAC;IACxC,CAAC;IAED,oDAAsB,GAAtB;QACE,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;IACpC,CAAC;IAED,mDAAqB,GAArB;;QACE,OAAO,CACL,MAAA,IAAI,CAAC,QAAQ,CAAC,kBAAkB,mCAChC,CAAC,CAAA,MAAA,IAAI,CAAC,QAAQ,CAAC,8BAA8B,0CAAE,wBAAwB;YACrE,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC;YAC1B,CAAC,CAAC,SAAS,CAAC,CACf,CAAC;IACJ,CAAC;IAED,kEAAoC,GAApC;;QACE,8EAA8E;QAC9E,OAAO,CACL,CAAC,CAAA,MAAA,IAAI,CAAC,QAAQ,CAAC,8BAA8B,0CAAE,QAAQ,CAAA;YACvD,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAC1B,CAAC;IACJ,CAAC;IAED,2CAAa,GAAb;;QACE,OAAO,MAAA,MAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,0CAAE,MAAM,mCAAI,CAAC,CAAC;IACzC,CAAC;IAEO,mDAAqB,GAA7B;;QACE,sCAAsC;QACtC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;YACtD,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACnE,CAAC;QACD,IAAI,CAAC,MAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,mCAAI,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;YACpE,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACtE,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO;YAC1B,CAAC,CAAC,iDAA0B;YAC5B,CAAC,CAAC,CAAC,MAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,mCAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU;gBAClE,CAAC,CAAC,2CAAuB;gBACzB,CAAC,CAAC,+CAAyB,CAAC;IAChC,CAAC;IAEO,0DAA4B,GAApC;;QACE,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC;YACtD,OAAO;QACT,CAAC;QAED,IAAM,kBAAkB,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QACxD,IAAM,iBAAiB,GAAG,MAAA,IAAI,CAAC,aAAa,0CAAE,SAAS,CACrD,kBAAkB,aAAlB,kBAAkB,cAAlB,kBAAkB,GAAI,CAAC,CACxB,CAAC;QACF,IAAM,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU;YAChD,CAAC,CAAC,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,CAAC;YACtB,CAAC,CAAC,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,CAAC,CAAC;QAEzB,IAAI,kBAAkB,KAAK,SAAS,EAAE,CAAC;YACrC,eAAe;YACf,yBAAyB;YACzB,wBAAwB;YACxB,uBAAuB;YACvB,yBAAyB;YACzB,KAAK;YACL,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC;YAC3D,IAAI,CAAC,qBAAqB,CAAC,YAAY;gBACrC,iBAAiB,aAAjB,iBAAiB,cAAjB,iBAAiB,GAAI,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC;QAClD,CAAC;aAAM,CAAC;YACN,6EAA6E;YAC7E,IAAI,CAAC,qBAAqB,CAAC,YAAY;gBACrC,CAAC,iBAAiB,aAAjB,iBAAiB,cAAjB,iBAAiB,GAAI,CAAC,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC;QACpD,CAAC;IACH,CAAC;IAEO,iDAAmB,GAA3B;QACE,IAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACzC,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,CAAC,4BAA4B,EAAE,CAAC;YACpC,IAAM,cAAc,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;YACpD,4DAA4D;YAC5D,IAAI,CAAC,wBAAwB,GAAG,cAAc,CAAC,KAAK,CAClD,UAAC,KAAK;gBACJ,OAAA,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,gBAAgB;oBAC/C,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,eAAe;YAD9C,CAC8C,CACjD,CAAC;YAEF,IAAI,IAAI,CAAC,wBAAwB,EAAE,CAAC;gBAClC,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;YACpC,CAAC;YAED,qHAAqH;YACrH,mCAAmC;YACnC,CAAC,IAAI,CAAC,wBAAwB;gBAC5B,IAAI,CAAC,iBAAiB;gBACpB,sEAAsE;gBACtE,cAAc,CAAC,KAAK,CAClB,CAAC,EACD,IAAI,CAAC,GAAG,CACN,cAAc,CAAC,MAAM,EACrB,IAAI,CAAC,cAAc,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC,oBAAoB,CACvD,CACF,CACF,CAAC;QACN,CAAC;IACH,CAAC;IAEO,yCAAW,GAAnB,UAAoB,KAAa;;QAC/B,OAAO,CACL,MAAA,MAAA,MAAA,IAAI,CAAC,QAAQ,EAAC,WAAW,mDAAG,IAAI,CAAC,QAAQ,CAAC,IAAK,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,mCAC9D,SAAS,CACV,CAAC,QAAQ,EAAE,CAAC;IACf,CAAC;IAEO,yCAAW,GAAnB,UAAoB,KAAa;;QAC/B,OAAO,CACL,MAAA,MAAA,MAAA,IAAI,CAAC,QAAQ,EAAC,YAAY,mDAAG,IAAI,CAAC,QAAQ,CAAC,IAAK,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,mCAC/D,KAAK,CAAC,QAAQ,EAAE,CACjB,CAAC;IACJ,CAAC;IAEO,gDAAkB,GAA1B,UAA2B,KAAa,EAAE,MAAoB;;QAC5D,MAAA,MAAA,IAAI,CAAC,QAAQ,0CAAE,kBAAkB,mDAC/B,MAAM,EACN,IAAI,CAAC,QAAQ,CAAC,IAAK,CAAC,KAAK,CAAC,EAC1B,KAAK,EACL,MAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,mCAAI,CAAC,EAC7B,IAAI,CAAC,QAAQ,CAAC,SAAS,CACxB,CAAC;IACJ,CAAC;IACH,0BAAC;AAAD,CAAC,AA3aD,IA2aC;AA3aY,kDAAmB"}
@@ -0,0 +1,86 @@
1
+ import { ConsecutiveNumbers } from "./helpers/ConsecutiveNumbers";
2
+ /**
3
+ * Manages the recycling of rendered items in a virtualized list.
4
+ * This class handles tracking, recycling, and reusing item keys to optimize
5
+ * rendering performance by minimizing creation/destruction of components.
6
+ */
7
+ export declare class RenderStackManager {
8
+ disableRecycling: boolean;
9
+ private maxItemsInRecyclePool;
10
+ private recycleKeyPools;
11
+ private keyMap;
12
+ private stableIdMap;
13
+ private keyCounter;
14
+ private unProcessedIndices;
15
+ /**
16
+ * @param maxItemsInRecyclePool - Maximum number of items that can be in the recycle pool
17
+ */
18
+ constructor(maxItemsInRecyclePool?: number);
19
+ /**
20
+ * Synchronizes the render stack with the current state of data.
21
+ * This method is the core orchestrator that:
22
+ * 1. Recycles keys for items that are no longer valid
23
+ * 2. Updates existing keys for items that remain visible
24
+ * 3. Assigns new keys for newly visible items
25
+ * 4. Cleans up excess items to maintain the recycling pool size
26
+ *
27
+ * @param getStableId - Function to get a stable identifier for an item at a specific index
28
+ * @param getItemType - Function to get the type of an item at a specific index
29
+ * @param engagedIndices - Collection of indices that are currently visible or engaged
30
+ * @param dataLength - Total length of the data set
31
+ */
32
+ sync(getStableId: (index: number) => string, getItemType: (index: number) => string, engagedIndices: ConsecutiveNumbers, dataLength: number): void;
33
+ /**
34
+ * Checks if a stable ID already has an assigned key
35
+ */
36
+ private hasOptimizedKey;
37
+ /**
38
+ * Cleans up stale keys and manages the recycle pool size.
39
+ * This ensures we don't maintain references to items that are no longer in the dataset,
40
+ * and limits the number of recycled items to avoid excessive memory usage.
41
+ */
42
+ private cleanup;
43
+ /**
44
+ * Places a key back into its type-specific recycle pool for future reuse
45
+ */
46
+ private recycleKey;
47
+ /**
48
+ * Returns the current render stack containing all active keys and their metadata
49
+ */
50
+ getRenderStack(): Map<string, {
51
+ itemType: string;
52
+ index: number;
53
+ stableId: string;
54
+ }>;
55
+ /**
56
+ * Syncs an individual item by assigning it an appropriate key.
57
+ * Will use an existing key if available, or generate a new one.
58
+ *
59
+ * @returns The key assigned to the item
60
+ */
61
+ private syncItem;
62
+ /**
63
+ * Clears all recycled keys from the pool, effectively resetting the recycling system.
64
+ * This operation does not affect currently active keys.
65
+ */
66
+ private clearRecyclePool;
67
+ /**
68
+ * Generates a unique sequential key using an internal counter.
69
+ * @returns A unique key as a string
70
+ */
71
+ private generateKey;
72
+ /**
73
+ * Removes a specific key from its type's recycle pool
74
+ */
75
+ private deleteKeyFromRecyclePool;
76
+ /**
77
+ * Gets or creates a recycle pool for a specific item type
78
+ */
79
+ private getRecyclePoolForType;
80
+ /**
81
+ * Retrieves and removes a key from the type's recycle pool
82
+ * @returns A recycled key or undefined if none available
83
+ */
84
+ private getKeyFromRecyclePool;
85
+ }
86
+ //# sourceMappingURL=RenderStackManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RenderStackManager.d.ts","sourceRoot":"","sources":["../../src/recyclerview/RenderStackManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAElE;;;;GAIG;AACH,qBAAa,kBAAkB;IACtB,gBAAgB,UAAS;IAGhC,OAAO,CAAC,qBAAqB,CAAS;IAGtC,OAAO,CAAC,eAAe,CAA2B;IAGlD,OAAO,CAAC,MAAM,CAGZ;IAGF,OAAO,CAAC,WAAW,CAAsB;IAGzC,OAAO,CAAC,UAAU,CAAS;IAE3B,OAAO,CAAC,kBAAkB,CAAc;IAExC;;OAEG;gBACS,qBAAqB,GAAE,MAAgC;IASnE;;;;;;;;;;;;OAYG;IACI,IAAI,CACT,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,EACtC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,EACtC,cAAc,EAAE,kBAAkB,EAClC,UAAU,EAAE,MAAM;IAmEpB;;OAEG;IACH,OAAO,CAAC,eAAe;IAIvB;;;;OAIG;IACH,OAAO,CAAC,OAAO;IA8Df;;OAEG;IACH,OAAO,CAAC,UAAU;IAkBlB;;OAEG;IACI,cAAc;kBA7MP,MAAM;eAAS,MAAM;kBAAY,MAAM;;IAiNrD;;;;;OAKG;IACH,OAAO,CAAC,QAAQ;IA+BhB;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAOxB;;;OAGG;IACH,OAAO,CAAC,WAAW;IAInB;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAIhC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAS7B;;;OAGG;IACH,OAAO,CAAC,qBAAqB;CAS9B"}