@office-iss/react-native-win32 0.76.2 → 0.77.0-preview.1

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 (248) hide show
  1. package/.eslintignore +1 -1
  2. package/.flowconfig +5 -1
  3. package/CHANGELOG.json +164 -53
  4. package/CHANGELOG.md +74 -28
  5. package/Libraries/ActionSheetIOS/ActionSheetIOS.d.ts +1 -0
  6. package/Libraries/ActionSheetIOS/ActionSheetIOS.js +13 -0
  7. package/Libraries/Animated/AnimatedEvent.js +1 -1
  8. package/Libraries/Animated/AnimatedImplementation.js +2 -2
  9. package/Libraries/Animated/NativeAnimatedAllowlist.js +20 -9
  10. package/Libraries/Animated/animations/Animation.js +60 -25
  11. package/Libraries/Animated/animations/DecayAnimation.js +26 -38
  12. package/Libraries/Animated/animations/SpringAnimation.js +33 -39
  13. package/Libraries/Animated/animations/TimingAnimation.js +34 -42
  14. package/Libraries/Animated/components/AnimatedFlatList.js +1 -1
  15. package/Libraries/Animated/components/AnimatedSectionList.js +3 -1
  16. package/Libraries/Animated/createAnimatedComponent.js +60 -33
  17. package/Libraries/Animated/nodes/AnimatedColor.js +1 -1
  18. package/Libraries/Animated/nodes/AnimatedInterpolation.js +1 -1
  19. package/Libraries/Animated/nodes/AnimatedNode.js +39 -45
  20. package/Libraries/Animated/nodes/AnimatedObject.js +13 -3
  21. package/Libraries/Animated/nodes/AnimatedProps.js +96 -46
  22. package/Libraries/Animated/nodes/AnimatedStyle.js +108 -39
  23. package/Libraries/Animated/nodes/AnimatedTransform.js +56 -23
  24. package/Libraries/Animated/nodes/AnimatedValue.js +1 -1
  25. package/Libraries/Animated/nodes/AnimatedWithChildren.js +1 -3
  26. package/Libraries/Animated/useAnimatedProps.js +41 -35
  27. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts +19 -3
  28. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +77 -5
  29. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.win32.js +82 -5
  30. package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +4 -4
  31. package/Libraries/Components/Button.js +9 -4
  32. package/Libraries/Components/Button.win32.js +12 -4
  33. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.js +3 -1
  34. package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +7 -0
  35. package/Libraries/Components/Pressable/Pressable.js +4 -4
  36. package/Libraries/Components/Pressable/Pressable.win32.js +4 -4
  37. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.android.js +13 -7
  38. package/Libraries/Components/RefreshControl/__mocks__/RefreshControlMock.js +3 -2
  39. package/Libraries/Components/SafeAreaView/SafeAreaView.js +4 -4
  40. package/Libraries/Components/SafeAreaView/SafeAreaView.win32.js +4 -4
  41. package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +0 -1
  42. package/Libraries/Components/ScrollView/ScrollView.js +49 -88
  43. package/Libraries/Components/ScrollView/ScrollViewCommands.js +1 -1
  44. package/Libraries/Components/ScrollView/ScrollViewContext.js +2 -0
  45. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +0 -2
  46. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +8 -9
  47. package/Libraries/Components/Switch/Switch.js +8 -6
  48. package/Libraries/Components/TextInput/InputAccessoryView.js +1 -1
  49. package/Libraries/Components/TextInput/RCTMultilineTextInputNativeComponent.js +4 -4
  50. package/Libraries/Components/TextInput/RCTSingelineTextInputNativeComponent.js +6 -4
  51. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +2 -1
  52. package/Libraries/Components/TextInput/TextInput.d.ts +27 -4
  53. package/Libraries/Components/TextInput/TextInput.flow.js +36 -19
  54. package/Libraries/Components/TextInput/TextInput.js +37 -13
  55. package/Libraries/Components/TextInput/TextInput.win32.js +40 -15
  56. package/Libraries/Components/TextInput/TextInputState.js +11 -13
  57. package/Libraries/Components/TextInput/TextInputState.win32.js +13 -16
  58. package/Libraries/Components/TextInput/Win32TextInputNativeComponent.js +3 -0
  59. package/Libraries/Components/Touchable/BoundingDimensions.js +11 -3
  60. package/Libraries/Components/Touchable/Position.js +7 -2
  61. package/Libraries/Components/Touchable/Touchable.js +4 -0
  62. package/Libraries/Components/Touchable/Touchable.win32.js +4 -0
  63. package/Libraries/Components/Touchable/TouchableBounce.js +6 -2
  64. package/Libraries/Components/Touchable/TouchableHighlight.js +5 -5
  65. package/Libraries/Components/Touchable/TouchableOpacity.js +6 -5
  66. package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +1 -2
  67. package/Libraries/Components/View/ReactNativeStyleAttributes.js +6 -1
  68. package/Libraries/Components/View/View.js +4 -4
  69. package/Libraries/Components/View/View.win32.js +4 -4
  70. package/Libraries/Components/View/ViewNativeComponent.js +6 -98
  71. package/Libraries/Components/View/ViewPropTypes.d.ts +7 -0
  72. package/Libraries/Components/View/ViewPropTypes.js +0 -3
  73. package/Libraries/Components/View/ViewPropTypes.win32.js +0 -3
  74. package/Libraries/Components/View/ViewWin32.js +1 -0
  75. package/Libraries/Core/ExceptionsManager.js +50 -29
  76. package/Libraries/Core/ReactNativeVersion.js +3 -3
  77. package/Libraries/Core/__mocks__/NativeExceptionsManager.js +0 -1
  78. package/Libraries/Core/setUpBatchedBridge.js +1 -10
  79. package/Libraries/Core/setUpDeveloperTools.js +1 -5
  80. package/Libraries/Core/setUpErrorHandling.js +20 -18
  81. package/Libraries/Core/setUpReactDevTools.js +107 -8
  82. package/Libraries/Core/setUpSegmentFetcher.js +1 -0
  83. package/Libraries/Core/setUpTimers.js +21 -18
  84. package/Libraries/Debugging/DebuggingOverlay.js +4 -5
  85. package/Libraries/Image/AssetSourceResolver.js +12 -1
  86. package/Libraries/Image/Image.android.js +1 -5
  87. package/Libraries/Image/Image.d.ts +20 -29
  88. package/Libraries/Image/Image.ios.js +0 -2
  89. package/Libraries/Image/Image.win32.js +0 -2
  90. package/Libraries/Image/ImageBackground.js +2 -5
  91. package/Libraries/Image/ImageProps.js +7 -6
  92. package/Libraries/Image/ImageResizeMode.d.ts +8 -1
  93. package/Libraries/Image/ImageResizeMode.js +4 -1
  94. package/Libraries/Image/ImageSource.d.ts +0 -2
  95. package/Libraries/Image/ImageSource.js +0 -2
  96. package/Libraries/Image/ImageTypes.flow.js +11 -9
  97. package/Libraries/Image/ImageUtils.js +6 -3
  98. package/Libraries/Image/ImageViewNativeComponent.js +5 -3
  99. package/Libraries/Inspector/Inspector.js +1 -0
  100. package/Libraries/Inspector/Inspector.win32.js +2 -1
  101. package/Libraries/Inspector/NetworkOverlay.js +4 -0
  102. package/Libraries/Inspector/ReactDevToolsOverlay.js +8 -14
  103. package/Libraries/Inspector/getInspectorDataForViewAtPoint.js +3 -5
  104. package/Libraries/Interaction/InteractionManager.js +6 -1
  105. package/Libraries/Interaction/InteractionManagerStub.js +176 -0
  106. package/Libraries/Interaction/TouchHistoryMath.js +22 -19
  107. package/Libraries/JSInspector/NetworkAgent.js +1 -1
  108. package/Libraries/Lists/FlatList.d.ts +1 -2
  109. package/Libraries/Lists/FlatList.js +2 -2
  110. package/Libraries/Lists/SectionListModern.js +7 -7
  111. package/Libraries/Lists/__flowtests__/FlatList-flowtest.js +2 -2
  112. package/Libraries/Lists/__flowtests__/SectionList-flowtest.js +1 -1
  113. package/Libraries/LogBox/Data/LogBoxData.js +3 -3
  114. package/Libraries/LogBox/LogBox.js +18 -5
  115. package/Libraries/LogBox/LogBoxInspectorContainer.js +1 -1
  116. package/Libraries/LogBox/LogBoxNotificationContainer.js +2 -2
  117. package/Libraries/LogBox/UI/AnsiHighlight.js +26 -17
  118. package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.js +6 -1
  119. package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.win32.js +6 -1
  120. package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +1 -1
  121. package/Libraries/LogBox/UI/LogBoxInspectorHeader.win32.js +1 -1
  122. package/Libraries/LogBox/UI/LogBoxInspectorStackFrames.js +1 -1
  123. package/Libraries/LogBox/UI/LogBoxMessage.js +2 -2
  124. package/Libraries/Modal/Modal.d.ts +12 -0
  125. package/Libraries/Modal/Modal.js +31 -4
  126. package/Libraries/NativeComponent/BaseViewConfig.android.js +72 -1
  127. package/Libraries/NativeComponent/BaseViewConfig.ios.js +2 -1
  128. package/Libraries/NativeComponent/BaseViewConfig.win32.js +3 -11
  129. package/Libraries/NativeComponent/NativeComponentRegistry.js +3 -3
  130. package/Libraries/NativeComponent/StaticViewConfigValidator.js +0 -1
  131. package/Libraries/Network/XHRInterceptor.js +63 -14
  132. package/Libraries/Network/XMLHttpRequest.js +26 -1
  133. package/Libraries/NewAppScreen/components/HermesBadge.js +1 -1
  134. package/Libraries/PermissionsAndroid/PermissionsAndroid.d.ts +49 -2
  135. package/Libraries/PermissionsAndroid/PermissionsAndroid.js +4 -4
  136. package/Libraries/Pressability/HoverState.js +2 -0
  137. package/Libraries/Pressability/HoverState.win32.js +2 -0
  138. package/Libraries/Pressability/Pressability.js +2 -3
  139. package/Libraries/Pressability/Pressability.win32.js +2 -3
  140. package/Libraries/Pressability/usePressability.js +4 -1
  141. package/Libraries/ReactNative/AppContainer.js +1 -1
  142. package/Libraries/ReactNative/AppRegistry.js +1 -11
  143. package/Libraries/ReactNative/DisplayMode.js +1 -1
  144. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricHostComponent.js +2 -3
  145. package/Libraries/ReactNative/RendererImplementation.js +18 -17
  146. package/Libraries/ReactNative/getCachedComponentWithDebugName.js +1 -3
  147. package/Libraries/ReactNative/renderApplication.js +9 -8
  148. package/Libraries/ReactNative/requireNativeComponent.js +5 -2
  149. package/Libraries/Renderer/shims/ReactFabric.js +3 -3
  150. package/Libraries/Renderer/shims/ReactFeatureFlags.js +2 -2
  151. package/Libraries/Renderer/shims/ReactNative.js +3 -3
  152. package/Libraries/Renderer/shims/ReactNativeTypes.js +22 -35
  153. package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +5 -6
  154. package/Libraries/Renderer/shims/createReactNativeComponentClass.js +2 -2
  155. package/Libraries/StyleSheet/StyleSheet.js +7 -1
  156. package/Libraries/StyleSheet/StyleSheet.win32.js +7 -1
  157. package/Libraries/StyleSheet/StyleSheetTypes.d.ts +13 -2
  158. package/Libraries/StyleSheet/StyleSheetTypes.js +24 -6
  159. package/Libraries/StyleSheet/processBackgroundImage.js +87 -110
  160. package/Libraries/StyleSheet/processTransform.js +3 -34
  161. package/Libraries/Text/Text.js +248 -249
  162. package/Libraries/Text/Text.win32.js +282 -295
  163. package/Libraries/Text/TextNativeComponent.js +0 -1
  164. package/Libraries/TurboModule/TurboModuleRegistry.js +5 -5
  165. package/Libraries/Types/CoreEventTypes.d.ts +3 -10
  166. package/Libraries/Types/CoreEventTypes.js +4 -6
  167. package/Libraries/Types/CoreEventTypes.win32.js +4 -6
  168. package/Libraries/Utilities/Appearance.js +3 -1
  169. package/Libraries/Utilities/BackHandler.android.js +6 -18
  170. package/Libraries/Utilities/BackHandler.d.ts +0 -4
  171. package/Libraries/Utilities/BackHandler.ios.js +0 -7
  172. package/Libraries/Utilities/BackHandler.win32.js +6 -18
  173. package/Libraries/Utilities/FocusManager.win32.js +1 -1
  174. package/Libraries/Utilities/HMRClient.js +3 -4
  175. package/Libraries/Utilities/Platform.flow.js +2 -2
  176. package/Libraries/Utilities/Platform.flow.win32.js +3 -2
  177. package/Libraries/Utilities/__mocks__/BackHandler.js +3 -8
  178. package/Libraries/Utilities/codegenNativeComponent.js +1 -1
  179. package/Libraries/Utilities/useMergeRefs.js +26 -7
  180. package/Libraries/WebSocket/WebSocketEvent.js +4 -1
  181. package/Libraries/WebSocket/WebSocketInterceptor.js +31 -13
  182. package/Libraries/__flowtests__/ReactNativeTypes-flowtest.js +6 -5
  183. package/Libraries/promiseRejectionTrackingOptions.js +1 -1
  184. package/index.js +10 -3
  185. package/index.win32.js +10 -3
  186. package/jest/setup.js +36 -1
  187. package/overrides.json +37 -37
  188. package/package.json +20 -20
  189. package/src/private/animated/NativeAnimatedHelper.js +18 -16
  190. package/src/private/animated/NativeAnimatedHelper.win32.js +18 -15
  191. package/src/private/animated/useAnimatedPropsMemo.js +348 -0
  192. package/src/private/components/HScrollViewNativeComponents.js +1 -27
  193. package/src/private/components/SafeAreaView_INTERNAL_DO_NOT_USE.js +11 -8
  194. package/src/private/components/VScrollViewNativeComponents.js +2 -25
  195. package/src/private/debugging/ReactDevToolsSettingsManager.android.js +20 -0
  196. package/src/private/debugging/ReactDevToolsSettingsManager.ios.js +30 -0
  197. package/src/private/debugging/ReactDevToolsSettingsManager.win32.js +20 -0
  198. package/src/private/{fusebox → debugging}/setUpFuseboxReactDevToolsDispatcher.js +6 -0
  199. package/src/private/devmenu/DevMenu.d.ts +20 -0
  200. package/src/private/devmenu/DevMenu.js +31 -0
  201. package/src/private/featureflags/ReactNativeFeatureFlags.js +95 -86
  202. package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +8 -2
  203. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +17 -19
  204. package/src/private/fusebox/specs/NativeReactDevToolsRuntimeSettingsModule.js +34 -0
  205. package/src/private/setup/setUpDOM.js +14 -6
  206. package/src/private/setup/setUpMutationObserver.js +5 -0
  207. package/src/private/specs/components/AndroidHorizontalScrollContentViewNativeComponent.js +1 -0
  208. package/src/private/specs/components/RCTModalHostViewNativeComponent.js +8 -0
  209. package/src/private/specs/modules/NativeAccessibilityInfo.js +9 -0
  210. package/src/private/specs/modules/NativeAccessibilityInfoWin32.js +9 -0
  211. package/src/private/specs/modules/NativeAccessibilityManager.js +4 -0
  212. package/src/private/specs/modules/NativeActionSheetManager.js +2 -0
  213. package/src/private/specs/modules/NativeAppearance.js +4 -10
  214. package/src/private/specs/modules/NativeExceptionsManager.js +0 -12
  215. package/src/private/specs/modules/{NativeDevToolsSettingsManager.js → NativeReactDevToolsSettingsManager.js} +3 -5
  216. package/src/private/webapis/dom/geometry/DOMRect.js +2 -2
  217. package/src/private/webapis/dom/geometry/DOMRectReadOnly.js +2 -2
  218. package/src/private/webapis/dom/nodes/ReactNativeElement.js +2 -3
  219. package/src/private/webapis/intersectionobserver/IntersectionObserver.js +102 -11
  220. package/src/private/webapis/intersectionobserver/IntersectionObserverEntry.js +26 -0
  221. package/src/private/webapis/intersectionobserver/IntersectionObserverManager.js +1 -0
  222. package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +1 -0
  223. package/src/private/webapis/intersectionobserver/specs/__mocks__/NativeIntersectionObserver.js +9 -0
  224. package/src/private/webapis/performance/EventTiming.js +13 -8
  225. package/src/private/webapis/performance/Performance.js +66 -73
  226. package/src/private/webapis/performance/PerformanceEntry.js +2 -5
  227. package/src/private/webapis/performance/PerformanceObserver.js +65 -164
  228. package/src/private/webapis/performance/RawPerformanceEntry.js +1 -1
  229. package/src/private/webapis/performance/UserTiming.js +11 -7
  230. package/src/private/webapis/performance/Utilities.js +18 -0
  231. package/src/private/webapis/performance/specs/NativePerformance.js +71 -2
  232. package/src/private/webapis/performance/specs/__mocks__/NativePerformanceMock.js +267 -0
  233. package/src-win/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts +19 -3
  234. package/src-win/Libraries/Components/View/ViewPropTypes.d.ts +7 -0
  235. package/types/index.d.ts +1 -1
  236. package/types/public/ReactNativeTypes.d.ts +4 -8
  237. package/Libraries/DevToolsSettings/DevToolsSettingsManager.android.js +0 -35
  238. package/Libraries/DevToolsSettings/DevToolsSettingsManager.d.ts +0 -20
  239. package/Libraries/DevToolsSettings/DevToolsSettingsManager.ios.js +0 -49
  240. package/Libraries/DevToolsSettings/DevToolsSettingsManager.win32.js +0 -35
  241. package/Libraries/DevToolsSettings/NativeDevToolsSettingsManager.js +0 -13
  242. package/Libraries/ReactNative/ReactFabricInternals.js +0 -17
  243. package/src/private/components/useSyncOnScroll.js +0 -48
  244. package/src/private/webapis/performance/specs/NativePerformanceObserver.js +0 -61
  245. package/src/private/webapis/performance/specs/__mocks__/NativePerformance.js +0 -67
  246. package/src/private/webapis/performance/specs/__mocks__/NativePerformanceObserver.js +0 -127
  247. package/types/experimental.d.ts +0 -59
  248. /package/src/private/{fusebox → debugging}/FuseboxSessionObserver.js +0 -0
@@ -16,10 +16,39 @@ export type NativeMemoryInfo = {[key: string]: ?number};
16
16
 
17
17
  export type ReactNativeStartupTiming = {[key: string]: ?number};
18
18
 
19
+ export type RawPerformanceEntryType = number;
20
+
21
+ export type RawPerformanceEntry = {
22
+ name: string,
23
+ entryType: RawPerformanceEntryType,
24
+ startTime: number,
25
+ duration: number,
26
+
27
+ // For "event" entries only:
28
+ processingStart?: number,
29
+ processingEnd?: number,
30
+ interactionId?: number,
31
+ };
32
+
33
+ export type OpaqueNativeObserverHandle = mixed;
34
+
35
+ export type NativeBatchedObserverCallback = () => void;
36
+ export type NativePerformanceMarkResult = number;
37
+ export type NativePerformanceMeasureResult = $ReadOnlyArray<number>; // [startTime, duration]
38
+
39
+ export type PerformanceObserverInit = {
40
+ entryTypes?: $ReadOnlyArray<number>,
41
+ type?: number,
42
+ buffered?: boolean,
43
+ durationThreshold?: number,
44
+ };
45
+
19
46
  export interface Spec extends TurboModule {
20
47
  +now?: () => number;
21
- +mark: (name: string, startTime: number) => void;
22
- +measure: (
48
+ // TODO: remove when `markWithResult` is fully rolled out.
49
+ +mark?: (name: string, startTime: number) => void;
50
+ // TODO: remove when `measureWithResult` is fully rolled out.
51
+ +measure?: (
23
52
  name: string,
24
53
  startTime: number,
25
54
  endTime: number,
@@ -27,8 +56,48 @@ export interface Spec extends TurboModule {
27
56
  startMark?: string,
28
57
  endMark?: string,
29
58
  ) => void;
59
+ +markWithResult?: (
60
+ name: string,
61
+ startTime?: number,
62
+ ) => NativePerformanceMarkResult;
63
+ +measureWithResult?: (
64
+ name: string,
65
+ startTime: number,
66
+ endTime: number,
67
+ duration?: number,
68
+ startMark?: string,
69
+ endMark?: string,
70
+ ) => NativePerformanceMeasureResult;
71
+ +clearMarks?: (entryName?: string) => void;
72
+ +clearMeasures?: (entryName?: string) => void;
73
+ +getEntries?: () => $ReadOnlyArray<RawPerformanceEntry>;
74
+ +getEntriesByName?: (
75
+ entryName: string,
76
+ entryType?: ?RawPerformanceEntryType,
77
+ ) => $ReadOnlyArray<RawPerformanceEntry>;
78
+ +getEntriesByType?: (
79
+ entryType: RawPerformanceEntryType,
80
+ ) => $ReadOnlyArray<RawPerformanceEntry>;
81
+ +getEventCounts?: () => $ReadOnlyArray<[string, number]>;
30
82
  +getSimpleMemoryInfo: () => NativeMemoryInfo;
31
83
  +getReactNativeStartupTiming: () => ReactNativeStartupTiming;
84
+
85
+ +createObserver?: (
86
+ callback: NativeBatchedObserverCallback,
87
+ ) => OpaqueNativeObserverHandle;
88
+ +getDroppedEntriesCount?: (observer: OpaqueNativeObserverHandle) => number;
89
+
90
+ +observe?: (
91
+ observer: OpaqueNativeObserverHandle,
92
+ options: PerformanceObserverInit,
93
+ ) => void;
94
+ +disconnect?: (observer: OpaqueNativeObserverHandle) => void;
95
+ +takeRecords?: (
96
+ observer: OpaqueNativeObserverHandle,
97
+ sort: boolean,
98
+ ) => $ReadOnlyArray<RawPerformanceEntry>;
99
+
100
+ +getSupportedPerformanceEntryTypes?: () => $ReadOnlyArray<RawPerformanceEntryType>;
32
101
  }
33
102
 
34
103
  export default (TurboModuleRegistry.get<Spec>('NativePerformanceCxx'): ?Spec);
@@ -0,0 +1,267 @@
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 {
12
+ NativeBatchedObserverCallback,
13
+ NativeMemoryInfo,
14
+ NativePerformanceMarkResult,
15
+ NativePerformanceMeasureResult,
16
+ OpaqueNativeObserverHandle,
17
+ PerformanceObserverInit,
18
+ RawPerformanceEntry,
19
+ RawPerformanceEntryType,
20
+ ReactNativeStartupTiming,
21
+ } from '../NativePerformance';
22
+ import typeof NativePerformance from '../NativePerformance';
23
+
24
+ import {RawPerformanceEntryTypeValues} from '../../RawPerformanceEntry';
25
+
26
+ type MockObserver = {
27
+ handleEntry: (entry: RawPerformanceEntry) => void,
28
+ callback: NativeBatchedObserverCallback,
29
+ didScheduleFlushBuffer: boolean,
30
+ entries: Array<RawPerformanceEntry>,
31
+ options: PerformanceObserverInit,
32
+ droppedEntriesCount: number,
33
+ };
34
+
35
+ const eventCounts: Map<string, number> = new Map();
36
+ const observers: Set<MockObserver> = new Set();
37
+ const marks: Map<string, number> = new Map();
38
+ let entries: Array<RawPerformanceEntry> = [];
39
+
40
+ function getMockObserver(
41
+ opaqueNativeObserverHandle: OpaqueNativeObserverHandle,
42
+ ): MockObserver {
43
+ return opaqueNativeObserverHandle as $FlowFixMe as MockObserver;
44
+ }
45
+
46
+ function createMockObserver(callback: NativeBatchedObserverCallback) {
47
+ const observer: MockObserver = {
48
+ callback,
49
+ didScheduleFlushBuffer: false,
50
+ entries: [],
51
+ options: {},
52
+ droppedEntriesCount: 0,
53
+ handleEntry: (entry: RawPerformanceEntry) => {
54
+ if (
55
+ observer.options.type !== entry.entryType &&
56
+ !observer.options.entryTypes?.includes(entry.entryType)
57
+ ) {
58
+ return;
59
+ }
60
+
61
+ if (
62
+ entry.entryType === RawPerformanceEntryTypeValues.EVENT &&
63
+ entry.duration < (observer.options?.durationThreshold ?? 0)
64
+ ) {
65
+ return;
66
+ }
67
+
68
+ observer.entries.push(entry);
69
+
70
+ if (!observer.didScheduleFlushBuffer) {
71
+ observer.didScheduleFlushBuffer = true;
72
+ // $FlowFixMe[incompatible-call]
73
+ global.queueMicrotask(() => {
74
+ observer.didScheduleFlushBuffer = false;
75
+ // We want to emulate the way it's done in native (i.e. async/batched)
76
+ observer.callback();
77
+ });
78
+ }
79
+ },
80
+ };
81
+
82
+ return observer;
83
+ }
84
+
85
+ export function reportEntry(entry: RawPerformanceEntry) {
86
+ entries.push(entry);
87
+
88
+ switch (entry.entryType) {
89
+ case RawPerformanceEntryTypeValues.MARK:
90
+ marks.set(entry.name, entry.startTime);
91
+ break;
92
+ case RawPerformanceEntryTypeValues.MEASURE:
93
+ break;
94
+ case RawPerformanceEntryTypeValues.EVENT:
95
+ eventCounts.set(entry.name, (eventCounts.get(entry.name) ?? 0) + 1);
96
+ break;
97
+ }
98
+
99
+ for (const observer of observers) {
100
+ observer.handleEntry(entry);
101
+ }
102
+ }
103
+
104
+ let currentTime: number = 12;
105
+
106
+ const NativePerformanceMock = {
107
+ setCurrentTime: (time: number): void => {
108
+ currentTime = time;
109
+ },
110
+
111
+ now: (): number => currentTime,
112
+
113
+ markWithResult: (
114
+ name: string,
115
+ startTime?: number,
116
+ ): NativePerformanceMarkResult => {
117
+ const computedStartTime = startTime ?? performance.now();
118
+
119
+ marks.set(name, computedStartTime);
120
+ reportEntry({
121
+ entryType: RawPerformanceEntryTypeValues.MARK,
122
+ name,
123
+ startTime: computedStartTime,
124
+ duration: 0,
125
+ });
126
+
127
+ return computedStartTime;
128
+ },
129
+
130
+ measureWithResult: (
131
+ name: string,
132
+ startTime: number,
133
+ endTime: number,
134
+ duration?: number,
135
+ startMark?: string,
136
+ endMark?: string,
137
+ ): NativePerformanceMeasureResult => {
138
+ const start = startMark != null ? marks.get(startMark) : startTime;
139
+ const end = endMark != null ? marks.get(endMark) : endTime;
140
+
141
+ if (start === undefined) {
142
+ throw new Error('startMark does not exist');
143
+ }
144
+
145
+ if (end === undefined) {
146
+ throw new Error('endMark does not exist');
147
+ }
148
+
149
+ const computedDuration = duration ?? end - start;
150
+ reportEntry({
151
+ entryType: RawPerformanceEntryTypeValues.MEASURE,
152
+ name,
153
+ startTime: start,
154
+ duration: computedDuration,
155
+ });
156
+
157
+ return [start, computedDuration];
158
+ },
159
+
160
+ getSimpleMemoryInfo: (): NativeMemoryInfo => {
161
+ return {};
162
+ },
163
+
164
+ getReactNativeStartupTiming: (): ReactNativeStartupTiming => {
165
+ return {
166
+ startTime: 0,
167
+ endTime: 0,
168
+ executeJavaScriptBundleEntryPointStart: 0,
169
+ executeJavaScriptBundleEntryPointEnd: 0,
170
+ initializeRuntimeStart: 0,
171
+ initializeRuntimeEnd: 0,
172
+ };
173
+ },
174
+
175
+ getEventCounts: (): $ReadOnlyArray<[string, number]> => {
176
+ return Array.from(eventCounts.entries());
177
+ },
178
+
179
+ createObserver: (
180
+ callback: NativeBatchedObserverCallback,
181
+ ): OpaqueNativeObserverHandle => {
182
+ return createMockObserver(callback);
183
+ },
184
+
185
+ getDroppedEntriesCount: (observer: OpaqueNativeObserverHandle): number => {
186
+ return getMockObserver(observer).droppedEntriesCount;
187
+ },
188
+
189
+ observe: (
190
+ observer: OpaqueNativeObserverHandle,
191
+ options: PerformanceObserverInit,
192
+ ): void => {
193
+ const mockObserver = getMockObserver(observer);
194
+ mockObserver.options = options;
195
+ observers.add(mockObserver);
196
+ },
197
+
198
+ disconnect: (observer: OpaqueNativeObserverHandle): void => {
199
+ const mockObserver = getMockObserver(observer);
200
+ observers.delete(mockObserver);
201
+ },
202
+
203
+ takeRecords: (
204
+ observer: OpaqueNativeObserverHandle,
205
+ ): $ReadOnlyArray<RawPerformanceEntry> => {
206
+ const mockObserver = getMockObserver(observer);
207
+ const observerEntries = mockObserver.entries;
208
+ mockObserver.entries = [];
209
+ return observerEntries.sort((a, b) => a.startTime - b.startTime);
210
+ },
211
+
212
+ clearMarks: (entryName?: string) => {
213
+ if (entryName != null) {
214
+ marks.delete(entryName);
215
+ } else {
216
+ marks.clear();
217
+ }
218
+
219
+ entries = entries.filter(
220
+ entry =>
221
+ entry.entryType !== RawPerformanceEntryTypeValues.MARK ||
222
+ (entryName != null && entry.name !== entryName),
223
+ );
224
+ },
225
+
226
+ clearMeasures: (entryName?: string) => {
227
+ entries = entries.filter(
228
+ entry =>
229
+ entry.entryType !== RawPerformanceEntryTypeValues.MEASURE ||
230
+ (entryName != null && entry.name !== entryName),
231
+ );
232
+ },
233
+
234
+ getEntries: (): $ReadOnlyArray<RawPerformanceEntry> => {
235
+ return [...entries].sort((a, b) => a.startTime - b.startTime);
236
+ },
237
+
238
+ getEntriesByName: (
239
+ entryName: string,
240
+ entryType?: ?RawPerformanceEntryType,
241
+ ): $ReadOnlyArray<RawPerformanceEntry> => {
242
+ return NativePerformanceMock.getEntries().filter(
243
+ entry =>
244
+ (entryType == null || entry.entryType === entryType) &&
245
+ entry.name === entryName,
246
+ );
247
+ },
248
+
249
+ getEntriesByType: (
250
+ entryType: RawPerformanceEntryType,
251
+ ): $ReadOnlyArray<RawPerformanceEntry> => {
252
+ return entries.filter(entry => entry.entryType === entryType);
253
+ },
254
+
255
+ getSupportedPerformanceEntryTypes:
256
+ (): $ReadOnlyArray<RawPerformanceEntryType> => {
257
+ return [
258
+ RawPerformanceEntryTypeValues.MARK,
259
+ RawPerformanceEntryTypeValues.MEASURE,
260
+ RawPerformanceEntryTypeValues.EVENT,
261
+ ];
262
+ },
263
+ };
264
+
265
+ (NativePerformanceMock: NativePerformance);
266
+
267
+ export default NativePerformanceMock;
@@ -7,8 +7,7 @@
7
7
  * @format
8
8
  */
9
9
 
10
- import type * as React from 'react';
11
- import {HostComponent} from '../../../types/public/ReactNativeTypes';
10
+ import {HostInstance} from '../../../types/public/ReactNativeTypes';
12
11
  import {EmitterSubscription} from '../../vendor/emitter/EventEmitter';
13
12
 
14
13
  type AccessibilityChangeEventName =
@@ -17,6 +16,8 @@ type AccessibilityChangeEventName =
17
16
  | 'grayscaleChanged' // iOS-only Event
18
17
  | 'invertColorsChanged' // iOS-only Event
19
18
  | 'reduceMotionChanged'
19
+ | 'highTextContrastChanged' // Android-only Event
20
+ | 'darkerSystemColorsChanged' // iOS-only Event
20
21
  | 'screenReaderChanged'
21
22
  | 'reduceTransparencyChanged'; // iOS-only Event
22
23
 
@@ -69,6 +70,21 @@ export interface AccessibilityInfoStatic {
69
70
  */
70
71
  isReduceMotionEnabled: () => Promise<boolean>;
71
72
 
73
+ /**
74
+ *
75
+ * Query whether high text contrast is currently enabled.
76
+ *
77
+ * @platform android
78
+ */
79
+ isHighTextContrastEnabled: () => Promise<boolean>;
80
+
81
+ /**
82
+ * Query whether darker system colors is currently enabled.
83
+ *
84
+ * @platform ios
85
+ */
86
+ isDarkerSystemColorsEnabled: () => Promise<boolean>;
87
+
72
88
  /**
73
89
  * Query whether reduce motion and prefer cross-fade transitions settings are currently enabled.
74
90
  *
@@ -152,7 +168,7 @@ export interface AccessibilityInfoStatic {
152
168
  */
153
169
  getRecommendedTimeoutMillis: (originalTimeout: number) => Promise<number>;
154
170
  sendAccessibilityEvent: (
155
- handle: React.ElementRef<HostComponent<unknown>>,
171
+ handle: HostInstance,
156
172
  eventType: AccessibilityEventTypes,
157
173
  ) => void;
158
174
  }
@@ -343,6 +343,13 @@ export interface ViewProps
343
343
  * Used to reference react managed views from native code.
344
344
  */
345
345
  nativeID?: string | undefined;
346
+
347
+ /**
348
+ * Contols whether this view, and its transitive children, are laid in a way
349
+ * consistent with web browsers ('strict'), or consistent with existing
350
+ * React Native code which may rely on incorrect behavior ('classic').
351
+ */
352
+ experimental_layoutConformance?: 'strict' | 'classic' | undefined;
346
353
  }
347
354
 
348
355
  // For backwards compat.... // Win32
package/types/index.d.ts CHANGED
@@ -104,7 +104,6 @@ export * from '../Libraries/Components/View/ViewAccessibility';
104
104
  export * from '../Libraries/Components/View/ViewPropTypes';
105
105
  export * from '../Libraries/Components/Button';
106
106
  export * from '../Libraries/Core/registerCallableModule';
107
- export * from '../Libraries/DevToolsSettings/DevToolsSettingsManager';
108
107
  export * from '../Libraries/EventEmitter/NativeEventEmitter';
109
108
  export * from '../Libraries/EventEmitter/RCTDeviceEventEmitter';
110
109
  export * from '../Libraries/EventEmitter/RCTNativeAppEventEmitter';
@@ -142,6 +141,7 @@ export * as TurboModuleRegistry from '../Libraries/TurboModule/TurboModuleRegist
142
141
  export * from '../Libraries/Types/CoreEventTypes';
143
142
  export * from '../Libraries/Utilities/Appearance';
144
143
  export * from '../Libraries/Utilities/BackHandler';
144
+ export * from '../src/private/devmenu/DevMenu';
145
145
  export * from '../Libraries/Utilities/DevSettings';
146
146
  export * from '../Libraries/Utilities/Dimensions';
147
147
  export * from '../Libraries/Utilities/PixelRatio';
@@ -86,9 +86,7 @@ export interface NativeMethods {
86
86
  * _Can also be called with a relativeNativeNodeHandle but is deprecated._
87
87
  */
88
88
  measureLayout(
89
- relativeToNativeComponentRef:
90
- | React.ElementRef<HostComponent<unknown>>
91
- | number,
89
+ relativeToNativeComponentRef: HostInstance | number,
92
90
  onSuccess: MeasureLayoutOnSuccessCallback,
93
91
  onFail?: () => void,
94
92
  ): void;
@@ -111,10 +109,6 @@ export interface NativeMethods {
111
109
  * Removes focus from an input or view. This is the opposite of `focus()`.
112
110
  */
113
111
  blur(): void;
114
-
115
- refs: {
116
- [key: string]: React.Component<any, any>;
117
- };
118
112
  }
119
113
 
120
114
  /**
@@ -126,6 +120,8 @@ export type NativeMethodsMixin = NativeMethods;
126
120
  */
127
121
  export type NativeMethodsMixinType = NativeMethods;
128
122
 
123
+ export type HostInstance = NativeMethods;
124
+
129
125
  /**
130
126
  * Represents a native component, such as those returned from `requireNativeComponent`.
131
127
  *
@@ -139,5 +135,5 @@ export interface HostComponent<P>
139
135
  React.ComponentClass<P>,
140
136
  Exclude<keyof React.ComponentClass<P>, 'new'>
141
137
  > {
142
- new (props: P, context?: any): React.Component<P> & Readonly<NativeMethods>;
138
+ new (props: P, context?: any): React.Component<P> & HostInstance;
143
139
  }
@@ -1,35 +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
- */
10
-
11
- import DevSettings from '../Utilities/DevSettings';
12
- import NativeDevToolsSettingsManager from './NativeDevToolsSettingsManager';
13
-
14
- module.exports = {
15
- setConsolePatchSettings(newSettings: string) {
16
- NativeDevToolsSettingsManager?.setConsolePatchSettings(newSettings);
17
- },
18
- getConsolePatchSettings(): ?string {
19
- return NativeDevToolsSettingsManager?.getConsolePatchSettings();
20
- },
21
- setProfilingSettings(newSettings: string) {
22
- if (NativeDevToolsSettingsManager?.setProfilingSettings != null) {
23
- NativeDevToolsSettingsManager.setProfilingSettings(newSettings);
24
- }
25
- },
26
- getProfilingSettings(): ?string {
27
- if (NativeDevToolsSettingsManager?.getProfilingSettings != null) {
28
- return NativeDevToolsSettingsManager.getProfilingSettings();
29
- }
30
- return null;
31
- },
32
- reload(): void {
33
- DevSettings?.reload();
34
- },
35
- };
@@ -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
- export interface DevToolsSettingsManagerStatic {
12
- reload(): void;
13
- setConsolePatchSettings(newSettings: string): void;
14
- getConsolePatchSettings(): string | null;
15
- setProfilingSettings(newSettings: string): void;
16
- getProfilingSettings(): string | null;
17
- }
18
-
19
- export const DevToolsSettingsManager: DevToolsSettingsManagerStatic;
20
- export type DevToolsSettingsManager = DevToolsSettingsManagerStatic;
@@ -1,49 +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
- */
10
-
11
- import Settings from '../Settings/Settings';
12
- import DevSettings from '../Utilities/DevSettings';
13
-
14
- const CONSOLE_PATCH_SETTINGS_KEY = 'ReactDevTools::ConsolePatchSettings';
15
- const PROFILING_SETTINGS_KEY = 'ReactDevTools::ProfilingSettings';
16
-
17
- const DevToolsSettingsManager = {
18
- setConsolePatchSettings(newConsolePatchSettings: string): void {
19
- Settings.set({
20
- [CONSOLE_PATCH_SETTINGS_KEY]: newConsolePatchSettings,
21
- });
22
- },
23
- getConsolePatchSettings(): ?string {
24
- const value = Settings.get(CONSOLE_PATCH_SETTINGS_KEY);
25
- if (typeof value === 'string') {
26
- return value;
27
- }
28
- return null;
29
- },
30
-
31
- setProfilingSettings(newProfilingSettings: string): void {
32
- Settings.set({
33
- [PROFILING_SETTINGS_KEY]: newProfilingSettings,
34
- });
35
- },
36
- getProfilingSettings(): ?string {
37
- const value = Settings.get(PROFILING_SETTINGS_KEY);
38
- if (typeof value === 'string') {
39
- return value;
40
- }
41
- return null;
42
- },
43
-
44
- reload(): void {
45
- DevSettings?.reload();
46
- },
47
- };
48
-
49
- module.exports = DevToolsSettingsManager;
@@ -1,35 +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
- */
10
-
11
- import DevSettings from '../Utilities/DevSettings';
12
- import NativeDevToolsSettingsManager from './NativeDevToolsSettingsManager';
13
-
14
- module.exports = {
15
- setConsolePatchSettings(newSettings: string) {
16
- NativeDevToolsSettingsManager?.setConsolePatchSettings(newSettings);
17
- },
18
- getConsolePatchSettings(): ?string {
19
- return NativeDevToolsSettingsManager?.getConsolePatchSettings();
20
- },
21
- setProfilingSettings(newSettings: string) {
22
- if (NativeDevToolsSettingsManager?.setProfilingSettings != null) {
23
- NativeDevToolsSettingsManager.setProfilingSettings(newSettings);
24
- }
25
- },
26
- getProfilingSettings(): ?string {
27
- if (NativeDevToolsSettingsManager?.getProfilingSettings != null) {
28
- return NativeDevToolsSettingsManager.getProfilingSettings();
29
- }
30
- return null;
31
- },
32
- reload(): void {
33
- DevSettings?.reload();
34
- },
35
- };
@@ -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/NativeDevToolsSettingsManager';
12
- import NativeDevToolsSettingsManager from '../../src/private/specs/modules/NativeDevToolsSettingsManager';
13
- export default NativeDevToolsSettingsManager;
@@ -1,17 +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
- */
10
-
11
- 'use strict';
12
-
13
- const createReactNativeComponentClass = require('../Renderer/shims/createReactNativeComponentClass');
14
-
15
- module.exports = {
16
- createReactNativeComponentClass,
17
- };