@office-iss/react-native-win32 0.74.4 → 0.75.0-preview.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (214) hide show
  1. package/.flowconfig +9 -4
  2. package/CHANGELOG.json +569 -51
  3. package/CHANGELOG.md +173 -30
  4. package/Libraries/Animated/AnimatedImplementation.js +2 -0
  5. package/Libraries/Animated/NativeAnimatedHelper.js +4 -0
  6. package/Libraries/Animated/NativeAnimatedHelper.win32.js +4 -0
  7. package/Libraries/Animated/createAnimatedComponent.js +10 -4
  8. package/Libraries/Animated/useAnimatedProps.js +56 -28
  9. package/Libraries/BatchedBridge/MessageQueue.js +1 -0
  10. package/Libraries/Components/Button.js +10 -5
  11. package/Libraries/Components/Button.win32.js +1 -0
  12. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +11 -2
  13. package/Libraries/Components/Pressable/Pressable.js +13 -6
  14. package/Libraries/Components/Pressable/Pressable.win32.js +13 -6
  15. package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +4 -0
  16. package/Libraries/Components/ScrollView/ScrollView.js +109 -29
  17. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +6 -0
  18. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +13 -1
  19. package/Libraries/Components/StatusBar/StatusBar.js +1 -21
  20. package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +0 -15
  21. package/Libraries/Components/TextInput/InputAccessoryView.js +10 -1
  22. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +0 -12
  23. package/Libraries/Components/TextInput/TextInput.d.ts +0 -19
  24. package/Libraries/Components/TextInput/TextInput.js +14 -70
  25. package/Libraries/Components/TextInput/TextInput.win32.js +15 -72
  26. package/Libraries/Components/Touchable/Touchable.js +2 -2
  27. package/Libraries/Components/Touchable/TouchableHighlight.d.ts +4 -10
  28. package/Libraries/Components/Touchable/TouchableHighlight.js +3 -1
  29. package/Libraries/Components/Touchable/TouchableOpacity.d.ts +4 -32
  30. package/Libraries/Components/Touchable/TouchableOpacity.js +3 -1
  31. package/Libraries/Components/Touchable/TouchableWithoutFeedback.d.ts +8 -0
  32. package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +117 -111
  33. package/Libraries/Components/View/ReactNativeStyleAttributes.js +6 -0
  34. package/Libraries/Components/View/ReactNativeViewAttributes.js +1 -0
  35. package/Libraries/Components/View/ReactNativeViewAttributes.win32.js +1 -0
  36. package/Libraries/Components/View/View.js +0 -11
  37. package/Libraries/Components/View/View.win32.js +0 -11
  38. package/Libraries/Components/View/ViewAccessibility.js +4 -4
  39. package/Libraries/Components/View/ViewAccessibility.win32.js +6 -6
  40. package/Libraries/Components/View/ViewPropTypes.d.ts +7 -49
  41. package/Libraries/Components/View/ViewPropTypes.js +7 -0
  42. package/Libraries/Components/View/ViewPropTypes.win32.js +7 -0
  43. package/Libraries/Core/Devtools/loadBundleFromServer.js +3 -3
  44. package/Libraries/Core/Devtools/loadBundleFromServer.win32.js +153 -0
  45. package/Libraries/Core/Devtools/parseErrorStack.js +5 -5
  46. package/Libraries/Core/Devtools/parseHermesStack.js +22 -16
  47. package/Libraries/Core/ErrorHandlers.js +116 -0
  48. package/Libraries/Core/ExceptionsManager.js +2 -2
  49. package/Libraries/Core/ReactNativeVersion.js +3 -3
  50. package/Libraries/Core/setUpDeveloperTools.js +3 -1
  51. package/Libraries/Core/setUpPerformance.js +6 -4
  52. package/Libraries/Core/setUpReactDevTools.js +70 -10
  53. package/Libraries/Core/setUpTimers.js +50 -31
  54. package/Libraries/Debugging/DebuggingOverlayRegistry.js +1 -1
  55. package/Libraries/Image/Image.android.js +23 -13
  56. package/Libraries/Image/Image.d.ts +14 -15
  57. package/Libraries/Image/Image.ios.js +21 -11
  58. package/Libraries/Image/Image.win32.js +5 -3
  59. package/Libraries/Image/ImageProps.js +16 -5
  60. package/Libraries/Image/ImageTypes.flow.js +7 -2
  61. package/Libraries/Image/ImageUtils.js +1 -0
  62. package/Libraries/Image/ImageViewNativeComponent.js +2 -1
  63. package/Libraries/Inspector/ElementBox.js +6 -3
  64. package/Libraries/Inspector/ElementProperties.js +1 -1
  65. package/Libraries/Interaction/TouchHistoryMath.js +4 -4
  66. package/Libraries/IntersectionObserver/IntersectionObserverManager.js +6 -26
  67. package/Libraries/JSInspector/NetworkAgent.js +1 -1
  68. package/Libraries/LogBox/Data/LogBoxData.js +39 -29
  69. package/Libraries/LogBox/Data/LogBoxLog.js +114 -2
  70. package/Libraries/LogBox/Data/parseLogBoxLog.js +168 -53
  71. package/Libraries/LogBox/LogBox.js +29 -12
  72. package/Libraries/LogBox/LogBoxNotificationContainer.js +4 -0
  73. package/Libraries/LogBox/UI/LogBoxInspector.js +8 -70
  74. package/Libraries/LogBox/UI/LogBoxInspectorBody.js +87 -0
  75. package/Libraries/LogBox/UI/LogBoxInspectorFooter.js +6 -42
  76. package/Libraries/LogBox/UI/LogBoxInspectorFooterButton.js +58 -0
  77. package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +5 -66
  78. package/Libraries/LogBox/UI/LogBoxInspectorHeader.win32.js +8 -52
  79. package/Libraries/LogBox/UI/LogBoxInspectorHeaderButton.js +76 -0
  80. package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.js +8 -5
  81. package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.win32.js +8 -5
  82. package/Libraries/LogBox/UI/LogBoxNotification.js +13 -152
  83. package/Libraries/LogBox/UI/LogBoxNotificationCountBadge.js +63 -0
  84. package/Libraries/LogBox/UI/LogBoxNotificationDismissButton.js +67 -0
  85. package/Libraries/LogBox/UI/LogBoxNotificationMessage.js +57 -0
  86. package/Libraries/NativeComponent/BaseViewConfig.android.js +5 -0
  87. package/Libraries/NativeComponent/BaseViewConfig.ios.js +5 -0
  88. package/Libraries/NativeComponent/BaseViewConfig.win32.js +5 -0
  89. package/Libraries/NativeComponent/NativeComponentRegistry.js +12 -5
  90. package/Libraries/NativeComponent/StaticViewConfigValidator.js +3 -0
  91. package/Libraries/Network/XMLHttpRequest.js +5 -1
  92. package/Libraries/NewAppScreen/components/LearnMoreLinks.js +3 -3
  93. package/Libraries/Pressability/Pressability.js +3 -51
  94. package/Libraries/Pressability/Pressability.win32.js +3 -51
  95. package/Libraries/ReactNative/AppContainer-dev.js +3 -2
  96. package/Libraries/ReactNative/AppContainer-prod.js +2 -1
  97. package/Libraries/ReactNative/AppContainer.js +2 -0
  98. package/Libraries/ReactNative/AppRegistry.d.ts +7 -0
  99. package/Libraries/ReactNative/AppRegistry.js +10 -4
  100. package/Libraries/ReactNative/BridgelessUIManager.js +1 -21
  101. package/Libraries/ReactNative/FabricUIManager.js +0 -51
  102. package/Libraries/ReactNative/ReactFabricPublicInstance/warnForStyleProps.js +1 -0
  103. package/Libraries/ReactNative/RendererImplementation.js +20 -2
  104. package/Libraries/ReactNative/UIManager.d.ts +0 -21
  105. package/Libraries/ReactNative/UIManagerProperties.js +0 -3
  106. package/Libraries/ReactNative/__mocks__/FabricUIManager.js +5 -341
  107. package/Libraries/ReactNative/getNativeComponentAttributes.js +8 -8
  108. package/Libraries/ReactNative/renderApplication.js +3 -0
  109. package/Libraries/Renderer/implementations/ReactFabric-dev.js +15682 -27088
  110. package/Libraries/Renderer/implementations/ReactFabric-prod.js +5082 -4381
  111. package/Libraries/Renderer/implementations/ReactFabric-profiling.js +3480 -2571
  112. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +15943 -27543
  113. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +5303 -4606
  114. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +3450 -2572
  115. package/Libraries/Renderer/shims/ReactFabric.js +2 -2
  116. package/Libraries/Renderer/shims/ReactFeatureFlags.js +2 -2
  117. package/Libraries/Renderer/shims/ReactNative.js +2 -3
  118. package/Libraries/Renderer/shims/ReactNativeTypes.js +24 -3
  119. package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +2 -2
  120. package/Libraries/Renderer/shims/createReactNativeComponentClass.js +2 -2
  121. package/Libraries/Share/Share.d.ts +16 -10
  122. package/Libraries/Share/Share.js +14 -15
  123. package/Libraries/StyleSheet/StyleSheet.d.ts +1 -1
  124. package/Libraries/StyleSheet/StyleSheet.js +3 -10
  125. package/Libraries/StyleSheet/StyleSheet.win32.js +3 -10
  126. package/Libraries/StyleSheet/StyleSheetTypes.d.ts +21 -21
  127. package/Libraries/StyleSheet/StyleSheetTypes.js +24 -18
  128. package/Libraries/StyleSheet/flattenStyle.js +1 -0
  129. package/Libraries/StyleSheet/processFilter.js +132 -0
  130. package/Libraries/StyleSheet/processTransform.js +18 -3
  131. package/Libraries/Text/Text.js +151 -128
  132. package/Libraries/Text/Text.win32.js +163 -138
  133. package/Libraries/Text/TextNativeComponent.js +5 -4
  134. package/Libraries/Text/TextNativeComponent.win32.js +5 -4
  135. package/Libraries/Text/TextProps.js +6 -6
  136. package/Libraries/Text/TextProps.win32.js +6 -6
  137. package/Libraries/TurboModule/TurboModuleRegistry.js +2 -1
  138. package/Libraries/Types/CodegenTypes.js +3 -0
  139. package/Libraries/Utilities/{LoadingView.android.js → DevLoadingView.js} +33 -11
  140. package/Libraries/Utilities/Dimensions.js +1 -0
  141. package/Libraries/Utilities/Dimensions.win32.js +1 -0
  142. package/Libraries/Utilities/HMRClient.js +36 -8
  143. package/Libraries/Utilities/HMRClientProdShim.js +1 -0
  144. package/Libraries/Utilities/Platform.android.js +5 -5
  145. package/Libraries/Utilities/Platform.d.ts +1 -1
  146. package/Libraries/Utilities/Platform.flow.js +2 -2
  147. package/Libraries/Utilities/Platform.flow.win32.js +3 -3
  148. package/Libraries/Utilities/Platform.ios.js +1 -1
  149. package/Libraries/Utilities/Platform.win32.js +1 -1
  150. package/Libraries/Utilities/RCTLog.js +1 -0
  151. package/Libraries/Utilities/ReactNativeTestTools.js +12 -24
  152. package/Libraries/Utilities/verifyComponentAttributeEquivalence.js +11 -6
  153. package/Libraries/__tests__/ButtonWin32-test.js +7 -6
  154. package/Libraries/promiseRejectionTrackingOptions.js +1 -0
  155. package/jest/mockComponent.js +7 -0
  156. package/jest/renderer.js +25 -14
  157. package/jest/setup.js +19 -13
  158. package/jest.config.js +2 -1
  159. package/overrides.json +32 -31
  160. package/package.json +27 -25
  161. package/rn-get-polyfills.js +1 -0
  162. package/src/private/core/composeStyles.js +27 -0
  163. package/src/private/featureflags/ReactNativeFeatureFlags.js +93 -33
  164. package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +23 -4
  165. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +56 -0
  166. package/src/private/fusebox/setUpFuseboxReactDevToolsDispatcher.js +108 -0
  167. package/src/private/specs/modules/NativeBlobModule.js +4 -2
  168. package/src/private/specs/modules/NativeDevSettings.js +1 -0
  169. package/src/private/specs/modules/NativePlatformConstantsAndroid.js +1 -1
  170. package/src/private/specs/modules/NativePlatformConstantsIOS.js +1 -1
  171. package/src/private/specs/modules/NativePlatformConstantsWin.js +1 -1
  172. package/src/private/specs/modules/NativePushNotificationManagerIOS.js +0 -4
  173. package/src/private/specs/modules/NativeUIManager.js +0 -7
  174. package/src/private/webapis/dom/geometry/DOMRectReadOnly.js +24 -24
  175. package/src/private/webapis/dom/nodes/ReactNativeElement.js +11 -14
  176. package/src/private/webapis/dom/nodes/ReadOnlyCharacterData.js +2 -3
  177. package/src/private/webapis/dom/nodes/ReadOnlyElement.js +24 -54
  178. package/src/private/webapis/dom/nodes/ReadOnlyNode.js +5 -13
  179. package/src/private/webapis/dom/nodes/specs/NativeDOM.js +468 -0
  180. package/src/private/webapis/dom/nodes/specs/__mocks__/NativeDOMMock.js +413 -0
  181. package/src/private/webapis/dom/oldstylecollections/DOMRectList.js +4 -4
  182. package/src/private/webapis/dom/oldstylecollections/HTMLCollection.js +4 -4
  183. package/src/private/webapis/dom/oldstylecollections/NodeList.js +5 -5
  184. package/src/private/webapis/idlecallbacks/specs/NativeIdleCallbacks.js +34 -0
  185. package/src/private/webapis/microtasks/specs/NativeMicrotasks.js +21 -0
  186. package/src/private/webapis/performance/EventCounts.js +1 -1
  187. package/src/private/webapis/performance/MemoryInfo.js +9 -9
  188. package/src/private/webapis/performance/Performance.js +10 -56
  189. package/src/private/webapis/performance/PerformanceObserver.js +30 -22
  190. package/src/private/webapis/performance/RawPerformanceEntry.js +2 -7
  191. package/src/private/webapis/performance/ReactNativeStartupTiming.js +18 -18
  192. package/src/private/webapis/performance/UserTiming.js +63 -0
  193. package/src/private/webapis/performance/{NativePerformance.js → specs/NativePerformance.js} +3 -2
  194. package/src/private/webapis/performance/{NativePerformanceObserver.js → specs/NativePerformanceObserver.js} +2 -2
  195. package/src/private/webapis/performance/{__mocks__ → specs/__mocks__}/NativePerformance.js +1 -1
  196. package/src/private/webapis/performance/{__mocks__ → specs/__mocks__}/NativePerformanceObserver.js +3 -4
  197. package/src-win/Libraries/Components/View/ViewPropTypes.d.ts +7 -49
  198. package/types/modules/globals.d.ts +4 -0
  199. package/Libraries/Components/ScrollView/ScrollView.win32.js +0 -1915
  200. package/Libraries/NativeModules/specs/NativeAnimationsDebugModule.js +0 -13
  201. package/Libraries/Utilities/LoadingView.ios.js +0 -50
  202. package/Libraries/Utilities/LoadingView.js +0 -16
  203. package/jest/ReactNativeInternalFeatureFlagsMock.js +0 -13
  204. package/src/private/featureflags/NativeReactNativeFeatureFlags.js +0 -44
  205. package/src/private/featureflags/__tests__/ReactNativeFeatureFlags-test.js +0 -92
  206. package/src/private/specs/modules/NativeAnimationsDebugModule.js +0 -20
  207. package/src/private/webapis/dom/oldstylecollections/__tests__/DOMRectList-test.js +0 -85
  208. package/src/private/webapis/dom/oldstylecollections/__tests__/HTMLCollection-test.js +0 -80
  209. package/src/private/webapis/dom/oldstylecollections/__tests__/NodeList-test.js +0 -161
  210. package/src/private/webapis/performance/__tests__/EventCounts-test.js +0 -116
  211. package/src/private/webapis/performance/__tests__/NativePerformanceMock-test.js +0 -82
  212. package/src/private/webapis/performance/__tests__/NativePerformanceObserverMock-test.js +0 -108
  213. package/src/private/webapis/performance/__tests__/Performance-test.js +0 -117
  214. package/src/private/webapis/performance/__tests__/PerformanceObserver-test.js +0 -208
@@ -1,13 +0,0 @@
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
- export * from '../../../src/private/specs/modules/NativeAnimationsDebugModule';
12
- import NativeAnimationsDebugModule from '../../../src/private/specs/modules/NativeAnimationsDebugModule';
13
- export default NativeAnimationsDebugModule;
@@ -1,50 +0,0 @@
1
- /**
2
- * Copyright (c) Meta Platforms, Inc. and affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- *
7
- * @format
8
- * @flow strict-local
9
- */
10
-
11
- import processColor from '../StyleSheet/processColor';
12
- import Appearance from './Appearance';
13
- import NativeDevLoadingView from './NativeDevLoadingView';
14
-
15
- module.exports = {
16
- showMessage(message: string, type: 'load' | 'refresh') {
17
- if (NativeDevLoadingView) {
18
- if (type === 'refresh') {
19
- const backgroundColor = processColor('#2584e8');
20
- const textColor = processColor('#ffffff');
21
-
22
- NativeDevLoadingView.showMessage(
23
- message,
24
- typeof textColor === 'number' ? textColor : null,
25
- typeof backgroundColor === 'number' ? backgroundColor : null,
26
- );
27
- } else if (type === 'load') {
28
- let backgroundColor;
29
- let textColor;
30
-
31
- if (Appearance.getColorScheme() === 'dark') {
32
- backgroundColor = processColor('#fafafa');
33
- textColor = processColor('#242526');
34
- } else {
35
- backgroundColor = processColor('#404040');
36
- textColor = processColor('#ffffff');
37
- }
38
-
39
- NativeDevLoadingView.showMessage(
40
- message,
41
- typeof textColor === 'number' ? textColor : null,
42
- typeof backgroundColor === 'number' ? backgroundColor : null,
43
- );
44
- }
45
- }
46
- },
47
- hide() {
48
- NativeDevLoadingView && NativeDevLoadingView.hide();
49
- },
50
- };
@@ -1,16 +0,0 @@
1
- /**
2
- * Copyright (c) Meta Platforms, Inc. and affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- *
7
- * @format
8
- * @flow strict-local
9
- */
10
-
11
- 'use strict';
12
-
13
- module.exports = {
14
- showMessage(message: string, type: 'load' | 'refresh') {},
15
- hide() {},
16
- };
@@ -1,13 +0,0 @@
1
- /**
2
- * Copyright (c) Meta Platforms, Inc. and affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- *
7
- * @format
8
- * @flow strict
9
- */
10
-
11
- 'use strict';
12
-
13
- module.exports = {};
@@ -1,44 +0,0 @@
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
- * @generated SignedSource<<8f82962343a5146622f36c2de071ff6a>>
8
- * @flow strict-local
9
- */
10
-
11
- /**
12
- * IMPORTANT: Do NOT modify this file directly.
13
- *
14
- * To change the definition of the flags, edit
15
- * packages/react-native/scripts/featureflags/ReactNativeFeatureFlags.config.js.
16
- *
17
- * To regenerate this code, run the following script from the repo root:
18
- * yarn featureflags-update
19
- */
20
-
21
- import type {TurboModule} from '../../../Libraries/TurboModule/RCTExport';
22
-
23
- import * as TurboModuleRegistry from '../../../Libraries/TurboModule/TurboModuleRegistry';
24
-
25
- export interface Spec extends TurboModule {
26
- +commonTestFlag?: () => boolean;
27
- +androidEnablePendingFabricTransactions?: () => boolean;
28
- +batchRenderingUpdatesInEventLoop?: () => boolean;
29
- +destroyFabricSurfacesInReactInstanceManager?: () => boolean;
30
- +enableBackgroundExecutor?: () => boolean;
31
- +useModernRuntimeScheduler?: () => boolean;
32
- +enableMicrotasks?: () => boolean;
33
- +enableSpannableBuildingUnification?: () => boolean;
34
- +enableCustomDrawOrderFabric?: () => boolean;
35
- +enableFixForClippedSubviewsCrash?: () => boolean;
36
- +inspectorEnableCxxInspectorPackagerConnection?: () => boolean;
37
- +inspectorEnableModernCDPRegistry?: () => boolean;
38
- }
39
-
40
- const NativeReactNativeFeatureFlags: ?Spec = TurboModuleRegistry.get<Spec>(
41
- 'NativeReactNativeFeatureFlagsCxx',
42
- );
43
-
44
- export default NativeReactNativeFeatureFlags;
@@ -1,92 +0,0 @@
1
- /**
2
- * Copyright (c) Meta Platforms, Inc. and affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- *
7
- * @flow strict-local
8
- * @format
9
- * @oncall react_native
10
- */
11
-
12
- describe('ReactNativeFeatureFlags', () => {
13
- beforeEach(() => {
14
- jest.resetModules();
15
- });
16
-
17
- it('should provide default values for common flags if the native module is NOT available', () => {
18
- const ReactNativeFeatureFlags = require('../ReactNativeFeatureFlags');
19
- expect(ReactNativeFeatureFlags.commonTestFlag()).toBe(false);
20
- });
21
-
22
- it('should access and cache common flags from the native module if it is available', () => {
23
- const commonTestFlagFn = jest.fn(() => true);
24
-
25
- jest.doMock('../NativeReactNativeFeatureFlags', () => ({
26
- __esModule: true,
27
- default: {
28
- commonTestFlag: commonTestFlagFn,
29
- },
30
- }));
31
-
32
- const ReactNativeFeatureFlags = require('../ReactNativeFeatureFlags');
33
-
34
- expect(commonTestFlagFn).toHaveBeenCalledTimes(0);
35
-
36
- expect(ReactNativeFeatureFlags.commonTestFlag()).toBe(true);
37
- expect(commonTestFlagFn).toHaveBeenCalledTimes(1);
38
-
39
- expect(ReactNativeFeatureFlags.commonTestFlag()).toBe(true);
40
- expect(commonTestFlagFn).toHaveBeenCalledTimes(1);
41
- });
42
-
43
- it('should provide default values for JS-only flags', () => {
44
- const ReactNativeFeatureFlags = require('../ReactNativeFeatureFlags');
45
- expect(ReactNativeFeatureFlags.jsOnlyTestFlag()).toBe(false);
46
- });
47
-
48
- it('should access and cache overridden JS-only flags', () => {
49
- const ReactNativeFeatureFlags = require('../ReactNativeFeatureFlags');
50
-
51
- const jsOnlyTestFlagFn = jest.fn(() => true);
52
- ReactNativeFeatureFlags.override({
53
- jsOnlyTestFlag: jsOnlyTestFlagFn,
54
- });
55
-
56
- expect(jsOnlyTestFlagFn).toHaveBeenCalledTimes(0);
57
-
58
- expect(ReactNativeFeatureFlags.jsOnlyTestFlag()).toBe(true);
59
- expect(jsOnlyTestFlagFn).toHaveBeenCalledTimes(1);
60
-
61
- expect(ReactNativeFeatureFlags.jsOnlyTestFlag()).toBe(true);
62
- expect(jsOnlyTestFlagFn).toHaveBeenCalledTimes(1);
63
- });
64
-
65
- it('should throw an error if any of the flags has been accessed before overridding', () => {
66
- const ReactNativeFeatureFlags = require('../ReactNativeFeatureFlags');
67
-
68
- ReactNativeFeatureFlags.commonTestFlag();
69
-
70
- expect(() =>
71
- ReactNativeFeatureFlags.override({
72
- jsOnlyTestFlag: () => true,
73
- }),
74
- ).toThrow(
75
- 'Feature flags were accessed before being overridden: commonTestFlag',
76
- );
77
- });
78
-
79
- it('should throw an error when trying to set overrides twice', () => {
80
- const ReactNativeFeatureFlags = require('../ReactNativeFeatureFlags');
81
-
82
- ReactNativeFeatureFlags.override({
83
- jsOnlyTestFlag: () => true,
84
- });
85
-
86
- expect(() =>
87
- ReactNativeFeatureFlags.override({
88
- jsOnlyTestFlag: () => false,
89
- }),
90
- ).toThrow('Feature flags cannot be overridden more than once');
91
- });
92
- });
@@ -1,20 +0,0 @@
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
- import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport';
12
-
13
- import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry';
14
-
15
- export interface Spec extends TurboModule {
16
- +startRecordingFps: () => void;
17
- +stopRecordingFps: (animationStopTimeMs: number) => void;
18
- }
19
-
20
- export default (TurboModuleRegistry.get<Spec>('AnimationsDebugModule'): ?Spec);
@@ -1,85 +0,0 @@
1
- /**
2
- * Copyright (c) Meta Platforms, Inc. and affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- *
7
- * @flow strict-local
8
- * @format
9
- * @oncall react_native
10
- */
11
-
12
- import DOMRectReadOnly from '../../geometry/DOMRectReadOnly';
13
- import {createDOMRectList} from '../DOMRectList';
14
-
15
- const domRectA = new DOMRectReadOnly();
16
- const domRectB = new DOMRectReadOnly();
17
- const domRectC = new DOMRectReadOnly();
18
-
19
- describe('DOMRectList', () => {
20
- it('provides an array-like interface', () => {
21
- const collection = createDOMRectList([domRectA, domRectB, domRectC]);
22
-
23
- expect(collection[0]).toBe(domRectA);
24
- expect(collection[1]).toBe(domRectB);
25
- expect(collection[2]).toBe(domRectC);
26
- expect(collection[3]).toBe(undefined);
27
- expect(collection.length).toBe(3);
28
- });
29
-
30
- it('is immutable (loose mode)', () => {
31
- const collection = createDOMRectList([domRectA, domRectB, domRectC]);
32
-
33
- collection[0] = new DOMRectReadOnly();
34
- expect(collection[0]).toBe(domRectA);
35
-
36
- // $FlowExpectedError[cannot-write]
37
- collection.length = 100;
38
- expect(collection.length).toBe(3);
39
- });
40
-
41
- it('is immutable (strict mode)', () => {
42
- 'use strict';
43
-
44
- const collection = createDOMRectList([domRectA, domRectB, domRectC]);
45
-
46
- expect(() => {
47
- collection[0] = new DOMRectReadOnly();
48
- }).toThrow(TypeError);
49
- expect(collection[0]).toBe(domRectA);
50
-
51
- expect(() => {
52
- // $FlowExpectedError[cannot-write]
53
- collection.length = 100;
54
- }).toThrow(TypeError);
55
- expect(collection.length).toBe(3);
56
- });
57
-
58
- it('can be converted to an array through common methods', () => {
59
- const collection = createDOMRectList([domRectA, domRectB, domRectC]);
60
-
61
- expect(Array.from(collection)).toEqual([domRectA, domRectB, domRectC]);
62
- expect([...collection]).toEqual([domRectA, domRectB, domRectC]);
63
- });
64
-
65
- it('can be traversed with for-of', () => {
66
- const collection = createDOMRectList([domRectA, domRectB, domRectC]);
67
-
68
- let i = 0;
69
- for (const value of collection) {
70
- expect(value).toBe(collection[i]);
71
- i++;
72
- }
73
- });
74
-
75
- describe('item()', () => {
76
- it('returns elements at the specified position, or null', () => {
77
- const collection = createDOMRectList([domRectA, domRectB, domRectC]);
78
-
79
- expect(collection.item(0)).toBe(domRectA);
80
- expect(collection.item(1)).toBe(domRectB);
81
- expect(collection.item(2)).toBe(domRectC);
82
- expect(collection.item(3)).toBe(null);
83
- });
84
- });
85
- });
@@ -1,80 +0,0 @@
1
- /**
2
- * Copyright (c) Meta Platforms, Inc. and affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- *
7
- * @flow strict-local
8
- * @format
9
- * @oncall react_native
10
- */
11
-
12
- import {createHTMLCollection} from '../HTMLCollection';
13
-
14
- describe('HTMLCollection', () => {
15
- it('provides an array-like interface', () => {
16
- const collection = createHTMLCollection(['a', 'b', 'c']);
17
-
18
- expect(collection[0]).toBe('a');
19
- expect(collection[1]).toBe('b');
20
- expect(collection[2]).toBe('c');
21
- expect(collection[3]).toBe(undefined);
22
- expect(collection.length).toBe(3);
23
- });
24
-
25
- it('is immutable (loose mode)', () => {
26
- const collection = createHTMLCollection(['a', 'b', 'c']);
27
-
28
- collection[0] = 'replacement';
29
- expect(collection[0]).toBe('a');
30
-
31
- // $FlowExpectedError[cannot-write]
32
- collection.length = 100;
33
- expect(collection.length).toBe(3);
34
- });
35
-
36
- it('is immutable (strict mode)', () => {
37
- 'use strict';
38
-
39
- const collection = createHTMLCollection(['a', 'b', 'c']);
40
-
41
- expect(() => {
42
- collection[0] = 'replacement';
43
- }).toThrow(TypeError);
44
- expect(collection[0]).toBe('a');
45
-
46
- expect(() => {
47
- // $FlowExpectedError[cannot-write]
48
- collection.length = 100;
49
- }).toThrow(TypeError);
50
- expect(collection.length).toBe(3);
51
- });
52
-
53
- it('can be converted to an array through common methods', () => {
54
- const collection = createHTMLCollection(['a', 'b', 'c']);
55
-
56
- expect(Array.from(collection)).toEqual(['a', 'b', 'c']);
57
- expect([...collection]).toEqual(['a', 'b', 'c']);
58
- });
59
-
60
- it('can be traversed with for-of', () => {
61
- const collection = createHTMLCollection(['a', 'b', 'c']);
62
-
63
- let i = 0;
64
- for (const value of collection) {
65
- expect(value).toBe(collection[i]);
66
- i++;
67
- }
68
- });
69
-
70
- describe('item()', () => {
71
- it('returns elements at the specified position, or null', () => {
72
- const collection = createHTMLCollection(['a', 'b', 'c']);
73
-
74
- expect(collection.item(0)).toBe('a');
75
- expect(collection.item(1)).toBe('b');
76
- expect(collection.item(2)).toBe('c');
77
- expect(collection.item(3)).toBe(null);
78
- });
79
- });
80
- });
@@ -1,161 +0,0 @@
1
- /**
2
- * Copyright (c) Meta Platforms, Inc. and affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- *
7
- * @flow strict-local
8
- * @format
9
- * @oncall react_native
10
- */
11
-
12
- import {createNodeList} from '../NodeList';
13
-
14
- describe('NodeList', () => {
15
- it('provides an array-like interface', () => {
16
- const collection = createNodeList(['a', 'b', 'c']);
17
-
18
- expect(collection[0]).toBe('a');
19
- expect(collection[1]).toBe('b');
20
- expect(collection[2]).toBe('c');
21
- expect(collection[3]).toBe(undefined);
22
- expect(collection.length).toBe(3);
23
- });
24
-
25
- it('provides indexed access through the item method', () => {
26
- const collection = createNodeList(['a', 'b', 'c']);
27
-
28
- expect(collection.item(0)).toBe('a');
29
- expect(collection.item(1)).toBe('b');
30
- expect(collection.item(2)).toBe('c');
31
- expect(collection.item(3)).toBe(null);
32
- });
33
-
34
- it('is immutable (loose mode)', () => {
35
- const collection = createNodeList(['a', 'b', 'c']);
36
-
37
- collection[0] = 'replacement';
38
- expect(collection[0]).toBe('a');
39
-
40
- // $FlowExpectedError[cannot-write]
41
- collection.length = 100;
42
- expect(collection.length).toBe(3);
43
- });
44
-
45
- it('is immutable (strict mode)', () => {
46
- 'use strict';
47
-
48
- const collection = createNodeList(['a', 'b', 'c']);
49
-
50
- expect(() => {
51
- collection[0] = 'replacement';
52
- }).toThrow(TypeError);
53
- expect(collection[0]).toBe('a');
54
-
55
- expect(() => {
56
- // $FlowExpectedError[cannot-write]
57
- collection.length = 100;
58
- }).toThrow(TypeError);
59
- expect(collection.length).toBe(3);
60
- });
61
-
62
- it('can be converted to an array through common methods', () => {
63
- const collection = createNodeList(['a', 'b', 'c']);
64
-
65
- expect(Array.from(collection)).toEqual(['a', 'b', 'c']);
66
- expect([...collection]).toEqual(['a', 'b', 'c']);
67
- });
68
-
69
- it('can be traversed with for-of', () => {
70
- const collection = createNodeList(['a', 'b', 'c']);
71
-
72
- let i = 0;
73
- for (const value of collection) {
74
- expect(value).toBe(collection[i]);
75
- i++;
76
- }
77
- });
78
-
79
- describe('keys()', () => {
80
- it('returns an iterator for keys', () => {
81
- const collection = createNodeList(['a', 'b', 'c']);
82
-
83
- const keys = collection.keys();
84
- expect(keys.next()).toEqual({value: 0, done: false});
85
- expect(keys.next()).toEqual({value: 1, done: false});
86
- expect(keys.next()).toEqual({value: 2, done: false});
87
- expect(keys.next()).toEqual({done: true});
88
-
89
- let i = 0;
90
- for (const key of collection.keys()) {
91
- expect(key).toBe(i);
92
- i++;
93
- }
94
- });
95
- });
96
-
97
- describe('values()', () => {
98
- it('returns an iterator for values', () => {
99
- const collection = createNodeList(['a', 'b', 'c']);
100
-
101
- const values = collection.values();
102
- expect(values.next()).toEqual({value: 'a', done: false});
103
- expect(values.next()).toEqual({value: 'b', done: false});
104
- expect(values.next()).toEqual({value: 'c', done: false});
105
- expect(values.next()).toEqual({done: true});
106
-
107
- let i = 0;
108
- for (const value of collection.values()) {
109
- expect(value).toBe(collection[i]);
110
- i++;
111
- }
112
- });
113
- });
114
-
115
- describe('entries()', () => {
116
- it('returns an iterator for entries', () => {
117
- const collection = createNodeList(['a', 'b', 'c']);
118
-
119
- const entries = collection.entries();
120
- expect(entries.next()).toEqual({value: [0, 'a'], done: false});
121
- expect(entries.next()).toEqual({value: [1, 'b'], done: false});
122
- expect(entries.next()).toEqual({value: [2, 'c'], done: false});
123
- expect(entries.next()).toEqual({done: true});
124
-
125
- let i = 0;
126
- for (const entry of collection.entries()) {
127
- expect(entry).toEqual([i, collection[i]]);
128
- i++;
129
- }
130
- });
131
- });
132
-
133
- describe('forEach()', () => {
134
- it('iterates over the elements like array.forEach (implicit `this`)', () => {
135
- const collection = createNodeList(['a', 'b', 'c']);
136
-
137
- let i = 0;
138
- collection.forEach(function (this: mixed, value, index, list) {
139
- expect(value).toBe(collection[i]);
140
- expect(index).toBe(i);
141
- expect(list).toBe(collection);
142
- expect(this).toBe(window);
143
- i++;
144
- });
145
- });
146
-
147
- it('iterates over the elements like array.forEach (explicit `this`)', () => {
148
- const collection = createNodeList(['a', 'b', 'c']);
149
-
150
- let i = 0;
151
- const explicitThis = {id: 'foo'};
152
- collection.forEach(function (this: mixed, value, index, list) {
153
- expect(value).toBe(collection[i]);
154
- expect(index).toBe(i);
155
- expect(list).toBe(collection);
156
- expect(this).toBe(explicitThis);
157
- i++;
158
- }, explicitThis);
159
- });
160
- });
161
- });
@@ -1,116 +0,0 @@
1
- /**
2
- * Copyright (c) Meta Platforms, Inc. and affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- *
7
- * @format
8
- * @oncall react_native
9
- */
10
-
11
- import {RawPerformanceEntryTypeValues} from '../RawPerformanceEntry';
12
-
13
- // NOTE: Jest mocks of transitive dependencies don't appear to work with
14
- // ES6 module imports, therefore forced to use commonjs style imports here.
15
- const NativePerformanceObserver = require('../NativePerformanceObserver');
16
- const Performance = require('../Performance').default;
17
-
18
- jest.mock(
19
- '../NativePerformanceObserver',
20
- () => require('../__mocks__/NativePerformanceObserver').default,
21
- );
22
-
23
- describe('EventCounts', () => {
24
- it('defines EventCounts for Performance', () => {
25
- const eventCounts = new Performance().eventCounts;
26
- expect(eventCounts).not.toBeUndefined();
27
- });
28
-
29
- it('consistently implements the API for EventCounts', async () => {
30
- NativePerformanceObserver.logRawEntry({
31
- name: 'click',
32
- entryType: RawPerformanceEntryTypeValues.EVENT,
33
- });
34
-
35
- NativePerformanceObserver.logRawEntry({
36
- name: 'input',
37
- entryType: RawPerformanceEntryTypeValues.EVENT,
38
- });
39
-
40
- NativePerformanceObserver.logRawEntry({
41
- name: 'input',
42
- entryType: RawPerformanceEntryTypeValues.EVENT,
43
- });
44
-
45
- NativePerformanceObserver.logRawEntry({
46
- name: 'keyup',
47
- entryType: RawPerformanceEntryTypeValues.EVENT,
48
- });
49
-
50
- NativePerformanceObserver.logRawEntry({
51
- name: 'keyup',
52
- entryType: RawPerformanceEntryTypeValues.EVENT,
53
- });
54
-
55
- NativePerformanceObserver.logRawEntry({
56
- name: 'keyup',
57
- entryType: RawPerformanceEntryTypeValues.EVENT,
58
- });
59
-
60
- const eventCounts = new Performance().eventCounts;
61
- expect(eventCounts.size).toBe(3);
62
- expect(Array.from(eventCounts.entries())).toStrictEqual([
63
- ['click', 1],
64
- ['input', 2],
65
- ['keyup', 3],
66
- ]);
67
-
68
- expect(eventCounts.get('click')).toEqual(1);
69
- expect(eventCounts.get('input')).toEqual(2);
70
- expect(eventCounts.get('keyup')).toEqual(3);
71
-
72
- expect(eventCounts.has('click')).toEqual(true);
73
- expect(eventCounts.has('input')).toEqual(true);
74
- expect(eventCounts.has('keyup')).toEqual(true);
75
-
76
- expect(Array.from(eventCounts.keys())).toStrictEqual([
77
- 'click',
78
- 'input',
79
- 'keyup',
80
- ]);
81
- expect(Array.from(eventCounts.values())).toStrictEqual([1, 2, 3]);
82
-
83
- await jest.runAllTicks();
84
- NativePerformanceObserver.logRawEntry({
85
- name: 'input',
86
- entryType: RawPerformanceEntryTypeValues.EVENT,
87
- });
88
-
89
- NativePerformanceObserver.logRawEntry({
90
- name: 'keyup',
91
- entryType: RawPerformanceEntryTypeValues.EVENT,
92
- });
93
-
94
- NativePerformanceObserver.logRawEntry({
95
- name: 'keyup',
96
- entryType: RawPerformanceEntryTypeValues.EVENT,
97
- });
98
- expect(Array.from(eventCounts.values())).toStrictEqual([1, 3, 5]);
99
-
100
- await jest.runAllTicks();
101
-
102
- NativePerformanceObserver.logRawEntry({
103
- name: 'click',
104
- entryType: RawPerformanceEntryTypeValues.EVENT,
105
- });
106
-
107
- await jest.runAllTicks();
108
-
109
- NativePerformanceObserver.logRawEntry({
110
- name: 'keyup',
111
- entryType: RawPerformanceEntryTypeValues.EVENT,
112
- });
113
-
114
- expect(Array.from(eventCounts.values())).toStrictEqual([2, 3, 6]);
115
- });
116
- });