@office-iss/react-native-win32 0.74.3 → 0.75.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 (206) hide show
  1. package/.flowconfig +9 -4
  2. package/CHANGELOG.json +563 -45
  3. package/CHANGELOG.md +169 -26
  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 +20 -73
  25. package/Libraries/Components/TextInput/TextInput.win32.js +21 -75
  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 +4 -4
  145. package/Libraries/Utilities/RCTLog.js +1 -0
  146. package/Libraries/Utilities/ReactNativeTestTools.js +12 -24
  147. package/Libraries/Utilities/verifyComponentAttributeEquivalence.js +11 -6
  148. package/Libraries/__tests__/ButtonWin32-test.js +7 -6
  149. package/Libraries/promiseRejectionTrackingOptions.js +1 -0
  150. package/jest/mockComponent.js +7 -0
  151. package/jest/renderer.js +25 -14
  152. package/jest/setup.js +19 -13
  153. package/jest.config.js +2 -1
  154. package/overrides.json +30 -29
  155. package/package.json +27 -25
  156. package/rn-get-polyfills.js +1 -0
  157. package/src/private/core/composeStyles.js +27 -0
  158. package/src/private/featureflags/ReactNativeFeatureFlags.js +93 -33
  159. package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +23 -4
  160. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +56 -0
  161. package/src/private/fusebox/setUpFuseboxReactDevToolsDispatcher.js +108 -0
  162. package/src/private/specs/modules/NativeBlobModule.js +4 -2
  163. package/src/private/specs/modules/NativeDevSettings.js +1 -0
  164. package/src/private/specs/modules/NativePushNotificationManagerIOS.js +0 -4
  165. package/src/private/specs/modules/NativeUIManager.js +0 -7
  166. package/src/private/webapis/dom/geometry/DOMRectReadOnly.js +24 -24
  167. package/src/private/webapis/dom/nodes/ReactNativeElement.js +11 -14
  168. package/src/private/webapis/dom/nodes/ReadOnlyCharacterData.js +2 -3
  169. package/src/private/webapis/dom/nodes/ReadOnlyElement.js +24 -54
  170. package/src/private/webapis/dom/nodes/ReadOnlyNode.js +5 -13
  171. package/src/private/webapis/dom/nodes/specs/NativeDOM.js +468 -0
  172. package/src/private/webapis/dom/nodes/specs/__mocks__/NativeDOMMock.js +413 -0
  173. package/src/private/webapis/dom/oldstylecollections/DOMRectList.js +4 -4
  174. package/src/private/webapis/dom/oldstylecollections/HTMLCollection.js +4 -4
  175. package/src/private/webapis/dom/oldstylecollections/NodeList.js +5 -5
  176. package/src/private/webapis/idlecallbacks/specs/NativeIdleCallbacks.js +34 -0
  177. package/src/private/webapis/microtasks/specs/NativeMicrotasks.js +21 -0
  178. package/src/private/webapis/performance/EventCounts.js +1 -1
  179. package/src/private/webapis/performance/MemoryInfo.js +9 -9
  180. package/src/private/webapis/performance/Performance.js +10 -56
  181. package/src/private/webapis/performance/PerformanceObserver.js +30 -22
  182. package/src/private/webapis/performance/RawPerformanceEntry.js +2 -7
  183. package/src/private/webapis/performance/ReactNativeStartupTiming.js +18 -18
  184. package/src/private/webapis/performance/UserTiming.js +63 -0
  185. package/src/private/webapis/performance/{NativePerformance.js → specs/NativePerformance.js} +3 -2
  186. package/src/private/webapis/performance/{NativePerformanceObserver.js → specs/NativePerformanceObserver.js} +2 -2
  187. package/src/private/webapis/performance/{__mocks__ → specs/__mocks__}/NativePerformance.js +1 -1
  188. package/src/private/webapis/performance/{__mocks__ → specs/__mocks__}/NativePerformanceObserver.js +3 -4
  189. package/src-win/Libraries/Components/View/ViewPropTypes.d.ts +7 -49
  190. package/types/modules/globals.d.ts +4 -0
  191. package/Libraries/Components/ScrollView/ScrollView.win32.js +0 -1915
  192. package/Libraries/NativeModules/specs/NativeAnimationsDebugModule.js +0 -13
  193. package/Libraries/Utilities/LoadingView.ios.js +0 -50
  194. package/Libraries/Utilities/LoadingView.js +0 -16
  195. package/jest/ReactNativeInternalFeatureFlagsMock.js +0 -13
  196. package/src/private/featureflags/NativeReactNativeFeatureFlags.js +0 -44
  197. package/src/private/featureflags/__tests__/ReactNativeFeatureFlags-test.js +0 -92
  198. package/src/private/specs/modules/NativeAnimationsDebugModule.js +0 -20
  199. package/src/private/webapis/dom/oldstylecollections/__tests__/DOMRectList-test.js +0 -85
  200. package/src/private/webapis/dom/oldstylecollections/__tests__/HTMLCollection-test.js +0 -80
  201. package/src/private/webapis/dom/oldstylecollections/__tests__/NodeList-test.js +0 -161
  202. package/src/private/webapis/performance/__tests__/EventCounts-test.js +0 -116
  203. package/src/private/webapis/performance/__tests__/NativePerformanceMock-test.js +0 -82
  204. package/src/private/webapis/performance/__tests__/NativePerformanceObserverMock-test.js +0 -108
  205. package/src/private/webapis/performance/__tests__/Performance-test.js +0 -117
  206. package/src/private/webapis/performance/__tests__/PerformanceObserver-test.js +0 -208
@@ -12,13 +12,15 @@
12
12
 
13
13
  import type {HighResTimeStamp, PerformanceEntryType} from './PerformanceEntry';
14
14
  import type {PerformanceEntryList} from './PerformanceObserver';
15
+ import type {
16
+ PerformanceMarkOptions,
17
+ PerformanceMeasureOptions,
18
+ } from './UserTiming';
15
19
 
16
20
  import warnOnce from '../../../../Libraries/Utilities/warnOnce';
17
21
  import EventCounts from './EventCounts';
18
22
  import MemoryInfo from './MemoryInfo';
19
- import NativePerformance from './NativePerformance';
20
- import NativePerformanceObserver from './NativePerformanceObserver';
21
- import {ALWAYS_LOGGED_ENTRY_TYPES, PerformanceEntry} from './PerformanceEntry';
23
+ import {ALWAYS_LOGGED_ENTRY_TYPES} from './PerformanceEntry';
22
24
  import {warnNoNativePerformanceObserver} from './PerformanceObserver';
23
25
  import {
24
26
  performanceEntryTypeToRaw,
@@ -26,22 +28,17 @@ import {
26
28
  } from './RawPerformanceEntry';
27
29
  import {RawPerformanceEntryTypeValues} from './RawPerformanceEntry';
28
30
  import ReactNativeStartupTiming from './ReactNativeStartupTiming';
29
-
30
- type DetailType = mixed;
31
-
32
- export type PerformanceMarkOptions = {
33
- detail?: DetailType,
34
- startTime?: HighResTimeStamp,
35
- };
31
+ import NativePerformance from './specs/NativePerformance';
32
+ import NativePerformanceObserver from './specs/NativePerformanceObserver';
33
+ import {PerformanceMark, PerformanceMeasure} from './UserTiming';
36
34
 
37
35
  declare var global: {
38
36
  // This value is defined directly via JSI, if available.
39
37
  +nativePerformanceNow?: ?() => number,
40
38
  };
41
39
 
42
- const getCurrentTimeStamp: () => HighResTimeStamp = global.nativePerformanceNow
43
- ? global.nativePerformanceNow
44
- : () => Date.now();
40
+ const getCurrentTimeStamp: () => HighResTimeStamp =
41
+ NativePerformance?.now ?? global.nativePerformanceNow ?? (() => Date.now());
45
42
 
46
43
  // We want some of the performance entry types to be always logged,
47
44
  // even if they are not currently observed - this is either to be able to
@@ -54,49 +51,6 @@ if (NativePerformanceObserver?.setIsBuffered) {
54
51
  );
55
52
  }
56
53
 
57
- export class PerformanceMark extends PerformanceEntry {
58
- detail: DetailType;
59
-
60
- constructor(markName: string, markOptions?: PerformanceMarkOptions) {
61
- super({
62
- name: markName,
63
- entryType: 'mark',
64
- startTime: markOptions?.startTime ?? getCurrentTimeStamp(),
65
- duration: 0,
66
- });
67
-
68
- if (markOptions) {
69
- this.detail = markOptions.detail;
70
- }
71
- }
72
- }
73
-
74
- export type TimeStampOrName = HighResTimeStamp | string;
75
-
76
- export type PerformanceMeasureOptions = {
77
- detail?: DetailType,
78
- start?: TimeStampOrName,
79
- end?: TimeStampOrName,
80
- duration?: HighResTimeStamp,
81
- };
82
-
83
- export class PerformanceMeasure extends PerformanceEntry {
84
- detail: DetailType;
85
-
86
- constructor(measureName: string, measureOptions?: PerformanceMeasureOptions) {
87
- super({
88
- name: measureName,
89
- entryType: 'measure',
90
- startTime: 0,
91
- duration: measureOptions?.duration ?? 0,
92
- });
93
-
94
- if (measureOptions) {
95
- this.detail = measureOptions.detail;
96
- }
97
- }
98
- }
99
-
100
54
  function warnNoNativePerformance() {
101
55
  warnOnce(
102
56
  'missing-native-performance',
@@ -11,7 +11,6 @@
11
11
  import type {HighResTimeStamp, PerformanceEntryType} from './PerformanceEntry';
12
12
 
13
13
  import warnOnce from '../../../../Libraries/Utilities/warnOnce';
14
- import NativePerformanceObserver from './NativePerformanceObserver';
15
14
  import {PerformanceEntry} from './PerformanceEntry';
16
15
  import PerformanceEventTiming from './PerformanceEventTiming';
17
16
  import {
@@ -19,22 +18,25 @@ import {
19
18
  rawToPerformanceEntry,
20
19
  rawToPerformanceEntryType,
21
20
  } from './RawPerformanceEntry';
21
+ import NativePerformanceObserver from './specs/NativePerformanceObserver';
22
22
 
23
23
  export type PerformanceEntryList = $ReadOnlyArray<PerformanceEntry>;
24
24
 
25
+ export {PerformanceEntry} from './PerformanceEntry';
26
+
25
27
  export class PerformanceObserverEntryList {
26
- _entries: PerformanceEntryList;
28
+ #entries: PerformanceEntryList;
27
29
 
28
30
  constructor(entries: PerformanceEntryList) {
29
- this._entries = entries;
31
+ this.#entries = entries;
30
32
  }
31
33
 
32
34
  getEntries(): PerformanceEntryList {
33
- return this._entries;
35
+ return this.#entries;
34
36
  }
35
37
 
36
38
  getEntriesByType(type: PerformanceEntryType): PerformanceEntryList {
37
- return this._entries.filter(entry => entry.entryType === type);
39
+ return this.#entries.filter(entry => entry.entryType === type);
38
40
  }
39
41
 
40
42
  getEntriesByName(
@@ -42,9 +44,9 @@ export class PerformanceObserverEntryList {
42
44
  type?: PerformanceEntryType,
43
45
  ): PerformanceEntryList {
44
46
  if (type === undefined) {
45
- return this._entries.filter(entry => entry.name === name);
47
+ return this.#entries.filter(entry => entry.name === name);
46
48
  } else {
47
- return this._entries.filter(
49
+ return this.#entries.filter(
48
50
  entry => entry.name === name && entry.entryType === type,
49
51
  );
50
52
  }
@@ -98,11 +100,17 @@ const onPerformanceEntry = () => {
98
100
  const durationThreshold = observerConfig.entryTypes.get(entry.entryType);
99
101
  return entry.duration >= (durationThreshold ?? 0);
100
102
  });
101
- observerConfig.callback(
102
- new PerformanceObserverEntryList(entriesForObserver),
103
- observer,
104
- droppedEntriesCount,
105
- );
103
+ if (entriesForObserver.length !== 0) {
104
+ try {
105
+ observerConfig.callback(
106
+ new PerformanceObserverEntryList(entriesForObserver),
107
+ observer,
108
+ droppedEntriesCount,
109
+ );
110
+ } catch (error) {
111
+ console.error(error);
112
+ }
113
+ }
106
114
  }
107
115
  };
108
116
 
@@ -167,11 +175,11 @@ function getSupportedPerformanceEntryTypes(): $ReadOnlyArray<PerformanceEntryTyp
167
175
  * observer.observe({ type: "event" });
168
176
  */
169
177
  export default class PerformanceObserver {
170
- _callback: PerformanceObserverCallback;
171
- _type: 'single' | 'multiple' | void;
178
+ #callback: PerformanceObserverCallback;
179
+ #type: 'single' | 'multiple' | void;
172
180
 
173
181
  constructor(callback: PerformanceObserverCallback) {
174
- this._callback = callback;
182
+ this.#callback = callback;
175
183
  }
176
184
 
177
185
  observe(options: PerformanceObserverInit): void {
@@ -180,17 +188,17 @@ export default class PerformanceObserver {
180
188
  return;
181
189
  }
182
190
 
183
- this._validateObserveOptions(options);
191
+ this.#validateObserveOptions(options);
184
192
 
185
193
  let requestedEntryTypes;
186
194
 
187
195
  if (options.entryTypes) {
188
- this._type = 'multiple';
196
+ this.#type = 'multiple';
189
197
  requestedEntryTypes = new Map(
190
198
  options.entryTypes.map(t => [t, undefined]),
191
199
  );
192
200
  } else {
193
- this._type = 'single';
201
+ this.#type = 'single';
194
202
  requestedEntryTypes = new Map([
195
203
  [options.type, options.durationThreshold],
196
204
  ]);
@@ -209,7 +217,7 @@ export default class PerformanceObserver {
209
217
  }
210
218
 
211
219
  registeredObservers.set(this, {
212
- callback: this._callback,
220
+ callback: this.#callback,
213
221
  entryTypes: nextEntryTypes,
214
222
  });
215
223
 
@@ -276,7 +284,7 @@ export default class PerformanceObserver {
276
284
  applyDurationThresholds();
277
285
  }
278
286
 
279
- _validateObserveOptions(options: PerformanceObserverInit): void {
287
+ #validateObserveOptions(options: PerformanceObserverInit): void {
280
288
  const {type, entryTypes, durationThreshold} = options;
281
289
 
282
290
  if (!type && !entryTypes) {
@@ -291,13 +299,13 @@ export default class PerformanceObserver {
291
299
  );
292
300
  }
293
301
 
294
- if (this._type === 'multiple' && type) {
302
+ if (this.#type === 'multiple' && type) {
295
303
  throw new Error(
296
304
  "Failed to execute 'observe' on 'PerformanceObserver': This observer has performed observe({entryTypes:...}, therefore it cannot perform observe({type:...})",
297
305
  );
298
306
  }
299
307
 
300
- if (this._type === 'single' && entryTypes) {
308
+ if (this.#type === 'single' && entryTypes) {
301
309
  throw new Error(
302
310
  "Failed to execute 'observe' on 'PerformanceObserver': This PerformanceObserver has performed observe({type:...}, therefore it cannot perform observe({entryTypes:...})",
303
311
  );
@@ -8,17 +8,16 @@
8
8
  * @flow strict
9
9
  */
10
10
 
11
+ import type {PerformanceEntryType} from './PerformanceEntry';
11
12
  import type {
12
13
  RawPerformanceEntry,
13
14
  RawPerformanceEntryType,
14
- } from './NativePerformanceObserver';
15
- import type {PerformanceEntryType} from './PerformanceEntry';
15
+ } from './specs/NativePerformanceObserver';
16
16
 
17
17
  import {PerformanceEntry} from './PerformanceEntry';
18
18
  import PerformanceEventTiming from './PerformanceEventTiming';
19
19
 
20
20
  export const RawPerformanceEntryTypeValues = {
21
- UNDEFINED: 0,
22
21
  MARK: 1,
23
22
  MEASURE: 2,
24
23
  EVENT: 3,
@@ -56,10 +55,6 @@ export function rawToPerformanceEntryType(
56
55
  return 'measure';
57
56
  case RawPerformanceEntryTypeValues.EVENT:
58
57
  return 'event';
59
- case RawPerformanceEntryTypeValues.UNDEFINED:
60
- throw new TypeError(
61
- "rawToPerformanceEntryType: UNDEFINED can't be cast to PerformanceEntryType",
62
- );
63
58
  default:
64
59
  throw new TypeError(
65
60
  `rawToPerformanceEntryType: unexpected performance entry type received: ${type}`,
@@ -27,22 +27,22 @@ export default class ReactNativeStartupTiming {
27
27
  // We do NOT match web spect here for two reasons:
28
28
  // 1. The `ReactNativeStartupTiming` is non-standard API
29
29
  // 2. The timing information is relative to the time origin, which means `0` has valid meaning
30
- _startTime: ?number;
31
- _endTime: ?number;
32
- _initializeRuntimeStart: ?number;
33
- _initializeRuntimeEnd: ?number;
34
- _executeJavaScriptBundleEntryPointStart: ?number;
35
- _executeJavaScriptBundleEntryPointEnd: ?number;
30
+ #startTime: ?number;
31
+ #endTime: ?number;
32
+ #initializeRuntimeStart: ?number;
33
+ #initializeRuntimeEnd: ?number;
34
+ #executeJavaScriptBundleEntryPointStart: ?number;
35
+ #executeJavaScriptBundleEntryPointEnd: ?number;
36
36
 
37
37
  constructor(startUpTiming: ?ReactNativeStartupTimingLike) {
38
38
  if (startUpTiming != null) {
39
- this._startTime = startUpTiming.startTime;
40
- this._endTime = startUpTiming.endTime;
41
- this._initializeRuntimeStart = startUpTiming.initializeRuntimeStart;
42
- this._initializeRuntimeEnd = startUpTiming.initializeRuntimeEnd;
43
- this._executeJavaScriptBundleEntryPointStart =
39
+ this.#startTime = startUpTiming.startTime;
40
+ this.#endTime = startUpTiming.endTime;
41
+ this.#initializeRuntimeStart = startUpTiming.initializeRuntimeStart;
42
+ this.#initializeRuntimeEnd = startUpTiming.initializeRuntimeEnd;
43
+ this.#executeJavaScriptBundleEntryPointStart =
44
44
  startUpTiming.executeJavaScriptBundleEntryPointStart;
45
- this._executeJavaScriptBundleEntryPointEnd =
45
+ this.#executeJavaScriptBundleEntryPointEnd =
46
46
  startUpTiming.executeJavaScriptBundleEntryPointEnd;
47
47
  }
48
48
  }
@@ -51,41 +51,41 @@ export default class ReactNativeStartupTiming {
51
51
  * Start time of the RN app startup process. This is provided by the platform by implementing the `ReactMarker.setAppStartTime` API in the native platform code.
52
52
  */
53
53
  get startTime(): ?number {
54
- return this._startTime;
54
+ return this.#startTime;
55
55
  }
56
56
 
57
57
  /**
58
58
  * End time of the RN app startup process. This is equal to `executeJavaScriptBundleEntryPointEnd`.
59
59
  */
60
60
  get endTime(): ?number {
61
- return this._endTime;
61
+ return this.#endTime;
62
62
  }
63
63
 
64
64
  /**
65
65
  * Start time when RN runtime get initialized. This is when RN infra first kicks in app startup process.
66
66
  */
67
67
  get initializeRuntimeStart(): ?number {
68
- return this._initializeRuntimeStart;
68
+ return this.#initializeRuntimeStart;
69
69
  }
70
70
 
71
71
  /**
72
72
  * End time when RN runtime get initialized. This is the last marker before ends of the app startup process.
73
73
  */
74
74
  get initializeRuntimeEnd(): ?number {
75
- return this._initializeRuntimeEnd;
75
+ return this.#initializeRuntimeEnd;
76
76
  }
77
77
 
78
78
  /**
79
79
  * Start time of JS bundle being executed. This indicates the RN JS bundle is loaded and start to be evaluated.
80
80
  */
81
81
  get executeJavaScriptBundleEntryPointStart(): ?number {
82
- return this._executeJavaScriptBundleEntryPointStart;
82
+ return this.#executeJavaScriptBundleEntryPointStart;
83
83
  }
84
84
 
85
85
  /**
86
86
  * End time of JS bundle being executed. This indicates all the synchronous entry point jobs are finished.
87
87
  */
88
88
  get executeJavaScriptBundleEntryPointEnd(): ?number {
89
- return this._executeJavaScriptBundleEntryPointEnd;
89
+ return this.#executeJavaScriptBundleEntryPointEnd;
90
90
  }
91
91
  }
@@ -0,0 +1,63 @@
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
+ import type {HighResTimeStamp} from './PerformanceEntry';
12
+
13
+ import {PerformanceEntry} from './PerformanceEntry';
14
+
15
+ type DetailType = mixed;
16
+
17
+ export type PerformanceMarkOptions = {
18
+ detail?: DetailType,
19
+ startTime?: HighResTimeStamp,
20
+ };
21
+
22
+ export type TimeStampOrName = HighResTimeStamp | string;
23
+
24
+ export type PerformanceMeasureOptions = {
25
+ detail?: DetailType,
26
+ start?: TimeStampOrName,
27
+ end?: TimeStampOrName,
28
+ duration?: HighResTimeStamp,
29
+ };
30
+
31
+ export class PerformanceMark extends PerformanceEntry {
32
+ detail: DetailType;
33
+
34
+ constructor(markName: string, markOptions?: PerformanceMarkOptions) {
35
+ super({
36
+ name: markName,
37
+ entryType: 'mark',
38
+ startTime: markOptions?.startTime ?? performance.now(),
39
+ duration: 0,
40
+ });
41
+
42
+ if (markOptions) {
43
+ this.detail = markOptions.detail;
44
+ }
45
+ }
46
+ }
47
+
48
+ export class PerformanceMeasure extends PerformanceEntry {
49
+ detail: DetailType;
50
+
51
+ constructor(measureName: string, measureOptions?: PerformanceMeasureOptions) {
52
+ super({
53
+ name: measureName,
54
+ entryType: 'measure',
55
+ startTime: 0,
56
+ duration: measureOptions?.duration ?? 0,
57
+ });
58
+
59
+ if (measureOptions) {
60
+ this.detail = measureOptions.detail;
61
+ }
62
+ }
63
+ }
@@ -8,15 +8,16 @@
8
8
  * @format
9
9
  */
10
10
 
11
- import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport';
11
+ import type {TurboModule} from '../../../../../Libraries/TurboModule/RCTExport';
12
12
 
13
- import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry';
13
+ import * as TurboModuleRegistry from '../../../../../Libraries/TurboModule/TurboModuleRegistry';
14
14
 
15
15
  export type NativeMemoryInfo = {[key: string]: ?number};
16
16
 
17
17
  export type ReactNativeStartupTiming = {[key: string]: ?number};
18
18
 
19
19
  export interface Spec extends TurboModule {
20
+ +now?: () => number;
20
21
  +mark: (name: string, startTime: number) => void;
21
22
  +measure: (
22
23
  name: string,
@@ -8,9 +8,9 @@
8
8
  * @format
9
9
  */
10
10
 
11
- import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport';
11
+ import type {TurboModule} from '../../../../../Libraries/TurboModule/RCTExport';
12
12
 
13
- import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry';
13
+ import * as TurboModuleRegistry from '../../../../../Libraries/TurboModule/TurboModuleRegistry';
14
14
 
15
15
  export type RawPerformanceEntryType = number;
16
16
 
@@ -14,8 +14,8 @@ import type {
14
14
  Spec as NativePerformance,
15
15
  } from '../NativePerformance';
16
16
 
17
+ import {RawPerformanceEntryTypeValues} from '../../RawPerformanceEntry';
17
18
  import NativePerformanceObserver from '../NativePerformanceObserver';
18
- import {RawPerformanceEntryTypeValues} from '../RawPerformanceEntry';
19
19
 
20
20
  const marks: Map<string, number> = new Map();
21
21
 
@@ -15,7 +15,7 @@ import type {
15
15
  Spec as NativePerformanceObserver,
16
16
  } from '../NativePerformanceObserver';
17
17
 
18
- import {RawPerformanceEntryTypeValues} from '../RawPerformanceEntry';
18
+ import {RawPerformanceEntryTypeValues} from '../../RawPerformanceEntry';
19
19
 
20
20
  const reportingType: Set<RawPerformanceEntryType> = new Set();
21
21
  const isAlwaysLogged: Set<RawPerformanceEntryType> = new Set();
@@ -95,11 +95,10 @@ const NativePerformanceObserverMock: NativePerformanceObserver = {
95
95
  durationThresholds.set(entryType, durationThreshold);
96
96
  },
97
97
 
98
- clearEntries: (entryType: RawPerformanceEntryType, entryName?: string) => {
98
+ clearEntries: (entryType?: RawPerformanceEntryType, entryName?: string) => {
99
99
  entries = entries.filter(
100
100
  e =>
101
- (entryType !== RawPerformanceEntryTypeValues.UNDEFINED &&
102
- e.entryType !== entryType) ||
101
+ (entryType != null && e.entryType !== entryType) ||
103
102
  (entryName != null && e.name !== entryName),
104
103
  );
105
104
  },
@@ -21,48 +21,6 @@ import {
21
21
  import {Touchable} from 'react-native/Libraries/Components/Touchable/Touchable';
22
22
  import {AccessibilityProps} from './ViewAccessibility';
23
23
 
24
- export type TVParallaxProperties = {
25
- /**
26
- * If true, parallax effects are enabled. Defaults to true.
27
- */
28
- enabled?: boolean | undefined;
29
-
30
- /**
31
- * Defaults to 2.0.
32
- */
33
- shiftDistanceX?: number | undefined;
34
-
35
- /**
36
- * Defaults to 2.0.
37
- */
38
- shiftDistanceY?: number | undefined;
39
-
40
- /**
41
- * Defaults to 0.05.
42
- */
43
- tiltAngle?: number | undefined;
44
-
45
- /**
46
- * Defaults to 1.0
47
- */
48
- magnification?: number | undefined;
49
-
50
- /**
51
- * Defaults to 1.0
52
- */
53
- pressMagnification?: number | undefined;
54
-
55
- /**
56
- * Defaults to 0.3
57
- */
58
- pressDuration?: number | undefined;
59
-
60
- /**
61
- * Defaults to 0.3
62
- */
63
- pressDelay?: number | undefined;
64
- };
65
-
66
24
  export interface TVViewPropsIOS {
67
25
  /**
68
26
  * *(Apple TV only)* When set to true, this view will be focusable
@@ -79,13 +37,6 @@ export interface TVViewPropsIOS {
79
37
  */
80
38
  hasTVPreferredFocus?: boolean | undefined;
81
39
 
82
- /**
83
- * *(Apple TV only)* Object with properties to control Apple TV parallax effects.
84
- *
85
- * @platform ios
86
- */
87
- tvParallaxProperties?: TVParallaxProperties | undefined;
88
-
89
40
  /**
90
41
  * *(Apple TV only)* May be used to change the appearance of the Apple TV parallax effect when this view goes in or out of focus. Defaults to 2.0.
91
42
  *
@@ -137,6 +88,13 @@ export interface ViewPropsAndroid {
137
88
  */
138
89
  collapsable?: boolean | undefined;
139
90
 
91
+ /**
92
+ * Setting to false prevents direct children of the view from being removed
93
+ * from the native view hierarchy, similar to the effect of setting
94
+ * `collapsable={false}` on each child.
95
+ */
96
+ collapsableChildren?: boolean | undefined;
97
+
140
98
  /**
141
99
  * Whether this view should render itself (and all of its children) into a single hardware texture on the GPU.
142
100
  *
@@ -132,6 +132,10 @@ declare interface Headers {
132
132
  get(name: string): string | null;
133
133
  has(name: string): boolean;
134
134
  set(name: string, value: string): void;
135
+ entries(): IterableIterator<[string, string]>;
136
+ keys(): IterableIterator<string>;
137
+ values(): IterableIterator<string>;
138
+ [Symbol.iterator](): IterableIterator<[string, string]>;
135
139
  }
136
140
 
137
141
  declare var Headers: {