react-native 0.84.0-nightly-20251216-c16eb23a1 → 0.84.0-nightly-20251218-c7f433a41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Libraries/Animated/nodes/AnimatedObject.js +9 -4
- package/Libraries/Core/ReactNativeVersion.js +1 -1
- package/Libraries/Settings/RCTSettingsManager.mm +1 -1
- package/Libraries/TypeSafety/RCTTypedModuleConstants.h +36 -1
- package/React/Base/RCTVersion.m +1 -1
- package/React/CoreModules/PlatformStubs/RCTStatusBarManager.mm +1 -1
- package/React/CoreModules/RCTAppState.mm +1 -1
- package/React/CoreModules/RCTStatusBarManager.mm +1 -1
- package/React/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec.h +52 -16
- package/ReactAndroid/gradle.properties +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsOverrides_RNOSS_Stable_Android.kt +0 -2
- package/ReactAndroid/src/main/java/com/facebook/react/modules/network/NetworkEventUtil.kt +11 -2
- package/ReactAndroid/src/main/java/com/facebook/react/modules/network/ProgressRequestBody.kt +2 -17
- package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BackgroundStyleApplicator.kt +11 -4
- package/ReactAndroid/src/main/res/views/uimanager/values-ne/strings.xml +1 -0
- package/ReactCommon/cxxreact/ReactNativeVersion.h +1 -1
- package/ReactCommon/jsinspector-modern/tests/NetworkReporterTest.cpp +22 -0
- package/ReactCommon/jsinspector-modern/tracing/PerformanceTracer.cpp +38 -0
- package/ReactCommon/jsinspector-modern/tracing/PerformanceTracer.h +15 -0
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h +2 -2
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsOverridesOSSStable.h +0 -4
- package/ReactCommon/react/nativemodule/samples/ReactCommon-Samples.podspec +1 -0
- package/ReactCommon/react/nativemodule/samples/platform/android/NativeSampleTurboModuleSpec.java +24 -3
- package/ReactCommon/react/nativemodule/samples/platform/ios/ReactCommon/RCTNativeSampleTurboModuleSpec.h +76 -13
- package/ReactCommon/react/nativemodule/samples/platform/ios/ReactCommon/RCTNativeSampleTurboModuleSpec.mm +74 -64
- package/ReactCommon/react/nativemodule/samples/platform/ios/ReactCommon/RCTSampleTurboModule.mm +17 -13
- package/ReactCommon/react/networking/NetworkReporter.cpp +7 -0
- package/ReactCommon/react/renderer/animationbackend/AnimatedPropSerializer.cpp +113 -0
- package/ReactCommon/react/renderer/animationbackend/AnimatedProps.h +64 -1
- package/ReactCommon/react/renderer/animationbackend/AnimatedPropsBuilder.h +29 -0
- package/ReactCommon/react/renderer/animationbackend/AnimatedPropsRegistry.h +35 -0
- package/ReactCommon/react/renderer/animationbackend/AnimationBackend.cpp +2 -1
- package/package.json +8 -8
- package/scripts/cocoapods/new_architecture.rb +5 -1
- package/scripts/react_native_pods.rb +8 -0
- package/src/private/featureflags/ReactNativeFeatureFlags.js +2 -2
|
@@ -53,6 +53,7 @@ Pod::Spec.new do |s|
|
|
|
53
53
|
s.dependency "React-Core"
|
|
54
54
|
s.dependency "React-cxxreact"
|
|
55
55
|
s.dependency "React-jsi"
|
|
56
|
+
s.dependency "RCTTypeSafety"
|
|
56
57
|
add_dependency(s, "React-RCTFBReactNativeSpec")
|
|
57
58
|
add_dependency(s, "ReactCommon", :subspec => "turbomodule/core", :additional_framework_paths => ["react/nativemodule/core"])
|
|
58
59
|
add_dependency(s, "React-NativeModulesApple")
|
package/ReactCommon/react/nativemodule/samples/platform/android/NativeSampleTurboModuleSpec.java
CHANGED
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
|
|
10
10
|
package com.facebook.fbreact.specs;
|
|
11
11
|
|
|
12
|
+
import com.facebook.proguard.annotations.DoNotStrip;
|
|
12
13
|
import com.facebook.react.bridge.Callback;
|
|
13
14
|
import com.facebook.react.bridge.Promise;
|
|
14
15
|
import com.facebook.react.bridge.ReactApplicationContext;
|
|
@@ -52,13 +53,14 @@ public abstract class NativeSampleTurboModuleSpec extends ReactContextBaseJavaMo
|
|
|
52
53
|
mEventEmitterCallback.invoke("onChange", value);
|
|
53
54
|
}
|
|
54
55
|
|
|
55
|
-
protected void emitOnSubmit(ReadableArray value) {
|
|
56
|
+
protected final void emitOnSubmit(ReadableArray value) {
|
|
56
57
|
mEventEmitterCallback.invoke("onSubmit", value);
|
|
57
58
|
}
|
|
58
59
|
|
|
59
60
|
protected abstract Map<String, Object> getTypedExportedConstants();
|
|
60
61
|
|
|
61
62
|
@Override
|
|
63
|
+
@DoNotStrip
|
|
62
64
|
public final @Nullable Map<String, Object> getConstants() {
|
|
63
65
|
Map<String, Object> constants = getTypedExportedConstants();
|
|
64
66
|
if (ReactBuildConfig.DEBUG || ReactBuildConfig.IS_INTERNAL_BUILD) {
|
|
@@ -70,78 +72,97 @@ public abstract class NativeSampleTurboModuleSpec extends ReactContextBaseJavaMo
|
|
|
70
72
|
undeclaredConstants.removeAll(optionalFlowConstants);
|
|
71
73
|
if (!undeclaredConstants.isEmpty()) {
|
|
72
74
|
throw new IllegalStateException(
|
|
73
|
-
"Native Module Flow doesn't declare constants: "
|
|
75
|
+
String.format("Native Module Flow doesn't declare constants: %s", undeclaredConstants));
|
|
74
76
|
}
|
|
75
77
|
undeclaredConstants = obligatoryFlowConstants;
|
|
76
78
|
undeclaredConstants.removeAll(constants.keySet());
|
|
77
79
|
if (!undeclaredConstants.isEmpty()) {
|
|
78
80
|
throw new IllegalStateException(
|
|
79
|
-
"Native Module doesn't fill in constants: "
|
|
81
|
+
String.format("Native Module doesn't fill in constants: %s", undeclaredConstants));
|
|
80
82
|
}
|
|
81
83
|
}
|
|
82
84
|
return constants;
|
|
83
85
|
}
|
|
84
86
|
|
|
85
87
|
@ReactMethod
|
|
88
|
+
@DoNotStrip
|
|
86
89
|
public abstract void voidFunc();
|
|
87
90
|
|
|
88
91
|
@ReactMethod(isBlockingSynchronousMethod = true)
|
|
92
|
+
@DoNotStrip
|
|
89
93
|
public abstract boolean getBool(boolean arg);
|
|
90
94
|
|
|
91
95
|
@ReactMethod(isBlockingSynchronousMethod = true)
|
|
96
|
+
@DoNotStrip
|
|
92
97
|
public double getEnum(double arg) {
|
|
93
98
|
return 0;
|
|
94
99
|
}
|
|
95
100
|
|
|
96
101
|
@ReactMethod(isBlockingSynchronousMethod = true)
|
|
102
|
+
@DoNotStrip
|
|
97
103
|
public abstract double getNumber(double arg);
|
|
98
104
|
|
|
99
105
|
@ReactMethod(isBlockingSynchronousMethod = true)
|
|
106
|
+
@DoNotStrip
|
|
100
107
|
public abstract String getString(String arg);
|
|
101
108
|
|
|
102
109
|
@ReactMethod(isBlockingSynchronousMethod = true)
|
|
110
|
+
@DoNotStrip
|
|
103
111
|
public abstract WritableArray getArray(ReadableArray arg);
|
|
104
112
|
|
|
105
113
|
@ReactMethod(isBlockingSynchronousMethod = true)
|
|
114
|
+
@DoNotStrip
|
|
106
115
|
public abstract WritableMap getObject(ReadableMap arg);
|
|
107
116
|
|
|
108
117
|
@ReactMethod(isBlockingSynchronousMethod = true)
|
|
118
|
+
@DoNotStrip
|
|
109
119
|
public abstract WritableMap getUnsafeObject(ReadableMap arg);
|
|
110
120
|
|
|
111
121
|
@ReactMethod(isBlockingSynchronousMethod = true)
|
|
122
|
+
@DoNotStrip
|
|
112
123
|
public abstract double getRootTag(double arg);
|
|
113
124
|
|
|
114
125
|
@ReactMethod(isBlockingSynchronousMethod = true)
|
|
126
|
+
@DoNotStrip
|
|
115
127
|
public abstract WritableMap getValue(double x, String y, ReadableMap z);
|
|
116
128
|
|
|
117
129
|
@ReactMethod
|
|
130
|
+
@DoNotStrip
|
|
118
131
|
public abstract void getValueWithCallback(Callback callback);
|
|
119
132
|
|
|
120
133
|
@ReactMethod
|
|
134
|
+
@DoNotStrip
|
|
121
135
|
public abstract void getValueWithPromise(boolean error, Promise promise);
|
|
122
136
|
|
|
123
137
|
@ReactMethod
|
|
138
|
+
@DoNotStrip
|
|
124
139
|
public void voidFuncThrows() {}
|
|
125
140
|
|
|
126
141
|
@ReactMethod(isBlockingSynchronousMethod = true)
|
|
142
|
+
@DoNotStrip
|
|
127
143
|
public WritableMap getObjectThrows(ReadableMap arg) {
|
|
128
144
|
return null;
|
|
129
145
|
}
|
|
130
146
|
|
|
131
147
|
@ReactMethod
|
|
148
|
+
@DoNotStrip
|
|
132
149
|
public void promiseThrows(Promise promise) {}
|
|
133
150
|
|
|
134
151
|
@ReactMethod
|
|
152
|
+
@DoNotStrip
|
|
135
153
|
public void voidFuncAssert() {}
|
|
136
154
|
|
|
137
155
|
@ReactMethod(isBlockingSynchronousMethod = true)
|
|
156
|
+
@DoNotStrip
|
|
138
157
|
public WritableMap getObjectAssert(ReadableMap arg) {
|
|
139
158
|
return null;
|
|
140
159
|
}
|
|
141
160
|
|
|
142
161
|
@ReactMethod
|
|
162
|
+
@DoNotStrip
|
|
143
163
|
public void promiseAssert(Promise promise) {}
|
|
144
164
|
|
|
145
165
|
@ReactMethod
|
|
166
|
+
@DoNotStrip
|
|
146
167
|
public void getImageUrl(Promise promise) {}
|
|
147
168
|
}
|
|
@@ -9,17 +9,80 @@
|
|
|
9
9
|
|
|
10
10
|
#import <vector>
|
|
11
11
|
|
|
12
|
-
#
|
|
12
|
+
#ifndef __cplusplus
|
|
13
|
+
#error This file must be compiled as Obj-C++. If you are importing it, you must change your file extension to .mm.
|
|
14
|
+
#endif
|
|
13
15
|
|
|
16
|
+
#import <Foundation/Foundation.h>
|
|
17
|
+
#import <RCTRequired/RCTRequired.h>
|
|
18
|
+
#import <RCTTypeSafety/RCTConvertHelpers.h>
|
|
19
|
+
#import <RCTTypeSafety/RCTTypedModuleConstants.h>
|
|
14
20
|
#import <React/RCTBridgeModule.h>
|
|
15
|
-
|
|
16
21
|
#import <ReactCommon/RCTTurboModule.h>
|
|
17
22
|
|
|
18
23
|
NS_ASSUME_NONNULL_BEGIN
|
|
19
24
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
25
|
+
namespace JS::NativeSampleTurboModule {
|
|
26
|
+
struct Constants {
|
|
27
|
+
struct Builder {
|
|
28
|
+
using ResultT = Constants;
|
|
29
|
+
|
|
30
|
+
struct Input {
|
|
31
|
+
RCTRequired<bool> const1;
|
|
32
|
+
RCTRequired<double> const2;
|
|
33
|
+
RCTRequired<NSString *> const3;
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
/** Initialize with a set of values */
|
|
37
|
+
Builder(const Input i);
|
|
38
|
+
/** Initialize with an existing Constants */
|
|
39
|
+
Builder(Constants i);
|
|
40
|
+
/** Builds the object. Generally used only by the infrastructure. */
|
|
41
|
+
NSDictionary *buildUnsafeRawValue() const
|
|
42
|
+
{
|
|
43
|
+
return _factory();
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
private:
|
|
47
|
+
NSDictionary * (^_factory)(void);
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
static Constants fromUnsafeRawValue(NSDictionary *const v)
|
|
51
|
+
{
|
|
52
|
+
return {v};
|
|
53
|
+
}
|
|
54
|
+
NSDictionary *unsafeRawValue() const
|
|
55
|
+
{
|
|
56
|
+
return _v;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
private:
|
|
60
|
+
Constants(NSDictionary *const v) : _v(v) {}
|
|
61
|
+
NSDictionary *_v;
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
} // namespace JS::NativeSampleTurboModule
|
|
65
|
+
|
|
66
|
+
inline JS::NativeSampleTurboModule::Constants::Builder::Builder(const Input i)
|
|
67
|
+
: _factory(^{
|
|
68
|
+
NSMutableDictionary *d = [NSMutableDictionary new];
|
|
69
|
+
auto const1 = i.const1.get();
|
|
70
|
+
d[@"const1"] = @(const1);
|
|
71
|
+
auto const2 = i.const2.get();
|
|
72
|
+
d[@"const2"] = @(const2);
|
|
73
|
+
auto const3 = i.const3.get();
|
|
74
|
+
d[@"const3"] = const3;
|
|
75
|
+
return d;
|
|
76
|
+
})
|
|
77
|
+
{
|
|
78
|
+
}
|
|
79
|
+
inline JS::NativeSampleTurboModule::Constants::Builder::Builder(Constants i)
|
|
80
|
+
: _factory(^{
|
|
81
|
+
return i.unsafeRawValue();
|
|
82
|
+
})
|
|
83
|
+
{
|
|
84
|
+
}
|
|
85
|
+
|
|
23
86
|
@protocol NativeSampleTurboModuleSpec <RCTBridgeModule, RCTTurboModule>
|
|
24
87
|
|
|
25
88
|
- (void)voidFunc;
|
|
@@ -40,8 +103,9 @@ NS_ASSUME_NONNULL_BEGIN
|
|
|
40
103
|
- (void)voidFuncAssert;
|
|
41
104
|
- (NSDictionary *)getObjectAssert:(NSDictionary *)arg;
|
|
42
105
|
- (void)promiseAssert:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject;
|
|
43
|
-
- (
|
|
44
|
-
- (
|
|
106
|
+
- (void)getImageUrl:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject;
|
|
107
|
+
- (facebook::react::ModuleConstants<JS::NativeSampleTurboModule::Constants>)constantsToExport;
|
|
108
|
+
- (facebook::react::ModuleConstants<JS::NativeSampleTurboModule::Constants>)getConstants;
|
|
45
109
|
|
|
46
110
|
@end
|
|
47
111
|
|
|
@@ -49,23 +113,22 @@ NS_ASSUME_NONNULL_BEGIN
|
|
|
49
113
|
@protected
|
|
50
114
|
facebook::react::EventEmitterCallback _eventEmitterCallback;
|
|
51
115
|
}
|
|
52
|
-
- (void)setEventEmitterCallback:(EventEmitterCallbackWrapper *
|
|
116
|
+
- (void)setEventEmitterCallback:(EventEmitterCallbackWrapper *)eventEmitterCallbackWrapper;
|
|
117
|
+
|
|
53
118
|
- (void)emitOnPress;
|
|
54
|
-
- (void)emitOnClick:(NSString *)value;
|
|
119
|
+
- (void)emitOnClick:(NSString *_Nonnull)value;
|
|
55
120
|
- (void)emitOnChange:(NSDictionary *)value;
|
|
56
|
-
- (void)emitOnSubmit:(NSArray *)value;
|
|
121
|
+
- (void)emitOnSubmit:(NSArray<id<NSObject>> *)value;
|
|
57
122
|
@end
|
|
58
123
|
|
|
59
124
|
namespace facebook::react {
|
|
60
|
-
|
|
61
125
|
/**
|
|
62
|
-
*
|
|
126
|
+
* ObjC++ class for module 'NativeSampleTurboModule'
|
|
63
127
|
*/
|
|
64
128
|
class JSI_EXPORT NativeSampleTurboModuleSpecJSI : public ObjCTurboModule {
|
|
65
129
|
public:
|
|
66
130
|
NativeSampleTurboModuleSpecJSI(const ObjCTurboModule::InitParams ¶ms);
|
|
67
131
|
};
|
|
68
|
-
|
|
69
132
|
} // namespace facebook::react
|
|
70
133
|
|
|
71
134
|
NS_ASSUME_NONNULL_END
|
|
@@ -7,6 +7,30 @@
|
|
|
7
7
|
|
|
8
8
|
#import "RCTNativeSampleTurboModuleSpec.h"
|
|
9
9
|
|
|
10
|
+
@implementation NativeSampleTurboModuleSpecBase
|
|
11
|
+
- (void)emitOnPress
|
|
12
|
+
{
|
|
13
|
+
_eventEmitterCallback("onPress", nil);
|
|
14
|
+
}
|
|
15
|
+
- (void)emitOnClick:(NSString *_Nonnull)value
|
|
16
|
+
{
|
|
17
|
+
_eventEmitterCallback("onClick", value);
|
|
18
|
+
}
|
|
19
|
+
- (void)emitOnChange:(NSDictionary *)value
|
|
20
|
+
{
|
|
21
|
+
_eventEmitterCallback("onChange", value);
|
|
22
|
+
}
|
|
23
|
+
- (void)emitOnSubmit:(NSArray<id<NSObject>> *)value
|
|
24
|
+
{
|
|
25
|
+
_eventEmitterCallback("onSubmit", value);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
- (void)setEventEmitterCallback:(EventEmitterCallbackWrapper *)eventEmitterCallbackWrapper
|
|
29
|
+
{
|
|
30
|
+
_eventEmitterCallback = std::move(eventEmitterCallbackWrapper->_eventEmitterCallback);
|
|
31
|
+
}
|
|
32
|
+
@end
|
|
33
|
+
|
|
10
34
|
namespace facebook::react {
|
|
11
35
|
|
|
12
36
|
static facebook::jsi::Value __hostFunction_NativeSampleTurboModuleSpecJSI_voidFunc(
|
|
@@ -190,6 +214,16 @@ static facebook::jsi::Value __hostFunction_NativeSampleTurboModuleSpecJSI_promis
|
|
|
190
214
|
.invokeObjCMethod(rt, PromiseKind, "promiseAssert", @selector(promiseAssert:reject:), args, count);
|
|
191
215
|
}
|
|
192
216
|
|
|
217
|
+
static facebook::jsi::Value __hostFunction_NativeSampleTurboModuleSpecJSI_getImageUrl(
|
|
218
|
+
facebook::jsi::Runtime &rt,
|
|
219
|
+
TurboModule &turboModule,
|
|
220
|
+
const facebook::jsi::Value *args,
|
|
221
|
+
size_t count)
|
|
222
|
+
{
|
|
223
|
+
return static_cast<ObjCTurboModule &>(turboModule)
|
|
224
|
+
.invokeObjCMethod(rt, PromiseKind, "getImageUrl", @selector(getImageUrl:reject:), args, count);
|
|
225
|
+
}
|
|
226
|
+
|
|
193
227
|
static facebook::jsi::Value __hostFunction_NativeSampleTurboModuleSpecJSI_getConstants(
|
|
194
228
|
facebook::jsi::Runtime &rt,
|
|
195
229
|
TurboModule &turboModule,
|
|
@@ -203,44 +237,48 @@ static facebook::jsi::Value __hostFunction_NativeSampleTurboModuleSpecJSI_getCon
|
|
|
203
237
|
NativeSampleTurboModuleSpecJSI::NativeSampleTurboModuleSpecJSI(const ObjCTurboModule::InitParams ¶ms)
|
|
204
238
|
: ObjCTurboModule(params)
|
|
205
239
|
{
|
|
206
|
-
methodMap_["voidFunc"] =
|
|
207
|
-
|
|
208
|
-
methodMap_["getBool"] =
|
|
209
|
-
|
|
210
|
-
methodMap_["getEnum"] =
|
|
211
|
-
|
|
212
|
-
methodMap_["getNumber"] =
|
|
213
|
-
|
|
214
|
-
methodMap_["getString"] =
|
|
215
|
-
|
|
216
|
-
methodMap_["getArray"] =
|
|
217
|
-
|
|
218
|
-
methodMap_["getObject"] =
|
|
219
|
-
|
|
220
|
-
methodMap_["getUnsafeObject"] =
|
|
221
|
-
|
|
222
|
-
methodMap_["getRootTag"] =
|
|
223
|
-
|
|
224
|
-
methodMap_["getValue"] =
|
|
225
|
-
|
|
240
|
+
methodMap_["voidFunc"] = MethodMetadata{0, __hostFunction_NativeSampleTurboModuleSpecJSI_voidFunc};
|
|
241
|
+
|
|
242
|
+
methodMap_["getBool"] = MethodMetadata{1, __hostFunction_NativeSampleTurboModuleSpecJSI_getBool};
|
|
243
|
+
|
|
244
|
+
methodMap_["getEnum"] = MethodMetadata{1, __hostFunction_NativeSampleTurboModuleSpecJSI_getEnum};
|
|
245
|
+
|
|
246
|
+
methodMap_["getNumber"] = MethodMetadata{1, __hostFunction_NativeSampleTurboModuleSpecJSI_getNumber};
|
|
247
|
+
|
|
248
|
+
methodMap_["getString"] = MethodMetadata{1, __hostFunction_NativeSampleTurboModuleSpecJSI_getString};
|
|
249
|
+
|
|
250
|
+
methodMap_["getArray"] = MethodMetadata{1, __hostFunction_NativeSampleTurboModuleSpecJSI_getArray};
|
|
251
|
+
|
|
252
|
+
methodMap_["getObject"] = MethodMetadata{1, __hostFunction_NativeSampleTurboModuleSpecJSI_getObject};
|
|
253
|
+
|
|
254
|
+
methodMap_["getUnsafeObject"] = MethodMetadata{1, __hostFunction_NativeSampleTurboModuleSpecJSI_getUnsafeObject};
|
|
255
|
+
|
|
256
|
+
methodMap_["getRootTag"] = MethodMetadata{1, __hostFunction_NativeSampleTurboModuleSpecJSI_getRootTag};
|
|
257
|
+
|
|
258
|
+
methodMap_["getValue"] = MethodMetadata{3, __hostFunction_NativeSampleTurboModuleSpecJSI_getValue};
|
|
259
|
+
|
|
226
260
|
methodMap_["getValueWithCallback"] =
|
|
227
|
-
MethodMetadata{
|
|
261
|
+
MethodMetadata{1, __hostFunction_NativeSampleTurboModuleSpecJSI_getValueWithCallback};
|
|
262
|
+
|
|
228
263
|
methodMap_["getValueWithPromise"] =
|
|
229
|
-
MethodMetadata{
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
264
|
+
MethodMetadata{1, __hostFunction_NativeSampleTurboModuleSpecJSI_getValueWithPromise};
|
|
265
|
+
|
|
266
|
+
methodMap_["voidFuncThrows"] = MethodMetadata{0, __hostFunction_NativeSampleTurboModuleSpecJSI_voidFuncThrows};
|
|
267
|
+
|
|
268
|
+
methodMap_["getObjectThrows"] = MethodMetadata{1, __hostFunction_NativeSampleTurboModuleSpecJSI_getObjectThrows};
|
|
269
|
+
|
|
270
|
+
methodMap_["promiseThrows"] = MethodMetadata{0, __hostFunction_NativeSampleTurboModuleSpecJSI_promiseThrows};
|
|
271
|
+
|
|
272
|
+
methodMap_["voidFuncAssert"] = MethodMetadata{0, __hostFunction_NativeSampleTurboModuleSpecJSI_voidFuncAssert};
|
|
273
|
+
|
|
274
|
+
methodMap_["getObjectAssert"] = MethodMetadata{1, __hostFunction_NativeSampleTurboModuleSpecJSI_getObjectAssert};
|
|
275
|
+
|
|
276
|
+
methodMap_["promiseAssert"] = MethodMetadata{0, __hostFunction_NativeSampleTurboModuleSpecJSI_promiseAssert};
|
|
277
|
+
|
|
278
|
+
methodMap_["getImageUrl"] = MethodMetadata{0, __hostFunction_NativeSampleTurboModuleSpecJSI_getImageUrl};
|
|
279
|
+
|
|
280
|
+
methodMap_["getConstants"] = MethodMetadata{0, __hostFunction_NativeSampleTurboModuleSpecJSI_getConstants};
|
|
281
|
+
|
|
244
282
|
eventEmitterMap_["onPress"] = std::make_shared<AsyncEventEmitter<id>>();
|
|
245
283
|
eventEmitterMap_["onClick"] = std::make_shared<AsyncEventEmitter<id>>();
|
|
246
284
|
eventEmitterMap_["onChange"] = std::make_shared<AsyncEventEmitter<id>>();
|
|
@@ -249,32 +287,4 @@ NativeSampleTurboModuleSpecJSI::NativeSampleTurboModuleSpecJSI(const ObjCTurboMo
|
|
|
249
287
|
static_cast<AsyncEventEmitter<id> &>(*eventEmitterMap_[name]).emit(value);
|
|
250
288
|
});
|
|
251
289
|
}
|
|
252
|
-
|
|
253
290
|
} // namespace facebook::react
|
|
254
|
-
|
|
255
|
-
@implementation NativeSampleTurboModuleSpecBase
|
|
256
|
-
- (void)setEventEmitterCallback:(EventEmitterCallbackWrapper *_Nonnull)eventEmitterCallbackWrapper
|
|
257
|
-
{
|
|
258
|
-
_eventEmitterCallback = std::move(eventEmitterCallbackWrapper->_eventEmitterCallback);
|
|
259
|
-
}
|
|
260
|
-
|
|
261
|
-
- (void)emitOnPress
|
|
262
|
-
{
|
|
263
|
-
_eventEmitterCallback("onPress", nil);
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
- (void)emitOnClick:(NSString *)value
|
|
267
|
-
{
|
|
268
|
-
_eventEmitterCallback("onClick", value);
|
|
269
|
-
}
|
|
270
|
-
|
|
271
|
-
- (void)emitOnChange:(NSDictionary *)value
|
|
272
|
-
{
|
|
273
|
-
_eventEmitterCallback("onChange", value);
|
|
274
|
-
}
|
|
275
|
-
|
|
276
|
-
- (void)emitOnSubmit:(NSArray *)value
|
|
277
|
-
{
|
|
278
|
-
_eventEmitterCallback("onSubmit", value);
|
|
279
|
-
}
|
|
280
|
-
@end
|
package/ReactCommon/react/nativemodule/samples/platform/ios/ReactCommon/RCTSampleTurboModule.mm
CHANGED
|
@@ -20,7 +20,7 @@ using namespace facebook::react;
|
|
|
20
20
|
@end
|
|
21
21
|
|
|
22
22
|
@implementation RCTSampleTurboModule {
|
|
23
|
-
|
|
23
|
+
facebook::react::ModuleConstants<JS::NativeSampleTurboModule::Constants> _constants;
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
// Backward-compatible export
|
|
@@ -37,11 +37,11 @@ RCT_EXPORT_MODULE()
|
|
|
37
37
|
UIScreen *mainScreen = UIScreen.mainScreen;
|
|
38
38
|
CGSize screenSize = mainScreen.bounds.size;
|
|
39
39
|
|
|
40
|
-
_constants =
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
};
|
|
40
|
+
_constants = facebook::react::typedConstants<JS::NativeSampleTurboModule::Constants>({
|
|
41
|
+
.const1 = YES,
|
|
42
|
+
.const2 = screenSize.width,
|
|
43
|
+
.const3 = @"something",
|
|
44
|
+
});
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
- (dispatch_queue_t)methodQueue
|
|
@@ -62,15 +62,19 @@ RCT_EXPORT_MODULE()
|
|
|
62
62
|
NSLog(@"Invalidating RCTSampleTurboModule...");
|
|
63
63
|
}
|
|
64
64
|
|
|
65
|
-
- (
|
|
65
|
+
- (facebook::react::ModuleConstants<JS::NativeSampleTurboModule::Constants>)constantsToExport
|
|
66
|
+
{
|
|
67
|
+
return _constants;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
- (facebook::react::ModuleConstants<JS::NativeSampleTurboModule::Constants>)getConstants
|
|
66
71
|
{
|
|
67
72
|
return _constants;
|
|
68
73
|
}
|
|
69
74
|
|
|
70
|
-
|
|
71
|
-
- (NSDictionary *)constantsToExport
|
|
75
|
+
- (void)getImageUrl:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject
|
|
72
76
|
{
|
|
73
|
-
|
|
77
|
+
reject(@"Exception", @"Not implemented", nil);
|
|
74
78
|
}
|
|
75
79
|
|
|
76
80
|
#pragma mark - RCTTurboModuleWithJSIBindings
|
|
@@ -168,7 +172,7 @@ RCT_EXPORT_METHOD(
|
|
|
168
172
|
|
|
169
173
|
RCT_EXPORT_METHOD(voidFuncThrows)
|
|
170
174
|
{
|
|
171
|
-
NSException *myException = [NSException exceptionWithName:@"
|
|
175
|
+
NSException *myException = [NSException exceptionWithName:@"Exception"
|
|
172
176
|
reason:@"Intentional exception from ObjC voidFuncThrows"
|
|
173
177
|
userInfo:nil];
|
|
174
178
|
@throw myException;
|
|
@@ -176,7 +180,7 @@ RCT_EXPORT_METHOD(voidFuncThrows)
|
|
|
176
180
|
|
|
177
181
|
RCT_EXPORT_SYNCHRONOUS_TYPED_METHOD(NSDictionary *, getObjectThrows : (NSDictionary *)arg)
|
|
178
182
|
{
|
|
179
|
-
NSException *myException = [NSException exceptionWithName:@"
|
|
183
|
+
NSException *myException = [NSException exceptionWithName:@"Exception"
|
|
180
184
|
reason:@"Intentional exception from ObjC getObjectThrows"
|
|
181
185
|
userInfo:nil];
|
|
182
186
|
@throw myException;
|
|
@@ -184,7 +188,7 @@ RCT_EXPORT_SYNCHRONOUS_TYPED_METHOD(NSDictionary *, getObjectThrows : (NSDiction
|
|
|
184
188
|
|
|
185
189
|
RCT_EXPORT_METHOD(promiseThrows : (RCTPromiseResolveBlock)resolve reject : (RCTPromiseRejectBlock)reject)
|
|
186
190
|
{
|
|
187
|
-
NSException *myException = [NSException exceptionWithName:@"
|
|
191
|
+
NSException *myException = [NSException exceptionWithName:@"Exception"
|
|
188
192
|
reason:@"Intentional exception from ObjC promiseThrows"
|
|
189
193
|
userInfo:nil];
|
|
190
194
|
@throw myException;
|
|
@@ -168,9 +168,16 @@ void NetworkReporter::reportDataReceived(
|
|
|
168
168
|
int dataLength,
|
|
169
169
|
const std::optional<int>& encodedDataLength) {
|
|
170
170
|
#ifdef REACT_NATIVE_DEBUGGER_ENABLED
|
|
171
|
+
auto now = HighResTimeStamp::now();
|
|
172
|
+
|
|
171
173
|
// Debugger enabled: CDP event handling
|
|
172
174
|
jsinspector_modern::NetworkHandler::getInstance().onDataReceived(
|
|
173
175
|
requestId, dataLength, encodedDataLength.value_or(dataLength));
|
|
176
|
+
|
|
177
|
+
// Debugger enabled: Add trace event to Performance timeline
|
|
178
|
+
jsinspector_modern::tracing::PerformanceTracer::getInstance()
|
|
179
|
+
.reportResourceReceivedData(
|
|
180
|
+
requestId, now, encodedDataLength.value_or(dataLength));
|
|
174
181
|
#endif
|
|
175
182
|
}
|
|
176
183
|
|
|
@@ -110,6 +110,94 @@ void packShadowRadius(
|
|
|
110
110
|
dyn.insert("shadowRadius", get<Float>(animatedProp));
|
|
111
111
|
}
|
|
112
112
|
|
|
113
|
+
void packBorderColorEdge(
|
|
114
|
+
folly::dynamic& dyn,
|
|
115
|
+
const std::string& propName,
|
|
116
|
+
const std::optional<SharedColor>& colorValue) {
|
|
117
|
+
if (colorValue.has_value() && colorValue.value()) {
|
|
118
|
+
dyn.insert(propName, static_cast<int32_t>(*colorValue.value()));
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
void packBorderColor(
|
|
123
|
+
folly::dynamic& dyn,
|
|
124
|
+
const AnimatedPropBase& animatedProp) {
|
|
125
|
+
const auto& borderColors = get<CascadedBorderColors>(animatedProp);
|
|
126
|
+
|
|
127
|
+
packBorderColorEdge(dyn, "borderLeftColor", borderColors.left);
|
|
128
|
+
packBorderColorEdge(dyn, "borderTopColor", borderColors.top);
|
|
129
|
+
packBorderColorEdge(dyn, "borderRightColor", borderColors.right);
|
|
130
|
+
packBorderColorEdge(dyn, "borderBottomColor", borderColors.bottom);
|
|
131
|
+
packBorderColorEdge(dyn, "borderStartColor", borderColors.start);
|
|
132
|
+
packBorderColorEdge(dyn, "borderEndColor", borderColors.end);
|
|
133
|
+
|
|
134
|
+
if (borderColors.all.has_value() && borderColors.all.value()) {
|
|
135
|
+
dyn.insert("borderColor", static_cast<int32_t>(*borderColors.all.value()));
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
void packFilter(folly::dynamic& dyn, const AnimatedPropBase& animatedProp) {
|
|
140
|
+
const auto& filters = get<std::vector<FilterFunction>>(animatedProp);
|
|
141
|
+
auto filterArray = folly::dynamic::array();
|
|
142
|
+
for (const auto& f : filters) {
|
|
143
|
+
folly::dynamic filterObj = folly::dynamic::object();
|
|
144
|
+
std::string typeKey = toString(f.type);
|
|
145
|
+
if (std::holds_alternative<Float>(f.parameters)) {
|
|
146
|
+
filterObj[typeKey] = std::get<Float>(f.parameters);
|
|
147
|
+
} else if (std::holds_alternative<DropShadowParams>(f.parameters)) {
|
|
148
|
+
const auto& dropShadowParams = std::get<DropShadowParams>(f.parameters);
|
|
149
|
+
folly::dynamic shadowObj = folly::dynamic::object();
|
|
150
|
+
shadowObj["offsetX"] = dropShadowParams.offsetX;
|
|
151
|
+
shadowObj["offsetY"] = dropShadowParams.offsetY;
|
|
152
|
+
shadowObj["standardDeviation"] = dropShadowParams.standardDeviation;
|
|
153
|
+
shadowObj["color"] = static_cast<int32_t>(*dropShadowParams.color);
|
|
154
|
+
filterObj[typeKey] = shadowObj;
|
|
155
|
+
}
|
|
156
|
+
filterArray.push_back(filterObj);
|
|
157
|
+
}
|
|
158
|
+
dyn.insert("filter", filterArray);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
void packOutlineColor(
|
|
162
|
+
folly::dynamic& dyn,
|
|
163
|
+
const AnimatedPropBase& animatedProp) {
|
|
164
|
+
const auto& outlineColor = get<SharedColor>(animatedProp);
|
|
165
|
+
dyn.insert("outlineColor", static_cast<int32_t>(*outlineColor));
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
void packOutlineOffset(
|
|
169
|
+
folly::dynamic& dyn,
|
|
170
|
+
const AnimatedPropBase& animatedProp) {
|
|
171
|
+
dyn.insert("outlineOffset", get<Float>(animatedProp));
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
void packOutlineStyle(
|
|
175
|
+
folly::dynamic& dyn,
|
|
176
|
+
const AnimatedPropBase& animatedProp) {
|
|
177
|
+
const auto& outlineStyle = get<OutlineStyle>(animatedProp);
|
|
178
|
+
std::string styleStr;
|
|
179
|
+
switch (outlineStyle) {
|
|
180
|
+
case OutlineStyle::Solid:
|
|
181
|
+
styleStr = "solid";
|
|
182
|
+
break;
|
|
183
|
+
case OutlineStyle::Dotted:
|
|
184
|
+
styleStr = "dotted";
|
|
185
|
+
break;
|
|
186
|
+
case OutlineStyle::Dashed:
|
|
187
|
+
styleStr = "dashed";
|
|
188
|
+
break;
|
|
189
|
+
default:
|
|
190
|
+
throw std::runtime_error("Unknown outline style");
|
|
191
|
+
}
|
|
192
|
+
dyn.insert("outlineStyle", styleStr);
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
void packOutlineWidth(
|
|
196
|
+
folly::dynamic& dyn,
|
|
197
|
+
const AnimatedPropBase& animatedProp) {
|
|
198
|
+
dyn.insert("outlineWidth", get<Float>(animatedProp));
|
|
199
|
+
}
|
|
200
|
+
|
|
113
201
|
void packAnimatedProp(
|
|
114
202
|
folly::dynamic& dyn,
|
|
115
203
|
const std::unique_ptr<AnimatedPropBase>& animatedProp) {
|
|
@@ -146,12 +234,37 @@ void packAnimatedProp(
|
|
|
146
234
|
packShadowRadius(dyn, *animatedProp);
|
|
147
235
|
break;
|
|
148
236
|
|
|
237
|
+
case BORDER_COLOR:
|
|
238
|
+
packBorderColor(dyn, *animatedProp);
|
|
239
|
+
break;
|
|
240
|
+
|
|
241
|
+
case FILTER:
|
|
242
|
+
packFilter(dyn, *animatedProp);
|
|
243
|
+
break;
|
|
244
|
+
|
|
245
|
+
case OUTLINE_COLOR:
|
|
246
|
+
packOutlineColor(dyn, *animatedProp);
|
|
247
|
+
break;
|
|
248
|
+
|
|
249
|
+
case OUTLINE_OFFSET:
|
|
250
|
+
packOutlineOffset(dyn, *animatedProp);
|
|
251
|
+
break;
|
|
252
|
+
|
|
253
|
+
case OUTLINE_STYLE:
|
|
254
|
+
packOutlineStyle(dyn, *animatedProp);
|
|
255
|
+
break;
|
|
256
|
+
|
|
257
|
+
case OUTLINE_WIDTH:
|
|
258
|
+
packOutlineWidth(dyn, *animatedProp);
|
|
259
|
+
break;
|
|
260
|
+
|
|
149
261
|
case WIDTH:
|
|
150
262
|
case HEIGHT:
|
|
151
263
|
case FLEX:
|
|
152
264
|
case PADDING:
|
|
153
265
|
case MARGIN:
|
|
154
266
|
case POSITION:
|
|
267
|
+
case BORDER_WIDTH:
|
|
155
268
|
throw std::runtime_error("Tried to synchronously update layout props");
|
|
156
269
|
}
|
|
157
270
|
}
|