@office-iss/react-native-win32 0.79.1 → 0.80.0

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 (294) hide show
  1. package/.flowconfig +10 -3
  2. package/CHANGELOG.json +117 -24
  3. package/CHANGELOG.md +49 -14
  4. package/IntegrationTests/ImageCachePolicyTest.js +1 -1
  5. package/IntegrationTests/LayoutEventsTest.js +1 -4
  6. package/Libraries/Alert/Alert.d.ts +4 -1
  7. package/Libraries/Alert/Alert.js +3 -0
  8. package/Libraries/Alert/RCTAlertManager.js +17 -0
  9. package/Libraries/Animated/Animated.js.flow +1 -3
  10. package/Libraries/Animated/AnimatedEvent.js +4 -3
  11. package/Libraries/Animated/AnimatedExports.js +2 -2
  12. package/Libraries/Animated/AnimatedExports.js.flow +140 -0
  13. package/Libraries/Animated/AnimatedImplementation.js +2 -123
  14. package/Libraries/Animated/Easing.js +13 -15
  15. package/Libraries/Animated/animations/Animation.js +8 -4
  16. package/Libraries/Animated/components/AnimatedFlatList.js +7 -6
  17. package/Libraries/Animated/components/AnimatedScrollView.js +48 -42
  18. package/Libraries/Animated/components/AnimatedSectionList.js +11 -7
  19. package/Libraries/Animated/createAnimatedComponent.js +105 -57
  20. package/Libraries/Animated/nodes/AnimatedNode.js +4 -3
  21. package/Libraries/Animated/nodes/AnimatedProps.js +46 -26
  22. package/Libraries/Animated/nodes/AnimatedValue.js +16 -7
  23. package/Libraries/Animated/nodes/AnimatedValueXY.js +3 -1
  24. package/Libraries/AppState/AppState.js +7 -2
  25. package/Libraries/BatchedBridge/MessageQueue.js +2 -2
  26. package/Libraries/BatchedBridge/NativeModules.js +2 -0
  27. package/Libraries/Blob/BlobManager.js +1 -0
  28. package/Libraries/Blob/FileReader.js +219 -8
  29. package/Libraries/Blob/URL.js +37 -12
  30. package/Libraries/Blob/URLSearchParams.js +106 -31
  31. package/Libraries/Blob/URLSearchParams.js.flow +12 -7
  32. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +1 -1
  33. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.win32.js +1 -1
  34. package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.js +17 -0
  35. package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +1 -0
  36. package/Libraries/Components/Button.js +1 -1
  37. package/Libraries/Components/Button.win32.js +1 -1
  38. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +1 -3
  39. package/Libraries/{NewAppScreen/components/Colors.js → Components/DrawerAndroid/DrawerLayoutAndroid.ios.js} +6 -10
  40. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.js +6 -66
  41. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.js.flow +18 -0
  42. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroidFallback.js +71 -0
  43. package/Libraries/Components/Keyboard/Keyboard.js +5 -3
  44. package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +6 -3
  45. package/Libraries/Components/Pressable/Pressable.js +20 -4
  46. package/Libraries/Components/Pressable/Pressable.win32.js +20 -4
  47. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.js +25 -3
  48. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidTypes.js +29 -20
  49. package/Libraries/Components/RefreshControl/RefreshControl.js +1 -1
  50. package/Libraries/Components/ScrollView/ScrollView.d.ts +3 -3
  51. package/Libraries/Components/ScrollView/ScrollView.js +132 -122
  52. package/Libraries/Components/StaticRenderer.js +1 -1
  53. package/Libraries/Components/Switch/Switch.d.ts +3 -0
  54. package/Libraries/Components/Switch/Switch.js +8 -4
  55. package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +2 -1
  56. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +2 -4
  57. package/Libraries/Components/TextInput/Tests/TextInputTest.d.ts +2 -1
  58. package/Libraries/Components/TextInput/Tests/TextInputTest.js.map +1 -1
  59. package/Libraries/Components/TextInput/TextInput.d.ts +70 -33
  60. package/Libraries/Components/TextInput/TextInput.flow.js +100 -51
  61. package/Libraries/Components/TextInput/TextInput.flow.win32.js +1208 -0
  62. package/Libraries/Components/TextInput/TextInput.js +88 -1027
  63. package/Libraries/Components/TextInput/TextInput.win32.js +89 -1059
  64. package/Libraries/Components/TextInput/TextInputState.js +1 -1
  65. package/Libraries/Components/TextInput/TextInputState.win32.js +1 -1
  66. package/Libraries/{Modal/ModalInjection.js → Components/ToastAndroid/ToastAndroid.ios.js} +3 -5
  67. package/Libraries/Components/ToastAndroid/ToastAndroid.js +4 -32
  68. package/Libraries/Components/ToastAndroid/ToastAndroid.js.flow +109 -0
  69. package/Libraries/Components/ToastAndroid/ToastAndroid.win32.js +4 -32
  70. package/Libraries/Components/ToastAndroid/ToastAndroidFallback.js +45 -0
  71. package/Libraries/Components/Touchable/Tests/TouchableWin32Test.d.ts +2 -1
  72. package/Libraries/Components/Touchable/Tests/TouchableWin32Test.js.map +1 -1
  73. package/Libraries/Components/Touchable/Touchable.js +5 -5
  74. package/Libraries/Components/Touchable/Touchable.win32.js +5 -5
  75. package/Libraries/Components/Touchable/TouchableBounce.js +14 -7
  76. package/Libraries/Components/Touchable/TouchableHighlight.js +10 -7
  77. package/Libraries/Components/Touchable/TouchableNativeFeedback.js +6 -6
  78. package/Libraries/Components/Touchable/TouchableNativeFeedback.win32.js +6 -6
  79. package/Libraries/Components/Touchable/TouchableOpacity.js +13 -6
  80. package/Libraries/Components/View/View.js +18 -21
  81. package/Libraries/Components/View/View.win32.js +21 -24
  82. package/Libraries/Components/View/ViewAccessibility.js +25 -1
  83. package/Libraries/Components/View/ViewAccessibility.win32.js +9 -1
  84. package/Libraries/Components/View/ViewPropTypes.js +49 -3
  85. package/Libraries/Components/View/ViewPropTypes.win32.js +49 -3
  86. package/Libraries/Core/ReactNativeVersion.js +1 -1
  87. package/Libraries/Core/setUpReactDevTools.js +5 -5
  88. package/Libraries/Debugging/DebuggingOverlayRegistry.js +3 -3
  89. package/Libraries/EventEmitter/NativeEventEmitter.js +9 -4
  90. package/Libraries/Image/AssetSourceResolver.js +17 -4
  91. package/Libraries/Image/Image.d.ts +26 -10
  92. package/Libraries/Image/Image.js +17 -0
  93. package/Libraries/Image/Image.js.flow +5 -5
  94. package/Libraries/Image/ImageBackground.js +2 -0
  95. package/Libraries/Image/ImageInjection.js +1 -1
  96. package/Libraries/Image/ImageProps.js +22 -17
  97. package/Libraries/Image/ImageSource.js +3 -1
  98. package/Libraries/Image/ImageSourceUtils.js +4 -2
  99. package/Libraries/Image/ImageTypes.flow.js +1 -1
  100. package/Libraries/Image/Tests/ImageWin32Test.d.ts +2 -1
  101. package/Libraries/Image/Tests/ImageWin32Test.js.map +1 -1
  102. package/Libraries/Interaction/InteractionManager.d.ts +13 -0
  103. package/Libraries/Interaction/InteractionManager.js +1 -1
  104. package/Libraries/Interaction/PanResponder.js +3 -3
  105. package/Libraries/Interaction/TaskQueue.js +1 -0
  106. package/Libraries/LayoutAnimation/LayoutAnimation.js +2 -2
  107. package/Libraries/Linking/Linking.js +1 -1
  108. package/Libraries/Lists/FlatList.d.ts +2 -2
  109. package/Libraries/Lists/FlatList.js +8 -11
  110. package/Libraries/Lists/SectionList.js +39 -42
  111. package/Libraries/Lists/SectionListModern.js +25 -34
  112. package/Libraries/Lists/VirtualizedList.js +1 -0
  113. package/Libraries/Lists/VirtualizedSectionList.js +1 -0
  114. package/Libraries/LogBox/Data/LogBoxData.js +1 -1
  115. package/Libraries/LogBox/LogBoxNotificationContainer.js +1 -1
  116. package/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.win32.js +140 -0
  117. package/Libraries/Modal/Modal.js +33 -7
  118. package/Libraries/NativeComponent/BaseViewConfig.android.js +2 -0
  119. package/Libraries/NativeComponent/BaseViewConfig.ios.js +2 -0
  120. package/Libraries/NativeComponent/BaseViewConfig.js +17 -0
  121. package/Libraries/NativeComponent/BaseViewConfig.win32.js +1 -0
  122. package/Libraries/NativeComponent/PlatformBaseViewConfig.js +2 -2
  123. package/Libraries/NativeModules/specs/NativeDevMenu.js +2 -2
  124. package/Libraries/Network/RCTNetworking.android.js +1 -1
  125. package/Libraries/Network/RCTNetworking.ios.js +1 -1
  126. package/Libraries/Network/RCTNetworking.js +17 -0
  127. package/Libraries/Network/RCTNetworking.js.flow +1 -1
  128. package/Libraries/Network/RCTNetworking.win32.js +1 -1
  129. package/Libraries/Network/XMLHttpRequest.js +781 -10
  130. package/Libraries/Performance/Systrace.js +7 -7
  131. package/Libraries/Pressability/Pressability.js +1 -1
  132. package/Libraries/Pressability/Pressability.win32.js +1 -1
  133. package/Libraries/ReactNative/AppContainer-dev.js +5 -4
  134. package/Libraries/ReactNative/AppRegistry.flow.js +49 -0
  135. package/Libraries/ReactNative/AppRegistry.js +2 -322
  136. package/Libraries/ReactNative/AppRegistry.js.flow +23 -0
  137. package/Libraries/ReactNative/AppRegistryImpl.js +316 -0
  138. package/Libraries/ReactNative/FabricUIManager.js +10 -0
  139. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricHostComponent.js +2 -4
  140. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance.js +1 -4
  141. package/Libraries/ReactNative/RendererImplementation.js +10 -5
  142. package/Libraries/ReactNative/getNativeComponentAttributes.js +1 -0
  143. package/Libraries/ReactNative/renderApplication.js +9 -0
  144. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +3 -3
  145. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js.flow +51 -0
  146. package/Libraries/Renderer/implementations/ReactFabric-dev.js +4840 -4748
  147. package/Libraries/Renderer/implementations/ReactFabric-prod.js +4947 -4829
  148. package/Libraries/Renderer/implementations/ReactFabric-profiling.js +3998 -3888
  149. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +5005 -4948
  150. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +2744 -2652
  151. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +5020 -4933
  152. package/Libraries/Renderer/shims/ReactNativeTypes.js +3 -3
  153. package/Libraries/Settings/Settings.ios.js +1 -0
  154. package/Libraries/Settings/Settings.js +13 -19
  155. package/Libraries/Settings/Settings.win32.js +19 -20
  156. package/Libraries/Settings/SettingsFallback.js +33 -0
  157. package/Libraries/StyleSheet/PlatformColorValueTypes.js +15 -0
  158. package/Libraries/StyleSheet/PlatformColorValueTypesIOS.js +6 -0
  159. package/Libraries/StyleSheet/Rect.js +1 -0
  160. package/Libraries/StyleSheet/StyleSheet.js +31 -200
  161. package/Libraries/StyleSheet/StyleSheet.js.flow +188 -0
  162. package/Libraries/StyleSheet/{StyleSheet.win32.js → StyleSheetExports.js} +2 -151
  163. package/Libraries/StyleSheet/StyleSheetExports.js.flow +112 -0
  164. package/Libraries/StyleSheet/StyleSheetTypes.d.ts +1 -1
  165. package/Libraries/StyleSheet/StyleSheetTypes.js +130 -52
  166. package/Libraries/StyleSheet/flattenStyle.js +14 -4
  167. package/Libraries/StyleSheet/private/_TransformStyle.js +49 -21
  168. package/Libraries/StyleSheet/processBackgroundImage.js +670 -214
  169. package/Libraries/Text/Text.d.ts +2 -5
  170. package/Libraries/Text/Text.js +3 -3
  171. package/Libraries/Text/Text.win32.js +3 -3
  172. package/Libraries/Text/TextNativeComponent.js +0 -4
  173. package/Libraries/Text/TextNativeComponent.win32.js +0 -4
  174. package/Libraries/Text/TextProps.js +5 -33
  175. package/Libraries/Text/TextProps.win32.js +5 -30
  176. package/Libraries/Types/CodegenTypesNamespace.d.ts +45 -0
  177. package/Libraries/{Blob/__mocks__/BlobModule.js → Types/CodegenTypesNamespace.js} +4 -6
  178. package/Libraries/Types/CoreEventTypes.d.ts +6 -1
  179. package/Libraries/Types/CoreEventTypes.js +1 -1
  180. package/Libraries/Types/CoreEventTypes.win32.js +1 -1
  181. package/Libraries/Utilities/Appearance.js +2 -0
  182. package/Libraries/Utilities/BackHandler.js +17 -0
  183. package/Libraries/Utilities/DeviceInfo.js +2 -0
  184. package/Libraries/Utilities/Dimensions.js +1 -1
  185. package/Libraries/Utilities/Dimensions.win32.js +1 -1
  186. package/Libraries/Utilities/Platform.js +17 -0
  187. package/Libraries/Utilities/PlatformTypes.js +11 -3
  188. package/Libraries/Utilities/ReactNativeTestTools.js +2 -2
  189. package/Libraries/Utilities/codegenNativeCommands.d.ts +18 -0
  190. package/Libraries/Utilities/codegenNativeComponent.d.ts +26 -0
  191. package/Libraries/WebSocket/WebSocket.js +313 -8
  192. package/Libraries/vendor/core/ErrorUtils.js +28 -2
  193. package/Libraries/vendor/emitter/EventEmitter.js +6 -2
  194. package/flow/global.js +1 -0
  195. package/index.js +51 -331
  196. package/index.win32.js +71 -352
  197. package/interface.js +0 -4
  198. package/jest/resolver.js +31 -0
  199. package/overrides.json +45 -47
  200. package/package.json +25 -25
  201. package/src/private/animated/NativeAnimatedHelper.js +21 -8
  202. package/src/private/animated/NativeAnimatedHelper.win32.js +21 -8
  203. package/src/private/animated/createAnimatedPropsHook.js +11 -16
  204. package/src/private/animated/createAnimatedPropsMemoHook.js +1 -2
  205. package/src/private/components/{SafeAreaView_INTERNAL_DO_NOT_USE.js → safeareaview/SafeAreaView_INTERNAL_DO_NOT_USE.js} +6 -6
  206. package/src/private/components/{HScrollViewNativeComponents.js → scrollview/HScrollViewNativeComponents.js} +8 -8
  207. package/src/private/components/scrollview/VScrollViewNativeComponents.js +25 -0
  208. package/src/private/{devmenu → devsupport/devmenu}/DevMenu.js +1 -1
  209. package/src/private/{inspector → devsupport/devmenu/elementinspector}/BorderBox.js +3 -3
  210. package/src/private/{inspector → devsupport/devmenu/elementinspector}/BoxInspector.js +6 -5
  211. package/src/private/{inspector → devsupport/devmenu/elementinspector}/ElementBox.js +8 -6
  212. package/src/private/{inspector → devsupport/devmenu/elementinspector}/ElementProperties.js +11 -10
  213. package/src/private/{inspector → devsupport/devmenu/elementinspector}/Inspector.js +14 -12
  214. package/src/private/{inspector → devsupport/devmenu/elementinspector}/InspectorOverlay.js +5 -4
  215. package/src/private/{inspector → devsupport/devmenu/elementinspector}/InspectorPanel.js +9 -8
  216. package/src/private/{inspector → devsupport/devmenu/elementinspector}/NetworkOverlay.js +10 -9
  217. package/src/private/{inspector → devsupport/devmenu/elementinspector}/ReactDevToolsOverlay.js +7 -7
  218. package/src/private/{inspector → devsupport/devmenu/elementinspector}/StyleInspector.js +7 -6
  219. package/src/private/{inspector → devsupport/devmenu/elementinspector}/XHRInterceptor.js +2 -2
  220. package/src/private/{inspector → devsupport/devmenu/elementinspector}/getInspectorDataForViewAtPoint.js +4 -4
  221. package/src/private/{inspector → devsupport/devmenu/elementinspector}/resolveBoxStyle.js +1 -1
  222. package/src/private/{inspector → devsupport/devmenu/perfmonitor}/PerformanceOverlay.js +6 -5
  223. package/src/private/{specs_DEPRECATED/modules → devsupport/devmenu/specs}/NativeDevMenu.js +2 -2
  224. package/src/private/{debugging → devsupport/rndevtools}/ReactDevToolsSettingsManager.android.js +1 -1
  225. package/src/private/{debugging → devsupport/rndevtools}/ReactDevToolsSettingsManager.ios.js +1 -1
  226. package/src/private/{debugging → devsupport/rndevtools}/ReactDevToolsSettingsManager.win32.js +1 -1
  227. package/src/private/{debugging → devsupport/rndevtools}/setUpFuseboxReactDevToolsDispatcher.js +1 -1
  228. package/src/private/{fusebox → devsupport/rndevtools}/specs/NativeReactDevToolsRuntimeSettingsModule.js +2 -2
  229. package/src/private/{specs_DEPRECATED/modules → devsupport/rndevtools/specs}/NativeReactDevToolsSettingsManager.js +2 -2
  230. package/src/private/featureflags/ReactNativeFeatureFlags.js +82 -80
  231. package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +9 -1
  232. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +17 -13
  233. package/src/private/renderer/errorhandling/ErrorHandlers.js +2 -2
  234. package/src/private/specs_DEPRECATED/modules/NativeAnimatedModule.js +1 -1
  235. package/src/private/specs_DEPRECATED/modules/NativeAnimatedTurboModule.js +1 -1
  236. package/src/private/specs_DEPRECATED/modules/NativeSampleTurboModule.js +3 -0
  237. package/src/private/styles/composeStyles.js +12 -5
  238. package/src/private/types/HostComponent.js +1 -1
  239. package/src/private/types/HostInstance.js +67 -1
  240. package/src/private/webapis/dom/nodes/ReactNativeElement.js +2 -5
  241. package/src/private/webapis/dom/nodes/ReadOnlyNode.js +5 -18
  242. package/src/private/webapis/dom/nodes/internals/NodeInternals.js +6 -0
  243. package/src/private/webapis/performance/Performance.js +1 -3
  244. package/src/private/webapis/performance/PerformanceEntry.js +6 -1
  245. package/src/private/webapis/performance/internals/RawPerformanceEntry.js +3 -0
  246. package/src/private/webapis/performance/specs/NativePerformance.js +10 -1
  247. package/src/types/globals.d.ts +42 -0
  248. package/src-win/Libraries/Components/TextInput/Tests/TextInputTest.tsx +7 -7
  249. package/src-win/Libraries/Components/Touchable/Tests/TouchableWin32Test.tsx +3 -3
  250. package/src-win/Libraries/Image/Tests/ImageWin32Test.tsx +1 -1
  251. package/src-win/Libraries/Text/Text.d.ts +2 -5
  252. package/types/index.d.ts +6 -3
  253. package/types/public/ReactNativeTypes.d.ts +2 -2
  254. package/Libraries/BatchedBridge/__mocks__/MessageQueueTestConfig.js +0 -38
  255. package/Libraries/BatchedBridge/__mocks__/MessageQueueTestModule.js +0 -22
  256. package/Libraries/Blob/FileReader_new.js +0 -231
  257. package/Libraries/Blob/FileReader_old.js +0 -186
  258. package/Libraries/Blob/__mocks__/FileReaderModule.js +0 -20
  259. package/Libraries/Components/RefreshControl/__mocks__/RefreshControlMock.js +0 -32
  260. package/Libraries/Core/__mocks__/ErrorUtils.js +0 -33
  261. package/Libraries/Core/__mocks__/NativeExceptionsManager.js +0 -19
  262. package/Libraries/EventEmitter/__mocks__/NativeEventEmitter.js +0 -49
  263. package/Libraries/Events/CustomEvent.js +0 -32
  264. package/Libraries/Events/EventPolyfill.js +0 -239
  265. package/Libraries/Lists/__flowtests__/FlatList-flowtest.js +0 -118
  266. package/Libraries/Lists/__flowtests__/SectionList-flowtest.js +0 -134
  267. package/Libraries/Network/XMLHttpRequest_new.js +0 -794
  268. package/Libraries/Network/XMLHttpRequest_old.js +0 -701
  269. package/Libraries/NewAppScreen/components/DebugInstructions.js +0 -41
  270. package/Libraries/NewAppScreen/components/Header.js +0 -77
  271. package/Libraries/NewAppScreen/components/HermesBadge.js +0 -53
  272. package/Libraries/NewAppScreen/components/LearnMoreLinks.js +0 -148
  273. package/Libraries/NewAppScreen/components/ReloadInstructions.js +0 -39
  274. package/Libraries/NewAppScreen/components/logo.png +0 -0
  275. package/Libraries/NewAppScreen/index.js +0 -25
  276. package/Libraries/StyleSheet/__flowtests__/StyleSheet-flowtest.js +0 -58
  277. package/Libraries/Utilities/DeviceInfo.win32.js +0 -19
  278. package/Libraries/Utilities/__mocks__/BackHandler.js +0 -45
  279. package/Libraries/Utilities/__mocks__/GlobalPerformanceLogger.js +0 -16
  280. package/Libraries/Utilities/__mocks__/PixelRatio.js +0 -25
  281. package/Libraries/WebSocket/WebSocketEvent.js +0 -30
  282. package/Libraries/WebSocket/WebSocket_new.js +0 -325
  283. package/Libraries/WebSocket/WebSocket_old.js +0 -297
  284. package/Libraries/WebSocket/__mocks__/event-target-shim.js +0 -27
  285. package/Libraries/__flowtests__/ReactNativeTypes-flowtest.js +0 -30
  286. package/Libraries/vendor/emitter/__flowtests__/EventEmitter-flowtest.js +0 -81
  287. package/flow/jest.js +0 -1287
  288. package/jest/__tests__/setup-test.js +0 -18
  289. package/src/private/components/VScrollViewNativeComponents.js +0 -25
  290. package/src/private/utilities/ensureInstance.js +0 -21
  291. package/src/private/webapis/performance/specs/__mocks__/NativePerformanceMock.js +0 -267
  292. package/types/modules/LaunchScreen.d.ts +0 -18
  293. /package/src/private/{devmenu → devsupport/devmenu}/DevMenu.d.ts +0 -0
  294. /package/src/private/{debugging → devsupport/rndevtools}/FuseboxSessionObserver.js +0 -0
@@ -22,9 +22,15 @@ import invariant from 'invariant';
22
22
 
23
23
  export type AnimatedPropsAllowlist = $ReadOnly<{
24
24
  style?: ?AnimatedStyleAllowlist,
25
- [string]: true,
25
+ [key: string]: true | AnimatedStyleAllowlist,
26
26
  }>;
27
27
 
28
+ type TargetView = {
29
+ +instance: TargetViewInstance,
30
+ connectedViewTag: ?number,
31
+ };
32
+ type TargetViewInstance = React.ElementRef<React.ElementType>;
33
+
28
34
  function createAnimatedProps(
29
35
  inputProps: {[string]: mixed},
30
36
  allowlist: ?AnimatedPropsAllowlist,
@@ -75,11 +81,11 @@ function createAnimatedProps(
75
81
  }
76
82
 
77
83
  export default class AnimatedProps extends AnimatedNode {
78
- #animatedView: any = null;
79
84
  #callback: () => void;
80
85
  #nodeKeys: $ReadOnlyArray<string>;
81
86
  #nodes: $ReadOnlyArray<AnimatedNode>;
82
87
  #props: {[string]: mixed};
88
+ #target: ?TargetView = null;
83
89
 
84
90
  constructor(
85
91
  inputProps: {[string]: mixed},
@@ -140,6 +146,22 @@ export default class AnimatedProps extends AnimatedNode {
140
146
  return props;
141
147
  }
142
148
 
149
+ __getNativeAnimatedEventTuples(): $ReadOnlyArray<[string, AnimatedEvent]> {
150
+ const tuples = [];
151
+
152
+ const keys = Object.keys(this.#props);
153
+ for (let ii = 0, length = keys.length; ii < length; ii++) {
154
+ const key = keys[ii];
155
+ const value = this.#props[key];
156
+
157
+ if (value instanceof AnimatedEvent && value.__isNative) {
158
+ tuples.push([key, value]);
159
+ }
160
+ }
161
+
162
+ return tuples;
163
+ }
164
+
143
165
  __getAnimatedValue(): Object {
144
166
  const props: {[string]: mixed} = {};
145
167
 
@@ -164,10 +186,10 @@ export default class AnimatedProps extends AnimatedNode {
164
186
  }
165
187
 
166
188
  __detach(): void {
167
- if (this.__isNative && this.#animatedView) {
168
- this.__disconnectAnimatedView();
189
+ if (this.__isNative && this.#target != null) {
190
+ this.#disconnectAnimatedView(this.#target);
169
191
  }
170
- this.#animatedView = null;
192
+ this.#target = null;
171
193
 
172
194
  const nodes = this.#nodes;
173
195
  for (let ii = 0, length = nodes.length; ii < length; ii++) {
@@ -193,56 +215,54 @@ export default class AnimatedProps extends AnimatedNode {
193
215
  this.__isNative = true;
194
216
 
195
217
  // Since this does not call the super.__makeNative, we need to store the
196
- // supplied platformConfig here, before calling __connectAnimatedView
218
+ // supplied platformConfig here, before calling #connectAnimatedView
197
219
  // where it will be needed to traverse the graph of attached values.
198
220
  super.__setPlatformConfig(platformConfig);
199
221
 
200
- if (this.#animatedView) {
201
- this.__connectAnimatedView();
222
+ if (this.#target != null) {
223
+ this.#connectAnimatedView(this.#target);
202
224
  }
203
225
  }
204
226
  }
205
227
 
206
- setNativeView(animatedView: any): void {
207
- if (this.#animatedView === animatedView) {
228
+ setNativeView(instance: TargetViewInstance): void {
229
+ if (this.#target?.instance === instance) {
208
230
  return;
209
231
  }
210
- this.#animatedView = animatedView;
232
+ this.#target = {instance, connectedViewTag: null};
211
233
  if (this.__isNative) {
212
- this.__connectAnimatedView();
234
+ this.#connectAnimatedView(this.#target);
213
235
  }
214
236
  }
215
237
 
216
- __connectAnimatedView(): void {
238
+ #connectAnimatedView(target: TargetView): void {
217
239
  invariant(this.__isNative, 'Expected node to be marked as "native"');
218
- let nativeViewTag: ?number = findNodeHandle(this.#animatedView);
219
- if (nativeViewTag == null) {
240
+ let viewTag: ?number = findNodeHandle(target.instance);
241
+ if (viewTag == null) {
220
242
  if (process.env.NODE_ENV === 'test') {
221
- nativeViewTag = -1;
243
+ viewTag = -1;
222
244
  } else {
223
245
  throw new Error('Unable to locate attached view in the native tree');
224
246
  }
225
247
  }
226
248
  NativeAnimatedHelper.API.connectAnimatedNodeToView(
227
249
  this.__getNativeTag(),
228
- nativeViewTag,
250
+ viewTag,
229
251
  );
252
+ target.connectedViewTag = viewTag;
230
253
  }
231
254
 
232
- __disconnectAnimatedView(): void {
255
+ #disconnectAnimatedView(target: TargetView): void {
233
256
  invariant(this.__isNative, 'Expected node to be marked as "native"');
234
- let nativeViewTag: ?number = findNodeHandle(this.#animatedView);
235
- if (nativeViewTag == null) {
236
- if (process.env.NODE_ENV === 'test') {
237
- nativeViewTag = -1;
238
- } else {
239
- throw new Error('Unable to locate attached view in the native tree');
240
- }
257
+ const viewTag = target.connectedViewTag;
258
+ if (viewTag == null) {
259
+ return;
241
260
  }
242
261
  NativeAnimatedHelper.API.disconnectAnimatedNodeFromView(
243
262
  this.__getNativeTag(),
244
- nativeViewTag,
263
+ viewTag,
245
264
  );
265
+ target.connectedViewTag = null;
246
266
  }
247
267
 
248
268
  __restoreDefaultValues(): void {
@@ -10,7 +10,8 @@
10
10
 
11
11
  import type {EventSubscription} from '../../vendor/emitter/EventEmitter';
12
12
  import type {PlatformConfig} from '../AnimatedPlatformConfig';
13
- import type Animation, {EndCallback} from '../animations/Animation';
13
+ import type Animation from '../animations/Animation';
14
+ import type {EndCallback} from '../animations/Animation';
14
15
  import type {InterpolationConfigType} from './AnimatedInterpolation';
15
16
  import type AnimatedNode from './AnimatedNode';
16
17
  import type {AnimatedNodeConfig} from './AnimatedNode';
@@ -51,7 +52,6 @@ const NativeAnimatedAPI = NativeAnimatedHelper.API;
51
52
  * transform which can receive values from multiple parents.
52
53
  */
53
54
  export function flushValue(rootNode: AnimatedNode): void {
54
- // eslint-disable-next-line func-call-spacing
55
55
  const leaves = new Set<{update: () => void, ...}>();
56
56
  function findAnimatedStyles(node: AnimatedNode) {
57
57
  // $FlowFixMe[prop-missing]
@@ -85,8 +85,8 @@ function _executeAsAnimatedBatch(id: string, operation: () => void) {
85
85
  * See https://reactnative.dev/docs/animatedvalue
86
86
  */
87
87
  export default class AnimatedValue extends AnimatedWithChildren {
88
- #listenerCount: number = 0;
89
- #updateSubscription: ?EventSubscription = null;
88
+ #listenerCount: number;
89
+ #updateSubscription: ?EventSubscription;
90
90
 
91
91
  _value: number;
92
92
  _startingValue: number;
@@ -99,6 +99,10 @@ export default class AnimatedValue extends AnimatedWithChildren {
99
99
  if (typeof value !== 'number') {
100
100
  throw new Error('AnimatedValue: Attempting to set value to undefined');
101
101
  }
102
+
103
+ this.#listenerCount = 0;
104
+ this.#updateSubscription = null;
105
+
102
106
  this._startingValue = this._value = value;
103
107
  this._offset = 0;
104
108
  this._animation = null;
@@ -164,7 +168,7 @@ export default class AnimatedValue extends AnimatedWithChildren {
164
168
  'onAnimatedValueUpdate',
165
169
  data => {
166
170
  if (data.tag === nativeTag) {
167
- this.__onAnimatedValueUpdateReceived(data.value);
171
+ this.__onAnimatedValueUpdateReceived(data.value, data.offset);
168
172
  }
169
173
  },
170
174
  );
@@ -242,7 +246,9 @@ export default class AnimatedValue extends AnimatedWithChildren {
242
246
  this._offset += this._value;
243
247
  this._value = 0;
244
248
  if (this.__isNative) {
245
- NativeAnimatedAPI.extractAnimatedNodeOffset(this.__getNativeTag());
249
+ _executeAsAnimatedBatch(this.__getNativeTag().toString(), () =>
250
+ NativeAnimatedAPI.extractAnimatedNodeOffset(this.__getNativeTag()),
251
+ );
246
252
  }
247
253
  }
248
254
 
@@ -282,8 +288,11 @@ export default class AnimatedValue extends AnimatedWithChildren {
282
288
  }
283
289
  }
284
290
 
285
- __onAnimatedValueUpdateReceived(value: number): void {
291
+ __onAnimatedValueUpdateReceived(value: number, offset?: number): void {
286
292
  this._updateValue(value, false /*flush*/);
293
+ if (offset != null) {
294
+ this._offset = offset;
295
+ }
287
296
  }
288
297
 
289
298
  /**
@@ -214,7 +214,9 @@ export default class AnimatedValueXY extends AnimatedWithChildren {
214
214
  *
215
215
  * See https://reactnative.dev/docs/animatedvaluexy#gettranslatetransform
216
216
  */
217
- getTranslateTransform(): Array<{[key: string]: AnimatedValue, ...}> {
217
+ getTranslateTransform(): Array<
218
+ {translateX: AnimatedValue} | {translateY: AnimatedValue},
219
+ > {
218
220
  return [{translateX: this.x}, {translateY: this.y}];
219
221
  }
220
222
 
@@ -22,7 +22,12 @@ import NativeAppState from './NativeAppState';
22
22
  * - @platform android - on another Activity (even if it was launched by your app)
23
23
  * @platform ios - inactive - This is a state that occurs when transitioning between foreground & background, and during periods of inactivity such as entering the multitasking view, opening the Notification Center or in the event of an incoming call.
24
24
  */
25
- export type AppStateStatus = 'inactive' | 'background' | 'active';
25
+ export type AppStateStatus =
26
+ | 'inactive'
27
+ | 'background'
28
+ | 'active'
29
+ | 'extension'
30
+ | 'unknown';
26
31
 
27
32
  /**
28
33
  * change - This even is received when the app state has changed.
@@ -107,7 +112,7 @@ class AppStateImpl {
107
112
  */
108
113
  addEventListener<K: AppStateEvent>(
109
114
  type: K,
110
- handler: (...$ElementType<AppStateEventDefinitions, K>) => void,
115
+ handler: (...AppStateEventDefinitions[K]) => void,
111
116
  ): EventSubscription {
112
117
  const emitter = this._emitter;
113
118
  if (emitter == null) {
@@ -35,7 +35,7 @@ const PARAMS = 2;
35
35
  const MIN_TIME_BETWEEN_FLUSHES_MS = 5;
36
36
 
37
37
  // eslint-disable-next-line no-bitwise
38
- const TRACE_TAG_REACT_APPS = 1 << 17;
38
+ const TRACE_TAG_REACT = 1 << 13;
39
39
 
40
40
  const DEBUG_INFO_LIMIT = 32;
41
41
 
@@ -228,7 +228,7 @@ class MessageQueue {
228
228
  if (__DEV__) {
229
229
  global.nativeTraceBeginAsyncFlow &&
230
230
  global.nativeTraceBeginAsyncFlow(
231
- TRACE_TAG_REACT_APPS,
231
+ TRACE_TAG_REACT,
232
232
  'native',
233
233
  this._callID,
234
234
  );
@@ -65,6 +65,7 @@ function genModule(
65
65
  module[methodName] = genMethod(moduleID, methodID, methodType);
66
66
  });
67
67
 
68
+ // $FlowFixMe[unsafe-object-assign]
68
69
  Object.assign(module, constants);
69
70
 
70
71
  if (module.getConstants == null) {
@@ -173,6 +174,7 @@ function updateErrorWithErrorData(
173
174
  /* $FlowFixMe[class-object-subtyping] added when improving typing for this
174
175
  * parameters */
175
176
  // $FlowFixMe[incompatible-return]
177
+ // $FlowFixMe[unsafe-object-assign]
176
178
  return Object.assign(error, errorData || {});
177
179
  }
178
180
 
@@ -110,6 +110,7 @@ class BlobManager {
110
110
  static createFromOptions(options: BlobData): Blob {
111
111
  BlobRegistry.register(options.blobId);
112
112
  // $FlowFixMe[prop-missing]
113
+ // $FlowFixMe[unsafe-object-assign]
113
114
  return Object.assign(Object.create(Blob.prototype), {
114
115
  data:
115
116
  // Reuse the collector instance when creating from an existing blob.
@@ -8,13 +8,224 @@
8
8
  * @format
9
9
  */
10
10
 
11
- import typeof FileReader from './FileReader_old';
11
+ import type {EventCallback} from '../../src/private/webapis/dom/events/EventTarget';
12
+ import type Blob from './Blob';
12
13
 
13
- // Use a global instead of a flag from ReactNativeFeatureFlags because this will
14
- // be read before apps have a chance to set overrides.
15
- const useBuiltInEventTarget = global.RN$useBuiltInEventTarget?.();
14
+ import Event from '../../src/private/webapis/dom/events/Event';
15
+ import {
16
+ getEventHandlerAttribute,
17
+ setEventHandlerAttribute,
18
+ } from '../../src/private/webapis/dom/events/EventHandlerAttributes';
19
+ import EventTarget from '../../src/private/webapis/dom/events/EventTarget';
20
+ import NativeFileReaderModule from './NativeFileReaderModule';
21
+ import {toByteArray} from 'base64-js';
16
22
 
17
- export default (useBuiltInEventTarget
18
- ? // $FlowExpectedError[incompatible-cast]
19
- require('./FileReader_new').default
20
- : require('./FileReader_old').default) as FileReader;
23
+ type ReadyState =
24
+ | 0 // EMPTY
25
+ | 1 // LOADING
26
+ | 2; // DONE
27
+
28
+ type ReaderResult = string | ArrayBuffer;
29
+
30
+ const EMPTY = 0;
31
+ const LOADING = 1;
32
+ const DONE = 2;
33
+
34
+ class FileReader extends EventTarget {
35
+ static EMPTY: number = EMPTY;
36
+ static LOADING: number = LOADING;
37
+ static DONE: number = DONE;
38
+
39
+ EMPTY: number = EMPTY;
40
+ LOADING: number = LOADING;
41
+ DONE: number = DONE;
42
+
43
+ _readyState: ReadyState;
44
+ _error: ?Error;
45
+ _result: ?ReaderResult;
46
+ _aborted: boolean = false;
47
+
48
+ constructor() {
49
+ super();
50
+ this._reset();
51
+ }
52
+
53
+ _reset(): void {
54
+ this._readyState = EMPTY;
55
+ this._error = null;
56
+ this._result = null;
57
+ }
58
+
59
+ _setReadyState(newState: ReadyState) {
60
+ this._readyState = newState;
61
+ this.dispatchEvent(new Event('readystatechange'));
62
+ if (newState === DONE) {
63
+ if (this._aborted) {
64
+ this.dispatchEvent(new Event('abort'));
65
+ } else if (this._error) {
66
+ this.dispatchEvent(new Event('error'));
67
+ } else {
68
+ this.dispatchEvent(new Event('load'));
69
+ }
70
+ this.dispatchEvent(new Event('loadend'));
71
+ }
72
+ }
73
+
74
+ readAsArrayBuffer(blob: ?Blob): void {
75
+ this._aborted = false;
76
+
77
+ if (blob == null) {
78
+ throw new TypeError(
79
+ "Failed to execute 'readAsArrayBuffer' on 'FileReader': parameter 1 is not of type 'Blob'",
80
+ );
81
+ }
82
+
83
+ NativeFileReaderModule.readAsDataURL(blob.data).then(
84
+ (text: string) => {
85
+ if (this._aborted) {
86
+ return;
87
+ }
88
+
89
+ const base64 = text.split(',')[1];
90
+ const typedArray = toByteArray(base64);
91
+
92
+ this._result = typedArray.buffer;
93
+ this._setReadyState(DONE);
94
+ },
95
+ error => {
96
+ if (this._aborted) {
97
+ return;
98
+ }
99
+ this._error = error;
100
+ this._setReadyState(DONE);
101
+ },
102
+ );
103
+ }
104
+
105
+ readAsDataURL(blob: ?Blob): void {
106
+ this._aborted = false;
107
+
108
+ if (blob == null) {
109
+ throw new TypeError(
110
+ "Failed to execute 'readAsDataURL' on 'FileReader': parameter 1 is not of type 'Blob'",
111
+ );
112
+ }
113
+
114
+ NativeFileReaderModule.readAsDataURL(blob.data).then(
115
+ (text: string) => {
116
+ if (this._aborted) {
117
+ return;
118
+ }
119
+ this._result = text;
120
+ this._setReadyState(DONE);
121
+ },
122
+ error => {
123
+ if (this._aborted) {
124
+ return;
125
+ }
126
+ this._error = error;
127
+ this._setReadyState(DONE);
128
+ },
129
+ );
130
+ }
131
+
132
+ readAsText(blob: ?Blob, encoding: string = 'UTF-8'): void {
133
+ this._aborted = false;
134
+
135
+ if (blob == null) {
136
+ throw new TypeError(
137
+ "Failed to execute 'readAsText' on 'FileReader': parameter 1 is not of type 'Blob'",
138
+ );
139
+ }
140
+
141
+ NativeFileReaderModule.readAsText(blob.data, encoding).then(
142
+ (text: string) => {
143
+ if (this._aborted) {
144
+ return;
145
+ }
146
+ this._result = text;
147
+ this._setReadyState(DONE);
148
+ },
149
+ error => {
150
+ if (this._aborted) {
151
+ return;
152
+ }
153
+ this._error = error;
154
+ this._setReadyState(DONE);
155
+ },
156
+ );
157
+ }
158
+
159
+ abort() {
160
+ this._aborted = true;
161
+ // only call onreadystatechange if there is something to abort, as per spec
162
+ if (this._readyState !== EMPTY && this._readyState !== DONE) {
163
+ this._reset();
164
+ this._setReadyState(DONE);
165
+ }
166
+ // Reset again after, in case modified in handler
167
+ this._reset();
168
+ }
169
+
170
+ get readyState(): ReadyState {
171
+ return this._readyState;
172
+ }
173
+
174
+ get error(): ?Error {
175
+ return this._error;
176
+ }
177
+
178
+ get result(): ?ReaderResult {
179
+ return this._result;
180
+ }
181
+
182
+ get onabort(): EventCallback | null {
183
+ return getEventHandlerAttribute(this, 'abort');
184
+ }
185
+
186
+ set onabort(listener: ?EventCallback) {
187
+ setEventHandlerAttribute(this, 'abort', listener);
188
+ }
189
+
190
+ get onerror(): EventCallback | null {
191
+ return getEventHandlerAttribute(this, 'error');
192
+ }
193
+
194
+ set onerror(listener: ?EventCallback) {
195
+ setEventHandlerAttribute(this, 'error', listener);
196
+ }
197
+
198
+ get onload(): EventCallback | null {
199
+ return getEventHandlerAttribute(this, 'load');
200
+ }
201
+
202
+ set onload(listener: ?EventCallback) {
203
+ setEventHandlerAttribute(this, 'load', listener);
204
+ }
205
+
206
+ get onloadstart(): EventCallback | null {
207
+ return getEventHandlerAttribute(this, 'loadstart');
208
+ }
209
+
210
+ set onloadstart(listener: ?EventCallback) {
211
+ setEventHandlerAttribute(this, 'loadstart', listener);
212
+ }
213
+
214
+ get onloadend(): EventCallback | null {
215
+ return getEventHandlerAttribute(this, 'loadend');
216
+ }
217
+
218
+ set onloadend(listener: ?EventCallback) {
219
+ setEventHandlerAttribute(this, 'loadend', listener);
220
+ }
221
+
222
+ get onprogress(): EventCallback | null {
223
+ return getEventHandlerAttribute(this, 'progress');
224
+ }
225
+
226
+ set onprogress(listener: ?EventCallback) {
227
+ setEventHandlerAttribute(this, 'progress', listener);
228
+ }
229
+ }
230
+
231
+ export default FileReader;
@@ -81,7 +81,19 @@ export class URL {
81
81
  let baseUrl = null;
82
82
  if (!base || validateBaseUrl(url)) {
83
83
  this._url = url;
84
- if (!this._url.endsWith('/')) {
84
+ if (this._url.includes('#')) {
85
+ const split = this._url.split('#');
86
+ const beforeHash = split[0];
87
+ const website = beforeHash.split('://')[1];
88
+ if (!website.includes('/')) {
89
+ this._url = split.join('/#');
90
+ }
91
+ }
92
+
93
+ if (
94
+ !this._url.endsWith('/') &&
95
+ !(this._url.includes('?') || this._url.includes('#'))
96
+ ) {
85
97
  this._url += '/';
86
98
  }
87
99
  } else {
@@ -107,15 +119,21 @@ export class URL {
107
119
  }
108
120
 
109
121
  get hash(): string {
110
- throw new Error('URL.hash is not implemented');
122
+ const hashMatch = this._url.match(/#([^/]*)/);
123
+ return hashMatch ? `#${hashMatch[1]}` : '';
111
124
  }
112
125
 
113
126
  get host(): string {
114
- throw new Error('URL.host is not implemented');
127
+ const hostMatch = this._url.match(/^https?:\/\/(?:[^@]+@)?([^:/?#]+)/);
128
+ const portMatch = this._url.match(/:(\d+)(?=[/?#]|$)/);
129
+ return hostMatch
130
+ ? hostMatch[1] + (portMatch ? `:${portMatch[1]}` : '')
131
+ : '';
115
132
  }
116
133
 
117
134
  get hostname(): string {
118
- throw new Error('URL.hostname is not implemented');
135
+ const hostnameMatch = this._url.match(/^https?:\/\/(?:[^@]+@)?([^:/?#]+)/);
136
+ return hostnameMatch ? hostnameMatch[1] : '';
119
137
  }
120
138
 
121
139
  get href(): string {
@@ -123,32 +141,38 @@ export class URL {
123
141
  }
124
142
 
125
143
  get origin(): string {
126
- throw new Error('URL.origin is not implemented');
144
+ const matches = this._url.match(/^(https?:\/\/[^/]+)/);
145
+ return matches ? matches[1] : '';
127
146
  }
128
147
 
129
148
  get password(): string {
130
- throw new Error('URL.password is not implemented');
149
+ const passwordMatch = this._url.match(/https?:\/\/.*:(.*)@/);
150
+ return passwordMatch ? passwordMatch[1] : '';
131
151
  }
132
152
 
133
153
  get pathname(): string {
134
- throw new Error('URL.pathname not implemented');
154
+ const pathMatch = this._url.match(/https?:\/\/[^/]+(\/[^?#]*)?/);
155
+ return pathMatch ? pathMatch[1] || '/' : '/';
135
156
  }
136
157
 
137
158
  get port(): string {
138
- throw new Error('URL.port is not implemented');
159
+ const portMatch = this._url.match(/:(\d+)(?=[/?#]|$)/);
160
+ return portMatch ? portMatch[1] : '';
139
161
  }
140
162
 
141
163
  get protocol(): string {
142
- throw new Error('URL.protocol is not implemented');
164
+ const protocolMatch = this._url.match(/^([a-zA-Z][a-zA-Z\d+\-.]*):/);
165
+ return protocolMatch ? protocolMatch[1] + ':' : '';
143
166
  }
144
167
 
145
168
  get search(): string {
146
- throw new Error('URL.search is not implemented');
169
+ const searchMatch = this._url.match(/\?([^#]*)/);
170
+ return searchMatch ? `?${searchMatch[1]}` : '';
147
171
  }
148
172
 
149
173
  get searchParams(): URLSearchParams {
150
174
  if (this._searchParamsInstance == null) {
151
- this._searchParamsInstance = new URLSearchParams();
175
+ this._searchParamsInstance = new URLSearchParams(this.search);
152
176
  }
153
177
  return this._searchParamsInstance;
154
178
  }
@@ -168,6 +192,7 @@ export class URL {
168
192
  }
169
193
 
170
194
  get username(): string {
171
- throw new Error('URL.username is not implemented');
195
+ const usernameMatch = this._url.match(/^https?:\/\/([^:@]+)(?::[^@]*)?@/);
196
+ return usernameMatch ? usernameMatch[1] : '';
172
197
  }
173
198
  }