react-native 0.77.0-rc.1 → 0.77.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/Animated/animations/Animation.js +1 -1
- package/Libraries/Core/ReactNativeVersion.js +1 -1
- package/React/Base/RCTVersion.m +1 -1
- package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm +4 -9
- package/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm +4 -0
- package/ReactAndroid/api/ReactAndroid.api +2 -0
- package/ReactAndroid/cmake-utils/default-app-setup/OnLoad.cpp +0 -13
- package/ReactAndroid/gradle.properties +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/HeadlessJsTaskService.java +12 -13
- package/ReactAndroid/src/main/java/com/facebook/react/module/model/ReactModuleInfo.kt +18 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.java +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactClippingViewManager.kt +0 -3
- package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.java +31 -0
- package/ReactCommon/cxxreact/ReactNativeVersion.h +1 -1
- package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTAttributedTextUtils.mm +2 -0
- package/ReactCommon/react/runtime/ReactInstance.cpp +39 -35
- package/ReactCommon/react/runtime/ReactInstance.h +2 -1
- package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTInstance.mm +3 -2
- package/package.json +8 -8
- package/scripts/cocoapods/utils.rb +6 -6
- package/scripts/codegen/generate-artifacts-executor.js +10 -0
- 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/React/Base/RCTVersion.m
CHANGED
|
@@ -189,10 +189,11 @@ RCTSendScrollEventForNativeAnimations_DEPRECATED(UIScrollView *scrollView, NSInt
|
|
|
189
189
|
|
|
190
190
|
UIEdgeInsets newEdgeInsets = _scrollView.contentInset;
|
|
191
191
|
CGFloat inset = MAX(scrollViewLowerY - keyboardEndFrame.origin.y, 0);
|
|
192
|
+
const auto &props = static_cast<const ScrollViewProps &>(*_props);
|
|
192
193
|
if (isInverted) {
|
|
193
|
-
newEdgeInsets.top = MAX(inset,
|
|
194
|
+
newEdgeInsets.top = MAX(inset, props.contentInset.top);
|
|
194
195
|
} else {
|
|
195
|
-
newEdgeInsets.bottom = MAX(inset,
|
|
196
|
+
newEdgeInsets.bottom = MAX(inset, props.contentInset.bottom);
|
|
196
197
|
}
|
|
197
198
|
|
|
198
199
|
CGPoint newContentOffset = _scrollView.contentOffset;
|
|
@@ -210,12 +211,6 @@ RCTSendScrollEventForNativeAnimations_DEPRECATED(UIScrollView *scrollView, NSInt
|
|
|
210
211
|
contentDiff = keyboardEndFrame.origin.y - keyboardBeginFrame.origin.y;
|
|
211
212
|
}
|
|
212
213
|
} else {
|
|
213
|
-
CGRect viewIntersection = CGRectIntersection(self.firstResponderFocus, keyboardEndFrame);
|
|
214
|
-
|
|
215
|
-
if (CGRectIsNull(viewIntersection)) {
|
|
216
|
-
return;
|
|
217
|
-
}
|
|
218
|
-
|
|
219
214
|
// Inner text field focused
|
|
220
215
|
CGFloat focusEnd = CGRectGetMaxY(self.firstResponderFocus);
|
|
221
216
|
if (focusEnd > keyboardEndFrame.origin.y) {
|
|
@@ -247,7 +242,7 @@ RCTSendScrollEventForNativeAnimations_DEPRECATED(UIScrollView *scrollView, NSInt
|
|
|
247
242
|
animations:^{
|
|
248
243
|
self->_scrollView.contentInset = newEdgeInsets;
|
|
249
244
|
self->_scrollView.verticalScrollIndicatorInsets = newEdgeInsets;
|
|
250
|
-
[self
|
|
245
|
+
[self scrollTo:newContentOffset.x y:newContentOffset.y animated:NO];
|
|
251
246
|
}
|
|
252
247
|
completion:nil];
|
|
253
248
|
}
|
|
@@ -99,9 +99,11 @@ static NSSet<NSNumber *> *returnKeyTypesSet;
|
|
|
99
99
|
NSMutableDictionary<NSAttributedStringKey, id> *defaultAttributes =
|
|
100
100
|
[_backedTextInputView.defaultTextAttributes mutableCopy];
|
|
101
101
|
|
|
102
|
+
#if !TARGET_OS_MACCATALYST
|
|
102
103
|
RCTWeakEventEmitterWrapper *eventEmitterWrapper = [RCTWeakEventEmitterWrapper new];
|
|
103
104
|
eventEmitterWrapper.eventEmitter = _eventEmitter;
|
|
104
105
|
defaultAttributes[RCTAttributedStringEventEmitterKey] = eventEmitterWrapper;
|
|
106
|
+
#endif
|
|
105
107
|
|
|
106
108
|
_backedTextInputView.defaultTextAttributes = defaultAttributes;
|
|
107
109
|
}
|
|
@@ -262,8 +264,10 @@ static NSSet<NSNumber *> *returnKeyTypesSet;
|
|
|
262
264
|
if (newTextInputProps.textAttributes != oldTextInputProps.textAttributes) {
|
|
263
265
|
NSMutableDictionary<NSAttributedStringKey, id> *defaultAttributes =
|
|
264
266
|
RCTNSTextAttributesFromTextAttributes(newTextInputProps.getEffectiveTextAttributes(RCTFontSizeMultiplier()));
|
|
267
|
+
#if !TARGET_OS_MACCATALYST
|
|
265
268
|
defaultAttributes[RCTAttributedStringEventEmitterKey] =
|
|
266
269
|
_backedTextInputView.defaultTextAttributes[RCTAttributedStringEventEmitterKey];
|
|
270
|
+
#endif
|
|
267
271
|
_backedTextInputView.defaultTextAttributes = defaultAttributes;
|
|
268
272
|
}
|
|
269
273
|
|
|
@@ -2963,6 +2963,7 @@ public abstract interface annotation class com/facebook/react/module/annotations
|
|
|
2963
2963
|
public final class com/facebook/react/module/model/ReactModuleInfo {
|
|
2964
2964
|
public static final field Companion Lcom/facebook/react/module/model/ReactModuleInfo$Companion;
|
|
2965
2965
|
public fun <init> (Ljava/lang/String;Ljava/lang/String;ZZZZ)V
|
|
2966
|
+
public fun <init> (Ljava/lang/String;Ljava/lang/String;ZZZZZ)V
|
|
2966
2967
|
public final fun canOverrideExistingModule ()Z
|
|
2967
2968
|
public static final fun classIsTurboModule (Ljava/lang/Class;)Z
|
|
2968
2969
|
public final fun className ()Ljava/lang/String;
|
|
@@ -7835,6 +7836,7 @@ public class com/facebook/react/views/view/ReactViewGroup : android/view/ViewGro
|
|
|
7835
7836
|
protected fun dispatchSetPressed (Z)V
|
|
7836
7837
|
public fun draw (Landroid/graphics/Canvas;)V
|
|
7837
7838
|
protected fun drawChild (Landroid/graphics/Canvas;Landroid/view/View;J)Z
|
|
7839
|
+
public fun endViewTransition (Landroid/view/View;)V
|
|
7838
7840
|
protected fun getChildDrawingOrder (II)I
|
|
7839
7841
|
public fun getClippingRect (Landroid/graphics/Rect;)V
|
|
7840
7842
|
public fun getHitSlopRect ()Landroid/graphics/Rect;
|
|
@@ -29,12 +29,7 @@
|
|
|
29
29
|
|
|
30
30
|
#include <DefaultComponentsRegistry.h>
|
|
31
31
|
#include <DefaultTurboModuleManagerDelegate.h>
|
|
32
|
-
#if __has_include("<autolinking.h>")
|
|
33
|
-
#define AUTOLINKING_AVAILABLE 1
|
|
34
32
|
#include <autolinking.h>
|
|
35
|
-
#else
|
|
36
|
-
#define AUTOLINKING_AVAILABLE 0
|
|
37
|
-
#endif
|
|
38
33
|
#include <fbjni/fbjni.h>
|
|
39
34
|
#include <react/renderer/componentregistry/ComponentDescriptorProviderRegistry.h>
|
|
40
35
|
#include <rncore.h>
|
|
@@ -61,10 +56,8 @@ void registerComponents(
|
|
|
61
56
|
REACT_NATIVE_APP_COMPONENT_REGISTRATION(registry);
|
|
62
57
|
#endif
|
|
63
58
|
|
|
64
|
-
#if AUTOLINKING_AVAILABLE
|
|
65
59
|
// And we fallback to the components autolinked
|
|
66
60
|
autolinking_registerProviders(registry);
|
|
67
|
-
#endif
|
|
68
61
|
}
|
|
69
62
|
|
|
70
63
|
std::shared_ptr<TurboModule> cxxModuleProvider(
|
|
@@ -78,12 +71,8 @@ std::shared_ptr<TurboModule> cxxModuleProvider(
|
|
|
78
71
|
// return std::make_shared<NativeCxxModuleExample>(jsInvoker);
|
|
79
72
|
// }
|
|
80
73
|
|
|
81
|
-
#if AUTOLINKING_AVAILABLE
|
|
82
74
|
// And we fallback to the CXX module providers autolinked
|
|
83
75
|
return autolinking_cxxModuleProvider(name, jsInvoker);
|
|
84
|
-
#endif
|
|
85
|
-
|
|
86
|
-
return nullptr;
|
|
87
76
|
}
|
|
88
77
|
|
|
89
78
|
std::shared_ptr<TurboModule> javaModuleProvider(
|
|
@@ -112,12 +101,10 @@ std::shared_ptr<TurboModule> javaModuleProvider(
|
|
|
112
101
|
return module;
|
|
113
102
|
}
|
|
114
103
|
|
|
115
|
-
#if AUTOLINKING_AVAILABLE
|
|
116
104
|
// And we fallback to the module providers autolinked
|
|
117
105
|
if (auto module = autolinking_ModuleProvider(name, params)) {
|
|
118
106
|
return module;
|
|
119
107
|
}
|
|
120
|
-
#endif
|
|
121
108
|
|
|
122
109
|
return nullptr;
|
|
123
110
|
}
|
|
@@ -179,31 +179,30 @@ public abstract class HeadlessJsTaskService extends Service implements HeadlessJ
|
|
|
179
179
|
}
|
|
180
180
|
|
|
181
181
|
private void createReactContextAndScheduleTask(final HeadlessJsTaskConfig taskConfig) {
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
final ReactInstanceManager reactInstanceManager =
|
|
186
|
-
getReactNativeHost().getReactInstanceManager();
|
|
187
|
-
|
|
188
|
-
reactInstanceManager.addReactInstanceEventListener(
|
|
182
|
+
if (ReactNativeFeatureFlags.enableBridgelessArchitecture()) {
|
|
183
|
+
final ReactHost reactHost = getReactHost();
|
|
184
|
+
reactHost.addReactInstanceEventListener(
|
|
189
185
|
new ReactInstanceEventListener() {
|
|
190
186
|
@Override
|
|
191
187
|
public void onReactContextInitialized(@NonNull ReactContext reactContext) {
|
|
192
188
|
invokeStartTask(reactContext, taskConfig);
|
|
193
|
-
|
|
189
|
+
reactHost.removeReactInstanceEventListener(this);
|
|
194
190
|
}
|
|
195
191
|
});
|
|
196
|
-
|
|
197
|
-
} else {
|
|
198
|
-
|
|
192
|
+
reactHost.start();
|
|
193
|
+
} else {
|
|
194
|
+
final ReactInstanceManager reactInstanceManager =
|
|
195
|
+
getReactNativeHost().getReactInstanceManager();
|
|
196
|
+
|
|
197
|
+
reactInstanceManager.addReactInstanceEventListener(
|
|
199
198
|
new ReactInstanceEventListener() {
|
|
200
199
|
@Override
|
|
201
200
|
public void onReactContextInitialized(@NonNull ReactContext reactContext) {
|
|
202
201
|
invokeStartTask(reactContext, taskConfig);
|
|
203
|
-
|
|
202
|
+
reactInstanceManager.removeReactInstanceEventListener(this);
|
|
204
203
|
}
|
|
205
204
|
});
|
|
206
|
-
|
|
205
|
+
reactInstanceManager.createReactContextInBackground();
|
|
207
206
|
}
|
|
208
207
|
}
|
|
209
208
|
}
|
|
@@ -21,6 +21,24 @@ public class ReactModuleInfo(
|
|
|
21
21
|
public val isCxxModule: Boolean,
|
|
22
22
|
public val isTurboModule: Boolean
|
|
23
23
|
) {
|
|
24
|
+
|
|
25
|
+
@Deprecated(
|
|
26
|
+
"This constructor is deprecated and will be removed in the future. Use ReactModuleInfo(String, String, boolean, boolean, boolean, boolean)]",
|
|
27
|
+
replaceWith =
|
|
28
|
+
ReplaceWith(
|
|
29
|
+
expression =
|
|
30
|
+
"ReactModuleInfo(name, className, canOverrideExistingModule, needsEagerInit, isCxxModule, isTurboModule)"),
|
|
31
|
+
level = DeprecationLevel.WARNING)
|
|
32
|
+
public constructor(
|
|
33
|
+
name: String,
|
|
34
|
+
className: String,
|
|
35
|
+
canOverrideExistingModule: Boolean,
|
|
36
|
+
needsEagerInit: Boolean,
|
|
37
|
+
@Suppress("UNUSED_PARAMETER") hasConstants: Boolean,
|
|
38
|
+
isCxxModule: Boolean,
|
|
39
|
+
isTurboModule: Boolean
|
|
40
|
+
) : this(name, className, canOverrideExistingModule, needsEagerInit, isCxxModule, isTurboModule)
|
|
41
|
+
|
|
24
42
|
public companion object {
|
|
25
43
|
/**
|
|
26
44
|
* Checks if the passed class is a TurboModule. Useful to populate the parameter [isTurboModule]
|
package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactClippingViewManager.kt
CHANGED
|
@@ -62,9 +62,6 @@ public abstract class ReactClippingViewManager<T : ReactViewGroup> : ViewGroupMa
|
|
|
62
62
|
if (removeClippedSubviews) {
|
|
63
63
|
val child = getChildAt(parent, index)
|
|
64
64
|
if (child != null) {
|
|
65
|
-
if (child.parent != null) {
|
|
66
|
-
parent.removeView(child)
|
|
67
|
-
}
|
|
68
65
|
parent.removeViewWithSubviewClippingEnabled(child)
|
|
69
66
|
}
|
|
70
67
|
} else {
|
|
@@ -56,6 +56,8 @@ import com.facebook.react.uimanager.style.BorderRadiusProp;
|
|
|
56
56
|
import com.facebook.react.uimanager.style.BorderStyle;
|
|
57
57
|
import com.facebook.react.uimanager.style.LogicalEdge;
|
|
58
58
|
import com.facebook.react.uimanager.style.Overflow;
|
|
59
|
+
import java.util.HashSet;
|
|
60
|
+
import java.util.Set;
|
|
59
61
|
|
|
60
62
|
/**
|
|
61
63
|
* Backing for a React View. Has support for borders, but since borders aren't common, lazy
|
|
@@ -134,6 +136,7 @@ public class ReactViewGroup extends ViewGroup
|
|
|
134
136
|
private @Nullable ViewGroupDrawingOrderHelper mDrawingOrderHelper;
|
|
135
137
|
private float mBackfaceOpacity;
|
|
136
138
|
private String mBackfaceVisibility;
|
|
139
|
+
private @Nullable Set<Integer> mChildrenRemovedWhileTransitioning;
|
|
137
140
|
|
|
138
141
|
/**
|
|
139
142
|
* Creates a new `ReactViewGroup` instance.
|
|
@@ -167,6 +170,7 @@ public class ReactViewGroup extends ViewGroup
|
|
|
167
170
|
mDrawingOrderHelper = null;
|
|
168
171
|
mBackfaceOpacity = 1.f;
|
|
169
172
|
mBackfaceVisibility = "visible";
|
|
173
|
+
mChildrenRemovedWhileTransitioning = null;
|
|
170
174
|
}
|
|
171
175
|
|
|
172
176
|
/* package */ void recycleView() {
|
|
@@ -349,6 +353,7 @@ public class ReactViewGroup extends ViewGroup
|
|
|
349
353
|
return;
|
|
350
354
|
}
|
|
351
355
|
mRemoveClippedSubviews = removeClippedSubviews;
|
|
356
|
+
mChildrenRemovedWhileTransitioning = null;
|
|
352
357
|
if (removeClippedSubviews) {
|
|
353
358
|
mClippingRect = new Rect();
|
|
354
359
|
ReactClippingViewGroupHelper.calculateClippingRect(this, mClippingRect);
|
|
@@ -402,6 +407,26 @@ public class ReactViewGroup extends ViewGroup
|
|
|
402
407
|
updateClippingToRect(mClippingRect);
|
|
403
408
|
}
|
|
404
409
|
|
|
410
|
+
@Override
|
|
411
|
+
public void endViewTransition(View view) {
|
|
412
|
+
super.endViewTransition(view);
|
|
413
|
+
if (mChildrenRemovedWhileTransitioning != null) {
|
|
414
|
+
mChildrenRemovedWhileTransitioning.remove(view.getId());
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
private void trackChildViewTransition(int childId) {
|
|
419
|
+
if (mChildrenRemovedWhileTransitioning == null) {
|
|
420
|
+
mChildrenRemovedWhileTransitioning = new HashSet<>();
|
|
421
|
+
}
|
|
422
|
+
mChildrenRemovedWhileTransitioning.add(childId);
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
private boolean isChildRemovedWhileTransitioning(View child) {
|
|
426
|
+
return mChildrenRemovedWhileTransitioning != null
|
|
427
|
+
&& mChildrenRemovedWhileTransitioning.contains(child.getId());
|
|
428
|
+
}
|
|
429
|
+
|
|
405
430
|
private void updateClippingToRect(Rect clippingRect) {
|
|
406
431
|
Assertions.assertNotNull(mAllChildren);
|
|
407
432
|
int clippedSoFar = 0;
|
|
@@ -548,6 +573,12 @@ public class ReactViewGroup extends ViewGroup
|
|
|
548
573
|
} else {
|
|
549
574
|
setChildrenDrawingOrderEnabled(false);
|
|
550
575
|
}
|
|
576
|
+
|
|
577
|
+
// The parent might not be null in case the child is transitioning.
|
|
578
|
+
if (child.getParent() != null) {
|
|
579
|
+
trackChildViewTransition(child.getId());
|
|
580
|
+
}
|
|
581
|
+
|
|
551
582
|
super.onViewRemoved(child);
|
|
552
583
|
}
|
|
553
584
|
|
|
@@ -403,6 +403,7 @@ static NSMutableAttributedString *RCTNSAttributedStringFragmentWithAttributesFro
|
|
|
403
403
|
{
|
|
404
404
|
auto nsAttributedStringFragment = RCTNSAttributedStringFragmentFromFragment(fragment, placeholderImage);
|
|
405
405
|
|
|
406
|
+
#if !TARGET_OS_MACCATALYST
|
|
406
407
|
if (fragment.parentShadowView.componentHandle) {
|
|
407
408
|
RCTWeakEventEmitterWrapper *eventEmitterWrapper = [RCTWeakEventEmitterWrapper new];
|
|
408
409
|
eventEmitterWrapper.eventEmitter = fragment.parentShadowView.eventEmitter;
|
|
@@ -413,6 +414,7 @@ static NSMutableAttributedString *RCTNSAttributedStringFragmentWithAttributesFro
|
|
|
413
414
|
[nsAttributedStringFragment addAttributes:additionalTextAttributes
|
|
414
415
|
range:NSMakeRange(0, nsAttributedStringFragment.length)];
|
|
415
416
|
}
|
|
417
|
+
#endif
|
|
416
418
|
|
|
417
419
|
return nsAttributedStringFragment;
|
|
418
420
|
}
|
|
@@ -236,47 +236,51 @@ std::string simpleBasename(const std::string& path) {
|
|
|
236
236
|
*/
|
|
237
237
|
void ReactInstance::loadScript(
|
|
238
238
|
std::unique_ptr<const JSBigString> script,
|
|
239
|
-
const std::string& sourceURL
|
|
239
|
+
const std::string& sourceURL,
|
|
240
|
+
std::function<void(jsi::Runtime& runtime)>&& completion) {
|
|
240
241
|
auto buffer = std::make_shared<BigStringBuffer>(std::move(script));
|
|
241
242
|
std::string scriptName = simpleBasename(sourceURL);
|
|
242
243
|
|
|
243
|
-
runtimeScheduler_->scheduleWork(
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
244
|
+
runtimeScheduler_->scheduleWork([this,
|
|
245
|
+
scriptName,
|
|
246
|
+
sourceURL,
|
|
247
|
+
buffer = std::move(buffer),
|
|
248
|
+
weakBufferedRuntimeExecuter =
|
|
249
|
+
std::weak_ptr<BufferedRuntimeExecutor>(
|
|
250
|
+
bufferedRuntimeExecutor_),
|
|
251
|
+
completion](jsi::Runtime& runtime) {
|
|
252
|
+
SystraceSection s("ReactInstance::loadScript");
|
|
253
|
+
bool hasLogger(ReactMarker::logTaggedMarkerBridgelessImpl);
|
|
254
|
+
if (hasLogger) {
|
|
255
|
+
ReactMarker::logTaggedMarkerBridgeless(
|
|
256
|
+
ReactMarker::RUN_JS_BUNDLE_START, scriptName.c_str());
|
|
257
|
+
}
|
|
256
258
|
|
|
257
|
-
|
|
259
|
+
runtime.evaluateJavaScript(buffer, sourceURL);
|
|
258
260
|
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
261
|
+
/**
|
|
262
|
+
* TODO(T183610671): We need a safe/reliable way to enable the js
|
|
263
|
+
* pipeline from javascript. Remove this after we figure that out, or
|
|
264
|
+
* after we just remove the js pipeline.
|
|
265
|
+
*/
|
|
266
|
+
if (!jsErrorHandler_->hasHandledFatalError()) {
|
|
267
|
+
jsErrorHandler_->setRuntimeReady();
|
|
268
|
+
}
|
|
267
269
|
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
270
|
+
if (hasLogger) {
|
|
271
|
+
ReactMarker::logTaggedMarkerBridgeless(
|
|
272
|
+
ReactMarker::RUN_JS_BUNDLE_STOP, scriptName.c_str());
|
|
273
|
+
ReactMarker::logMarkerBridgeless(ReactMarker::INIT_REACT_RUNTIME_STOP);
|
|
274
|
+
ReactMarker::logMarkerBridgeless(ReactMarker::APP_STARTUP_STOP);
|
|
275
|
+
}
|
|
276
|
+
if (auto strongBufferedRuntimeExecuter =
|
|
277
|
+
weakBufferedRuntimeExecuter.lock()) {
|
|
278
|
+
strongBufferedRuntimeExecuter->flush();
|
|
279
|
+
}
|
|
280
|
+
if (completion) {
|
|
281
|
+
completion(runtime);
|
|
282
|
+
}
|
|
283
|
+
});
|
|
280
284
|
}
|
|
281
285
|
|
|
282
286
|
/*
|
|
@@ -49,7 +49,8 @@ class ReactInstance final : private jsinspector_modern::InstanceTargetDelegate {
|
|
|
49
49
|
|
|
50
50
|
void loadScript(
|
|
51
51
|
std::unique_ptr<const JSBigString> script,
|
|
52
|
-
const std::string& sourceURL
|
|
52
|
+
const std::string& sourceURL,
|
|
53
|
+
std::function<void(jsi::Runtime& runtime)>&& completion = nullptr);
|
|
53
54
|
|
|
54
55
|
void registerSegment(uint32_t segmentId, const std::string& segmentPath);
|
|
55
56
|
|
|
@@ -472,8 +472,9 @@ void RCTInstanceSetRuntimeDiagnosticFlags(NSString *flags)
|
|
|
472
472
|
|
|
473
473
|
auto script = std::make_unique<NSDataBigString>(source.data);
|
|
474
474
|
const auto *url = deriveSourceURL(source.url).UTF8String;
|
|
475
|
-
_reactInstance->loadScript(std::move(script), url)
|
|
476
|
-
|
|
475
|
+
_reactInstance->loadScript(std::move(script), url, [](jsi::Runtime &_) {
|
|
476
|
+
[[NSNotificationCenter defaultCenter] postNotificationName:@"RCTInstanceDidLoadBundle" object:nil];
|
|
477
|
+
});
|
|
477
478
|
}
|
|
478
479
|
|
|
479
480
|
- (void)_handleJSError:(const JsErrorHandler::ParsedError &)error withRuntime:(jsi::Runtime &)runtime
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native",
|
|
3
|
-
"version": "0.77.0-rc.
|
|
3
|
+
"version": "0.77.0-rc.3",
|
|
4
4
|
"description": "A framework for building native apps using React",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -108,13 +108,13 @@
|
|
|
108
108
|
},
|
|
109
109
|
"dependencies": {
|
|
110
110
|
"@jest/create-cache-key-function": "^29.6.3",
|
|
111
|
-
"@react-native/assets-registry": "0.77.0-rc.
|
|
112
|
-
"@react-native/codegen": "0.77.0-rc.
|
|
113
|
-
"@react-native/community-cli-plugin": "0.77.0-rc.
|
|
114
|
-
"@react-native/gradle-plugin": "0.77.0-rc.
|
|
115
|
-
"@react-native/js-polyfills": "0.77.0-rc.
|
|
116
|
-
"@react-native/normalize-colors": "0.77.0-rc.
|
|
117
|
-
"@react-native/virtualized-lists": "0.77.0-rc.
|
|
111
|
+
"@react-native/assets-registry": "0.77.0-rc.3",
|
|
112
|
+
"@react-native/codegen": "0.77.0-rc.3",
|
|
113
|
+
"@react-native/community-cli-plugin": "0.77.0-rc.3",
|
|
114
|
+
"@react-native/gradle-plugin": "0.77.0-rc.3",
|
|
115
|
+
"@react-native/js-polyfills": "0.77.0-rc.3",
|
|
116
|
+
"@react-native/normalize-colors": "0.77.0-rc.3",
|
|
117
|
+
"@react-native/virtualized-lists": "0.77.0-rc.3",
|
|
118
118
|
"abort-controller": "^3.0.0",
|
|
119
119
|
"anser": "^1.4.9",
|
|
120
120
|
"ansi-regex": "^5.0.0",
|
|
@@ -44,10 +44,10 @@ class ReactNativePodsUtils
|
|
|
44
44
|
end
|
|
45
45
|
|
|
46
46
|
def self.set_gcc_preprocessor_definition_for_React_hermes(installer)
|
|
47
|
-
self.add_build_settings_to_pod(installer, "GCC_PREPROCESSOR_DEFINITIONS", "HERMES_ENABLE_DEBUGGER=1", "React-hermes",
|
|
48
|
-
self.add_build_settings_to_pod(installer, "GCC_PREPROCESSOR_DEFINITIONS", "HERMES_ENABLE_DEBUGGER=1", "React-jsinspector",
|
|
49
|
-
self.add_build_settings_to_pod(installer, "GCC_PREPROCESSOR_DEFINITIONS", "HERMES_ENABLE_DEBUGGER=1", "hermes-engine",
|
|
50
|
-
self.add_build_settings_to_pod(installer, "GCC_PREPROCESSOR_DEFINITIONS", "HERMES_ENABLE_DEBUGGER=1", "React-RuntimeHermes",
|
|
47
|
+
self.add_build_settings_to_pod(installer, "GCC_PREPROCESSOR_DEFINITIONS", "HERMES_ENABLE_DEBUGGER=1", "React-hermes", :debug)
|
|
48
|
+
self.add_build_settings_to_pod(installer, "GCC_PREPROCESSOR_DEFINITIONS", "HERMES_ENABLE_DEBUGGER=1", "React-jsinspector", :debug)
|
|
49
|
+
self.add_build_settings_to_pod(installer, "GCC_PREPROCESSOR_DEFINITIONS", "HERMES_ENABLE_DEBUGGER=1", "hermes-engine", :debug)
|
|
50
|
+
self.add_build_settings_to_pod(installer, "GCC_PREPROCESSOR_DEFINITIONS", "HERMES_ENABLE_DEBUGGER=1", "React-RuntimeHermes", :debug)
|
|
51
51
|
end
|
|
52
52
|
|
|
53
53
|
def self.turn_off_resource_bundle_react_core(installer)
|
|
@@ -193,11 +193,11 @@ class ReactNativePodsUtils
|
|
|
193
193
|
|
|
194
194
|
private
|
|
195
195
|
|
|
196
|
-
def self.add_build_settings_to_pod(installer, settings_name, settings_value, target_pod_name,
|
|
196
|
+
def self.add_build_settings_to_pod(installer, settings_name, settings_value, target_pod_name, configuration_type)
|
|
197
197
|
installer.target_installation_results.pod_target_installation_results.each do |pod_name, target_installation_result|
|
|
198
198
|
if pod_name.to_s == target_pod_name
|
|
199
199
|
target_installation_result.native_target.build_configurations.each do |config|
|
|
200
|
-
if
|
|
200
|
+
if configuration_type == nil || (configuration_type != nil && config.type == configuration_type)
|
|
201
201
|
config.build_settings[settings_name] ||= '$(inherited) '
|
|
202
202
|
config.build_settings[settings_name] << settings_value
|
|
203
203
|
end
|
|
@@ -763,6 +763,16 @@ function findFilesWithExtension(filePath, extension) {
|
|
|
763
763
|
const dir = fs.readdirSync(filePath);
|
|
764
764
|
dir.forEach(file => {
|
|
765
765
|
const absolutePath = path.join(filePath, file);
|
|
766
|
+
// Exclude files provided by react-native
|
|
767
|
+
if (absolutePath.includes(`${path.sep}react-native${path.sep}`)) {
|
|
768
|
+
return null;
|
|
769
|
+
}
|
|
770
|
+
|
|
771
|
+
// Skip hidden folders, that starts with `.`
|
|
772
|
+
if (absolutePath.includes(`${path.sep}.`)) {
|
|
773
|
+
return null;
|
|
774
|
+
}
|
|
775
|
+
|
|
766
776
|
if (
|
|
767
777
|
fs.existsSync(absolutePath) &&
|
|
768
778
|
fs.statSync(absolutePath).isDirectory()
|
|
Binary file
|
|
Binary file
|
|
Binary file
|