@office-iss/react-native-win32 0.0.0-canary.298 → 0.0.0-canary.299
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/.flowconfig +5 -3
- package/CHANGELOG.json +28 -1
- package/CHANGELOG.md +16 -6
- package/IntegrationTests/IntegrationTestsApp.js +1 -0
- package/IntegrationTests/LoggingTestModule.js +16 -20
- package/IntegrationTests/TimersTest.js +1 -0
- package/IntegrationTests/WebSocketTest.js +1 -0
- package/Libraries/ActionSheetIOS/NativeActionSheetManager.js +1 -0
- package/Libraries/Alert/Alert.js +2 -2
- package/Libraries/Alert/NativeAlertManager.js +1 -0
- package/Libraries/Alert/RCTAlertManager.android.js +19 -13
- package/Libraries/Alert/RCTAlertManager.ios.js +9 -11
- package/Libraries/Alert/RCTAlertManager.js +1 -3
- package/Libraries/Alert/RCTAlertManager.js.flow +4 -6
- package/Libraries/Animated/AnimatedEvent.js +4 -3
- package/Libraries/Animated/AnimatedExports.js.flow +5 -0
- package/Libraries/Animated/AnimatedImplementation.js +44 -44
- package/Libraries/Animated/AnimatedMock.js +2 -2
- package/Libraries/Animated/NativeAnimatedModule.js +1 -0
- package/Libraries/Animated/NativeAnimatedTurboModule.js +1 -0
- package/Libraries/Animated/animations/Animation.js +6 -1
- package/Libraries/Animated/components/AnimatedScrollView.js +6 -5
- package/Libraries/Animated/components/AnimatedText.js +2 -5
- package/Libraries/Animated/components/AnimatedView.js +2 -1
- package/Libraries/Animated/createAnimatedComponent.js +2 -4
- package/Libraries/Animated/nodes/AnimatedProps.js +2 -7
- package/Libraries/AppState/NativeAppState.js +1 -0
- package/Libraries/Blob/NativeBlobModule.js +1 -0
- package/Libraries/Blob/NativeFileReaderModule.js +1 -0
- package/Libraries/Components/AccessibilityInfo/NativeAccessibilityInfo.js +1 -2
- package/Libraries/Components/AccessibilityInfo/NativeAccessibilityInfoWin32.js +1 -2
- package/Libraries/Components/AccessibilityInfo/NativeAccessibilityManager.js +1 -2
- package/Libraries/Components/ActivityIndicator/ActivityIndicatorViewNativeComponent.js +1 -2
- package/Libraries/Components/Button.js +7 -4
- package/Libraries/Components/Button.win32.js +7 -4
- package/Libraries/Components/Clipboard/NativeClipboard.js +1 -2
- package/Libraries/Components/DrawerAndroid/AndroidDrawerLayoutNativeComponent.js +1 -2
- package/Libraries/Components/Keyboard/NativeKeyboardObserver.js +1 -2
- package/Libraries/Components/Pressable/Pressable.js +8 -2
- package/Libraries/Components/Pressable/Pressable.win32.js +8 -8
- package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidNativeComponent.js +1 -2
- package/Libraries/Components/RefreshControl/AndroidSwipeRefreshLayoutNativeComponent.js +1 -2
- package/Libraries/Components/RefreshControl/PullToRefreshViewNativeComponent.js +1 -0
- package/Libraries/Components/SafeAreaView/RCTSafeAreaViewNativeComponent.js +1 -2
- package/Libraries/Components/SafeAreaView/SafeAreaView.d.ts +9 -0
- package/Libraries/Components/SafeAreaView/SafeAreaView.js +3 -2
- package/Libraries/Components/SafeAreaView/SafeAreaView.win32.js +3 -2
- package/Libraries/Components/ScrollView/AndroidHorizontalScrollContentViewNativeComponent.js +1 -2
- package/Libraries/Components/ScrollView/ScrollView.d.ts +10 -1
- package/Libraries/Components/ScrollView/ScrollView.js +3 -1
- package/Libraries/Components/Sound/NativeSoundManager.js +1 -2
- package/Libraries/Components/StatusBar/NativeStatusBarManagerAndroid.js +1 -2
- package/Libraries/Components/StatusBar/NativeStatusBarManagerIOS.js +1 -2
- package/Libraries/Components/StatusBar/StatusBar.d.ts +4 -0
- package/Libraries/Components/StatusBar/StatusBar.js +5 -0
- package/Libraries/Components/Switch/AndroidSwitchNativeComponent.js +1 -2
- package/Libraries/Components/Switch/Switch.js +2 -1
- package/Libraries/Components/Switch/SwitchNativeComponent.js +1 -2
- package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +8 -7
- package/Libraries/Components/TextInput/RCTInputAccessoryViewNativeComponent.js +1 -2
- package/Libraries/Components/TextInput/TextInput.flow.js +1 -1
- package/Libraries/Components/TextInput/TextInput.js +2 -4
- package/Libraries/Components/TextInput/TextInput.win32.js +28 -3
- package/Libraries/Components/ToastAndroid/NativeToastAndroid.js +1 -2
- package/Libraries/Components/Touchable/Touchable.js +7 -3
- package/Libraries/Components/Touchable/Touchable.win32.js +7 -3
- package/Libraries/Components/Touchable/TouchableHighlight.js +5 -1
- package/Libraries/Components/Touchable/TouchableNativeFeedback.js +3 -2
- package/Libraries/Components/Touchable/TouchableNativeFeedback.win32.js +3 -2
- package/Libraries/Components/Touchable/TouchableOpacity.d.ts +1 -0
- package/Libraries/Components/Touchable/TouchableOpacity.js +3 -2
- package/Libraries/Components/UnimplementedViews/UnimplementedNativeViewNativeComponent.js +1 -2
- package/Libraries/Components/View/ReactNativeStyleAttributes.js +6 -15
- package/Libraries/Components/View/View.js +17 -18
- package/Libraries/Components/View/View.win32.js +16 -2
- package/Libraries/Components/View/ViewAccessibility.js +0 -7
- package/Libraries/Components/View/ViewAccessibility.win32.js +0 -7
- package/Libraries/Components/View/ViewPropTypes.d.ts +4 -0
- package/Libraries/Components/View/ViewPropTypes.js +8 -0
- package/Libraries/Components/View/ViewPropTypes.win32.js +8 -0
- package/Libraries/Core/ExceptionsManager.js +28 -15
- package/Libraries/Core/NativeExceptionsManager.js +1 -0
- package/Libraries/Core/ReactNativeVersion.js +1 -1
- package/Libraries/Core/SegmentFetcher/NativeSegmentFetcher.js +1 -0
- package/Libraries/Core/Timers/NativeTiming.js +1 -0
- package/Libraries/Core/checkNativeVersion.js +1 -0
- package/Libraries/Core/setUpReactDevTools.js +21 -4
- package/Libraries/Debugging/DebuggingOverlayNativeComponent.js +1 -0
- package/Libraries/EventEmitter/NativeEventEmitter.js +3 -3
- package/Libraries/Image/Image.android.js +3 -3
- package/Libraries/Image/ImageSource.d.ts +5 -0
- package/Libraries/Image/ImageViewNativeComponent.js +3 -3
- package/Libraries/Image/NativeImageEditor.js +1 -0
- package/Libraries/Image/NativeImageLoaderAndroid.js +1 -0
- package/Libraries/Image/NativeImageLoaderIOS.js +1 -0
- package/Libraries/Image/NativeImageLoaderWin32.js +1 -0
- package/Libraries/Image/NativeImageStoreAndroid.js +1 -0
- package/Libraries/Image/NativeImageStoreIOS.js +1 -0
- package/Libraries/Image/RelativeImageStub.js +1 -1
- package/Libraries/Image/TextInlineImageNativeComponent.js +3 -3
- package/Libraries/Interaction/InteractionManager.js +6 -1
- package/Libraries/Interaction/NativeFrameRateLogger.js +1 -0
- package/Libraries/Interaction/TaskQueue.js +14 -0
- package/Libraries/LayoutAnimation/LayoutAnimation.js +12 -8
- package/Libraries/Linking/NativeIntentAndroid.js +1 -0
- package/Libraries/Linking/NativeLinkingManager.js +1 -0
- package/Libraries/Lists/FlatList.js +5 -6
- package/Libraries/Lists/SectionList.js +4 -4
- package/Libraries/Lists/VirtualizedList.js +3 -2
- package/Libraries/LogBox/Data/LogBoxData.js +7 -4
- package/Libraries/LogBox/LogBox.js +72 -101
- package/Libraries/Modal/Modal.d.ts +8 -2
- package/Libraries/Modal/Modal.js +19 -2
- package/Libraries/Modal/NativeModalManager.js +1 -0
- package/Libraries/Modal/RCTModalHostViewNativeComponent.js +1 -0
- package/Libraries/NativeComponent/BaseViewConfig.android.js +6 -15
- package/Libraries/NativeComponent/BaseViewConfig.ios.js +6 -15
- package/Libraries/NativeComponent/BaseViewConfig.win32.js +6 -15
- package/Libraries/NativeModules/specs/NativeDevMenu.js +1 -0
- package/Libraries/NativeModules/specs/NativeDevSettings.js +1 -0
- package/Libraries/NativeModules/specs/NativeDeviceEventManager.js +1 -0
- package/Libraries/NativeModules/specs/NativeDialogManagerAndroid.js +1 -0
- package/Libraries/NativeModules/specs/NativeLogBox.js +1 -0
- package/Libraries/NativeModules/specs/NativeRedBox.js +1 -0
- package/Libraries/NativeModules/specs/NativeSourceCode.js +1 -0
- package/Libraries/Network/NativeNetworkingAndroid.js +1 -0
- package/Libraries/Network/NativeNetworkingIOS.js +1 -0
- package/Libraries/Network/XMLHttpRequest.js +2 -0
- package/Libraries/PermissionsAndroid/NativePermissionsAndroid.js +1 -0
- package/Libraries/PermissionsAndroid/PermissionsAndroid.js +3 -2
- package/Libraries/PushNotificationIOS/NativePushNotificationManagerIOS.js +1 -0
- package/Libraries/ReactNative/AppRegistry.flow.js +2 -2
- package/Libraries/ReactNative/AppRegistryImpl.js +0 -10
- package/Libraries/ReactNative/BridgelessUIManager.js +1 -1
- package/Libraries/ReactNative/NativeHeadlessJsTaskSupport.js +1 -0
- package/Libraries/ReactNative/NativeI18nManager.js +1 -0
- package/Libraries/ReactNative/NativeUIManager.js +1 -0
- package/Libraries/ReactNative/ReactFabricPublicInstance/ReactNativeAttributePayload.js +80 -61
- package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +1 -1
- package/Libraries/ReactPrivate/ReactNativePrivateInterface.js.flow +2 -2
- package/Libraries/Renderer/implementations/ReactFabric-dev.js +3 -1
- package/Libraries/Renderer/implementations/ReactFabric-prod.js +3 -1
- package/Libraries/Renderer/implementations/ReactFabric-profiling.js +3 -1
- package/Libraries/Renderer/shims/ReactNativeTypes.js +3 -12
- package/Libraries/Renderer/shims/ReactNativeTypes.win32.js +3 -12
- package/Libraries/Settings/NativeSettingsManager.js +1 -0
- package/Libraries/Share/NativeShareModule.js +1 -0
- package/Libraries/StyleSheet/StyleSheet.js +1 -0
- package/Libraries/StyleSheet/processAspectRatio.js +2 -0
- package/Libraries/Text/Text.js +4 -6
- package/Libraries/Text/TextAncestor.js +3 -10
- package/Libraries/Text/TextAncestorContext.js +23 -0
- package/Libraries/Text/TextProps.js +2 -2
- package/Libraries/Text/TextProps.win32.js +2 -2
- package/Libraries/TurboModule/samples/NativeSampleTurboModule.js +1 -0
- package/Libraries/Types/CodegenTypesNamespace.js +1 -0
- package/Libraries/Utilities/HMRClient.js +12 -2
- package/Libraries/Utilities/NativeAppearance.js +1 -0
- package/Libraries/Utilities/NativeDevLoadingView.js +1 -0
- package/Libraries/Utilities/NativeDeviceInfo.js +1 -2
- package/Libraries/Utilities/NativePlatformConstantsAndroid.js +1 -0
- package/Libraries/Utilities/NativePlatformConstantsIOS.js +1 -0
- package/Libraries/Utilities/NativePlatformConstantsWin.js +1 -0
- package/Libraries/Utilities/Platform.android.js +1 -4
- package/Libraries/Utilities/Platform.ios.js +1 -4
- package/Libraries/Utilities/Platform.js.flow +2 -2
- package/Libraries/Utilities/Platform.win32.js +1 -4
- package/Libraries/Utilities/PlatformTypes.js +1 -1
- package/Libraries/Utilities/codegenNativeCommands.js +4 -2
- package/Libraries/Utilities/codegenNativeComponent.js +3 -3
- package/Libraries/Utilities/createPerformanceLogger.js +32 -0
- package/Libraries/Vibration/NativeVibration.js +1 -0
- package/Libraries/WebSocket/NativeWebSocketModule.js +1 -0
- package/Libraries/vendor/emitter/EventEmitter.js +6 -6
- package/index.js +21 -0
- package/index.win32.js +12 -1
- package/jest/setup.js +1 -0
- package/overrides.json +25 -25
- package/package.json +11 -11
- package/src/private/animated/createAnimatedPropsHook.js +4 -1
- package/src/private/animated/createAnimatedPropsMemoHook.js +2 -2
- package/src/private/components/virtualview/VirtualView.js +145 -0
- package/src/private/components/virtualview/VirtualViewNativeComponent.js +90 -0
- package/src/private/featureflags/ReactNativeFeatureFlags.js +43 -23
- package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +9 -5
- package/src/private/setup/setUpPerformanceObserver.js +7 -0
- package/src/private/specs_DEPRECATED/components/ActivityIndicatorViewNativeComponent.js +7 -4
- package/src/private/specs_DEPRECATED/components/AndroidDrawerLayoutNativeComponent.js +3 -3
- package/src/private/specs_DEPRECATED/components/AndroidHorizontalScrollContentViewNativeComponent.js +3 -3
- package/src/private/specs_DEPRECATED/components/AndroidSwipeRefreshLayoutNativeComponent.js +3 -3
- package/src/private/specs_DEPRECATED/components/AndroidSwitchNativeComponent.js +10 -7
- package/src/private/specs_DEPRECATED/components/DebuggingOverlayNativeComponent.js +5 -4
- package/src/private/specs_DEPRECATED/components/ProgressBarAndroidNativeComponent.js +7 -4
- package/src/private/specs_DEPRECATED/components/PullToRefreshViewNativeComponent.js +9 -6
- package/src/private/specs_DEPRECATED/components/RCTInputAccessoryViewNativeComponent.js +9 -6
- package/src/private/specs_DEPRECATED/components/RCTModalHostViewNativeComponent.js +14 -5
- package/src/private/specs_DEPRECATED/components/RCTSafeAreaViewNativeComponent.js +8 -5
- package/src/private/specs_DEPRECATED/components/SwitchNativeComponent.js +5 -5
- package/src/private/specs_DEPRECATED/components/UnimplementedNativeViewNativeComponent.js +3 -3
- package/src/private/specs_DEPRECATED/modules/NativeDeviceInfo.js +1 -0
- package/src/private/specs_DEPRECATED/modules/NativeUIManager.js +9 -6
- package/src/private/styles/composeStyles.js +5 -12
- package/src/private/webapis/errors/DOMException.js +1 -1
- package/src/private/webapis/idlecallbacks/specs/NativeIdleCallbacks.js +4 -2
- package/src/private/webapis/intersectionobserver/IntersectionObserver.js +12 -7
- package/src/private/webapis/intersectionobserver/internals/IntersectionObserverManager.js +13 -0
- package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +2 -1
- package/src/private/webapis/performance/Performance.js +164 -61
- package/src/private/webapis/performance/PerformanceEntry.js +20 -16
- package/src/private/webapis/performance/PerformanceObserver.js +31 -27
- package/src/private/webapis/performance/ResourceTiming.js +108 -0
- package/src/private/webapis/performance/UserTiming.js +60 -8
- package/src/private/webapis/performance/internals/RawPerformanceEntry.js +47 -32
- package/src/private/webapis/performance/specs/NativePerformance.js +13 -1
- package/src-win/Libraries/Components/View/ViewPropTypes.d.ts +4 -0
- package/Libraries/BugReporting/BugReporting.js +0 -140
- package/Libraries/BugReporting/NativeBugReporting.js +0 -13
- package/Libraries/BugReporting/dumpReactTree.js +0 -151
- package/Libraries/BugReporting/getReactData.js +0 -187
- package/src/private/specs_DEPRECATED/modules/NativeBugReporting.js +0 -20
|
@@ -61,7 +61,7 @@ function restoreDeletedValuesInNestedArray(
|
|
|
61
61
|
} else if (node && removedKeyCount > 0) {
|
|
62
62
|
const obj = node;
|
|
63
63
|
for (const propKey in removedKeys) {
|
|
64
|
-
// $FlowFixMe[incompatible-use]
|
|
64
|
+
// $FlowFixMe[incompatible-use] removedKeys is always non-null
|
|
65
65
|
if (!removedKeys[propKey]) {
|
|
66
66
|
continue;
|
|
67
67
|
}
|
|
@@ -133,12 +133,12 @@ function diffNestedArrayProperty(
|
|
|
133
133
|
);
|
|
134
134
|
}
|
|
135
135
|
for (; i < nextArray.length; i++) {
|
|
136
|
-
// Add all remaining properties
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
);
|
|
136
|
+
// Add all remaining properties
|
|
137
|
+
const nextProp = nextArray[i];
|
|
138
|
+
if (!nextProp) {
|
|
139
|
+
continue;
|
|
140
|
+
}
|
|
141
|
+
updatePayload = addNestedProperty(updatePayload, nextProp, validAttributes);
|
|
142
142
|
}
|
|
143
143
|
return updatePayload;
|
|
144
144
|
}
|
|
@@ -183,9 +183,7 @@ function diffNestedProperty(
|
|
|
183
183
|
if (Array.isArray(prevProp)) {
|
|
184
184
|
return diffProperties(
|
|
185
185
|
updatePayload,
|
|
186
|
-
// $FlowFixMe - We know that this is always an object when the input is.
|
|
187
186
|
flattenStyle(prevProp),
|
|
188
|
-
// $FlowFixMe - We know that this isn't an array because of above flow.
|
|
189
187
|
nextProp,
|
|
190
188
|
validAttributes,
|
|
191
189
|
);
|
|
@@ -194,43 +192,11 @@ function diffNestedProperty(
|
|
|
194
192
|
return diffProperties(
|
|
195
193
|
updatePayload,
|
|
196
194
|
prevProp,
|
|
197
|
-
// $FlowFixMe - We know that this is always an object when the input is.
|
|
198
195
|
flattenStyle(nextProp),
|
|
199
196
|
validAttributes,
|
|
200
197
|
);
|
|
201
198
|
}
|
|
202
199
|
|
|
203
|
-
/**
|
|
204
|
-
* addNestedProperty takes a single set of props and valid attribute
|
|
205
|
-
* attribute configurations. It processes each prop and adds it to the
|
|
206
|
-
* updatePayload.
|
|
207
|
-
*/
|
|
208
|
-
function addNestedProperty(
|
|
209
|
-
updatePayload: null | Object,
|
|
210
|
-
nextProp: NestedNode,
|
|
211
|
-
validAttributes: AttributeConfiguration,
|
|
212
|
-
): $FlowFixMe {
|
|
213
|
-
if (!nextProp) {
|
|
214
|
-
return updatePayload;
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
if (!Array.isArray(nextProp)) {
|
|
218
|
-
// Add each property of the leaf.
|
|
219
|
-
return addProperties(updatePayload, nextProp, validAttributes);
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
for (let i = 0; i < nextProp.length; i++) {
|
|
223
|
-
// Add all the properties of the array.
|
|
224
|
-
updatePayload = addNestedProperty(
|
|
225
|
-
updatePayload,
|
|
226
|
-
nextProp[i],
|
|
227
|
-
validAttributes,
|
|
228
|
-
);
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
return updatePayload;
|
|
232
|
-
}
|
|
233
|
-
|
|
234
200
|
/**
|
|
235
201
|
* clearNestedProperty takes a single set of props and valid attributes. It
|
|
236
202
|
* adds a null sentinel to the updatePayload, for each prop key.
|
|
@@ -285,14 +251,19 @@ function diffProperties(
|
|
|
285
251
|
prevProp = prevProps[propKey];
|
|
286
252
|
nextProp = nextProps[propKey];
|
|
287
253
|
|
|
288
|
-
// functions are converted to booleans as markers that the associated
|
|
289
|
-
// events should be sent from native.
|
|
290
254
|
if (typeof nextProp === 'function') {
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
if (
|
|
295
|
-
|
|
255
|
+
const attributeConfigHasProcess =
|
|
256
|
+
typeof attributeConfig === 'object' &&
|
|
257
|
+
typeof attributeConfig.process === 'function';
|
|
258
|
+
if (!attributeConfigHasProcess) {
|
|
259
|
+
// functions are converted to booleans as markers that the associated
|
|
260
|
+
// events should be sent from native.
|
|
261
|
+
nextProp = (true: any);
|
|
262
|
+
// If nextProp is not a function, then don't bother changing prevProp
|
|
263
|
+
// since nextProp will win and go into the updatePayload regardless.
|
|
264
|
+
if (typeof prevProp === 'function') {
|
|
265
|
+
prevProp = (true: any);
|
|
266
|
+
}
|
|
296
267
|
}
|
|
297
268
|
}
|
|
298
269
|
|
|
@@ -442,16 +413,69 @@ function diffProperties(
|
|
|
442
413
|
return updatePayload;
|
|
443
414
|
}
|
|
444
415
|
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
*/
|
|
448
|
-
function addProperties(
|
|
449
|
-
updatePayload: null | Object,
|
|
416
|
+
function addNestedProperty(
|
|
417
|
+
payload: null | Object,
|
|
450
418
|
props: Object,
|
|
451
419
|
validAttributes: AttributeConfiguration,
|
|
452
420
|
): null | Object {
|
|
453
|
-
//
|
|
454
|
-
|
|
421
|
+
// Flatten nested style props.
|
|
422
|
+
if (Array.isArray(props)) {
|
|
423
|
+
for (let i = 0; i < props.length; i++) {
|
|
424
|
+
payload = addNestedProperty(payload, props[i], validAttributes);
|
|
425
|
+
}
|
|
426
|
+
return payload;
|
|
427
|
+
}
|
|
428
|
+
|
|
429
|
+
for (const propKey in props) {
|
|
430
|
+
const prop = props[propKey];
|
|
431
|
+
|
|
432
|
+
const attributeConfig = ((validAttributes[
|
|
433
|
+
propKey
|
|
434
|
+
]: any): AttributeConfiguration);
|
|
435
|
+
|
|
436
|
+
if (attributeConfig == null) {
|
|
437
|
+
continue;
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
let newValue;
|
|
441
|
+
|
|
442
|
+
if (prop === undefined) {
|
|
443
|
+
// Discard the prop if it was previously defined.
|
|
444
|
+
if (payload && payload[propKey] !== undefined) {
|
|
445
|
+
newValue = null;
|
|
446
|
+
} else {
|
|
447
|
+
continue;
|
|
448
|
+
}
|
|
449
|
+
} else if (typeof attributeConfig === 'object') {
|
|
450
|
+
if (typeof attributeConfig.process === 'function') {
|
|
451
|
+
// An atomic prop with custom processing.
|
|
452
|
+
newValue = attributeConfig.process(prop);
|
|
453
|
+
} else if (typeof attributeConfig.diff === 'function') {
|
|
454
|
+
// An atomic prop with custom diffing. We don't need to do diffing when adding props.
|
|
455
|
+
newValue = prop;
|
|
456
|
+
}
|
|
457
|
+
} else {
|
|
458
|
+
if (typeof prop === 'function') {
|
|
459
|
+
// A function prop. It represents an event handler. Pass it to native as 'true'.
|
|
460
|
+
newValue = true;
|
|
461
|
+
} else {
|
|
462
|
+
// An atomic prop. Doesn't need to be flattened.
|
|
463
|
+
newValue = prop;
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
if (newValue !== undefined) {
|
|
468
|
+
if (!payload) {
|
|
469
|
+
payload = ({}: {[string]: $FlowFixMe});
|
|
470
|
+
}
|
|
471
|
+
payload[propKey] = newValue;
|
|
472
|
+
continue;
|
|
473
|
+
}
|
|
474
|
+
|
|
475
|
+
payload = addNestedProperty(payload, prop, attributeConfig);
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
return payload;
|
|
455
479
|
}
|
|
456
480
|
|
|
457
481
|
/**
|
|
@@ -463,7 +487,6 @@ function clearProperties(
|
|
|
463
487
|
prevProps: Object,
|
|
464
488
|
validAttributes: AttributeConfiguration,
|
|
465
489
|
): null | Object {
|
|
466
|
-
// TODO: Fast path
|
|
467
490
|
return diffProperties(updatePayload, prevProps, emptyObject, validAttributes);
|
|
468
491
|
}
|
|
469
492
|
|
|
@@ -471,11 +494,7 @@ export function create(
|
|
|
471
494
|
props: Object,
|
|
472
495
|
validAttributes: AttributeConfiguration,
|
|
473
496
|
): null | Object {
|
|
474
|
-
return
|
|
475
|
-
null, // updatePayload
|
|
476
|
-
props,
|
|
477
|
-
validAttributes,
|
|
478
|
-
);
|
|
497
|
+
return addNestedProperty(null, props, validAttributes);
|
|
479
498
|
}
|
|
480
499
|
|
|
481
500
|
export function diff(
|
|
@@ -51,7 +51,7 @@ export type {PublicRootInstance} from '../ReactNative/ReactFabricPublicInstance/
|
|
|
51
51
|
export type PublicTextInstance = ReturnType<createPublicTextInstance>;
|
|
52
52
|
|
|
53
53
|
// flowlint unsafe-getters-setters:off
|
|
54
|
-
// eslint-disable-next-line
|
|
54
|
+
// eslint-disable-next-line @react-native/monorepo/no-commonjs-exports
|
|
55
55
|
module.exports = {
|
|
56
56
|
get BatchedBridge(): BatchedBridge {
|
|
57
57
|
return require('../BatchedBridge/BatchedBridge').default;
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* @format
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
import typeof {createPublicTextInstance} from '../ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance';
|
|
11
|
+
import typeof {createPublicTextInstance as createPublicTextInstanceT} from '../ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance';
|
|
12
12
|
|
|
13
13
|
export type {
|
|
14
14
|
HostInstance as PublicInstance,
|
|
@@ -21,7 +21,7 @@ export type {
|
|
|
21
21
|
} from '../../src/private/types/HostInstance';
|
|
22
22
|
|
|
23
23
|
export type {PublicRootInstance} from '../ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance';
|
|
24
|
-
export type PublicTextInstance = ReturnType<
|
|
24
|
+
export type PublicTextInstance = ReturnType<createPublicTextInstanceT>;
|
|
25
25
|
|
|
26
26
|
export {default as BatchedBridge} from '../BatchedBridge/BatchedBridge';
|
|
27
27
|
export {default as ExceptionsManager} from '../Core/ExceptionsManager';
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* @noflow
|
|
8
8
|
* @nolint
|
|
9
9
|
* @preventMunge
|
|
10
|
-
* @generated SignedSource<<
|
|
10
|
+
* @generated SignedSource<<6b3694149dd8856f0c741d3d94e05646>>
|
|
11
11
|
*
|
|
12
12
|
* This file was sync'd from the facebook/react repository.
|
|
13
13
|
*/
|
|
@@ -10561,6 +10561,8 @@ __DEV__ &&
|
|
|
10561
10561
|
(offscreenSubtreeWasHidden ||
|
|
10562
10562
|
null === current ||
|
|
10563
10563
|
safelyDetachRef(current, current.return));
|
|
10564
|
+
null !== finishedWork.alternate &&
|
|
10565
|
+
(finishedWork.alternate.stateNode = finishedWork.stateNode);
|
|
10564
10566
|
break;
|
|
10565
10567
|
case 6:
|
|
10566
10568
|
recursivelyTraverseMutationEffects(root, finishedWork);
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* @noflow
|
|
8
8
|
* @nolint
|
|
9
9
|
* @preventMunge
|
|
10
|
-
* @generated SignedSource<<
|
|
10
|
+
* @generated SignedSource<<7430b56dac3186eca669ae53bbf1f23d>>
|
|
11
11
|
*
|
|
12
12
|
* This file was sync'd from the facebook/react repository.
|
|
13
13
|
*/
|
|
@@ -8075,6 +8075,8 @@ function commitMutationEffectsOnFiber(finishedWork, root) {
|
|
|
8075
8075
|
(offscreenSubtreeWasHidden ||
|
|
8076
8076
|
null === current ||
|
|
8077
8077
|
safelyDetachRef(current, current.return));
|
|
8078
|
+
null !== finishedWork.alternate &&
|
|
8079
|
+
(finishedWork.alternate.stateNode = finishedWork.stateNode);
|
|
8078
8080
|
break;
|
|
8079
8081
|
case 6:
|
|
8080
8082
|
recursivelyTraverseMutationEffects(root, finishedWork);
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* @noflow
|
|
8
8
|
* @nolint
|
|
9
9
|
* @preventMunge
|
|
10
|
-
* @generated SignedSource<<
|
|
10
|
+
* @generated SignedSource<<cf19390911979c415bb5e95c5270fba6>>
|
|
11
11
|
*
|
|
12
12
|
* This file was sync'd from the facebook/react repository.
|
|
13
13
|
*/
|
|
@@ -8530,6 +8530,8 @@ function commitMutationEffectsOnFiber(finishedWork, root) {
|
|
|
8530
8530
|
(offscreenSubtreeWasHidden ||
|
|
8531
8531
|
null === current ||
|
|
8532
8532
|
safelyDetachRef(current, current.return));
|
|
8533
|
+
null !== finishedWork.alternate &&
|
|
8534
|
+
(finishedWork.alternate.stateNode = finishedWork.stateNode);
|
|
8533
8535
|
break;
|
|
8534
8536
|
case 6:
|
|
8535
8537
|
recursivelyTraverseMutationEffects(root, finishedWork);
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* @noformat
|
|
8
8
|
* @nolint
|
|
9
9
|
* @flow strict
|
|
10
|
-
* @generated SignedSource<<
|
|
10
|
+
* @generated SignedSource<<deb7924d11c790f99448a1c2f0edddb9>>
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
13
|
import type {
|
|
@@ -35,16 +35,7 @@ export type AttributeType<T, V> =
|
|
|
35
35
|
export type AnyAttributeType = AttributeType<$FlowFixMe, $FlowFixMe>;
|
|
36
36
|
|
|
37
37
|
export type AttributeConfiguration = $ReadOnly<{
|
|
38
|
-
[propName: string]: AnyAttributeType,
|
|
39
|
-
style: $ReadOnly<{
|
|
40
|
-
[propName: string]: AnyAttributeType,
|
|
41
|
-
...
|
|
42
|
-
}>,
|
|
43
|
-
...
|
|
44
|
-
}>;
|
|
45
|
-
|
|
46
|
-
export type PartialAttributeConfiguration = $ReadOnly<{
|
|
47
|
-
[propName: string]: AnyAttributeType,
|
|
38
|
+
[propName: string]: AnyAttributeType | void,
|
|
48
39
|
style?: $ReadOnly<{
|
|
49
40
|
[propName: string]: AnyAttributeType,
|
|
50
41
|
...
|
|
@@ -84,7 +75,7 @@ export type PartialViewConfig = $ReadOnly<{
|
|
|
84
75
|
directEventTypes?: ViewConfig['directEventTypes'],
|
|
85
76
|
supportsRawText?: boolean,
|
|
86
77
|
uiViewClassName: string,
|
|
87
|
-
validAttributes?:
|
|
78
|
+
validAttributes?: AttributeConfiguration,
|
|
88
79
|
}>;
|
|
89
80
|
|
|
90
81
|
type InspectorDataProps = $ReadOnly<{
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* @noformat
|
|
8
8
|
* @nolint
|
|
9
9
|
* @flow strict
|
|
10
|
-
* @generated SignedSource<<
|
|
10
|
+
* @generated SignedSource<<deb7924d11c790f99448a1c2f0edddb9>>
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
13
|
import type {
|
|
@@ -39,16 +39,7 @@ export type AttributeType<T, V> =
|
|
|
39
39
|
export type AnyAttributeType = AttributeType<$FlowFixMe, $FlowFixMe>;
|
|
40
40
|
|
|
41
41
|
export type AttributeConfiguration = $ReadOnly<{
|
|
42
|
-
[propName: string]: AnyAttributeType,
|
|
43
|
-
style: $ReadOnly<{
|
|
44
|
-
[propName: string]: AnyAttributeType,
|
|
45
|
-
...
|
|
46
|
-
}>,
|
|
47
|
-
...
|
|
48
|
-
}>;
|
|
49
|
-
|
|
50
|
-
export type PartialAttributeConfiguration = $ReadOnly<{
|
|
51
|
-
[propName: string]: AnyAttributeType,
|
|
42
|
+
[propName: string]: AnyAttributeType | void,
|
|
52
43
|
style?: $ReadOnly<{
|
|
53
44
|
[propName: string]: AnyAttributeType,
|
|
54
45
|
...
|
|
@@ -88,7 +79,7 @@ export type PartialViewConfig = $ReadOnly<{
|
|
|
88
79
|
directEventTypes?: ViewConfig['directEventTypes'],
|
|
89
80
|
supportsRawText?: boolean,
|
|
90
81
|
uiViewClassName: string,
|
|
91
|
-
validAttributes?:
|
|
82
|
+
validAttributes?: AttributeConfiguration,
|
|
92
83
|
}>;
|
|
93
84
|
|
|
94
85
|
type InspectorDataProps = $ReadOnly<{
|
|
@@ -19,6 +19,8 @@ function processAspectRatio(aspectRatio?: number | string): ?number {
|
|
|
19
19
|
if (typeof aspectRatio !== 'string') {
|
|
20
20
|
if (__DEV__) {
|
|
21
21
|
invariant(
|
|
22
|
+
/* $FlowFixMe[constant-condition] Error discovered during Constant
|
|
23
|
+
* Condition roll out. See https://fburl.com/workplace/1v97vimq. */
|
|
22
24
|
!aspectRatio,
|
|
23
25
|
'aspectRatio must either be a number, a ratio string or `auto`. You passed: %s',
|
|
24
26
|
aspectRatio,
|
package/Libraries/Text/Text.js
CHANGED
|
@@ -19,7 +19,7 @@ import usePressability from '../Pressability/usePressability';
|
|
|
19
19
|
import flattenStyle from '../StyleSheet/flattenStyle';
|
|
20
20
|
import processColor from '../StyleSheet/processColor';
|
|
21
21
|
import Platform from '../Utilities/Platform';
|
|
22
|
-
import
|
|
22
|
+
import TextAncestorContext from './TextAncestorContext';
|
|
23
23
|
import {NativeText, NativeVirtualText} from './TextNativeComponent';
|
|
24
24
|
import * as React from 'react';
|
|
25
25
|
import {useContext, useMemo, useState} from 'react';
|
|
@@ -169,7 +169,7 @@ const TextImpl: component(
|
|
|
169
169
|
|
|
170
170
|
const _nativeID = id ?? nativeID;
|
|
171
171
|
|
|
172
|
-
const hasTextAncestor = useContext(
|
|
172
|
+
const hasTextAncestor = useContext(TextAncestorContext);
|
|
173
173
|
if (hasTextAncestor) {
|
|
174
174
|
if (isPressable) {
|
|
175
175
|
return (
|
|
@@ -302,7 +302,7 @@ const TextImpl: component(
|
|
|
302
302
|
}
|
|
303
303
|
|
|
304
304
|
// If the children do not contain a JSX element it would not be possible to have a
|
|
305
|
-
// nested `Text` component so we can skip adding the `
|
|
305
|
+
// nested `Text` component so we can skip adding the `TextAncestorContext` context wrapper
|
|
306
306
|
// which has a performance overhead. Since we do this for performance reasons we need
|
|
307
307
|
// to keep the check simple to avoid regressing overall perf. For this reason the
|
|
308
308
|
// `children.length` constant is set to `3`, this should be a reasonable tradeoff
|
|
@@ -322,9 +322,7 @@ const TextImpl: component(
|
|
|
322
322
|
return nativeText;
|
|
323
323
|
}
|
|
324
324
|
|
|
325
|
-
return
|
|
326
|
-
<TextAncestor.Provider value={true}>{nativeText}</TextAncestor.Provider>
|
|
327
|
-
);
|
|
325
|
+
return <TextAncestorContext value={true}>{nativeText}</TextAncestorContext>;
|
|
328
326
|
};
|
|
329
327
|
|
|
330
328
|
TextImpl.displayName = 'Text';
|
|
@@ -8,16 +8,9 @@
|
|
|
8
8
|
* @format
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
// Compatibility module for ReactStrictDOMTextAncestorContext.native.js.flow (react-strict-dom)
|
|
12
|
+
// TODO(huntie): Delete after we've fixed this cross-repo reference
|
|
12
13
|
|
|
13
|
-
import
|
|
14
|
-
import {createContext} from 'react';
|
|
14
|
+
import TextAncestorContext from './TextAncestorContext';
|
|
15
15
|
|
|
16
|
-
/**
|
|
17
|
-
* Whether the current element is the descendant of a <Text> element.
|
|
18
|
-
*/
|
|
19
|
-
const TextAncestorContext: React.Context<boolean> = createContext(false);
|
|
20
|
-
if (__DEV__) {
|
|
21
|
-
TextAncestorContext.displayName = 'TextAncestorContext';
|
|
22
|
-
}
|
|
23
16
|
export default TextAncestorContext;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*
|
|
7
|
+
* @flow strict
|
|
8
|
+
* @format
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
'use strict';
|
|
12
|
+
|
|
13
|
+
import * as React from 'react';
|
|
14
|
+
import {createContext} from 'react';
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Whether the current element is the descendant of a <Text> element.
|
|
18
|
+
*/
|
|
19
|
+
const TextAncestorContext: React.Context<boolean> = createContext(false);
|
|
20
|
+
if (__DEV__) {
|
|
21
|
+
TextAncestorContext.displayName = 'TextAncestorContext';
|
|
22
|
+
}
|
|
23
|
+
export default TextAncestorContext;
|
|
@@ -32,7 +32,7 @@ export type PressRetentionOffset = $ReadOnly<{
|
|
|
32
32
|
right: number,
|
|
33
33
|
}>;
|
|
34
34
|
|
|
35
|
-
type
|
|
35
|
+
type TextPointerEventProps = $ReadOnly<{
|
|
36
36
|
onPointerEnter?: (event: PointerEvent) => void,
|
|
37
37
|
onPointerLeave?: (event: PointerEvent) => void,
|
|
38
38
|
onPointerMove?: (event: PointerEvent) => void,
|
|
@@ -269,7 +269,7 @@ type TextBaseProps = $ReadOnly<{
|
|
|
269
269
|
* @see https://reactnative.dev/docs/text#reference
|
|
270
270
|
*/
|
|
271
271
|
export type TextProps = $ReadOnly<{
|
|
272
|
-
...
|
|
272
|
+
...TextPointerEventProps,
|
|
273
273
|
...TextPropsIOS,
|
|
274
274
|
...TextPropsAndroid,
|
|
275
275
|
...TextBaseProps,
|
|
@@ -32,7 +32,7 @@ export type PressRetentionOffset = $ReadOnly<{
|
|
|
32
32
|
right: number,
|
|
33
33
|
}>;
|
|
34
34
|
|
|
35
|
-
type
|
|
35
|
+
type TextPointerEventProps = $ReadOnly<{
|
|
36
36
|
onPointerEnter?: (event: PointerEvent) => void,
|
|
37
37
|
onPointerLeave?: (event: PointerEvent) => void,
|
|
38
38
|
onPointerMove?: (event: PointerEvent) => void,
|
|
@@ -283,7 +283,7 @@ type TextBaseProps = $ReadOnly<{
|
|
|
283
283
|
* @see https://reactnative.dev/docs/text#reference
|
|
284
284
|
*/
|
|
285
285
|
export type TextProps = $ReadOnly<{
|
|
286
|
-
...
|
|
286
|
+
...TextPointerEventProps,
|
|
287
287
|
...TextPropsIOS,
|
|
288
288
|
...TextPropsAndroid,
|
|
289
289
|
...TextBaseProps,
|
|
@@ -23,6 +23,7 @@ const prettyFormat = require('pretty-format');
|
|
|
23
23
|
const pendingEntryPoints = [];
|
|
24
24
|
let hmrClient = null;
|
|
25
25
|
let hmrUnavailableReason: string | null = null;
|
|
26
|
+
let hmrOrigin: string | null = null;
|
|
26
27
|
let currentCompileErrorMessage: string | null = null;
|
|
27
28
|
let didConnect: boolean = false;
|
|
28
29
|
let pendingLogs: Array<[LogLevel, $ReadOnlyArray<mixed>]> = [];
|
|
@@ -100,7 +101,14 @@ const HMRClient: HMRClientNativeInterface = {
|
|
|
100
101
|
},
|
|
101
102
|
|
|
102
103
|
registerBundle(requestUrl: string) {
|
|
103
|
-
invariant(
|
|
104
|
+
invariant(
|
|
105
|
+
hmrOrigin != null && hmrClient != null,
|
|
106
|
+
'Expected HMRClient.setup() call at startup.',
|
|
107
|
+
);
|
|
108
|
+
// only process registerBundle calls from the same origin
|
|
109
|
+
if (!requestUrl.startsWith(hmrOrigin)) {
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
104
112
|
pendingEntryPoints.push(requestUrl);
|
|
105
113
|
registerBundleEntryPoints(hmrClient);
|
|
106
114
|
},
|
|
@@ -162,8 +170,10 @@ const HMRClient: HMRClientNativeInterface = {
|
|
|
162
170
|
|
|
163
171
|
const serverScheme = scheme;
|
|
164
172
|
|
|
165
|
-
const
|
|
173
|
+
const origin = `${serverScheme}://${serverHost}`;
|
|
174
|
+
const client = new MetroHMRClient(`${origin}/hot`);
|
|
166
175
|
|
|
176
|
+
hmrOrigin = origin;
|
|
167
177
|
hmrClient = client;
|
|
168
178
|
|
|
169
179
|
const {fullBundleUrl} = getDevServer();
|
|
@@ -9,5 +9,4 @@
|
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
11
|
export * from '../../src/private/specs_DEPRECATED/modules/NativeDeviceInfo';
|
|
12
|
-
|
|
13
|
-
export default NativeDeviceInfo;
|
|
12
|
+
export {default} from '../../src/private/specs_DEPRECATED/modules/NativeDeviceInfo';
|
|
@@ -10,4 +10,5 @@
|
|
|
10
10
|
|
|
11
11
|
export * from '../../src/private/specs_DEPRECATED/modules/NativePlatformConstantsAndroid';
|
|
12
12
|
import NativePlatformConstantsAndroid from '../../src/private/specs_DEPRECATED/modules/NativePlatformConstantsAndroid';
|
|
13
|
+
|
|
13
14
|
export default NativePlatformConstantsAndroid;
|
|
@@ -8,10 +8,7 @@
|
|
|
8
8
|
* @format
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
import type {
|
|
12
|
-
Platform as PlatformType,
|
|
13
|
-
PlatformSelectSpec,
|
|
14
|
-
} from './PlatformTypes';
|
|
11
|
+
import type {PlatformSelectSpec, PlatformType} from './PlatformTypes';
|
|
15
12
|
|
|
16
13
|
import NativePlatformConstantsAndroid from './NativePlatformConstantsAndroid';
|
|
17
14
|
|
|
@@ -8,10 +8,7 @@
|
|
|
8
8
|
* @format
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
import type {
|
|
12
|
-
Platform as PlatformType,
|
|
13
|
-
PlatformSelectSpec,
|
|
14
|
-
} from './PlatformTypes';
|
|
11
|
+
import type {PlatformSelectSpec, PlatformType} from './PlatformTypes';
|
|
15
12
|
|
|
16
13
|
import NativePlatformConstantsIOS from './NativePlatformConstantsIOS';
|
|
17
14
|
|
|
@@ -6,10 +6,7 @@
|
|
|
6
6
|
* @format
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
-
import type {
|
|
10
|
-
Platform as PlatformType,
|
|
11
|
-
PlatformSelectSpec,
|
|
12
|
-
} from './PlatformTypes';
|
|
9
|
+
import type {PlatformSelectSpec, PlatformType} from './PlatformTypes';
|
|
13
10
|
|
|
14
11
|
import NativePlatformConstantsWin from './NativePlatformConstantsWin';
|
|
15
12
|
|