react-native-tvos 0.74.3-0 → 0.74.5-0

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 (77) hide show
  1. package/Libraries/AppDelegate/React-RCTAppDelegate.podspec +2 -2
  2. package/Libraries/Blob/React-RCTBlob.podspec +1 -1
  3. package/Libraries/Core/ReactNativeVersion.js +1 -1
  4. package/Libraries/Image/RCTImageLoader.mm +2 -6
  5. package/Libraries/Image/React-RCTImage.podspec +1 -1
  6. package/Libraries/LinkingIOS/React-RCTLinking.podspec +1 -1
  7. package/Libraries/NativeAnimation/React-RCTAnimation.podspec +1 -1
  8. package/Libraries/Network/RCTNetworkTask.mm +4 -3
  9. package/Libraries/Network/React-RCTNetwork.podspec +1 -1
  10. package/Libraries/PushNotificationIOS/React-RCTPushNotification.podspec +1 -1
  11. package/Libraries/Settings/React-RCTSettings.podspec +1 -1
  12. package/Libraries/Text/React-RCTText.podspec +1 -1
  13. package/Libraries/Text/TextInput/RCTBaseTextInputView.mm +0 -13
  14. package/Libraries/TypeSafety/RCTTypeSafety.podspec +1 -1
  15. package/Libraries/Vibration/React-RCTVibration.podspec +1 -1
  16. package/README.md +2 -0
  17. package/React/Base/RCTVersion.m +1 -1
  18. package/React/CoreModules/React-CoreModules.podspec +1 -1
  19. package/React/React-RCTFabric.podspec +1 -1
  20. package/React/Views/RCTComponentData.m +11 -3
  21. package/React-Core.podspec +1 -1
  22. package/ReactAndroid/api/ReactAndroid.api +0 -9
  23. package/ReactAndroid/gradle.properties +1 -1
  24. package/ReactAndroid/publish.gradle +56 -39
  25. package/ReactAndroid/src/main/java/com/facebook/react/common/build/ReactBuildConfig.java +23 -0
  26. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.java +1 -1
  27. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactAccessibilityDelegate.java +9 -0
  28. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputKeyPressEvent.java +1 -1
  29. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java +0 -5
  30. package/ReactApple/Libraries/RCTFoundation/RCTDeprecation/RCTDeprecation.podspec +1 -1
  31. package/ReactCommon/React-Fabric.podspec +1 -1
  32. package/ReactCommon/React-FabricImage.podspec +1 -1
  33. package/ReactCommon/React-Mapbuffer.podspec +1 -1
  34. package/ReactCommon/React-nativeconfig.podspec +1 -1
  35. package/ReactCommon/React-rncore.podspec +1 -1
  36. package/ReactCommon/ReactCommon.podspec +1 -1
  37. package/ReactCommon/cxxreact/React-cxxreact.podspec +1 -1
  38. package/ReactCommon/cxxreact/ReactNativeVersion.h +1 -1
  39. package/ReactCommon/hermes/React-hermes.podspec +1 -1
  40. package/ReactCommon/hermes/executor/React-jsitracing.podspec +1 -1
  41. package/ReactCommon/jserrorhandler/React-jserrorhandler.podspec +1 -1
  42. package/ReactCommon/jsiexecutor/React-jsiexecutor.podspec +1 -1
  43. package/ReactCommon/jsinspector-modern/React-jsinspector.podspec +1 -1
  44. package/ReactCommon/react/debug/React-debug.podspec +1 -1
  45. package/ReactCommon/react/featureflags/React-featureflags.podspec +1 -1
  46. package/ReactCommon/react/nativemodule/core/platform/ios/React-NativeModulesApple.podspec +1 -1
  47. package/ReactCommon/react/nativemodule/samples/ReactCommon-Samples.podspec +1 -1
  48. package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropComponentDescriptor.mm +4 -3
  49. package/ReactCommon/react/renderer/debug/React-rendererdebug.podspec +1 -1
  50. package/ReactCommon/react/renderer/graphics/React-graphics.podspec +1 -1
  51. package/ReactCommon/react/renderer/imagemanager/platform/ios/React-ImageManager.podspec +1 -1
  52. package/ReactCommon/react/renderer/runtimescheduler/React-runtimescheduler.podspec +1 -1
  53. package/ReactCommon/react/runtime/React-RuntimeCore.podspec +1 -1
  54. package/ReactCommon/react/runtime/React-RuntimeHermes.podspec +1 -1
  55. package/ReactCommon/react/runtime/platform/ios/React-RuntimeApple.podspec +1 -1
  56. package/ReactCommon/react/utils/React-utils.podspec +1 -1
  57. package/ReactCommon/reactperflogger/React-perflogger.podspec +1 -1
  58. package/package.json +9 -9
  59. package/scripts/cocoapods/helpers.rb +4 -0
  60. package/scripts/cocoapods/new_architecture.rb +10 -23
  61. package/scripts/cocoapods/privacy_manifest_utils.rb +11 -5
  62. package/scripts/cocoapods/utils.rb +12 -1
  63. package/scripts/react_native_pods.rb +4 -0
  64. package/scripts/react_native_pods_utils/script_phases.sh +1 -1
  65. package/sdks/hermes-engine/hermes-engine.podspec +2 -1
  66. package/sdks/hermes-engine/utils/build-apple-framework.sh +11 -14
  67. package/sdks/hermes-engine/utils/build-hermes-xcode.sh +11 -5
  68. package/sdks/hermes-engine/utils/build-ios-framework.sh +17 -8
  69. package/sdks/hermes-engine/utils/create-dummy-hermes-xcframework.sh +1 -1
  70. package/sdks/hermesc/osx-bin/hermes +0 -0
  71. package/sdks/hermesc/osx-bin/hermesc +0 -0
  72. package/sdks/hermesc/win64-bin/hermesc.exe +0 -0
  73. package/template/package.json +5 -5
  74. package/third-party-podspecs/RCT-Folly.podspec +1 -1
  75. package/third-party-podspecs/fmt.podspec +1 -1
  76. package/types/public/ReactNativeTVTypes.d.ts +4 -0
  77. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputEvent.java +0 -70
@@ -26,7 +26,7 @@ use_hermes = ENV['USE_HERMES'] == nil || ENV['USE_HERMES'] == '1'
26
26
  new_arch_enabled_flag = (is_new_arch_enabled ? " -DRCT_NEW_ARCH_ENABLED" : "")
27
27
  is_fabric_enabled = true #is_new_arch_enabled || ENV["RCT_FABRIC_ENABLED"]
28
28
  hermes_flag = (use_hermes ? " -DUSE_HERMES" : "")
29
- other_cflags = "$(inherited)" + folly_compiler_flags + new_arch_enabled_flag + hermes_flag
29
+ other_cflags = "$(inherited) " + folly_compiler_flags + new_arch_enabled_flag + hermes_flag
30
30
 
31
31
  header_search_paths = [
32
32
  "$(PODS_TARGET_SRCROOT)/../../ReactCommon",
@@ -61,7 +61,7 @@ Pod::Spec.new do |s|
61
61
  s.pod_target_xcconfig = {
62
62
  "HEADER_SEARCH_PATHS" => header_search_paths,
63
63
  "OTHER_CPLUSPLUSFLAGS" => other_cflags,
64
- "CLANG_CXX_LANGUAGE_STANDARD" => "c++20",
64
+ "CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard(),
65
65
  "DEFINES_MODULE" => "YES"
66
66
  }
67
67
  s.user_target_xcconfig = { "HEADER_SEARCH_PATHS" => "\"$(PODS_ROOT)/Headers/Private/React-Core\""}
@@ -43,7 +43,7 @@ Pod::Spec.new do |s|
43
43
  s.header_dir = "RCTBlob"
44
44
  s.pod_target_xcconfig = {
45
45
  "USE_HEADERMAP" => "YES",
46
- "CLANG_CXX_LANGUAGE_STANDARD" => "c++20",
46
+ "CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard(),
47
47
  "HEADER_SEARCH_PATHS" => header_search_paths.join(' ')
48
48
  }
49
49
 
@@ -16,7 +16,7 @@ const version: $ReadOnly<{
16
16
  }> = {
17
17
  major: 0,
18
18
  minor: 74,
19
- patch: 3,
19
+ patch: 5,
20
20
  prerelease: '0',
21
21
  };
22
22
 
@@ -44,11 +44,7 @@ static NSInteger RCTImageBytesForImage(UIImage *image)
44
44
  return image.images ? image.images.count * singleImageBytes : singleImageBytes;
45
45
  }
46
46
 
47
- static uint64_t getNextImageRequestCount(void)
48
- {
49
- static uint64_t requestCounter = 0;
50
- return requestCounter++;
51
- }
47
+ static auto currentRequestCount = std::atomic<uint64_t>(0);
52
48
 
53
49
  static NSError *addResponseHeadersToError(NSError *originalError, NSHTTPURLResponse *response)
54
50
  {
@@ -522,7 +518,7 @@ static UIImage *RCTResizeImageIfNeeded(UIImage *image, CGSize size, CGFloat scal
522
518
  auto cancelled = std::make_shared<std::atomic<int>>(0);
523
519
  __block dispatch_block_t cancelLoad = nil;
524
520
  __block NSLock *cancelLoadLock = [NSLock new];
525
- NSString *requestId = [NSString stringWithFormat:@"%@-%llu", [[NSUUID UUID] UUIDString], getNextImageRequestCount()];
521
+ NSString *requestId = [NSString stringWithFormat:@"%@-%llu", [[NSUUID UUID] UUIDString], currentRequestCount++];
526
522
 
527
523
  void (^completionHandler)(NSError *, id, id, NSURLResponse *) =
528
524
  ^(NSError *error, id imageOrData, id imageMetadata, NSURLResponse *response) {
@@ -42,7 +42,7 @@ Pod::Spec.new do |s|
42
42
  s.header_dir = "RCTImage"
43
43
  s.pod_target_xcconfig = {
44
44
  "USE_HEADERMAP" => "YES",
45
- "CLANG_CXX_LANGUAGE_STANDARD" => "c++20",
45
+ "CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard(),
46
46
  "HEADER_SEARCH_PATHS" => header_search_paths.join(' ')
47
47
  }
48
48
  s.framework = ["Accelerate", "UIKit"]
@@ -41,7 +41,7 @@ Pod::Spec.new do |s|
41
41
  s.header_dir = "RCTLinking"
42
42
  s.pod_target_xcconfig = {
43
43
  "USE_HEADERMAP" => "YES",
44
- "CLANG_CXX_LANGUAGE_STANDARD" => "c++20",
44
+ "CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard(),
45
45
  "HEADER_SEARCH_PATHS" => header_search_paths.join(' ')
46
46
  }
47
47
 
@@ -40,7 +40,7 @@ Pod::Spec.new do |s|
40
40
  s.header_dir = "RCTAnimation"
41
41
  s.pod_target_xcconfig = {
42
42
  "USE_HEADERMAP" => "YES",
43
- "CLANG_CXX_LANGUAGE_STANDARD" => "c++20",
43
+ "CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard(),
44
44
  "HEADER_SEARCH_PATHS" => header_search_paths.join(" ")
45
45
  }
46
46
 
@@ -5,6 +5,7 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
 
8
+ #import <atomic>
8
9
  #import <mutex>
9
10
 
10
11
  #import <React/RCTLog.h>
@@ -20,6 +21,8 @@
20
21
  RCTNetworkTask *_selfReference;
21
22
  }
22
23
 
24
+ static auto currentRequestId = std::atomic<NSUInteger>(0);
25
+
23
26
  - (instancetype)initWithRequest:(NSURLRequest *)request
24
27
  handler:(id<RCTURLRequestHandler>)handler
25
28
  callbackQueue:(dispatch_queue_t)callbackQueue
@@ -28,10 +31,8 @@
28
31
  RCTAssertParam(handler);
29
32
  RCTAssertParam(callbackQueue);
30
33
 
31
- static NSUInteger requestID = 0;
32
-
33
34
  if ((self = [super init])) {
34
- _requestID = @(requestID++);
35
+ _requestID = @(currentRequestId++);
35
36
  _request = request;
36
37
  _handler = handler;
37
38
  _callbackQueue = callbackQueue;
@@ -40,7 +40,7 @@ Pod::Spec.new do |s|
40
40
  s.header_dir = "RCTNetwork"
41
41
  s.pod_target_xcconfig = {
42
42
  "USE_HEADERMAP" => "YES",
43
- "CLANG_CXX_LANGUAGE_STANDARD" => "c++20",
43
+ "CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard(),
44
44
  "HEADER_SEARCH_PATHS" => header_search_paths.join(' ')
45
45
  }
46
46
  s.frameworks = "MobileCoreServices"
@@ -41,7 +41,7 @@ Pod::Spec.new do |s|
41
41
  s.header_dir = "RCTPushNotification"
42
42
  s.pod_target_xcconfig = {
43
43
  "USE_HEADERMAP" => "YES",
44
- "CLANG_CXX_LANGUAGE_STANDARD" => "c++20",
44
+ "CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard(),
45
45
  "HEADER_SEARCH_PATHS" => header_search_paths.join(' ')
46
46
  }
47
47
  s.framework = "UserNotifications"
@@ -41,7 +41,7 @@ Pod::Spec.new do |s|
41
41
  s.header_dir = "RCTSettings"
42
42
  s.pod_target_xcconfig = {
43
43
  "USE_HEADERMAP" => "YES",
44
- "CLANG_CXX_LANGUAGE_STANDARD" => "c++20",
44
+ "CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard(),
45
45
  "HEADER_SEARCH_PATHS" => header_search_paths.join(' ')
46
46
  }
47
47
 
@@ -30,7 +30,7 @@ Pod::Spec.new do |s|
30
30
  s.preserve_paths = "package.json", "LICENSE", "LICENSE-docs"
31
31
  s.header_dir = "RCTText"
32
32
  s.framework = ["MobileCoreServices"]
33
- s.pod_target_xcconfig = { "CLANG_CXX_LANGUAGE_STANDARD" => "c++20" }
33
+ s.pod_target_xcconfig = { "CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard() }
34
34
 
35
35
  s.dependency "Yoga"
36
36
  s.dependency "React-Core/RCTTextHeaders", version
@@ -497,8 +497,6 @@ RCT_NOT_IMPLEMENTED(-(instancetype)initWithFrame : (CGRect)frame)
497
497
  }
498
498
  }
499
499
 
500
- NSString *previousText = [backedTextInputView.attributedText.string copy] ?: @"";
501
-
502
500
  if (range.location + range.length > backedTextInputView.attributedText.string.length) {
503
501
  _predictedText = backedTextInputView.attributedText.string;
504
502
  } else if (text != nil) {
@@ -506,17 +504,6 @@ RCT_NOT_IMPLEMENTED(-(instancetype)initWithFrame : (CGRect)frame)
506
504
  withString:text];
507
505
  }
508
506
 
509
- if (_onTextInput) {
510
- _onTextInput(@{
511
- // We copy the string here because if it's a mutable string it may get released before we stop using it on a
512
- // different thread, causing a crash.
513
- @"text" : [text copy],
514
- @"previousText" : previousText,
515
- @"range" : @{@"start" : @(range.location), @"end" : @(range.location + range.length)},
516
- @"eventCount" : @(_nativeEventCount),
517
- });
518
- }
519
-
520
507
  return text; // Accepting the change.
521
508
  }
522
509
 
@@ -29,7 +29,7 @@ Pod::Spec.new do |s|
29
29
  s.header_dir = "RCTTypeSafety"
30
30
  s.pod_target_xcconfig = {
31
31
  "USE_HEADERMAP" => "YES",
32
- "CLANG_CXX_LANGUAGE_STANDARD" => "c++20",
32
+ "CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard(),
33
33
  "HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)/Libraries/TypeSafety\""
34
34
  }
35
35
 
@@ -41,7 +41,7 @@ Pod::Spec.new do |s|
41
41
  s.header_dir = "RCTVibration"
42
42
  s.pod_target_xcconfig = {
43
43
  "USE_HEADERMAP" => "YES",
44
- "CLANG_CXX_LANGUAGE_STANDARD" => "c++20",
44
+ "CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard(),
45
45
  "HEADER_SEARCH_PATHS" => header_search_paths.join(' ')
46
46
  }
47
47
  s.frameworks = "AudioToolbox"
package/README.md CHANGED
@@ -222,6 +222,8 @@ class Game2048 extends React.Component {
222
222
  - `enableTVPanGesture`/`disableTVPanGesture`: Methods to enable and disable detection of finger touches that pan across the touch surface of the Siri remote. See `TVEventHandlerExample` in the `RNTester` app for a demo.
223
223
  - `enableGestureHandlersCancelTouches`/`disableGestureHandlersCancelTouches`: Methods to turn on and turn off cancellation of touches by the gesture handlers in `RCTTVRemoteHandler` (see #366). Cancellation of touches is turned on (enabled) by default in 0.69 and earlier releases.
224
224
 
225
+ - Accessibility: We have an additional `accessibilityFocus` [accessibility action](https://reactnative.dev/docs/accessibility#accessibility-actions) on Android that you can use for detecting focus changes on every *accessible* element (like a regular `Text`) when `TalkBack` is enabled.
226
+
225
227
  - _TVFocusGuideView_: This component provides support for Apple's `UIFocusGuide` API and is implemented in the same way for Android TV, to help ensure that focusable controls can be navigated to, even if they are not directly in line with other controls. An example is provided in `RNTester` that shows two different ways of using this component.
226
228
 
227
229
  | Prop | Value | Description |
@@ -23,7 +23,7 @@ NSDictionary* RCTGetReactNativeVersion(void)
23
23
  __rnVersion = @{
24
24
  RCTVersionMajor: @(0),
25
25
  RCTVersionMinor: @(74),
26
- RCTVersionPatch: @(3),
26
+ RCTVersionPatch: @(5),
27
27
  RCTVersionPrerelease: @"0",
28
28
  };
29
29
  });
@@ -44,7 +44,7 @@ Pod::Spec.new do |s|
44
44
  s.header_dir = "CoreModules"
45
45
  s.pod_target_xcconfig = {
46
46
  "USE_HEADERMAP" => "YES",
47
- "CLANG_CXX_LANGUAGE_STANDARD" => "c++20",
47
+ "CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard(),
48
48
  "HEADER_SEARCH_PATHS" => header_search_paths.join(" ")
49
49
  }
50
50
  s.framework = "UIKit"
@@ -64,7 +64,7 @@ Pod::Spec.new do |s|
64
64
  s.pod_target_xcconfig = {
65
65
  "HEADER_SEARCH_PATHS" => header_search_paths,
66
66
  "OTHER_CFLAGS" => "$(inherited) " + folly_compiler_flags + new_arch_flags,
67
- "CLANG_CXX_LANGUAGE_STANDARD" => "c++20"
67
+ "CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard()
68
68
  }.merge!(ENV['USE_FRAMEWORKS'] != nil ? {
69
69
  "PUBLIC_HEADERS_FOLDER_PATH" => "#{module_name}.framework/Headers/#{header_dir}"
70
70
  }: {})
@@ -61,12 +61,20 @@ static SEL selectorForType(NSString *type)
61
61
  return self;
62
62
  }
63
63
 
64
+ - (BOOL)isBridgeMode
65
+ {
66
+ // If we are in bridge mode, the bridge is RCTBridge
67
+ // If we are bridgeless, the bridge is RCTBridgeProxy
68
+ return [_bridge isKindOfClass:[RCTBridge class]];
69
+ }
70
+
64
71
  - (RCTViewManager *)manager
65
72
  {
66
- if (!_manager && _bridge) {
73
+ if (!_manager && [self isBridgeMode]) {
67
74
  _manager = [_bridge moduleForClass:_managerClass];
68
75
  } else if (!_manager && !_bridgelessViewManager) {
69
76
  _bridgelessViewManager = [_managerClass new];
77
+ _bridgelessViewManager.bridge = _bridge;
70
78
  [[NSNotificationCenter defaultCenter] postNotificationName:RCTDidInitializeModuleNotification
71
79
  object:nil
72
80
  userInfo:@{@"module" : _bridgelessViewManager}];
@@ -267,8 +275,8 @@ static RCTPropBlock createNSInvocationSetter(NSMethodSignature *typeSignature, S
267
275
  type == NSSelectorFromString(@"RCTDirectEventBlock:") ||
268
276
  type == NSSelectorFromString(@"RCTCapturingEventBlock:")) {
269
277
  // Special case for event handlers
270
- setterBlock =
271
- createEventSetter(name, setter, self.eventInterceptor, _bridge ? _bridge.eventDispatcher : _eventDispatcher);
278
+ setterBlock = createEventSetter(
279
+ name, setter, self.eventInterceptor, [self isBridgeMode] ? _bridge.eventDispatcher : _eventDispatcher);
272
280
  } else {
273
281
  // Ordinary property handlers
274
282
  NSMethodSignature *typeSignature = [[RCTConvert class] methodSignatureForSelector:type];
@@ -72,7 +72,7 @@ Pod::Spec.new do |s|
72
72
  "HEADER_SEARCH_PATHS" => header_search_paths,
73
73
  "DEFINES_MODULE" => "YES",
74
74
  "GCC_PREPROCESSOR_DEFINITIONS" => "RCT_METRO_PORT=${RCT_METRO_PORT}",
75
- "CLANG_CXX_LANGUAGE_STANDARD" => "c++20",
75
+ "CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard(),
76
76
  "FRAMEWORK_SEARCH_PATHS" => frameworks_search_paths.join(" ")
77
77
  }
78
78
  s.user_target_xcconfig = { "HEADER_SEARCH_PATHS" => "\"$(PODS_ROOT)/Headers/Private/React-Core\""}
@@ -7362,15 +7362,6 @@ public class com/facebook/react/views/textinput/ReactTextChangedEvent : com/face
7362
7362
  public fun getEventName ()Ljava/lang/String;
7363
7363
  }
7364
7364
 
7365
- public class com/facebook/react/views/textinput/ReactTextInputEvent : com/facebook/react/uimanager/events/Event {
7366
- public static final field EVENT_NAME Ljava/lang/String;
7367
- public fun <init> (IILjava/lang/String;Ljava/lang/String;II)V
7368
- public fun <init> (ILjava/lang/String;Ljava/lang/String;II)V
7369
- public fun canCoalesce ()Z
7370
- protected fun getEventData ()Lcom/facebook/react/bridge/WritableMap;
7371
- public fun getEventName ()Ljava/lang/String;
7372
- }
7373
-
7374
7365
  public final class com/facebook/react/views/textinput/ReactTextInputLocalData {
7375
7366
  public fun <init> (Landroid/widget/EditText;)V
7376
7367
  public fun apply (Landroid/widget/EditText;)V
@@ -1,4 +1,4 @@
1
- VERSION_NAME=0.74.3-0
1
+ VERSION_NAME=0.74.5-0
2
2
  # react.internal.publishingGroup=com.facebook.react
3
3
  # For TV use this group
4
4
  react.internal.publishingGroup=io.github.react-native-tvos
@@ -4,16 +4,19 @@
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
+ /* groovylint-disable CompileStatic, DuplicateStringLiteral, LineLength, NestedBlockDepth, NoDef, UnusedVariable, VariableTypeRequired */
7
8
 
8
9
  apply plugin: 'maven-publish'
9
10
  apply plugin: 'signing'
10
11
 
11
- def isSnapshot = findProperty("isSnapshot")?.toBoolean()
12
- def signingKey = findProperty("SIGNING_KEY")
13
- def signingPwd = findProperty("SIGNING_PWD")
12
+ def isSnapshot = findProperty('isSnapshot')?.toBoolean()
13
+ def signingKey = findProperty('SIGNING_KEY')
14
+ def signingPwd = findProperty('SIGNING_PWD')
15
+ def sonatypeUsername = findProperty('SONATYPE_USERNAME')
16
+ def sonatypePassword = findProperty('SONATYPE_PASSWORD')
14
17
 
15
18
  def reactAndroidProjectDir = project(':packages:react-native:ReactAndroid').projectDir
16
- def mavenTempLocalUrl = "file:///tmp/maven-local"
19
+ def mavenTempLocalUrl = findProperty('MAVEN_TMP_LOCAL_URL') ?: 'file:///tmp/maven-local'
17
20
 
18
21
  publishing {
19
22
  publications {
@@ -21,7 +24,7 @@ publishing {
21
24
  afterEvaluate {
22
25
  // We do a multi variant release, so for Android libraries
23
26
  // we publish `components.release`
24
- if (plugins.hasPlugin("com.android.library")) {
27
+ if (plugins.hasPlugin('com.android.library')) {
25
28
  from components.default
26
29
  }
27
30
  }
@@ -29,35 +32,35 @@ publishing {
29
32
  // We populate the publishing version using the project version,
30
33
  // appending -SNAPSHOT if on nightly or prerelase.
31
34
  if (isSnapshot) {
32
- version = this.version + "-SNAPSHOT"
35
+ version = this.version + '-SNAPSHOT'
33
36
  } else {
34
37
  version = this.version
35
38
  }
36
39
 
37
40
  pom {
38
- name = "react-native"
39
- description = "A framework for building native apps with React"
40
- url = "https://github.com/facebook/react-native"
41
+ name = 'react-native'
42
+ description = 'A framework for building native apps with React'
43
+ url = 'https://github.com/facebook/react-native'
41
44
 
42
45
  developers {
43
46
  developer {
44
- id = "facebook"
45
- name = "Facebook"
47
+ id = 'facebook'
48
+ name = 'Facebook'
46
49
  }
47
50
  }
48
51
 
49
52
  licenses {
50
53
  license {
51
- name = "MIT License"
52
- url = "https://github.com/facebook/react-native/blob/HEAD/LICENSE"
53
- distribution = "repo"
54
+ name = 'MIT License'
55
+ url = 'https://github.com/facebook/react-native/blob/HEAD/LICENSE'
56
+ distribution = 'repo'
54
57
  }
55
58
  }
56
59
 
57
60
  scm {
58
- url = "https://github.com/facebook/react-native.git"
59
- connection = "scm:git:https://github.com/facebook/react-native.git"
60
- developerConnection = "scm:git:git@github.com:facebook/react-native.git"
61
+ url = 'https://github.com/facebook/react-native.git'
62
+ connection = 'scm:git:https://github.com/facebook/react-native.git'
63
+ developerConnection = 'scm:git:git@github.com:facebook/react-native.git'
61
64
  }
62
65
  }
63
66
  }
@@ -65,31 +68,45 @@ publishing {
65
68
 
66
69
  repositories {
67
70
  maven {
68
- name = "mavenTempLocal"
71
+ name = 'mavenTempLocal'
69
72
  url = mavenTempLocalUrl
70
73
  }
74
+ maven {
75
+ name = 'sonatypeRelease'
76
+ url = 'https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/'
77
+ credentials(PasswordCredentials) {
78
+ username = sonatypeUsername
79
+ password = sonatypePassword
80
+ }
81
+ }
82
+ maven {
83
+ name = 'sonatypeSnapshot'
84
+ url = 'https://s01.oss.sonatype.org/content/repositories/snapshots/'
85
+ credentials(PasswordCredentials) {
86
+ username = sonatypeUsername
87
+ password = sonatypePassword
88
+ }
89
+ }
71
90
  }
72
91
 
73
- // if (signingKey && signingPwd) {
74
- // logger.info("PGP Key found - Signing enabled")
75
- // signing {
76
- // useInMemoryPgpKeys(signingKey, signingPwd)
77
- // sign(publishing.publications.release)
78
- // }
79
- // } else {
80
- // logger.info("Signing disabled as the PGP key was not found")
81
- // }
82
-
83
- // For the TV repo, we sign manually for now, using the gpg command line tool.
84
- // Properties that need to be set:
85
- //
86
- // signing.gnupg.executable=gpg
87
- // signing.gnupg.useLegacyGpg=true
88
- // signing.gnupg.keyName=(your key ID)
89
- // signing.keyId=(your key ID)
90
- // signing.secretKeyRingFile=(file with your exported secret keys)
91
- signing {
92
- useGpgCmd()
93
- sign(publishing.publications.release)
92
+ if (signingKey && signingPwd) {
93
+ logger.info('PGP Key found - Signing enabled')
94
+ signing {
95
+ useInMemoryPgpKeys(signingKey, signingPwd)
96
+ sign(publishing.publications.release)
97
+ }
98
+ } else {
99
+ logger.info('PGP Key not found - use GPG command for signing')
100
+ signing {
101
+ useGpgCmd()
102
+ sign(publishing.publications.release)
103
+ // Properties that need to be set:
104
+ //
105
+ // signing.gnupg.executable=gpg
106
+ // signing.gnupg.useLegacyGpg=true
107
+ // signing.gnupg.keyName=(your key ID)
108
+ // signing.keyId=(your key ID)
109
+ // signing.secretKeyRingFile=(file with your exported secret keys)
110
+ }
94
111
  }
95
112
  }
@@ -0,0 +1,23 @@
1
+ /*
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ package com.facebook.react.common.build;
9
+
10
+ import com.facebook.react.BuildConfig;
11
+
12
+ /**
13
+ * Convenience class for accessing auto-generated BuildConfig so that a) other modules can just
14
+ * depend on this module instead of having to manually depend on generating their own build config
15
+ * and b) we don't have to deal with IntelliJ getting confused about the autogenerated BuildConfig
16
+ * class all over the place.
17
+ */
18
+ public class ReactBuildConfig {
19
+
20
+ public static final boolean DEBUG = BuildConfig.DEBUG;
21
+ public static final boolean IS_INTERNAL_BUILD = BuildConfig.IS_INTERNAL_BUILD;
22
+ public static final int EXOPACKAGE_FLAGS = BuildConfig.EXOPACKAGE_FLAGS;
23
+ }
@@ -17,6 +17,6 @@ public class ReactNativeVersion {
17
17
  public static final Map<String, Object> VERSION = MapBuilder.<String, Object>of(
18
18
  "major", 0,
19
19
  "minor", 74,
20
- "patch", 3,
20
+ "patch", 5,
21
21
  "prerelease", "0");
22
22
  }
@@ -76,6 +76,7 @@ public class ReactAccessibilityDelegate extends ExploreByTouchHelper {
76
76
  sActionIdMap.put("decrement", AccessibilityActionCompat.ACTION_SCROLL_BACKWARD.getId());
77
77
  sActionIdMap.put("expand", AccessibilityActionCompat.ACTION_EXPAND.getId());
78
78
  sActionIdMap.put("collapse", AccessibilityActionCompat.ACTION_COLLAPSE.getId());
79
+ sActionIdMap.put("accessibilityFocus", AccessibilityActionCompat.ACTION_ACCESSIBILITY_FOCUS.getId());
79
80
  }
80
81
 
81
82
  private final View mView;
@@ -602,6 +603,7 @@ public class ReactAccessibilityDelegate extends ExploreByTouchHelper {
602
603
  final AccessibilityRole accessibilityRole =
603
604
  (AccessibilityRole) host.getTag(R.id.accessibility_role);
604
605
  final ReadableMap accessibilityValue = (ReadableMap) host.getTag(R.id.accessibility_value);
606
+
605
607
  if (accessibilityRole == AccessibilityRole.ADJUSTABLE
606
608
  && (action == AccessibilityActionCompat.ACTION_SCROLL_FORWARD.getId()
607
609
  || action == AccessibilityActionCompat.ACTION_SCROLL_BACKWARD.getId())) {
@@ -610,6 +612,13 @@ public class ReactAccessibilityDelegate extends ExploreByTouchHelper {
610
612
  }
611
613
  return super.performAccessibilityAction(host, action, args);
612
614
  }
615
+
616
+ // When checking the accessibility focus action, we don't want to intercept the native event
617
+ // otherwise it would intercept the change of focus
618
+ if (action == AccessibilityActionCompat.ACTION_ACCESSIBILITY_FOCUS.getId()) {
619
+ return super.performAccessibilityAction(host, action, args);
620
+ }
621
+
613
622
  return true;
614
623
  }
615
624
  return super.performAccessibilityAction(host, action, args);
@@ -14,7 +14,7 @@ import com.facebook.react.uimanager.common.ViewUtil;
14
14
  import com.facebook.react.uimanager.events.Event;
15
15
 
16
16
  /** Event emitted by EditText native view when key pressed */
17
- class ReactTextInputKeyPressEvent extends Event<ReactTextInputEvent> {
17
+ /* package */ class ReactTextInputKeyPressEvent extends Event<ReactTextInputKeyPressEvent> {
18
18
 
19
19
  public static final String EVENT_NAME = "topKeyPress";
20
20
 
@@ -1122,17 +1122,12 @@ public class ReactTextInputManager extends BaseViewManager<ReactEditText, Layout
1122
1122
  }
1123
1123
 
1124
1124
  // The event that contains the event counter and updates it must be sent first.
1125
- // TODO: t7936714 merge these events
1126
1125
  mEventDispatcher.dispatchEvent(
1127
1126
  new ReactTextChangedEvent(
1128
1127
  mSurfaceId,
1129
1128
  mEditText.getId(),
1130
1129
  s.toString(),
1131
1130
  mEditText.incrementAndGetEventCounter()));
1132
-
1133
- mEventDispatcher.dispatchEvent(
1134
- new ReactTextInputEvent(
1135
- mSurfaceId, mEditText.getId(), newText, oldText, start, start + before));
1136
1131
  }
1137
1132
 
1138
1133
  @Override
@@ -19,7 +19,7 @@ Pod::Spec.new do |s|
19
19
  s.source_files = ["Exported/*.h", "RCTDeprecation.m"]
20
20
  s.pod_target_xcconfig = {
21
21
  "DEFINES_MODULE" => "YES",
22
- "CLANG_CXX_LANGUAGE_STANDARD" => "c++20"
22
+ "CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard()
23
23
  }
24
24
  s.compiler_flags = "-Wnullable-to-nonnull-conversion -Wnullability-completeness"
25
25
  end
@@ -35,7 +35,7 @@ Pod::Spec.new do |s|
35
35
  s.source = source
36
36
  s.source_files = "dummyFile.cpp"
37
37
  s.pod_target_xcconfig = { "USE_HEADERMAP" => "YES",
38
- "CLANG_CXX_LANGUAGE_STANDARD" => "c++20",
38
+ "CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard(),
39
39
  "DEFINES_MODULE" => "YES" }
40
40
 
41
41
  if ENV['USE_FRAMEWORKS']
@@ -56,7 +56,7 @@ Pod::Spec.new do |s|
56
56
  s.header_dir = "react/renderer/components/image"
57
57
  s.compiler_flags = folly_compiler_flags
58
58
  s.pod_target_xcconfig = { "USE_HEADERMAP" => "YES",
59
- "CLANG_CXX_LANGUAGE_STANDARD" => "c++20",
59
+ "CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard(),
60
60
  "HEADER_SEARCH_PATHS" => header_search_path.join(" ")
61
61
  }
62
62
 
@@ -30,7 +30,7 @@ Pod::Spec.new do |s|
30
30
  s.public_header_files = 'react/renderer/mapbuffer/*.h'
31
31
  s.header_dir = "react/renderer/mapbuffer"
32
32
  s.pod_target_xcconfig = { "HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)\"", "USE_HEADERMAP" => "YES",
33
- "CLANG_CXX_LANGUAGE_STANDARD" => "c++20" }
33
+ "CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard() }
34
34
 
35
35
  if ENV['USE_FRAMEWORKS']
36
36
  s.header_mappings_dir = './'
@@ -27,7 +27,7 @@ Pod::Spec.new do |s|
27
27
  s.source = source
28
28
  s.source_files = "react/config/*.{m,mm,cpp,h}"
29
29
  s.header_dir = "react/config"
30
- s.pod_target_xcconfig = { "CLANG_CXX_LANGUAGE_STANDARD" => "c++20" }
30
+ s.pod_target_xcconfig = { "CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard() }
31
31
 
32
32
  if ENV['USE_FRAMEWORKS']
33
33
  s.header_mappings_dir = './'
@@ -48,5 +48,5 @@ Pod::Spec.new do |s|
48
48
  s.source_files = "dummyFile.cpp"
49
49
  s.pod_target_xcconfig = { "USE_HEADERMAP" => "YES",
50
50
  "HEADER_SEARCH_PATHS" => header_search_paths.join(' '),
51
- "CLANG_CXX_LANGUAGE_STANDARD" => "c++20" }
51
+ "CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard() }
52
52
  end
@@ -37,7 +37,7 @@ Pod::Spec.new do |s|
37
37
  s.pod_target_xcconfig = { "HEADER_SEARCH_PATHS" => "\"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/RCT-Folly\" \"$(PODS_ROOT)/DoubleConversion\" \"$(PODS_ROOT)/fmt/include\" \"$(PODS_ROOT)/Headers/Private/React-Core\"",
38
38
  "USE_HEADERMAP" => "YES",
39
39
  "DEFINES_MODULE" => "YES",
40
- "CLANG_CXX_LANGUAGE_STANDARD" => "c++20",
40
+ "CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard(),
41
41
  "GCC_WARN_PEDANTIC" => "YES" }
42
42
  if ENV['USE_FRAMEWORKS']
43
43
  s.header_mappings_dir = './'