react-native 0.74.0-rc.1 → 0.74.0-rc.3
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/RCTAppDelegate.h +5 -8
- package/Libraries/AppDelegate/RCTAppDelegate.mm +57 -131
- package/Libraries/AppDelegate/RCTRootViewFactory.h +123 -0
- package/Libraries/AppDelegate/RCTRootViewFactory.mm +253 -0
- package/Libraries/Components/View/ReactNativeStyleAttributes.js +1 -0
- package/Libraries/Core/ReactNativeVersion.js +1 -1
- package/Libraries/LogBox/Data/parseLogBoxLog.js +1 -1
- package/Libraries/StyleSheet/StyleSheetTypes.d.ts +4 -0
- package/Libraries/StyleSheet/StyleSheetTypes.js +3 -0
- package/React/Base/RCTConvert.h +3 -0
- package/React/Base/RCTConvert.mm +9 -0
- package/React/Base/RCTVersion.m +1 -1
- package/React/CoreModules/RCTRedBox.mm +7 -1
- package/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm +32 -0
- package/React/Views/RCTCursor.h +13 -0
- package/React/Views/RCTView.h +3 -0
- package/React/Views/RCTView.m +30 -0
- package/React/Views/RCTViewManager.m +2 -0
- package/ReactAndroid/api/ReactAndroid.api +9 -56
- package/ReactAndroid/build.gradle.kts +26 -0
- package/ReactAndroid/cmake-utils/ReactNative-application.cmake +6 -0
- package/ReactAndroid/gradle.properties +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/CoreModulesPackage.java +1 -2
- package/ReactAndroid/src/main/java/com/facebook/react/DebugCorePackage.java +1 -2
- package/ReactAndroid/src/main/java/com/facebook/react/ReactDelegate.java +1 -2
- package/ReactAndroid/src/main/java/com/facebook/react/ReactHost.kt +9 -0
- package/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java +5 -0
- package/ReactAndroid/src/main/java/com/facebook/react/ReactPackageTurboModuleManagerDelegate.java +3 -3
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaModuleWrapper.java +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/ModuleHolder.java +1 -2
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/queue/MessageQueueThreadHandler.java +0 -11
- package/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultReactHostDelegate.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultReactNativeHost.kt +11 -6
- package/ReactAndroid/src/main/java/com/facebook/react/internal/turbomodule/core/TurboModuleInteropUtils.java +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/internal/turbomodule/core/TurboModuleManager.java +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/internal/turbomodule/core/TurboModuleManagerDelegate.java +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/module/model/ReactModuleInfo.java +10 -0
- package/ReactAndroid/src/main/java/com/facebook/react/module/processing/ReactModuleSpecProcessor.java +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/modules/fresco/FrescoModule.java +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/AndroidInfoModule.java +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.java +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/CoreReactPackage.java +1 -2
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImpl.java +32 -0
- package/ReactAndroid/src/main/java/com/facebook/react/shell/MainReactPackage.java +1 -5
- package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/interfaces/TurboModule.kt +10 -11
- package/ReactAndroid/src/main/jni/react/fabric/CoreComponentsRegistry.cpp +0 -2
- package/ReactAndroid/src/main/jni/react/jni/JMessageQueueThread.cpp +0 -1
- package/ReactAndroid/src/main/jni/react/jni/JMessageQueueThread.h +0 -4
- package/ReactCommon/cxxreact/ReactNativeVersion.h +1 -1
- package/ReactCommon/react/nativemodule/core/platform/android/ReactCommon/JavaTurboModule.h +1 -1
- package/ReactCommon/react/nativemodule/samples/platform/android/NativeSampleTurboModuleSpec.java +1 -1
- package/ReactCommon/react/renderer/components/view/BaseViewProps.cpp +9 -0
- package/ReactCommon/react/renderer/components/view/BaseViewProps.h +2 -0
- package/ReactCommon/react/renderer/components/view/ViewShadowNode.cpp +1 -1
- package/ReactCommon/react/renderer/components/view/conversions.h +22 -0
- package/ReactCommon/react/renderer/components/view/primitives.h +2 -0
- package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHost.h +6 -2
- package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHost.mm +16 -4
- package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTInstance.mm +37 -6
- package/index.js +0 -5
- package/package.json +3 -3
- package/scripts/codegen/generate-artifacts-executor.js +1 -5
- package/sdks/hermes-engine/hermes-utils.rb +4 -3
- 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 +3 -3
- package/Libraries/Components/PopupMenuAndroid/PopupMenuAndroid.android.js +0 -69
- package/Libraries/Components/PopupMenuAndroid/PopupMenuAndroid.d.ts +0 -24
- package/Libraries/Components/PopupMenuAndroid/PopupMenuAndroid.js +0 -33
- package/Libraries/Components/PopupMenuAndroid/PopupMenuAndroidNativeComponent.js +0 -13
- package/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultBindingsInstaller.kt +0 -20
- package/ReactAndroid/src/main/java/com/facebook/react/internal/turbomodule/core/interfaces/TurboModule.kt +0 -19
- package/ReactAndroid/src/main/java/com/facebook/react/views/popupmenu/PopupMenuSelectionEvent.kt +0 -38
- package/ReactAndroid/src/main/java/com/facebook/react/views/popupmenu/ReactPopupMenuContainer.kt +0 -49
- package/ReactAndroid/src/main/java/com/facebook/react/views/popupmenu/ReactPopupMenuManager.kt +0 -54
- package/src/private/specs/components/PopupMenuAndroidNativeComponent.js +0 -47
package/ReactAndroid/src/main/java/com/facebook/react/bridge/queue/MessageQueueThreadHandler.java
CHANGED
|
@@ -10,8 +10,6 @@ package com.facebook.react.bridge.queue;
|
|
|
10
10
|
import android.os.Handler;
|
|
11
11
|
import android.os.Looper;
|
|
12
12
|
import android.os.Message;
|
|
13
|
-
import com.facebook.common.logging.FLog;
|
|
14
|
-
import com.facebook.react.common.ReactConstants;
|
|
15
13
|
|
|
16
14
|
/** Handler that can catch and dispatch Exceptions to an Exception handler. */
|
|
17
15
|
public class MessageQueueThreadHandler extends Handler {
|
|
@@ -28,15 +26,6 @@ public class MessageQueueThreadHandler extends Handler {
|
|
|
28
26
|
try {
|
|
29
27
|
super.dispatchMessage(msg);
|
|
30
28
|
} catch (Exception e) {
|
|
31
|
-
if (e instanceof NullPointerException) {
|
|
32
|
-
FLog.e(
|
|
33
|
-
ReactConstants.TAG,
|
|
34
|
-
"Caught NullPointerException when dispatching message in MessageQueueThreadHandler. This is likely caused by runnable"
|
|
35
|
-
+ "(msg.callback) being nulled in Android Handler after dispatching and before handling (see T170239922 for more details)."
|
|
36
|
-
+ "Currently we observe that it only happen once which is during initialisation. Due to fixing probably involve Android "
|
|
37
|
-
+ "System code, we decide to ignore here for now and print an error message for debugging purpose in case this cause more serious issues in future.");
|
|
38
|
-
return;
|
|
39
|
-
}
|
|
40
29
|
mExceptionHandler.handleException(e);
|
|
41
30
|
}
|
|
42
31
|
}
|
|
@@ -43,7 +43,7 @@ public class DefaultReactHostDelegate(
|
|
|
43
43
|
override val jsBundleLoader: JSBundleLoader,
|
|
44
44
|
override val reactPackages: List<ReactPackage> = emptyList(),
|
|
45
45
|
override val jsRuntimeFactory: JSRuntimeFactory = HermesInstance(),
|
|
46
|
-
override val bindingsInstaller: BindingsInstaller =
|
|
46
|
+
override val bindingsInstaller: BindingsInstaller? = null,
|
|
47
47
|
private val reactNativeConfig: ReactNativeConfig = ReactNativeConfig.DEFAULT_CONFIG,
|
|
48
48
|
private val exceptionHandler: (Exception) -> Unit = {},
|
|
49
49
|
override val turboModuleManagerDelegateBuilder: ReactPackageTurboModuleManagerDelegate.Builder
|
|
@@ -49,13 +49,18 @@ protected constructor(
|
|
|
49
49
|
DefaultComponentsRegistry.register(componentFactory)
|
|
50
50
|
|
|
51
51
|
val viewManagerRegistry =
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
52
|
+
if (lazyViewManagersEnabled) {
|
|
53
|
+
ViewManagerRegistry(
|
|
54
|
+
object : ViewManagerResolver {
|
|
55
|
+
override fun getViewManager(viewManagerName: String) =
|
|
56
|
+
reactInstanceManager.createViewManager(viewManagerName)
|
|
56
57
|
|
|
57
|
-
|
|
58
|
-
|
|
58
|
+
override fun getViewManagerNames() = reactInstanceManager.viewManagerNames
|
|
59
|
+
})
|
|
60
|
+
} else {
|
|
61
|
+
ViewManagerRegistry(
|
|
62
|
+
reactInstanceManager.getOrCreateViewManagers(reactApplicationContext))
|
|
63
|
+
}
|
|
59
64
|
|
|
60
65
|
FabricUIManagerProviderImpl(
|
|
61
66
|
componentFactory, ReactNativeConfig.DEFAULT_CONFIG, viewManagerRegistry)
|
|
@@ -18,7 +18,7 @@ import com.facebook.react.bridge.ReadableArray;
|
|
|
18
18
|
import com.facebook.react.bridge.ReadableMap;
|
|
19
19
|
import com.facebook.react.bridge.WritableArray;
|
|
20
20
|
import com.facebook.react.bridge.WritableMap;
|
|
21
|
-
import com.facebook.react.
|
|
21
|
+
import com.facebook.react.turbomodule.core.interfaces.TurboModule;
|
|
22
22
|
import java.lang.reflect.Method;
|
|
23
23
|
import java.util.ArrayList;
|
|
24
24
|
import java.util.HashSet;
|
|
@@ -19,12 +19,12 @@ import com.facebook.react.bridge.NativeModule;
|
|
|
19
19
|
import com.facebook.react.bridge.ReactNoCrashSoftException;
|
|
20
20
|
import com.facebook.react.bridge.ReactSoftExceptionLogger;
|
|
21
21
|
import com.facebook.react.bridge.RuntimeExecutor;
|
|
22
|
-
import com.facebook.react.internal.turbomodule.core.interfaces.TurboModule;
|
|
23
22
|
import com.facebook.react.internal.turbomodule.core.interfaces.TurboModuleRegistry;
|
|
24
23
|
import com.facebook.react.turbomodule.core.CallInvokerHolderImpl;
|
|
25
24
|
import com.facebook.react.turbomodule.core.NativeMethodCallInvokerHolderImpl;
|
|
26
25
|
import com.facebook.react.turbomodule.core.interfaces.CallInvokerHolder;
|
|
27
26
|
import com.facebook.react.turbomodule.core.interfaces.NativeMethodCallInvokerHolder;
|
|
27
|
+
import com.facebook.react.turbomodule.core.interfaces.TurboModule;
|
|
28
28
|
import java.util.ArrayList;
|
|
29
29
|
import java.util.Collection;
|
|
30
30
|
import java.util.HashMap;
|
|
@@ -12,7 +12,7 @@ import com.facebook.infer.annotation.Nullsafe;
|
|
|
12
12
|
import com.facebook.jni.HybridData;
|
|
13
13
|
import com.facebook.proguard.annotations.DoNotStrip;
|
|
14
14
|
import com.facebook.react.bridge.NativeModule;
|
|
15
|
-
import com.facebook.react.
|
|
15
|
+
import com.facebook.react.turbomodule.core.interfaces.TurboModule;
|
|
16
16
|
import java.util.ArrayList;
|
|
17
17
|
import java.util.List;
|
|
18
18
|
|
|
@@ -7,6 +7,8 @@
|
|
|
7
7
|
|
|
8
8
|
package com.facebook.react.module.model;
|
|
9
9
|
|
|
10
|
+
import com.facebook.react.turbomodule.core.interfaces.TurboModule;
|
|
11
|
+
|
|
10
12
|
/**
|
|
11
13
|
* Data holder class holding native module specifications. {@link ReactModuleSpecProcessor} creates
|
|
12
14
|
* these so Java modules don't have to be instantiated at React Native start up.
|
|
@@ -80,4 +82,12 @@ public class ReactModuleInfo {
|
|
|
80
82
|
public boolean isTurboModule() {
|
|
81
83
|
return mIsTurboModule;
|
|
82
84
|
}
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Checks if the passed class is a TurboModule. Useful to populate the parameter [isTurboModule]
|
|
88
|
+
* in the constructor of ReactModuleInfo.
|
|
89
|
+
*/
|
|
90
|
+
public static boolean classIsTurboModule(Class<?> clazz) {
|
|
91
|
+
return TurboModule.class.isAssignableFrom(clazz);
|
|
92
|
+
}
|
|
83
93
|
}
|
|
@@ -161,13 +161,13 @@ public class ReactModuleSpecProcessor extends ProcessorBase {
|
|
|
161
161
|
builder.addStatement("$T map = new $T()", MAP_TYPE, INSTANTIATED_MAP_TYPE);
|
|
162
162
|
|
|
163
163
|
String turboModuleInterfaceCanonicalName =
|
|
164
|
-
"com.facebook.react.
|
|
164
|
+
"com.facebook.react.turbomodule.core.interfaces.TurboModule";
|
|
165
165
|
TypeMirror turboModuleInterface =
|
|
166
166
|
mElements.getTypeElement(turboModuleInterfaceCanonicalName).asType();
|
|
167
167
|
|
|
168
168
|
if (turboModuleInterface == null) {
|
|
169
169
|
throw new RuntimeException(
|
|
170
|
-
"com.facebook.react.
|
|
170
|
+
"com.facebook.react.turbomodule.core.interfaces.TurboModule interface not found.");
|
|
171
171
|
}
|
|
172
172
|
|
|
173
173
|
for (String nativeModule : nativeModules) {
|
|
@@ -19,12 +19,12 @@ import com.facebook.react.bridge.ReactApplicationContext;
|
|
|
19
19
|
import com.facebook.react.bridge.ReactContext;
|
|
20
20
|
import com.facebook.react.bridge.ReactContextBaseJavaModule;
|
|
21
21
|
import com.facebook.react.common.ReactConstants;
|
|
22
|
-
import com.facebook.react.internal.turbomodule.core.interfaces.TurboModule;
|
|
23
22
|
import com.facebook.react.module.annotations.ReactModule;
|
|
24
23
|
import com.facebook.react.modules.common.ModuleDataCleaner;
|
|
25
24
|
import com.facebook.react.modules.network.CookieJarContainer;
|
|
26
25
|
import com.facebook.react.modules.network.ForwardingCookieHandler;
|
|
27
26
|
import com.facebook.react.modules.network.OkHttpClientProvider;
|
|
27
|
+
import com.facebook.react.turbomodule.core.interfaces.TurboModule;
|
|
28
28
|
import java.util.HashSet;
|
|
29
29
|
import okhttp3.JavaNetCookieJar;
|
|
30
30
|
import okhttp3.OkHttpClient;
|
package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/AndroidInfoModule.java
CHANGED
|
@@ -18,8 +18,8 @@ import androidx.annotation.Nullable;
|
|
|
18
18
|
import com.facebook.fbreact.specs.NativePlatformConstantsAndroidSpec;
|
|
19
19
|
import com.facebook.react.bridge.ReactApplicationContext;
|
|
20
20
|
import com.facebook.react.common.build.ReactBuildConfig;
|
|
21
|
-
import com.facebook.react.internal.turbomodule.core.interfaces.TurboModule;
|
|
22
21
|
import com.facebook.react.module.annotations.ReactModule;
|
|
22
|
+
import com.facebook.react.turbomodule.core.interfaces.TurboModule;
|
|
23
23
|
import java.util.HashMap;
|
|
24
24
|
import java.util.Map;
|
|
25
25
|
|
|
@@ -14,7 +14,6 @@ import com.facebook.react.bridge.NativeModule;
|
|
|
14
14
|
import com.facebook.react.bridge.ReactApplicationContext;
|
|
15
15
|
import com.facebook.react.devsupport.LogBoxModule;
|
|
16
16
|
import com.facebook.react.devsupport.interfaces.DevSupportManager;
|
|
17
|
-
import com.facebook.react.internal.turbomodule.core.interfaces.TurboModule;
|
|
18
17
|
import com.facebook.react.module.annotations.ReactModule;
|
|
19
18
|
import com.facebook.react.module.annotations.ReactModuleList;
|
|
20
19
|
import com.facebook.react.module.model.ReactModuleInfo;
|
|
@@ -103,7 +102,7 @@ class CoreReactPackage extends TurboReactPackage {
|
|
|
103
102
|
reactModule.canOverrideExistingModule(),
|
|
104
103
|
reactModule.needsEagerInit(),
|
|
105
104
|
reactModule.isCxxModule(),
|
|
106
|
-
|
|
105
|
+
ReactModuleInfo.classIsTurboModule(moduleClass)));
|
|
107
106
|
}
|
|
108
107
|
}
|
|
109
108
|
return () -> reactModuleInfoMap;
|
|
@@ -15,6 +15,7 @@ import static java.lang.Boolean.TRUE;
|
|
|
15
15
|
|
|
16
16
|
import android.app.Activity;
|
|
17
17
|
import android.content.Context;
|
|
18
|
+
import android.content.Intent;
|
|
18
19
|
import android.os.Bundle;
|
|
19
20
|
import androidx.annotation.NonNull;
|
|
20
21
|
import androidx.annotation.Nullable;
|
|
@@ -600,6 +601,37 @@ public class ReactHostImpl implements ReactHost {
|
|
|
600
601
|
return null;
|
|
601
602
|
}
|
|
602
603
|
|
|
604
|
+
/**
|
|
605
|
+
* To be called when the host activity receives an activity result.
|
|
606
|
+
*
|
|
607
|
+
* @param activity The host activity
|
|
608
|
+
*/
|
|
609
|
+
@ThreadConfined(UI)
|
|
610
|
+
@Override
|
|
611
|
+
public void onActivityResult(
|
|
612
|
+
Activity activity, int requestCode, int resultCode, @Nullable Intent data) {
|
|
613
|
+
final String method =
|
|
614
|
+
"onActivityResult(activity = \""
|
|
615
|
+
+ activity
|
|
616
|
+
+ "\", requestCode = \""
|
|
617
|
+
+ requestCode
|
|
618
|
+
+ "\", resultCode = \""
|
|
619
|
+
+ resultCode
|
|
620
|
+
+ "\", data = \""
|
|
621
|
+
+ data
|
|
622
|
+
+ "\")";
|
|
623
|
+
log(method);
|
|
624
|
+
|
|
625
|
+
ReactContext currentContext = getCurrentReactContext();
|
|
626
|
+
if (currentContext != null) {
|
|
627
|
+
currentContext.onActivityResult(activity, requestCode, resultCode, data);
|
|
628
|
+
}
|
|
629
|
+
ReactSoftExceptionLogger.logSoftException(
|
|
630
|
+
TAG,
|
|
631
|
+
new ReactNoCrashSoftException(
|
|
632
|
+
"Tried to access onActivityResult while context is not ready"));
|
|
633
|
+
}
|
|
634
|
+
|
|
603
635
|
@Nullable
|
|
604
636
|
JavaScriptContextHolder getJavaScriptContextHolder() {
|
|
605
637
|
final ReactInstance reactInstance = mReactInstanceTaskRef.get().getResult();
|
|
@@ -15,7 +15,6 @@ import com.facebook.react.animated.NativeAnimatedModule;
|
|
|
15
15
|
import com.facebook.react.bridge.ModuleSpec;
|
|
16
16
|
import com.facebook.react.bridge.NativeModule;
|
|
17
17
|
import com.facebook.react.bridge.ReactApplicationContext;
|
|
18
|
-
import com.facebook.react.internal.turbomodule.core.interfaces.TurboModule;
|
|
19
18
|
import com.facebook.react.module.annotations.ReactModule;
|
|
20
19
|
import com.facebook.react.module.annotations.ReactModuleList;
|
|
21
20
|
import com.facebook.react.module.model.ReactModuleInfo;
|
|
@@ -47,7 +46,6 @@ import com.facebook.react.uimanager.ViewManager;
|
|
|
47
46
|
import com.facebook.react.views.drawer.ReactDrawerLayoutManager;
|
|
48
47
|
import com.facebook.react.views.image.ReactImageManager;
|
|
49
48
|
import com.facebook.react.views.modal.ReactModalHostManager;
|
|
50
|
-
import com.facebook.react.views.popupmenu.ReactPopupMenuManager;
|
|
51
49
|
import com.facebook.react.views.progressbar.ReactProgressBarViewManager;
|
|
52
50
|
import com.facebook.react.views.scroll.ReactHorizontalScrollContainerViewManager;
|
|
53
51
|
import com.facebook.react.views.scroll.ReactHorizontalScrollViewManager;
|
|
@@ -171,7 +169,6 @@ public class MainReactPackage extends TurboReactPackage implements ViewManagerOn
|
|
|
171
169
|
viewManagers.add(new ReactScrollViewManager());
|
|
172
170
|
viewManagers.add(new ReactSwitchManager());
|
|
173
171
|
viewManagers.add(new SwipeRefreshLayoutManager());
|
|
174
|
-
viewManagers.add(new ReactPopupMenuManager());
|
|
175
172
|
|
|
176
173
|
// Native equivalents
|
|
177
174
|
viewManagers.add(new FrescoBasedReactTextInlineImageViewManager());
|
|
@@ -213,7 +210,6 @@ public class MainReactPackage extends TurboReactPackage implements ViewManagerOn
|
|
|
213
210
|
appendMap(viewManagers, ReactSwitchManager.REACT_CLASS, ReactSwitchManager::new);
|
|
214
211
|
appendMap(
|
|
215
212
|
viewManagers, SwipeRefreshLayoutManager.REACT_CLASS, SwipeRefreshLayoutManager::new);
|
|
216
|
-
appendMap(viewManagers, ReactPopupMenuManager.REACT_CLASS, ReactPopupMenuManager::new);
|
|
217
213
|
appendMap(
|
|
218
214
|
viewManagers,
|
|
219
215
|
FrescoBasedReactTextInlineImageViewManager.REACT_CLASS,
|
|
@@ -300,7 +296,7 @@ public class MainReactPackage extends TurboReactPackage implements ViewManagerOn
|
|
|
300
296
|
reactModule.canOverrideExistingModule(),
|
|
301
297
|
reactModule.needsEagerInit(),
|
|
302
298
|
reactModule.isCxxModule(),
|
|
303
|
-
|
|
299
|
+
ReactModuleInfo.classIsTurboModule(moduleClass)));
|
|
304
300
|
}
|
|
305
301
|
}
|
|
306
302
|
return () -> reactModuleInfoMap;
|
package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/interfaces/TurboModule.kt
CHANGED
|
@@ -6,15 +6,14 @@
|
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
package com.facebook.react.turbomodule.core.interfaces
|
|
9
|
+
/** All turbo modules should inherit from this interface */
|
|
10
|
+
public interface TurboModule {
|
|
11
|
+
/** Initialize the TurboModule. */
|
|
12
|
+
public fun initialize()
|
|
9
13
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
* See description of https://github.com/facebook/react-native/pull/41412 for more context.
|
|
17
|
-
*/
|
|
18
|
-
@DeprecatedInNewArchitecture
|
|
19
|
-
public interface TurboModule :
|
|
20
|
-
com.facebook.react.internal.turbomodule.core.interfaces.TurboModule {}
|
|
14
|
+
/**
|
|
15
|
+
* Called during the turn down process of ReactHost. This method is called before React Native is
|
|
16
|
+
* stopped. Override this method to clean up resources used by the TurboModule.
|
|
17
|
+
*/
|
|
18
|
+
public fun invalidate()
|
|
19
|
+
}
|
|
@@ -67,8 +67,6 @@ CoreComponentsRegistry::sharedProviderRegistry() {
|
|
|
67
67
|
AndroidDrawerLayoutComponentDescriptor>());
|
|
68
68
|
providerRegistry->add(concreteComponentDescriptorProvider<
|
|
69
69
|
DebuggingOverlayComponentDescriptor>());
|
|
70
|
-
providerRegistry->add(concreteComponentDescriptorProvider<
|
|
71
|
-
AndroidPopupMenuComponentDescriptor>());
|
|
72
70
|
|
|
73
71
|
return providerRegistry;
|
|
74
72
|
}();
|
|
@@ -42,10 +42,6 @@ class JMessageQueueThread : public MessageQueueThread {
|
|
|
42
42
|
*/
|
|
43
43
|
void quitSynchronous() override;
|
|
44
44
|
|
|
45
|
-
JavaMessageQueueThread::javaobject jobj() {
|
|
46
|
-
return m_jobj.get();
|
|
47
|
-
}
|
|
48
|
-
|
|
49
45
|
private:
|
|
50
46
|
jni::global_ref<JavaMessageQueueThread::javaobject> m_jobj;
|
|
51
47
|
};
|
|
@@ -19,7 +19,7 @@ namespace facebook::react {
|
|
|
19
19
|
|
|
20
20
|
struct JTurboModule : jni::JavaClass<JTurboModule> {
|
|
21
21
|
static auto constexpr kJavaDescriptor =
|
|
22
|
-
"Lcom/facebook/react/
|
|
22
|
+
"Lcom/facebook/react/turbomodule/core/interfaces/TurboModule;";
|
|
23
23
|
};
|
|
24
24
|
|
|
25
25
|
class JSI_EXPORT JavaTurboModule : public TurboModule {
|
package/ReactCommon/react/nativemodule/samples/platform/android/NativeSampleTurboModuleSpec.java
CHANGED
|
@@ -19,7 +19,7 @@ import com.facebook.react.bridge.ReadableMap;
|
|
|
19
19
|
import com.facebook.react.bridge.WritableArray;
|
|
20
20
|
import com.facebook.react.bridge.WritableMap;
|
|
21
21
|
import com.facebook.react.common.build.ReactBuildConfig;
|
|
22
|
-
import com.facebook.react.
|
|
22
|
+
import com.facebook.react.turbomodule.core.interfaces.TurboModule;
|
|
23
23
|
import java.util.Arrays;
|
|
24
24
|
import java.util.HashSet;
|
|
25
25
|
import java.util.Map;
|
|
@@ -140,6 +140,14 @@ BaseViewProps::BaseViewProps(
|
|
|
140
140
|
"shadowRadius",
|
|
141
141
|
sourceProps.shadowRadius,
|
|
142
142
|
{})),
|
|
143
|
+
cursor(
|
|
144
|
+
CoreFeatures::enablePropIteratorSetter ? sourceProps.cursor
|
|
145
|
+
: convertRawProp(
|
|
146
|
+
context,
|
|
147
|
+
rawProps,
|
|
148
|
+
"cursor",
|
|
149
|
+
sourceProps.cursor,
|
|
150
|
+
{})),
|
|
143
151
|
transform(
|
|
144
152
|
CoreFeatures::enablePropIteratorSetter ? sourceProps.transform
|
|
145
153
|
: convertRawProp(
|
|
@@ -281,6 +289,7 @@ void BaseViewProps::setProp(
|
|
|
281
289
|
RAW_SET_PROP_SWITCH_CASE_BASIC(collapsable);
|
|
282
290
|
RAW_SET_PROP_SWITCH_CASE_BASIC(removeClippedSubviews);
|
|
283
291
|
RAW_SET_PROP_SWITCH_CASE_BASIC(experimental_layoutConformance);
|
|
292
|
+
RAW_SET_PROP_SWITCH_CASE_BASIC(cursor);
|
|
284
293
|
// events field
|
|
285
294
|
VIEW_EVENT_CASE(PointerEnter);
|
|
286
295
|
VIEW_EVENT_CASE(PointerEnterCapture);
|
|
@@ -60,7 +60,7 @@ void ViewShadowNode::initialize() noexcept {
|
|
|
60
60
|
viewProps.accessibilityElementsHidden ||
|
|
61
61
|
viewProps.accessibilityViewIsModal ||
|
|
62
62
|
viewProps.importantForAccessibility != ImportantForAccessibility::Auto ||
|
|
63
|
-
viewProps.removeClippedSubviews ||
|
|
63
|
+
viewProps.removeClippedSubviews || viewProps.cursor != Cursor::Auto ||
|
|
64
64
|
HostPlatformViewTraitsInitializer::formsStackingContext(viewProps);
|
|
65
65
|
|
|
66
66
|
bool formsView = formsStackingContext ||
|
|
@@ -705,6 +705,28 @@ inline void fromRawValue(
|
|
|
705
705
|
react_native_expect(false);
|
|
706
706
|
}
|
|
707
707
|
|
|
708
|
+
inline void fromRawValue(
|
|
709
|
+
const PropsParserContext& context,
|
|
710
|
+
const RawValue& value,
|
|
711
|
+
Cursor& result) {
|
|
712
|
+
result = Cursor::Auto;
|
|
713
|
+
react_native_expect(value.hasType<std::string>());
|
|
714
|
+
if (!value.hasType<std::string>()) {
|
|
715
|
+
return;
|
|
716
|
+
}
|
|
717
|
+
auto stringValue = (std::string)value;
|
|
718
|
+
if (stringValue == "auto") {
|
|
719
|
+
result = Cursor::Auto;
|
|
720
|
+
return;
|
|
721
|
+
}
|
|
722
|
+
if (stringValue == "pointer") {
|
|
723
|
+
result = Cursor::Pointer;
|
|
724
|
+
return;
|
|
725
|
+
}
|
|
726
|
+
LOG(ERROR) << "Could not parse Cursor:" << stringValue;
|
|
727
|
+
react_native_expect(false);
|
|
728
|
+
}
|
|
729
|
+
|
|
708
730
|
inline void fromRawValue(
|
|
709
731
|
const PropsParserContext& /*context*/,
|
|
710
732
|
const RawValue& value,
|
|
@@ -91,6 +91,8 @@ enum class BorderCurve : uint8_t { Circular, Continuous };
|
|
|
91
91
|
|
|
92
92
|
enum class BorderStyle : uint8_t { Solid, Dotted, Dashed };
|
|
93
93
|
|
|
94
|
+
enum class Cursor : uint8_t { Auto, Pointer };
|
|
95
|
+
|
|
94
96
|
enum class LayoutConformance : uint8_t { Undefined, Classic, Strict };
|
|
95
97
|
|
|
96
98
|
template <typename T>
|
|
@@ -52,6 +52,10 @@ typedef std::shared_ptr<facebook::react::JSRuntimeFactory> (^RCTHostJSEngineProv
|
|
|
52
52
|
|
|
53
53
|
@property (nonatomic, weak, nullable) id<RCTHostRuntimeDelegate> runtimeDelegate;
|
|
54
54
|
|
|
55
|
+
@property (nonatomic, readonly) RCTSurfacePresenter *surfacePresenter;
|
|
56
|
+
|
|
57
|
+
@property (nonatomic, readonly) RCTModuleRegistry *moduleRegistry;
|
|
58
|
+
|
|
55
59
|
- (void)start;
|
|
56
60
|
|
|
57
61
|
- (void)callFunctionOnJSModule:(NSString *)moduleName method:(NSString *)method args:(NSArray *)args;
|
|
@@ -64,11 +68,11 @@ typedef std::shared_ptr<facebook::react::JSRuntimeFactory> (^RCTHostJSEngineProv
|
|
|
64
68
|
|
|
65
69
|
- (RCTFabricSurface *)createSurfaceWithModuleName:(NSString *)moduleName initialProperties:(NSDictionary *)properties;
|
|
66
70
|
|
|
67
|
-
- (RCTSurfacePresenter *)getSurfacePresenter;
|
|
71
|
+
- (RCTSurfacePresenter *)getSurfacePresenter __attribute__((deprecated("Use `surfacePresenter` property instead.")));
|
|
68
72
|
|
|
69
73
|
// Native module API
|
|
70
74
|
|
|
71
|
-
- (RCTModuleRegistry *)getModuleRegistry;
|
|
75
|
+
- (RCTModuleRegistry *)getModuleRegistry __attribute__((deprecated("Use `moduleRegistry` property instead.")));
|
|
72
76
|
|
|
73
77
|
@end
|
|
74
78
|
|
|
@@ -212,7 +212,7 @@ class RCTHostPageTargetDelegate : public facebook::react::jsinspector_modern::Pa
|
|
|
212
212
|
mode:(DisplayMode)displayMode
|
|
213
213
|
initialProperties:(NSDictionary *)properties
|
|
214
214
|
{
|
|
215
|
-
RCTFabricSurface *surface = [[RCTFabricSurface alloc] initWithSurfacePresenter:
|
|
215
|
+
RCTFabricSurface *surface = [[RCTFabricSurface alloc] initWithSurfacePresenter:self.surfacePresenter
|
|
216
216
|
moduleName:moduleName
|
|
217
217
|
initialProperties:properties];
|
|
218
218
|
surface.surfaceHandler.setDisplayMode(displayMode);
|
|
@@ -235,16 +235,28 @@ class RCTHostPageTargetDelegate : public facebook::react::jsinspector_modern::Pa
|
|
|
235
235
|
return [self createSurfaceWithModuleName:moduleName mode:DisplayMode::Visible initialProperties:properties];
|
|
236
236
|
}
|
|
237
237
|
|
|
238
|
-
- (RCTModuleRegistry *)
|
|
238
|
+
- (RCTModuleRegistry *)moduleRegistry
|
|
239
239
|
{
|
|
240
240
|
return _moduleRegistry;
|
|
241
241
|
}
|
|
242
242
|
|
|
243
|
-
|
|
243
|
+
// Deprecated
|
|
244
|
+
- (RCTModuleRegistry *)getModuleRegistry
|
|
245
|
+
{
|
|
246
|
+
return self.moduleRegistry;
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
- (RCTSurfacePresenter *)surfacePresenter
|
|
244
250
|
{
|
|
245
251
|
return [_instance surfacePresenter];
|
|
246
252
|
}
|
|
247
253
|
|
|
254
|
+
// Deprecated
|
|
255
|
+
- (RCTSurfacePresenter *)getSurfacePresenter
|
|
256
|
+
{
|
|
257
|
+
return self.surfacePresenter;
|
|
258
|
+
}
|
|
259
|
+
|
|
248
260
|
- (void)callFunctionOnJSModule:(NSString *)moduleName method:(NSString *)method args:(NSArray *)args
|
|
249
261
|
{
|
|
250
262
|
[_instance callFunctionOnJSModule:moduleName method:method args:args];
|
|
@@ -276,7 +288,7 @@ class RCTHostPageTargetDelegate : public facebook::react::jsinspector_modern::Pa
|
|
|
276
288
|
[_hostDelegate hostDidStart:self];
|
|
277
289
|
|
|
278
290
|
for (RCTFabricSurface *surface in [self _getAttachedSurfaces]) {
|
|
279
|
-
[surface resetWithSurfacePresenter:
|
|
291
|
+
[surface resetWithSurfacePresenter:self.surfacePresenter];
|
|
280
292
|
}
|
|
281
293
|
}
|
|
282
294
|
|
|
@@ -28,6 +28,8 @@
|
|
|
28
28
|
#import <React/RCTLogBox.h>
|
|
29
29
|
#import <React/RCTModuleData.h>
|
|
30
30
|
#import <React/RCTPerformanceLogger.h>
|
|
31
|
+
#import <React/RCTRedBox.h>
|
|
32
|
+
#import <React/RCTReloadCommand.h>
|
|
31
33
|
#import <React/RCTSurfacePresenter.h>
|
|
32
34
|
#import <ReactCommon/RCTTurboModuleManager.h>
|
|
33
35
|
#import <ReactCommon/RuntimeExecutor.h>
|
|
@@ -122,10 +124,17 @@ void RCTInstanceSetRuntimeDiagnosticFlags(NSString *flags)
|
|
|
122
124
|
}];
|
|
123
125
|
}
|
|
124
126
|
|
|
125
|
-
[
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
127
|
+
NSNotificationCenter *defaultCenter = [NSNotificationCenter defaultCenter];
|
|
128
|
+
|
|
129
|
+
[defaultCenter addObserver:self
|
|
130
|
+
selector:@selector(_notifyEventDispatcherObserversOfEvent_DEPRECATED:)
|
|
131
|
+
name:@"RCTNotifyEventDispatcherObserversOfEvent_DEPRECATED"
|
|
132
|
+
object:nil];
|
|
133
|
+
|
|
134
|
+
[defaultCenter addObserver:self
|
|
135
|
+
selector:@selector(didReceiveReloadCommand)
|
|
136
|
+
name:RCTTriggerReloadCommandNotification
|
|
137
|
+
object:nil];
|
|
129
138
|
|
|
130
139
|
[self _start];
|
|
131
140
|
}
|
|
@@ -389,6 +398,24 @@ void RCTInstanceSetRuntimeDiagnosticFlags(NSString *flags)
|
|
|
389
398
|
}
|
|
390
399
|
}
|
|
391
400
|
|
|
401
|
+
- (void)handleBundleLoadingError:(NSError *)error
|
|
402
|
+
{
|
|
403
|
+
if (!_valid) {
|
|
404
|
+
return;
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
RCTRedBox *redBox = [_turboModuleManager moduleForName:"RedBox"];
|
|
408
|
+
|
|
409
|
+
RCTExecuteOnMainQueue(^{
|
|
410
|
+
[[NSNotificationCenter defaultCenter] postNotificationName:RCTJavaScriptDidFailToLoadNotification
|
|
411
|
+
object:self
|
|
412
|
+
userInfo:@{@"error" : error}];
|
|
413
|
+
[redBox showErrorMessage:[error localizedDescription]];
|
|
414
|
+
|
|
415
|
+
RCTFatal(error);
|
|
416
|
+
});
|
|
417
|
+
}
|
|
418
|
+
|
|
392
419
|
- (void)_loadJSBundle:(NSURL *)sourceURL
|
|
393
420
|
{
|
|
394
421
|
#if RCT_DEV_MENU && __has_include(<React/RCTDevLoadingViewProtocol.h>)
|
|
@@ -420,8 +447,7 @@ void RCTInstanceSetRuntimeDiagnosticFlags(NSString *flags)
|
|
|
420
447
|
}
|
|
421
448
|
|
|
422
449
|
if (error) {
|
|
423
|
-
|
|
424
|
-
RCTLogError(@"RCTInstance: Error while loading bundle: %@", error);
|
|
450
|
+
[strongSelf handleBundleLoadingError:error];
|
|
425
451
|
[strongSelf invalidate];
|
|
426
452
|
return;
|
|
427
453
|
}
|
|
@@ -490,4 +516,9 @@ void RCTInstanceSetRuntimeDiagnosticFlags(NSString *flags)
|
|
|
490
516
|
isFatal:errorMap.getBool(JSErrorHandlerKey::kIsFatal)];
|
|
491
517
|
}
|
|
492
518
|
|
|
519
|
+
- (void)didReceiveReloadCommand
|
|
520
|
+
{
|
|
521
|
+
[self _loadJSBundle:[_bridgeModuleDecorator.bundleManager bundleURL]];
|
|
522
|
+
}
|
|
523
|
+
|
|
493
524
|
@end
|
package/index.js
CHANGED
|
@@ -27,7 +27,6 @@ import typeof Clipboard from './Libraries/Components/Clipboard/Clipboard';
|
|
|
27
27
|
import typeof DrawerLayoutAndroid from './Libraries/Components/DrawerAndroid/DrawerLayoutAndroid';
|
|
28
28
|
import typeof Keyboard from './Libraries/Components/Keyboard/Keyboard';
|
|
29
29
|
import typeof KeyboardAvoidingView from './Libraries/Components/Keyboard/KeyboardAvoidingView';
|
|
30
|
-
import typeof PopupMenuAndroid from './Libraries/Components/PopupMenuAndroid/PopupMenuAndroid';
|
|
31
30
|
import typeof Pressable from './Libraries/Components/Pressable/Pressable';
|
|
32
31
|
import typeof ProgressBarAndroid from './Libraries/Components/ProgressBarAndroid/ProgressBarAndroid';
|
|
33
32
|
import typeof RefreshControl from './Libraries/Components/RefreshControl/RefreshControl';
|
|
@@ -135,10 +134,6 @@ module.exports = {
|
|
|
135
134
|
return require('./Libraries/Components/Keyboard/KeyboardAvoidingView')
|
|
136
135
|
.default;
|
|
137
136
|
},
|
|
138
|
-
get PopupMenuAndroid(): PopupMenuAndroid {
|
|
139
|
-
return require('./Libraries/Components/PopupMenuAndroid/PopupMenuAndroid')
|
|
140
|
-
.default;
|
|
141
|
-
},
|
|
142
137
|
get Modal(): Modal {
|
|
143
138
|
return require('./Libraries/Modal/Modal');
|
|
144
139
|
},
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native",
|
|
3
|
-
"version": "0.74.0-rc.
|
|
3
|
+
"version": "0.74.0-rc.3",
|
|
4
4
|
"description": "A framework for building native apps using React",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -102,8 +102,8 @@
|
|
|
102
102
|
"@react-native-community/cli-platform-android": "13.6.1",
|
|
103
103
|
"@react-native-community/cli-platform-ios": "13.6.1",
|
|
104
104
|
"@react-native/assets-registry": "0.74.0",
|
|
105
|
-
"@react-native/codegen": "0.74.
|
|
106
|
-
"@react-native/community-cli-plugin": "0.74.
|
|
105
|
+
"@react-native/codegen": "0.74.2",
|
|
106
|
+
"@react-native/community-cli-plugin": "0.74.5",
|
|
107
107
|
"@react-native/gradle-plugin": "0.74.1",
|
|
108
108
|
"@react-native/js-polyfills": "0.74.0",
|
|
109
109
|
"@react-native/normalize-colors": "0.74.1",
|
|
@@ -283,11 +283,7 @@ function findLibrariesFromReactNativeConfig(projectRoot) {
|
|
|
283
283
|
return [];
|
|
284
284
|
}
|
|
285
285
|
|
|
286
|
-
return extractLibrariesFromJSON(
|
|
287
|
-
configFile,
|
|
288
|
-
configFile.name,
|
|
289
|
-
codegenConfigFileDir,
|
|
290
|
-
);
|
|
286
|
+
return extractLibrariesFromJSON(configFile, codegenConfigFileDir);
|
|
291
287
|
});
|
|
292
288
|
}
|
|
293
289
|
|