@office-iss/react-native-win32 0.84.0-preview.2 → 0.85.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 (310) hide show
  1. package/.eslintignore +1 -0
  2. package/.flowconfig +1 -5
  3. package/CHANGELOG.json +79 -13
  4. package/CHANGELOG.md +14 -8
  5. package/IntegrationTests/IntegrationTestHarnessTest.js +1 -1
  6. package/IntegrationTests/LayoutEventsTest.js +1 -1
  7. package/IntegrationTests/TimersTest.js +1 -1
  8. package/Libraries/ActionSheetIOS/ActionSheetIOS.js +3 -3
  9. package/Libraries/Animated/Animated.d.ts +8 -1
  10. package/Libraries/Animated/AnimatedEvent.js +4 -4
  11. package/Libraries/Animated/AnimatedImplementation.js +2 -2
  12. package/Libraries/Animated/animations/Animation.js +3 -3
  13. package/Libraries/Animated/animations/DecayAnimation.js +4 -4
  14. package/Libraries/Animated/animations/SpringAnimation.js +5 -5
  15. package/Libraries/Animated/animations/TimingAnimation.js +5 -5
  16. package/Libraries/Animated/createAnimatedComponent.js +7 -7
  17. package/Libraries/Animated/nodes/AnimatedColor.js +2 -2
  18. package/Libraries/Animated/nodes/AnimatedInterpolation.js +12 -12
  19. package/Libraries/Animated/nodes/AnimatedNode.js +3 -3
  20. package/Libraries/Animated/nodes/AnimatedObject.js +3 -3
  21. package/Libraries/Animated/nodes/AnimatedProps.js +6 -6
  22. package/Libraries/Animated/nodes/AnimatedStyle.js +7 -7
  23. package/Libraries/Animated/nodes/AnimatedTransform.js +13 -13
  24. package/Libraries/Animated/nodes/AnimatedValue.js +1 -1
  25. package/Libraries/Animated/nodes/AnimatedValueXY.js +1 -1
  26. package/Libraries/Animated/nodes/AnimatedWithChildren.js +1 -1
  27. package/Libraries/Animated/useAnimatedColor.d.ts +15 -0
  28. package/Libraries/Animated/useAnimatedColor.js +25 -0
  29. package/Libraries/Animated/useAnimatedValueXY.d.ts +15 -0
  30. package/Libraries/Animated/useAnimatedValueXY.js +26 -0
  31. package/Libraries/AppState/AppState.js +1 -1
  32. package/Libraries/BatchedBridge/MessageQueue.js +3 -3
  33. package/Libraries/BatchedBridge/NativeModules.js +12 -10
  34. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +30 -26
  35. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.win32.js +34 -30
  36. package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +2 -2
  37. package/Libraries/Components/Button.js +2 -2
  38. package/Libraries/Components/Button.win32.js +2 -2
  39. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroidTypes.js +2 -2
  40. package/Libraries/Components/EnterString.win32.js +2 -2
  41. package/Libraries/Components/EnterString.win32.js.map +1 -1
  42. package/Libraries/Components/Keyboard/Keyboard.js +6 -6
  43. package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +1 -1
  44. package/Libraries/Components/LayoutConformance/LayoutConformance.js +1 -1
  45. package/Libraries/Components/LayoutConformance/LayoutConformanceNativeComponent.js +1 -1
  46. package/Libraries/Components/Pressable/Pressable.d.ts +5 -0
  47. package/Libraries/Components/Pressable/Pressable.js +3 -3
  48. package/Libraries/Components/Pressable/Pressable.win32.js +3 -3
  49. package/Libraries/Components/Pressable/useAndroidRippleForView.js +4 -4
  50. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.js +1 -1
  51. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidTypes.js +3 -3
  52. package/Libraries/Components/RefreshControl/RefreshControl.js +5 -5
  53. package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +8 -12
  54. package/Libraries/Components/ScrollView/ScrollView.d.ts +9 -0
  55. package/Libraries/Components/ScrollView/ScrollView.js +19 -9
  56. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +8 -18
  57. package/Libraries/Components/ScrollView/ScrollViewNativeComponentType.js +4 -3
  58. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +1 -1
  59. package/Libraries/Components/StaticRenderer.js +1 -1
  60. package/Libraries/Components/StatusBar/StatusBar.js +8 -8
  61. package/Libraries/Components/Switch/Switch.js +3 -3
  62. package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +33 -48
  63. package/Libraries/Components/TextInput/InputAccessoryView.js +1 -1
  64. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +6 -11
  65. package/Libraries/Components/TextInput/TextInput.flow.js +21 -20
  66. package/Libraries/Components/TextInput/TextInput.flow.win32.js +23 -22
  67. package/Libraries/Components/TextInput/TextInput.js +8 -4
  68. package/Libraries/Components/TextInput/TextInput.win32.js +3 -4
  69. package/Libraries/Components/Touchable/PooledClass.js +1 -1
  70. package/Libraries/Components/Touchable/Touchable.js +2 -2
  71. package/Libraries/Components/Touchable/Touchable.win32.js +2 -2
  72. package/Libraries/Components/Touchable/TouchableBounce.js +4 -4
  73. package/Libraries/Components/Touchable/TouchableHighlight.js +8 -8
  74. package/Libraries/Components/Touchable/TouchableNativeFeedback.js +7 -7
  75. package/Libraries/Components/Touchable/TouchableNativeFeedback.win32.js +7 -7
  76. package/Libraries/Components/Touchable/TouchableOpacity.js +4 -4
  77. package/Libraries/Components/Touchable/TouchableWin32.js +1 -1
  78. package/Libraries/Components/Touchable/TouchableWin32.js.map +1 -1
  79. package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +1 -1
  80. package/Libraries/Components/UnimplementedViews/UnimplementedView.js +1 -1
  81. package/Libraries/Components/View/ReactNativeStyleAttributes.js +68 -31
  82. package/Libraries/Components/View/ViewAccessibility.js +7 -7
  83. package/Libraries/Components/View/ViewAccessibility.win32.js +7 -7
  84. package/Libraries/Components/View/ViewPropTypes.js +14 -14
  85. package/Libraries/Components/View/ViewPropTypes.win32.js +16 -16
  86. package/Libraries/Core/Devtools/parseHermesStack.js +8 -8
  87. package/Libraries/Core/Devtools/symbolicateStackTrace.js +2 -2
  88. package/Libraries/Core/ExceptionsManager.js +2 -2
  89. package/Libraries/Core/ExtendedError.js +3 -3
  90. package/Libraries/Core/RawEventEmitter.js +1 -1
  91. package/Libraries/Core/ReactNativeVersion.js +2 -2
  92. package/Libraries/Core/Timers/JSTimers.js +3 -2
  93. package/Libraries/Core/setUpDeveloperTools.js +1 -1
  94. package/Libraries/Core/setUpErrorHandling.js +4 -2
  95. package/Libraries/Core/setUpReactDevTools.js +23 -6
  96. package/Libraries/Core/setUpSegmentFetcher.js +1 -1
  97. package/Libraries/Debugging/DebuggingOverlay.js +2 -2
  98. package/Libraries/EventEmitter/NativeEventEmitter.js +7 -9
  99. package/Libraries/EventEmitter/RCTDeviceEventEmitter.js +1 -1
  100. package/Libraries/Image/AssetSourceResolver.js +1 -1
  101. package/Libraries/Image/Image.android.js +172 -306
  102. package/Libraries/Image/ImageProps.js +9 -11
  103. package/Libraries/Image/ImageSource.js +2 -2
  104. package/Libraries/Image/ImageSourceUtils.js +8 -4
  105. package/Libraries/Image/ImageTypes.flow.js +2 -2
  106. package/Libraries/Image/ImageViewNativeComponent.js +7 -16
  107. package/Libraries/Image/nativeImageSource.js +1 -1
  108. package/Libraries/Interaction/InteractionManager.js +5 -4
  109. package/Libraries/Interaction/PanResponder.js +1 -1
  110. package/Libraries/LayoutAnimation/LayoutAnimation.js +2 -2
  111. package/Libraries/Linking/Linking.js +1 -1
  112. package/Libraries/Lists/FlatList.js +3 -3
  113. package/Libraries/Lists/SectionList.js +1 -1
  114. package/Libraries/Lists/SectionListModern.js +2 -2
  115. package/Libraries/LogBox/Data/LogBoxData.js +38 -24
  116. package/Libraries/LogBox/Data/LogBoxLog.js +43 -112
  117. package/Libraries/LogBox/Data/parseLogBoxLog.js +21 -117
  118. package/Libraries/LogBox/LogBox.js +42 -19
  119. package/Libraries/LogBox/LogBoxInspectorContainer.js +2 -2
  120. package/Libraries/LogBox/LogBoxNotificationContainer.js +2 -2
  121. package/Libraries/LogBox/UI/LogBoxButton.js +14 -16
  122. package/Libraries/LogBox/UI/LogBoxInspector.js +2 -2
  123. package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.js +6 -9
  124. package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.win32.js +6 -9
  125. package/Libraries/LogBox/UI/LogBoxInspectorFooter.js +1 -1
  126. package/Libraries/LogBox/UI/LogBoxInspectorFooterButton.js +1 -1
  127. package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +1 -1
  128. package/Libraries/LogBox/UI/LogBoxInspectorHeader.win32.js +1 -1
  129. package/Libraries/LogBox/UI/LogBoxInspectorHeaderButton.js +1 -1
  130. package/Libraries/LogBox/UI/LogBoxInspectorMessageHeader.js +10 -15
  131. package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.js +25 -18
  132. package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.win32.js +15 -16
  133. package/Libraries/LogBox/UI/LogBoxInspectorSection.js +5 -7
  134. package/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.js +8 -10
  135. package/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.win32.js +11 -13
  136. package/Libraries/LogBox/UI/LogBoxInspectorStackFrame.js +8 -6
  137. package/Libraries/LogBox/UI/LogBoxInspectorStackFrame.win32.js +3 -5
  138. package/Libraries/LogBox/UI/LogBoxInspectorStackFrames.js +17 -29
  139. package/Libraries/LogBox/UI/LogBoxMessage.js +28 -37
  140. package/Libraries/LogBox/UI/LogBoxNotification.js +1 -1
  141. package/Libraries/Modal/Modal.js +3 -3
  142. package/Libraries/NativeComponent/BaseViewConfig.android.js +28 -52
  143. package/Libraries/NativeComponent/BaseViewConfig.ios.js +19 -21
  144. package/Libraries/NativeComponent/BaseViewConfig.win32.js +16 -16
  145. package/Libraries/Network/RCTNetworking.android.js +1 -1
  146. package/Libraries/Network/RCTNetworking.ios.js +1 -1
  147. package/Libraries/Network/RCTNetworking.js.flow +1 -1
  148. package/Libraries/Network/RCTNetworking.win32.js +1 -1
  149. package/Libraries/Network/RCTNetworkingEventDefinitions.flow.js +1 -1
  150. package/Libraries/Network/XMLHttpRequest.js +1 -1
  151. package/Libraries/PermissionsAndroid/PermissionsAndroid.js +3 -3
  152. package/Libraries/Pressability/Pressability.js +5 -5
  153. package/Libraries/Pressability/Pressability.win32.js +5 -5
  154. package/Libraries/Pressability/PressabilityDebug.js +1 -1
  155. package/Libraries/Pressability/PressabilityPerformanceEventEmitter.js +1 -1
  156. package/Libraries/Pressability/usePressability.js +3 -14
  157. package/Libraries/PushNotificationIOS/PushNotificationIOS.js +2 -2
  158. package/Libraries/ReactNative/AppContainer-dev.js +18 -1
  159. package/Libraries/ReactNative/AppContainer.js +1 -1
  160. package/Libraries/ReactNative/AppRegistry.flow.js +2 -2
  161. package/Libraries/ReactNative/AppRegistryImpl.js +2 -2
  162. package/Libraries/ReactNative/FabricUIManager.js +1 -1
  163. package/Libraries/ReactNative/RendererImplementation.js +4 -4
  164. package/Libraries/ReactNative/UIManagerProperties.js +1 -1
  165. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +3 -2
  166. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +3 -2
  167. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +3 -2
  168. package/Libraries/Renderer/shims/ReactFabric.js +1 -3
  169. package/Libraries/Renderer/shims/ReactFeatureFlags.js +1 -3
  170. package/Libraries/Renderer/shims/ReactNative.js +3 -2
  171. package/Libraries/Renderer/shims/ReactNativeTypes.js +1 -3
  172. package/Libraries/Renderer/shims/ReactNativeTypes.win32.js +1 -3
  173. package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +1 -3
  174. package/Libraries/Renderer/shims/createReactNativeComponentClass.js +1 -3
  175. package/Libraries/StyleSheet/PointPropType.js +1 -1
  176. package/Libraries/StyleSheet/Rect.js +1 -1
  177. package/Libraries/StyleSheet/StyleSheet.d.ts +0 -5
  178. package/Libraries/StyleSheet/StyleSheet.js +1 -1
  179. package/Libraries/StyleSheet/StyleSheet.js.flow +1 -1
  180. package/Libraries/StyleSheet/StyleSheetExports.js +16 -25
  181. package/Libraries/StyleSheet/StyleSheetExports.js.flow +2 -7
  182. package/Libraries/StyleSheet/StyleSheetTypes.js +33 -35
  183. package/Libraries/StyleSheet/private/_StyleSheetTypesOverrides.js +5 -5
  184. package/Libraries/StyleSheet/private/_TransformStyle.js +7 -7
  185. package/Libraries/StyleSheet/processBackgroundImage.js +7 -7
  186. package/Libraries/StyleSheet/processBackgroundPosition.js +4 -4
  187. package/Libraries/StyleSheet/processBackgroundRepeat.js +4 -4
  188. package/Libraries/StyleSheet/processBackgroundSize.js +4 -4
  189. package/Libraries/StyleSheet/processBoxShadow.js +44 -4
  190. package/Libraries/StyleSheet/processColorArray.js +2 -2
  191. package/Libraries/StyleSheet/processFilter.js +2 -2
  192. package/Libraries/Text/Text.js +295 -627
  193. package/Libraries/Text/Text.win32.js +360 -744
  194. package/Libraries/Text/TextNativeComponent.js +14 -7
  195. package/Libraries/Text/TextNativeComponent.win32.js +14 -7
  196. package/Libraries/Text/TextProps.js +4 -4
  197. package/Libraries/Text/TextProps.win32.js +4 -4
  198. package/Libraries/Types/CodegenTypes.js +1 -1
  199. package/Libraries/Types/CoreEventTypes.js +21 -21
  200. package/Libraries/Types/CoreEventTypes.win32.js +22 -21
  201. package/Libraries/Types/ReactDevToolsTypes.js +2 -2
  202. package/Libraries/Utilities/Appearance.js +6 -1
  203. package/Libraries/Utilities/Dimensions.js +1 -1
  204. package/Libraries/Utilities/Dimensions.win32.js +1 -1
  205. package/Libraries/Utilities/HMRClient.js +32 -5
  206. package/Libraries/Utilities/IPerformanceLogger.js +4 -4
  207. package/Libraries/Utilities/codegenNativeCommands.js +4 -4
  208. package/Libraries/Utilities/codegenNativeComponent.d.ts +2 -0
  209. package/Libraries/Utilities/codegenNativeComponent.js +2 -2
  210. package/Libraries/Utilities/logError.js +1 -1
  211. package/Libraries/Utilities/stringifySafe.js +3 -3
  212. package/Libraries/Utilities/useMergeRefs.js +2 -2
  213. package/Libraries/vendor/core/ErrorUtils.js +4 -4
  214. package/Libraries/vendor/emitter/EventEmitter.js +16 -20
  215. package/flow/bom.js.flow +18 -17
  216. package/flow/dom.js.flow +12 -5
  217. package/flow/global.js +1 -1
  218. package/index.js +9 -0
  219. package/index.win32.js +9 -0
  220. package/index.win32.js.flow +8 -1
  221. package/jest/RefreshControlMock.js +2 -2
  222. package/jest/assetFileTransformer.js +8 -3
  223. package/jest/mockComponent.js +3 -4
  224. package/jest/mockNativeComponent.js +1 -1
  225. package/jest/mocks/ActivityIndicator.js +2 -2
  226. package/jest/mocks/Image.js +2 -2
  227. package/jest/mocks/Modal.js +2 -2
  228. package/jest/mocks/RefreshControl.js +3 -3
  229. package/jest/mocks/RendererProxy.js +2 -2
  230. package/jest/mocks/ScrollView.js +5 -5
  231. package/jest/mocks/Text.js +2 -2
  232. package/jest/mocks/TextInput.js +2 -2
  233. package/jest/mocks/View.js +2 -2
  234. package/jest/mocks/ViewNativeComponent.js +1 -1
  235. package/jest/mocks/requireNativeComponent.js +1 -1
  236. package/jest/mocks/useColorScheme.js +1 -1
  237. package/jest/setup.js +68 -31
  238. package/overrides.json +30 -36
  239. package/package.json +20 -17
  240. package/src/private/animated/NativeAnimatedHelper.js +2 -2
  241. package/src/private/animated/NativeAnimatedHelper.win32.js +2 -2
  242. package/src/private/animated/createAnimatedPropsMemoHook.js +19 -19
  243. package/src/private/components/virtualview/VirtualView.js +14 -21
  244. package/src/private/components/virtualview/VirtualViewExperimentalNativeComponent.js +11 -10
  245. package/src/private/components/virtualview/VirtualViewNativeComponent.js +4 -4
  246. package/src/private/devsupport/devmenu/elementinspector/BorderBox.js +2 -2
  247. package/src/private/devsupport/devmenu/elementinspector/BoxInspector.js +3 -3
  248. package/src/private/devsupport/devmenu/elementinspector/ElementBox.js +4 -4
  249. package/src/private/devsupport/devmenu/elementinspector/ElementProperties.js +1 -1
  250. package/src/private/devsupport/devmenu/elementinspector/Inspector.js +39 -17
  251. package/src/private/devsupport/devmenu/elementinspector/InspectorOverlay.js +15 -3
  252. package/src/private/devsupport/devmenu/elementinspector/InspectorPanel.js +2 -2
  253. package/src/private/devsupport/devmenu/elementinspector/ReactDevToolsOverlay.js +2 -8
  254. package/src/private/devsupport/devmenu/elementinspector/StyleInspector.js +1 -1
  255. package/src/private/devsupport/devmenu/elementinspector/resolveBoxStyle.js +1 -1
  256. package/src/private/devsupport/devmenu/elementinspector/useExternalInspection.js +102 -0
  257. package/src/private/devsupport/rndevtools/FuseboxSessionObserver.js +12 -25
  258. package/src/private/devsupport/rndevtools/GlobalStateObserver.js +56 -0
  259. package/src/private/devsupport/rndevtools/TracingStateObserver.js +28 -0
  260. package/src/private/featureflags/ReactNativeFeatureFlags.js +71 -79
  261. package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +2 -2
  262. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +14 -12
  263. package/src/private/setup/setUpDefaultReactNativeEnvironment.js +6 -0
  264. package/src/private/specs_DEPRECATED/components/ActivityIndicatorViewNativeComponent.js +1 -1
  265. package/src/private/specs_DEPRECATED/components/AndroidDrawerLayoutNativeComponent.js +3 -3
  266. package/src/private/specs_DEPRECATED/components/AndroidHorizontalScrollContentViewNativeComponent.js +1 -1
  267. package/src/private/specs_DEPRECATED/components/AndroidSwipeRefreshLayoutNativeComponent.js +2 -2
  268. package/src/private/specs_DEPRECATED/components/AndroidSwitchNativeComponent.js +2 -2
  269. package/src/private/specs_DEPRECATED/components/DebuggingOverlayNativeComponent.js +3 -3
  270. package/src/private/specs_DEPRECATED/components/ProgressBarAndroidNativeComponent.js +1 -1
  271. package/src/private/specs_DEPRECATED/components/PullToRefreshViewNativeComponent.js +1 -1
  272. package/src/private/specs_DEPRECATED/components/RCTInputAccessoryViewNativeComponent.js +1 -1
  273. package/src/private/specs_DEPRECATED/components/RCTModalHostViewNativeComponent.js +3 -3
  274. package/src/private/specs_DEPRECATED/components/RCTSafeAreaViewNativeComponent.js +1 -1
  275. package/src/private/specs_DEPRECATED/components/SwitchNativeComponent.js +2 -2
  276. package/src/private/specs_DEPRECATED/components/UnimplementedNativeViewNativeComponent.js +1 -1
  277. package/src/private/specs_DEPRECATED/modules/NativeImageLoaderIOS.js +1 -1
  278. package/src/private/styles/composeStyles.js +1 -1
  279. package/src/private/utilities/toError.js +27 -0
  280. package/src/private/utilities/toExtendedError.js +30 -0
  281. package/src/private/webapis/dom/events/Event.js +1 -1
  282. package/src/private/webapis/dom/events/EventHandlerAttributes.js +2 -2
  283. package/src/private/webapis/dom/events/EventTarget.js +3 -3
  284. package/src/private/webapis/dom/events/internals/EventInternals.js +2 -2
  285. package/src/private/webapis/dom/nodes/ReadOnlyElement.js +1 -1
  286. package/src/private/webapis/dom/nodes/ReadOnlyNode.js +2 -2
  287. package/src/private/webapis/dom/nodes/specs/NativeDOM.js +14 -14
  288. package/src/private/webapis/dom/oldstylecollections/HTMLCollection.js +2 -2
  289. package/src/private/webapis/dom/oldstylecollections/NodeList.js +2 -2
  290. package/src/private/webapis/geometry/DOMRectList.js +2 -2
  291. package/src/private/webapis/intersectionobserver/IntersectionObserver.js +8 -8
  292. package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +6 -6
  293. package/src/private/webapis/mutationobserver/MutationObserver.js +2 -2
  294. package/src/private/webapis/mutationobserver/MutationRecord.js +2 -2
  295. package/src/private/webapis/mutationobserver/internals/MutationObserverManager.js +1 -1
  296. package/src/private/webapis/mutationobserver/specs/NativeMutationObserver.js +3 -3
  297. package/src/private/webapis/performance/LongTasks.js +3 -3
  298. package/src/private/webapis/performance/Performance.js +4 -4
  299. package/src/private/webapis/performance/PerformanceEntry.js +1 -1
  300. package/src/private/webapis/performance/PerformanceObserver.js +2 -2
  301. package/src/private/webapis/performance/specs/NativePerformance.js +8 -8
  302. package/src/private/webapis/structuredClone/structuredClone.js +2 -2
  303. package/src/types/globals.d.ts +4 -4
  304. package/src-win/Libraries/Components/EnterString.win32.tsx +2 -2
  305. package/src-win/Libraries/Components/Touchable/TouchableWin32.tsx +14 -14
  306. package/src-win/index.win32.js.flow +8 -1
  307. package/types/index.d.ts +2 -0
  308. package/Libraries/Components/View/ReactNativeViewAttributes.js +0 -60
  309. package/Libraries/Components/View/ReactNativeViewAttributes.win32.js +0 -94
  310. package/Libraries/Image/TextInlineImageNativeComponent.js +0 -49
@@ -13,15 +13,14 @@ import type {NativeSyntheticEvent} from '../../../../Libraries/Types/CoreEventTy
13
13
  import type {HostInstance} from '../../types/HostInstance';
14
14
  import type {NativeModeChangeEvent} from './VirtualViewNativeComponent';
15
15
 
16
+ import UIManager from '../../../../Libraries/ReactNative/UIManager';
16
17
  import StyleSheet from '../../../../Libraries/StyleSheet/StyleSheet';
17
- import * as ReactNativeFeatureFlags from '../../featureflags/ReactNativeFeatureFlags';
18
18
  import {useVirtualViewLogging} from './logger/VirtualViewLogger';
19
19
  import VirtualViewExperimentalNativeComponent from './VirtualViewExperimentalNativeComponent';
20
- import VirtualViewClassicNativeComponent from './VirtualViewNativeComponent';
20
+ import VirtualViewProperNativeComponent from './VirtualViewNativeComponent';
21
21
  import nullthrows from 'nullthrows';
22
22
  import * as React from 'react';
23
- // $FlowFixMe[missing-export]
24
- import {startTransition, unstable_Activity as Activity, useState} from 'react';
23
+ import {startTransition, useState} from 'react';
25
24
 
26
25
  // @see VirtualViewNativeComponent
27
26
  export enum VirtualViewMode {
@@ -37,24 +36,28 @@ export enum VirtualViewRenderState {
37
36
  None = 2,
38
37
  }
39
38
 
40
- export type Rect = $ReadOnly<{
39
+ export type Rect = Readonly<{
41
40
  x: number,
42
41
  y: number,
43
42
  width: number,
44
43
  height: number,
45
44
  }>;
46
45
 
47
- export type ModeChangeEvent = $ReadOnly<{
46
+ export type ModeChangeEvent = Readonly<{
48
47
  ...Omit<NativeModeChangeEvent, 'mode'>,
49
48
  renderState: VirtualViewRenderState,
50
49
  mode: VirtualViewMode,
51
50
  target: HostInstance,
52
51
  }>;
53
52
 
54
- const VirtualViewNativeComponent: typeof VirtualViewClassicNativeComponent =
55
- ReactNativeFeatureFlags.enableVirtualViewExperimental()
56
- ? VirtualViewExperimentalNativeComponent
57
- : VirtualViewClassicNativeComponent;
53
+ // If `VirtualView` exists and `VirtualViewExperimental` does not, that means
54
+ // the new version was renamed to `VirtualView`. Eventually, this can be deleted
55
+ // with a single remaining import of `VirtualViewNativeComponent`.
56
+ const VirtualViewNativeComponent: typeof VirtualViewExperimentalNativeComponent =
57
+ UIManager.hasViewManagerConfig('VirtualView') &&
58
+ !UIManager.hasViewManagerConfig('VirtualViewExperimental')
59
+ ? VirtualViewProperNativeComponent
60
+ : VirtualViewExperimentalNativeComponent;
58
61
 
59
62
  type VirtualViewComponent = component(
60
63
  children?: React.Node,
@@ -150,17 +153,7 @@ function createVirtualView(initialState: State): VirtualViewComponent {
150
153
  : style
151
154
  }
152
155
  onModeChange={handleModeChange}>
153
- {
154
- match (ReactNativeFeatureFlags.virtualViewActivityBehavior()) {
155
- 'activity-without-mode' =>
156
- <Activity>{isHidden ? null : children}</Activity>,
157
- 'activity-with-hidden-mode' =>
158
- <Activity mode={isHidden ? 'hidden' : 'visible'}>
159
- {children}
160
- </Activity>,
161
- 'no-activity' | _ => isHidden ? null : children,
162
- }
163
- }
156
+ {isHidden ? null : children}
164
157
  </VirtualViewNativeComponent>
165
158
  );
166
159
  }
@@ -18,7 +18,7 @@ import type {HostComponent} from '../../types/HostComponent';
18
18
 
19
19
  import codegenNativeComponent from '../../../../Libraries/Utilities/codegenNativeComponent';
20
20
 
21
- export type NativeModeChangeEvent = $ReadOnly<{
21
+ export type NativeModeChangeEvent = Readonly<{
22
22
  /**
23
23
  * Virtualization mode of the target view.
24
24
  *
@@ -34,7 +34,7 @@ export type NativeModeChangeEvent = $ReadOnly<{
34
34
  /**
35
35
  * Rect of the target view, relative to the nearest ancestor scroll container.
36
36
  */
37
- targetRect: $ReadOnly<{
37
+ targetRect: Readonly<{
38
38
  x: Double,
39
39
  y: Double,
40
40
  width: Double,
@@ -51,7 +51,7 @@ export type NativeModeChangeEvent = $ReadOnly<{
51
51
  *
52
52
  * This can be used to determine whether and how much new content to render.
53
53
  */
54
- thresholdRect: $ReadOnly<{
54
+ thresholdRect: Readonly<{
55
55
  x: Double,
56
56
  y: Double,
57
57
  width: Double,
@@ -59,7 +59,7 @@ export type NativeModeChangeEvent = $ReadOnly<{
59
59
  }>,
60
60
  }>;
61
61
 
62
- type VirtualViewExperimentalNativeProps = $ReadOnly<{
62
+ type VirtualViewExperimentalNativeProps = Readonly<{
63
63
  ...ViewProps,
64
64
 
65
65
  /**
@@ -67,6 +67,12 @@ type VirtualViewExperimentalNativeProps = $ReadOnly<{
67
67
  */
68
68
  initialHidden?: boolean,
69
69
 
70
+ /**
71
+ * This was needed to get VirtualViewManagerDelegate to set this property.
72
+ * TODO: Investigate why spread ViewProps doesn't call setter
73
+ */
74
+ removeClippedSubviews?: boolean,
75
+
70
76
  /**
71
77
  * Render state of children.
72
78
  *
@@ -79,18 +85,13 @@ type VirtualViewExperimentalNativeProps = $ReadOnly<{
79
85
  */
80
86
  renderState: Int32,
81
87
 
82
- /**
83
- * This was needed to get VirtualViewManagerDelegate to set this property.
84
- * TODO: Investigate why spread ViewProps doesn't call setter
85
- */
86
- removeClippedSubviews?: boolean,
87
-
88
88
  /**
89
89
  * See `NativeModeChangeEvent`.
90
90
  */
91
91
  onModeChange?: ?DirectEventHandler<NativeModeChangeEvent>,
92
92
  }>;
93
93
 
94
+ // TODO: Rename to eliminate "Experimental" suffix in the name.
94
95
  export default codegenNativeComponent<VirtualViewExperimentalNativeProps>(
95
96
  'VirtualViewExperimental',
96
97
  {
@@ -18,7 +18,7 @@ import type {HostComponent} from '../../types/HostComponent';
18
18
 
19
19
  import codegenNativeComponent from '../../../../Libraries/Utilities/codegenNativeComponent';
20
20
 
21
- export type NativeModeChangeEvent = $ReadOnly<{
21
+ export type NativeModeChangeEvent = Readonly<{
22
22
  /**
23
23
  * Virtualization mode of the target view.
24
24
  *
@@ -34,7 +34,7 @@ export type NativeModeChangeEvent = $ReadOnly<{
34
34
  /**
35
35
  * Rect of the target view, relative to the nearest ancestor scroll container.
36
36
  */
37
- targetRect: $ReadOnly<{
37
+ targetRect: Readonly<{
38
38
  x: Double,
39
39
  y: Double,
40
40
  width: Double,
@@ -51,7 +51,7 @@ export type NativeModeChangeEvent = $ReadOnly<{
51
51
  *
52
52
  * This can be used to determine whether and how much new content to render.
53
53
  */
54
- thresholdRect: $ReadOnly<{
54
+ thresholdRect: Readonly<{
55
55
  x: Double,
56
56
  y: Double,
57
57
  width: Double,
@@ -59,7 +59,7 @@ export type NativeModeChangeEvent = $ReadOnly<{
59
59
  }>,
60
60
  }>;
61
61
 
62
- type VirtualViewNativeProps = $ReadOnly<{
62
+ type VirtualViewNativeProps = Readonly<{
63
63
  ...ViewProps,
64
64
 
65
65
  /**
@@ -16,9 +16,9 @@ import * as React from 'react';
16
16
 
17
17
  const View = require('../../../../../Libraries/Components/View/View').default;
18
18
 
19
- type Props = $ReadOnly<{
19
+ type Props = Readonly<{
20
20
  children: React.Node,
21
- box?: ?$ReadOnly<{
21
+ box?: ?Readonly<{
22
22
  top: number,
23
23
  right: number,
24
24
  bottom: number,
@@ -31,7 +31,7 @@ const blank = {
31
31
  bottom: 0,
32
32
  };
33
33
 
34
- type BoxInspectorProps = $ReadOnly<{
34
+ type BoxInspectorProps = Readonly<{
35
35
  style: ViewStyleProp,
36
36
  frame: ?InspectedElementFrame,
37
37
  }>;
@@ -57,10 +57,10 @@ function BoxInspector({style, frame}: BoxInspectorProps): React.Node {
57
57
  );
58
58
  }
59
59
 
60
- type BoxContainerProps = $ReadOnly<{
60
+ type BoxContainerProps = Readonly<{
61
61
  title: string,
62
62
  titleStyle?: TextStyleProp,
63
- box: $ReadOnly<{
63
+ box: Readonly<{
64
64
  top: number,
65
65
  left: number,
66
66
  right: number,
@@ -25,15 +25,15 @@ const Dimensions =
25
25
  const BorderBox = require('./BorderBox').default;
26
26
  const resolveBoxStyle = require('./resolveBoxStyle').default;
27
27
 
28
- type Props = $ReadOnly<{
28
+ type Props = Readonly<{
29
29
  frame: InspectedElementFrame,
30
30
  style?: ?ViewStyleProp,
31
31
  }>;
32
32
 
33
33
  function ElementBox({frame, style}: Props): React.Node {
34
34
  const flattenedStyle = flattenStyle(style) || {};
35
- let margin: ?$ReadOnly<Style> = resolveBoxStyle('margin', flattenedStyle);
36
- let padding: ?$ReadOnly<Style> = resolveBoxStyle('padding', flattenedStyle);
35
+ let margin: ?Readonly<Style> = resolveBoxStyle('margin', flattenedStyle);
36
+ let padding: ?Readonly<Style> = resolveBoxStyle('padding', flattenedStyle);
37
37
 
38
38
  const frameStyle = {...frame};
39
39
  const contentStyle: {width: number, height: number} = {
@@ -110,7 +110,7 @@ type Style = {
110
110
  * @param style the style to resolve
111
111
  * @return a modified copy
112
112
  */
113
- function resolveRelativeSizes(style: $ReadOnly<Style>): Style {
113
+ function resolveRelativeSizes(style: Readonly<Style>): Style {
114
114
  let resolvedStyle = {...style};
115
115
  resolveSizeInPlace(resolvedStyle, 'top', 'height');
116
116
  resolveSizeInPlace(resolvedStyle, 'right', 'width');
@@ -30,7 +30,7 @@ const mapWithSeparator =
30
30
  const BoxInspector = require('./BoxInspector').default;
31
31
  const StyleInspector = require('./StyleInspector').default;
32
32
 
33
- type Props = $ReadOnly<{
33
+ type Props = Readonly<{
34
34
  hierarchy: ?InspectorData['hierarchy'],
35
35
  style?: ?ViewStyleProp,
36
36
  frame?: ?Object,
@@ -41,24 +41,35 @@ const {useState} = React;
41
41
  type PanelPosition = 'top' | 'bottom';
42
42
 
43
43
  export type InspectedElementFrame = TouchedViewDataAtPoint['frame'];
44
- export type InspectedElement = $ReadOnly<{
44
+ export type InspectedElement = Readonly<{
45
45
  frame: InspectedElementFrame,
46
46
  style?: ViewStyleProp,
47
47
  }>;
48
48
  export type ElementsHierarchy = InspectorData['hierarchy'];
49
49
 
50
+ type ExternalInspection = {
51
+ externalInspectingEnabled: boolean,
52
+ +reportToExternalInspection: (viewData: TouchedViewDataAtPoint) => void,
53
+ };
54
+
50
55
  type Props = {
51
56
  inspectedViewRef: InspectedViewRef,
52
57
  onRequestRerenderApp: () => void,
53
58
  reactDevToolsAgent?: ReactDevToolsAgent,
59
+ devMenuInspectorOpen: boolean,
60
+ externalInspection: ExternalInspection,
54
61
  };
55
62
 
56
63
  function Inspector({
57
64
  inspectedViewRef,
58
65
  onRequestRerenderApp,
59
66
  reactDevToolsAgent,
67
+ devMenuInspectorOpen,
68
+ externalInspection,
60
69
  }: Props): React.Node {
61
- const [inspecting, setInspecting] = useState<boolean>(true);
70
+ const [inspectingEnabled, setInspectingEnabled] = useState<boolean>(true);
71
+ const {externalInspectingEnabled, reportToExternalInspection} =
72
+ externalInspection;
62
73
 
63
74
  const [panelPosition, setPanelPosition] = useState<PanelPosition>('bottom');
64
75
  const [inspectedElement, setInspectedElement] =
@@ -67,6 +78,9 @@ function Inspector({
67
78
  const [elementsHierarchy, setElementsHierarchy] =
68
79
  useState<?ElementsHierarchy>(null);
69
80
 
81
+ // Derive inspecting state: external inspection forces it on, otherwise use local state
82
+ const isInspecting = externalInspectingEnabled || inspectingEnabled;
83
+
70
84
  const setSelection = (i: number) => {
71
85
  const hierarchyItem = elementsHierarchy?.[i];
72
86
  if (hierarchyItem == null) {
@@ -99,6 +113,11 @@ function Inspector({
99
113
  closestInstance,
100
114
  } = viewData;
101
115
 
116
+ // Report to external inspection if in external inspection mode
117
+ if (externalInspectingEnabled) {
118
+ reportToExternalInspection(viewData);
119
+ }
120
+
102
121
  // Sync the touched view with React DevTools.
103
122
  // Note: This is Paper only. To support Fabric,
104
123
  // DevTools needs to be updated to not rely on view tags.
@@ -133,7 +152,7 @@ function Inspector({
133
152
  };
134
153
 
135
154
  const handleSetInspecting = (enabled: boolean) => {
136
- setInspecting(enabled);
155
+ setInspectingEnabled(enabled);
137
156
  setInspectedElement(null);
138
157
  };
139
158
 
@@ -149,26 +168,29 @@ function Inspector({
149
168
 
150
169
  return (
151
170
  <View style={styles.container} pointerEvents="box-none">
152
- {inspecting && (
171
+ {isInspecting && (
153
172
  <InspectorOverlay
154
173
  inspected={inspectedElement}
155
174
  onTouchPoint={onTouchPoint}
175
+ externalInspectionActive={externalInspectingEnabled}
156
176
  />
157
177
  )}
158
178
 
159
- <SafeAreaView style={[styles.panelContainer, panelContainerStyle]}>
160
- <InspectorPanel
161
- devtoolsIsOpen={!!reactDevToolsAgent}
162
- inspecting={inspecting}
163
- setInspecting={handleSetInspecting}
164
- inspected={inspectedElement}
165
- hierarchy={elementsHierarchy}
166
- selection={selectionIndex}
167
- setSelection={setSelection}
168
- touchTargeting={PressabilityDebug.isEnabled()}
169
- setTouchTargeting={setTouchTargeting}
170
- />
171
- </SafeAreaView>
179
+ {!externalInspectingEnabled && (
180
+ <SafeAreaView style={[styles.panelContainer, panelContainerStyle]}>
181
+ <InspectorPanel
182
+ devtoolsIsOpen={!!reactDevToolsAgent}
183
+ inspecting={inspectingEnabled}
184
+ setInspecting={handleSetInspecting}
185
+ inspected={inspectedElement}
186
+ hierarchy={elementsHierarchy}
187
+ selection={selectionIndex}
188
+ setSelection={setSelection}
189
+ touchTargeting={PressabilityDebug.isEnabled()}
190
+ setTouchTargeting={setTouchTargeting}
191
+ />
192
+ </SafeAreaView>
193
+ )}
172
194
  </View>
173
195
  );
174
196
  }
@@ -20,12 +20,17 @@ const StyleSheet =
20
20
  require('../../../../../Libraries/StyleSheet/StyleSheet').default;
21
21
  const ElementBox = require('./ElementBox').default;
22
22
 
23
- type Props = $ReadOnly<{
23
+ type Props = Readonly<{
24
24
  inspected?: ?InspectedElement,
25
25
  onTouchPoint: (locationX: number, locationY: number) => void,
26
+ externalInspectionActive?: boolean,
26
27
  }>;
27
28
 
28
- function InspectorOverlay({inspected, onTouchPoint}: Props): React.Node {
29
+ function InspectorOverlay({
30
+ inspected,
31
+ onTouchPoint,
32
+ externalInspectionActive,
33
+ }: Props): React.Node {
29
34
  const findViewForTouchEvent = (e: GestureResponderEvent) => {
30
35
  const {locationX, locationY} = e.nativeEvent.touches[0];
31
36
 
@@ -47,7 +52,10 @@ function InspectorOverlay({inspected, onTouchPoint}: Props): React.Node {
47
52
  onStartShouldSetResponder={handleStartShouldSetResponder}
48
53
  onResponderMove={findViewForTouchEvent}
49
54
  nativeID="inspectorOverlay" /* TODO: T68258846. */
50
- style={styles.inspector}>
55
+ style={[
56
+ styles.inspector,
57
+ externalInspectionActive === true && styles.externalInspectionIndicator,
58
+ ]}>
51
59
  {content}
52
60
  </View>
53
61
  );
@@ -62,6 +70,10 @@ const styles = StyleSheet.create({
62
70
  right: 0,
63
71
  bottom: 0,
64
72
  },
73
+ externalInspectionIndicator: {
74
+ borderWidth: 4,
75
+ borderColor: 'rgba(255, 0, 0, 0.8)',
76
+ },
65
77
  });
66
78
 
67
79
  export default InspectorOverlay;
@@ -25,7 +25,7 @@ const StyleSheet =
25
25
  const Text = require('../../../../../Libraries/Text/Text').default;
26
26
  const ElementProperties = require('./ElementProperties').default;
27
27
 
28
- type Props = $ReadOnly<{
28
+ type Props = Readonly<{
29
29
  devtoolsIsOpen: boolean,
30
30
  inspecting: boolean,
31
31
  setInspecting: (val: boolean) => void,
@@ -84,7 +84,7 @@ class InspectorPanel extends React.Component<Props> {
84
84
  }
85
85
  }
86
86
 
87
- type InspectorPanelButtonProps = $ReadOnly<{
87
+ type InspectorPanelButtonProps = Readonly<{
88
88
  onClick: (val: boolean) => void,
89
89
  pressed: boolean,
90
90
  title: string,
@@ -52,10 +52,12 @@ export default function ReactDevToolsOverlay({
52
52
 
53
53
  function onStartInspectingNative() {
54
54
  setIsInspecting(true);
55
+ setInspected(null);
55
56
  }
56
57
 
57
58
  function onStopInspectingNative() {
58
59
  setIsInspecting(false);
60
+ setInspected(null);
59
61
  }
60
62
 
61
63
  reactDevToolsAgent.addListener('shutdown', cleanup);
@@ -93,12 +95,6 @@ export default function ReactDevToolsOverlay({
93
95
  [inspectedViewRef, reactDevToolsAgent],
94
96
  );
95
97
 
96
- const stopInspecting = useCallback(() => {
97
- reactDevToolsAgent.stopInspectingNative(true);
98
- setIsInspecting(false);
99
- setInspected(null);
100
- }, [reactDevToolsAgent]);
101
-
102
98
  const onPointerMove = useCallback(
103
99
  (e: PointerEvent) => {
104
100
  findViewForLocation(e.nativeEvent.x, e.nativeEvent.y);
@@ -133,12 +129,10 @@ export default function ReactDevToolsOverlay({
133
129
  ? {
134
130
  onPointerMove,
135
131
  onPointerDown: onPointerMove,
136
- onPointerUp: stopInspecting,
137
132
  }
138
133
  : {
139
134
  onStartShouldSetResponder: shouldSetResponder,
140
135
  onResponderMove: onResponderMove,
141
- onResponderRelease: stopInspecting,
142
136
  };
143
137
 
144
138
  return (
@@ -20,7 +20,7 @@ const StyleSheet =
20
20
  require('../../../../../Libraries/StyleSheet/StyleSheet').default;
21
21
  const Text = require('../../../../../Libraries/Text/Text').default;
22
22
 
23
- type Props = $ReadOnly<{
23
+ type Props = Readonly<{
24
24
  style?: ?____FlattenStyleProp_Internal<ViewStyleProp>,
25
25
  }>;
26
26
 
@@ -26,7 +26,7 @@ const I18nManager =
26
26
  function resolveBoxStyle(
27
27
  prefix: string,
28
28
  style: Object,
29
- ): ?$ReadOnly<{
29
+ ): ?Readonly<{
30
30
  bottom: number,
31
31
  left: number,
32
32
  right: number,
@@ -0,0 +1,102 @@
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
+ import type {TouchedViewDataAtPoint} from '../../../../../Libraries/Renderer/shims/ReactNativeTypes';
14
+
15
+ import * as ReactNativeFeatureFlags from '../../../../../src/private/featureflags/ReactNativeFeatureFlags';
16
+ import {useCallback, useEffect, useState} from 'react';
17
+
18
+ type ExternalInspectionAPI = {
19
+ enable: () => void,
20
+ disable: () => void,
21
+ };
22
+
23
+ declare var __EXTERNAL_INSPECTION__: ?ExternalInspectionAPI;
24
+ declare var __EXTERNAL_INSPECTION_SELECT__: ?(payload: string) => void;
25
+
26
+ type UseExternalInspectionResult = {
27
+ externalInspectingEnabled: boolean,
28
+ reportToExternalInspection: (viewData: TouchedViewDataAtPoint) => void,
29
+ };
30
+
31
+ /**
32
+ * Initializes the __EXTERNAL_INSPECTION__ API on the device.
33
+ */
34
+ function ensureExternalInspectionAPI(
35
+ onEnable: () => void,
36
+ onDisable: () => void,
37
+ ): ExternalInspectionAPI {
38
+ if (
39
+ typeof __EXTERNAL_INSPECTION__ === 'undefined' ||
40
+ __EXTERNAL_INSPECTION__ == null
41
+ ) {
42
+ const api: ExternalInspectionAPI = {
43
+ enable: onEnable,
44
+ disable: onDisable,
45
+ };
46
+ // $FlowFixMe[prop-missing] Initializing global API for DevTools communication
47
+ (global: $FlowFixMe).__EXTERNAL_INSPECTION__ = api;
48
+ return api;
49
+ }
50
+ __EXTERNAL_INSPECTION__.enable = onEnable;
51
+ __EXTERNAL_INSPECTION__.disable = onDisable;
52
+ return __EXTERNAL_INSPECTION__;
53
+ }
54
+
55
+ export default function useExternalInspection(): UseExternalInspectionResult {
56
+ const [externalInspectingEnabled, setExternalInspectingEnabled] =
57
+ useState<boolean>(false);
58
+
59
+ useEffect(() => {
60
+ if (!ReactNativeFeatureFlags.externalElementInspectionEnabled()) {
61
+ return;
62
+ }
63
+
64
+ const handleEnable = () => {
65
+ setExternalInspectingEnabled(true);
66
+ };
67
+
68
+ const handleDisable = () => {
69
+ setExternalInspectingEnabled(false);
70
+ };
71
+
72
+ ensureExternalInspectionAPI(handleEnable, handleDisable);
73
+ }, []);
74
+
75
+ const reportToExternalInspection = useCallback(
76
+ (viewData: TouchedViewDataAtPoint) => {
77
+ if (
78
+ typeof __EXTERNAL_INSPECTION_SELECT__ === 'undefined' ||
79
+ __EXTERNAL_INSPECTION_SELECT__ === null ||
80
+ !externalInspectingEnabled
81
+ ) {
82
+ return;
83
+ }
84
+
85
+ __EXTERNAL_INSPECTION_SELECT__(
86
+ JSON.stringify({
87
+ frame: viewData.frame,
88
+ hierarchy: viewData.hierarchy.map(item => ({
89
+ name: item.name,
90
+ })),
91
+ touchedViewTag: viewData.touchedViewTag,
92
+ }),
93
+ );
94
+ },
95
+ [externalInspectingEnabled],
96
+ );
97
+
98
+ return {
99
+ externalInspectingEnabled,
100
+ reportToExternalInspection,
101
+ };
102
+ }
@@ -8,34 +8,21 @@
8
8
  * @format
9
9
  */
10
10
 
11
- class FuseboxSessionObserver {
12
- #hasNativeSupport: boolean;
11
+ import GlobalStateObserver from './GlobalStateObserver';
13
12
 
14
- constructor() {
15
- this.#hasNativeSupport = global.hasOwnProperty(
16
- '__DEBUGGER_SESSION_OBSERVER__',
17
- );
18
- }
13
+ const observer = new GlobalStateObserver(
14
+ '__DEBUGGER_SESSION_OBSERVER__',
15
+ 'hasActiveSession',
16
+ );
19
17
 
18
+ const FuseboxSessionObserver = {
20
19
  hasActiveSession(): boolean {
21
- if (!this.#hasNativeSupport) {
22
- return false;
23
- }
24
-
25
- return global.__DEBUGGER_SESSION_OBSERVER__.hasActiveSession;
26
- }
20
+ return observer.getStatus();
21
+ },
27
22
 
28
23
  subscribe(callback: (status: boolean) => void): () => void {
29
- if (!this.#hasNativeSupport) {
30
- return () => {};
31
- }
32
-
33
- global.__DEBUGGER_SESSION_OBSERVER__.subscribers.add(callback);
34
- return () => {
35
- global.__DEBUGGER_SESSION_OBSERVER__.subscribers.delete(callback);
36
- };
37
- }
38
- }
24
+ return observer.subscribe(callback);
25
+ },
26
+ };
39
27
 
40
- const observerInstance: FuseboxSessionObserver = new FuseboxSessionObserver();
41
- export default observerInstance;
28
+ export default FuseboxSessionObserver;