react-native 0.82.0-nightly-20250808-aaf471278 → 0.82.0-nightly-20250809-e0ea78190

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 (67) hide show
  1. package/Libraries/Core/ReactNativeVersion.js +1 -1
  2. package/React/Base/RCTVersion.m +1 -1
  3. package/React/FBReactNativeSpec/FBReactNativeSpecJSI-generated.cpp +24 -0
  4. package/React/FBReactNativeSpec/FBReactNativeSpecJSI.h +93 -0
  5. package/React/FBReactNativeSpec/react/renderer/components/FBReactNativeSpec/Props.cpp +168 -2
  6. package/React/FBReactNativeSpec/react/renderer/components/FBReactNativeSpec/Props.h +63 -2
  7. package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.h +4 -1
  8. package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm +14 -0
  9. package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTVirtualViewContainerProtocol.h +14 -0
  10. package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTVirtualViewContainerState.h +25 -0
  11. package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTVirtualViewContainerState.mm +193 -0
  12. package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTVirtualViewProtocol.h +20 -0
  13. package/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm +1 -1
  14. package/React/Fabric/Mounting/ComponentViews/VirtualViewExperimental/RCTVirtualViewExperimentalComponentView.h +2 -1
  15. package/React/Fabric/Mounting/ComponentViews/VirtualViewExperimental/RCTVirtualViewExperimentalComponentView.mm +76 -127
  16. package/ReactAndroid/api/ReactAndroid.api +80 -56
  17. package/ReactAndroid/build.gradle.kts +0 -1
  18. package/ReactAndroid/gradle.properties +1 -1
  19. package/ReactAndroid/src/main/java/com/facebook/react/CoreModulesPackage.kt +9 -7
  20. package/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java +1 -12
  21. package/ReactAndroid/src/main/java/com/facebook/react/ReactRootView.java +5 -6
  22. package/ReactAndroid/src/main/java/com/facebook/react/animated/NativeAnimatedModule.kt +6 -6
  23. package/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstanceImpl.java +1 -1
  24. package/ReactAndroid/src/main/java/com/facebook/react/bridge/CxxModuleWrapperBase.kt +1 -1
  25. package/ReactAndroid/src/main/java/com/facebook/react/bridge/Inspector.kt +1 -1
  26. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactInstanceManagerInspectorTarget.kt +1 -1
  27. package/ReactAndroid/src/main/java/com/facebook/react/bridge/{BridgeSoLoader.kt → ReactNativeJNISoLoader.kt} +1 -7
  28. package/ReactAndroid/src/main/java/com/facebook/react/modules/debug/FpsDebugFrameCallback.kt +4 -3
  29. package/ReactAndroid/src/main/java/com/facebook/react/modules/deviceinfo/DeviceInfoModule.kt +2 -4
  30. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt +1 -1
  31. package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImpl.kt +5 -5
  32. package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactInstance.kt +1 -4
  33. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/DisplayMetricsHolder.kt +18 -47
  34. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/LayoutDirectionUtil.kt +3 -0
  35. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeKind.kt +3 -0
  36. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeViewHierarchyManager.java +2 -0
  37. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeViewHierarchyOptimizer.java +2 -0
  38. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/NoSuchNativeViewException.kt +3 -0
  39. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/OnLayoutEvent.kt +5 -0
  40. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/PixelUtil.kt +4 -4
  41. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ShadowNodeRegistry.kt +5 -0
  42. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIBlock.kt +3 -1
  43. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIImplementation.java +2 -0
  44. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java +4 -11
  45. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModuleListener.kt +2 -0
  46. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIViewOperationQueue.java +2 -0
  47. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewAtIndex.kt +5 -0
  48. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/YogaNodePool.kt +3 -0
  49. package/ReactAndroid/src/main/java/com/facebook/react/views/safeareaview/ReactSafeAreaView.kt +2 -2
  50. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactBaseTextShadowNode.kt +647 -0
  51. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextShadowNode.kt +32 -27
  52. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.kt +2 -2
  53. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputShadowNode.kt +16 -14
  54. package/ReactCommon/cxxreact/ReactNativeVersion.h +1 -1
  55. package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTInteropTurboModule.mm +1 -1
  56. package/ReactCommon/react/renderer/animations/utils.h +1 -1
  57. package/ReactCommon/react/renderer/components/image/ImageProps.h +1 -1
  58. package/ReactCommon/react/renderer/components/view/YogaStylableProps.cpp +1 -1
  59. package/ReactCommon/react/renderer/debug/DebugStringConvertible.h +16 -0
  60. package/ReactCommon/react/renderer/mounting/stubs/StubViewTree.h +4 -4
  61. package/gradle/libs.versions.toml +1 -3
  62. package/package.json +8 -8
  63. package/scripts/codegen/generate-specs-cli-executor.js +3 -0
  64. package/sdks/hermesc/osx-bin/hermes +0 -0
  65. package/sdks/hermesc/osx-bin/hermesc +0 -0
  66. package/sdks/hermesc/win64-bin/hermesc.exe +0 -0
  67. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactBaseTextShadowNode.java +0 -669
@@ -29,7 +29,7 @@ export default class ReactNativeVersion {
29
29
  static major: number = 0;
30
30
  static minor: number = 82;
31
31
  static patch: number = 0;
32
- static prerelease: string | null = 'nightly-20250808-aaf471278';
32
+ static prerelease: string | null = 'nightly-20250809-e0ea78190';
33
33
 
34
34
  static getVersionString(): string {
35
35
  return `${this.major}.${this.minor}.${this.patch}${this.prerelease != null ? `-${this.prerelease}` : ''}`;
@@ -24,7 +24,7 @@ NSDictionary* RCTGetReactNativeVersion(void)
24
24
  RCTVersionMajor: @(0),
25
25
  RCTVersionMinor: @(82),
26
26
  RCTVersionPatch: @(0),
27
- RCTVersionPrerelease: @"nightly-20250808-aaf471278",
27
+ RCTVersionPrerelease: @"nightly-20250809-e0ea78190",
28
28
  };
29
29
  });
30
30
  return __rnVersion;
@@ -2788,6 +2788,27 @@ static jsi::Value __hostFunction_NativeFantomCxxSpecJSI_stopJSSamplingProfilerAn
2788
2788
  );
2789
2789
  return jsi::Value::undefined();
2790
2790
  }
2791
+ static jsi::Value __hostFunction_NativeFantomCxxSpecJSI_setImageResponse(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
2792
+ static_cast<NativeFantomCxxSpecJSI *>(&turboModule)->setImageResponse(
2793
+ rt,
2794
+ count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asString(rt),
2795
+ count <= 1 ? throw jsi::JSError(rt, "Expected argument in position 1 to be passed") : args[1].asObject(rt)
2796
+ );
2797
+ return jsi::Value::undefined();
2798
+ }
2799
+ static jsi::Value __hostFunction_NativeFantomCxxSpecJSI_clearImage(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
2800
+ static_cast<NativeFantomCxxSpecJSI *>(&turboModule)->clearImage(
2801
+ rt,
2802
+ count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asString(rt)
2803
+ );
2804
+ return jsi::Value::undefined();
2805
+ }
2806
+ static jsi::Value __hostFunction_NativeFantomCxxSpecJSI_clearAllImages(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
2807
+ static_cast<NativeFantomCxxSpecJSI *>(&turboModule)->clearAllImages(
2808
+ rt
2809
+ );
2810
+ return jsi::Value::undefined();
2811
+ }
2791
2812
 
2792
2813
  NativeFantomCxxSpecJSI::NativeFantomCxxSpecJSI(std::shared_ptr<CallInvoker> jsInvoker)
2793
2814
  : TurboModule("NativeFantomCxx", jsInvoker) {
@@ -2811,6 +2832,9 @@ NativeFantomCxxSpecJSI::NativeFantomCxxSpecJSI(std::shared_ptr<CallInvoker> jsIn
2811
2832
  methodMap_["forceHighResTimeStamp"] = MethodMetadata {1, __hostFunction_NativeFantomCxxSpecJSI_forceHighResTimeStamp};
2812
2833
  methodMap_["startJSSamplingProfiler"] = MethodMetadata {0, __hostFunction_NativeFantomCxxSpecJSI_startJSSamplingProfiler};
2813
2834
  methodMap_["stopJSSamplingProfilerAndSaveToFile"] = MethodMetadata {1, __hostFunction_NativeFantomCxxSpecJSI_stopJSSamplingProfilerAndSaveToFile};
2835
+ methodMap_["setImageResponse"] = MethodMetadata {2, __hostFunction_NativeFantomCxxSpecJSI_setImageResponse};
2836
+ methodMap_["clearImage"] = MethodMetadata {1, __hostFunction_NativeFantomCxxSpecJSI_clearImage};
2837
+ methodMap_["clearAllImages"] = MethodMetadata {0, __hostFunction_NativeFantomCxxSpecJSI_clearAllImages};
2814
2838
  }
2815
2839
  static jsi::Value __hostFunction_NativeFantomTestSpecificMethodsCxxSpecJSI_registerForcedCloneCommitHook(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
2816
2840
  static_cast<NativeFantomTestSpecificMethodsCxxSpecJSI *>(&turboModule)->registerForcedCloneCommitHook(
@@ -7110,6 +7110,72 @@ struct Bridging<NativeFantomNativeEventCategory> {
7110
7110
  }
7111
7111
  };
7112
7112
 
7113
+ #pragma mark - NativeFantomImageResponse
7114
+
7115
+ template <typename P0, typename P1, typename P2, typename P3>
7116
+ struct NativeFantomImageResponse {
7117
+ P0 width;
7118
+ P1 height;
7119
+ P2 cacheStatus;
7120
+ P3 errorMessage;
7121
+ bool operator==(const NativeFantomImageResponse &other) const {
7122
+ return width == other.width && height == other.height && cacheStatus == other.cacheStatus && errorMessage == other.errorMessage;
7123
+ }
7124
+ };
7125
+
7126
+ template <typename T>
7127
+ struct NativeFantomImageResponseBridging {
7128
+ static T types;
7129
+
7130
+ static T fromJs(
7131
+ jsi::Runtime &rt,
7132
+ const jsi::Object &value,
7133
+ const std::shared_ptr<CallInvoker> &jsInvoker) {
7134
+ T result{
7135
+ bridging::fromJs<decltype(types.width)>(rt, value.getProperty(rt, "width"), jsInvoker),
7136
+ bridging::fromJs<decltype(types.height)>(rt, value.getProperty(rt, "height"), jsInvoker),
7137
+ bridging::fromJs<decltype(types.cacheStatus)>(rt, value.getProperty(rt, "cacheStatus"), jsInvoker),
7138
+ bridging::fromJs<decltype(types.errorMessage)>(rt, value.getProperty(rt, "errorMessage"), jsInvoker)};
7139
+ return result;
7140
+ }
7141
+
7142
+ #ifdef DEBUG
7143
+ static double widthToJs(jsi::Runtime &rt, decltype(types.width) value) {
7144
+ return bridging::toJs(rt, value);
7145
+ }
7146
+
7147
+ static double heightToJs(jsi::Runtime &rt, decltype(types.height) value) {
7148
+ return bridging::toJs(rt, value);
7149
+ }
7150
+
7151
+ static jsi::String cacheStatusToJs(jsi::Runtime &rt, decltype(types.cacheStatus) value) {
7152
+ return bridging::toJs(rt, value);
7153
+ }
7154
+
7155
+ static jsi::String errorMessageToJs(jsi::Runtime &rt, decltype(types.errorMessage) value) {
7156
+ return bridging::toJs(rt, value);
7157
+ }
7158
+ #endif
7159
+
7160
+ static jsi::Object toJs(
7161
+ jsi::Runtime &rt,
7162
+ const T &value,
7163
+ const std::shared_ptr<CallInvoker> &jsInvoker) {
7164
+ auto result = facebook::jsi::Object(rt);
7165
+ result.setProperty(rt, "width", bridging::toJs(rt, value.width, jsInvoker));
7166
+ result.setProperty(rt, "height", bridging::toJs(rt, value.height, jsInvoker));
7167
+ if (value.cacheStatus) {
7168
+ result.setProperty(rt, "cacheStatus", bridging::toJs(rt, value.cacheStatus.value(), jsInvoker));
7169
+ }
7170
+ if (value.errorMessage) {
7171
+ result.setProperty(rt, "errorMessage", bridging::toJs(rt, value.errorMessage.value(), jsInvoker));
7172
+ }
7173
+ return result;
7174
+ }
7175
+ };
7176
+
7177
+
7178
+
7113
7179
  #pragma mark - NativeFantomRenderFormatOptions
7114
7180
 
7115
7181
  template <typename P0, typename P1>
@@ -7238,6 +7304,9 @@ public:
7238
7304
  virtual void forceHighResTimeStamp(jsi::Runtime &rt, std::optional<double> timeStamp) = 0;
7239
7305
  virtual void startJSSamplingProfiler(jsi::Runtime &rt) = 0;
7240
7306
  virtual void stopJSSamplingProfilerAndSaveToFile(jsi::Runtime &rt, jsi::String filePath) = 0;
7307
+ virtual void setImageResponse(jsi::Runtime &rt, jsi::String uri, jsi::Object imageResponse) = 0;
7308
+ virtual void clearImage(jsi::Runtime &rt, jsi::String uri) = 0;
7309
+ virtual void clearAllImages(jsi::Runtime &rt) = 0;
7241
7310
 
7242
7311
  };
7243
7312
 
@@ -7428,6 +7497,30 @@ private:
7428
7497
  return bridging::callFromJs<void>(
7429
7498
  rt, &T::stopJSSamplingProfilerAndSaveToFile, jsInvoker_, instance_, std::move(filePath));
7430
7499
  }
7500
+ void setImageResponse(jsi::Runtime &rt, jsi::String uri, jsi::Object imageResponse) override {
7501
+ static_assert(
7502
+ bridging::getParameterCount(&T::setImageResponse) == 3,
7503
+ "Expected setImageResponse(...) to have 3 parameters");
7504
+
7505
+ return bridging::callFromJs<void>(
7506
+ rt, &T::setImageResponse, jsInvoker_, instance_, std::move(uri), std::move(imageResponse));
7507
+ }
7508
+ void clearImage(jsi::Runtime &rt, jsi::String uri) override {
7509
+ static_assert(
7510
+ bridging::getParameterCount(&T::clearImage) == 2,
7511
+ "Expected clearImage(...) to have 2 parameters");
7512
+
7513
+ return bridging::callFromJs<void>(
7514
+ rt, &T::clearImage, jsInvoker_, instance_, std::move(uri));
7515
+ }
7516
+ void clearAllImages(jsi::Runtime &rt) override {
7517
+ static_assert(
7518
+ bridging::getParameterCount(&T::clearAllImages) == 1,
7519
+ "Expected clearAllImages(...) to have 1 parameters");
7520
+
7521
+ return bridging::callFromJs<void>(
7522
+ rt, &T::clearAllImages, jsInvoker_, instance_);
7523
+ }
7431
7524
 
7432
7525
  private:
7433
7526
  friend class NativeFantomCxxSpec;
@@ -10,7 +10,9 @@
10
10
 
11
11
  #include <react/renderer/components/FBReactNativeSpec/Props.h>
12
12
  #include <react/renderer/core/PropsParserContext.h>
13
+ #include <react/renderer/core/graphicsConversions.h>
13
14
  #include <react/renderer/core/propsConversions.h>
15
+ #include <react/renderer/debug/debugStringConvertibleUtils.h>
14
16
 
15
17
  namespace facebook::react {
16
18
 
@@ -48,6 +50,15 @@ folly::dynamic VirtualViewExperimentalProps::getDiffProps(
48
50
  return result;
49
51
  }
50
52
  #endif
53
+ #if RN_DEBUG_STRING_CONVERTIBLE
54
+ SharedDebugStringConvertibleList VirtualViewExperimentalProps::getDebugProps() const {
55
+ return ViewProps::getDebugProps() +
56
+ SharedDebugStringConvertibleList{
57
+ debugStringConvertibleItem("initialHidden", initialHidden, false),
58
+ debugStringConvertibleItem("renderState", renderState, 0)
59
+ };
60
+ }
61
+ #endif
51
62
  VirtualViewProps::VirtualViewProps(
52
63
  const PropsParserContext &context,
53
64
  const VirtualViewProps &sourceProps,
@@ -82,6 +93,15 @@ folly::dynamic VirtualViewProps::getDiffProps(
82
93
  return result;
83
94
  }
84
95
  #endif
96
+ #if RN_DEBUG_STRING_CONVERTIBLE
97
+ SharedDebugStringConvertibleList VirtualViewProps::getDebugProps() const {
98
+ return ViewProps::getDebugProps() +
99
+ SharedDebugStringConvertibleList{
100
+ debugStringConvertibleItem("initialHidden", initialHidden, false),
101
+ debugStringConvertibleItem("renderState", renderState, 0)
102
+ };
103
+ }
104
+ #endif
85
105
  ActivityIndicatorViewProps::ActivityIndicatorViewProps(
86
106
  const PropsParserContext &context,
87
107
  const ActivityIndicatorViewProps &sourceProps,
@@ -126,6 +146,17 @@ folly::dynamic ActivityIndicatorViewProps::getDiffProps(
126
146
  return result;
127
147
  }
128
148
  #endif
149
+ #if RN_DEBUG_STRING_CONVERTIBLE
150
+ SharedDebugStringConvertibleList ActivityIndicatorViewProps::getDebugProps() const {
151
+ return ViewProps::getDebugProps() +
152
+ SharedDebugStringConvertibleList{
153
+ debugStringConvertibleItem("hidesWhenStopped", hidesWhenStopped, true),
154
+ debugStringConvertibleItem("animating", animating, true),
155
+ debugStringConvertibleItem("color", color),
156
+ debugStringConvertibleItem("size", size, ActivityIndicatorViewSize::Small)
157
+ };
158
+ }
159
+ #endif
129
160
  AndroidDrawerLayoutProps::AndroidDrawerLayoutProps(
130
161
  const PropsParserContext &context,
131
162
  const AndroidDrawerLayoutProps &sourceProps,
@@ -180,6 +211,19 @@ folly::dynamic AndroidDrawerLayoutProps::getDiffProps(
180
211
  return result;
181
212
  }
182
213
  #endif
214
+ #if RN_DEBUG_STRING_CONVERTIBLE
215
+ SharedDebugStringConvertibleList AndroidDrawerLayoutProps::getDebugProps() const {
216
+ return ViewProps::getDebugProps() +
217
+ SharedDebugStringConvertibleList{
218
+ debugStringConvertibleItem("keyboardDismissMode", keyboardDismissMode, AndroidDrawerLayoutKeyboardDismissMode::None),
219
+ debugStringConvertibleItem("drawerBackgroundColor", drawerBackgroundColor),
220
+ debugStringConvertibleItem("drawerPosition", drawerPosition, AndroidDrawerLayoutDrawerPosition::Left),
221
+ debugStringConvertibleItem("drawerWidth", drawerWidth),
222
+ debugStringConvertibleItem("drawerLockMode", drawerLockMode, AndroidDrawerLayoutDrawerLockMode::Unlocked),
223
+ debugStringConvertibleItem("statusBarBackgroundColor", statusBarBackgroundColor)
224
+ };
225
+ }
226
+ #endif
183
227
  AndroidHorizontalScrollContentViewProps::AndroidHorizontalScrollContentViewProps(
184
228
  const PropsParserContext &context,
185
229
  const AndroidHorizontalScrollContentViewProps &sourceProps,
@@ -209,6 +253,14 @@ folly::dynamic AndroidHorizontalScrollContentViewProps::getDiffProps(
209
253
  return result;
210
254
  }
211
255
  #endif
256
+ #if RN_DEBUG_STRING_CONVERTIBLE
257
+ SharedDebugStringConvertibleList AndroidHorizontalScrollContentViewProps::getDebugProps() const {
258
+ return ViewProps::getDebugProps() +
259
+ SharedDebugStringConvertibleList{
260
+ debugStringConvertibleItem("removeClippedSubviews", removeClippedSubviews, false)
261
+ };
262
+ }
263
+ #endif
212
264
  AndroidSwipeRefreshLayoutProps::AndroidSwipeRefreshLayoutProps(
213
265
  const PropsParserContext &context,
214
266
  const AndroidSwipeRefreshLayoutProps &sourceProps,
@@ -263,6 +315,19 @@ folly::dynamic AndroidSwipeRefreshLayoutProps::getDiffProps(
263
315
  return result;
264
316
  }
265
317
  #endif
318
+ #if RN_DEBUG_STRING_CONVERTIBLE
319
+ SharedDebugStringConvertibleList AndroidSwipeRefreshLayoutProps::getDebugProps() const {
320
+ return ViewProps::getDebugProps() +
321
+ SharedDebugStringConvertibleList{
322
+ debugStringConvertibleItem("enabled", enabled, true),
323
+ debugStringConvertibleItem("colors", colors),
324
+ debugStringConvertibleItem("progressBackgroundColor", progressBackgroundColor),
325
+ debugStringConvertibleItem("size", size, AndroidSwipeRefreshLayoutSize::Default),
326
+ debugStringConvertibleItem("progressViewOffset", progressViewOffset, 0.0),
327
+ debugStringConvertibleItem("refreshing", refreshing, false)
328
+ };
329
+ }
330
+ #endif
266
331
  AndroidSwitchProps::AndroidSwitchProps(
267
332
  const PropsParserContext &context,
268
333
  const AndroidSwitchProps &sourceProps,
@@ -332,6 +397,22 @@ folly::dynamic AndroidSwitchProps::getDiffProps(
332
397
  return result;
333
398
  }
334
399
  #endif
400
+ #if RN_DEBUG_STRING_CONVERTIBLE
401
+ SharedDebugStringConvertibleList AndroidSwitchProps::getDebugProps() const {
402
+ return ViewProps::getDebugProps() +
403
+ SharedDebugStringConvertibleList{
404
+ debugStringConvertibleItem("disabled", disabled, false),
405
+ debugStringConvertibleItem("enabled", enabled, true),
406
+ debugStringConvertibleItem("thumbColor", thumbColor),
407
+ debugStringConvertibleItem("trackColorForFalse", trackColorForFalse),
408
+ debugStringConvertibleItem("trackColorForTrue", trackColorForTrue),
409
+ debugStringConvertibleItem("value", value, false),
410
+ debugStringConvertibleItem("on", on, false),
411
+ debugStringConvertibleItem("thumbTintColor", thumbTintColor),
412
+ debugStringConvertibleItem("trackTintColor", trackTintColor)
413
+ };
414
+ }
415
+ #endif
335
416
  DebuggingOverlayProps::DebuggingOverlayProps(
336
417
  const PropsParserContext &context,
337
418
  const DebuggingOverlayProps &sourceProps,
@@ -358,6 +439,11 @@ folly::dynamic DebuggingOverlayProps::getDiffProps(
358
439
  return result;
359
440
  }
360
441
  #endif
442
+ #if RN_DEBUG_STRING_CONVERTIBLE
443
+ SharedDebugStringConvertibleList DebuggingOverlayProps::getDebugProps() const {
444
+ return ViewProps::getDebugProps();
445
+ }
446
+ #endif
361
447
  AndroidProgressBarProps::AndroidProgressBarProps(
362
448
  const PropsParserContext &context,
363
449
  const AndroidProgressBarProps &sourceProps,
@@ -369,7 +455,7 @@ AndroidProgressBarProps::AndroidProgressBarProps(
369
455
  progress(convertRawProp(context, rawProps, "progress", sourceProps.progress, {0.0})),
370
456
  animating(convertRawProp(context, rawProps, "animating", sourceProps.animating, {true})),
371
457
  color(convertRawProp(context, rawProps, "color", sourceProps.color, {})),
372
- testID(convertRawProp(context, rawProps, "testID", sourceProps.testID, {""})) {}
458
+ testID(convertRawProp(context, rawProps, "testID", sourceProps.testID, {std::string{""}})) {}
373
459
 
374
460
  #ifdef RN_SERIALIZABLE_STATE
375
461
  ComponentName AndroidProgressBarProps::getDiffPropsImplementationTarget() const {
@@ -417,6 +503,20 @@ folly::dynamic AndroidProgressBarProps::getDiffProps(
417
503
  return result;
418
504
  }
419
505
  #endif
506
+ #if RN_DEBUG_STRING_CONVERTIBLE
507
+ SharedDebugStringConvertibleList AndroidProgressBarProps::getDebugProps() const {
508
+ return ViewProps::getDebugProps() +
509
+ SharedDebugStringConvertibleList{
510
+ debugStringConvertibleItem("styleAttr", styleAttr),
511
+ debugStringConvertibleItem("typeAttr", typeAttr),
512
+ debugStringConvertibleItem("indeterminate", indeterminate, false),
513
+ debugStringConvertibleItem("progress", progress, 0.0),
514
+ debugStringConvertibleItem("animating", animating, true),
515
+ debugStringConvertibleItem("color", color),
516
+ debugStringConvertibleItem("testID", testID, std::string{""})
517
+ };
518
+ }
519
+ #endif
420
520
  PullToRefreshViewProps::PullToRefreshViewProps(
421
521
  const PropsParserContext &context,
422
522
  const PullToRefreshViewProps &sourceProps,
@@ -466,6 +566,18 @@ folly::dynamic PullToRefreshViewProps::getDiffProps(
466
566
  return result;
467
567
  }
468
568
  #endif
569
+ #if RN_DEBUG_STRING_CONVERTIBLE
570
+ SharedDebugStringConvertibleList PullToRefreshViewProps::getDebugProps() const {
571
+ return ViewProps::getDebugProps() +
572
+ SharedDebugStringConvertibleList{
573
+ debugStringConvertibleItem("tintColor", tintColor),
574
+ debugStringConvertibleItem("titleColor", titleColor),
575
+ debugStringConvertibleItem("title", title),
576
+ debugStringConvertibleItem("progressViewOffset", progressViewOffset, 0.0),
577
+ debugStringConvertibleItem("refreshing", refreshing, false)
578
+ };
579
+ }
580
+ #endif
469
581
  InputAccessoryProps::InputAccessoryProps(
470
582
  const PropsParserContext &context,
471
583
  const InputAccessoryProps &sourceProps,
@@ -495,6 +607,14 @@ folly::dynamic InputAccessoryProps::getDiffProps(
495
607
  return result;
496
608
  }
497
609
  #endif
610
+ #if RN_DEBUG_STRING_CONVERTIBLE
611
+ SharedDebugStringConvertibleList InputAccessoryProps::getDebugProps() const {
612
+ return ViewProps::getDebugProps() +
613
+ SharedDebugStringConvertibleList{
614
+ debugStringConvertibleItem("backgroundColor", backgroundColor)
615
+ };
616
+ }
617
+ #endif
498
618
  ModalHostViewProps::ModalHostViewProps(
499
619
  const PropsParserContext &context,
500
620
  const ModalHostViewProps &sourceProps,
@@ -574,6 +694,24 @@ folly::dynamic ModalHostViewProps::getDiffProps(
574
694
  return result;
575
695
  }
576
696
  #endif
697
+ #if RN_DEBUG_STRING_CONVERTIBLE
698
+ SharedDebugStringConvertibleList ModalHostViewProps::getDebugProps() const {
699
+ return ViewProps::getDebugProps() +
700
+ SharedDebugStringConvertibleList{
701
+ debugStringConvertibleItem("animationType", animationType, ModalHostViewAnimationType::None),
702
+ debugStringConvertibleItem("presentationStyle", presentationStyle, ModalHostViewPresentationStyle::FullScreen),
703
+ debugStringConvertibleItem("transparent", transparent, false),
704
+ debugStringConvertibleItem("statusBarTranslucent", statusBarTranslucent, false),
705
+ debugStringConvertibleItem("navigationBarTranslucent", navigationBarTranslucent, false),
706
+ debugStringConvertibleItem("hardwareAccelerated", hardwareAccelerated, false),
707
+ debugStringConvertibleItem("visible", visible, false),
708
+ debugStringConvertibleItem("animated", animated, false),
709
+ debugStringConvertibleItem("allowSwipeDismissal", allowSwipeDismissal, false),
710
+ debugStringConvertibleItem("supportedOrientations", supportedOrientations, static_cast<ModalHostViewSupportedOrientationsMask>(ModalHostViewSupportedOrientations::Portrait)),
711
+ debugStringConvertibleItem("identifier", identifier, 0)
712
+ };
713
+ }
714
+ #endif
577
715
  SafeAreaViewProps::SafeAreaViewProps(
578
716
  const PropsParserContext &context,
579
717
  const SafeAreaViewProps &sourceProps,
@@ -600,6 +738,11 @@ folly::dynamic SafeAreaViewProps::getDiffProps(
600
738
  return result;
601
739
  }
602
740
  #endif
741
+ #if RN_DEBUG_STRING_CONVERTIBLE
742
+ SharedDebugStringConvertibleList SafeAreaViewProps::getDebugProps() const {
743
+ return ViewProps::getDebugProps();
744
+ }
745
+ #endif
603
746
  SwitchProps::SwitchProps(
604
747
  const PropsParserContext &context,
605
748
  const SwitchProps &sourceProps,
@@ -664,12 +807,27 @@ folly::dynamic SwitchProps::getDiffProps(
664
807
  return result;
665
808
  }
666
809
  #endif
810
+ #if RN_DEBUG_STRING_CONVERTIBLE
811
+ SharedDebugStringConvertibleList SwitchProps::getDebugProps() const {
812
+ return ViewProps::getDebugProps() +
813
+ SharedDebugStringConvertibleList{
814
+ debugStringConvertibleItem("disabled", disabled, false),
815
+ debugStringConvertibleItem("value", value, false),
816
+ debugStringConvertibleItem("tintColor", tintColor),
817
+ debugStringConvertibleItem("onTintColor", onTintColor),
818
+ debugStringConvertibleItem("thumbTintColor", thumbTintColor),
819
+ debugStringConvertibleItem("thumbColor", thumbColor),
820
+ debugStringConvertibleItem("trackColorForFalse", trackColorForFalse),
821
+ debugStringConvertibleItem("trackColorForTrue", trackColorForTrue)
822
+ };
823
+ }
824
+ #endif
667
825
  UnimplementedNativeViewProps::UnimplementedNativeViewProps(
668
826
  const PropsParserContext &context,
669
827
  const UnimplementedNativeViewProps &sourceProps,
670
828
  const RawProps &rawProps): ViewProps(context, sourceProps, rawProps),
671
829
 
672
- name(convertRawProp(context, rawProps, "name", sourceProps.name, {""})) {}
830
+ name(convertRawProp(context, rawProps, "name", sourceProps.name, {std::string{""}})) {}
673
831
 
674
832
  #ifdef RN_SERIALIZABLE_STATE
675
833
  ComponentName UnimplementedNativeViewProps::getDiffPropsImplementationTarget() const {
@@ -693,5 +851,13 @@ folly::dynamic UnimplementedNativeViewProps::getDiffProps(
693
851
  return result;
694
852
  }
695
853
  #endif
854
+ #if RN_DEBUG_STRING_CONVERTIBLE
855
+ SharedDebugStringConvertibleList UnimplementedNativeViewProps::getDebugProps() const {
856
+ return ViewProps::getDebugProps() +
857
+ SharedDebugStringConvertibleList{
858
+ debugStringConvertibleItem("name", name, std::string{""})
859
+ };
860
+ }
861
+ #endif
696
862
 
697
863
  } // namespace facebook::react
@@ -12,6 +12,7 @@
12
12
  #include <cinttypes>
13
13
  #include <react/renderer/components/view/ViewProps.h>
14
14
  #include <react/renderer/core/PropsParserContext.h>
15
+ #include <react/renderer/debug/DebugStringConvertible.h>
15
16
  #include <react/renderer/graphics/Color.h>
16
17
  #include <vector>
17
18
 
@@ -32,6 +33,10 @@ class VirtualViewExperimentalProps final : public ViewProps {
32
33
 
33
34
  folly::dynamic getDiffProps(const Props* prevProps) const override;
34
35
  #endif
36
+
37
+ #if RN_DEBUG_STRING_CONVERTIBLE
38
+ SharedDebugStringConvertibleList getDebugProps() const override;
39
+ #endif
35
40
  };
36
41
 
37
42
  class VirtualViewProps final : public ViewProps {
@@ -49,6 +54,10 @@ class VirtualViewProps final : public ViewProps {
49
54
 
50
55
  folly::dynamic getDiffProps(const Props* prevProps) const override;
51
56
  #endif
57
+
58
+ #if RN_DEBUG_STRING_CONVERTIBLE
59
+ SharedDebugStringConvertibleList getDebugProps() const override;
60
+ #endif
52
61
  };
53
62
 
54
63
  enum class ActivityIndicatorViewSize { Small, Large };
@@ -90,6 +99,10 @@ class ActivityIndicatorViewProps final : public ViewProps {
90
99
 
91
100
  folly::dynamic getDiffProps(const Props* prevProps) const override;
92
101
  #endif
102
+
103
+ #if RN_DEBUG_STRING_CONVERTIBLE
104
+ SharedDebugStringConvertibleList getDebugProps() const override;
105
+ #endif
93
106
  };
94
107
 
95
108
  enum class AndroidDrawerLayoutKeyboardDismissMode { None, OnDrag };
@@ -177,6 +190,10 @@ class AndroidDrawerLayoutProps final : public ViewProps {
177
190
 
178
191
  folly::dynamic getDiffProps(const Props* prevProps) const override;
179
192
  #endif
193
+
194
+ #if RN_DEBUG_STRING_CONVERTIBLE
195
+ SharedDebugStringConvertibleList getDebugProps() const override;
196
+ #endif
180
197
  };
181
198
 
182
199
  class AndroidHorizontalScrollContentViewProps final : public ViewProps {
@@ -193,6 +210,10 @@ class AndroidHorizontalScrollContentViewProps final : public ViewProps {
193
210
 
194
211
  folly::dynamic getDiffProps(const Props* prevProps) const override;
195
212
  #endif
213
+
214
+ #if RN_DEBUG_STRING_CONVERTIBLE
215
+ SharedDebugStringConvertibleList getDebugProps() const override;
216
+ #endif
196
217
  };
197
218
 
198
219
  enum class AndroidSwipeRefreshLayoutSize { Default, Large };
@@ -236,6 +257,10 @@ class AndroidSwipeRefreshLayoutProps final : public ViewProps {
236
257
 
237
258
  folly::dynamic getDiffProps(const Props* prevProps) const override;
238
259
  #endif
260
+
261
+ #if RN_DEBUG_STRING_CONVERTIBLE
262
+ SharedDebugStringConvertibleList getDebugProps() const override;
263
+ #endif
239
264
  };
240
265
 
241
266
  class AndroidSwitchProps final : public ViewProps {
@@ -260,6 +285,10 @@ class AndroidSwitchProps final : public ViewProps {
260
285
 
261
286
  folly::dynamic getDiffProps(const Props* prevProps) const override;
262
287
  #endif
288
+
289
+ #if RN_DEBUG_STRING_CONVERTIBLE
290
+ SharedDebugStringConvertibleList getDebugProps() const override;
291
+ #endif
263
292
  };
264
293
 
265
294
  class DebuggingOverlayProps final : public ViewProps {
@@ -276,6 +305,10 @@ class DebuggingOverlayProps final : public ViewProps {
276
305
 
277
306
  folly::dynamic getDiffProps(const Props* prevProps) const override;
278
307
  #endif
308
+
309
+ #if RN_DEBUG_STRING_CONVERTIBLE
310
+ SharedDebugStringConvertibleList getDebugProps() const override;
311
+ #endif
279
312
  };
280
313
 
281
314
  class AndroidProgressBarProps final : public ViewProps {
@@ -291,13 +324,17 @@ class AndroidProgressBarProps final : public ViewProps {
291
324
  double progress{0.0};
292
325
  bool animating{true};
293
326
  SharedColor color{};
294
- std::string testID{""};
327
+ std::string testID{std::string{""}};
295
328
 
296
329
  #ifdef RN_SERIALIZABLE_STATE
297
330
  ComponentName getDiffPropsImplementationTarget() const override;
298
331
 
299
332
  folly::dynamic getDiffProps(const Props* prevProps) const override;
300
333
  #endif
334
+
335
+ #if RN_DEBUG_STRING_CONVERTIBLE
336
+ SharedDebugStringConvertibleList getDebugProps() const override;
337
+ #endif
301
338
  };
302
339
 
303
340
  class PullToRefreshViewProps final : public ViewProps {
@@ -318,6 +355,10 @@ class PullToRefreshViewProps final : public ViewProps {
318
355
 
319
356
  folly::dynamic getDiffProps(const Props* prevProps) const override;
320
357
  #endif
358
+
359
+ #if RN_DEBUG_STRING_CONVERTIBLE
360
+ SharedDebugStringConvertibleList getDebugProps() const override;
361
+ #endif
321
362
  };
322
363
 
323
364
  class InputAccessoryProps final : public ViewProps {
@@ -334,6 +375,10 @@ class InputAccessoryProps final : public ViewProps {
334
375
 
335
376
  folly::dynamic getDiffProps(const Props* prevProps) const override;
336
377
  #endif
378
+
379
+ #if RN_DEBUG_STRING_CONVERTIBLE
380
+ SharedDebugStringConvertibleList getDebugProps() const override;
381
+ #endif
337
382
  };
338
383
 
339
384
  enum class ModalHostViewAnimationType { None, Slide, Fade };
@@ -492,6 +537,10 @@ class ModalHostViewProps final : public ViewProps {
492
537
 
493
538
  folly::dynamic getDiffProps(const Props* prevProps) const override;
494
539
  #endif
540
+
541
+ #if RN_DEBUG_STRING_CONVERTIBLE
542
+ SharedDebugStringConvertibleList getDebugProps() const override;
543
+ #endif
495
544
  };
496
545
 
497
546
  class SafeAreaViewProps final : public ViewProps {
@@ -508,6 +557,10 @@ class SafeAreaViewProps final : public ViewProps {
508
557
 
509
558
  folly::dynamic getDiffProps(const Props* prevProps) const override;
510
559
  #endif
560
+
561
+ #if RN_DEBUG_STRING_CONVERTIBLE
562
+ SharedDebugStringConvertibleList getDebugProps() const override;
563
+ #endif
511
564
  };
512
565
 
513
566
  class SwitchProps final : public ViewProps {
@@ -531,6 +584,10 @@ class SwitchProps final : public ViewProps {
531
584
 
532
585
  folly::dynamic getDiffProps(const Props* prevProps) const override;
533
586
  #endif
587
+
588
+ #if RN_DEBUG_STRING_CONVERTIBLE
589
+ SharedDebugStringConvertibleList getDebugProps() const override;
590
+ #endif
534
591
  };
535
592
 
536
593
  class UnimplementedNativeViewProps final : public ViewProps {
@@ -540,13 +597,17 @@ class UnimplementedNativeViewProps final : public ViewProps {
540
597
 
541
598
  #pragma mark - Props
542
599
 
543
- std::string name{""};
600
+ std::string name{std::string{""}};
544
601
 
545
602
  #ifdef RN_SERIALIZABLE_STATE
546
603
  ComponentName getDiffPropsImplementationTarget() const override;
547
604
 
548
605
  folly::dynamic getDiffProps(const Props* prevProps) const override;
549
606
  #endif
607
+
608
+ #if RN_DEBUG_STRING_CONVERTIBLE
609
+ SharedDebugStringConvertibleList getDebugProps() const override;
610
+ #endif
550
611
  };
551
612
 
552
613
  } // namespace facebook::react
@@ -13,6 +13,8 @@
13
13
  #import <React/RCTScrollableProtocol.h>
14
14
  #import <React/RCTViewComponentView.h>
15
15
 
16
+ #import "RCTVirtualViewContainerProtocol.h"
17
+
16
18
  NS_ASSUME_NONNULL_BEGIN
17
19
 
18
20
  /*
@@ -23,7 +25,8 @@ NS_ASSUME_NONNULL_BEGIN
23
25
  * keyboard-avoiding functionality and so on. All that complexity must be implemented inside those components in order
24
26
  * to keep the complexity of this component manageable.
25
27
  */
26
- @interface RCTScrollViewComponentView : RCTViewComponentView <RCTMountingTransactionObserving>
28
+ @interface RCTScrollViewComponentView
29
+ : RCTViewComponentView <RCTMountingTransactionObserving, RCTVirtualViewContainerProtocol>
27
30
 
28
31
  /*
29
32
  * Finds and returns the closet RCTScrollViewComponentView component to the given view