react-native 0.83.0-nightly-20250926-2b5938c90 → 0.83.0-nightly-20250928-fb09b3764
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/Core/ReactNativeVersion.js +1 -1
- package/Libraries/StyleSheet/StyleSheetTypes.d.ts +1 -1
- package/React/Base/RCTVersion.m +1 -1
- package/ReactAndroid/gradle.properties +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReadableNativeArray.kt +37 -9
- package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReadableNativeMap.kt +87 -50
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerBase.kt +18 -0
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/perfmonitor/PerfMonitorOverlayManager.kt +15 -3
- package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/shell/MainReactPackage.kt +0 -8
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeViewHierarchyManager.java +3 -3
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactShadowNodeImpl.java +1 -3
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java +1 -6
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIViewOperationQueue.java +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactBaseTextShadowNode.kt +1 -3
- package/ReactAndroid/src/main/jni/react/fabric/CoreComponentsRegistry.cpp +45 -47
- package/ReactAndroid/src/main/jni/react/fabric/CoreComponentsRegistry.h +3 -0
- package/ReactAndroid/src/main/jni/react/newarchdefaults/DefaultComponentsRegistry.cpp +7 -6
- package/ReactAndroid/src/main/res/devsupport/values/strings.xml +2 -0
- package/ReactCommon/cxxreact/ReactNativeVersion.h +1 -1
- package/ReactCommon/react/renderer/components/scrollview/platform/android/react/renderer/components/scrollview/HostPlatformScrollViewProps.h +1 -1
- package/ReactCommon/react/renderer/components/view/FilterPropsConversions.h +7 -4
- package/ReactCommon/react/renderer/components/view/PointerEvent.cpp +40 -21
- package/ReactCommon/react/renderer/components/view/TouchEvent.cpp +6 -4
- package/ReactCommon/react/renderer/components/view/YogaLayoutableShadowNode.cpp +8 -7
- package/ReactCommon/react/renderer/components/view/conversions.h +64 -48
- package/ReactCommon/react/renderer/components/view/tests/LayoutTest.cpp +1 -1
- package/ReactCommon/react/renderer/components/view/tests/ViewTest.cpp +13 -13
- package/ReactCommon/react/renderer/core/LayoutConstraints.cpp +4 -2
- package/ReactCommon/react/renderer/core/LayoutConstraints.h +3 -3
- package/ReactCommon/react/renderer/core/LayoutMetrics.cpp +14 -14
- package/ReactCommon/react/renderer/core/LayoutMetrics.h +22 -15
- package/ReactCommon/react/renderer/core/LayoutableShadowNode.cpp +4 -4
- package/ReactCommon/react/renderer/core/RawProps.cpp +2 -1
- package/ReactCommon/react/renderer/core/graphicsConversions.h +22 -10
- package/ReactCommon/react/renderer/core/propsConversions.h +1 -1
- package/ReactCommon/react/renderer/core/tests/ComponentDescriptorTest.cpp +32 -26
- package/ReactCommon/react/renderer/core/tests/ConcreteShadowNodeTest.cpp +4 -1
- package/ReactCommon/react/renderer/core/tests/FindNodeAtPointTest.cpp +53 -50
- package/ReactCommon/react/renderer/core/tests/LayoutableShadowNodeTest.cpp +95 -95
- package/ReactCommon/react/renderer/core/tests/ShadowNodeFamilyTest.cpp +4 -1
- package/ReactCommon/react/renderer/core/tests/ShadowNodeTest.cpp +57 -48
- package/ReactCommon/react/renderer/core/tests/benchmarks/RawPropsBenchmark.cpp +4 -2
- package/ReactCommon/react/renderer/css/CSSColor.h +1 -1
- package/ReactCommon/react/renderer/css/CSSLength.h +3 -2
- package/package.json +8 -8
- package/sdks/hermes-engine/version.properties +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/ReactAndroid/src/main/java/com/facebook/react/uimanager/NoSuchNativeViewException.kt +0 -34
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/YogaNodePool.kt +0 -34
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactRawTextManager.kt +0 -54
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactRawTextShadowNode.kt +0 -38
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactVirtualTextShadowNode.kt +0 -34
- package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactVirtualTextViewManager.kt +0 -54
|
@@ -29,7 +29,7 @@ export default class ReactNativeVersion {
|
|
|
29
29
|
static major: number = 0;
|
|
30
30
|
static minor: number = 83;
|
|
31
31
|
static patch: number = 0;
|
|
32
|
-
static prerelease: string | null = 'nightly-
|
|
32
|
+
static prerelease: string | null = 'nightly-20250928-fb09b3764';
|
|
33
33
|
|
|
34
34
|
static getVersionString(): string {
|
|
35
35
|
return `${this.major}.${this.minor}.${this.patch}${this.prerelease != null ? `-${this.prerelease}` : ''}`;
|
package/React/Base/RCTVersion.m
CHANGED
|
@@ -24,7 +24,7 @@ NSDictionary* RCTGetReactNativeVersion(void)
|
|
|
24
24
|
RCTVersionMajor: @(0),
|
|
25
25
|
RCTVersionMinor: @(83),
|
|
26
26
|
RCTVersionPatch: @(0),
|
|
27
|
-
RCTVersionPrerelease: @"nightly-
|
|
27
|
+
RCTVersionPrerelease: @"nightly-20250928-fb09b3764",
|
|
28
28
|
};
|
|
29
29
|
});
|
|
30
30
|
return __rnVersion;
|
|
@@ -20,21 +20,49 @@ import kotlin.jvm.JvmStatic
|
|
|
20
20
|
@DoNotStrip
|
|
21
21
|
public open class ReadableNativeArray protected constructor() : NativeArray(), ReadableArray {
|
|
22
22
|
|
|
23
|
-
private
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
23
|
+
private var localArrayStorage: Array<Any?>? = null
|
|
24
|
+
private val localArray: Array<Any?>
|
|
25
|
+
get() {
|
|
26
|
+
var localArray = localArrayStorage
|
|
27
|
+
if (localArray != null) {
|
|
28
|
+
return localArray
|
|
27
29
|
}
|
|
28
30
|
|
|
31
|
+
synchronized(this) {
|
|
32
|
+
// Check again with the lock held to prevent duplicate construction
|
|
33
|
+
localArray = localArrayStorage
|
|
34
|
+
if (localArray == null) {
|
|
35
|
+
localArray = importArray()
|
|
36
|
+
localArrayStorage = localArray
|
|
37
|
+
jniPassCounter++
|
|
38
|
+
}
|
|
39
|
+
return localArray
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
29
43
|
private external fun importArray(): Array<Any?>
|
|
30
44
|
|
|
31
|
-
private
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
45
|
+
private var localTypeArrayStorage: Array<ReadableType>? = null
|
|
46
|
+
private val localTypeArray: Array<ReadableType>
|
|
47
|
+
get() {
|
|
48
|
+
var localTypeArray = localTypeArrayStorage
|
|
49
|
+
if (localTypeArray != null) {
|
|
50
|
+
return localTypeArray
|
|
36
51
|
}
|
|
37
52
|
|
|
53
|
+
synchronized(this) {
|
|
54
|
+
// Check again with the lock held to prevent duplicate construction
|
|
55
|
+
localTypeArray = localTypeArrayStorage
|
|
56
|
+
if (localTypeArray == null) {
|
|
57
|
+
val tempArray = importTypeArray()
|
|
58
|
+
localTypeArray = Arrays.copyOf(tempArray, tempArray.size, Array<ReadableType>::class.java)
|
|
59
|
+
localTypeArrayStorage = localTypeArray
|
|
60
|
+
jniPassCounter++
|
|
61
|
+
}
|
|
62
|
+
return localTypeArray
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
38
66
|
private external fun importTypeArray(): Array<Any>
|
|
39
67
|
|
|
40
68
|
override fun size(): Int = localArray.size
|
|
@@ -17,33 +17,77 @@ import com.facebook.proguard.annotations.DoNotStripAny
|
|
|
17
17
|
*/
|
|
18
18
|
@DoNotStripAny
|
|
19
19
|
public open class ReadableNativeMap protected constructor() : NativeMap(), ReadableMap {
|
|
20
|
-
private
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
20
|
+
private var keysStorage: Array<String>? = null
|
|
21
|
+
private val keys: Array<String>
|
|
22
|
+
get() {
|
|
23
|
+
var keys = keysStorage
|
|
24
|
+
if (keys != null) {
|
|
25
|
+
return keys
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
synchronized(this) {
|
|
29
|
+
// Check again with the lock held to prevent duplicate construction
|
|
30
|
+
keys = keysStorage
|
|
31
|
+
if (keys == null) {
|
|
32
|
+
keys = importKeys()
|
|
33
|
+
keysStorage = keys
|
|
34
|
+
jniPassCounter++
|
|
31
35
|
}
|
|
32
|
-
|
|
36
|
+
return keys
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
private var localMapStorage: Map<String, Any?>? = null
|
|
41
|
+
private val localMap: Map<String, Any?>
|
|
42
|
+
get() {
|
|
43
|
+
var localMap = localMapStorage
|
|
44
|
+
if (localMap != null) {
|
|
45
|
+
return localMap
|
|
33
46
|
}
|
|
34
47
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
48
|
+
synchronized(this) {
|
|
49
|
+
// Check again with the lock held to prevent duplicate construction
|
|
50
|
+
localMap = localMapStorage
|
|
51
|
+
if (localMap == null) {
|
|
52
|
+
val keys = keys
|
|
53
|
+
val length = keys.size
|
|
54
|
+
localMap = HashMap<String, Any?>()
|
|
55
|
+
val values = importValues()
|
|
56
|
+
for (i in 0 until length) {
|
|
57
|
+
localMap[keys[i]] = values[i]
|
|
58
|
+
}
|
|
59
|
+
localMapStorage = localMap
|
|
60
|
+
jniPassCounter++
|
|
43
61
|
}
|
|
44
|
-
|
|
62
|
+
return localMap
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
private var localTypeMapStorage: Map<String, ReadableType>? = null
|
|
67
|
+
private val localTypeMap: Map<String, ReadableType>
|
|
68
|
+
get() {
|
|
69
|
+
var localTypeMap = localTypeMapStorage
|
|
70
|
+
if (localTypeMap != null) {
|
|
71
|
+
return localTypeMap
|
|
45
72
|
}
|
|
46
73
|
|
|
74
|
+
synchronized(this) {
|
|
75
|
+
// Check again with the lock held to prevent duplicate construction
|
|
76
|
+
localTypeMap = localTypeMapStorage
|
|
77
|
+
if (localTypeMap == null) {
|
|
78
|
+
val keys = keys
|
|
79
|
+
localTypeMap = HashMap<String, ReadableType>()
|
|
80
|
+
val types = importTypes()
|
|
81
|
+
for (i in 0 until keys.size) {
|
|
82
|
+
localTypeMap[keys[i]] = types[i] as ReadableType
|
|
83
|
+
}
|
|
84
|
+
localTypeMapStorage = localTypeMap
|
|
85
|
+
jniPassCounter++
|
|
86
|
+
}
|
|
87
|
+
return localTypeMap
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
47
91
|
private external fun importKeys(): Array<String>
|
|
48
92
|
|
|
49
93
|
private external fun importValues(): Array<Any>
|
|
@@ -76,7 +120,7 @@ public open class ReadableNativeMap protected constructor() : NativeMap(), Reada
|
|
|
76
120
|
private inline fun <reified T> getValue(name: String, type: Class<T>): T =
|
|
77
121
|
checkInstance(name, getValue(name), type)
|
|
78
122
|
|
|
79
|
-
private fun getNullableValue(name: String): Any? = localMap
|
|
123
|
+
private fun getNullableValue(name: String): Any? = localMap[name]
|
|
80
124
|
|
|
81
125
|
private inline fun <reified T> getNullableValue(name: String, type: Class<T>): T? {
|
|
82
126
|
val res = getNullableValue(name)
|
|
@@ -110,36 +154,29 @@ public open class ReadableNativeMap protected constructor() : NativeMap(), Reada
|
|
|
110
154
|
override fun getDynamic(name: String): Dynamic = DynamicFromMap.create(this, name)
|
|
111
155
|
|
|
112
156
|
override val entryIterator: Iterator<Map.Entry<String, Any>>
|
|
113
|
-
get()
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
get() = iteratorValues[index]
|
|
133
|
-
|
|
134
|
-
override fun setValue(newValue: Any): Any {
|
|
135
|
-
throw UnsupportedOperationException(
|
|
136
|
-
"Can't set a value while iterating over a ReadableNativeMap"
|
|
137
|
-
)
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
}
|
|
157
|
+
get() {
|
|
158
|
+
val iteratorKeys = keys
|
|
159
|
+
val iteratorValues = importValues()
|
|
160
|
+
jniPassCounter++
|
|
161
|
+
return object : Iterator<Map.Entry<String, Any>> {
|
|
162
|
+
var currentIndex = 0
|
|
163
|
+
|
|
164
|
+
override fun hasNext(): Boolean {
|
|
165
|
+
return currentIndex < iteratorKeys.size
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
override fun next(): Map.Entry<String, Any> {
|
|
169
|
+
val index = currentIndex++
|
|
170
|
+
return object : Map.Entry<String, Any> {
|
|
171
|
+
override val key: String
|
|
172
|
+
get() = iteratorKeys[index]
|
|
173
|
+
|
|
174
|
+
override val value: Any
|
|
175
|
+
get() = iteratorValues[index]
|
|
141
176
|
}
|
|
142
177
|
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
143
180
|
|
|
144
181
|
override fun keySetIterator(): ReadableMapKeySetIterator {
|
|
145
182
|
val iteratorKeys = keys
|
|
@@ -398,6 +398,24 @@ public abstract class DevSupportManagerBase(
|
|
|
398
398
|
}
|
|
399
399
|
}
|
|
400
400
|
|
|
401
|
+
if (ReactNativeFeatureFlags.perfMonitorV2Enabled()) {
|
|
402
|
+
val isConnected = isPackagerConnected
|
|
403
|
+
|
|
404
|
+
val togglePerfMonitorItemString =
|
|
405
|
+
if (perfMonitorOverlayManager?.isEnabled == true)
|
|
406
|
+
applicationContext.getString(R.string.catalyst_performance_disable)
|
|
407
|
+
else applicationContext.getString(R.string.catalyst_performance_enable)
|
|
408
|
+
|
|
409
|
+
if (!isConnected) {
|
|
410
|
+
disabledItemKeys.add(togglePerfMonitorItemString)
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
options[togglePerfMonitorItemString] =
|
|
414
|
+
if (perfMonitorOverlayManager?.isEnabled == true)
|
|
415
|
+
DevOptionHandler { perfMonitorOverlayManager?.disable() }
|
|
416
|
+
else DevOptionHandler { perfMonitorOverlayManager?.enable() }
|
|
417
|
+
}
|
|
418
|
+
|
|
401
419
|
options[applicationContext.getString(R.string.catalyst_change_bundle_location)] =
|
|
402
420
|
DevOptionHandler {
|
|
403
421
|
val context = reactInstanceDevHelper.currentActivity
|
|
@@ -15,23 +15,35 @@ internal class PerfMonitorOverlayManager(
|
|
|
15
15
|
private val onRequestOpenDevTools: () -> Unit,
|
|
16
16
|
) : PerfMonitorUpdateListener {
|
|
17
17
|
private var enabled: Boolean = false
|
|
18
|
+
|
|
19
|
+
/** Whether the Perf Monitor overlay is currently enabled. */
|
|
20
|
+
val isEnabled: Boolean
|
|
21
|
+
get() = enabled
|
|
22
|
+
|
|
18
23
|
private var view: PerfMonitorOverlayView? = null
|
|
19
24
|
private var tracingState: TracingState = TracingState.ENABLEDINCDPMODE
|
|
20
25
|
|
|
21
26
|
/** Enable the Perf Monitor overlay. */
|
|
22
27
|
fun enable() {
|
|
28
|
+
if (enabled) {
|
|
29
|
+
return
|
|
30
|
+
}
|
|
31
|
+
|
|
23
32
|
enabled = true
|
|
24
33
|
UiThreadUtil.runOnUiThread {
|
|
25
34
|
val context = devHelper.currentActivity ?: return@runOnUiThread
|
|
26
|
-
view
|
|
35
|
+
if (view == null) {
|
|
36
|
+
view = PerfMonitorOverlayView(context, ::handleRecordingButtonPress)
|
|
37
|
+
}
|
|
38
|
+
view?.show()
|
|
27
39
|
}
|
|
28
40
|
}
|
|
29
41
|
|
|
30
42
|
/** Disable the Perf Monitor overlay. Will remain hidden when updates are received. */
|
|
31
43
|
fun disable() {
|
|
32
|
-
UiThreadUtil.runOnUiThread { view?.hide() }
|
|
33
|
-
view = null
|
|
34
44
|
enabled = false
|
|
45
|
+
|
|
46
|
+
UiThreadUtil.runOnUiThread { view?.hide() }
|
|
35
47
|
}
|
|
36
48
|
|
|
37
49
|
/** Start background trace recording. */
|
|
@@ -147,12 +147,10 @@ constructor(private val config: MainPackageConfig? = null) :
|
|
|
147
147
|
FrescoBasedReactTextInlineImageViewManager(),
|
|
148
148
|
ReactImageManager(),
|
|
149
149
|
ReactModalHostManager(),
|
|
150
|
-
com.facebook.react.views.text.ReactRawTextManager(),
|
|
151
150
|
ReactTextInputManager(),
|
|
152
151
|
if (ReactNativeFeatureFlags.enablePreparedTextLayout()) PreparedLayoutTextViewManager()
|
|
153
152
|
else ReactTextViewManager(),
|
|
154
153
|
ReactViewManager(),
|
|
155
|
-
com.facebook.react.views.text.ReactVirtualTextViewManager(),
|
|
156
154
|
ReactUnimplementedViewManager(),
|
|
157
155
|
)
|
|
158
156
|
|
|
@@ -184,8 +182,6 @@ constructor(private val config: MainPackageConfig? = null) :
|
|
|
184
182
|
ReactImageManager.REACT_CLASS to ModuleSpec.viewManagerSpec { ReactImageManager() },
|
|
185
183
|
ReactModalHostManager.REACT_CLASS to
|
|
186
184
|
ModuleSpec.viewManagerSpec { ReactModalHostManager() },
|
|
187
|
-
com.facebook.react.views.text.ReactRawTextManager.REACT_CLASS to
|
|
188
|
-
ModuleSpec.viewManagerSpec { com.facebook.react.views.text.ReactRawTextManager() },
|
|
189
185
|
ReactTextInputManager.REACT_CLASS to
|
|
190
186
|
ModuleSpec.viewManagerSpec { ReactTextInputManager() },
|
|
191
187
|
ReactTextViewManager.REACT_CLASS to
|
|
@@ -195,10 +191,6 @@ constructor(private val config: MainPackageConfig? = null) :
|
|
|
195
191
|
else ReactTextViewManager()
|
|
196
192
|
},
|
|
197
193
|
ReactViewManager.REACT_CLASS to ModuleSpec.viewManagerSpec { ReactViewManager() },
|
|
198
|
-
com.facebook.react.views.text.ReactVirtualTextViewManager.REACT_CLASS to
|
|
199
|
-
ModuleSpec.viewManagerSpec {
|
|
200
|
-
com.facebook.react.views.text.ReactVirtualTextViewManager()
|
|
201
|
-
},
|
|
202
194
|
ReactUnimplementedViewManager.REACT_CLASS to
|
|
203
195
|
ModuleSpec.viewManagerSpec { ReactUnimplementedViewManager() },
|
|
204
196
|
)
|
package/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeViewHierarchyManager.java
CHANGED
|
@@ -706,14 +706,14 @@ public class NativeViewHierarchyManager {
|
|
|
706
706
|
UiThreadUtil.assertOnUiThread();
|
|
707
707
|
View v = mTagsToViews.get(tag);
|
|
708
708
|
if (v == null) {
|
|
709
|
-
throw new
|
|
709
|
+
throw new IllegalViewOperationException("No native view for " + tag + " currently exists");
|
|
710
710
|
}
|
|
711
711
|
|
|
712
712
|
View rootView = (View) RootViewUtil.getRootView(v);
|
|
713
713
|
// It is possible that the RootView can't be found because this view is no longer on the screen
|
|
714
714
|
// and has been removed by clipping
|
|
715
715
|
if (rootView == null) {
|
|
716
|
-
throw new
|
|
716
|
+
throw new IllegalViewOperationException("Native view " + tag + " is no longer on screen");
|
|
717
717
|
}
|
|
718
718
|
computeBoundingBox(rootView, outputBuffer);
|
|
719
719
|
int rootX = outputBuffer[0];
|
|
@@ -773,7 +773,7 @@ public class NativeViewHierarchyManager {
|
|
|
773
773
|
UiThreadUtil.assertOnUiThread();
|
|
774
774
|
View v = mTagsToViews.get(tag);
|
|
775
775
|
if (v == null) {
|
|
776
|
-
throw new
|
|
776
|
+
throw new IllegalViewOperationException("No native view for " + tag + " currently exists");
|
|
777
777
|
}
|
|
778
778
|
|
|
779
779
|
v.getLocationOnScreen(outputBuffer);
|
|
@@ -106,8 +106,7 @@ public class ReactShadowNodeImpl implements ReactShadowNode<ReactShadowNodeImpl>
|
|
|
106
106
|
public ReactShadowNodeImpl() {
|
|
107
107
|
mDefaultPadding = new Spacing(0f);
|
|
108
108
|
if (!isVirtual()) {
|
|
109
|
-
|
|
110
|
-
mYogaNode = node == null ? YogaNodeFactory.create(sYogaConfig) : node;
|
|
109
|
+
mYogaNode = YogaNodeFactory.create(sYogaConfig);
|
|
111
110
|
mYogaNode.setData(this);
|
|
112
111
|
Arrays.fill(mPadding, YogaConstants.UNDEFINED);
|
|
113
112
|
} else {
|
|
@@ -1101,7 +1100,6 @@ public class ReactShadowNodeImpl implements ReactShadowNode<ReactShadowNodeImpl>
|
|
|
1101
1100
|
public void dispose() {
|
|
1102
1101
|
if (mYogaNode != null) {
|
|
1103
1102
|
mYogaNode.reset();
|
|
1104
|
-
YogaNodePool.get().release(mYogaNode);
|
|
1105
1103
|
}
|
|
1106
1104
|
}
|
|
1107
1105
|
|
|
@@ -219,7 +219,6 @@ public class UIManagerModule extends ReactContextBaseJavaModule
|
|
|
219
219
|
ReactApplicationContext reactApplicationContext = getReactApplicationContext();
|
|
220
220
|
reactApplicationContext.unregisterComponentCallbacks(mMemoryTrimCallback);
|
|
221
221
|
reactApplicationContext.unregisterComponentCallbacks(mViewManagerRegistry);
|
|
222
|
-
YogaNodePool.get().clear();
|
|
223
222
|
ViewManagerPropertyUpdater.clear();
|
|
224
223
|
}
|
|
225
224
|
|
|
@@ -815,11 +814,7 @@ public class UIManagerModule extends ReactContextBaseJavaModule
|
|
|
815
814
|
private static class MemoryTrimCallback implements ComponentCallbacks2 {
|
|
816
815
|
|
|
817
816
|
@Override
|
|
818
|
-
public void onTrimMemory(int level) {
|
|
819
|
-
if (level >= TRIM_MEMORY_MODERATE) {
|
|
820
|
-
YogaNodePool.get().clear();
|
|
821
|
-
}
|
|
822
|
-
}
|
|
817
|
+
public void onTrimMemory(int level) {}
|
|
823
818
|
|
|
824
819
|
@Override
|
|
825
820
|
public void onConfigurationChanged(Configuration newConfig) {}
|
|
@@ -418,7 +418,7 @@ public class UIViewOperationQueue {
|
|
|
418
418
|
public void execute() {
|
|
419
419
|
try {
|
|
420
420
|
mNativeViewHierarchyManager.measure(mReactTag, mMeasureBuffer);
|
|
421
|
-
} catch (
|
|
421
|
+
} catch (IllegalViewOperationException e) {
|
|
422
422
|
// Invoke with no args to signal failure and to allow JS to clean up the callback
|
|
423
423
|
// handle.
|
|
424
424
|
mCallback.invoke();
|
|
@@ -448,7 +448,7 @@ public class UIViewOperationQueue {
|
|
|
448
448
|
public void execute() {
|
|
449
449
|
try {
|
|
450
450
|
mNativeViewHierarchyManager.measureInWindow(mReactTag, mMeasureBuffer);
|
|
451
|
-
} catch (
|
|
451
|
+
} catch (IllegalViewOperationException e) {
|
|
452
452
|
// Invoke with no args to signal failure and to allow JS to clean up the callback
|
|
453
453
|
// handle.
|
|
454
454
|
mCallback.invoke();
|
|
@@ -523,9 +523,7 @@ public constructor(
|
|
|
523
523
|
val child: ReactShadowNode<*> = textShadowNode.getChildAt(i)
|
|
524
524
|
|
|
525
525
|
@Suppress("DEPRECATION")
|
|
526
|
-
if (child is
|
|
527
|
-
child.text?.let { sb.append(apply(it, textAttributes.textTransform)) }
|
|
528
|
-
} else if (child is ReactBaseTextShadowNode) {
|
|
526
|
+
if (child is ReactBaseTextShadowNode) {
|
|
529
527
|
buildSpannedFromShadowNode(
|
|
530
528
|
child,
|
|
531
529
|
sb,
|
|
@@ -32,54 +32,52 @@ namespace facebook::react::CoreComponentsRegistry {
|
|
|
32
32
|
std::shared_ptr<const ComponentDescriptorProviderRegistry>
|
|
33
33
|
sharedProviderRegistry() {
|
|
34
34
|
static auto providerRegistry =
|
|
35
|
-
|
|
36
|
-
auto providerRegistry =
|
|
37
|
-
std::make_shared<ComponentDescriptorProviderRegistry>();
|
|
38
|
-
|
|
39
|
-
providerRegistry->add(concreteComponentDescriptorProvider<
|
|
40
|
-
AndroidProgressBarComponentDescriptor>());
|
|
41
|
-
providerRegistry->add(concreteComponentDescriptorProvider<
|
|
42
|
-
AndroidSwipeRefreshLayoutComponentDescriptor>());
|
|
43
|
-
providerRegistry->add(concreteComponentDescriptorProvider<
|
|
44
|
-
ActivityIndicatorViewComponentDescriptor>());
|
|
45
|
-
providerRegistry->add(concreteComponentDescriptorProvider<
|
|
46
|
-
AndroidTextInputComponentDescriptor>());
|
|
47
|
-
providerRegistry->add(
|
|
48
|
-
concreteComponentDescriptorProvider<ViewComponentDescriptor>());
|
|
49
|
-
providerRegistry->add(
|
|
50
|
-
concreteComponentDescriptorProvider<ImageComponentDescriptor>());
|
|
51
|
-
providerRegistry->add(concreteComponentDescriptorProvider<
|
|
52
|
-
ModalHostViewComponentDescriptor>());
|
|
53
|
-
providerRegistry->add(concreteComponentDescriptorProvider<
|
|
54
|
-
AndroidSwitchComponentDescriptor>());
|
|
55
|
-
providerRegistry->add(
|
|
56
|
-
concreteComponentDescriptorProvider<SafeAreaViewComponentDescriptor>());
|
|
57
|
-
providerRegistry->add(
|
|
58
|
-
concreteComponentDescriptorProvider<TextComponentDescriptor>());
|
|
59
|
-
providerRegistry->add(
|
|
60
|
-
concreteComponentDescriptorProvider<RawTextComponentDescriptor>());
|
|
61
|
-
providerRegistry->add(
|
|
62
|
-
concreteComponentDescriptorProvider<ScrollViewComponentDescriptor>());
|
|
63
|
-
providerRegistry->add(
|
|
64
|
-
concreteComponentDescriptorProvider<
|
|
65
|
-
AndroidHorizontalScrollContentViewComponentDescriptor>());
|
|
66
|
-
providerRegistry->add(
|
|
67
|
-
concreteComponentDescriptorProvider<ParagraphComponentDescriptor>());
|
|
68
|
-
providerRegistry->add(concreteComponentDescriptorProvider<
|
|
69
|
-
AndroidDrawerLayoutComponentDescriptor>());
|
|
70
|
-
providerRegistry->add(concreteComponentDescriptorProvider<
|
|
71
|
-
DebuggingOverlayComponentDescriptor>());
|
|
72
|
-
providerRegistry->add(concreteComponentDescriptorProvider<
|
|
73
|
-
LayoutConformanceComponentDescriptor>());
|
|
74
|
-
providerRegistry->add(
|
|
75
|
-
concreteComponentDescriptorProvider<VirtualViewComponentDescriptor>());
|
|
76
|
-
providerRegistry->add(concreteComponentDescriptorProvider<
|
|
77
|
-
VirtualViewExperimentalComponentDescriptor>());
|
|
78
|
-
|
|
79
|
-
return providerRegistry;
|
|
80
|
-
}();
|
|
81
|
-
|
|
35
|
+
std::make_shared<ComponentDescriptorProviderRegistry>();
|
|
82
36
|
return providerRegistry;
|
|
83
37
|
}
|
|
84
38
|
|
|
39
|
+
void addCoreComponents(
|
|
40
|
+
std::shared_ptr<const ComponentDescriptorProviderRegistry>
|
|
41
|
+
providerRegistry) {
|
|
42
|
+
providerRegistry->add(concreteComponentDescriptorProvider<
|
|
43
|
+
AndroidProgressBarComponentDescriptor>());
|
|
44
|
+
providerRegistry->add(concreteComponentDescriptorProvider<
|
|
45
|
+
AndroidSwipeRefreshLayoutComponentDescriptor>());
|
|
46
|
+
providerRegistry->add(concreteComponentDescriptorProvider<
|
|
47
|
+
ActivityIndicatorViewComponentDescriptor>());
|
|
48
|
+
providerRegistry->add(concreteComponentDescriptorProvider<
|
|
49
|
+
AndroidTextInputComponentDescriptor>());
|
|
50
|
+
providerRegistry->add(
|
|
51
|
+
concreteComponentDescriptorProvider<ViewComponentDescriptor>());
|
|
52
|
+
providerRegistry->add(
|
|
53
|
+
concreteComponentDescriptorProvider<ImageComponentDescriptor>());
|
|
54
|
+
providerRegistry->add(
|
|
55
|
+
concreteComponentDescriptorProvider<ModalHostViewComponentDescriptor>());
|
|
56
|
+
providerRegistry->add(
|
|
57
|
+
concreteComponentDescriptorProvider<AndroidSwitchComponentDescriptor>());
|
|
58
|
+
providerRegistry->add(
|
|
59
|
+
concreteComponentDescriptorProvider<SafeAreaViewComponentDescriptor>());
|
|
60
|
+
providerRegistry->add(
|
|
61
|
+
concreteComponentDescriptorProvider<TextComponentDescriptor>());
|
|
62
|
+
providerRegistry->add(
|
|
63
|
+
concreteComponentDescriptorProvider<RawTextComponentDescriptor>());
|
|
64
|
+
providerRegistry->add(
|
|
65
|
+
concreteComponentDescriptorProvider<ScrollViewComponentDescriptor>());
|
|
66
|
+
providerRegistry->add(
|
|
67
|
+
concreteComponentDescriptorProvider<
|
|
68
|
+
AndroidHorizontalScrollContentViewComponentDescriptor>());
|
|
69
|
+
providerRegistry->add(
|
|
70
|
+
concreteComponentDescriptorProvider<ParagraphComponentDescriptor>());
|
|
71
|
+
providerRegistry->add(concreteComponentDescriptorProvider<
|
|
72
|
+
AndroidDrawerLayoutComponentDescriptor>());
|
|
73
|
+
providerRegistry->add(concreteComponentDescriptorProvider<
|
|
74
|
+
DebuggingOverlayComponentDescriptor>());
|
|
75
|
+
providerRegistry->add(concreteComponentDescriptorProvider<
|
|
76
|
+
LayoutConformanceComponentDescriptor>());
|
|
77
|
+
providerRegistry->add(
|
|
78
|
+
concreteComponentDescriptorProvider<VirtualViewComponentDescriptor>());
|
|
79
|
+
providerRegistry->add(concreteComponentDescriptorProvider<
|
|
80
|
+
VirtualViewExperimentalComponentDescriptor>());
|
|
81
|
+
}
|
|
82
|
+
|
|
85
83
|
} // namespace facebook::react::CoreComponentsRegistry
|
|
@@ -14,4 +14,7 @@ namespace facebook::react::CoreComponentsRegistry {
|
|
|
14
14
|
std::shared_ptr<const ComponentDescriptorProviderRegistry>
|
|
15
15
|
sharedProviderRegistry();
|
|
16
16
|
|
|
17
|
+
void addCoreComponents(
|
|
18
|
+
std::shared_ptr<const ComponentDescriptorProviderRegistry> registry);
|
|
19
|
+
|
|
17
20
|
} // namespace facebook::react::CoreComponentsRegistry
|
|
@@ -36,18 +36,19 @@ void DefaultComponentsRegistry::setRegistryRunction(
|
|
|
36
36
|
.flavor = nullptr};
|
|
37
37
|
|
|
38
38
|
auto providerRegistry = CoreComponentsRegistry::sharedProviderRegistry();
|
|
39
|
-
if (registerCodegenComponentDescriptorsFromEntryPoint) {
|
|
40
|
-
registerCodegenComponentDescriptorsFromEntryPoint(providerRegistry);
|
|
41
|
-
} else {
|
|
42
|
-
LOG(WARNING)
|
|
43
|
-
<< "Codegen component descriptors were not configured from JNI_OnLoad";
|
|
44
|
-
}
|
|
45
39
|
if (registerComponentDescriptorsFromEntryPoint) {
|
|
46
40
|
registerComponentDescriptorsFromEntryPoint(providerRegistry);
|
|
47
41
|
} else {
|
|
48
42
|
LOG(WARNING)
|
|
49
43
|
<< "Custom component descriptors were not configured from JNI_OnLoad";
|
|
50
44
|
}
|
|
45
|
+
if (registerCodegenComponentDescriptorsFromEntryPoint) {
|
|
46
|
+
registerCodegenComponentDescriptorsFromEntryPoint(providerRegistry);
|
|
47
|
+
} else {
|
|
48
|
+
LOG(WARNING)
|
|
49
|
+
<< "Codegen component descriptors were not configured from JNI_OnLoad";
|
|
50
|
+
}
|
|
51
|
+
CoreComponentsRegistry::addCoreComponents(providerRegistry);
|
|
51
52
|
|
|
52
53
|
auto registry = providerRegistry->createComponentDescriptorRegistry(params);
|
|
53
54
|
auto& mutableRegistry = const_cast<ComponentDescriptorRegistry&>(*registry);
|
|
@@ -13,6 +13,8 @@
|
|
|
13
13
|
<string name="catalyst_performance_background" project="catalyst" translatable="false">Finish performance trace</string>
|
|
14
14
|
<string name="catalyst_performance_disabled" project="catalyst" translatable="false">Start performance trace</string>
|
|
15
15
|
<string name="catalyst_performance_cdp" project="catalyst" translatable="false">Performance tracing disabled</string>
|
|
16
|
+
<string name="catalyst_performance_enable" project="catalyst" translatable="false">Show performance overlay</string>
|
|
17
|
+
<string name="catalyst_performance_disable" project="catalyst" translatable="false">Hide performance overlay</string>
|
|
16
18
|
<string name="catalyst_debug_open_disabled" project="catalyst" translatable="false">Connect to the bundler to debug JavaScript</string>
|
|
17
19
|
<string name="catalyst_debug_connecting" project="catalyst" translatable="false">Connecting to debugger...</string>
|
|
18
20
|
<string name="catalyst_debug_error" project="catalyst" translatable="false">Failed to connect to debugger!</string>
|
|
@@ -22,7 +22,7 @@ constexpr struct {
|
|
|
22
22
|
int32_t Major = 0;
|
|
23
23
|
int32_t Minor = 83;
|
|
24
24
|
int32_t Patch = 0;
|
|
25
|
-
std::string_view Prerelease = "nightly-
|
|
25
|
+
std::string_view Prerelease = "nightly-20250928-fb09b3764";
|
|
26
26
|
} ReactNativeVersion;
|
|
27
27
|
|
|
28
28
|
} // namespace facebook::react
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
|
|
15
15
|
namespace facebook::react {
|
|
16
16
|
|
|
17
|
-
class HostPlatformScrollViewProps
|
|
17
|
+
class HostPlatformScrollViewProps : public BaseScrollViewProps {
|
|
18
18
|
public:
|
|
19
19
|
HostPlatformScrollViewProps() = default;
|
|
20
20
|
HostPlatformScrollViewProps(
|