| ... | @@ -204,7 +204,7 @@ index ce1fe00001c9e5aee6c6ea8bb2d4757d4586d002..3ccf6f16067152dfcb0c143371e2ec6a | ... | @@ -204,7 +204,7 @@ index ce1fe00001c9e5aee6c6ea8bb2d4757d4586d002..3ccf6f16067152dfcb0c143371e2ec6a |
| 204 | * Number of columns to render items in. | 204 | * Number of columns to render items in. |
| 205 | * @default 1 | 205 | * @default 1 |
| 206 | diff --git a/react-native.js b/react-native.js | 206 | diff --git a/react-native.js b/react-native.js |
| 207 | index b3c5a306b293f797a8b338adfca3060c0f6db22b..89077be4d6833cfaabf9d6d6205d9551505e32b4 100644 | 207 | index b3c5a306b293f797a8b338adfca3060c0f6db22b..4227ed22da8865b7493f47f199f4d8f4a5493efb 100644 |
| 208 | --- a/react-native.js | 208 | --- a/react-native.js |
| 209 | +++ b/react-native.js | 209 | +++ b/react-native.js |
| 210 | @@ -954,7 +954,7 @@ function setInitialRenderState(ctx, { | 210 | @@ -954,7 +954,7 @@ function setInitialRenderState(ctx, { |
| ... | @@ -513,14 +513,6 @@ index b3c5a306b293f797a8b338adfca3060c0f6db22b..89077be4d6833cfaabf9d6d6205d9551 | ... | @@ -513,14 +513,6 @@ index b3c5a306b293f797a8b338adfca3060c0f6db22b..89077be4d6833cfaabf9d6d6205d9551 |
| 513 | estimatedItemSize = 100, | 513 | estimatedItemSize = 100, |
| 514 | estimatedListSize, | 514 | estimatedListSize, |
| 515 | extraData, | 515 | extraData, |
| 516 | @@ -7105,6 +7260,7 @@ var LegendListInner = typedForwardRef(function LegendListInner2(props, forwarded | | |
| 517 | onLayout: onLayoutProp, | | |
| 518 | onLoad, | | |
| 519 | onMomentumScrollEnd, | | |
| 520 | + onScrollBeginDrag, | | |
| 521 | onRefresh, | | |
| 522 | onScroll: onScrollProp, | | |
| 523 | onScrollBeginDrag, | | |
| 524 | @@ -7200,7 +7356,7 @@ var LegendListInner = typedForwardRef(function LegendListInner2(props, forwarded | 516 | @@ -7200,7 +7356,7 @@ var LegendListInner = typedForwardRef(function LegendListInner2(props, forwarded |
| 525 | const combinedRef = useCombinedRef(refScroller, refScrollView); | 517 | const combinedRef = useCombinedRef(refScroller, refScrollView); |
| 526 | const keyExtractor = keyExtractorProp != null ? keyExtractorProp : ((_item, index) => index.toString()); | 518 | const keyExtractor = keyExtractorProp != null ? keyExtractorProp : ((_item, index) => index.toString()); |
| ... | @@ -925,6 +917,62 @@ index 40e87cda8c9bc79a889e5542f29af429a24b24d4..2d556eecb0bafe2f54084c809f82144c | ... | @@ -925,6 +917,62 @@ index 40e87cda8c9bc79a889e5542f29af429a24b24d4..2d556eecb0bafe2f54084c809f82144c |
| 925 | onScroll: onScrollHandler, | 917 | onScroll: onScrollHandler, |
| 926 | recycleItems, | 918 | recycleItems, |
| 927 | refreshControl: refreshControlElement ? stylePaddingTopState > 0 ? React2.cloneElement(refreshControlElement, { | 919 | refreshControl: refreshControlElement ? stylePaddingTopState > 0 ? React2.cloneElement(refreshControlElement, { |
| | 920 | diff --git a/react.js b/react.js |
| | 921 | index 914d2dafaafa001c9ab6791a0a0581659295e333..06466096ceb96ef8773f7f7e202a19c9b774d49b 100644 |
| | 922 | --- a/react.js |
| | 923 | +++ b/react.js |
| | 924 | @@ -4702,7 +4702,8 @@ function maybeUpdateAnchoredEndSpace(ctx) { |
| | 925 | contentBelowAnchor = Math.max(0, contentBelowAnchor - ctx.scrollAxisGap); |
| | 926 | contentBelowAnchor += (ctx.values.get("footerSize") || 0) + getStylePaddingEnd(state.props); |
| | 927 | isReady = !hasUnknownTailSize; |
| | 928 | - nextSize = hasUnknownTailSize ? previousSize || 0 : Math.max(0, state.scrollLength - contentBelowAnchor - anchorOffset); |
| | 929 | + const knownSizeBound = Math.max(0, state.scrollLength - contentBelowAnchor - anchorOffset); |
| | 930 | + nextSize = hasUnknownTailSize ? Math.min(previousSize || 0, knownSizeBound) : knownSizeBound; |
| | 931 | } else if (anchorIndex >= 0) { |
| | 932 | isReady = false; |
| | 933 | } |
| | 934 | @@ -4721,7 +4722,13 @@ function maybeUpdateAnchoredEndSpace(ctx) { |
| | 935 | updateContentMetricsState(ctx); |
| | 936 | updateScroll(ctx, state.scroll, true, { markHasScrolled: false }); |
| | 937 | } |
| | 938 | (_b = anchoredEndSpace == null ? void 0 : anchoredEndSpace.onReady) == null ? void 0 : _b.call(anchoredEndSpace, { anchorIndex: nextAnchorIndex, anchorKey: nextAnchorKey, size: nextSize }); |
| | 939 | + } else if (!isReady && didSizeChange && nextSize < (previousSize || 0)) { |
| | 940 | + set$(ctx, "anchoredEndSpaceSize", nextSize); |
| | 941 | + (_a3 = anchoredEndSpace == null ? void 0 : anchoredEndSpace.onSizeChanged) == null ? void 0 : _a3.call(anchoredEndSpace, nextSize); |
| | 942 | + if (anchoredEndSpace == null ? void 0 : anchoredEndSpace.includeInEndInset) { |
| | 943 | + updateScroll(ctx, state.scroll, true, { markHasScrolled: false }); |
| | 944 | + } |
| | 945 | } |
| | 946 | return nextSize; |
| | 947 | } |
| | 948 | diff --git a/react.mjs b/react.mjs |
| | 949 | index 95465f2ab89ce41a10553f58af83618f7310e83c..4b5f06c60f1e8bbd9035a49980d9e86820262da4 100644 |
| | 950 | --- a/react.mjs |
| | 951 | +++ b/react.mjs |
| | 952 | @@ -4681,7 +4681,8 @@ function maybeUpdateAnchoredEndSpace(ctx) { |
| | 953 | contentBelowAnchor = Math.max(0, contentBelowAnchor - ctx.scrollAxisGap); |
| | 954 | contentBelowAnchor += (ctx.values.get("footerSize") || 0) + getStylePaddingEnd(state.props); |
| | 955 | isReady = !hasUnknownTailSize; |
| | 956 | - nextSize = hasUnknownTailSize ? previousSize || 0 : Math.max(0, state.scrollLength - contentBelowAnchor - anchorOffset); |
| | 957 | + const knownSizeBound = Math.max(0, state.scrollLength - contentBelowAnchor - anchorOffset); |
| | 958 | + nextSize = hasUnknownTailSize ? Math.min(previousSize || 0, knownSizeBound) : knownSizeBound; |
| | 959 | } else if (anchorIndex >= 0) { |
| | 960 | isReady = false; |
| | 961 | } |
| | 962 | @@ -4700,7 +4701,13 @@ function maybeUpdateAnchoredEndSpace(ctx) { |
| | 963 | updateContentMetricsState(ctx); |
| | 964 | updateScroll(ctx, state.scroll, true, { markHasScrolled: false }); |
| | 965 | } |
| | 966 | (_b = anchoredEndSpace == null ? void 0 : anchoredEndSpace.onReady) == null ? void 0 : _b.call(anchoredEndSpace, { anchorIndex: nextAnchorIndex, anchorKey: nextAnchorKey, size: nextSize }); |
| | 967 | + } else if (!isReady && didSizeChange && nextSize < (previousSize || 0)) { |
| | 968 | + set$(ctx, "anchoredEndSpaceSize", nextSize); |
| | 969 | + (_a3 = anchoredEndSpace == null ? void 0 : anchoredEndSpace.onSizeChanged) == null ? void 0 : _a3.call(anchoredEndSpace, nextSize); |
| | 970 | + if (anchoredEndSpace == null ? void 0 : anchoredEndSpace.includeInEndInset) { |
| | 971 | + updateScroll(ctx, state.scroll, true, { markHasScrolled: false }); |
| | 972 | + } |
| | 973 | } |
| | 974 | return nextSize; |
| | 975 | } |
| 928 | diff --git a/reanimated.d.ts b/reanimated.d.ts | 976 | diff --git a/reanimated.d.ts b/reanimated.d.ts |
| 929 | index e5043320700b12f34f4c0babbc341f85ca8135c1..2ce63830a28636b21937a0741fd0e613dae950fe 100644 | 977 | index e5043320700b12f34f4c0babbc341f85ca8135c1..2ce63830a28636b21937a0741fd0e613dae950fe 100644 |
| 930 | --- a/reanimated.d.ts | 978 | --- a/reanimated.d.ts |