@office-iss/react-native-win32 0.72.8 → 0.73.0-preview.2

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 (277) hide show
  1. package/.flowconfig +15 -5
  2. package/CHANGELOG.json +530 -101
  3. package/CHANGELOG.md +213 -56
  4. package/IntegrationTests/PromiseTest.js +1 -0
  5. package/IntegrationTests/websocket_integration_test_server.js +1 -1
  6. package/Libraries/Animated/Animated.js +1 -1
  7. package/Libraries/Animated/AnimatedImplementation.js +1 -1
  8. package/Libraries/Animated/NativeAnimatedHelper.js +14 -10
  9. package/Libraries/Animated/NativeAnimatedHelper.win32.js +16 -12
  10. package/Libraries/Animated/NativeAnimatedModule.js +6 -2
  11. package/Libraries/Animated/NativeAnimatedTurboModule.js +7 -4
  12. package/Libraries/Animated/animations/Animation.js +57 -3
  13. package/Libraries/Animated/animations/DecayAnimation.js +9 -0
  14. package/Libraries/Animated/animations/SpringAnimation.js +8 -0
  15. package/Libraries/Animated/animations/TimingAnimation.js +8 -0
  16. package/Libraries/Animated/components/AnimatedFlatList.js +2 -1
  17. package/Libraries/Animated/components/AnimatedScrollView.js +2 -0
  18. package/Libraries/Animated/components/AnimatedSectionList.js +2 -1
  19. package/Libraries/Animated/createAnimatedComponent.js +1 -0
  20. package/Libraries/Animated/nodes/AnimatedColor.js +1 -1
  21. package/Libraries/Animated/nodes/AnimatedObject.js +146 -0
  22. package/Libraries/Animated/nodes/AnimatedProps.js +19 -7
  23. package/Libraries/Animated/nodes/AnimatedStyle.js +29 -55
  24. package/Libraries/Animated/nodes/AnimatedValueXY.js +3 -17
  25. package/Libraries/Animated/shouldUseTurboAnimatedModule.js +17 -0
  26. package/Libraries/Animated/useAnimatedProps.js +9 -10
  27. package/Libraries/AppState/AppState.d.ts +1 -1
  28. package/Libraries/AppState/NativeAppState.js +8 -4
  29. package/Libraries/BatchedBridge/MessageQueue.js +45 -36
  30. package/Libraries/Blob/Blob.js +6 -2
  31. package/Libraries/Blob/BlobManager.js +9 -10
  32. package/Libraries/Blob/BlobRegistry.js +14 -9
  33. package/Libraries/Blob/File.js +1 -1
  34. package/Libraries/Blob/FileReader.js +1 -2
  35. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts +1 -5
  36. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.win32.js +7 -48
  37. package/Libraries/Components/Button/ButtonWin32.Props.d.ts +1 -1
  38. package/Libraries/Components/Button/ButtonWin32.Props.js.map +1 -1
  39. package/Libraries/Components/Button/ButtonWin32.d.ts +1 -1
  40. package/Libraries/Components/Button/ButtonWin32.js +1 -4
  41. package/Libraries/Components/Button/ButtonWin32.js.map +1 -1
  42. package/Libraries/Components/Clipboard/Clipboard.d.ts +4 -4
  43. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +3 -1
  44. package/Libraries/Components/EnterString.win32.d.ts +1 -1
  45. package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +26 -6
  46. package/Libraries/Components/Pressable/Pressable.js +3 -2
  47. package/Libraries/Components/Pressable/Pressable.win32.js +4 -3
  48. package/Libraries/Components/Pressable/useAndroidRippleForView.js +1 -1
  49. package/Libraries/Components/SafeAreaView/SafeAreaView.js +7 -7
  50. package/Libraries/Components/SafeAreaView/SafeAreaView.win32.js +7 -8
  51. package/Libraries/Components/ScrollView/ScrollView.js +3 -1
  52. package/Libraries/Components/ScrollView/ScrollView.win32.js +3 -1
  53. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +39 -46
  54. package/Libraries/Components/Switch/Switch.js +1 -0
  55. package/Libraries/Components/Text/TextWin32.d.ts +1 -1
  56. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +1 -0
  57. package/Libraries/Components/TextInput/TextInput.d.ts +49 -7
  58. package/Libraries/Components/TextInput/TextInput.flow.js +43 -10
  59. package/Libraries/Components/TextInput/TextInput.js +62 -10
  60. package/Libraries/Components/TextInput/TextInput.win32.js +953 -206
  61. package/Libraries/Components/TextInput/Win32TextInputNativeComponent.js +23 -0
  62. package/Libraries/Components/ToastAndroid/{ToastAndroid.ios.js → ToastAndroid.js} +9 -1
  63. package/Libraries/Components/ToastAndroid/ToastAndroid.win32.js +9 -1
  64. package/Libraries/Components/Touchable/Tests/TouchableWin32Test.js +2 -2
  65. package/Libraries/Components/Touchable/Tests/TouchableWin32Test.js.map +1 -1
  66. package/Libraries/Components/Touchable/TouchableBounce.js +1 -1
  67. package/Libraries/Components/Touchable/TouchableHighlight.js +1 -1
  68. package/Libraries/Components/Touchable/TouchableNativeFeedback.js +1 -1
  69. package/Libraries/Components/Touchable/TouchableOpacity.js +4 -1
  70. package/Libraries/Components/Touchable/TouchableWin32.d.ts +1 -1
  71. package/Libraries/Components/Touchable/TouchableWin32.js.map +1 -1
  72. package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +1 -0
  73. package/Libraries/Components/TraceUpdateOverlay/TraceUpdateOverlay.js +16 -6
  74. package/Libraries/Components/View/ReactNativeStyleAttributes.js +9 -0
  75. package/Libraries/Components/View/ReactNativeViewAttributes.js +1 -0
  76. package/Libraries/Components/View/ReactNativeViewAttributes.win32.js +1 -0
  77. package/Libraries/Components/View/View.js +46 -32
  78. package/Libraries/Components/View/View.win32.js +37 -6
  79. package/Libraries/Components/View/ViewAccessibility.d.ts +8 -2
  80. package/Libraries/Components/View/ViewNativeComponent.js +1 -0
  81. package/Libraries/Components/View/ViewPropTypes.js +18 -3
  82. package/Libraries/Components/View/ViewPropTypes.win32.js +30 -4
  83. package/Libraries/Components/View/ViewWin32.js +3 -2
  84. package/Libraries/Core/Devtools/loadBundleFromServer.js +152 -0
  85. package/Libraries/Core/Devtools/symbolicateStackTrace.js +2 -1
  86. package/Libraries/Core/ExceptionsManager.js +16 -7
  87. package/Libraries/Core/ExtendedError.js +12 -0
  88. package/Libraries/Core/ReactNativeVersion.js +3 -3
  89. package/Libraries/Core/ReactNativeVersionCheck.js +0 -2
  90. package/Libraries/Core/ReactNativeVersionCheck.win32.js +0 -2
  91. package/Libraries/Core/__mocks__/NativeExceptionsManager.js +20 -0
  92. package/Libraries/Core/setUpDeveloperTools.js +5 -1
  93. package/Libraries/Core/setUpIntersectionObserver.js +16 -0
  94. package/Libraries/{Components/ProgressBarAndroid/ProgressBarAndroid.ios.js → Core/setUpMutationObserver.js} +6 -2
  95. package/Libraries/Core/setUpPerformance.js +6 -13
  96. package/Libraries/Core/setUpPerformanceObserver.js +16 -0
  97. package/Libraries/Core/setUpRegeneratorRuntime.js +4 -2
  98. package/Libraries/DOM/Nodes/ReactNativeElement.js +135 -18
  99. package/Libraries/DOM/Nodes/ReadOnlyCharacterData.js +72 -0
  100. package/Libraries/DOM/Nodes/ReadOnlyElement.js +209 -21
  101. package/Libraries/DOM/Nodes/ReadOnlyNode.js +206 -17
  102. package/Libraries/DOM/Nodes/ReadOnlyText.js +30 -0
  103. package/Libraries/DOM/Nodes/Utilities/Traversal.js +54 -0
  104. package/Libraries/EventEmitter/NativeEventEmitter.d.ts +0 -6
  105. package/Libraries/EventEmitter/RCTDeviceEventEmitter.js +15 -4
  106. package/Libraries/Image/Image.android.js +8 -2
  107. package/Libraries/Image/Image.d.ts +1 -1
  108. package/Libraries/Image/Image.ios.js +4 -1
  109. package/Libraries/Image/Image.win32.js +6 -3
  110. package/Libraries/Image/ImageBackground.js +3 -0
  111. package/Libraries/Image/resolveAssetSource.win32.js +1 -1
  112. package/Libraries/Inspector/DevtoolsOverlay.js +6 -3
  113. package/Libraries/Inspector/NetworkOverlay.js +2 -2
  114. package/Libraries/Interaction/JSEventLoopWatchdog.js +1 -5
  115. package/Libraries/Interaction/PanResponder.js +1 -4
  116. package/Libraries/IntersectionObserver/IntersectionObserver.js +252 -0
  117. package/Libraries/IntersectionObserver/IntersectionObserverEntry.js +140 -0
  118. package/Libraries/IntersectionObserver/IntersectionObserverManager.js +221 -0
  119. package/Libraries/IntersectionObserver/NativeIntersectionObserver.js +41 -0
  120. package/Libraries/IntersectionObserver/__mocks__/NativeIntersectionObserver.js +162 -0
  121. package/Libraries/LayoutAnimation/LayoutAnimation.js +1 -1
  122. package/Libraries/Lists/FlatList.d.ts +2 -1
  123. package/Libraries/Lists/FlatList.js +15 -5
  124. package/Libraries/Lists/SectionList.js +4 -0
  125. package/Libraries/LogBox/Data/LogBoxData.js +2 -1
  126. package/Libraries/LogBox/Data/LogBoxLog.js +4 -1
  127. package/Libraries/LogBox/Data/LogBoxSymbolication.js +5 -2
  128. package/Libraries/LogBox/Data/parseLogBoxLog.js +57 -20
  129. package/Libraries/LogBox/UI/AnsiHighlight.js +1 -1
  130. package/Libraries/LogBox/UI/LogBoxInspectorFooter.js +24 -31
  131. package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +1 -1
  132. package/Libraries/LogBox/UI/LogBoxMessage.js +4 -7
  133. package/Libraries/MutationObserver/MutationObserver.js +184 -0
  134. package/Libraries/MutationObserver/MutationObserverManager.js +218 -0
  135. package/Libraries/MutationObserver/MutationRecord.js +82 -0
  136. package/Libraries/MutationObserver/NativeMutationObserver.js +58 -0
  137. package/Libraries/MutationObserver/__mocks__/NativeMutationObserver.js +327 -0
  138. package/Libraries/NativeComponent/BaseViewConfig.android.js +18 -3
  139. package/Libraries/NativeComponent/BaseViewConfig.ios.js +33 -0
  140. package/Libraries/NativeComponent/BaseViewConfig.win32.js +33 -0
  141. package/Libraries/NativeComponent/NativeComponentRegistry.js +13 -9
  142. package/Libraries/NativeModules/specs/NativeSourceCode.js +6 -6
  143. package/Libraries/Network/RCTNetworking.android.js +2 -1
  144. package/Libraries/Network/XMLHttpRequest.js +1 -1
  145. package/Libraries/NewAppScreen/components/DebugInstructions.js +4 -4
  146. package/Libraries/NewAppScreen/components/LearnMoreLinks.js +9 -2
  147. package/Libraries/Performance/QuickPerformanceLogger.js +1 -1
  148. package/Libraries/PermissionsAndroid/NativePermissionsAndroid.js +1 -0
  149. package/Libraries/PermissionsAndroid/PermissionsAndroid.d.ts +1 -0
  150. package/Libraries/PermissionsAndroid/PermissionsAndroid.js +3 -1
  151. package/Libraries/Pressability/Pressability.js +28 -3
  152. package/Libraries/Pressability/Pressability.win32.js +30 -5
  153. package/Libraries/ReactNative/AppContainer.js +2 -3
  154. package/Libraries/ReactNative/AppRegistry.d.ts +0 -5
  155. package/Libraries/ReactNative/AppRegistry.js +66 -53
  156. package/Libraries/ReactNative/BridgelessUIManager.js +38 -9
  157. package/Libraries/ReactNative/FabricUIManager.js +143 -34
  158. package/Libraries/ReactNative/I18nManager.js +5 -11
  159. package/Libraries/ReactNative/NativeI18nManager.js +7 -5
  160. package/Libraries/ReactNative/PaperUIManager.win32.js +2 -2
  161. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricHostComponent.js +151 -0
  162. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance.js +81 -0
  163. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactNativeAttributePayload.js +492 -0
  164. package/Libraries/ReactNative/ReactFabricPublicInstance/warnForStyleProps.js +32 -0
  165. package/Libraries/ReactNative/ReactNativeFeatureFlags.js +19 -3
  166. package/Libraries/ReactNative/UIManager.js +8 -0
  167. package/Libraries/ReactNative/__mocks__/FabricUIManager.js +648 -0
  168. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +38 -2
  169. package/Libraries/Renderer/implementations/ReactFabric-dev.js +27 -27
  170. package/Libraries/Renderer/implementations/ReactFabric-prod.js +3 -3
  171. package/Libraries/Renderer/implementations/ReactFabric-profiling.js +3 -3
  172. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +27 -27
  173. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +3 -3
  174. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +3 -3
  175. package/Libraries/Renderer/shims/ReactFabric.js +5 -6
  176. package/Libraries/Renderer/shims/ReactFeatureFlags.js +2 -3
  177. package/Libraries/Renderer/shims/ReactNative.js +2 -3
  178. package/Libraries/Renderer/shims/ReactNativeTypes.js +35 -17
  179. package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +3 -3
  180. package/Libraries/Renderer/shims/createReactNativeComponentClass.js +2 -3
  181. package/Libraries/Settings/{Settings.android.js → Settings.js} +4 -4
  182. package/Libraries/Share/Share.d.ts +3 -9
  183. package/Libraries/StyleSheet/PlatformColorValueTypes.android.js +9 -4
  184. package/Libraries/StyleSheet/PlatformColorValueTypes.ios.js +28 -13
  185. package/Libraries/StyleSheet/PlatformColorValueTypes.win32.js +14 -4
  186. package/Libraries/StyleSheet/PlatformColorValueTypesIOS.ios.js +1 -1
  187. package/Libraries/StyleSheet/PlatformColorValueTypesWin32.d.ts +1 -1
  188. package/Libraries/StyleSheet/StyleSheet.d.ts +10 -1
  189. package/Libraries/StyleSheet/StyleSheet.js +3 -0
  190. package/Libraries/StyleSheet/StyleSheet.win32.js +3 -0
  191. package/Libraries/StyleSheet/StyleSheetTypes.d.ts +31 -17
  192. package/Libraries/StyleSheet/StyleSheetTypes.js +90 -6
  193. package/Libraries/StyleSheet/flattenStyle.js +4 -0
  194. package/Libraries/StyleSheet/private/_TransformStyle.js +16 -2
  195. package/Libraries/StyleSheet/processColor.js +1 -2
  196. package/Libraries/StyleSheet/processTransformOrigin.js +136 -0
  197. package/Libraries/StyleSheet/splitLayoutProps.js +1 -0
  198. package/Libraries/Text/Text.d.ts +5 -5
  199. package/Libraries/Text/Text.js +17 -10
  200. package/Libraries/Text/Text.win32.js +354 -0
  201. package/Libraries/Text/TextProps.win32.js +281 -0
  202. package/Libraries/TurboModule/TurboModuleRegistry.js +47 -7
  203. package/Libraries/TurboModule/samples/NativeSampleTurboModule.js +6 -0
  204. package/Libraries/Types/CoreEventTypes.d.ts +5 -2
  205. package/Libraries/Utilities/GlobalPerformanceLogger.js +2 -12
  206. package/Libraries/Utilities/NativeDeviceInfo.js +8 -9
  207. package/Libraries/Utilities/NativePlatformConstantsAndroid.js +23 -18
  208. package/Libraries/Utilities/NativePlatformConstantsIOS.js +16 -13
  209. package/Libraries/Utilities/NativePlatformConstantsWin.js +13 -10
  210. package/Libraries/Utilities/PerformanceLoggerContext.js +1 -1
  211. package/Libraries/Utilities/Platform.android.js +12 -8
  212. package/Libraries/Utilities/Platform.d.ts +1 -0
  213. package/Libraries/Utilities/Platform.flow.js +84 -0
  214. package/Libraries/Utilities/Platform.flow.win32.js +111 -0
  215. package/Libraries/Utilities/Platform.ios.js +12 -8
  216. package/Libraries/Utilities/Platform.win32.js +12 -8
  217. package/Libraries/Utilities/PolyfillFunctions.js +1 -1
  218. package/Libraries/Utilities/ReactNativeTestTools.js +1 -2
  219. package/Libraries/Utilities/SceneTracker.js +1 -1
  220. package/Libraries/Utilities/createPerformanceLogger.js +63 -32
  221. package/Libraries/Utilities/useColorScheme.js +7 -8
  222. package/Libraries/WebPerformance/MemoryInfo.js +1 -1
  223. package/Libraries/WebPerformance/NativePerformance.js +3 -8
  224. package/Libraries/WebPerformance/NativePerformanceObserver.js +4 -0
  225. package/Libraries/WebPerformance/Performance.js +42 -15
  226. package/Libraries/WebPerformance/PerformanceEntry.js +14 -6
  227. package/Libraries/WebPerformance/PerformanceEventTiming.js +18 -1
  228. package/Libraries/WebPerformance/ReactNativeStartupTiming.js +40 -14
  229. package/Libraries/WebPerformance/__mocks__/NativePerformance.js +4 -2
  230. package/Libraries/WebPerformance/__mocks__/NativePerformanceObserver.js +21 -3
  231. package/Libraries/promiseRejectionTrackingOptions.js +21 -9
  232. package/Libraries/vendor/emitter/EventEmitter.js +17 -17
  233. package/flow/global.js +1 -3
  234. package/flow/jest.js +5 -1
  235. package/{Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.ios.js → jest/ReactNativeInternalFeatureFlagsMock.js} +2 -1
  236. package/jest/__tests__/setup-test.js +18 -0
  237. package/jest/mockModal.js +6 -4
  238. package/jest/setup.js +61 -30
  239. package/jest.config.js +1 -1
  240. package/just-task.js +1 -0
  241. package/overrides.json +54 -60
  242. package/package.json +35 -33
  243. package/src/Libraries/Components/Button/ButtonWin32.Props.ts +1 -1
  244. package/src/Libraries/Components/Button/ButtonWin32.tsx +0 -2
  245. package/src/Libraries/Components/Touchable/Tests/TouchableWin32Test.tsx +2 -2
  246. package/src/Libraries/Components/Touchable/TouchableWin32.tsx +1 -1
  247. package/src/Libraries/Components/View/ViewAccessibility.d.ts +8 -2
  248. package/src/Libraries/StyleSheet/PlatformColorValueTypesWin32.d.ts +1 -1
  249. package/types/experimental.d.ts +44 -0
  250. package/types/index.d.ts +2 -1
  251. package/types/modules/Devtools.d.ts +1 -0
  252. package/types/modules/globals.d.ts +16 -1
  253. package/IntegrationTests/BUCK +0 -32
  254. package/IntegrationTests/PropertiesUpdateTest.js +0 -29
  255. package/IntegrationTests/RCTRootViewIntegrationTestApp.js +0 -86
  256. package/IntegrationTests/ReactContentSizeUpdateTest.js +0 -89
  257. package/IntegrationTests/SizeFlexibilityUpdateTest.js +0 -106
  258. package/Libraries/Components/AccessibilityInfo/NativeAccessibilityInfoWin32.js +0 -37
  259. package/Libraries/Components/TextInput/TextInput.Types.win32.d.ts +0 -51
  260. package/Libraries/Components/TextInput/TextInput.Types.win32.js +0 -3
  261. package/Libraries/Components/TextInput/TextInput.Types.win32.js.map +0 -1
  262. package/Libraries/Utilities/AcessibilityMapping.js +0 -154
  263. package/Libraries/Utilities/AcessibilityMapping.win32.js +0 -156
  264. package/Libraries/Utilities/NativeDevSplitBundleLoader.js +0 -19
  265. package/Libraries/Utilities/useColorScheme.win32.js +0 -26
  266. package/flow/use-sync-external-store.js +0 -20
  267. package/flow-typed/npm/base64-js_v1.x.x.js +0 -12
  268. package/flow-typed/npm/glob_v7.x.x.js +0 -79
  269. package/flow-typed/npm/pretty-format_v26.x.x.js +0 -49
  270. package/flow-typed/npm/promise_v8.x.x.js +0 -30
  271. package/flow-typed/npm/react-dom_v17.x.x.js +0 -139
  272. package/flow-typed/npm/react-test-renderer_v16.x.x.js +0 -79
  273. package/flow-typed/npm/stacktrace-parser_v0.1.x.js +0 -17
  274. package/flow-typed/npm/yargs_v17.x.x.js +0 -341
  275. package/src/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts +0 -161
  276. package/src/Libraries/Components/TextInput/TextInput.Types.win32.ts +0 -68
  277. /package/Libraries/{Renderer/public → ReactNative/ReactFabricPublicInstance}/ReactFabricPublicInstanceUtils.js +0 -0
@@ -39,8 +39,6 @@ exports.checkVersions = function checkVersions(): void {
39
39
  }
40
40
  };
41
41
 
42
- // Note: in OSS, the prerelease version is usually 0.Y.0-rc.W, so it is a string and not a number
43
- // Then we need to keep supporting that object shape.
44
42
  function _formatVersion(
45
43
  version:
46
44
  | (typeof Platform)['constants']['reactNativeVersion']
@@ -41,8 +41,6 @@ exports.checkVersions = function checkVersions(): void {
41
41
  }
42
42
  };
43
43
 
44
- // Note: in OSS, the prerelease version is usually 0.Y.0-rc.W, so it is a string and not a number
45
- // Then we need to keep supporting that object shape.
46
44
  function _formatVersion(
47
45
  version:
48
46
  | (typeof Platform)['constants']['reactNativeVersion']
@@ -0,0 +1,20 @@
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
+ * @oncall react_native
10
+ */
11
+
12
+ import typeof NativeExceptionsManager from '../NativeExceptionsManager';
13
+
14
+ export default ({
15
+ reportFatalException: jest.fn(),
16
+ reportSoftException: jest.fn(),
17
+ updateExceptionMessage: jest.fn(),
18
+ dismissRedbox: jest.fn(),
19
+ reportException: jest.fn(),
20
+ }: NativeExceptionsManager);
@@ -10,7 +10,7 @@
10
10
 
11
11
  import Platform from '../Utilities/Platform';
12
12
 
13
- declare var console: typeof console & {_isPolyfilled: boolean, ...};
13
+ declare var console: {[string]: $FlowFixMe};
14
14
 
15
15
  /**
16
16
  * Sets up developer tools for React Native.
@@ -74,4 +74,8 @@ if (__DEV__) {
74
74
  }
75
75
 
76
76
  require('./setUpReactRefresh');
77
+
78
+ global[
79
+ `${global.__METRO_GLOBAL_PREFIX__ ?? ''}__loadBundleAsync`
80
+ ] = require('./Devtools/loadBundleFromServer');
77
81
  }
@@ -0,0 +1,16 @@
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-local
8
+ * @format
9
+ */
10
+
11
+ import {polyfillGlobal} from '../Utilities/PolyfillFunctions';
12
+
13
+ polyfillGlobal(
14
+ 'IntersectionObserver',
15
+ () => require('../IntersectionObserver/IntersectionObserver').default,
16
+ );
@@ -4,9 +4,13 @@
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-local
7
8
  * @format
8
9
  */
9
10
 
10
- 'use strict';
11
+ import {polyfillGlobal} from '../Utilities/PolyfillFunctions';
11
12
 
12
- module.exports = require('../UnimplementedViews/UnimplementedView');
13
+ polyfillGlobal(
14
+ 'MutationObserver',
15
+ () => require('../MutationObserver/MutationObserver').default,
16
+ );
@@ -19,18 +19,11 @@ if (NativePerformance) {
19
19
  } else {
20
20
  if (!global.performance) {
21
21
  // $FlowExpectedError[cannot-write]
22
- global.performance = ({}: {now?: () => number});
23
- }
24
-
25
- /**
26
- * Returns a double, measured in milliseconds.
27
- * https://developer.mozilla.org/en-US/docs/Web/API/Performance/now
28
- */
29
- if (typeof global.performance.now !== 'function') {
30
- // $FlowExpectedError[cannot-write]
31
- global.performance.now = function () {
32
- const performanceNow = global.nativePerformanceNow || Date.now;
33
- return performanceNow();
34
- };
22
+ global.performance = ({
23
+ now: function () {
24
+ const performanceNow = global.nativePerformanceNow || Date.now;
25
+ return performanceNow();
26
+ },
27
+ }: {now?: () => number});
35
28
  }
36
29
  }
@@ -0,0 +1,16 @@
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-local
8
+ * @format
9
+ */
10
+
11
+ import {polyfillGlobal} from '../Utilities/PolyfillFunctions';
12
+
13
+ polyfillGlobal(
14
+ 'PerformanceObserver',
15
+ () => require('../WebPerformance/PerformanceObserver').default,
16
+ );
@@ -22,8 +22,10 @@ let hasNativeGenerator;
22
22
  try {
23
23
  // If this function was lowered by regenerator-transform, it will try to
24
24
  // access `global.regeneratorRuntime` which doesn't exist yet and will throw.
25
- hasNativeGenerator = hasNativeConstructor(function* () {},
26
- 'GeneratorFunction');
25
+ hasNativeGenerator = hasNativeConstructor(
26
+ function* () {},
27
+ 'GeneratorFunction',
28
+ );
27
29
  } catch {
28
30
  // In this case, we know generators are not provided natively.
29
31
  hasNativeGenerator = false;
@@ -5,40 +5,116 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
7
  * @format
8
- * @flow strict
8
+ * @flow strict-local
9
9
  */
10
10
 
11
11
  // flowlint unsafe-getters-setters:off
12
12
 
13
13
  import type {
14
14
  HostComponent,
15
+ INativeMethods,
16
+ InternalInstanceHandle,
15
17
  MeasureInWindowOnSuccessCallback,
16
18
  MeasureLayoutOnSuccessCallback,
17
19
  MeasureOnSuccessCallback,
20
+ ViewConfig,
18
21
  } from '../../Renderer/shims/ReactNativeTypes';
19
22
  import type {ElementRef} from 'react';
20
23
 
21
- import ReadOnlyElement from './ReadOnlyElement';
24
+ import TextInputState from '../../Components/TextInput/TextInputState';
25
+ import {getFabricUIManager} from '../../ReactNative/FabricUIManager';
26
+ import {create as createAttributePayload} from '../../ReactNative/ReactFabricPublicInstance/ReactNativeAttributePayload';
27
+ import warnForStyleProps from '../../ReactNative/ReactFabricPublicInstance/warnForStyleProps';
28
+ import ReadOnlyElement, {getBoundingClientRect} from './ReadOnlyElement';
29
+ import ReadOnlyNode from './ReadOnlyNode';
30
+ import {
31
+ getPublicInstanceFromInternalInstanceHandle,
32
+ getShadowNode,
33
+ } from './ReadOnlyNode';
34
+ import nullthrows from 'nullthrows';
35
+
36
+ const noop = () => {};
37
+
38
+ export default class ReactNativeElement
39
+ extends ReadOnlyElement
40
+ implements INativeMethods
41
+ {
42
+ // These need to be accessible from `ReactFabricPublicInstanceUtils`.
43
+ __nativeTag: number;
44
+ __internalInstanceHandle: InternalInstanceHandle;
45
+
46
+ _viewConfig: ViewConfig;
47
+
48
+ constructor(
49
+ tag: number,
50
+ viewConfig: ViewConfig,
51
+ internalInstanceHandle: InternalInstanceHandle,
52
+ ) {
53
+ super(internalInstanceHandle);
54
+
55
+ this.__nativeTag = tag;
56
+ this.__internalInstanceHandle = internalInstanceHandle;
57
+ this._viewConfig = viewConfig;
58
+ }
22
59
 
23
- export default class ReactNativeElement extends ReadOnlyElement {
24
60
  get offsetHeight(): number {
25
- throw new TypeError('Unimplemented');
61
+ return Math.round(
62
+ getBoundingClientRect(this, {includeTransform: false}).height,
63
+ );
26
64
  }
27
65
 
28
66
  get offsetLeft(): number {
29
- throw new TypeError('Unimplemented');
67
+ const node = getShadowNode(this);
68
+
69
+ if (node != null) {
70
+ const offset = nullthrows(getFabricUIManager()).getOffset(node);
71
+ if (offset != null) {
72
+ return Math.round(offset[2]);
73
+ }
74
+ }
75
+
76
+ return 0;
30
77
  }
31
78
 
32
79
  get offsetParent(): ReadOnlyElement | null {
33
- throw new TypeError('Unimplemented');
80
+ const node = getShadowNode(this);
81
+
82
+ if (node != null) {
83
+ const offset = nullthrows(getFabricUIManager()).getOffset(node);
84
+ // For children of the root node we currently return offset data
85
+ // but a `null` parent because the root node is not accessible
86
+ // in JavaScript yet.
87
+ if (offset != null && offset[0] != null) {
88
+ const offsetParentInstanceHandle = offset[0];
89
+ const offsetParent = getPublicInstanceFromInternalInstanceHandle(
90
+ offsetParentInstanceHandle,
91
+ );
92
+ // $FlowExpectedError[incompatible-type] The value returned by `getOffset` is always an instance handle for `ReadOnlyElement`.
93
+ const offsetParentElement: ReadOnlyElement = offsetParent;
94
+ return offsetParentElement;
95
+ }
96
+ }
97
+
98
+ return null;
34
99
  }
35
100
 
36
101
  get offsetTop(): number {
37
- throw new TypeError('Unimplemented');
102
+ const node = getShadowNode(this);
103
+
104
+ if (node != null) {
105
+ const offset = nullthrows(getFabricUIManager()).getOffset(node);
106
+ if (offset != null) {
107
+ return Math.round(offset[1]);
108
+ }
109
+ }
110
+
111
+ return 0;
38
112
  }
39
113
 
40
114
  get offsetWidth(): number {
41
- throw new TypeError('Unimplemented');
115
+ return Math.round(
116
+ getBoundingClientRect(this, {includeTransform: false}).width,
117
+ );
42
118
  }
43
119
 
44
120
  /**
@@ -46,30 +122,71 @@ export default class ReactNativeElement extends ReadOnlyElement {
46
122
  */
47
123
 
48
124
  blur(): void {
49
- throw new TypeError('Unimplemented');
125
+ // $FlowFixMe[incompatible-exact] Migrate all usages of `NativeMethods` to an interface to fix this.
126
+ TextInputState.blurTextInput(this);
50
127
  }
51
128
 
52
- focus(): void {
53
- throw new TypeError('Unimplemented');
129
+ focus() {
130
+ // $FlowFixMe[incompatible-exact] Migrate all usages of `NativeMethods` to an interface to fix this.
131
+ TextInputState.focusTextInput(this);
54
132
  }
55
133
 
56
- measure(callback: MeasureOnSuccessCallback): void {
57
- throw new TypeError('Unimplemented');
134
+ measure(callback: MeasureOnSuccessCallback) {
135
+ const node = getShadowNode(this);
136
+ if (node != null) {
137
+ nullthrows(getFabricUIManager()).measure(node, callback);
138
+ }
58
139
  }
59
140
 
60
- measureInWindow(callback: MeasureInWindowOnSuccessCallback): void {
61
- throw new TypeError('Unimplemented');
141
+ measureInWindow(callback: MeasureInWindowOnSuccessCallback) {
142
+ const node = getShadowNode(this);
143
+ if (node != null) {
144
+ nullthrows(getFabricUIManager()).measureInWindow(node, callback);
145
+ }
62
146
  }
63
147
 
64
148
  measureLayout(
65
149
  relativeToNativeNode: number | ElementRef<HostComponent<mixed>>,
66
150
  onSuccess: MeasureLayoutOnSuccessCallback,
67
151
  onFail?: () => void /* currently unused */,
68
- ): void {
69
- throw new TypeError('Unimplemented');
152
+ ) {
153
+ if (!(relativeToNativeNode instanceof ReadOnlyNode)) {
154
+ if (__DEV__) {
155
+ console.error(
156
+ 'Warning: ref.measureLayout must be called with a ref to a native component.',
157
+ );
158
+ }
159
+
160
+ return;
161
+ }
162
+
163
+ const toStateNode = getShadowNode(this);
164
+ const fromStateNode = getShadowNode(relativeToNativeNode);
165
+
166
+ if (toStateNode != null && fromStateNode != null) {
167
+ nullthrows(getFabricUIManager()).measureLayout(
168
+ toStateNode,
169
+ fromStateNode,
170
+ onFail != null ? onFail : noop,
171
+ onSuccess != null ? onSuccess : noop,
172
+ );
173
+ }
70
174
  }
71
175
 
72
176
  setNativeProps(nativeProps: {...}): void {
73
- throw new TypeError('Unimplemented');
177
+ if (__DEV__) {
178
+ warnForStyleProps(nativeProps, this._viewConfig.validAttributes);
179
+ }
180
+
181
+ const updatePayload = createAttributePayload(
182
+ nativeProps,
183
+ this._viewConfig.validAttributes,
184
+ );
185
+
186
+ const node = getShadowNode(this);
187
+
188
+ if (node != null && updatePayload != null) {
189
+ nullthrows(getFabricUIManager()).setNativeProps(node, updatePayload);
190
+ }
74
191
  }
75
192
  }
@@ -0,0 +1,72 @@
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
+ * @format
8
+ * @flow strict-local
9
+ */
10
+
11
+ // flowlint unsafe-getters-setters:off
12
+
13
+ import type ReadOnlyElement from './ReadOnlyElement';
14
+
15
+ import {getFabricUIManager} from '../../ReactNative/FabricUIManager';
16
+ import ReadOnlyNode, {getShadowNode} from './ReadOnlyNode';
17
+ import {getElementSibling} from './Utilities/Traversal';
18
+ import nullthrows from 'nullthrows';
19
+
20
+ export default class ReadOnlyCharacterData extends ReadOnlyNode {
21
+ get nextElementSibling(): ReadOnlyElement | null {
22
+ return getElementSibling(this, 'next');
23
+ }
24
+
25
+ get previousElementSibling(): ReadOnlyElement | null {
26
+ return getElementSibling(this, 'previous');
27
+ }
28
+
29
+ get data(): string {
30
+ const shadowNode = getShadowNode(this);
31
+
32
+ if (shadowNode != null) {
33
+ return nullthrows(getFabricUIManager()).getTextContent(shadowNode);
34
+ }
35
+
36
+ return '';
37
+ }
38
+
39
+ get length(): number {
40
+ return this.data.length;
41
+ }
42
+
43
+ /**
44
+ * @override
45
+ */
46
+ get textContent(): string | null {
47
+ return this.data;
48
+ }
49
+
50
+ /**
51
+ * @override
52
+ */
53
+ get nodeValue(): string {
54
+ return this.data;
55
+ }
56
+
57
+ substringData(offset: number, count: number): string {
58
+ const data = this.data;
59
+ if (offset < 0) {
60
+ throw new TypeError(
61
+ `Failed to execute 'substringData' on 'CharacterData': The offset ${offset} is negative.`,
62
+ );
63
+ }
64
+ if (offset > data.length) {
65
+ throw new TypeError(
66
+ `Failed to execute 'substringData' on 'CharacterData': The offset ${offset} is greater than the node's length (${data.length}).`,
67
+ );
68
+ }
69
+ let adjustedCount = count < 0 || count > data.length ? data.length : count;
70
+ return data.slice(offset, offset + adjustedCount);
71
+ }
72
+ }