@office-iss/react-native-win32 0.0.0-canary.284 → 0.0.0-canary.286

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 (473) hide show
  1. package/.flowconfig +1 -1
  2. package/CHANGELOG.json +55 -1
  3. package/CHANGELOG.md +28 -8
  4. package/IntegrationTests/LayoutEventsTest.js +16 -11
  5. package/Libraries/ActionSheetIOS/ActionSheetIOS.js +38 -17
  6. package/Libraries/ActionSheetIOS/NativeActionSheetManager.js +2 -2
  7. package/Libraries/Alert/Alert.js +32 -9
  8. package/Libraries/Alert/Alert.win32.js +31 -8
  9. package/Libraries/Alert/NativeAlertManager.js +2 -2
  10. package/Libraries/Animated/NativeAnimatedModule.js +2 -2
  11. package/Libraries/Animated/NativeAnimatedTurboModule.js +2 -2
  12. package/Libraries/Animated/animations/Animation.js +1 -4
  13. package/Libraries/Animated/createAnimatedComponent.js +3 -3
  14. package/Libraries/Animated/nodes/AnimatedObject.js +1 -0
  15. package/Libraries/Animated/useAnimatedProps.js +4 -294
  16. package/Libraries/AppState/AppState.js +24 -7
  17. package/Libraries/AppState/NativeAppState.js +2 -2
  18. package/Libraries/BatchedBridge/MessageQueue.js +3 -2
  19. package/Libraries/BatchedBridge/NativeModules.js +2 -1
  20. package/Libraries/Blob/Blob.js +1 -1
  21. package/Libraries/Blob/FileReader.js +8 -174
  22. package/Libraries/Blob/FileReader_new.js +231 -0
  23. package/Libraries/Blob/FileReader_old.js +186 -0
  24. package/Libraries/Blob/NativeBlobModule.js +2 -2
  25. package/Libraries/Blob/NativeFileReaderModule.js +2 -2
  26. package/Libraries/Blob/URL.js +1 -1
  27. package/Libraries/Blob/URLSearchParams.js +9 -10
  28. package/Libraries/BugReporting/NativeBugReporting.js +2 -2
  29. package/Libraries/Components/AccessibilityInfo/NativeAccessibilityInfo.js +2 -2
  30. package/Libraries/Components/AccessibilityInfo/NativeAccessibilityInfoWin32.js +2 -2
  31. package/Libraries/Components/AccessibilityInfo/NativeAccessibilityManager.js +2 -2
  32. package/Libraries/Components/ActivityIndicator/ActivityIndicatorViewNativeComponent.js +2 -2
  33. package/Libraries/Components/Button.js +3 -3
  34. package/Libraries/Components/Button.win32.js +3 -6
  35. package/Libraries/Components/Clipboard/NativeClipboard.js +2 -2
  36. package/Libraries/Components/DrawerAndroid/AndroidDrawerLayoutNativeComponent.js +2 -2
  37. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.js +2 -1
  38. package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +14 -18
  39. package/Libraries/Components/Keyboard/NativeKeyboardObserver.js +2 -2
  40. package/Libraries/Components/LayoutConformance/LayoutConformance.js +1 -1
  41. package/Libraries/Components/Pressable/Pressable.js +9 -9
  42. package/Libraries/Components/Pressable/Pressable.win32.js +9 -9
  43. package/Libraries/Components/Pressable/useAndroidRippleForView.js +7 -7
  44. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.js +7 -1
  45. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidNativeComponent.js +2 -2
  46. package/Libraries/Components/RefreshControl/AndroidSwipeRefreshLayoutNativeComponent.js +2 -2
  47. package/Libraries/Components/RefreshControl/PullToRefreshViewNativeComponent.js +2 -2
  48. package/Libraries/Components/RefreshControl/RefreshControl.js +1 -1
  49. package/Libraries/Components/SafeAreaView/RCTSafeAreaViewNativeComponent.js +2 -2
  50. package/Libraries/Components/ScrollView/AndroidHorizontalScrollContentViewNativeComponent.js +2 -2
  51. package/Libraries/Components/ScrollView/ScrollView.js +74 -59
  52. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +5 -5
  53. package/Libraries/Components/ScrollView/ScrollViewNativeComponentType.js +5 -2
  54. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +3 -3
  55. package/Libraries/Components/Sound/NativeSoundManager.js +2 -2
  56. package/Libraries/Components/StatusBar/NativeStatusBarManagerAndroid.js +2 -2
  57. package/Libraries/Components/StatusBar/NativeStatusBarManagerIOS.js +2 -2
  58. package/Libraries/Components/Switch/AndroidSwitchNativeComponent.js +2 -2
  59. package/Libraries/Components/Switch/Switch.js +2 -2
  60. package/Libraries/Components/Switch/SwitchNativeComponent.js +2 -2
  61. package/Libraries/Components/TextInput/InputAccessoryView.js +4 -2
  62. package/Libraries/Components/TextInput/RCTInputAccessoryViewNativeComponent.js +2 -2
  63. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +4 -2
  64. package/Libraries/Components/TextInput/TextInput.flow.js +106 -94
  65. package/Libraries/Components/TextInput/TextInput.js +112 -103
  66. package/Libraries/Components/TextInput/TextInput.win32.js +114 -105
  67. package/Libraries/Components/TextInput/TextInputState.js +4 -2
  68. package/Libraries/Components/TextInput/TextInputState.win32.js +4 -2
  69. package/Libraries/Components/ToastAndroid/NativeToastAndroid.js +2 -2
  70. package/Libraries/Components/ToastAndroid/ToastAndroid.android.js +1 -1
  71. package/Libraries/Components/ToastAndroid/ToastAndroid.js +1 -1
  72. package/Libraries/Components/ToastAndroid/ToastAndroid.win32.js +1 -1
  73. package/Libraries/Components/Touchable/BoundingDimensions.js +1 -1
  74. package/Libraries/Components/Touchable/PooledClass.js +1 -1
  75. package/Libraries/Components/Touchable/Position.js +1 -1
  76. package/Libraries/Components/Touchable/Touchable.js +16 -16
  77. package/Libraries/Components/Touchable/Touchable.win32.js +16 -16
  78. package/Libraries/Components/Touchable/TouchableBounce.js +1 -1
  79. package/Libraries/Components/Touchable/TouchableHighlight.js +1 -1
  80. package/Libraries/Components/Touchable/TouchableNativeFeedback.js +3 -3
  81. package/Libraries/Components/Touchable/TouchableNativeFeedback.win32.js +1 -1
  82. package/Libraries/Components/Touchable/TouchableOpacity.js +1 -1
  83. package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +9 -9
  84. package/Libraries/Components/UnimplementedViews/UnimplementedNativeViewNativeComponent.js +2 -2
  85. package/Libraries/Components/UnimplementedViews/UnimplementedView.js +2 -2
  86. package/Libraries/Components/View/ReactNativeStyleAttributes.js +17 -3
  87. package/Libraries/Components/View/ReactNativeViewAttributes.js +1 -1
  88. package/Libraries/Components/View/ReactNativeViewAttributes.win32.js +1 -1
  89. package/Libraries/Components/View/View.js +1 -1
  90. package/Libraries/Components/View/View.win32.js +1 -1
  91. package/Libraries/Components/View/ViewAccessibility.js +243 -3
  92. package/Libraries/Components/View/ViewAccessibility.win32.js +243 -3
  93. package/Libraries/Components/View/ViewPropTypes.d.ts +14 -14
  94. package/Libraries/Components/View/ViewPropTypes.js +35 -226
  95. package/Libraries/Components/View/ViewPropTypes.win32.js +37 -229
  96. package/Libraries/Core/Devtools/getDevServer.js +1 -3
  97. package/Libraries/Core/Devtools/loadBundleFromServer.js +4 -2
  98. package/Libraries/Core/Devtools/loadBundleFromServer.win32.js +4 -2
  99. package/Libraries/Core/Devtools/openFileInEditor.js +2 -4
  100. package/Libraries/Core/Devtools/openURLInBrowser.js +5 -4
  101. package/Libraries/Core/Devtools/parseErrorStack.js +4 -4
  102. package/Libraries/Core/Devtools/parseHermesStack.js +2 -2
  103. package/Libraries/Core/Devtools/symbolicateStackTrace.js +6 -5
  104. package/Libraries/Core/ExceptionsManager.js +6 -4
  105. package/Libraries/Core/InitializeCore.js +7 -3
  106. package/Libraries/Core/NativeExceptionsManager.js +2 -2
  107. package/Libraries/Core/ReactFiberErrorDialog.js +2 -2
  108. package/Libraries/Core/ReactNativeVersion.js +1 -1
  109. package/Libraries/Core/ReactNativeVersionCheck.js +2 -4
  110. package/Libraries/Core/ReactNativeVersionCheck.win32.js +2 -4
  111. package/Libraries/Core/SegmentFetcher/NativeSegmentFetcher.js +2 -2
  112. package/Libraries/Core/Timers/JSTimers.js +7 -5
  113. package/Libraries/Core/Timers/NativeTiming.js +2 -2
  114. package/Libraries/Core/Timers/immediateShim.js +2 -9
  115. package/Libraries/Core/setUpBatchedBridge.js +13 -8
  116. package/Libraries/Core/setUpDeveloperTools.js +5 -36
  117. package/Libraries/Core/setUpErrorHandling.js +1 -6
  118. package/Libraries/Core/setUpReactDevTools.js +23 -5
  119. package/Libraries/Core/setUpReactRefresh.js +1 -1
  120. package/Libraries/Core/setUpTimers.js +17 -17
  121. package/Libraries/Core/setUpXHR.js +6 -3
  122. package/Libraries/Debugging/DebuggingOverlayNativeComponent.js +2 -2
  123. package/Libraries/EventEmitter/NativeEventEmitter.js +8 -2
  124. package/Libraries/EventEmitter/RCTDeviceEventEmitter.js +5 -4
  125. package/Libraries/EventEmitter/RCTEventEmitter.js +1 -1
  126. package/Libraries/EventEmitter/RCTNativeAppEventEmitter.js +1 -1
  127. package/Libraries/EventEmitter/__mocks__/NativeEventEmitter.js +3 -2
  128. package/Libraries/Events/CustomEvent.js +1 -1
  129. package/Libraries/Events/EventPolyfill.js +2 -2
  130. package/Libraries/Image/AssetRegistry.js +3 -1
  131. package/Libraries/Image/AssetSourceResolver.js +2 -2
  132. package/Libraries/Image/Image.android.js +3 -1
  133. package/Libraries/Image/Image.ios.js +1 -1
  134. package/Libraries/Image/Image.win32.js +1 -1
  135. package/Libraries/Image/ImageBackground.js +1 -1
  136. package/Libraries/Image/ImageProps.js +8 -5
  137. package/Libraries/Image/ImageViewNativeComponent.js +5 -6
  138. package/Libraries/Image/NativeImageEditor.js +2 -2
  139. package/Libraries/Image/NativeImageLoaderAndroid.js +2 -2
  140. package/Libraries/Image/NativeImageLoaderIOS.js +2 -2
  141. package/Libraries/Image/NativeImageLoaderWin32.js +2 -2
  142. package/Libraries/Image/NativeImageStoreAndroid.js +2 -2
  143. package/Libraries/Image/NativeImageStoreIOS.js +2 -2
  144. package/Libraries/Image/RelativeImageStub.js +3 -1
  145. package/Libraries/Image/nativeImageSource.js +1 -1
  146. package/Libraries/Image/resolveAssetSource.js +4 -2
  147. package/Libraries/Image/resolveAssetSource.win32.js +1 -1
  148. package/Libraries/Interaction/FrameRateLogger.js +1 -1
  149. package/Libraries/Interaction/InteractionManager.js +9 -7
  150. package/Libraries/Interaction/InteractionManagerStub.js +10 -2
  151. package/Libraries/Interaction/JSEventLoopWatchdog.js +2 -2
  152. package/Libraries/Interaction/NativeFrameRateLogger.js +2 -2
  153. package/Libraries/Interaction/PanResponder.js +34 -31
  154. package/Libraries/Interaction/TaskQueue.js +2 -2
  155. package/Libraries/Interaction/TouchHistoryMath.js +1 -1
  156. package/Libraries/LayoutAnimation/LayoutAnimation.js +20 -6
  157. package/Libraries/Linking/Linking.d.ts +3 -3
  158. package/Libraries/Linking/Linking.js +10 -8
  159. package/Libraries/Linking/NativeIntentAndroid.js +2 -2
  160. package/Libraries/Linking/NativeLinkingManager.js +2 -2
  161. package/Libraries/Lists/FillRateHelper.js +4 -4
  162. package/Libraries/Lists/FlatList.js +14 -14
  163. package/Libraries/Lists/SectionList.js +3 -1
  164. package/Libraries/Lists/SectionListModern.js +3 -1
  165. package/Libraries/Lists/ViewabilityHelper.js +4 -3
  166. package/Libraries/Lists/VirtualizeUtils.js +3 -5
  167. package/Libraries/Lists/VirtualizedList.js +6 -6
  168. package/Libraries/Lists/VirtualizedListContext.js +5 -5
  169. package/Libraries/Lists/VirtualizedSectionList.js +5 -3
  170. package/Libraries/Lists/__flowtests__/FlatList-flowtest.js +1 -1
  171. package/Libraries/LogBox/Data/LogBoxData.js +1 -1
  172. package/Libraries/LogBox/LogBox.js +9 -1
  173. package/Libraries/LogBox/UI/AnsiHighlight.js +7 -3
  174. package/Libraries/LogBox/UI/LogBoxButton.js +4 -2
  175. package/Libraries/LogBox/UI/LogBoxInspector.js +1 -1
  176. package/Libraries/LogBox/UI/LogBoxInspectorFooter.js +11 -3
  177. package/Libraries/LogBox/UI/LogBoxInspectorFooterButton.js +2 -0
  178. package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +8 -2
  179. package/Libraries/LogBox/UI/LogBoxInspectorHeader.win32.js +8 -2
  180. package/Libraries/LogBox/UI/LogBoxInspectorHeaderButton.js +2 -0
  181. package/Libraries/LogBox/UI/LogBoxInspectorMessageHeader.js +4 -2
  182. package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.js +3 -1
  183. package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.win32.js +3 -1
  184. package/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.js +2 -2
  185. package/Libraries/LogBox/UI/LogBoxInspectorStackFrame.js +5 -3
  186. package/Libraries/LogBox/UI/LogBoxInspectorStackFrame.win32.js +5 -3
  187. package/Libraries/LogBox/UI/LogBoxNotification.js +6 -2
  188. package/Libraries/LogBox/UI/LogBoxNotificationCountBadge.js +3 -1
  189. package/Libraries/LogBox/UI/LogBoxNotificationDismissButton.js +2 -0
  190. package/Libraries/LogBox/UI/LogBoxNotificationMessage.js +4 -1
  191. package/Libraries/Modal/Modal.js +77 -84
  192. package/Libraries/Modal/NativeModalManager.js +2 -2
  193. package/Libraries/Modal/RCTModalHostViewNativeComponent.js +2 -2
  194. package/Libraries/NativeComponent/BaseViewConfig.android.js +16 -6
  195. package/Libraries/NativeComponent/BaseViewConfig.ios.js +19 -9
  196. package/Libraries/NativeComponent/BaseViewConfig.win32.js +19 -9
  197. package/Libraries/NativeComponent/StaticViewConfigValidator.js +5 -1
  198. package/Libraries/NativeModules/specs/NativeDevMenu.js +2 -2
  199. package/Libraries/NativeModules/specs/NativeDevSettings.js +2 -2
  200. package/Libraries/NativeModules/specs/NativeDeviceEventManager.js +2 -2
  201. package/Libraries/NativeModules/specs/NativeDialogManagerAndroid.js +2 -2
  202. package/Libraries/NativeModules/specs/NativeLogBox.js +2 -2
  203. package/Libraries/NativeModules/specs/NativeRedBox.js +2 -2
  204. package/Libraries/NativeModules/specs/NativeSourceCode.js +2 -2
  205. package/Libraries/Network/FormData.js +1 -1
  206. package/Libraries/Network/NativeNetworkingAndroid.js +2 -2
  207. package/Libraries/Network/NativeNetworkingIOS.js +2 -2
  208. package/Libraries/Network/RCTNetworking.android.js +1 -1
  209. package/Libraries/Network/RCTNetworking.ios.js +1 -1
  210. package/Libraries/Network/RCTNetworking.win32.js +1 -1
  211. package/Libraries/Network/XMLHttpRequest.js +10 -685
  212. package/Libraries/Network/XMLHttpRequest_new.js +791 -0
  213. package/Libraries/Network/XMLHttpRequest_old.js +698 -0
  214. package/Libraries/Network/convertRequestBody.js +4 -3
  215. package/Libraries/Network/fetch.js +4 -3
  216. package/Libraries/PermissionsAndroid/NativePermissionsAndroid.js +2 -2
  217. package/Libraries/PermissionsAndroid/PermissionsAndroid.js +63 -61
  218. package/Libraries/Pressability/Pressability.js +23 -23
  219. package/Libraries/Pressability/Pressability.win32.js +23 -23
  220. package/Libraries/PushNotificationIOS/NativePushNotificationManagerIOS.js +2 -2
  221. package/Libraries/PushNotificationIOS/PushNotificationIOS.js +119 -16
  222. package/Libraries/ReactNative/AppContainer-dev.js +4 -3
  223. package/Libraries/ReactNative/AppContainer.js +1 -1
  224. package/Libraries/ReactNative/AppRegistry.js +4 -4
  225. package/Libraries/ReactNative/BridgelessUIManager.js +1 -1
  226. package/Libraries/ReactNative/FabricUIManager.js +18 -8
  227. package/Libraries/ReactNative/I18nManager.js +1 -1
  228. package/Libraries/ReactNative/NativeHeadlessJsTaskSupport.js +2 -2
  229. package/Libraries/ReactNative/NativeI18nManager.js +2 -2
  230. package/Libraries/ReactNative/NativeUIManager.js +2 -2
  231. package/Libraries/ReactNative/PaperUIManager.js +5 -5
  232. package/Libraries/ReactNative/PaperUIManager.win32.js +5 -5
  233. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance.js +85 -30
  234. package/Libraries/ReactNative/ReactNativeFeatureFlags.js +1 -1
  235. package/Libraries/ReactNative/ReactNativeRuntimeDiagnostics.js +1 -1
  236. package/Libraries/ReactNative/RendererImplementation.js +9 -0
  237. package/Libraries/ReactNative/RootTag.js +1 -1
  238. package/Libraries/ReactNative/UIManager.d.ts +1 -0
  239. package/Libraries/ReactNative/UIManager.js +3 -3
  240. package/Libraries/ReactNative/UIManagerProperties.js +1 -1
  241. package/Libraries/ReactNative/getNativeComponentAttributes.js +10 -9
  242. package/Libraries/ReactNative/requireNativeComponent.js +2 -1
  243. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +15 -8
  244. package/Libraries/Renderer/shims/ReactNativeTypes.js +4 -1
  245. package/Libraries/Settings/NativeSettingsManager.js +2 -2
  246. package/Libraries/Settings/Settings.ios.js +1 -1
  247. package/Libraries/Settings/Settings.js +3 -3
  248. package/Libraries/Settings/Settings.win32.js +3 -3
  249. package/Libraries/Share/NativeShareModule.js +2 -2
  250. package/Libraries/Share/Share.js +11 -4
  251. package/Libraries/StyleSheet/PlatformColorValueTypes.ios.js +1 -1
  252. package/Libraries/StyleSheet/StyleSheet.js +3 -2
  253. package/Libraries/StyleSheet/StyleSheet.win32.js +4 -3
  254. package/Libraries/StyleSheet/__flowtests__/StyleSheet-flowtest.js +1 -1
  255. package/Libraries/StyleSheet/flattenStyle.js +1 -1
  256. package/Libraries/StyleSheet/normalizeColor.js +1 -1
  257. package/Libraries/StyleSheet/processAspectRatio.js +1 -1
  258. package/Libraries/StyleSheet/processBoxShadow.js +4 -0
  259. package/Libraries/StyleSheet/processColor.js +2 -2
  260. package/Libraries/StyleSheet/processColorArray.js +1 -1
  261. package/Libraries/StyleSheet/processFilter.js +4 -0
  262. package/Libraries/StyleSheet/processFontVariant.js +1 -1
  263. package/Libraries/StyleSheet/processTransform.js +1 -1
  264. package/Libraries/StyleSheet/setNormalizedColorAlpha.js +1 -1
  265. package/Libraries/Text/Text.js +16 -16
  266. package/Libraries/Text/Text.win32.js +16 -16
  267. package/Libraries/Text/TextAncestor.js +2 -2
  268. package/Libraries/Text/TextNativeComponent.js +2 -2
  269. package/Libraries/Text/TextNativeComponent.win32.js +2 -2
  270. package/Libraries/Text/TextProps.js +11 -11
  271. package/Libraries/Text/TextProps.win32.js +11 -11
  272. package/Libraries/TurboModule/samples/NativeSampleTurboModule.js +2 -2
  273. package/Libraries/Types/CodegenTypes.js +3 -3
  274. package/Libraries/Types/CoreEventTypes.js +103 -70
  275. package/Libraries/Types/CoreEventTypes.win32.js +115 -77
  276. package/Libraries/UTFSequence.js +2 -1
  277. package/Libraries/Utilities/Appearance.js +0 -8
  278. package/Libraries/Utilities/BackHandler.android.js +1 -1
  279. package/Libraries/Utilities/BackHandler.ios.js +5 -5
  280. package/Libraries/Utilities/BackHandler.win32.js +1 -1
  281. package/Libraries/Utilities/DevLoadingView.js +1 -1
  282. package/Libraries/Utilities/DevSettings.js +1 -1
  283. package/Libraries/Utilities/DeviceInfo.js +1 -1
  284. package/Libraries/Utilities/DeviceInfo.win32.js +1 -1
  285. package/Libraries/Utilities/FeatureDetection.js +2 -4
  286. package/Libraries/Utilities/FocusManager.win32.js +3 -3
  287. package/Libraries/Utilities/GlobalPerformanceLogger.js +1 -1
  288. package/Libraries/Utilities/HMRClient.js +5 -33
  289. package/Libraries/Utilities/HMRClientProdShim.js +1 -2
  290. package/Libraries/Utilities/NativeAppearance.js +2 -2
  291. package/Libraries/Utilities/NativeDevLoadingView.js +2 -2
  292. package/Libraries/Utilities/NativeDeviceInfo.js +2 -2
  293. package/Libraries/Utilities/NativePlatformConstantsAndroid.js +2 -2
  294. package/Libraries/Utilities/NativePlatformConstantsIOS.js +2 -2
  295. package/Libraries/Utilities/NativePlatformConstantsWin.js +2 -2
  296. package/Libraries/Utilities/Platform.android.js +2 -2
  297. package/Libraries/Utilities/Platform.ios.js +2 -2
  298. package/Libraries/Utilities/Platform.win32.js +2 -2
  299. package/Libraries/Utilities/{Platform.flow.win32.js → PlatformTypes.js} +1 -0
  300. package/Libraries/Utilities/PolyfillFunctions.js +3 -5
  301. package/Libraries/Utilities/RCTLog.js +1 -1
  302. package/Libraries/Utilities/ReactNativeTestTools.js +4 -5
  303. package/Libraries/Utilities/SceneTracker.js +1 -1
  304. package/Libraries/Utilities/__mocks__/GlobalPerformanceLogger.js +2 -2
  305. package/Libraries/Utilities/binaryToBase64.js +1 -1
  306. package/Libraries/Utilities/deepFreezeAndThrowOnMutationInDev.js +1 -1
  307. package/Libraries/Utilities/defineLazyObjectProperty.js +1 -1
  308. package/Libraries/Utilities/differ/deepDiffer.js +3 -3
  309. package/Libraries/Utilities/differ/insetsDiffer.js +3 -3
  310. package/Libraries/Utilities/differ/matricesDiffer.js +3 -6
  311. package/Libraries/Utilities/differ/pointsDiffer.js +3 -3
  312. package/Libraries/Utilities/differ/sizesDiffer.js +3 -3
  313. package/Libraries/Utilities/dismissKeyboard.js +3 -2
  314. package/Libraries/Utilities/infoLog.js +1 -1
  315. package/Libraries/Utilities/logError.js +1 -1
  316. package/Libraries/Utilities/mapWithSeparator.js +1 -1
  317. package/Libraries/Utilities/warnOnce.js +1 -1
  318. package/Libraries/Vibration/NativeVibration.js +2 -2
  319. package/Libraries/Vibration/Vibration.js +3 -3
  320. package/Libraries/WebSocket/NativeWebSocketModule.js +2 -2
  321. package/Libraries/WebSocket/WebSocket.js +8 -285
  322. package/Libraries/WebSocket/WebSocketEvent.js +1 -1
  323. package/Libraries/WebSocket/WebSocketInterceptor.js +39 -11
  324. package/Libraries/WebSocket/WebSocket_new.js +325 -0
  325. package/Libraries/WebSocket/WebSocket_old.js +297 -0
  326. package/Libraries/WebSocket/__mocks__/event-target-shim.js +1 -1
  327. package/Libraries/vendor/emitter/EventEmitter.js +21 -9
  328. package/index.js +138 -225
  329. package/index.win32.js +46 -39
  330. package/jest/mockScrollView.js +1 -1
  331. package/jest/setup.js +100 -67
  332. package/overrides.json +54 -65
  333. package/package.json +19 -19
  334. package/src/private/animated/createAnimatedPropsHook.js +360 -0
  335. package/src/private/animated/{useAnimatedPropsMemo.js → createAnimatedPropsMemoHook.js} +84 -32
  336. package/src/private/components/HScrollViewNativeComponents.js +1 -1
  337. package/src/private/components/SafeAreaView_INTERNAL_DO_NOT_USE.js +2 -2
  338. package/src/private/debugging/ReactDevToolsSettingsManager.android.js +1 -1
  339. package/src/private/debugging/ReactDevToolsSettingsManager.win32.js +1 -1
  340. package/src/private/devmenu/DevMenu.js +2 -2
  341. package/src/private/featureflags/ReactNativeFeatureFlags.js +39 -47
  342. package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +5 -7
  343. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +6 -10
  344. package/{Libraries/Inspector → src/private/inspector}/BorderBox.js +3 -3
  345. package/{Libraries/Inspector → src/private/inspector}/BoxInspector.js +9 -6
  346. package/{Libraries/Inspector → src/private/inspector}/ElementBox.js +9 -8
  347. package/{Libraries/Inspector → src/private/inspector}/ElementProperties.js +16 -12
  348. package/{Libraries/Inspector → src/private/inspector}/Inspector.js +18 -15
  349. package/{Libraries/Inspector → src/private/inspector}/InspectorOverlay.js +7 -7
  350. package/{Libraries/Inspector → src/private/inspector}/InspectorPanel.js +12 -10
  351. package/{Libraries/Inspector → src/private/inspector}/NetworkOverlay.js +37 -22
  352. package/{Libraries/Inspector → src/private/inspector}/PerformanceOverlay.js +6 -5
  353. package/{Libraries/Inspector → src/private/inspector}/ReactDevToolsOverlay.js +11 -10
  354. package/{Libraries/Inspector → src/private/inspector}/StyleInspector.js +6 -6
  355. package/{Libraries/Network → src/private/inspector}/XHRInterceptor.js +5 -2
  356. package/{Libraries/Inspector → src/private/inspector}/getInspectorDataForViewAtPoint.js +5 -3
  357. package/{Libraries/Inspector → src/private/inspector}/resolveBoxStyle.js +3 -2
  358. package/src/private/renderer/errorhandling/ErrorHandlers.js +5 -5
  359. package/src/private/setup/setUpDOM.js +7 -2
  360. package/src/private/{specs → specs_DEPRECATED}/modules/NativeDevMenu.js +0 -1
  361. package/src/private/{specs → specs_DEPRECATED}/modules/NativeDevSettings.js +0 -1
  362. package/src/private/{specs → specs_DEPRECATED}/modules/NativeExceptionsManager.js +1 -1
  363. package/src/private/{specs → specs_DEPRECATED}/modules/NativePermissionsAndroid.js +5 -4
  364. package/src/private/specs_DEPRECATED/modules/NativeUIManager.js +184 -0
  365. package/src/private/webapis/dom/events/CustomEvent.js +38 -0
  366. package/src/private/webapis/dom/events/Event.js +236 -0
  367. package/src/private/webapis/dom/events/EventHandlerAttributes.js +130 -0
  368. package/src/private/webapis/dom/events/EventTarget.js +436 -0
  369. package/src/private/webapis/dom/events/internals/EventInternals.js +120 -0
  370. package/src/private/webapis/dom/events/internals/EventTargetInternals.js +52 -0
  371. package/src/private/webapis/dom/nodes/ReactNativeDocument.js +120 -0
  372. package/src/private/webapis/dom/nodes/ReactNativeElement.js +48 -25
  373. package/src/private/webapis/dom/nodes/ReadOnlyCharacterData.js +6 -5
  374. package/src/private/webapis/dom/nodes/ReadOnlyElement.js +25 -25
  375. package/src/private/webapis/dom/nodes/ReadOnlyNode.js +55 -77
  376. package/src/private/webapis/dom/nodes/internals/NodeInternals.js +144 -0
  377. package/src/private/webapis/dom/nodes/internals/ReactNativeDocumentElementInstanceHandle.js +55 -0
  378. package/src/private/webapis/dom/nodes/internals/ReactNativeDocumentInstanceHandle.js +44 -0
  379. package/src/private/webapis/dom/nodes/specs/NativeDOM.js +305 -194
  380. package/src/private/webapis/dom/oldstylecollections/HTMLCollection.js +2 -2
  381. package/src/private/webapis/dom/oldstylecollections/NodeList.js +2 -2
  382. package/src/private/webapis/{dom/oldstylecollections → geometry}/DOMRectList.js +3 -3
  383. package/src/private/webapis/html/events/MessageEvent.js +56 -0
  384. package/src/private/webapis/intersectionobserver/IntersectionObserverEntry.js +1 -1
  385. package/src/private/webapis/intersectionobserver/internals/IntersectionObserverManager.js +12 -9
  386. package/src/private/webapis/mutationobserver/internals/MutationObserverManager.js +4 -6
  387. package/src/private/webapis/websockets/events/CloseEvent.js +52 -0
  388. package/src/private/webapis/xhr/events/ProgressEvent.js +52 -0
  389. package/src-win/Libraries/Components/View/ViewPropTypes.d.ts +14 -14
  390. package/types/index.d.ts +0 -5
  391. package/Libraries/Animated/AnimatedWeb.js +0 -44
  392. package/Libraries/Inspector/Inspector.win32.js +0 -212
  393. package/Libraries/Inspector/InspectorOverlay.win32.js +0 -68
  394. package/Libraries/JSInspector/InspectorAgent.js +0 -27
  395. package/Libraries/JSInspector/JSInspector.js +0 -33
  396. package/Libraries/JSInspector/NetworkAgent.js +0 -296
  397. package/Libraries/Utilities/DebugEnvironment.js +0 -16
  398. package/Libraries/Utilities/Platform.flow.js +0 -91
  399. package/Libraries/YellowBox/YellowBoxDeprecated.d.ts +0 -19
  400. package/Libraries/YellowBox/YellowBoxDeprecated.js +0 -76
  401. package/flow/react.js +0 -15
  402. package/src/private/specs/modules/NativeCPUTime.js +0 -24
  403. package/src/private/specs/modules/NativeFantom.js +0 -43
  404. package/src/private/specs/modules/NativeUIManager.js +0 -111
  405. /package/src/private/{specs → specs_DEPRECATED}/components/ActivityIndicatorViewNativeComponent.js +0 -0
  406. /package/src/private/{specs → specs_DEPRECATED}/components/AndroidDrawerLayoutNativeComponent.js +0 -0
  407. /package/src/private/{specs → specs_DEPRECATED}/components/AndroidHorizontalScrollContentViewNativeComponent.js +0 -0
  408. /package/src/private/{specs → specs_DEPRECATED}/components/AndroidSwipeRefreshLayoutNativeComponent.js +0 -0
  409. /package/src/private/{specs → specs_DEPRECATED}/components/AndroidSwitchNativeComponent.js +0 -0
  410. /package/src/private/{specs → specs_DEPRECATED}/components/DebuggingOverlayNativeComponent.js +0 -0
  411. /package/src/private/{specs → specs_DEPRECATED}/components/ProgressBarAndroidNativeComponent.js +0 -0
  412. /package/src/private/{specs → specs_DEPRECATED}/components/PullToRefreshViewNativeComponent.js +0 -0
  413. /package/src/private/{specs → specs_DEPRECATED}/components/RCTInputAccessoryViewNativeComponent.js +0 -0
  414. /package/src/private/{specs → specs_DEPRECATED}/components/RCTModalHostViewNativeComponent.js +0 -0
  415. /package/src/private/{specs → specs_DEPRECATED}/components/RCTSafeAreaViewNativeComponent.js +0 -0
  416. /package/src/private/{specs → specs_DEPRECATED}/components/SwitchNativeComponent.js +0 -0
  417. /package/src/private/{specs → specs_DEPRECATED}/components/UnimplementedNativeViewNativeComponent.js +0 -0
  418. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeAccessibilityInfo.js +0 -0
  419. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeAccessibilityInfoWin32.js +0 -0
  420. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeAccessibilityManager.js +0 -0
  421. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeActionSheetManager.js +0 -0
  422. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeAlertManager.js +0 -0
  423. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeAnimatedModule.js +0 -0
  424. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeAnimatedTurboModule.js +0 -0
  425. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeAppState.js +0 -0
  426. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeAppearance.js +0 -0
  427. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeBlobModule.js +0 -0
  428. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeBugReporting.js +0 -0
  429. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeClipboard.js +0 -0
  430. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeDevLoadingView.js +0 -0
  431. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeDeviceEventManager.js +0 -0
  432. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeDeviceInfo.js +0 -0
  433. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeDialogManagerAndroid.js +0 -0
  434. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeFileReaderModule.js +0 -0
  435. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeFrameRateLogger.js +0 -0
  436. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeHeadlessJsTaskSupport.js +0 -0
  437. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeI18nManager.js +0 -0
  438. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeImageEditor.js +0 -0
  439. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeImageLoaderAndroid.js +0 -0
  440. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeImageLoaderIOS.js +0 -0
  441. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeImageLoaderWin32.js +0 -0
  442. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeImageStoreAndroid.js +0 -0
  443. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeImageStoreIOS.js +0 -0
  444. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeIntentAndroid.js +0 -0
  445. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeJSCHeapCapture.js +0 -0
  446. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeKeyboardObserver.js +0 -0
  447. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeLinkingManager.js +0 -0
  448. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeLogBox.js +0 -0
  449. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeModalManager.js +0 -0
  450. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeNetworkingAndroid.js +0 -0
  451. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeNetworkingIOS.js +0 -0
  452. /package/src/private/{specs → specs_DEPRECATED}/modules/NativePlatformConstantsAndroid.js +0 -0
  453. /package/src/private/{specs → specs_DEPRECATED}/modules/NativePlatformConstantsIOS.js +0 -0
  454. /package/src/private/{specs → specs_DEPRECATED}/modules/NativePlatformConstantsWin.js +0 -0
  455. /package/src/private/{specs → specs_DEPRECATED}/modules/NativePushNotificationManagerIOS.js +0 -0
  456. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeReactDevToolsSettingsManager.js +0 -0
  457. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeRedBox.js +0 -0
  458. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeSampleTurboModule.js +0 -0
  459. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeSegmentFetcher.js +0 -0
  460. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeSettingsManager.js +0 -0
  461. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeShareModule.js +0 -0
  462. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeSoundManager.js +0 -0
  463. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeSourceCode.js +0 -0
  464. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeStatusBarManagerAndroid.js +0 -0
  465. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeStatusBarManagerIOS.js +0 -0
  466. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeTiming.js +0 -0
  467. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeToastAndroid.js +0 -0
  468. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeVibration.js +0 -0
  469. /package/src/private/{specs → specs_DEPRECATED}/modules/NativeWebSocketModule.js +0 -0
  470. /package/src/private/webapis/dom/nodes/{utilities → internals}/Traversal.js +0 -0
  471. /package/src/private/webapis/{dom/geometry → geometry}/DOMRect.js +0 -0
  472. /package/src/private/webapis/{dom/geometry → geometry}/DOMRectReadOnly.js +0 -0
  473. /package/src/private/webapis/{dom/oldstylecollections → utils}/ArrayLikeUtils.js +0 -0
@@ -0,0 +1,436 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ * @flow strict
8
+ * @format
9
+ */
10
+
11
+ /**
12
+ * This module implements the `EventTarget` and related interfaces from the DOM.
13
+ * See https://dom.spec.whatwg.org/#interface-eventtarget.
14
+ */
15
+
16
+ import type {EventPhase} from './Event';
17
+
18
+ import Event from './Event';
19
+ import {
20
+ getStopImmediatePropagationFlag,
21
+ getStopPropagationFlag,
22
+ setComposedPath,
23
+ setCurrentTarget,
24
+ setEventPhase,
25
+ setInPassiveListenerFlag,
26
+ setIsTrusted,
27
+ setStopImmediatePropagationFlag,
28
+ setStopPropagationFlag,
29
+ setTarget,
30
+ } from './internals/EventInternals';
31
+ import {
32
+ EVENT_TARGET_GET_THE_PARENT_KEY,
33
+ INTERNAL_DISPATCH_METHOD_KEY,
34
+ } from './internals/EventTargetInternals';
35
+
36
+ export type EventCallback = (event: Event) => void;
37
+ export type EventHandler = interface {
38
+ handleEvent(event: Event): void,
39
+ };
40
+ export type EventListener = EventCallback | EventHandler;
41
+
42
+ export type EventListenerOptions = $ReadOnly<{
43
+ capture?: boolean,
44
+ }>;
45
+
46
+ export type AddEventListenerOptions = $ReadOnly<{
47
+ ...EventListenerOptions,
48
+ passive?: boolean,
49
+ once?: boolean,
50
+ signal?: AbortSignal,
51
+ }>;
52
+
53
+ type EventListenerRegistration = {
54
+ +callback: EventListener,
55
+ +passive: boolean,
56
+ +once: boolean,
57
+ removed: boolean,
58
+ };
59
+
60
+ type ListenersMap = Map<string, Map<EventListener, EventListenerRegistration>>;
61
+
62
+ export default class EventTarget {
63
+ addEventListener(
64
+ type: string,
65
+ callback: EventListener | null,
66
+ optionsOrUseCapture?: AddEventListenerOptions | boolean = {},
67
+ ): void {
68
+ if (arguments.length < 2) {
69
+ throw new TypeError(
70
+ `Failed to execute 'addEventListener' on 'EventTarget': 2 arguments required, but only ${arguments.length} present.`,
71
+ );
72
+ }
73
+
74
+ if (callback == null) {
75
+ return;
76
+ }
77
+
78
+ validateCallback(callback, 'addEventListener');
79
+
80
+ const processedType = String(type);
81
+
82
+ let capture;
83
+ let passive;
84
+ let once;
85
+ let signal;
86
+
87
+ if (
88
+ optionsOrUseCapture != null &&
89
+ (typeof optionsOrUseCapture === 'object' ||
90
+ typeof optionsOrUseCapture === 'function')
91
+ ) {
92
+ capture = Boolean(optionsOrUseCapture.capture);
93
+ passive =
94
+ optionsOrUseCapture.passive == null
95
+ ? getDefaultPassiveValue(processedType, this)
96
+ : Boolean(optionsOrUseCapture.passive);
97
+ once = Boolean(optionsOrUseCapture.once);
98
+ signal = optionsOrUseCapture.signal;
99
+ if (signal !== undefined && !(signal instanceof AbortSignal)) {
100
+ throw new TypeError(
101
+ "Failed to execute 'addEventListener' on 'EventTarget': Failed to read the 'signal' property from 'AddEventListenerOptions': Failed to convert value to 'AbortSignal'.",
102
+ );
103
+ }
104
+ } else {
105
+ capture = Boolean(optionsOrUseCapture);
106
+ passive = false;
107
+ once = false;
108
+ signal = null;
109
+ }
110
+
111
+ if (signal?.aborted) {
112
+ return;
113
+ }
114
+
115
+ let listenersByType = getListenersForPhase(this, capture);
116
+ let listeners = listenersByType?.get(processedType);
117
+ if (listeners == null) {
118
+ if (listenersByType == null) {
119
+ listenersByType = new Map();
120
+ setListenersMap(this, capture, listenersByType);
121
+ }
122
+ listeners = new Map();
123
+ listenersByType.set(processedType, listeners);
124
+ } else if (listeners.has(callback)) {
125
+ return;
126
+ }
127
+
128
+ const listener: EventListenerRegistration = {
129
+ callback,
130
+ passive,
131
+ once,
132
+ removed: false,
133
+ };
134
+ listeners.set(callback, listener);
135
+
136
+ const nonNullListeners = listeners;
137
+
138
+ if (signal != null) {
139
+ signal.addEventListener(
140
+ 'abort',
141
+ () => {
142
+ listener.removed = true;
143
+ if (nonNullListeners.get(callback) === listener) {
144
+ nonNullListeners.delete(callback);
145
+ }
146
+ },
147
+ {
148
+ once: true,
149
+ },
150
+ );
151
+ }
152
+ }
153
+
154
+ removeEventListener(
155
+ type: string,
156
+ callback: EventListener,
157
+ optionsOrUseCapture?: EventListenerOptions | boolean = {},
158
+ ): void {
159
+ if (arguments.length < 2) {
160
+ throw new TypeError(
161
+ `Failed to execute 'removeEventListener' on 'EventTarget': 2 arguments required, but only ${arguments.length} present.`,
162
+ );
163
+ }
164
+
165
+ if (callback == null) {
166
+ return;
167
+ }
168
+
169
+ validateCallback(callback, 'removeEventListener');
170
+
171
+ const processedType = String(type);
172
+
173
+ const capture =
174
+ typeof optionsOrUseCapture === 'boolean'
175
+ ? optionsOrUseCapture
176
+ : Boolean(optionsOrUseCapture.capture);
177
+
178
+ const listenersByType = getListenersForPhase(this, capture);
179
+ const listeners = listenersByType?.get(processedType);
180
+ if (listeners == null) {
181
+ return;
182
+ }
183
+
184
+ const listener = listeners.get(callback);
185
+ if (listener != null) {
186
+ listener.removed = true;
187
+ listeners.delete(callback);
188
+ }
189
+ }
190
+
191
+ dispatchEvent(event: Event): boolean {
192
+ if (!(event instanceof Event)) {
193
+ throw new TypeError(
194
+ "Failed to execute 'dispatchEvent' on 'EventTarget': parameter 1 is not of type 'Event'.",
195
+ );
196
+ }
197
+
198
+ if (getEventDispatchFlag(event)) {
199
+ throw new Error(
200
+ "Failed to execute 'dispatchEvent' on 'EventTarget': The event is already being dispatched.",
201
+ );
202
+ }
203
+
204
+ setIsTrusted(event, false);
205
+
206
+ dispatch(this, event);
207
+
208
+ return !event.defaultPrevented;
209
+ }
210
+
211
+ /**
212
+ * This a "protected" method to be overridden by a subclass to allow event
213
+ * propagation.
214
+ *
215
+ * Should implement the "get the parent" algorithm
216
+ * (see https://dom.spec.whatwg.org/#get-the-parent).
217
+ */
218
+ // $FlowExpectedError[unsupported-syntax]
219
+ [EVENT_TARGET_GET_THE_PARENT_KEY](): EventTarget | null {
220
+ return null;
221
+ }
222
+
223
+ /**
224
+ * This is "protected" method to dispatch trusted events.
225
+ */
226
+ // $FlowExpectedError[unsupported-syntax]
227
+ [INTERNAL_DISPATCH_METHOD_KEY](event: Event): void {
228
+ dispatch(this, event);
229
+ }
230
+ }
231
+
232
+ function validateCallback(callback: EventListener, methodName: string): void {
233
+ if (typeof callback !== 'function' && typeof callback !== 'object') {
234
+ throw new TypeError(
235
+ `Failed to execute '${methodName}' on 'EventTarget': parameter 2 is not of type 'Object'.`,
236
+ );
237
+ }
238
+ }
239
+
240
+ function getDefaultPassiveValue(
241
+ type: string,
242
+ eventTarget: EventTarget,
243
+ ): boolean {
244
+ return false;
245
+ }
246
+
247
+ /**
248
+ * This internal version of `dispatchEvent` does not validate the input and
249
+ * does not reset the `isTrusted` flag, so it can be used for both trusted
250
+ * and not trusted events.
251
+ *
252
+ * Implements the "event dispatch" concept
253
+ * (see https://dom.spec.whatwg.org/#concept-event-dispatch).
254
+ */
255
+ function dispatch(eventTarget: EventTarget, event: Event): void {
256
+ setEventDispatchFlag(event, true);
257
+
258
+ const eventPath = getEventPath(eventTarget, event);
259
+ setComposedPath(event, eventPath);
260
+ setTarget(event, eventTarget);
261
+
262
+ for (let i = eventPath.length - 1; i >= 0; i--) {
263
+ if (getStopPropagationFlag(event)) {
264
+ break;
265
+ }
266
+
267
+ const target = eventPath[i];
268
+ setEventPhase(
269
+ event,
270
+ target === eventTarget ? Event.AT_TARGET : Event.CAPTURING_PHASE,
271
+ );
272
+ invoke(target, event, Event.CAPTURING_PHASE);
273
+ }
274
+
275
+ for (const target of eventPath) {
276
+ if (getStopPropagationFlag(event)) {
277
+ break;
278
+ }
279
+
280
+ // If the event does NOT bubble, we only dispatch the event to the
281
+ // target in the bubbling phase.
282
+ if (!event.bubbles && target !== eventTarget) {
283
+ break;
284
+ }
285
+
286
+ setEventPhase(
287
+ event,
288
+ target === eventTarget ? Event.AT_TARGET : Event.BUBBLING_PHASE,
289
+ );
290
+ invoke(target, event, Event.BUBBLING_PHASE);
291
+ }
292
+
293
+ setEventPhase(event, Event.NONE);
294
+ setCurrentTarget(event, null);
295
+ setComposedPath(event, []);
296
+
297
+ setEventDispatchFlag(event, false);
298
+ setStopImmediatePropagationFlag(event, false);
299
+ setStopPropagationFlag(event, false);
300
+ }
301
+
302
+ /**
303
+ * Builds the event path for an event about to be dispatched in this target
304
+ * (see https://dom.spec.whatwg.org/#event-path).
305
+ *
306
+ * The return value is also set as `composedPath` for the event.
307
+ */
308
+ function getEventPath(
309
+ eventTarget: EventTarget,
310
+ event: Event,
311
+ ): $ReadOnlyArray<EventTarget> {
312
+ const path = [];
313
+ let target: EventTarget | null = eventTarget;
314
+
315
+ while (target != null) {
316
+ path.push(target);
317
+ // $FlowExpectedError[prop-missing]
318
+ target = target[EVENT_TARGET_GET_THE_PARENT_KEY]();
319
+ }
320
+
321
+ return path;
322
+ }
323
+
324
+ /**
325
+ * Implements the event listener invoke concept
326
+ * (see https://dom.spec.whatwg.org/#concept-event-listener-invoke).
327
+ */
328
+ function invoke(
329
+ eventTarget: EventTarget,
330
+ event: Event,
331
+ eventPhase: EventPhase,
332
+ ) {
333
+ const listenersByType = getListenersForPhase(
334
+ eventTarget,
335
+ eventPhase === Event.CAPTURING_PHASE,
336
+ );
337
+
338
+ setCurrentTarget(event, eventTarget);
339
+
340
+ const maybeListeners = listenersByType?.get(event.type);
341
+ if (maybeListeners == null) {
342
+ return;
343
+ }
344
+
345
+ // This is a copy so listeners added during dispatch are NOT executed.
346
+ // Note that `maybeListeners.values()` is a live view of the map instead of an
347
+ // immutable copy.
348
+ const listeners = Array.from(maybeListeners.values());
349
+
350
+ setCurrentTarget(event, eventTarget);
351
+
352
+ for (const listener of listeners) {
353
+ if (listener.removed) {
354
+ continue;
355
+ }
356
+
357
+ if (listener.once) {
358
+ eventTarget.removeEventListener(
359
+ event.type,
360
+ listener.callback,
361
+ eventPhase === Event.CAPTURING_PHASE,
362
+ );
363
+ }
364
+
365
+ if (listener.passive) {
366
+ setInPassiveListenerFlag(event, true);
367
+ }
368
+
369
+ const currentEvent = global.event;
370
+ global.event = event;
371
+
372
+ const callback = listener.callback;
373
+
374
+ try {
375
+ if (typeof callback === 'function') {
376
+ callback.call(eventTarget, event);
377
+ // $FlowExpectedError[method-unbinding]
378
+ } else if (typeof callback.handleEvent === 'function') {
379
+ callback.handleEvent(event);
380
+ }
381
+ } catch (error) {
382
+ // TODO: replace with `reportError` when it's available.
383
+ console.error(error);
384
+ }
385
+
386
+ if (listener.passive) {
387
+ setInPassiveListenerFlag(event, false);
388
+ }
389
+
390
+ global.event = currentEvent;
391
+
392
+ if (getStopImmediatePropagationFlag(event)) {
393
+ break;
394
+ }
395
+ }
396
+ }
397
+
398
+ const CAPTURING_LISTENERS_KEY = Symbol('capturingListeners');
399
+ const BUBBLING_LISTENERS_KEY = Symbol('bubblingListeners');
400
+
401
+ function getListenersForPhase(
402
+ eventTarget: EventTarget,
403
+ isCapture: boolean,
404
+ ): ?ListenersMap {
405
+ return isCapture
406
+ ? // $FlowExpectedError[prop-missing]
407
+ eventTarget[CAPTURING_LISTENERS_KEY]
408
+ : // $FlowExpectedError[prop-missing]
409
+ eventTarget[BUBBLING_LISTENERS_KEY];
410
+ }
411
+
412
+ function setListenersMap(
413
+ eventTarget: EventTarget,
414
+ isCapture: boolean,
415
+ listenersMap: ListenersMap,
416
+ ): void {
417
+ if (isCapture) {
418
+ // $FlowExpectedError[prop-missing]
419
+ eventTarget[CAPTURING_LISTENERS_KEY] = listenersMap;
420
+ } else {
421
+ // $FlowExpectedError[prop-missing]
422
+ eventTarget[BUBBLING_LISTENERS_KEY] = listenersMap;
423
+ }
424
+ }
425
+
426
+ const EVENT_DISPATCH_FLAG = Symbol('Event.dispatch');
427
+
428
+ function getEventDispatchFlag(event: Event): boolean {
429
+ // $FlowExpectedError[prop-missing]
430
+ return event[EVENT_DISPATCH_FLAG];
431
+ }
432
+
433
+ function setEventDispatchFlag(event: Event, value: boolean): void {
434
+ // $FlowExpectedError[prop-missing]
435
+ event[EVENT_DISPATCH_FLAG] = value;
436
+ }
@@ -0,0 +1,120 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ * @flow strict
8
+ * @format
9
+ */
10
+
11
+ /**
12
+ * This method contains internal implementation details for the `Event` module
13
+ * and it is defined in a separate module to keep the exports in `Event` clean
14
+ * (only with public exports).
15
+ */
16
+
17
+ import type Event, {EventPhase} from '../Event';
18
+ import type EventTarget from '../EventTarget';
19
+
20
+ export const COMPOSED_PATH_KEY: symbol = Symbol('composedPath');
21
+ export const CURRENT_TARGET_KEY: symbol = Symbol('currentTarget');
22
+ export const EVENT_PHASE_KEY: symbol = Symbol('eventPhase');
23
+ export const IN_PASSIVE_LISTENER_FLAG_KEY: symbol = Symbol(
24
+ 'inPassiveListenerFlag',
25
+ );
26
+ export const IS_TRUSTED_KEY: symbol = Symbol('isTrusted');
27
+ export const STOP_IMMEDIATE_PROPAGATION_FLAG_KEY: symbol = Symbol(
28
+ 'stopPropagationFlag',
29
+ );
30
+ export const STOP_PROPAGATION_FLAG_KEY: symbol = Symbol('stopPropagationFlag');
31
+ export const TARGET_KEY: symbol = Symbol('target');
32
+
33
+ export function getCurrentTarget(event: Event): EventTarget | null {
34
+ // $FlowExpectedError[prop-missing]
35
+ return event[CURRENT_TARGET_KEY];
36
+ }
37
+
38
+ export function setCurrentTarget(
39
+ event: Event,
40
+ currentTarget: EventTarget | null,
41
+ ): void {
42
+ // $FlowExpectedError[prop-missing]
43
+ event[CURRENT_TARGET_KEY] = currentTarget;
44
+ }
45
+
46
+ export function getComposedPath(event: Event): $ReadOnlyArray<EventTarget> {
47
+ // $FlowExpectedError[prop-missing]
48
+ return event[COMPOSED_PATH_KEY];
49
+ }
50
+
51
+ export function setComposedPath(
52
+ event: Event,
53
+ composedPath: $ReadOnlyArray<EventTarget>,
54
+ ): void {
55
+ // $FlowExpectedError[prop-missing]
56
+ event[COMPOSED_PATH_KEY] = composedPath;
57
+ }
58
+
59
+ export function getEventPhase(event: Event): EventPhase {
60
+ // $FlowExpectedError[prop-missing]
61
+ return event[EVENT_PHASE_KEY];
62
+ }
63
+
64
+ export function setEventPhase(event: Event, eventPhase: EventPhase): void {
65
+ // $FlowExpectedError[prop-missing]
66
+ event[EVENT_PHASE_KEY] = eventPhase;
67
+ }
68
+
69
+ export function getInPassiveListenerFlag(event: Event): boolean {
70
+ // $FlowExpectedError[prop-missing]
71
+ return event[IN_PASSIVE_LISTENER_FLAG_KEY];
72
+ }
73
+
74
+ export function setInPassiveListenerFlag(event: Event, value: boolean): void {
75
+ // $FlowExpectedError[prop-missing]
76
+ event[IN_PASSIVE_LISTENER_FLAG_KEY] = value;
77
+ }
78
+
79
+ export function getIsTrusted(event: Event): boolean {
80
+ // $FlowExpectedError[prop-missing]
81
+ return event[IS_TRUSTED_KEY];
82
+ }
83
+
84
+ export function setIsTrusted(event: Event, isTrusted: boolean): void {
85
+ // $FlowExpectedError[prop-missing]
86
+ event[IS_TRUSTED_KEY] = isTrusted;
87
+ }
88
+
89
+ export function getStopImmediatePropagationFlag(event: Event): boolean {
90
+ // $FlowExpectedError[prop-missing]
91
+ return event[STOP_IMMEDIATE_PROPAGATION_FLAG_KEY];
92
+ }
93
+
94
+ export function setStopImmediatePropagationFlag(
95
+ event: Event,
96
+ value: boolean,
97
+ ): void {
98
+ // $FlowExpectedError[prop-missing]
99
+ event[STOP_IMMEDIATE_PROPAGATION_FLAG_KEY] = value;
100
+ }
101
+
102
+ export function getStopPropagationFlag(event: Event): boolean {
103
+ // $FlowExpectedError[prop-missing]
104
+ return event[STOP_PROPAGATION_FLAG_KEY];
105
+ }
106
+
107
+ export function setStopPropagationFlag(event: Event, value: boolean): void {
108
+ // $FlowExpectedError[prop-missing]
109
+ event[STOP_PROPAGATION_FLAG_KEY] = value;
110
+ }
111
+
112
+ export function getTarget(event: Event): EventTarget | null {
113
+ // $FlowExpectedError[prop-missing]
114
+ return event[TARGET_KEY];
115
+ }
116
+
117
+ export function setTarget(event: Event, target: EventTarget | null): void {
118
+ // $FlowExpectedError[prop-missing]
119
+ event[TARGET_KEY] = target;
120
+ }
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ * @flow strict
8
+ * @format
9
+ */
10
+
11
+ /**
12
+ * This method contains internal implementation details for the `EventTarget`
13
+ * module and it is defined in a separate module to keep the exports in
14
+ * the original module clean (only with public exports).
15
+ */
16
+
17
+ import type Event from '../Event';
18
+ import type EventTarget from '../EventTarget';
19
+
20
+ import {setIsTrusted} from './EventInternals';
21
+
22
+ /**
23
+ * Use this symbol as key for a method to implement the "get the parent"
24
+ * algorithm in an `EventTarget` subclass.
25
+ */
26
+ export const EVENT_TARGET_GET_THE_PARENT_KEY: symbol = Symbol(
27
+ 'EventTarget[get the parent]',
28
+ );
29
+
30
+ /**
31
+ * This is only exposed to implement the method in `EventTarget`.
32
+ * Do NOT use this directly (use the `dispatchTrustedEvent` method instead).
33
+ */
34
+ export const INTERNAL_DISPATCH_METHOD_KEY: symbol = Symbol(
35
+ 'EventTarget[dispatch]',
36
+ );
37
+
38
+ /**
39
+ * Dispatches a trusted event to the given event target.
40
+ *
41
+ * This should only be used by the runtime to dispatch native events to
42
+ * JavaScript.
43
+ */
44
+ export function dispatchTrustedEvent(
45
+ eventTarget: EventTarget,
46
+ event: Event,
47
+ ): void {
48
+ setIsTrusted(event, true);
49
+
50
+ // $FlowExpectedError[prop-missing]
51
+ return eventTarget[INTERNAL_DISPATCH_METHOD_KEY](event);
52
+ }