@shopify/flash-list 1.8.0 → 2.0.0-alpha.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 (170) hide show
  1. package/README.md +147 -26
  2. package/dist/FlashListProps.d.ts +65 -2
  3. package/dist/FlashListProps.d.ts.map +1 -1
  4. package/dist/__tests__/AverageWindow.test.js +35 -0
  5. package/dist/__tests__/AverageWindow.test.js.map +1 -1
  6. package/dist/enableNewCore.d.ts +3 -0
  7. package/dist/enableNewCore.d.ts.map +1 -0
  8. package/dist/enableNewCore.js +25 -0
  9. package/dist/enableNewCore.js.map +1 -0
  10. package/dist/index.d.ts +5 -0
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +28 -8
  13. package/dist/index.js.map +1 -1
  14. package/dist/recyclerview/RecycleKeyManager.d.ts +82 -0
  15. package/dist/recyclerview/RecycleKeyManager.d.ts.map +1 -0
  16. package/dist/recyclerview/RecycleKeyManager.js +135 -0
  17. package/dist/recyclerview/RecycleKeyManager.js.map +1 -0
  18. package/dist/recyclerview/RecyclerView.d.ts +12 -0
  19. package/dist/recyclerview/RecyclerView.d.ts.map +1 -0
  20. package/dist/recyclerview/RecyclerView.js +283 -0
  21. package/dist/recyclerview/RecyclerView.js.map +1 -0
  22. package/dist/recyclerview/RecyclerViewContextProvider.d.ts +12 -0
  23. package/dist/recyclerview/RecyclerViewContextProvider.d.ts.map +1 -0
  24. package/dist/recyclerview/RecyclerViewContextProvider.js +11 -0
  25. package/dist/recyclerview/RecyclerViewContextProvider.js.map +1 -0
  26. package/dist/recyclerview/RecyclerViewManager.d.ts +52 -0
  27. package/dist/recyclerview/RecyclerViewManager.d.ts.map +1 -0
  28. package/dist/recyclerview/RecyclerViewManager.js +323 -0
  29. package/dist/recyclerview/RecyclerViewManager.js.map +1 -0
  30. package/dist/recyclerview/RecyclerViewProps.d.ts +9 -0
  31. package/dist/recyclerview/RecyclerViewProps.d.ts.map +1 -0
  32. package/dist/recyclerview/RecyclerViewProps.js +3 -0
  33. package/dist/recyclerview/RecyclerViewProps.js.map +1 -0
  34. package/dist/recyclerview/ViewHolder.d.ts +45 -0
  35. package/dist/recyclerview/ViewHolder.d.ts.map +1 -0
  36. package/dist/recyclerview/ViewHolder.js +96 -0
  37. package/dist/recyclerview/ViewHolder.js.map +1 -0
  38. package/dist/recyclerview/ViewHolderCollection.d.ts +57 -0
  39. package/dist/recyclerview/ViewHolderCollection.d.ts.map +1 -0
  40. package/dist/recyclerview/ViewHolderCollection.js +75 -0
  41. package/dist/recyclerview/ViewHolderCollection.js.map +1 -0
  42. package/dist/recyclerview/components/CompatScroller.d.ts +7 -0
  43. package/dist/recyclerview/components/CompatScroller.d.ts.map +1 -0
  44. package/dist/recyclerview/components/CompatScroller.js +8 -0
  45. package/dist/recyclerview/components/CompatScroller.js.map +1 -0
  46. package/dist/recyclerview/components/CompatView.d.ts +7 -0
  47. package/dist/recyclerview/components/CompatView.d.ts.map +1 -0
  48. package/dist/recyclerview/components/CompatView.js +8 -0
  49. package/dist/recyclerview/components/CompatView.js.map +1 -0
  50. package/dist/recyclerview/components/ScrollAnchor.d.ts +28 -0
  51. package/dist/recyclerview/components/ScrollAnchor.d.ts.map +1 -0
  52. package/dist/recyclerview/components/ScrollAnchor.js +35 -0
  53. package/dist/recyclerview/components/ScrollAnchor.js.map +1 -0
  54. package/dist/recyclerview/components/StickyHeaders.d.ts +38 -0
  55. package/dist/recyclerview/components/StickyHeaders.d.ts.map +1 -0
  56. package/dist/recyclerview/components/StickyHeaders.js +119 -0
  57. package/dist/recyclerview/components/StickyHeaders.js.map +1 -0
  58. package/dist/recyclerview/helpers/ConsecutiveNumbers.d.ts +51 -0
  59. package/dist/recyclerview/helpers/ConsecutiveNumbers.d.ts.map +1 -0
  60. package/dist/recyclerview/helpers/ConsecutiveNumbers.js +122 -0
  61. package/dist/recyclerview/helpers/ConsecutiveNumbers.js.map +1 -0
  62. package/dist/recyclerview/helpers/EngagedIndicesTracker.d.ts +59 -0
  63. package/dist/recyclerview/helpers/EngagedIndicesTracker.d.ts.map +1 -0
  64. package/dist/recyclerview/helpers/EngagedIndicesTracker.js +138 -0
  65. package/dist/recyclerview/helpers/EngagedIndicesTracker.js.map +1 -0
  66. package/dist/recyclerview/hooks/useBoundDetection.d.ts +19 -0
  67. package/dist/recyclerview/hooks/useBoundDetection.d.ts.map +1 -0
  68. package/dist/recyclerview/hooks/useBoundDetection.js +103 -0
  69. package/dist/recyclerview/hooks/useBoundDetection.js.map +1 -0
  70. package/dist/recyclerview/hooks/useLayoutState.d.ts +12 -0
  71. package/dist/recyclerview/hooks/useLayoutState.d.ts.map +1 -0
  72. package/dist/recyclerview/hooks/useLayoutState.js +43 -0
  73. package/dist/recyclerview/hooks/useLayoutState.js.map +1 -0
  74. package/dist/recyclerview/hooks/useOnLoad.d.ts +25 -0
  75. package/dist/recyclerview/hooks/useOnLoad.d.ts.map +1 -0
  76. package/dist/recyclerview/hooks/useOnLoad.js +73 -0
  77. package/dist/recyclerview/hooks/useOnLoad.js.map +1 -0
  78. package/dist/recyclerview/hooks/useRecyclerViewController.d.ts +72 -0
  79. package/dist/recyclerview/hooks/useRecyclerViewController.d.ts.map +1 -0
  80. package/dist/recyclerview/hooks/useRecyclerViewController.js +370 -0
  81. package/dist/recyclerview/hooks/useRecyclerViewController.js.map +1 -0
  82. package/dist/recyclerview/hooks/useRecyclerViewManager.d.ts +6 -0
  83. package/dist/recyclerview/hooks/useRecyclerViewManager.d.ts.map +1 -0
  84. package/dist/recyclerview/hooks/useRecyclerViewManager.js +27 -0
  85. package/dist/recyclerview/hooks/useRecyclerViewManager.js.map +1 -0
  86. package/dist/recyclerview/hooks/useRecyclingState.d.ts +16 -0
  87. package/dist/recyclerview/hooks/useRecyclingState.d.ts.map +1 -0
  88. package/dist/recyclerview/hooks/useRecyclingState.js +54 -0
  89. package/dist/recyclerview/hooks/useRecyclingState.js.map +1 -0
  90. package/dist/recyclerview/hooks/useSecondaryProps.d.ts +27 -0
  91. package/dist/recyclerview/hooks/useSecondaryProps.d.ts.map +1 -0
  92. package/dist/recyclerview/hooks/useSecondaryProps.js +93 -0
  93. package/dist/recyclerview/hooks/useSecondaryProps.js.map +1 -0
  94. package/dist/recyclerview/hooks/useUnmountFlag.d.ts +11 -0
  95. package/dist/recyclerview/hooks/useUnmountFlag.d.ts.map +1 -0
  96. package/dist/recyclerview/hooks/useUnmountFlag.js +28 -0
  97. package/dist/recyclerview/hooks/useUnmountFlag.js.map +1 -0
  98. package/dist/recyclerview/layout-managers/GridLayoutManager.d.ts +65 -0
  99. package/dist/recyclerview/layout-managers/GridLayoutManager.d.ts.map +1 -0
  100. package/dist/recyclerview/layout-managers/GridLayoutManager.js +204 -0
  101. package/dist/recyclerview/layout-managers/GridLayoutManager.js.map +1 -0
  102. package/dist/recyclerview/layout-managers/LayoutManager.d.ts +281 -0
  103. package/dist/recyclerview/layout-managers/LayoutManager.d.ts.map +1 -0
  104. package/dist/recyclerview/layout-managers/LayoutManager.js +250 -0
  105. package/dist/recyclerview/layout-managers/LayoutManager.js.map +1 -0
  106. package/dist/recyclerview/layout-managers/LinearLayoutManager.d.ts +52 -0
  107. package/dist/recyclerview/layout-managers/LinearLayoutManager.d.ts.map +1 -0
  108. package/dist/recyclerview/layout-managers/LinearLayoutManager.js +191 -0
  109. package/dist/recyclerview/layout-managers/LinearLayoutManager.js.map +1 -0
  110. package/dist/recyclerview/layout-managers/MasonryLayoutManager.d.ts +73 -0
  111. package/dist/recyclerview/layout-managers/MasonryLayoutManager.d.ts.map +1 -0
  112. package/dist/recyclerview/layout-managers/MasonryLayoutManager.js +274 -0
  113. package/dist/recyclerview/layout-managers/MasonryLayoutManager.js.map +1 -0
  114. package/dist/recyclerview/utils/adjustOffsetForRTL.d.ts +12 -0
  115. package/dist/recyclerview/utils/adjustOffsetForRTL.d.ts.map +1 -0
  116. package/dist/recyclerview/utils/adjustOffsetForRTL.js +18 -0
  117. package/dist/recyclerview/utils/adjustOffsetForRTL.js.map +1 -0
  118. package/dist/recyclerview/utils/componentUtils.d.ts +19 -0
  119. package/dist/recyclerview/utils/componentUtils.d.ts.map +1 -0
  120. package/dist/recyclerview/utils/componentUtils.js +32 -0
  121. package/dist/recyclerview/utils/componentUtils.js.map +1 -0
  122. package/dist/recyclerview/utils/findVisibleIndex.d.ts +24 -0
  123. package/dist/recyclerview/utils/findVisibleIndex.d.ts.map +1 -0
  124. package/dist/recyclerview/utils/findVisibleIndex.js +82 -0
  125. package/dist/recyclerview/utils/findVisibleIndex.js.map +1 -0
  126. package/dist/recyclerview/utils/measureLayout.d.ts +56 -0
  127. package/dist/recyclerview/utils/measureLayout.d.ts.map +1 -0
  128. package/dist/recyclerview/utils/measureLayout.js +77 -0
  129. package/dist/recyclerview/utils/measureLayout.js.map +1 -0
  130. package/dist/tsconfig.tsbuildinfo +1 -1
  131. package/dist/utils/AverageWindow.d.ts +13 -0
  132. package/dist/utils/AverageWindow.d.ts.map +1 -1
  133. package/dist/utils/AverageWindow.js +30 -1
  134. package/dist/utils/AverageWindow.js.map +1 -1
  135. package/package.json +1 -1
  136. package/src/FlashListProps.ts +73 -2
  137. package/src/__tests__/AverageWindow.test.ts +49 -1
  138. package/src/enableNewCore.ts +22 -0
  139. package/src/index.ts +21 -0
  140. package/src/recyclerview/RecycleKeyManager.ts +185 -0
  141. package/src/recyclerview/RecyclerView.tsx +500 -0
  142. package/src/recyclerview/RecyclerViewContextProvider.ts +19 -0
  143. package/src/recyclerview/RecyclerViewManager.ts +379 -0
  144. package/src/recyclerview/RecyclerViewProps.ts +10 -0
  145. package/src/recyclerview/ViewHolder.tsx +173 -0
  146. package/src/recyclerview/ViewHolderCollection.tsx +164 -0
  147. package/src/recyclerview/components/CompatScroller.ts +9 -0
  148. package/src/recyclerview/components/CompatView.ts +9 -0
  149. package/src/recyclerview/components/ScrollAnchor.tsx +53 -0
  150. package/src/recyclerview/components/StickyHeaders.tsx +210 -0
  151. package/src/recyclerview/helpers/ConsecutiveNumbers.ts +120 -0
  152. package/src/recyclerview/helpers/EngagedIndicesTracker.ts +191 -0
  153. package/src/recyclerview/hooks/useBoundDetection.ts +127 -0
  154. package/src/recyclerview/hooks/useLayoutState.ts +46 -0
  155. package/src/recyclerview/hooks/useOnLoad.ts +78 -0
  156. package/src/recyclerview/hooks/useRecyclerViewController.tsx +487 -0
  157. package/src/recyclerview/hooks/useRecyclerViewManager.ts +30 -0
  158. package/src/recyclerview/hooks/useRecyclingState.ts +63 -0
  159. package/src/recyclerview/hooks/useSecondaryProps.tsx +119 -0
  160. package/src/recyclerview/hooks/useUnmountFlag.ts +26 -0
  161. package/src/recyclerview/layout-managers/GridLayoutManager.ts +215 -0
  162. package/src/recyclerview/layout-managers/LayoutManager.ts +493 -0
  163. package/src/recyclerview/layout-managers/LinearLayoutManager.ts +167 -0
  164. package/src/recyclerview/layout-managers/MasonryLayoutManager.ts +302 -0
  165. package/src/recyclerview/utils/adjustOffsetForRTL.ts +17 -0
  166. package/src/recyclerview/utils/componentUtils.ts +28 -0
  167. package/src/recyclerview/utils/findVisibleIndex.ts +94 -0
  168. package/src/recyclerview/utils/measureLayout.ts +89 -0
  169. package/src/utils/AverageWindow.ts +33 -0
  170. package/src/viewability/ViewToken.ts +1 -1
@@ -0,0 +1,135 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RecycleKeyManagerImpl = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var RecycleKeyManagerImpl = /** @class */ (function () {
6
+ /**
7
+ * Creates a new RecycleKeyManager with a specified maximum number of items.
8
+ * @param maxItems - Maximum number of unique keys that can be active simultaneously.
9
+ * Defaults to Number.MAX_SAFE_INTEGER if not specified.
10
+ */
11
+ function RecycleKeyManagerImpl(maxItems) {
12
+ if (maxItems === void 0) { maxItems = Number.MAX_SAFE_INTEGER; }
13
+ this.maxItems = maxItems;
14
+ this.keyPools = new Map();
15
+ this.keyMap = new Map();
16
+ this.stableIdMap = new Map();
17
+ this.keyCounter = 0;
18
+ }
19
+ /**
20
+ * Gets a key for the specified item type, prioritizing stable ID associations.
21
+ * If a stable ID exists, returns its associated key. Otherwise, either reuses
22
+ * a key from the pool or generates a new one.
23
+ * @param itemType - The type/category of the item
24
+ * @param stableId - Optional unique identifier for stable item tracking
25
+ * @param currentKey - Optional current key to maintain if it exists in the pool
26
+ * @returns A unique key for the item
27
+ */
28
+ RecycleKeyManagerImpl.prototype.getKey = function (itemType, stableId, currentKey) {
29
+ // Return existing key if stableId is already mapped
30
+ if (stableId && this.stableIdMap.has(stableId)) {
31
+ return this.stableIdMap.get(stableId);
32
+ }
33
+ // Get or create the pool for this item type
34
+ var pool = this.keyPools.get(itemType);
35
+ if (!pool) {
36
+ pool = new Set();
37
+ this.keyPools.set(itemType, pool);
38
+ }
39
+ var key;
40
+ // Reuse existing key from pool if available
41
+ if (pool.size > 0) {
42
+ key =
43
+ currentKey && pool.has(currentKey)
44
+ ? currentKey
45
+ : pool.values().next().value;
46
+ pool.delete(key);
47
+ }
48
+ else {
49
+ // Generate new key if pool is empty
50
+ key = this.generateKey();
51
+ }
52
+ // Update mappings with new key information
53
+ this.keyMap.set(key, { itemType: itemType, stableId: stableId });
54
+ if (stableId) {
55
+ this.stableIdMap.set(stableId, key);
56
+ }
57
+ // Ensure we don't exceed the maximum number of active keys
58
+ this.ensurePoolSize();
59
+ return key;
60
+ };
61
+ /**
62
+ * Recycles a key by adding it back to its item type's pool and cleaning up
63
+ * associated mappings. This should be called when a view is no longer visible.
64
+ * @param key - The key to be recycled
65
+ */
66
+ RecycleKeyManagerImpl.prototype.recycleKey = function (key) {
67
+ var keyInfo = this.keyMap.get(key);
68
+ if (!keyInfo) {
69
+ return;
70
+ }
71
+ var itemType = keyInfo.itemType, stableId = keyInfo.stableId;
72
+ // Clean up stable ID mapping if it exists
73
+ if (stableId) {
74
+ this.stableIdMap.delete(stableId);
75
+ }
76
+ // Add key back to its type's pool
77
+ var pool = this.keyPools.get(itemType);
78
+ if (!pool) {
79
+ pool = new Set();
80
+ this.keyPools.set(itemType, pool);
81
+ }
82
+ pool.add(key);
83
+ this.keyMap.delete(key);
84
+ };
85
+ /**
86
+ * Checks if a key is currently available in the recycling pool.
87
+ * @param key - The key to check
88
+ * @returns True if the key is available in the pool, false otherwise
89
+ */
90
+ RecycleKeyManagerImpl.prototype.hasKeyInPool = function (key) {
91
+ return !this.keyMap.has(key);
92
+ };
93
+ /**
94
+ * Clears all recycled keys from the pool, effectively resetting the recycling system.
95
+ * This operation does not affect currently active keys.
96
+ */
97
+ RecycleKeyManagerImpl.prototype.clearPool = function () {
98
+ this.keyPools.clear();
99
+ };
100
+ /**
101
+ * Generates a unique sequential key using an internal counter.
102
+ * @returns A unique key as a string
103
+ */
104
+ RecycleKeyManagerImpl.prototype.generateKey = function () {
105
+ return (this.keyCounter++).toString();
106
+ };
107
+ /**
108
+ * Ensures the total number of active keys doesn't exceed the maximum limit.
109
+ * If the limit is exceeded, recycles the oldest keys until within bounds.
110
+ * Note: This operation may impact performance when dealing with large lists.
111
+ * TODO: Check performance impact of this
112
+ */
113
+ RecycleKeyManagerImpl.prototype.ensurePoolSize = function () {
114
+ var e_1, _a;
115
+ if (this.keyMap.size <= this.maxItems)
116
+ return;
117
+ var keysToRecycle = Array.from(this.keyMap.keys()).slice(0, this.keyMap.size - this.maxItems);
118
+ try {
119
+ for (var keysToRecycle_1 = tslib_1.__values(keysToRecycle), keysToRecycle_1_1 = keysToRecycle_1.next(); !keysToRecycle_1_1.done; keysToRecycle_1_1 = keysToRecycle_1.next()) {
120
+ var key = keysToRecycle_1_1.value;
121
+ this.recycleKey(key);
122
+ }
123
+ }
124
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
125
+ finally {
126
+ try {
127
+ if (keysToRecycle_1_1 && !keysToRecycle_1_1.done && (_a = keysToRecycle_1.return)) _a.call(keysToRecycle_1);
128
+ }
129
+ finally { if (e_1) throw e_1.error; }
130
+ }
131
+ };
132
+ return RecycleKeyManagerImpl;
133
+ }());
134
+ exports.RecycleKeyManagerImpl = RecycleKeyManagerImpl;
135
+ //# sourceMappingURL=RecycleKeyManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RecycleKeyManager.js","sourceRoot":"","sources":["../../src/recyclerview/RecycleKeyManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * RecyclerView is a high-performance list component that efficiently renders and recycles list items.
3
+ * It's designed to handle large lists with optimal memory usage and smooth scrolling.
4
+ */
5
+ import React from "react";
6
+ import { RecyclerViewProps } from "./RecyclerViewProps";
7
+ declare type RecyclerViewType = <T>(props: RecyclerViewProps<T> & {
8
+ ref?: React.Ref<any>;
9
+ }) => React.JSX.Element;
10
+ declare const RecyclerView: RecyclerViewType;
11
+ export { RecyclerView };
12
+ //# sourceMappingURL=RecyclerView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RecyclerView.d.ts","sourceRoot":"","sources":["../../src/recyclerview/RecyclerView.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KASN,MAAM,OAAO,CAAC;AAqBf,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAwcxD,aAAK,gBAAgB,GAAG,CAAC,CAAC,EACxB,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG;IAAE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;CAAE,KACnD,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;AAGvB,QAAA,MAAM,YAAY,kBAEG,CAAC;AAEtB,OAAO,EAAE,YAAY,EAAE,CAAC"}
@@ -0,0 +1,283 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RecyclerView = void 0;
4
+ var tslib_1 = require("tslib");
5
+ /**
6
+ * RecyclerView is a high-performance list component that efficiently renders and recycles list items.
7
+ * It's designed to handle large lists with optimal memory usage and smooth scrolling.
8
+ */
9
+ var react_1 = tslib_1.__importStar(require("react"));
10
+ var react_native_1 = require("react-native");
11
+ var measureLayout_1 = require("./utils/measureLayout");
12
+ var RecyclerViewContextProvider_1 = require("./RecyclerViewContextProvider");
13
+ var useLayoutState_1 = require("./hooks/useLayoutState");
14
+ var useRecyclerViewManager_1 = require("./hooks/useRecyclerViewManager");
15
+ var useOnLoad_1 = require("./hooks/useOnLoad");
16
+ var ViewHolderCollection_1 = require("./ViewHolderCollection");
17
+ var CompatView_1 = require("./components/CompatView");
18
+ var useBoundDetection_1 = require("./hooks/useBoundDetection");
19
+ var adjustOffsetForRTL_1 = require("./utils/adjustOffsetForRTL");
20
+ var useSecondaryProps_1 = require("./hooks/useSecondaryProps");
21
+ var StickyHeaders_1 = require("./components/StickyHeaders");
22
+ var ScrollAnchor_1 = require("./components/ScrollAnchor");
23
+ var useRecyclerViewController_1 = require("./hooks/useRecyclerViewController");
24
+ /**
25
+ * Main RecyclerView component that handles list rendering, scrolling, and item recycling.
26
+ * @template T - The type of items in the list
27
+ */
28
+ var RecyclerViewComponent = function (props, ref) {
29
+ var _a;
30
+ // Destructure props and initialize refs
31
+ var horizontal = props.horizontal, renderItem = props.renderItem, data = props.data, extraData = props.extraData, onLoad = props.onLoad, CellRendererComponent = props.CellRendererComponent, overrideProps = props.overrideProps, refreshing = props.refreshing, onRefresh = props.onRefresh, progressViewOffset = props.progressViewOffset, ListEmptyComponent = props.ListEmptyComponent, ListHeaderComponent = props.ListHeaderComponent, ListHeaderComponentStyle = props.ListHeaderComponentStyle, ListFooterComponent = props.ListFooterComponent, ListFooterComponentStyle = props.ListFooterComponentStyle, ItemSeparatorComponent = props.ItemSeparatorComponent, renderScrollComponent = props.renderScrollComponent, onScroll = props.onScroll, disableRecycling = props.disableRecycling, style = props.style, stickyHeaderIndices = props.stickyHeaderIndices, maintainVisibleContentPosition = props.maintainVisibleContentPosition, onCommitLayoutEffect = props.onCommitLayoutEffect, rest = tslib_1.__rest(props, ["horizontal", "renderItem", "data", "extraData", "onLoad", "CellRendererComponent", "overrideProps", "refreshing", "onRefresh", "progressViewOffset", "ListEmptyComponent", "ListHeaderComponent", "ListHeaderComponentStyle", "ListFooterComponent", "ListFooterComponentStyle", "ItemSeparatorComponent", "renderScrollComponent", "onScroll", "disableRecycling", "style", "stickyHeaderIndices", "maintainVisibleContentPosition", "onCommitLayoutEffect"]);
32
+ // Core refs for managing scroll view, internal view, and child container
33
+ var scrollViewRef = (0, react_1.useRef)(null);
34
+ var internalViewRef = (0, react_1.useRef)(null);
35
+ var childContainerViewRef = (0, react_1.useRef)(null);
36
+ var containerViewSizeRef = (0, react_1.useRef)(undefined);
37
+ var pendingChildIds = (0, react_1.useRef)(new Set()).current;
38
+ // Track scroll position
39
+ var scrollY = (0, react_1.useRef)(new react_native_1.Animated.Value(0)).current;
40
+ // Refs for sticky headers and scroll anchoring
41
+ var stickyHeaderRef = (0, react_1.useRef)(null);
42
+ var scrollAnchorRef = (0, react_1.useRef)(null);
43
+ // State for managing layout and render updates
44
+ var _b = tslib_1.__read((0, useLayoutState_1.useLayoutState)(0), 2), _ = _b[0], setLayoutTreeId = _b[1];
45
+ var _c = tslib_1.__read((0, react_1.useState)(0), 2), __ = _c[0], setRenderId = _c[1];
46
+ // Map to store refs for each item in the list
47
+ var refHolder = (0, react_1.useMemo)(function () { return new Map(); }, []);
48
+ // Initialize core RecyclerView manager and content offset management
49
+ var recyclerViewManager = (0, useRecyclerViewManager_1.useRecyclerViewManager)(props).recyclerViewManager;
50
+ var _d = (0, useRecyclerViewController_1.useRecyclerViewController)(recyclerViewManager, ref, scrollViewRef, scrollAnchorRef, props), applyContentOffset = _d.applyContentOffset, applyInitialScrollIndex = _d.applyInitialScrollIndex;
51
+ // Initialize view holder collection ref
52
+ var viewHolderCollectionRef = (0, react_1.useRef)(null);
53
+ // Hook to handle list loading
54
+ (0, useOnLoad_1.useOnListLoad)(recyclerViewManager, onLoad);
55
+ // Hook to detect when scrolling reaches list bounds
56
+ var checkBounds = (0, useBoundDetection_1.useBoundDetection)(recyclerViewManager, props, scrollViewRef).checkBounds;
57
+ /**
58
+ * Initialize the RecyclerView by measuring and setting up the window size
59
+ * This effect runs when the component mounts or when layout changes
60
+ */
61
+ (0, react_1.useLayoutEffect)(function () {
62
+ if (internalViewRef.current && childContainerViewRef.current) {
63
+ // Measure the outer and inner container layouts
64
+ var outerViewLayout = (0, measureLayout_1.measureLayout)(internalViewRef.current, undefined);
65
+ var childViewLayout = (0, measureLayout_1.measureLayoutRelative)(childContainerViewRef.current, internalViewRef.current, undefined);
66
+ containerViewSizeRef.current = outerViewLayout;
67
+ // Calculate offset of first item
68
+ var firstItemOffset = horizontal
69
+ ? childViewLayout.x - outerViewLayout.x
70
+ : childViewLayout.y - outerViewLayout.y;
71
+ // Update the RecyclerView manager with window dimensions
72
+ recyclerViewManager.updateLayoutParams({
73
+ width: horizontal ? outerViewLayout.width : childViewLayout.width,
74
+ height: horizontal ? childViewLayout.height : outerViewLayout.height,
75
+ }, firstItemOffset);
76
+ }
77
+ });
78
+ /**
79
+ * Effect to handle layout updates for list items
80
+ * This ensures proper positioning and recycling of items
81
+ */
82
+ (0, react_1.useLayoutEffect)(function () {
83
+ var _a, _b;
84
+ if (pendingChildIds.size > 0) {
85
+ return;
86
+ }
87
+ var layoutInfo = Array.from(refHolder, function (_a) {
88
+ var _b = tslib_1.__read(_a, 2), index = _b[0], viewHolderRef = _b[1];
89
+ var layout = (0, measureLayout_1.measureLayout)(viewHolderRef.current, recyclerViewManager.getLayout(index));
90
+ //comapre height with stored layout
91
+ //const storedLayout = recyclerViewManager.getLayout(index);
92
+ // if (
93
+ // storedLayout.height !== layout.height &&
94
+ // storedLayout.isHeightMeasured
95
+ // ) {
96
+ // console.log(
97
+ // "height changed",
98
+ // index,
99
+ // layout.height,
100
+ // storedLayout.height
101
+ // );
102
+ // }
103
+ return { index: index, dimensions: layout };
104
+ });
105
+ if (recyclerViewManager.modifyChildrenLayout(layoutInfo, (_a = data === null || data === void 0 ? void 0 : data.length) !== null && _a !== void 0 ? _a : 0)) {
106
+ // Trigger re-render if layout modifications were made
107
+ setRenderId(function (prev) { return prev + 1; });
108
+ }
109
+ else {
110
+ //console.log("commitLayout");
111
+ // TODO: reduce perf impact of commitLayout
112
+ (_b = viewHolderCollectionRef.current) === null || _b === void 0 ? void 0 : _b.commitLayout();
113
+ applyContentOffset();
114
+ }
115
+ });
116
+ /**
117
+ * Scroll event handler that manages scroll position, velocity, and RTL support
118
+ */
119
+ var onScrollHandler = (0, react_1.useCallback)(function (event) {
120
+ var _a;
121
+ var velocity = event.nativeEvent.velocity;
122
+ var scrollOffset = horizontal
123
+ ? event.nativeEvent.contentOffset.x
124
+ : event.nativeEvent.contentOffset.y;
125
+ // Handle RTL (Right-to-Left) layout adjustments
126
+ if (react_native_1.I18nManager.isRTL && horizontal) {
127
+ scrollOffset = (0, adjustOffsetForRTL_1.adjustOffsetForRTL)(scrollOffset, event.nativeEvent.contentSize.width, event.nativeEvent.layoutMeasurement.width);
128
+ if (velocity) {
129
+ velocity = {
130
+ x: -velocity.x,
131
+ y: velocity.y,
132
+ };
133
+ }
134
+ }
135
+ // Update scroll position and trigger re-render if needed
136
+ if (recyclerViewManager.updateScrollOffset(scrollOffset, velocity)) {
137
+ setRenderId(function (prev) { return prev + 1; });
138
+ }
139
+ // Update sticky headers and check bounds
140
+ (_a = stickyHeaderRef.current) === null || _a === void 0 ? void 0 : _a.reportScrollEvent(event.nativeEvent);
141
+ checkBounds();
142
+ // Record interaction and compute item visibility
143
+ recyclerViewManager.recordInteraction();
144
+ recyclerViewManager.computeItemViewability();
145
+ // Call user-provided onScroll handler
146
+ onScroll === null || onScroll === void 0 ? void 0 : onScroll(event);
147
+ }, [horizontal, recyclerViewManager]);
148
+ // Create context for child components
149
+ var recyclerViewContext = (0, react_1.useMemo)(function () {
150
+ return {
151
+ layout: function () {
152
+ setLayoutTreeId(function (prev) { return prev + 1; });
153
+ },
154
+ getRef: function () {
155
+ return ref;
156
+ },
157
+ getScrollViewRef: function () {
158
+ return scrollViewRef;
159
+ },
160
+ markChildLayoutAsPending: function (id) {
161
+ pendingChildIds.add(id);
162
+ },
163
+ unmarkChildLayoutAsPending: function (id) {
164
+ if (pendingChildIds.has(id)) {
165
+ pendingChildIds.delete(id);
166
+ recyclerViewContext.layout();
167
+ }
168
+ },
169
+ };
170
+ }, [setLayoutTreeId]);
171
+ var parentRecyclerViewContext = (0, RecyclerViewContextProvider_1.useRecyclerViewContext)();
172
+ var recyclerViewId = (0, react_1.useId)();
173
+ /**
174
+ * Validates that item dimensions match the expected layout
175
+ */
176
+ var validateItemSize = (0, react_1.useCallback)(function (index, size) {
177
+ var _a, _b, _c, _d;
178
+ var layout = recyclerViewManager.getLayout(index);
179
+ var width = Math.max(Math.min(layout.width, (_a = layout.maxWidth) !== null && _a !== void 0 ? _a : Infinity), (_b = layout.minWidth) !== null && _b !== void 0 ? _b : 0);
180
+ var height = Math.max(Math.min(layout.height, (_c = layout.maxHeight) !== null && _c !== void 0 ? _c : Infinity), (_d = layout.minHeight) !== null && _d !== void 0 ? _d : 0);
181
+ if ((0, measureLayout_1.areDimensionsNotEqual)(width, size.width) ||
182
+ (0, measureLayout_1.areDimensionsNotEqual)(height, size.height)) {
183
+ // console.log(
184
+ // "invalid size",
185
+ // index,
186
+ // width,
187
+ // size.width,
188
+ // height,
189
+ // size.height
190
+ // );
191
+ // TODO: Add a warning for missing useLayoutState
192
+ recyclerViewContext.layout();
193
+ }
194
+ }, [recyclerViewManager]);
195
+ // Get secondary props and components
196
+ var _e = (0, useSecondaryProps_1.useSecondaryProps)(props), refreshControl = _e.refreshControl, renderHeader = _e.renderHeader, renderFooter = _e.renderFooter, renderEmpty = _e.renderEmpty, CompatScrollView = _e.CompatScrollView;
197
+ if (!recyclerViewManager.getIsFirstLayoutComplete() &&
198
+ recyclerViewManager.getDataLength() > 0) {
199
+ parentRecyclerViewContext === null || parentRecyclerViewContext === void 0 ? void 0 : parentRecyclerViewContext.markChildLayoutAsPending(recyclerViewId);
200
+ }
201
+ // Render sticky headers if configured
202
+ var stickyHeaders = (0, react_1.useMemo)(function () {
203
+ if (data &&
204
+ data.length > 0 &&
205
+ stickyHeaderIndices &&
206
+ stickyHeaderIndices.length > 0) {
207
+ return (react_1.default.createElement(StickyHeaders_1.StickyHeaders, { stickyHeaderIndices: stickyHeaderIndices, data: data, renderItem: renderItem, scrollY: scrollY, stickyHeaderRef: stickyHeaderRef, recyclerViewManager: recyclerViewManager, extraData: extraData }));
208
+ }
209
+ return null;
210
+ }, [data, stickyHeaderIndices, renderItem, extraData]);
211
+ // Set up scroll event handling with animation support for sticky headers
212
+ var animatedEvent = (0, react_1.useMemo)(function () {
213
+ if (stickyHeaders) {
214
+ return react_native_1.Animated.event([{ nativeEvent: { contentOffset: { y: scrollY } } }], { useNativeDriver: true, listener: onScrollHandler });
215
+ }
216
+ return onScrollHandler;
217
+ }, [onScrollHandler, stickyHeaders]);
218
+ var maintainVisibleContentPositionInternal = (0, react_1.useMemo)(function () {
219
+ if ((maintainVisibleContentPosition === null || maintainVisibleContentPosition === void 0 ? void 0 : maintainVisibleContentPosition.disabled) || horizontal) {
220
+ return undefined;
221
+ }
222
+ else {
223
+ return tslib_1.__assign(tslib_1.__assign({}, maintainVisibleContentPosition), { minIndexForVisible: 0 });
224
+ }
225
+ }, [maintainVisibleContentPosition]);
226
+ var shouldRenderFromBottom = (_a = maintainVisibleContentPositionInternal === null || maintainVisibleContentPositionInternal === void 0 ? void 0 : maintainVisibleContentPositionInternal.startRenderingFromBottom) !== null && _a !== void 0 ? _a : false;
227
+ // Calculate minimum height adjustment for bottom rendering
228
+ var adjustmentMinHeight = recyclerViewManager.hasLayout()
229
+ ? Math.max(0, recyclerViewManager.getWindowSize().height -
230
+ recyclerViewManager.getChildContainerDimensions().height -
231
+ recyclerViewManager.firstItemOffset)
232
+ : 0;
233
+ // Create view for measuring bounded size
234
+ var viewToMeasureBoundedSize = (0, react_1.useMemo)(function () {
235
+ return (react_1.default.createElement(CompatView_1.CompatView, { style: {
236
+ height: horizontal ? undefined : 0,
237
+ width: horizontal ? 0 : undefined,
238
+ minHeight: shouldRenderFromBottom ? adjustmentMinHeight : undefined,
239
+ }, ref: childContainerViewRef }));
240
+ }, [horizontal, shouldRenderFromBottom, adjustmentMinHeight]);
241
+ //console.log("render");
242
+ // Render the main RecyclerView structure
243
+ return (react_1.default.createElement(RecyclerViewContextProvider_1.RecyclerViewContextProvider, { value: recyclerViewContext },
244
+ react_1.default.createElement(CompatView_1.CompatView, { style: tslib_1.__assign({ flex: horizontal ? undefined : 1 }, style), ref: internalViewRef, collapsable: false, onLayout: function (event) {
245
+ var _a, _b, _c, _d;
246
+ if ((0, measureLayout_1.areDimensionsNotEqual)(event.nativeEvent.layout.width, (_b = (_a = containerViewSizeRef.current) === null || _a === void 0 ? void 0 : _a.width) !== null && _b !== void 0 ? _b : 0) ||
247
+ (0, measureLayout_1.areDimensionsNotEqual)(event.nativeEvent.layout.height, (_d = (_c = containerViewSizeRef.current) === null || _c === void 0 ? void 0 : _c.height) !== null && _d !== void 0 ? _d : 0)) {
248
+ // console.log(
249
+ // "onLayout",
250
+ // recyclerViewManager.getWindowSize(),
251
+ // event.nativeEvent.layout
252
+ // );
253
+ recyclerViewContext.layout();
254
+ }
255
+ } },
256
+ react_1.default.createElement(CompatScrollView, tslib_1.__assign({}, rest, { horizontal: horizontal, ref: scrollViewRef, onScroll: animatedEvent,
257
+ // TODO: evaluate perf
258
+ maintainVisibleContentPosition: maintainVisibleContentPositionInternal, refreshControl: refreshControl }, overrideProps),
259
+ maintainVisibleContentPositionInternal && (react_1.default.createElement(ScrollAnchor_1.ScrollAnchor, { scrollAnchorRef: scrollAnchorRef })),
260
+ renderHeader,
261
+ viewToMeasureBoundedSize,
262
+ react_1.default.createElement(ViewHolderCollection_1.ViewHolderCollection, { viewHolderCollectionRef: viewHolderCollectionRef, data: data, horizontal: horizontal, renderStack: recyclerViewManager.getRenderStack(), getLayout: function (index) { return recyclerViewManager.getLayout(index); }, refHolder: refHolder, onSizeChanged: validateItemSize, renderItem: renderItem, extraData: extraData, onCommitLayoutEffect: function () {
263
+ applyInitialScrollIndex();
264
+ parentRecyclerViewContext === null || parentRecyclerViewContext === void 0 ? void 0 : parentRecyclerViewContext.unmarkChildLayoutAsPending(recyclerViewId);
265
+ onCommitLayoutEffect === null || onCommitLayoutEffect === void 0 ? void 0 : onCommitLayoutEffect();
266
+ }, onCommitEffect: function () {
267
+ applyInitialScrollIndex();
268
+ checkBounds();
269
+ recyclerViewManager.computeItemViewability();
270
+ recyclerViewManager.disableRecycling = Boolean(disableRecycling);
271
+ }, CellRendererComponent: CellRendererComponent, ItemSeparatorComponent: ItemSeparatorComponent, getChildContainerLayout: function () {
272
+ return recyclerViewManager.hasLayout()
273
+ ? recyclerViewManager.getChildContainerDimensions()
274
+ : undefined;
275
+ } }),
276
+ renderEmpty,
277
+ renderFooter),
278
+ stickyHeaders)));
279
+ };
280
+ // Create and export the memoized, forwarded ref component
281
+ var RecyclerView = react_1.default.memo((0, react_1.forwardRef)(RecyclerViewComponent));
282
+ exports.RecyclerView = RecyclerView;
283
+ //# sourceMappingURL=RecyclerView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RecyclerView.js","sourceRoot":"","sources":["../../src/recyclerview/RecyclerView.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /// <reference types="react" />
2
+ import { CompatScroller } from "./components/CompatScroller";
3
+ export interface RecyclerViewContext {
4
+ layout: () => void;
5
+ getRef: () => React.Ref<any>;
6
+ getScrollViewRef: () => React.RefObject<CompatScroller | null>;
7
+ markChildLayoutAsPending: (id: string) => void;
8
+ unmarkChildLayoutAsPending: (id: string) => void;
9
+ }
10
+ export declare const RecyclerViewContextProvider: import("react").Provider<RecyclerViewContext | undefined>;
11
+ export declare function useRecyclerViewContext(): RecyclerViewContext | undefined;
12
+ //# sourceMappingURL=RecyclerViewContextProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RecyclerViewContextProvider.d.ts","sourceRoot":"","sources":["../../src/recyclerview/RecyclerViewContextProvider.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,MAAM,EAAE,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,gBAAgB,EAAE,MAAM,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAC/D,wBAAwB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,0BAA0B,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CAClD;AAMD,eAAO,MAAM,2BAA2B,2DAAuC,CAAC;AAChF,wBAAgB,sBAAsB,oCAErC"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useRecyclerViewContext = exports.RecyclerViewContextProvider = void 0;
4
+ var react_1 = require("react");
5
+ var RecyclerViewContextInstance = (0, react_1.createContext)(undefined);
6
+ exports.RecyclerViewContextProvider = RecyclerViewContextInstance.Provider;
7
+ function useRecyclerViewContext() {
8
+ return (0, react_1.useContext)(RecyclerViewContextInstance);
9
+ }
10
+ exports.useRecyclerViewContext = useRecyclerViewContext;
11
+ //# sourceMappingURL=RecyclerViewContextProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RecyclerViewContextProvider.js","sourceRoot":"","sources":["../../src/recyclerview/RecyclerViewContextProvider.ts"],"names":[],"mappings":";;;AAAA,+BAAkD;AAWlD,IAAM,2BAA2B,GAAG,IAAA,qBAAa,EAE/C,SAAS,CAAC,CAAC;AAEA,QAAA,2BAA2B,GAAG,2BAA2B,CAAC,QAAQ,CAAC;AAChF,SAAgB,sBAAsB;IACpC,OAAO,IAAA,kBAAU,EAAC,2BAA2B,CAAC,CAAC;AACjD,CAAC;AAFD,wDAEC"}
@@ -0,0 +1,52 @@
1
+ import { ConsecutiveNumbers } from "./helpers/ConsecutiveNumbers";
2
+ import { RVDimension, RVLayoutInfo } from "./layout-managers/LayoutManager";
3
+ import { RecyclerViewProps } from "./RecyclerViewProps";
4
+ import { Velocity } from "./helpers/EngagedIndicesTracker";
5
+ export declare class RecyclerViewManager<T> {
6
+ private initialDrawBatchSize;
7
+ private engagedIndicesTracker;
8
+ private recycleKeyManager;
9
+ private layoutManager?;
10
+ private renderStack;
11
+ private isFirstLayoutComplete;
12
+ private hasRenderedProgressively;
13
+ private props;
14
+ private itemViewabilityManager;
15
+ disableRecycling: boolean;
16
+ firstItemOffset: number;
17
+ constructor(props: RecyclerViewProps<T>);
18
+ private updateRenderStack;
19
+ updateProps(props: RecyclerViewProps<T>): void;
20
+ /**
21
+ * Updates the scroll offset and returns the engaged indices if any
22
+ * @param offset
23
+ * @param velocity
24
+ */
25
+ updateScrollOffset(offset: number, velocity?: Velocity): ConsecutiveNumbers | undefined;
26
+ getIsFirstLayoutComplete(): boolean;
27
+ getLayout(index: number): import("./layout-managers/LayoutManager").RVLayout;
28
+ getChildContainerDimensions(): RVDimension;
29
+ getRenderStack(): Map<number, string>;
30
+ getWindowSize(): RVDimension;
31
+ getLastScrollOffset(): number;
32
+ getAbsoluteLastScrollOffset(): number;
33
+ updateLayoutParams(windowSize: RVDimension, firstItemOffset: number): void;
34
+ hasLayout(): boolean;
35
+ getVisibleIndices(): ConsecutiveNumbers;
36
+ getEngagedIndices(): ConsecutiveNumbers;
37
+ modifyChildrenLayout(layoutInfo: RVLayoutInfo[], dataLength: number): boolean;
38
+ computeItemViewability(): void;
39
+ recordInteraction(): void;
40
+ recomputeViewableItems(): void;
41
+ processDataUpdate(): void;
42
+ recomputeEngagedIndices(): ConsecutiveNumbers | undefined;
43
+ dispose(): void;
44
+ getInitialScrollIndex(): number | undefined;
45
+ getDataLength(): number;
46
+ private getLayoutManagerClass;
47
+ private applyInitialScrollAdjustment;
48
+ private renderProgressively;
49
+ private getItemType;
50
+ private getStableId;
51
+ }
52
+ //# sourceMappingURL=RecyclerViewManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RecyclerViewManager.d.ts","sourceRoot":"","sources":["../../src/recyclerview/RecyclerViewManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAElE,OAAO,EACL,WAAW,EACX,YAAY,EAEb,MAAM,iCAAiC,CAAC;AAIzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAGL,QAAQ,EACT,MAAM,iCAAiC,CAAC;AAIzC,qBAAa,mBAAmB,CAAC,CAAC;IAChC,OAAO,CAAC,oBAAoB,CAAK;IACjC,OAAO,CAAC,qBAAqB,CAA0B;IACvD,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,aAAa,CAAC,CAAkB;IAExC,OAAO,CAAC,WAAW,CAAkC;IACrD,OAAO,CAAC,qBAAqB,CAAS;IACtC,OAAO,CAAC,wBAAwB,CAAS;IACzC,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,sBAAsB,CAAwB;IAE/C,gBAAgB,UAAS;IACzB,eAAe,SAAK;gBAEf,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC;IASvC,OAAO,CAAC,iBAAiB,CAgCvB;IAEF,WAAW,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAWvC;;;;OAIG;IACH,kBAAkB,CAChB,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,QAAQ,GAClB,kBAAkB,GAAG,SAAS;IAgBjC,wBAAwB;IAIxB,SAAS,CAAC,KAAK,EAAE,MAAM;IAUvB,2BAA2B;IAS3B,cAAc;IAId,aAAa;IAUb,mBAAmB;IAKnB,2BAA2B;IAI3B,kBAAkB,CAAC,UAAU,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM;IA2CnE,SAAS;IAIT,iBAAiB;IASjB,iBAAiB;IAIjB,oBAAoB,CAClB,UAAU,EAAE,YAAY,EAAE,EAC1B,UAAU,EAAE,MAAM,GACjB,OAAO;IAkBV,sBAAsB;IAUtB,iBAAiB;IAIjB,sBAAsB;IAItB,iBAAiB;IAWjB,uBAAuB,IAAI,kBAAkB,GAAG,SAAS;IAIzD,OAAO;IAIP,qBAAqB;IASrB,aAAa;IAIb,OAAO,CAAC,qBAAqB;IAe7B,OAAO,CAAC,4BAA4B;IA8BpC,OAAO,CAAC,mBAAmB;IAgC3B,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,WAAW;CAMpB"}