react-native 0.83.0-nightly-20251007-854268275 → 0.83.0-nightly-20251008-31bff4e09
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.
- package/Libraries/Animated/nodes/AnimatedColor.js +26 -10
- package/Libraries/Core/ReactNativeVersion.js +1 -1
- package/React/Base/RCTBridgeModule.h +2 -2
- package/React/Base/RCTVersion.m +1 -1
- package/React/FBReactNativeSpec/FBReactNativeSpecJSI-generated.cpp +6 -0
- package/React/FBReactNativeSpec/FBReactNativeSpecJSI.h +9 -0
- package/ReactAndroid/api/ReactAndroid.api +20 -0
- package/ReactAndroid/gradle.properties +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt +7 -1
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt +11 -1
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt +3 -1
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt +3 -1
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt +12 -1
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt +3 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java +10 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.kt +3 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java +19 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewHelper.kt +45 -16
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.kt +3 -0
- package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp +15 -1
- package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h +4 -1
- package/ReactCommon/cxxreact/ReactNativeVersion.h +1 -1
- package/ReactCommon/hermes/inspector-modern/chrome/HermesRuntimeAgentDelegate.cpp +3 -4
- package/ReactCommon/jsinspector-modern/HostAgent.cpp +19 -0
- package/ReactCommon/jsinspector-modern/NetworkIOAgent.cpp +4 -4
- package/ReactCommon/jsinspector-modern/SessionState.h +1 -0
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp +5 -1
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h +6 -1
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.cpp +37 -19
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.h +4 -2
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h +5 -1
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDynamicProvider.h +10 -1
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsProvider.h +2 -1
- package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.cpp +7 -2
- package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h +4 -2
- package/ReactCommon/react/renderer/animationbackend/AnimationBackend.h +8 -7
- package/ReactCommon/react/renderer/components/scrollview/platform/android/react/renderer/components/scrollview/AndroidHorizontalScrollContentViewShadowNode.h +5 -1
- package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageFetcher.cpp +37 -12
- package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageFetcher.h +7 -14
- package/package.json +8 -8
- package/sdks/hermesc/osx-bin/hermes +0 -0
- package/sdks/hermesc/osx-bin/hermesc +0 -0
- package/sdks/hermesc/win64-bin/hermesc.exe +0 -0
- package/src/private/featureflags/ReactNativeFeatureFlags.js +6 -1
- package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +2 -1
- package/types_generated/Libraries/Animated/nodes/AnimatedColor.d.ts +5 -1
|
@@ -110,6 +110,27 @@ function isRgbaAnimatedValue(value: any): boolean {
|
|
|
110
110
|
);
|
|
111
111
|
}
|
|
112
112
|
|
|
113
|
+
export function getRgbaValueAndNativeColor(
|
|
114
|
+
value: RgbaValue | ColorValue,
|
|
115
|
+
): $ReadOnly<{
|
|
116
|
+
rgbaValue: RgbaValue,
|
|
117
|
+
nativeColor?: NativeColorValue,
|
|
118
|
+
}> {
|
|
119
|
+
const processedColor: RgbaValue | NativeColorValue =
|
|
120
|
+
// $FlowFixMe[incompatible-type] - Type is verified above
|
|
121
|
+
processColor((value: ColorValue | RgbaValue)) ?? defaultColor;
|
|
122
|
+
if (isRgbaValue(processedColor)) {
|
|
123
|
+
// $FlowFixMe[incompatible-type] - Type is verified above
|
|
124
|
+
return {rgbaValue: (processedColor: RgbaValue)};
|
|
125
|
+
} else {
|
|
126
|
+
return {
|
|
127
|
+
// $FlowFixMe[incompatible-type] - Type is verified above
|
|
128
|
+
nativeColor: (processedColor: NativeColorValue),
|
|
129
|
+
rgbaValue: defaultColor,
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
113
134
|
export default class AnimatedColor extends AnimatedWithChildren {
|
|
114
135
|
r: AnimatedValue;
|
|
115
136
|
g: AnimatedValue;
|
|
@@ -132,18 +153,13 @@ export default class AnimatedColor extends AnimatedWithChildren {
|
|
|
132
153
|
this.b = rgbaAnimatedValue.b;
|
|
133
154
|
this.a = rgbaAnimatedValue.a;
|
|
134
155
|
} else {
|
|
135
|
-
const
|
|
136
|
-
// $FlowFixMe[incompatible-type] - Type is verified above
|
|
137
|
-
processColor((value: ColorValue | RgbaValue)) ?? defaultColor;
|
|
138
|
-
let initColor: RgbaValue = defaultColor;
|
|
139
|
-
if (isRgbaValue(processedColor)) {
|
|
156
|
+
const {rgbaValue: initColor, nativeColor} = getRgbaValueAndNativeColor(
|
|
140
157
|
// $FlowFixMe[incompatible-type] - Type is verified above
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
this.nativeColor =
|
|
158
|
+
(value: ColorValue | RgbaValue),
|
|
159
|
+
);
|
|
160
|
+
if (nativeColor) {
|
|
161
|
+
this.nativeColor = nativeColor;
|
|
145
162
|
}
|
|
146
|
-
|
|
147
163
|
this.r = new AnimatedValue(initColor.r);
|
|
148
164
|
this.g = new AnimatedValue(initColor.g);
|
|
149
165
|
this.b = new AnimatedValue(initColor.b);
|
|
@@ -29,7 +29,7 @@ export default class ReactNativeVersion {
|
|
|
29
29
|
static major: number = 0;
|
|
30
30
|
static minor: number = 83;
|
|
31
31
|
static patch: number = 0;
|
|
32
|
-
static prerelease: string | null = 'nightly-
|
|
32
|
+
static prerelease: string | null = 'nightly-20251008-31bff4e09';
|
|
33
33
|
|
|
34
34
|
static getVersionString(): string {
|
|
35
35
|
return `${this.major}.${this.minor}.${this.patch}${this.prerelease != null ? `-${this.prerelease}` : ''}`;
|
|
@@ -69,7 +69,7 @@ RCT_EXTERN_C_END
|
|
|
69
69
|
* will be used as the JS module name. If omitted, the JS module name will
|
|
70
70
|
* match the Objective-C class name.
|
|
71
71
|
*/
|
|
72
|
-
#ifndef
|
|
72
|
+
#ifndef RCT_DISABLE_STATIC_MODULE_REGISTRATION
|
|
73
73
|
#define RCT_EXPORT_MODULE(js_name) \
|
|
74
74
|
RCT_EXTERN void RCTRegisterModule(Class); \
|
|
75
75
|
+(NSString *)moduleName \
|
|
@@ -90,7 +90,7 @@ RCT_EXTERN_C_END
|
|
|
90
90
|
return @ #js_name; \
|
|
91
91
|
}
|
|
92
92
|
|
|
93
|
-
#endif //
|
|
93
|
+
#endif // RCT_DISABLE_STATIC_MODULE_REGISTRATION
|
|
94
94
|
|
|
95
95
|
/**
|
|
96
96
|
* Same as RCT_EXPORT_MODULE, but uses __attribute__((constructor)) for module
|
package/React/Base/RCTVersion.m
CHANGED
|
@@ -24,7 +24,7 @@ NSDictionary* RCTGetReactNativeVersion(void)
|
|
|
24
24
|
RCTVersionMajor: @(0),
|
|
25
25
|
RCTVersionMinor: @(83),
|
|
26
26
|
RCTVersionPatch: @(0),
|
|
27
|
-
RCTVersionPrerelease: @"nightly-
|
|
27
|
+
RCTVersionPrerelease: @"nightly-20251008-31bff4e09",
|
|
28
28
|
};
|
|
29
29
|
});
|
|
30
30
|
return __rnVersion;
|
|
@@ -382,6 +382,11 @@ static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_shouldP
|
|
|
382
382
|
rt
|
|
383
383
|
);
|
|
384
384
|
}
|
|
385
|
+
static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_shouldTriggerResponderTransferOnScrollAndroid(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
|
|
386
|
+
return static_cast<NativeReactNativeFeatureFlagsCxxSpecJSI *>(&turboModule)->shouldTriggerResponderTransferOnScrollAndroid(
|
|
387
|
+
rt
|
|
388
|
+
);
|
|
389
|
+
}
|
|
385
390
|
static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_skipActivityIdentityAssertionOnHostPause(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
|
|
386
391
|
return static_cast<NativeReactNativeFeatureFlagsCxxSpecJSI *>(&turboModule)->skipActivityIdentityAssertionOnHostPause(
|
|
387
392
|
rt
|
|
@@ -535,6 +540,7 @@ NativeReactNativeFeatureFlagsCxxSpecJSI::NativeReactNativeFeatureFlagsCxxSpecJSI
|
|
|
535
540
|
methodMap_["preparedTextCacheSize"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_preparedTextCacheSize};
|
|
536
541
|
methodMap_["preventShadowTreeCommitExhaustion"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_preventShadowTreeCommitExhaustion};
|
|
537
542
|
methodMap_["shouldPressibilityUseW3CPointerEventsForHover"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_shouldPressibilityUseW3CPointerEventsForHover};
|
|
543
|
+
methodMap_["shouldTriggerResponderTransferOnScrollAndroid"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_shouldTriggerResponderTransferOnScrollAndroid};
|
|
538
544
|
methodMap_["skipActivityIdentityAssertionOnHostPause"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_skipActivityIdentityAssertionOnHostPause};
|
|
539
545
|
methodMap_["sweepActiveTouchOnChildNativeGesturesAndroid"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_sweepActiveTouchOnChildNativeGesturesAndroid};
|
|
540
546
|
methodMap_["traceTurboModulePromiseRejectionsOnAndroid"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_traceTurboModulePromiseRejectionsOnAndroid};
|
|
@@ -386,6 +386,7 @@ public:
|
|
|
386
386
|
virtual double preparedTextCacheSize(jsi::Runtime &rt) = 0;
|
|
387
387
|
virtual bool preventShadowTreeCommitExhaustion(jsi::Runtime &rt) = 0;
|
|
388
388
|
virtual bool shouldPressibilityUseW3CPointerEventsForHover(jsi::Runtime &rt) = 0;
|
|
389
|
+
virtual bool shouldTriggerResponderTransferOnScrollAndroid(jsi::Runtime &rt) = 0;
|
|
389
390
|
virtual bool skipActivityIdentityAssertionOnHostPause(jsi::Runtime &rt) = 0;
|
|
390
391
|
virtual bool sweepActiveTouchOnChildNativeGesturesAndroid(jsi::Runtime &rt) = 0;
|
|
391
392
|
virtual bool traceTurboModulePromiseRejectionsOnAndroid(jsi::Runtime &rt) = 0;
|
|
@@ -914,6 +915,14 @@ private:
|
|
|
914
915
|
return bridging::callFromJs<bool>(
|
|
915
916
|
rt, &T::shouldPressibilityUseW3CPointerEventsForHover, jsInvoker_, instance_);
|
|
916
917
|
}
|
|
918
|
+
bool shouldTriggerResponderTransferOnScrollAndroid(jsi::Runtime &rt) override {
|
|
919
|
+
static_assert(
|
|
920
|
+
bridging::getParameterCount(&T::shouldTriggerResponderTransferOnScrollAndroid) == 1,
|
|
921
|
+
"Expected shouldTriggerResponderTransferOnScrollAndroid(...) to have 1 parameters");
|
|
922
|
+
|
|
923
|
+
return bridging::callFromJs<bool>(
|
|
924
|
+
rt, &T::shouldTriggerResponderTransferOnScrollAndroid, jsInvoker_, instance_);
|
|
925
|
+
}
|
|
917
926
|
bool skipActivityIdentityAssertionOnHostPause(jsi::Runtime &rt) override {
|
|
918
927
|
static_assert(
|
|
919
928
|
bridging::getParameterCount(&T::skipActivityIdentityAssertionOnHostPause) == 1,
|
|
@@ -5636,6 +5636,7 @@ public class com/facebook/react/views/scroll/ReactHorizontalScrollView : android
|
|
|
5636
5636
|
public fun setOverflowInset (IIII)V
|
|
5637
5637
|
public fun setPagingEnabled (Z)V
|
|
5638
5638
|
public fun setPointerEvents (Lcom/facebook/react/uimanager/PointerEvents;)V
|
|
5639
|
+
public fun setReactScrollViewScrollState (Lcom/facebook/react/views/scroll/ReactScrollViewHelper$ReactScrollViewScrollState;)V
|
|
5639
5640
|
public fun setRemoveClippedSubviews (Z)V
|
|
5640
5641
|
public fun setScrollEnabled (Z)V
|
|
5641
5642
|
public fun setScrollEventThrottle (I)V
|
|
@@ -5775,8 +5776,10 @@ public class com/facebook/react/views/scroll/ReactScrollView : android/widget/Sc
|
|
|
5775
5776
|
public fun setOverflowInset (IIII)V
|
|
5776
5777
|
public fun setPagingEnabled (Z)V
|
|
5777
5778
|
public fun setPointerEvents (Lcom/facebook/react/uimanager/PointerEvents;)V
|
|
5779
|
+
public fun setReactScrollViewScrollState (Lcom/facebook/react/views/scroll/ReactScrollViewHelper$ReactScrollViewScrollState;)V
|
|
5778
5780
|
public fun setRemoveClippedSubviews (Z)V
|
|
5779
5781
|
public fun setScrollAwayTopPaddingEnabledUnstable (I)V
|
|
5782
|
+
public fun setScrollAwayTopPaddingEnabledUnstable (IZ)V
|
|
5780
5783
|
public fun setScrollEnabled (Z)V
|
|
5781
5784
|
public fun setScrollEventThrottle (I)V
|
|
5782
5785
|
public fun setScrollPerfTag (Ljava/lang/String;)V
|
|
@@ -5879,6 +5882,7 @@ public abstract interface class com/facebook/react/views/scroll/ReactScrollViewH
|
|
|
5879
5882
|
|
|
5880
5883
|
public abstract interface class com/facebook/react/views/scroll/ReactScrollViewHelper$HasScrollState {
|
|
5881
5884
|
public abstract fun getReactScrollViewScrollState ()Lcom/facebook/react/views/scroll/ReactScrollViewHelper$ReactScrollViewScrollState;
|
|
5885
|
+
public abstract fun setReactScrollViewScrollState (Lcom/facebook/react/views/scroll/ReactScrollViewHelper$ReactScrollViewScrollState;)V
|
|
5882
5886
|
}
|
|
5883
5887
|
|
|
5884
5888
|
public abstract interface class com/facebook/react/views/scroll/ReactScrollViewHelper$HasSmoothScroll {
|
|
@@ -5896,18 +5900,34 @@ public abstract interface class com/facebook/react/views/scroll/ReactScrollViewH
|
|
|
5896
5900
|
|
|
5897
5901
|
public final class com/facebook/react/views/scroll/ReactScrollViewHelper$ReactScrollViewScrollState {
|
|
5898
5902
|
public fun <init> ()V
|
|
5903
|
+
public fun <init> (Landroid/graphics/Point;ILandroid/graphics/Point;ZZFZ)V
|
|
5904
|
+
public synthetic fun <init> (Landroid/graphics/Point;ILandroid/graphics/Point;ZZFZILkotlin/jvm/internal/DefaultConstructorMarker;)V
|
|
5905
|
+
public final fun component1 ()Landroid/graphics/Point;
|
|
5906
|
+
public final fun component2 ()I
|
|
5907
|
+
public final fun component3 ()Landroid/graphics/Point;
|
|
5908
|
+
public final fun component4 ()Z
|
|
5909
|
+
public final fun component5 ()Z
|
|
5910
|
+
public final fun component6 ()F
|
|
5911
|
+
public final fun component7 ()Z
|
|
5912
|
+
public final fun copy (Landroid/graphics/Point;ILandroid/graphics/Point;ZZFZ)Lcom/facebook/react/views/scroll/ReactScrollViewHelper$ReactScrollViewScrollState;
|
|
5913
|
+
public static synthetic fun copy$default (Lcom/facebook/react/views/scroll/ReactScrollViewHelper$ReactScrollViewScrollState;Landroid/graphics/Point;ILandroid/graphics/Point;ZZFZILjava/lang/Object;)Lcom/facebook/react/views/scroll/ReactScrollViewHelper$ReactScrollViewScrollState;
|
|
5914
|
+
public fun equals (Ljava/lang/Object;)Z
|
|
5899
5915
|
public final fun getDecelerationRate ()F
|
|
5900
5916
|
public final fun getFinalAnimatedPositionScroll ()Landroid/graphics/Point;
|
|
5901
5917
|
public final fun getLastStateUpdateScroll ()Landroid/graphics/Point;
|
|
5902
5918
|
public final fun getScrollAwayPaddingTop ()I
|
|
5919
|
+
public fun hashCode ()I
|
|
5903
5920
|
public final fun isCanceled ()Z
|
|
5904
5921
|
public final fun isFinished ()Z
|
|
5922
|
+
public final fun isUpdatedByScroll ()Z
|
|
5905
5923
|
public final fun setCanceled (Z)V
|
|
5906
5924
|
public final fun setDecelerationRate (F)V
|
|
5907
5925
|
public final fun setFinalAnimatedPositionScroll (II)Lcom/facebook/react/views/scroll/ReactScrollViewHelper$ReactScrollViewScrollState;
|
|
5908
5926
|
public final fun setFinished (Z)V
|
|
5909
5927
|
public final fun setLastStateUpdateScroll (II)Lcom/facebook/react/views/scroll/ReactScrollViewHelper$ReactScrollViewScrollState;
|
|
5910
5928
|
public final fun setScrollAwayPaddingTop (I)V
|
|
5929
|
+
public final fun setUpdatedByScroll (Z)V
|
|
5930
|
+
public fun toString ()Ljava/lang/String;
|
|
5911
5931
|
}
|
|
5912
5932
|
|
|
5913
5933
|
public abstract interface class com/facebook/react/views/scroll/ReactScrollViewHelper$ScrollListener {
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @generated SignedSource<<
|
|
7
|
+
* @generated SignedSource<<4f9777b3b50f714214f9f0f86d5176f1>>
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -384,6 +384,12 @@ public object ReactNativeFeatureFlags {
|
|
|
384
384
|
@JvmStatic
|
|
385
385
|
public fun shouldPressibilityUseW3CPointerEventsForHover(): Boolean = accessor.shouldPressibilityUseW3CPointerEventsForHover()
|
|
386
386
|
|
|
387
|
+
/**
|
|
388
|
+
* Do not emit touchcancel from Android ScrollView, instead native topScroll event will trigger responder transfer and terminate in RN renderer.
|
|
389
|
+
*/
|
|
390
|
+
@JvmStatic
|
|
391
|
+
public fun shouldTriggerResponderTransferOnScrollAndroid(): Boolean = accessor.shouldTriggerResponderTransferOnScrollAndroid()
|
|
392
|
+
|
|
387
393
|
/**
|
|
388
394
|
* Skip activity identity assertion in ReactHostImpl::onHostPause()
|
|
389
395
|
*/
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @generated SignedSource<<
|
|
7
|
+
* @generated SignedSource<<7e45b713bab183402e93ee058ea7cb36>>
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -79,6 +79,7 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
|
|
|
79
79
|
private var preparedTextCacheSizeCache: Double? = null
|
|
80
80
|
private var preventShadowTreeCommitExhaustionCache: Boolean? = null
|
|
81
81
|
private var shouldPressibilityUseW3CPointerEventsForHoverCache: Boolean? = null
|
|
82
|
+
private var shouldTriggerResponderTransferOnScrollAndroidCache: Boolean? = null
|
|
82
83
|
private var skipActivityIdentityAssertionOnHostPauseCache: Boolean? = null
|
|
83
84
|
private var sweepActiveTouchOnChildNativeGesturesAndroidCache: Boolean? = null
|
|
84
85
|
private var traceTurboModulePromiseRejectionsOnAndroidCache: Boolean? = null
|
|
@@ -629,6 +630,15 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
|
|
|
629
630
|
return cached
|
|
630
631
|
}
|
|
631
632
|
|
|
633
|
+
override fun shouldTriggerResponderTransferOnScrollAndroid(): Boolean {
|
|
634
|
+
var cached = shouldTriggerResponderTransferOnScrollAndroidCache
|
|
635
|
+
if (cached == null) {
|
|
636
|
+
cached = ReactNativeFeatureFlagsCxxInterop.shouldTriggerResponderTransferOnScrollAndroid()
|
|
637
|
+
shouldTriggerResponderTransferOnScrollAndroidCache = cached
|
|
638
|
+
}
|
|
639
|
+
return cached
|
|
640
|
+
}
|
|
641
|
+
|
|
632
642
|
override fun skipActivityIdentityAssertionOnHostPause(): Boolean {
|
|
633
643
|
var cached = skipActivityIdentityAssertionOnHostPauseCache
|
|
634
644
|
if (cached == null) {
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @generated SignedSource<<
|
|
7
|
+
* @generated SignedSource<<a8097e06e4ad0e329bd81fd6d23c031a>>
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -146,6 +146,8 @@ public object ReactNativeFeatureFlagsCxxInterop {
|
|
|
146
146
|
|
|
147
147
|
@DoNotStrip @JvmStatic public external fun shouldPressibilityUseW3CPointerEventsForHover(): Boolean
|
|
148
148
|
|
|
149
|
+
@DoNotStrip @JvmStatic public external fun shouldTriggerResponderTransferOnScrollAndroid(): Boolean
|
|
150
|
+
|
|
149
151
|
@DoNotStrip @JvmStatic public external fun skipActivityIdentityAssertionOnHostPause(): Boolean
|
|
150
152
|
|
|
151
153
|
@DoNotStrip @JvmStatic public external fun sweepActiveTouchOnChildNativeGesturesAndroid(): Boolean
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @generated SignedSource<<
|
|
7
|
+
* @generated SignedSource<<c2e602217d9d88c23e958c8b73f22e5c>>
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -141,6 +141,8 @@ public open class ReactNativeFeatureFlagsDefaults : ReactNativeFeatureFlagsProvi
|
|
|
141
141
|
|
|
142
142
|
override fun shouldPressibilityUseW3CPointerEventsForHover(): Boolean = false
|
|
143
143
|
|
|
144
|
+
override fun shouldTriggerResponderTransferOnScrollAndroid(): Boolean = false
|
|
145
|
+
|
|
144
146
|
override fun skipActivityIdentityAssertionOnHostPause(): Boolean = false
|
|
145
147
|
|
|
146
148
|
override fun sweepActiveTouchOnChildNativeGesturesAndroid(): Boolean = false
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @generated SignedSource<<
|
|
7
|
+
* @generated SignedSource<<f88ede5a21467165ef04b5d16d869d1f>>
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -83,6 +83,7 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
|
|
|
83
83
|
private var preparedTextCacheSizeCache: Double? = null
|
|
84
84
|
private var preventShadowTreeCommitExhaustionCache: Boolean? = null
|
|
85
85
|
private var shouldPressibilityUseW3CPointerEventsForHoverCache: Boolean? = null
|
|
86
|
+
private var shouldTriggerResponderTransferOnScrollAndroidCache: Boolean? = null
|
|
86
87
|
private var skipActivityIdentityAssertionOnHostPauseCache: Boolean? = null
|
|
87
88
|
private var sweepActiveTouchOnChildNativeGesturesAndroidCache: Boolean? = null
|
|
88
89
|
private var traceTurboModulePromiseRejectionsOnAndroidCache: Boolean? = null
|
|
@@ -692,6 +693,16 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
|
|
|
692
693
|
return cached
|
|
693
694
|
}
|
|
694
695
|
|
|
696
|
+
override fun shouldTriggerResponderTransferOnScrollAndroid(): Boolean {
|
|
697
|
+
var cached = shouldTriggerResponderTransferOnScrollAndroidCache
|
|
698
|
+
if (cached == null) {
|
|
699
|
+
cached = currentProvider.shouldTriggerResponderTransferOnScrollAndroid()
|
|
700
|
+
accessedFeatureFlags.add("shouldTriggerResponderTransferOnScrollAndroid")
|
|
701
|
+
shouldTriggerResponderTransferOnScrollAndroidCache = cached
|
|
702
|
+
}
|
|
703
|
+
return cached
|
|
704
|
+
}
|
|
705
|
+
|
|
695
706
|
override fun skipActivityIdentityAssertionOnHostPause(): Boolean {
|
|
696
707
|
var cached = skipActivityIdentityAssertionOnHostPauseCache
|
|
697
708
|
if (cached == null) {
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @generated SignedSource<<
|
|
7
|
+
* @generated SignedSource<<aa0e9e5830b13c4b290dcae42b757a3a>>
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -141,6 +141,8 @@ public interface ReactNativeFeatureFlagsProvider {
|
|
|
141
141
|
|
|
142
142
|
@DoNotStrip public fun shouldPressibilityUseW3CPointerEventsForHover(): Boolean
|
|
143
143
|
|
|
144
|
+
@DoNotStrip public fun shouldTriggerResponderTransferOnScrollAndroid(): Boolean
|
|
145
|
+
|
|
144
146
|
@DoNotStrip public fun skipActivityIdentityAssertionOnHostPause(): Boolean
|
|
145
147
|
|
|
146
148
|
@DoNotStrip public fun sweepActiveTouchOnChildNativeGesturesAndroid(): Boolean
|
package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java
CHANGED
|
@@ -18,6 +18,7 @@ import android.animation.ValueAnimator;
|
|
|
18
18
|
import android.content.Context;
|
|
19
19
|
import android.graphics.Canvas;
|
|
20
20
|
import android.graphics.Color;
|
|
21
|
+
import android.graphics.Point;
|
|
21
22
|
import android.graphics.Rect;
|
|
22
23
|
import android.graphics.drawable.ColorDrawable;
|
|
23
24
|
import android.graphics.drawable.Drawable;
|
|
@@ -1649,6 +1650,15 @@ public class ReactHorizontalScrollView extends HorizontalScrollView
|
|
|
1649
1650
|
mStateWrapper = stateWrapper;
|
|
1650
1651
|
}
|
|
1651
1652
|
|
|
1653
|
+
@Override
|
|
1654
|
+
public void setReactScrollViewScrollState(ReactScrollViewScrollState scrollState) {
|
|
1655
|
+
mReactScrollViewScrollState = scrollState;
|
|
1656
|
+
if (ReactNativeFeatureFlags.enableViewCulling()) {
|
|
1657
|
+
Point scrollPosition = scrollState.getLastStateUpdateScroll();
|
|
1658
|
+
scrollTo(scrollPosition.x, scrollPosition.y);
|
|
1659
|
+
}
|
|
1660
|
+
}
|
|
1661
|
+
|
|
1652
1662
|
@Override
|
|
1653
1663
|
public ReactScrollViewScrollState getReactScrollViewScrollState() {
|
|
1654
1664
|
return mReactScrollViewScrollState;
|
|
@@ -85,6 +85,9 @@ constructor(private val fpsListener: FpsListener? = null) :
|
|
|
85
85
|
stateWrapper: StateWrapper,
|
|
86
86
|
): Any? {
|
|
87
87
|
view.setStateWrapper(stateWrapper)
|
|
88
|
+
if (ReactNativeFeatureFlags.enableViewCulling()) {
|
|
89
|
+
ReactScrollViewHelper.loadFabricScrollState(view, stateWrapper)
|
|
90
|
+
}
|
|
88
91
|
return null
|
|
89
92
|
}
|
|
90
93
|
|
|
@@ -18,6 +18,7 @@ import android.animation.ValueAnimator;
|
|
|
18
18
|
import android.content.Context;
|
|
19
19
|
import android.graphics.Canvas;
|
|
20
20
|
import android.graphics.Color;
|
|
21
|
+
import android.graphics.Point;
|
|
21
22
|
import android.graphics.Rect;
|
|
22
23
|
import android.graphics.drawable.ColorDrawable;
|
|
23
24
|
import android.graphics.drawable.Drawable;
|
|
@@ -1439,6 +1440,10 @@ public class ReactScrollView extends ScrollView
|
|
|
1439
1440
|
* style. `translateY` must never be set from ReactJS while using this feature!
|
|
1440
1441
|
*/
|
|
1441
1442
|
public void setScrollAwayTopPaddingEnabledUnstable(int topPadding) {
|
|
1443
|
+
setScrollAwayTopPaddingEnabledUnstable(topPadding, true);
|
|
1444
|
+
}
|
|
1445
|
+
|
|
1446
|
+
public void setScrollAwayTopPaddingEnabledUnstable(int topPadding, boolean updateState) {
|
|
1442
1447
|
int count = getChildCount();
|
|
1443
1448
|
|
|
1444
1449
|
Assertions.assertCondition(
|
|
@@ -1458,7 +1463,9 @@ public class ReactScrollView extends ScrollView
|
|
|
1458
1463
|
setPadding(0, 0, 0, topPadding);
|
|
1459
1464
|
}
|
|
1460
1465
|
|
|
1461
|
-
|
|
1466
|
+
if (updateState) {
|
|
1467
|
+
updateScrollAwayState(topPadding);
|
|
1468
|
+
}
|
|
1462
1469
|
setRemoveClippedSubviews(mRemoveClippedSubviews);
|
|
1463
1470
|
}
|
|
1464
1471
|
|
|
@@ -1467,6 +1474,17 @@ public class ReactScrollView extends ScrollView
|
|
|
1467
1474
|
ReactScrollViewHelper.forceUpdateState(this);
|
|
1468
1475
|
}
|
|
1469
1476
|
|
|
1477
|
+
@Override
|
|
1478
|
+
public void setReactScrollViewScrollState(ReactScrollViewScrollState scrollState) {
|
|
1479
|
+
mReactScrollViewScrollState = scrollState;
|
|
1480
|
+
if (ReactNativeFeatureFlags.enableViewCulling()) {
|
|
1481
|
+
setScrollAwayTopPaddingEnabledUnstable(scrollState.getScrollAwayPaddingTop(), false);
|
|
1482
|
+
|
|
1483
|
+
Point scrollPosition = scrollState.getLastStateUpdateScroll();
|
|
1484
|
+
scrollTo(scrollPosition.x, scrollPosition.y);
|
|
1485
|
+
}
|
|
1486
|
+
}
|
|
1487
|
+
|
|
1470
1488
|
@Override
|
|
1471
1489
|
public ReactScrollViewScrollState getReactScrollViewScrollState() {
|
|
1472
1490
|
return mReactScrollViewScrollState;
|
|
@@ -26,6 +26,7 @@ import com.facebook.react.bridge.WritableNativeMap
|
|
|
26
26
|
import com.facebook.react.common.ReactConstants
|
|
27
27
|
import com.facebook.react.fabric.FabricUIManager
|
|
28
28
|
import com.facebook.react.uimanager.PixelUtil.toDIPFromPixel
|
|
29
|
+
import com.facebook.react.uimanager.PixelUtil.toPixelFromDIP
|
|
29
30
|
import com.facebook.react.uimanager.ReactClippingViewGroup
|
|
30
31
|
import com.facebook.react.uimanager.StateWrapper
|
|
31
32
|
import com.facebook.react.uimanager.UIManagerHelper
|
|
@@ -361,6 +362,10 @@ public object ReactScrollViewHelper {
|
|
|
361
362
|
return
|
|
362
363
|
}
|
|
363
364
|
val scrollState = scrollView.reactScrollViewScrollState
|
|
365
|
+
|
|
366
|
+
// User driven scrolling should disable scroll state updates coming from Fabric
|
|
367
|
+
scrollState.isUpdatedByScroll = true
|
|
368
|
+
|
|
364
369
|
// Dedupe events to reduce JNI traffic
|
|
365
370
|
if (scrollState.lastStateUpdateScroll.equals(scrollX, scrollY)) {
|
|
366
371
|
return
|
|
@@ -399,6 +404,29 @@ public object ReactScrollViewHelper {
|
|
|
399
404
|
}
|
|
400
405
|
}
|
|
401
406
|
|
|
407
|
+
@JvmStatic
|
|
408
|
+
internal fun <T> loadFabricScrollState(scrollView: T, stateWrapper: StateWrapper)
|
|
409
|
+
where T : HasScrollState?, T : HasStateWrapper?, T : ViewGroup {
|
|
410
|
+
if (scrollView.reactScrollViewScrollState.isUpdatedByScroll) {
|
|
411
|
+
return
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
val stateData = stateWrapper.stateData
|
|
415
|
+
if (stateData == null) {
|
|
416
|
+
return
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
// Assign the data loaded from the shadow node state
|
|
420
|
+
val scrollX = toPixelFromDIP(stateData.getDouble(CONTENT_OFFSET_LEFT)).toInt()
|
|
421
|
+
val scrollY = toPixelFromDIP(stateData.getDouble(CONTENT_OFFSET_TOP)).toInt()
|
|
422
|
+
val scrollAwayPaddingTop = toPixelFromDIP(stateData.getDouble(SCROLL_AWAY_PADDING_TOP)).toInt()
|
|
423
|
+
|
|
424
|
+
val scrollState =
|
|
425
|
+
scrollView.reactScrollViewScrollState.copy(scrollAwayPaddingTop = scrollAwayPaddingTop)
|
|
426
|
+
scrollState.setLastStateUpdateScroll(scrollX, scrollY)
|
|
427
|
+
scrollView.reactScrollViewScrollState = scrollState
|
|
428
|
+
}
|
|
429
|
+
|
|
402
430
|
@JvmStatic
|
|
403
431
|
public fun <T> updateStateOnScrollChanged(scrollView: T, xVelocity: Float, yVelocity: Float)
|
|
404
432
|
where
|
|
@@ -596,21 +624,22 @@ public object ReactScrollViewHelper {
|
|
|
596
624
|
}
|
|
597
625
|
}
|
|
598
626
|
|
|
599
|
-
public class ReactScrollViewScrollState
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
627
|
+
public data class ReactScrollViewScrollState(
|
|
628
|
+
/** Get the position after current animation is finished */
|
|
629
|
+
val finalAnimatedPositionScroll: Point = Point(),
|
|
630
|
+
/** Get the padding on the top for nav bar */
|
|
631
|
+
var scrollAwayPaddingTop: Int = 0,
|
|
632
|
+
/** Get the Fabric state of last scroll position */
|
|
633
|
+
val lastStateUpdateScroll: Point = Point(-1, -1),
|
|
634
|
+
/** Get true if the previous animation was canceled */
|
|
635
|
+
var isCanceled: Boolean = false,
|
|
636
|
+
/** Get true if previous animation was finished */
|
|
637
|
+
var isFinished: Boolean = true,
|
|
638
|
+
/** Get true if previous animation was finished */
|
|
639
|
+
var decelerationRate: Float = 0.985f,
|
|
640
|
+
/** Get true if the component submitted the state through user scrolling */
|
|
641
|
+
var isUpdatedByScroll: Boolean = false,
|
|
642
|
+
) {
|
|
614
643
|
/** Set the final scroll position after scrolling animation is finished */
|
|
615
644
|
public fun setFinalAnimatedPositionScroll(
|
|
616
645
|
finalAnimatedPositionScrollX: Int,
|
|
@@ -632,7 +661,7 @@ public object ReactScrollViewHelper {
|
|
|
632
661
|
|
|
633
662
|
public interface HasScrollState {
|
|
634
663
|
/** Get the scroll state for the current ScrollView */
|
|
635
|
-
public
|
|
664
|
+
public var reactScrollViewScrollState: ReactScrollViewScrollState
|
|
636
665
|
}
|
|
637
666
|
|
|
638
667
|
public interface HasFlingAnimator {
|
package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.kt
CHANGED
|
@@ -384,6 +384,9 @@ constructor(private val fpsListener: FpsListener? = null) :
|
|
|
384
384
|
stateWrapper: StateWrapper,
|
|
385
385
|
): Any? {
|
|
386
386
|
view.setStateWrapper(stateWrapper)
|
|
387
|
+
if (ReactNativeFeatureFlags.enableViewCulling()) {
|
|
388
|
+
ReactScrollViewHelper.loadFabricScrollState(view, stateWrapper)
|
|
389
|
+
}
|
|
387
390
|
return null
|
|
388
391
|
}
|
|
389
392
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @generated SignedSource<<
|
|
7
|
+
* @generated SignedSource<<5cf0077264f7ceca6617dbe20bcc122f>>
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -393,6 +393,12 @@ class ReactNativeFeatureFlagsJavaProvider
|
|
|
393
393
|
return method(javaProvider_);
|
|
394
394
|
}
|
|
395
395
|
|
|
396
|
+
bool shouldTriggerResponderTransferOnScrollAndroid() override {
|
|
397
|
+
static const auto method =
|
|
398
|
+
getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("shouldTriggerResponderTransferOnScrollAndroid");
|
|
399
|
+
return method(javaProvider_);
|
|
400
|
+
}
|
|
401
|
+
|
|
396
402
|
bool skipActivityIdentityAssertionOnHostPause() override {
|
|
397
403
|
static const auto method =
|
|
398
404
|
getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("skipActivityIdentityAssertionOnHostPause");
|
|
@@ -800,6 +806,11 @@ bool JReactNativeFeatureFlagsCxxInterop::shouldPressibilityUseW3CPointerEventsFo
|
|
|
800
806
|
return ReactNativeFeatureFlags::shouldPressibilityUseW3CPointerEventsForHover();
|
|
801
807
|
}
|
|
802
808
|
|
|
809
|
+
bool JReactNativeFeatureFlagsCxxInterop::shouldTriggerResponderTransferOnScrollAndroid(
|
|
810
|
+
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
|
|
811
|
+
return ReactNativeFeatureFlags::shouldTriggerResponderTransferOnScrollAndroid();
|
|
812
|
+
}
|
|
813
|
+
|
|
803
814
|
bool JReactNativeFeatureFlagsCxxInterop::skipActivityIdentityAssertionOnHostPause(
|
|
804
815
|
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
|
|
805
816
|
return ReactNativeFeatureFlags::skipActivityIdentityAssertionOnHostPause();
|
|
@@ -1098,6 +1109,9 @@ void JReactNativeFeatureFlagsCxxInterop::registerNatives() {
|
|
|
1098
1109
|
makeNativeMethod(
|
|
1099
1110
|
"shouldPressibilityUseW3CPointerEventsForHover",
|
|
1100
1111
|
JReactNativeFeatureFlagsCxxInterop::shouldPressibilityUseW3CPointerEventsForHover),
|
|
1112
|
+
makeNativeMethod(
|
|
1113
|
+
"shouldTriggerResponderTransferOnScrollAndroid",
|
|
1114
|
+
JReactNativeFeatureFlagsCxxInterop::shouldTriggerResponderTransferOnScrollAndroid),
|
|
1101
1115
|
makeNativeMethod(
|
|
1102
1116
|
"skipActivityIdentityAssertionOnHostPause",
|
|
1103
1117
|
JReactNativeFeatureFlagsCxxInterop::skipActivityIdentityAssertionOnHostPause),
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @generated SignedSource<<
|
|
7
|
+
* @generated SignedSource<<04929fb70beb00c1f690bdb11703b322>>
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -207,6 +207,9 @@ class JReactNativeFeatureFlagsCxxInterop
|
|
|
207
207
|
static bool shouldPressibilityUseW3CPointerEventsForHover(
|
|
208
208
|
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
|
|
209
209
|
|
|
210
|
+
static bool shouldTriggerResponderTransferOnScrollAndroid(
|
|
211
|
+
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
|
|
212
|
+
|
|
210
213
|
static bool skipActivityIdentityAssertionOnHostPause(
|
|
211
214
|
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
|
|
212
215
|
|
|
@@ -22,7 +22,7 @@ constexpr struct {
|
|
|
22
22
|
int32_t Major = 0;
|
|
23
23
|
int32_t Minor = 83;
|
|
24
24
|
int32_t Patch = 0;
|
|
25
|
-
std::string_view Prerelease = "nightly-
|
|
25
|
+
std::string_view Prerelease = "nightly-20251008-31bff4e09";
|
|
26
26
|
} ReactNativeVersion;
|
|
27
27
|
|
|
28
28
|
} // namespace facebook::react
|
|
@@ -72,10 +72,9 @@ class HermesRuntimeAgentDelegate::Impl final : public RuntimeAgentDelegate {
|
|
|
72
72
|
}
|
|
73
73
|
|
|
74
74
|
bool handleRequest(const cdp::PreparsedRequest& req) override {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
//
|
|
78
|
-
// but our containing HostAgent will, bail out early.
|
|
75
|
+
if (req.method.starts_with("Log.") || req.method.starts_with("Network.")) {
|
|
76
|
+
// Since we know Hermes doesn't do anything useful with Log or Network
|
|
77
|
+
// messages, but our containing HostAgent will, bail out early.
|
|
79
78
|
// TODO: We need a way to negotiate this more dynamically with Hermes
|
|
80
79
|
// through the API.
|
|
81
80
|
return false;
|