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.
- package/Libraries/AppDelegate/React-RCTAppDelegate.podspec +2 -2
- package/Libraries/Blob/React-RCTBlob.podspec +1 -1
- package/Libraries/Core/ReactNativeVersion.js +1 -1
- package/Libraries/Image/RCTImageLoader.mm +2 -6
- package/Libraries/Image/React-RCTImage.podspec +1 -1
- package/Libraries/LinkingIOS/React-RCTLinking.podspec +1 -1
- package/Libraries/NativeAnimation/React-RCTAnimation.podspec +1 -1
- package/Libraries/Network/RCTNetworkTask.mm +4 -3
- package/Libraries/Network/React-RCTNetwork.podspec +1 -1
- package/Libraries/PushNotificationIOS/React-RCTPushNotification.podspec +1 -1
- package/Libraries/Settings/React-RCTSettings.podspec +1 -1
- package/Libraries/Text/React-RCTText.podspec +1 -1
- package/Libraries/Text/TextInput/RCTBaseTextInputView.mm +0 -13
- package/Libraries/TypeSafety/RCTTypeSafety.podspec +1 -1
- package/Libraries/Vibration/React-RCTVibration.podspec +1 -1
- package/README.md +2 -0
- package/React/Base/RCTVersion.m +1 -1
- package/React/CoreModules/React-CoreModules.podspec +1 -1
- package/React/React-RCTFabric.podspec +1 -1
- package/React/Views/RCTComponentData.m +11 -3
- package/React-Core.podspec +1 -1
- package/ReactAndroid/api/ReactAndroid.api +0 -9
- package/ReactAndroid/gradle.properties +1 -1
- package/ReactAndroid/publish.gradle +56 -39
- package/ReactAndroid/src/main/java/com/facebook/react/common/build/ReactBuildConfig.java +23 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.java +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactAccessibilityDelegate.java +9 -0
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputKeyPressEvent.java +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java +0 -5
- package/ReactApple/Libraries/RCTFoundation/RCTDeprecation/RCTDeprecation.podspec +1 -1
- package/ReactCommon/React-Fabric.podspec +1 -1
- package/ReactCommon/React-FabricImage.podspec +1 -1
- package/ReactCommon/React-Mapbuffer.podspec +1 -1
- package/ReactCommon/React-nativeconfig.podspec +1 -1
- package/ReactCommon/React-rncore.podspec +1 -1
- package/ReactCommon/ReactCommon.podspec +1 -1
- package/ReactCommon/cxxreact/React-cxxreact.podspec +1 -1
- package/ReactCommon/cxxreact/ReactNativeVersion.h +1 -1
- package/ReactCommon/hermes/React-hermes.podspec +1 -1
- package/ReactCommon/hermes/executor/React-jsitracing.podspec +1 -1
- package/ReactCommon/jserrorhandler/React-jserrorhandler.podspec +1 -1
- package/ReactCommon/jsiexecutor/React-jsiexecutor.podspec +1 -1
- package/ReactCommon/jsinspector-modern/React-jsinspector.podspec +1 -1
- package/ReactCommon/react/debug/React-debug.podspec +1 -1
- package/ReactCommon/react/featureflags/React-featureflags.podspec +1 -1
- package/ReactCommon/react/nativemodule/core/platform/ios/React-NativeModulesApple.podspec +1 -1
- package/ReactCommon/react/nativemodule/samples/ReactCommon-Samples.podspec +1 -1
- package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropComponentDescriptor.mm +4 -3
- package/ReactCommon/react/renderer/debug/React-rendererdebug.podspec +1 -1
- package/ReactCommon/react/renderer/graphics/React-graphics.podspec +1 -1
- package/ReactCommon/react/renderer/imagemanager/platform/ios/React-ImageManager.podspec +1 -1
- package/ReactCommon/react/renderer/runtimescheduler/React-runtimescheduler.podspec +1 -1
- package/ReactCommon/react/runtime/React-RuntimeCore.podspec +1 -1
- package/ReactCommon/react/runtime/React-RuntimeHermes.podspec +1 -1
- package/ReactCommon/react/runtime/platform/ios/React-RuntimeApple.podspec +1 -1
- package/ReactCommon/react/utils/React-utils.podspec +1 -1
- package/ReactCommon/reactperflogger/React-perflogger.podspec +1 -1
- package/package.json +9 -9
- package/scripts/cocoapods/helpers.rb +4 -0
- package/scripts/cocoapods/new_architecture.rb +10 -23
- package/scripts/cocoapods/privacy_manifest_utils.rb +11 -5
- package/scripts/cocoapods/utils.rb +12 -1
- package/scripts/react_native_pods.rb +4 -0
- package/scripts/react_native_pods_utils/script_phases.sh +1 -1
- package/sdks/hermes-engine/hermes-engine.podspec +2 -1
- package/sdks/hermes-engine/utils/build-apple-framework.sh +11 -14
- package/sdks/hermes-engine/utils/build-hermes-xcode.sh +11 -5
- package/sdks/hermes-engine/utils/build-ios-framework.sh +17 -8
- package/sdks/hermes-engine/utils/create-dummy-hermes-xcframework.sh +1 -1
- 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/template/package.json +5 -5
- package/third-party-podspecs/RCT-Folly.podspec +1 -1
- package/third-party-podspecs/fmt.podspec +1 -1
- package/types/public/ReactNativeTVTypes.d.ts +4 -0
- 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" =>
|
|
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" =>
|
|
46
|
+
"CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard(),
|
|
47
47
|
"HEADER_SEARCH_PATHS" => header_search_paths.join(' ')
|
|
48
48
|
}
|
|
49
49
|
|
|
@@ -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
|
|
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],
|
|
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" =>
|
|
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" =>
|
|
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" =>
|
|
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 = @(
|
|
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" =>
|
|
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" =>
|
|
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" =>
|
|
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" =>
|
|
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" =>
|
|
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" =>
|
|
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 |
|
package/React/Base/RCTVersion.m
CHANGED
|
@@ -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" =>
|
|
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" =>
|
|
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 &&
|
|
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
|
-
|
|
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];
|
package/React-Core.podspec
CHANGED
|
@@ -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" =>
|
|
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
|
|
@@ -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(
|
|
12
|
-
def signingKey = findProperty(
|
|
13
|
-
def signingPwd = findProperty(
|
|
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 =
|
|
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(
|
|
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 +
|
|
35
|
+
version = this.version + '-SNAPSHOT'
|
|
33
36
|
} else {
|
|
34
37
|
version = this.version
|
|
35
38
|
}
|
|
36
39
|
|
|
37
40
|
pom {
|
|
38
|
-
name =
|
|
39
|
-
description =
|
|
40
|
-
url =
|
|
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 =
|
|
45
|
-
name =
|
|
47
|
+
id = 'facebook'
|
|
48
|
+
name = 'Facebook'
|
|
46
49
|
}
|
|
47
50
|
}
|
|
48
51
|
|
|
49
52
|
licenses {
|
|
50
53
|
license {
|
|
51
|
-
name =
|
|
52
|
-
url =
|
|
53
|
-
distribution =
|
|
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 =
|
|
59
|
-
connection =
|
|
60
|
-
developerConnection =
|
|
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 =
|
|
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
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
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
|
-
|
|
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
|
+
}
|
package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactAccessibilityDelegate.java
CHANGED
|
@@ -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<
|
|
17
|
+
/* package */ class ReactTextInputKeyPressEvent extends Event<ReactTextInputKeyPressEvent> {
|
|
18
18
|
|
|
19
19
|
public static final String EVENT_NAME = "topKeyPress";
|
|
20
20
|
|
package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java
CHANGED
|
@@ -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" =>
|
|
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" =>
|
|
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" =>
|
|
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" =>
|
|
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" =>
|
|
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" =>
|
|
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" =>
|
|
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 = './'
|