@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.
Files changed (220) hide show
  1. package/.flowconfig +5 -3
  2. package/CHANGELOG.json +28 -1
  3. package/CHANGELOG.md +16 -6
  4. package/IntegrationTests/IntegrationTestsApp.js +1 -0
  5. package/IntegrationTests/LoggingTestModule.js +16 -20
  6. package/IntegrationTests/TimersTest.js +1 -0
  7. package/IntegrationTests/WebSocketTest.js +1 -0
  8. package/Libraries/ActionSheetIOS/NativeActionSheetManager.js +1 -0
  9. package/Libraries/Alert/Alert.js +2 -2
  10. package/Libraries/Alert/NativeAlertManager.js +1 -0
  11. package/Libraries/Alert/RCTAlertManager.android.js +19 -13
  12. package/Libraries/Alert/RCTAlertManager.ios.js +9 -11
  13. package/Libraries/Alert/RCTAlertManager.js +1 -3
  14. package/Libraries/Alert/RCTAlertManager.js.flow +4 -6
  15. package/Libraries/Animated/AnimatedEvent.js +4 -3
  16. package/Libraries/Animated/AnimatedExports.js.flow +5 -0
  17. package/Libraries/Animated/AnimatedImplementation.js +44 -44
  18. package/Libraries/Animated/AnimatedMock.js +2 -2
  19. package/Libraries/Animated/NativeAnimatedModule.js +1 -0
  20. package/Libraries/Animated/NativeAnimatedTurboModule.js +1 -0
  21. package/Libraries/Animated/animations/Animation.js +6 -1
  22. package/Libraries/Animated/components/AnimatedScrollView.js +6 -5
  23. package/Libraries/Animated/components/AnimatedText.js +2 -5
  24. package/Libraries/Animated/components/AnimatedView.js +2 -1
  25. package/Libraries/Animated/createAnimatedComponent.js +2 -4
  26. package/Libraries/Animated/nodes/AnimatedProps.js +2 -7
  27. package/Libraries/AppState/NativeAppState.js +1 -0
  28. package/Libraries/Blob/NativeBlobModule.js +1 -0
  29. package/Libraries/Blob/NativeFileReaderModule.js +1 -0
  30. package/Libraries/Components/AccessibilityInfo/NativeAccessibilityInfo.js +1 -2
  31. package/Libraries/Components/AccessibilityInfo/NativeAccessibilityInfoWin32.js +1 -2
  32. package/Libraries/Components/AccessibilityInfo/NativeAccessibilityManager.js +1 -2
  33. package/Libraries/Components/ActivityIndicator/ActivityIndicatorViewNativeComponent.js +1 -2
  34. package/Libraries/Components/Button.js +7 -4
  35. package/Libraries/Components/Button.win32.js +7 -4
  36. package/Libraries/Components/Clipboard/NativeClipboard.js +1 -2
  37. package/Libraries/Components/DrawerAndroid/AndroidDrawerLayoutNativeComponent.js +1 -2
  38. package/Libraries/Components/Keyboard/NativeKeyboardObserver.js +1 -2
  39. package/Libraries/Components/Pressable/Pressable.js +8 -2
  40. package/Libraries/Components/Pressable/Pressable.win32.js +8 -8
  41. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidNativeComponent.js +1 -2
  42. package/Libraries/Components/RefreshControl/AndroidSwipeRefreshLayoutNativeComponent.js +1 -2
  43. package/Libraries/Components/RefreshControl/PullToRefreshViewNativeComponent.js +1 -0
  44. package/Libraries/Components/SafeAreaView/RCTSafeAreaViewNativeComponent.js +1 -2
  45. package/Libraries/Components/SafeAreaView/SafeAreaView.d.ts +9 -0
  46. package/Libraries/Components/SafeAreaView/SafeAreaView.js +3 -2
  47. package/Libraries/Components/SafeAreaView/SafeAreaView.win32.js +3 -2
  48. package/Libraries/Components/ScrollView/AndroidHorizontalScrollContentViewNativeComponent.js +1 -2
  49. package/Libraries/Components/ScrollView/ScrollView.d.ts +10 -1
  50. package/Libraries/Components/ScrollView/ScrollView.js +3 -1
  51. package/Libraries/Components/Sound/NativeSoundManager.js +1 -2
  52. package/Libraries/Components/StatusBar/NativeStatusBarManagerAndroid.js +1 -2
  53. package/Libraries/Components/StatusBar/NativeStatusBarManagerIOS.js +1 -2
  54. package/Libraries/Components/StatusBar/StatusBar.d.ts +4 -0
  55. package/Libraries/Components/StatusBar/StatusBar.js +5 -0
  56. package/Libraries/Components/Switch/AndroidSwitchNativeComponent.js +1 -2
  57. package/Libraries/Components/Switch/Switch.js +2 -1
  58. package/Libraries/Components/Switch/SwitchNativeComponent.js +1 -2
  59. package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +8 -7
  60. package/Libraries/Components/TextInput/RCTInputAccessoryViewNativeComponent.js +1 -2
  61. package/Libraries/Components/TextInput/TextInput.flow.js +1 -1
  62. package/Libraries/Components/TextInput/TextInput.js +2 -4
  63. package/Libraries/Components/TextInput/TextInput.win32.js +28 -3
  64. package/Libraries/Components/ToastAndroid/NativeToastAndroid.js +1 -2
  65. package/Libraries/Components/Touchable/Touchable.js +7 -3
  66. package/Libraries/Components/Touchable/Touchable.win32.js +7 -3
  67. package/Libraries/Components/Touchable/TouchableHighlight.js +5 -1
  68. package/Libraries/Components/Touchable/TouchableNativeFeedback.js +3 -2
  69. package/Libraries/Components/Touchable/TouchableNativeFeedback.win32.js +3 -2
  70. package/Libraries/Components/Touchable/TouchableOpacity.d.ts +1 -0
  71. package/Libraries/Components/Touchable/TouchableOpacity.js +3 -2
  72. package/Libraries/Components/UnimplementedViews/UnimplementedNativeViewNativeComponent.js +1 -2
  73. package/Libraries/Components/View/ReactNativeStyleAttributes.js +6 -15
  74. package/Libraries/Components/View/View.js +17 -18
  75. package/Libraries/Components/View/View.win32.js +16 -2
  76. package/Libraries/Components/View/ViewAccessibility.js +0 -7
  77. package/Libraries/Components/View/ViewAccessibility.win32.js +0 -7
  78. package/Libraries/Components/View/ViewPropTypes.d.ts +4 -0
  79. package/Libraries/Components/View/ViewPropTypes.js +8 -0
  80. package/Libraries/Components/View/ViewPropTypes.win32.js +8 -0
  81. package/Libraries/Core/ExceptionsManager.js +28 -15
  82. package/Libraries/Core/NativeExceptionsManager.js +1 -0
  83. package/Libraries/Core/ReactNativeVersion.js +1 -1
  84. package/Libraries/Core/SegmentFetcher/NativeSegmentFetcher.js +1 -0
  85. package/Libraries/Core/Timers/NativeTiming.js +1 -0
  86. package/Libraries/Core/checkNativeVersion.js +1 -0
  87. package/Libraries/Core/setUpReactDevTools.js +21 -4
  88. package/Libraries/Debugging/DebuggingOverlayNativeComponent.js +1 -0
  89. package/Libraries/EventEmitter/NativeEventEmitter.js +3 -3
  90. package/Libraries/Image/Image.android.js +3 -3
  91. package/Libraries/Image/ImageSource.d.ts +5 -0
  92. package/Libraries/Image/ImageViewNativeComponent.js +3 -3
  93. package/Libraries/Image/NativeImageEditor.js +1 -0
  94. package/Libraries/Image/NativeImageLoaderAndroid.js +1 -0
  95. package/Libraries/Image/NativeImageLoaderIOS.js +1 -0
  96. package/Libraries/Image/NativeImageLoaderWin32.js +1 -0
  97. package/Libraries/Image/NativeImageStoreAndroid.js +1 -0
  98. package/Libraries/Image/NativeImageStoreIOS.js +1 -0
  99. package/Libraries/Image/RelativeImageStub.js +1 -1
  100. package/Libraries/Image/TextInlineImageNativeComponent.js +3 -3
  101. package/Libraries/Interaction/InteractionManager.js +6 -1
  102. package/Libraries/Interaction/NativeFrameRateLogger.js +1 -0
  103. package/Libraries/Interaction/TaskQueue.js +14 -0
  104. package/Libraries/LayoutAnimation/LayoutAnimation.js +12 -8
  105. package/Libraries/Linking/NativeIntentAndroid.js +1 -0
  106. package/Libraries/Linking/NativeLinkingManager.js +1 -0
  107. package/Libraries/Lists/FlatList.js +5 -6
  108. package/Libraries/Lists/SectionList.js +4 -4
  109. package/Libraries/Lists/VirtualizedList.js +3 -2
  110. package/Libraries/LogBox/Data/LogBoxData.js +7 -4
  111. package/Libraries/LogBox/LogBox.js +72 -101
  112. package/Libraries/Modal/Modal.d.ts +8 -2
  113. package/Libraries/Modal/Modal.js +19 -2
  114. package/Libraries/Modal/NativeModalManager.js +1 -0
  115. package/Libraries/Modal/RCTModalHostViewNativeComponent.js +1 -0
  116. package/Libraries/NativeComponent/BaseViewConfig.android.js +6 -15
  117. package/Libraries/NativeComponent/BaseViewConfig.ios.js +6 -15
  118. package/Libraries/NativeComponent/BaseViewConfig.win32.js +6 -15
  119. package/Libraries/NativeModules/specs/NativeDevMenu.js +1 -0
  120. package/Libraries/NativeModules/specs/NativeDevSettings.js +1 -0
  121. package/Libraries/NativeModules/specs/NativeDeviceEventManager.js +1 -0
  122. package/Libraries/NativeModules/specs/NativeDialogManagerAndroid.js +1 -0
  123. package/Libraries/NativeModules/specs/NativeLogBox.js +1 -0
  124. package/Libraries/NativeModules/specs/NativeRedBox.js +1 -0
  125. package/Libraries/NativeModules/specs/NativeSourceCode.js +1 -0
  126. package/Libraries/Network/NativeNetworkingAndroid.js +1 -0
  127. package/Libraries/Network/NativeNetworkingIOS.js +1 -0
  128. package/Libraries/Network/XMLHttpRequest.js +2 -0
  129. package/Libraries/PermissionsAndroid/NativePermissionsAndroid.js +1 -0
  130. package/Libraries/PermissionsAndroid/PermissionsAndroid.js +3 -2
  131. package/Libraries/PushNotificationIOS/NativePushNotificationManagerIOS.js +1 -0
  132. package/Libraries/ReactNative/AppRegistry.flow.js +2 -2
  133. package/Libraries/ReactNative/AppRegistryImpl.js +0 -10
  134. package/Libraries/ReactNative/BridgelessUIManager.js +1 -1
  135. package/Libraries/ReactNative/NativeHeadlessJsTaskSupport.js +1 -0
  136. package/Libraries/ReactNative/NativeI18nManager.js +1 -0
  137. package/Libraries/ReactNative/NativeUIManager.js +1 -0
  138. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactNativeAttributePayload.js +80 -61
  139. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +1 -1
  140. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js.flow +2 -2
  141. package/Libraries/Renderer/implementations/ReactFabric-dev.js +3 -1
  142. package/Libraries/Renderer/implementations/ReactFabric-prod.js +3 -1
  143. package/Libraries/Renderer/implementations/ReactFabric-profiling.js +3 -1
  144. package/Libraries/Renderer/shims/ReactNativeTypes.js +3 -12
  145. package/Libraries/Renderer/shims/ReactNativeTypes.win32.js +3 -12
  146. package/Libraries/Settings/NativeSettingsManager.js +1 -0
  147. package/Libraries/Share/NativeShareModule.js +1 -0
  148. package/Libraries/StyleSheet/StyleSheet.js +1 -0
  149. package/Libraries/StyleSheet/processAspectRatio.js +2 -0
  150. package/Libraries/Text/Text.js +4 -6
  151. package/Libraries/Text/TextAncestor.js +3 -10
  152. package/Libraries/Text/TextAncestorContext.js +23 -0
  153. package/Libraries/Text/TextProps.js +2 -2
  154. package/Libraries/Text/TextProps.win32.js +2 -2
  155. package/Libraries/TurboModule/samples/NativeSampleTurboModule.js +1 -0
  156. package/Libraries/Types/CodegenTypesNamespace.js +1 -0
  157. package/Libraries/Utilities/HMRClient.js +12 -2
  158. package/Libraries/Utilities/NativeAppearance.js +1 -0
  159. package/Libraries/Utilities/NativeDevLoadingView.js +1 -0
  160. package/Libraries/Utilities/NativeDeviceInfo.js +1 -2
  161. package/Libraries/Utilities/NativePlatformConstantsAndroid.js +1 -0
  162. package/Libraries/Utilities/NativePlatformConstantsIOS.js +1 -0
  163. package/Libraries/Utilities/NativePlatformConstantsWin.js +1 -0
  164. package/Libraries/Utilities/Platform.android.js +1 -4
  165. package/Libraries/Utilities/Platform.ios.js +1 -4
  166. package/Libraries/Utilities/Platform.js.flow +2 -2
  167. package/Libraries/Utilities/Platform.win32.js +1 -4
  168. package/Libraries/Utilities/PlatformTypes.js +1 -1
  169. package/Libraries/Utilities/codegenNativeCommands.js +4 -2
  170. package/Libraries/Utilities/codegenNativeComponent.js +3 -3
  171. package/Libraries/Utilities/createPerformanceLogger.js +32 -0
  172. package/Libraries/Vibration/NativeVibration.js +1 -0
  173. package/Libraries/WebSocket/NativeWebSocketModule.js +1 -0
  174. package/Libraries/vendor/emitter/EventEmitter.js +6 -6
  175. package/index.js +21 -0
  176. package/index.win32.js +12 -1
  177. package/jest/setup.js +1 -0
  178. package/overrides.json +25 -25
  179. package/package.json +11 -11
  180. package/src/private/animated/createAnimatedPropsHook.js +4 -1
  181. package/src/private/animated/createAnimatedPropsMemoHook.js +2 -2
  182. package/src/private/components/virtualview/VirtualView.js +145 -0
  183. package/src/private/components/virtualview/VirtualViewNativeComponent.js +90 -0
  184. package/src/private/featureflags/ReactNativeFeatureFlags.js +43 -23
  185. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +9 -5
  186. package/src/private/setup/setUpPerformanceObserver.js +7 -0
  187. package/src/private/specs_DEPRECATED/components/ActivityIndicatorViewNativeComponent.js +7 -4
  188. package/src/private/specs_DEPRECATED/components/AndroidDrawerLayoutNativeComponent.js +3 -3
  189. package/src/private/specs_DEPRECATED/components/AndroidHorizontalScrollContentViewNativeComponent.js +3 -3
  190. package/src/private/specs_DEPRECATED/components/AndroidSwipeRefreshLayoutNativeComponent.js +3 -3
  191. package/src/private/specs_DEPRECATED/components/AndroidSwitchNativeComponent.js +10 -7
  192. package/src/private/specs_DEPRECATED/components/DebuggingOverlayNativeComponent.js +5 -4
  193. package/src/private/specs_DEPRECATED/components/ProgressBarAndroidNativeComponent.js +7 -4
  194. package/src/private/specs_DEPRECATED/components/PullToRefreshViewNativeComponent.js +9 -6
  195. package/src/private/specs_DEPRECATED/components/RCTInputAccessoryViewNativeComponent.js +9 -6
  196. package/src/private/specs_DEPRECATED/components/RCTModalHostViewNativeComponent.js +14 -5
  197. package/src/private/specs_DEPRECATED/components/RCTSafeAreaViewNativeComponent.js +8 -5
  198. package/src/private/specs_DEPRECATED/components/SwitchNativeComponent.js +5 -5
  199. package/src/private/specs_DEPRECATED/components/UnimplementedNativeViewNativeComponent.js +3 -3
  200. package/src/private/specs_DEPRECATED/modules/NativeDeviceInfo.js +1 -0
  201. package/src/private/specs_DEPRECATED/modules/NativeUIManager.js +9 -6
  202. package/src/private/styles/composeStyles.js +5 -12
  203. package/src/private/webapis/errors/DOMException.js +1 -1
  204. package/src/private/webapis/idlecallbacks/specs/NativeIdleCallbacks.js +4 -2
  205. package/src/private/webapis/intersectionobserver/IntersectionObserver.js +12 -7
  206. package/src/private/webapis/intersectionobserver/internals/IntersectionObserverManager.js +13 -0
  207. package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +2 -1
  208. package/src/private/webapis/performance/Performance.js +164 -61
  209. package/src/private/webapis/performance/PerformanceEntry.js +20 -16
  210. package/src/private/webapis/performance/PerformanceObserver.js +31 -27
  211. package/src/private/webapis/performance/ResourceTiming.js +108 -0
  212. package/src/private/webapis/performance/UserTiming.js +60 -8
  213. package/src/private/webapis/performance/internals/RawPerformanceEntry.js +47 -32
  214. package/src/private/webapis/performance/specs/NativePerformance.js +13 -1
  215. package/src-win/Libraries/Components/View/ViewPropTypes.d.ts +4 -0
  216. package/Libraries/BugReporting/BugReporting.js +0 -140
  217. package/Libraries/BugReporting/NativeBugReporting.js +0 -13
  218. package/Libraries/BugReporting/dumpReactTree.js +0 -151
  219. package/Libraries/BugReporting/getReactData.js +0 -187
  220. package/src/private/specs_DEPRECATED/modules/NativeBugReporting.js +0 -20
@@ -21,7 +21,7 @@ import codegenNativeCommands from '../../../../Libraries/Utilities/codegenNative
21
21
  import codegenNativeComponent from '../../../../Libraries/Utilities/codegenNativeComponent';
22
22
  import * as React from 'react';
23
23
 
24
- type NativeProps = $ReadOnly<{
24
+ type PullToRefreshNativeProps = $ReadOnly<{
25
25
  ...ViewProps,
26
26
 
27
27
  /**
@@ -52,7 +52,7 @@ type NativeProps = $ReadOnly<{
52
52
  refreshing: boolean,
53
53
  }>;
54
54
 
55
- type ComponentType = HostComponent<NativeProps>;
55
+ type ComponentType = HostComponent<PullToRefreshNativeProps>;
56
56
 
57
57
  interface NativeCommands {
58
58
  +setNativeRefreshing: (
@@ -65,7 +65,10 @@ export const Commands: NativeCommands = codegenNativeCommands<NativeCommands>({
65
65
  supportedCommands: ['setNativeRefreshing'],
66
66
  });
67
67
 
68
- export default (codegenNativeComponent<NativeProps>('PullToRefreshView', {
69
- paperComponentName: 'RCTRefreshControl',
70
- excludedPlatforms: ['android'],
71
- }): HostComponent<NativeProps>);
68
+ export default (codegenNativeComponent<PullToRefreshNativeProps>(
69
+ 'PullToRefreshView',
70
+ {
71
+ paperComponentName: 'RCTRefreshControl',
72
+ excludedPlatforms: ['android'],
73
+ },
74
+ ): HostComponent<PullToRefreshNativeProps>);
@@ -14,13 +14,16 @@ import type {HostComponent} from '../../types/HostComponent';
14
14
 
15
15
  import codegenNativeComponent from '../../../../Libraries/Utilities/codegenNativeComponent';
16
16
 
17
- type NativeProps = $ReadOnly<{
17
+ type InputAccessoryNativeProps = $ReadOnly<{
18
18
  ...ViewProps,
19
19
  backgroundColor?: ?ColorValue,
20
20
  }>;
21
21
 
22
- export default (codegenNativeComponent<NativeProps>('InputAccessory', {
23
- interfaceOnly: true,
24
- paperComponentName: 'RCTInputAccessoryView',
25
- excludedPlatforms: ['android'],
26
- }): HostComponent<NativeProps>);
22
+ export default (codegenNativeComponent<InputAccessoryNativeProps>(
23
+ 'InputAccessory',
24
+ {
25
+ interfaceOnly: true,
26
+ paperComponentName: 'RCTInputAccessoryView',
27
+ excludedPlatforms: ['android'],
28
+ },
29
+ ): HostComponent<InputAccessoryNativeProps>);
@@ -22,7 +22,7 @@ type OrientationChangeEvent = $ReadOnly<{
22
22
  orientation: 'portrait' | 'landscape',
23
23
  }>;
24
24
 
25
- type NativeProps = $ReadOnly<{
25
+ type RCTModalHostViewNativeProps = $ReadOnly<{
26
26
  ...ViewProps,
27
27
 
28
28
  /**
@@ -112,6 +112,12 @@ type NativeProps = $ReadOnly<{
112
112
  */
113
113
  animated?: WithDefault<boolean, false>,
114
114
 
115
+ /**
116
+ * Controls whether the modal can be dismissed by swiping down on iOS.
117
+ * This requires you to implement the `onRequestClose` prop to handle the dismissal.
118
+ */
119
+ allowSwipeDismissal?: WithDefault<boolean, false>,
120
+
115
121
  /**
116
122
  * The `supportedOrientations` prop allows the modal to be rotated to any of the specified orientations.
117
123
  *
@@ -141,7 +147,10 @@ type NativeProps = $ReadOnly<{
141
147
  identifier?: WithDefault<Int32, 0>,
142
148
  }>;
143
149
 
144
- export default (codegenNativeComponent<NativeProps>('ModalHostView', {
145
- interfaceOnly: true,
146
- paperComponentName: 'RCTModalHostView',
147
- }): HostComponent<NativeProps>);
150
+ export default (codegenNativeComponent<RCTModalHostViewNativeProps>(
151
+ 'ModalHostView',
152
+ {
153
+ interfaceOnly: true,
154
+ paperComponentName: 'RCTModalHostView',
155
+ },
156
+ ): HostComponent<RCTModalHostViewNativeProps>);
@@ -13,13 +13,16 @@ import type {HostComponent} from '../../types/HostComponent';
13
13
 
14
14
  import codegenNativeComponent from '../../../../Libraries/Utilities/codegenNativeComponent';
15
15
 
16
- type NativeProps = $ReadOnly<{
16
+ type RCTSafeAreaViewNativeProps = $ReadOnly<{
17
17
  ...ViewProps,
18
18
 
19
19
  // No props
20
20
  }>;
21
21
 
22
- export default (codegenNativeComponent<NativeProps>('SafeAreaView', {
23
- paperComponentName: 'RCTSafeAreaView',
24
- interfaceOnly: true,
25
- }): HostComponent<NativeProps>);
22
+ export default (codegenNativeComponent<RCTSafeAreaViewNativeProps>(
23
+ 'SafeAreaView',
24
+ {
25
+ paperComponentName: 'RCTSafeAreaView',
26
+ interfaceOnly: true,
27
+ },
28
+ ): HostComponent<RCTSafeAreaViewNativeProps>);
@@ -21,12 +21,12 @@ import codegenNativeCommands from '../../../../Libraries/Utilities/codegenNative
21
21
  import codegenNativeComponent from '../../../../Libraries/Utilities/codegenNativeComponent';
22
22
  import * as React from 'react';
23
23
 
24
- type SwitchChangeEvent = $ReadOnly<{
24
+ type NativeSwitchChangeEvent = $ReadOnly<{
25
25
  value: boolean,
26
26
  target: Int32,
27
27
  }>;
28
28
 
29
- type NativeProps = $ReadOnly<{
29
+ type SwitchNativeProps = $ReadOnly<{
30
30
  ...ViewProps,
31
31
 
32
32
  // Props
@@ -42,10 +42,10 @@ type NativeProps = $ReadOnly<{
42
42
  trackColorForTrue?: ?ColorValue,
43
43
 
44
44
  // Events
45
- onChange?: ?BubblingEventHandler<SwitchChangeEvent>,
45
+ onChange?: ?BubblingEventHandler<NativeSwitchChangeEvent>,
46
46
  }>;
47
47
 
48
- type ComponentType = HostComponent<NativeProps>;
48
+ type ComponentType = HostComponent<SwitchNativeProps>;
49
49
 
50
50
  interface NativeCommands {
51
51
  +setValue: (viewRef: React.ElementRef<ComponentType>, value: boolean) => void;
@@ -55,7 +55,7 @@ export const Commands: NativeCommands = codegenNativeCommands<NativeCommands>({
55
55
  supportedCommands: ['setValue'],
56
56
  });
57
57
 
58
- export default (codegenNativeComponent<NativeProps>('Switch', {
58
+ export default (codegenNativeComponent<SwitchNativeProps>('Switch', {
59
59
  paperComponentName: 'RCTSwitch',
60
60
  excludedPlatforms: ['android'],
61
61
  }): ComponentType);
@@ -14,13 +14,13 @@ import type {HostComponent} from '../../types/HostComponent';
14
14
 
15
15
  import codegenNativeComponent from '../../../../Libraries/Utilities/codegenNativeComponent';
16
16
 
17
- type NativeProps = $ReadOnly<{
17
+ type UnimplementedNativeViewNativeProps = $ReadOnly<{
18
18
  ...ViewProps,
19
19
  name?: WithDefault<string, ''>,
20
20
  }>;
21
21
 
22
22
  // NOTE: This component is not implemented in paper
23
23
  // Do not require this file in paper builds
24
- export default (codegenNativeComponent<NativeProps>(
24
+ export default (codegenNativeComponent<UnimplementedNativeViewNativeProps>(
25
25
  'UnimplementedNativeView',
26
- ): HostComponent<NativeProps>);
26
+ ): HostComponent<UnimplementedNativeViewNativeProps>);
@@ -36,6 +36,7 @@ export type DimensionsPayload = {
36
36
 
37
37
  export type DeviceInfoConstants = {
38
38
  +Dimensions: DimensionsPayload,
39
+ +isEdgeToEdge?: boolean,
39
40
  +isIPhoneX_deprecated?: boolean,
40
41
  };
41
42
 
@@ -13,7 +13,7 @@ import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport';
13
13
 
14
14
  import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry';
15
15
 
16
- export type MeasureOnSuccessCallback = (
16
+ export type NativeMeasureOnSuccessCallback = (
17
17
  x: number,
18
18
  y: number,
19
19
  width: number,
@@ -22,14 +22,14 @@ export type MeasureOnSuccessCallback = (
22
22
  pageY: number,
23
23
  ) => void;
24
24
 
25
- export type MeasureInWindowOnSuccessCallback = (
25
+ export type NativeMeasureInWindowOnSuccessCallback = (
26
26
  x: number,
27
27
  y: number,
28
28
  width: number,
29
29
  height: number,
30
30
  ) => void;
31
31
 
32
- export type MeasureLayoutOnSuccessCallback = (
32
+ export type NativeMeasureLayoutOnSuccessCallback = (
33
33
  left: number,
34
34
  top: number,
35
35
  width: number,
@@ -87,7 +87,10 @@ export interface Spec extends TurboModule {
87
87
  *
88
88
  * @deprecated Use `ref.measure` instead.
89
89
  */
90
- +measure: (reactTag: number, callback: MeasureOnSuccessCallback) => void;
90
+ +measure: (
91
+ reactTag: number,
92
+ callback: NativeMeasureOnSuccessCallback,
93
+ ) => void;
91
94
  /**
92
95
  * Determines the location of the given view in the window and returns the
93
96
  * values via an async callback. If the React root view is embedded in
@@ -107,7 +110,7 @@ export interface Spec extends TurboModule {
107
110
  */
108
111
  +measureInWindow: (
109
112
  reactTag: number,
110
- callback: MeasureInWindowOnSuccessCallback,
113
+ callback: NativeMeasureInWindowOnSuccessCallback,
111
114
  ) => void;
112
115
  +viewIsDescendantOf: (
113
116
  reactTag: number,
@@ -128,7 +131,7 @@ export interface Spec extends TurboModule {
128
131
  reactTag: number,
129
132
  ancestorReactTag: number,
130
133
  errorCallback: (error: Object) => void,
131
- callback: MeasureLayoutOnSuccessCallback,
134
+ callback: NativeMeasureLayoutOnSuccessCallback,
132
135
  ) => void;
133
136
  +measureLayoutRelativeToParent: (
134
137
  reactTag: number,
@@ -4,26 +4,19 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
+ * @flow strict
7
8
  * @format
8
9
  */
9
10
 
10
- import type {
11
- ImageStyle,
12
- TextStyle,
13
- ViewStyle,
14
- } from '../../../Libraries/StyleSheet/StyleSheet';
15
- import type {StyleProp} from '../../../Libraries/StyleSheet/StyleSheetTypes';
16
-
17
11
  /**
18
12
  * Combines two styles such that `style2` will override any styles in `style1`.
19
13
  * If either style is null or undefined, the other one is returned without
20
14
  * allocating an array, saving allocations and enabling memoization.
21
15
  */
22
- export default function composeStyles<
23
- T: ViewStyle | ImageStyle | TextStyle,
24
- U: T,
25
- V: T,
26
- >(style1: ?StyleProp<U>, style2: ?StyleProp<V>): ?StyleProp<T> {
16
+ export default function composeStyles<T, U: T, V: T>(
17
+ style1: ?U,
18
+ style2: ?V,
19
+ ): ?(T | $ReadOnlyArray<T>) {
27
20
  if (style1 == null) {
28
21
  return style2;
29
22
  }
@@ -70,7 +70,7 @@ const ERROR_CODES: {[string]: number} = {
70
70
  DATA_CLONE_ERR: 25,
71
71
  };
72
72
 
73
- /* eslint-disable lint/require-extends-error */
73
+ /* eslint-disable @react-native/monorepo/require-extends-error */
74
74
  // $FlowExpectedError[incompatible-variance] name is writable in Error but not in DOMException, but this is how it works on Web.
75
75
  export default class DOMException extends Error {
76
76
  static +INDEX_SIZE_ERR: 1;
@@ -12,6 +12,8 @@ import type {TurboModule} from '../../../../../Libraries/TurboModule/RCTExport';
12
12
 
13
13
  import * as TurboModuleRegistry from '../../../../../Libraries/TurboModule/TurboModuleRegistry';
14
14
 
15
+ export opaque type IdleCallbackID = mixed;
16
+
15
17
  export type RequestIdleCallbackOptions = {
16
18
  timeout?: number,
17
19
  };
@@ -25,8 +27,8 @@ export interface Spec extends TurboModule {
25
27
  +requestIdleCallback: (
26
28
  callback: (idleDeadline: IdleDeadline) => mixed,
27
29
  options?: RequestIdleCallbackOptions,
28
- ) => mixed;
29
- +cancelIdleCallback: (handle: mixed) => void;
30
+ ) => IdleCallbackID;
31
+ +cancelIdleCallback: (handle: IdleCallbackID) => void;
30
32
  }
31
33
 
32
34
  export default (TurboModuleRegistry.getEnforcing<Spec>(
@@ -23,7 +23,7 @@ export type IntersectionObserverCallback = (
23
23
  ) => mixed;
24
24
 
25
25
  export interface IntersectionObserverInit {
26
- // root?: ReactNativeElement, // This option exists on the Web but it's not currently supported in React Native.
26
+ root?: ?ReactNativeElement;
27
27
  // rootMargin?: string, // This option exists on the Web but it's not currently supported in React Native.
28
28
  threshold?: number | $ReadOnlyArray<number>;
29
29
 
@@ -67,6 +67,7 @@ export default class IntersectionObserver {
67
67
  _observationTargets: Set<ReactNativeElement> = new Set();
68
68
  _intersectionObserverId: ?IntersectionObserverId;
69
69
  _rootThresholds: $ReadOnlyArray<number> | null;
70
+ _root: ReactNativeElement | null;
70
71
 
71
72
  constructor(
72
73
  callback: IntersectionObserverCallback,
@@ -85,16 +86,18 @@ export default class IntersectionObserver {
85
86
  }
86
87
 
87
88
  // $FlowExpectedError[prop-missing] it's not typed in React Native but exists on Web.
88
- if (options?.root != null) {
89
+ if (options?.rootMargin != null) {
89
90
  throw new TypeError(
90
- "Failed to construct 'IntersectionObserver': root is not supported",
91
+ "Failed to construct 'IntersectionObserver': rootMargin is not supported",
91
92
  );
92
93
  }
93
94
 
94
- // $FlowExpectedError[prop-missing] it's not typed in React Native but exists on Web.
95
- if (options?.rootMargin != null) {
95
+ if (
96
+ options?.root != null &&
97
+ !(options?.root instanceof ReactNativeElement)
98
+ ) {
96
99
  throw new TypeError(
97
- "Failed to construct 'IntersectionObserver': rootMargin is not supported",
100
+ "Failed to construct 'IntersectionObserver': Failed to read the 'root' property from 'IntersectionObserverInit': The provided value is not of type '(null or ReactNativeElement)",
98
101
  );
99
102
  }
100
103
 
@@ -105,6 +108,7 @@ export default class IntersectionObserver {
105
108
  options?.threshold,
106
109
  this._rootThresholds != null, // only provide default if no rootThreshold
107
110
  );
111
+ this._root = options?.root ?? null;
108
112
  }
109
113
 
110
114
  /**
@@ -116,7 +120,7 @@ export default class IntersectionObserver {
116
120
  * NOTE: This cannot currently be configured and `root` is always `null`.
117
121
  */
118
122
  get root(): ReactNativeElement | null {
119
- return null;
123
+ return this._root;
120
124
  }
121
125
 
122
126
  /**
@@ -183,6 +187,7 @@ export default class IntersectionObserver {
183
187
 
184
188
  const didStartObserving = IntersectionObserverManager.observe({
185
189
  intersectionObserverId: this._getOrCreateIntersectionObserverId(),
190
+ root: this._root,
186
191
  target,
187
192
  });
188
193
 
@@ -140,9 +140,11 @@ export function unregisterObserver(
140
140
  */
141
141
  export function observe({
142
142
  intersectionObserverId,
143
+ root,
143
144
  target,
144
145
  }: {
145
146
  intersectionObserverId: IntersectionObserverId,
147
+ root: ?ReactNativeElement,
146
148
  target: ReactNativeElement,
147
149
  }): boolean {
148
150
  if (NativeIntersectionObserver == null) {
@@ -174,6 +176,15 @@ export function observe({
174
176
  return false;
175
177
  }
176
178
 
179
+ const rootNativeNodeReference =
180
+ root != null ? getNativeNodeReference(root) : null;
181
+ if (root != null && rootNativeNodeReference == null) {
182
+ console.error(
183
+ 'IntersectionObserverManager: could not find shadow node for observation root',
184
+ );
185
+ return false;
186
+ }
187
+
177
188
  // Store the mapping between the instance handle and the target so we can
178
189
  // access it even after the instance handle has been unmounted.
179
190
  setTargetForInstanceHandle(instanceHandle, target);
@@ -191,6 +202,7 @@ export function observe({
191
202
  if (modernNativeIntersectionObserver == null) {
192
203
  NativeIntersectionObserver.observe({
193
204
  intersectionObserverId,
205
+ rootShadowNode: rootNativeNodeReference,
194
206
  targetShadowNode: targetNativeNodeReference,
195
207
  thresholds: registeredObserver.observer.thresholds,
196
208
  rootThresholds: registeredObserver.observer.rnRootThresholds,
@@ -198,6 +210,7 @@ export function observe({
198
210
  } else {
199
211
  const token = modernNativeIntersectionObserver.observe({
200
212
  intersectionObserverId,
213
+ rootShadowNode: rootNativeNodeReference,
201
214
  targetShadowNode: targetNativeNodeReference,
202
215
  thresholds: registeredObserver.observer.thresholds,
203
216
  rootThresholds: registeredObserver.observer.rnRootThresholds,
@@ -25,12 +25,13 @@ export type NativeIntersectionObserverEntry = {
25
25
 
26
26
  export type NativeIntersectionObserverObserveOptions = {
27
27
  intersectionObserverId: number,
28
+ rootShadowNode?: ?mixed,
28
29
  targetShadowNode: mixed,
29
30
  thresholds: $ReadOnlyArray<number>,
30
31
  rootThresholds?: ?$ReadOnlyArray<number>,
31
32
  };
32
33
 
33
- export type NativeIntersectionObserverToken = mixed;
34
+ export opaque type NativeIntersectionObserverToken = mixed;
34
35
 
35
36
  export interface Spec extends TurboModule {
36
37
  // TODO(T223605846): Remove legacy observe method