@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.
- package/.eslintignore +1 -1
- package/.flowconfig +5 -1
- package/CHANGELOG.json +164 -53
- package/CHANGELOG.md +74 -28
- package/Libraries/ActionSheetIOS/ActionSheetIOS.d.ts +1 -0
- package/Libraries/ActionSheetIOS/ActionSheetIOS.js +13 -0
- package/Libraries/Animated/AnimatedEvent.js +1 -1
- package/Libraries/Animated/AnimatedImplementation.js +2 -2
- package/Libraries/Animated/NativeAnimatedAllowlist.js +20 -9
- package/Libraries/Animated/animations/Animation.js +60 -25
- package/Libraries/Animated/animations/DecayAnimation.js +26 -38
- package/Libraries/Animated/animations/SpringAnimation.js +33 -39
- package/Libraries/Animated/animations/TimingAnimation.js +34 -42
- package/Libraries/Animated/components/AnimatedFlatList.js +1 -1
- package/Libraries/Animated/components/AnimatedSectionList.js +3 -1
- package/Libraries/Animated/createAnimatedComponent.js +60 -33
- package/Libraries/Animated/nodes/AnimatedColor.js +1 -1
- package/Libraries/Animated/nodes/AnimatedInterpolation.js +1 -1
- package/Libraries/Animated/nodes/AnimatedNode.js +39 -45
- package/Libraries/Animated/nodes/AnimatedObject.js +13 -3
- package/Libraries/Animated/nodes/AnimatedProps.js +96 -46
- package/Libraries/Animated/nodes/AnimatedStyle.js +108 -39
- package/Libraries/Animated/nodes/AnimatedTransform.js +56 -23
- package/Libraries/Animated/nodes/AnimatedValue.js +1 -1
- package/Libraries/Animated/nodes/AnimatedWithChildren.js +1 -3
- package/Libraries/Animated/useAnimatedProps.js +41 -35
- package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts +19 -3
- package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +77 -5
- package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.win32.js +82 -5
- package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +4 -4
- package/Libraries/Components/Button.js +9 -4
- package/Libraries/Components/Button.win32.js +12 -4
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.js +3 -1
- package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +7 -0
- package/Libraries/Components/Pressable/Pressable.js +4 -4
- package/Libraries/Components/Pressable/Pressable.win32.js +4 -4
- package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.android.js +13 -7
- package/Libraries/Components/RefreshControl/__mocks__/RefreshControlMock.js +3 -2
- package/Libraries/Components/SafeAreaView/SafeAreaView.js +4 -4
- package/Libraries/Components/SafeAreaView/SafeAreaView.win32.js +4 -4
- package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +0 -1
- package/Libraries/Components/ScrollView/ScrollView.js +49 -88
- package/Libraries/Components/ScrollView/ScrollViewCommands.js +1 -1
- package/Libraries/Components/ScrollView/ScrollViewContext.js +2 -0
- package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +0 -2
- package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +8 -9
- package/Libraries/Components/Switch/Switch.js +8 -6
- package/Libraries/Components/TextInput/InputAccessoryView.js +1 -1
- package/Libraries/Components/TextInput/RCTMultilineTextInputNativeComponent.js +4 -4
- package/Libraries/Components/TextInput/RCTSingelineTextInputNativeComponent.js +6 -4
- package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +2 -1
- package/Libraries/Components/TextInput/TextInput.d.ts +27 -4
- package/Libraries/Components/TextInput/TextInput.flow.js +36 -19
- package/Libraries/Components/TextInput/TextInput.js +37 -13
- package/Libraries/Components/TextInput/TextInput.win32.js +40 -15
- package/Libraries/Components/TextInput/TextInputState.js +11 -13
- package/Libraries/Components/TextInput/TextInputState.win32.js +13 -16
- package/Libraries/Components/TextInput/Win32TextInputNativeComponent.js +3 -0
- package/Libraries/Components/Touchable/BoundingDimensions.js +11 -3
- package/Libraries/Components/Touchable/Position.js +7 -2
- package/Libraries/Components/Touchable/Touchable.js +4 -0
- package/Libraries/Components/Touchable/Touchable.win32.js +4 -0
- package/Libraries/Components/Touchable/TouchableBounce.js +6 -2
- package/Libraries/Components/Touchable/TouchableHighlight.js +5 -5
- package/Libraries/Components/Touchable/TouchableOpacity.js +6 -5
- package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +1 -2
- package/Libraries/Components/View/ReactNativeStyleAttributes.js +6 -1
- package/Libraries/Components/View/View.js +4 -4
- package/Libraries/Components/View/View.win32.js +4 -4
- package/Libraries/Components/View/ViewNativeComponent.js +6 -98
- package/Libraries/Components/View/ViewPropTypes.d.ts +7 -0
- package/Libraries/Components/View/ViewPropTypes.js +0 -3
- package/Libraries/Components/View/ViewPropTypes.win32.js +0 -3
- package/Libraries/Components/View/ViewWin32.js +1 -0
- package/Libraries/Core/ExceptionsManager.js +50 -29
- package/Libraries/Core/ReactNativeVersion.js +3 -3
- package/Libraries/Core/__mocks__/NativeExceptionsManager.js +0 -1
- package/Libraries/Core/setUpBatchedBridge.js +1 -10
- package/Libraries/Core/setUpDeveloperTools.js +1 -5
- package/Libraries/Core/setUpErrorHandling.js +20 -18
- package/Libraries/Core/setUpReactDevTools.js +107 -8
- package/Libraries/Core/setUpSegmentFetcher.js +1 -0
- package/Libraries/Core/setUpTimers.js +21 -18
- package/Libraries/Debugging/DebuggingOverlay.js +4 -5
- package/Libraries/Image/AssetSourceResolver.js +12 -1
- package/Libraries/Image/Image.android.js +1 -5
- package/Libraries/Image/Image.d.ts +20 -29
- package/Libraries/Image/Image.ios.js +0 -2
- package/Libraries/Image/Image.win32.js +0 -2
- package/Libraries/Image/ImageBackground.js +2 -5
- package/Libraries/Image/ImageProps.js +7 -6
- package/Libraries/Image/ImageResizeMode.d.ts +8 -1
- package/Libraries/Image/ImageResizeMode.js +4 -1
- package/Libraries/Image/ImageSource.d.ts +0 -2
- package/Libraries/Image/ImageSource.js +0 -2
- package/Libraries/Image/ImageTypes.flow.js +11 -9
- package/Libraries/Image/ImageUtils.js +6 -3
- package/Libraries/Image/ImageViewNativeComponent.js +5 -3
- package/Libraries/Inspector/Inspector.js +1 -0
- package/Libraries/Inspector/Inspector.win32.js +2 -1
- package/Libraries/Inspector/NetworkOverlay.js +4 -0
- package/Libraries/Inspector/ReactDevToolsOverlay.js +8 -14
- package/Libraries/Inspector/getInspectorDataForViewAtPoint.js +3 -5
- package/Libraries/Interaction/InteractionManager.js +6 -1
- package/Libraries/Interaction/InteractionManagerStub.js +176 -0
- package/Libraries/Interaction/TouchHistoryMath.js +22 -19
- package/Libraries/JSInspector/NetworkAgent.js +1 -1
- package/Libraries/Lists/FlatList.d.ts +1 -2
- package/Libraries/Lists/FlatList.js +2 -2
- package/Libraries/Lists/SectionListModern.js +7 -7
- package/Libraries/Lists/__flowtests__/FlatList-flowtest.js +2 -2
- package/Libraries/Lists/__flowtests__/SectionList-flowtest.js +1 -1
- package/Libraries/LogBox/Data/LogBoxData.js +3 -3
- package/Libraries/LogBox/LogBox.js +18 -5
- package/Libraries/LogBox/LogBoxInspectorContainer.js +1 -1
- package/Libraries/LogBox/LogBoxNotificationContainer.js +2 -2
- package/Libraries/LogBox/UI/AnsiHighlight.js +26 -17
- package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.js +6 -1
- package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.win32.js +6 -1
- package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +1 -1
- package/Libraries/LogBox/UI/LogBoxInspectorHeader.win32.js +1 -1
- package/Libraries/LogBox/UI/LogBoxInspectorStackFrames.js +1 -1
- package/Libraries/LogBox/UI/LogBoxMessage.js +2 -2
- package/Libraries/Modal/Modal.d.ts +12 -0
- package/Libraries/Modal/Modal.js +31 -4
- package/Libraries/NativeComponent/BaseViewConfig.android.js +72 -1
- package/Libraries/NativeComponent/BaseViewConfig.ios.js +2 -1
- package/Libraries/NativeComponent/BaseViewConfig.win32.js +3 -11
- package/Libraries/NativeComponent/NativeComponentRegistry.js +3 -3
- package/Libraries/NativeComponent/StaticViewConfigValidator.js +0 -1
- package/Libraries/Network/XHRInterceptor.js +63 -14
- package/Libraries/Network/XMLHttpRequest.js +26 -1
- package/Libraries/NewAppScreen/components/HermesBadge.js +1 -1
- package/Libraries/PermissionsAndroid/PermissionsAndroid.d.ts +49 -2
- package/Libraries/PermissionsAndroid/PermissionsAndroid.js +4 -4
- package/Libraries/Pressability/HoverState.js +2 -0
- package/Libraries/Pressability/HoverState.win32.js +2 -0
- package/Libraries/Pressability/Pressability.js +2 -3
- package/Libraries/Pressability/Pressability.win32.js +2 -3
- package/Libraries/Pressability/usePressability.js +4 -1
- package/Libraries/ReactNative/AppContainer.js +1 -1
- package/Libraries/ReactNative/AppRegistry.js +1 -11
- package/Libraries/ReactNative/DisplayMode.js +1 -1
- package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricHostComponent.js +2 -3
- package/Libraries/ReactNative/RendererImplementation.js +18 -17
- package/Libraries/ReactNative/getCachedComponentWithDebugName.js +1 -3
- package/Libraries/ReactNative/renderApplication.js +9 -8
- package/Libraries/ReactNative/requireNativeComponent.js +5 -2
- package/Libraries/Renderer/shims/ReactFabric.js +3 -3
- package/Libraries/Renderer/shims/ReactFeatureFlags.js +2 -2
- package/Libraries/Renderer/shims/ReactNative.js +3 -3
- package/Libraries/Renderer/shims/ReactNativeTypes.js +22 -35
- package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +5 -6
- package/Libraries/Renderer/shims/createReactNativeComponentClass.js +2 -2
- package/Libraries/StyleSheet/StyleSheet.js +7 -1
- package/Libraries/StyleSheet/StyleSheet.win32.js +7 -1
- package/Libraries/StyleSheet/StyleSheetTypes.d.ts +13 -2
- package/Libraries/StyleSheet/StyleSheetTypes.js +24 -6
- package/Libraries/StyleSheet/processBackgroundImage.js +87 -110
- package/Libraries/StyleSheet/processTransform.js +3 -34
- package/Libraries/Text/Text.js +248 -249
- package/Libraries/Text/Text.win32.js +282 -295
- package/Libraries/Text/TextNativeComponent.js +0 -1
- package/Libraries/TurboModule/TurboModuleRegistry.js +5 -5
- package/Libraries/Types/CoreEventTypes.d.ts +3 -10
- package/Libraries/Types/CoreEventTypes.js +4 -6
- package/Libraries/Types/CoreEventTypes.win32.js +4 -6
- package/Libraries/Utilities/Appearance.js +3 -1
- package/Libraries/Utilities/BackHandler.android.js +6 -18
- package/Libraries/Utilities/BackHandler.d.ts +0 -4
- package/Libraries/Utilities/BackHandler.ios.js +0 -7
- package/Libraries/Utilities/BackHandler.win32.js +6 -18
- package/Libraries/Utilities/FocusManager.win32.js +1 -1
- package/Libraries/Utilities/HMRClient.js +3 -4
- package/Libraries/Utilities/Platform.flow.js +2 -2
- package/Libraries/Utilities/Platform.flow.win32.js +3 -2
- package/Libraries/Utilities/__mocks__/BackHandler.js +3 -8
- package/Libraries/Utilities/codegenNativeComponent.js +1 -1
- package/Libraries/Utilities/useMergeRefs.js +26 -7
- package/Libraries/WebSocket/WebSocketEvent.js +4 -1
- package/Libraries/WebSocket/WebSocketInterceptor.js +31 -13
- package/Libraries/__flowtests__/ReactNativeTypes-flowtest.js +6 -5
- package/Libraries/promiseRejectionTrackingOptions.js +1 -1
- package/index.js +10 -3
- package/index.win32.js +10 -3
- package/jest/setup.js +36 -1
- package/overrides.json +37 -37
- package/package.json +20 -20
- package/src/private/animated/NativeAnimatedHelper.js +18 -16
- package/src/private/animated/NativeAnimatedHelper.win32.js +18 -15
- package/src/private/animated/useAnimatedPropsMemo.js +348 -0
- package/src/private/components/HScrollViewNativeComponents.js +1 -27
- package/src/private/components/SafeAreaView_INTERNAL_DO_NOT_USE.js +11 -8
- package/src/private/components/VScrollViewNativeComponents.js +2 -25
- package/src/private/debugging/ReactDevToolsSettingsManager.android.js +20 -0
- package/src/private/debugging/ReactDevToolsSettingsManager.ios.js +30 -0
- package/src/private/debugging/ReactDevToolsSettingsManager.win32.js +20 -0
- package/src/private/{fusebox → debugging}/setUpFuseboxReactDevToolsDispatcher.js +6 -0
- package/src/private/devmenu/DevMenu.d.ts +20 -0
- package/src/private/devmenu/DevMenu.js +31 -0
- package/src/private/featureflags/ReactNativeFeatureFlags.js +95 -86
- package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +8 -2
- package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +17 -19
- package/src/private/fusebox/specs/NativeReactDevToolsRuntimeSettingsModule.js +34 -0
- package/src/private/setup/setUpDOM.js +14 -6
- package/src/private/setup/setUpMutationObserver.js +5 -0
- package/src/private/specs/components/AndroidHorizontalScrollContentViewNativeComponent.js +1 -0
- package/src/private/specs/components/RCTModalHostViewNativeComponent.js +8 -0
- package/src/private/specs/modules/NativeAccessibilityInfo.js +9 -0
- package/src/private/specs/modules/NativeAccessibilityInfoWin32.js +9 -0
- package/src/private/specs/modules/NativeAccessibilityManager.js +4 -0
- package/src/private/specs/modules/NativeActionSheetManager.js +2 -0
- package/src/private/specs/modules/NativeAppearance.js +4 -10
- package/src/private/specs/modules/NativeExceptionsManager.js +0 -12
- package/src/private/specs/modules/{NativeDevToolsSettingsManager.js → NativeReactDevToolsSettingsManager.js} +3 -5
- package/src/private/webapis/dom/geometry/DOMRect.js +2 -2
- package/src/private/webapis/dom/geometry/DOMRectReadOnly.js +2 -2
- package/src/private/webapis/dom/nodes/ReactNativeElement.js +2 -3
- package/src/private/webapis/intersectionobserver/IntersectionObserver.js +102 -11
- package/src/private/webapis/intersectionobserver/IntersectionObserverEntry.js +26 -0
- package/src/private/webapis/intersectionobserver/IntersectionObserverManager.js +1 -0
- package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +1 -0
- package/src/private/webapis/intersectionobserver/specs/__mocks__/NativeIntersectionObserver.js +9 -0
- package/src/private/webapis/performance/EventTiming.js +13 -8
- package/src/private/webapis/performance/Performance.js +66 -73
- package/src/private/webapis/performance/PerformanceEntry.js +2 -5
- package/src/private/webapis/performance/PerformanceObserver.js +65 -164
- package/src/private/webapis/performance/RawPerformanceEntry.js +1 -1
- package/src/private/webapis/performance/UserTiming.js +11 -7
- package/src/private/webapis/performance/Utilities.js +18 -0
- package/src/private/webapis/performance/specs/NativePerformance.js +71 -2
- package/src/private/webapis/performance/specs/__mocks__/NativePerformanceMock.js +267 -0
- package/src-win/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts +19 -3
- package/src-win/Libraries/Components/View/ViewPropTypes.d.ts +7 -0
- package/types/index.d.ts +1 -1
- package/types/public/ReactNativeTypes.d.ts +4 -8
- package/Libraries/DevToolsSettings/DevToolsSettingsManager.android.js +0 -35
- package/Libraries/DevToolsSettings/DevToolsSettingsManager.d.ts +0 -20
- package/Libraries/DevToolsSettings/DevToolsSettingsManager.ios.js +0 -49
- package/Libraries/DevToolsSettings/DevToolsSettingsManager.win32.js +0 -35
- package/Libraries/DevToolsSettings/NativeDevToolsSettingsManager.js +0 -13
- package/Libraries/ReactNative/ReactFabricInternals.js +0 -17
- package/src/private/components/useSyncOnScroll.js +0 -48
- package/src/private/webapis/performance/specs/NativePerformanceObserver.js +0 -61
- package/src/private/webapis/performance/specs/__mocks__/NativePerformance.js +0 -67
- package/src/private/webapis/performance/specs/__mocks__/NativePerformanceObserver.js +0 -127
- package/types/experimental.d.ts +0 -59
- /package/src/private/{fusebox → debugging}/FuseboxSessionObserver.js +0 -0
|
@@ -37,7 +37,7 @@ type Props = $ReadOnly<{|
|
|
|
37
37
|
activeOpacity?: ?number,
|
|
38
38
|
style?: ?ViewStyleProp,
|
|
39
39
|
|
|
40
|
-
hostRef?: ?React.
|
|
40
|
+
hostRef?: ?React.RefSetter<React.ElementRef<typeof Animated.View>>,
|
|
41
41
|
|}>;
|
|
42
42
|
|
|
43
43
|
type State = $ReadOnly<{|
|
|
@@ -291,6 +291,7 @@ class TouchableOpacity extends React.Component<Props, State> {
|
|
|
291
291
|
this.props.onPress !== undefined &&
|
|
292
292
|
!this.props.disabled
|
|
293
293
|
}
|
|
294
|
+
// $FlowFixMe[prop-missing]
|
|
294
295
|
ref={this.props.hostRef}
|
|
295
296
|
{...eventHandlersWithoutBlurAndFocus}>
|
|
296
297
|
{this.props.children}
|
|
@@ -326,10 +327,10 @@ class TouchableOpacity extends React.Component<Props, State> {
|
|
|
326
327
|
}
|
|
327
328
|
}
|
|
328
329
|
|
|
329
|
-
const Touchable:
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
330
|
+
const Touchable: component(
|
|
331
|
+
ref: React.RefSetter<React.ElementRef<typeof Animated.View>>,
|
|
332
|
+
...props: Props
|
|
333
|
+
) = React.forwardRef((props, ref) => (
|
|
333
334
|
<TouchableOpacity {...props} hostRef={ref} />
|
|
334
335
|
));
|
|
335
336
|
|
|
@@ -195,8 +195,7 @@ module.exports = function TouchableWithoutFeedback(props: Props): React.Node {
|
|
|
195
195
|
|
|
196
196
|
// BACKWARD-COMPATIBILITY: Focus and blur events were never supported before
|
|
197
197
|
// adopting `Pressability`, so preserve that behavior.
|
|
198
|
-
const {onBlur, onFocus, ...eventHandlersWithoutBlurAndFocus} =
|
|
199
|
-
eventHandlers || {};
|
|
198
|
+
const {onBlur, onFocus, ...eventHandlersWithoutBlurAndFocus} = eventHandlers;
|
|
200
199
|
|
|
201
200
|
const elementProps: {[string]: mixed, ...} = {
|
|
202
201
|
...eventHandlersWithoutBlurAndFocus,
|
|
@@ -36,6 +36,7 @@ const ReactNativeStyleAttributes: {[string]: AnyAttributeType, ...} = {
|
|
|
36
36
|
borderRightWidth: true,
|
|
37
37
|
borderStartWidth: true,
|
|
38
38
|
borderTopWidth: true,
|
|
39
|
+
boxSizing: true,
|
|
39
40
|
columnGap: true,
|
|
40
41
|
borderWidth: true,
|
|
41
42
|
bottom: true,
|
|
@@ -125,7 +126,7 @@ const ReactNativeStyleAttributes: {[string]: AnyAttributeType, ...} = {
|
|
|
125
126
|
/**
|
|
126
127
|
* MixBlendMode
|
|
127
128
|
*/
|
|
128
|
-
|
|
129
|
+
mixBlendMode: true,
|
|
129
130
|
|
|
130
131
|
/**
|
|
131
132
|
* Isolation
|
|
@@ -174,6 +175,10 @@ const ReactNativeStyleAttributes: {[string]: AnyAttributeType, ...} = {
|
|
|
174
175
|
borderTopStartRadius: true,
|
|
175
176
|
cursor: true,
|
|
176
177
|
opacity: true,
|
|
178
|
+
outlineColor: colorAttributes,
|
|
179
|
+
outlineOffset: true,
|
|
180
|
+
outlineStyle: true,
|
|
181
|
+
outlineWidth: true,
|
|
177
182
|
pointerEvents: true,
|
|
178
183
|
|
|
179
184
|
/**
|
|
@@ -23,10 +23,10 @@ export type Props = ViewProps;
|
|
|
23
23
|
*
|
|
24
24
|
* @see https://reactnative.dev/docs/view
|
|
25
25
|
*/
|
|
26
|
-
const View:
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
26
|
+
const View: component(
|
|
27
|
+
ref: React.RefSetter<React.ElementRef<typeof ViewNativeComponent>>,
|
|
28
|
+
...props: ViewProps
|
|
29
|
+
) = React.forwardRef(
|
|
30
30
|
(
|
|
31
31
|
{
|
|
32
32
|
accessibilityElementsHidden,
|
|
@@ -27,10 +27,10 @@ export type Props = ViewProps;
|
|
|
27
27
|
*
|
|
28
28
|
* @see https://reactnative.dev/docs/view
|
|
29
29
|
*/
|
|
30
|
-
const View:
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
30
|
+
const View: component(
|
|
31
|
+
ref: React.RefSetter<React.ElementRef<typeof ViewNativeComponent>>,
|
|
32
|
+
...props: ViewProps
|
|
33
|
+
) = React.forwardRef(
|
|
34
34
|
(
|
|
35
35
|
{
|
|
36
36
|
accessibilityControls, // Win32
|
|
@@ -10,113 +10,21 @@
|
|
|
10
10
|
|
|
11
11
|
import type {
|
|
12
12
|
HostComponent,
|
|
13
|
-
|
|
13
|
+
HostInstance,
|
|
14
14
|
} from '../../Renderer/shims/ReactNativeTypes';
|
|
15
15
|
|
|
16
16
|
import * as NativeComponentRegistry from '../../NativeComponent/NativeComponentRegistry';
|
|
17
17
|
import codegenNativeCommands from '../../Utilities/codegenNativeCommands';
|
|
18
|
-
import Platform from '../../Utilities/Platform';
|
|
19
18
|
import {type ViewProps as Props} from './ViewPropTypes';
|
|
20
|
-
import * as React from 'react';
|
|
21
|
-
|
|
22
|
-
export const __INTERNAL_VIEW_CONFIG: PartialViewConfig =
|
|
23
|
-
Platform.OS === 'android'
|
|
24
|
-
? {
|
|
25
|
-
uiViewClassName: 'RCTView',
|
|
26
|
-
validAttributes: {
|
|
27
|
-
// ReactClippingViewManager @ReactProps
|
|
28
|
-
removeClippedSubviews: true,
|
|
29
|
-
|
|
30
|
-
// ReactViewManager @ReactProps
|
|
31
|
-
accessible: true,
|
|
32
|
-
hasTVPreferredFocus: true,
|
|
33
|
-
nextFocusDown: true,
|
|
34
|
-
nextFocusForward: true,
|
|
35
|
-
nextFocusLeft: true,
|
|
36
|
-
nextFocusRight: true,
|
|
37
|
-
nextFocusUp: true,
|
|
38
|
-
|
|
39
|
-
borderRadius: true,
|
|
40
|
-
borderTopLeftRadius: true,
|
|
41
|
-
borderTopRightRadius: true,
|
|
42
|
-
borderBottomRightRadius: true,
|
|
43
|
-
borderBottomLeftRadius: true,
|
|
44
|
-
borderTopStartRadius: true,
|
|
45
|
-
borderTopEndRadius: true,
|
|
46
|
-
borderBottomStartRadius: true,
|
|
47
|
-
borderBottomEndRadius: true,
|
|
48
|
-
borderEndEndRadius: true,
|
|
49
|
-
borderEndStartRadius: true,
|
|
50
|
-
borderStartEndRadius: true,
|
|
51
|
-
borderStartStartRadius: true,
|
|
52
|
-
borderStyle: true,
|
|
53
|
-
hitSlop: true,
|
|
54
|
-
pointerEvents: true,
|
|
55
|
-
nativeBackgroundAndroid: true,
|
|
56
|
-
nativeForegroundAndroid: true,
|
|
57
|
-
needsOffscreenAlphaCompositing: true,
|
|
58
|
-
|
|
59
|
-
borderWidth: true,
|
|
60
|
-
borderLeftWidth: true,
|
|
61
|
-
borderRightWidth: true,
|
|
62
|
-
borderTopWidth: true,
|
|
63
|
-
borderBottomWidth: true,
|
|
64
|
-
borderStartWidth: true,
|
|
65
|
-
borderEndWidth: true,
|
|
66
|
-
|
|
67
|
-
borderColor: {
|
|
68
|
-
process: require('../../StyleSheet/processColor').default,
|
|
69
|
-
},
|
|
70
|
-
borderLeftColor: {
|
|
71
|
-
process: require('../../StyleSheet/processColor').default,
|
|
72
|
-
},
|
|
73
|
-
borderRightColor: {
|
|
74
|
-
process: require('../../StyleSheet/processColor').default,
|
|
75
|
-
},
|
|
76
|
-
borderTopColor: {
|
|
77
|
-
process: require('../../StyleSheet/processColor').default,
|
|
78
|
-
},
|
|
79
|
-
borderBottomColor: {
|
|
80
|
-
process: require('../../StyleSheet/processColor').default,
|
|
81
|
-
},
|
|
82
|
-
borderStartColor: {
|
|
83
|
-
process: require('../../StyleSheet/processColor').default,
|
|
84
|
-
},
|
|
85
|
-
borderEndColor: {
|
|
86
|
-
process: require('../../StyleSheet/processColor').default,
|
|
87
|
-
},
|
|
88
|
-
borderBlockColor: {
|
|
89
|
-
process: require('../../StyleSheet/processColor').default,
|
|
90
|
-
},
|
|
91
|
-
borderBlockEndColor: {
|
|
92
|
-
process: require('../../StyleSheet/processColor').default,
|
|
93
|
-
},
|
|
94
|
-
borderBlockStartColor: {
|
|
95
|
-
process: require('../../StyleSheet/processColor').default,
|
|
96
|
-
},
|
|
97
|
-
focusable: true,
|
|
98
|
-
overflow: true,
|
|
99
|
-
backfaceVisibility: true,
|
|
100
|
-
experimental_layoutConformance: true,
|
|
101
|
-
},
|
|
102
|
-
}
|
|
103
|
-
: {
|
|
104
|
-
uiViewClassName: 'RCTView',
|
|
105
|
-
};
|
|
106
19
|
|
|
107
20
|
const ViewNativeComponent: HostComponent<Props> =
|
|
108
|
-
NativeComponentRegistry.get<Props>('RCTView', () =>
|
|
21
|
+
NativeComponentRegistry.get<Props>('RCTView', () => ({
|
|
22
|
+
uiViewClassName: 'RCTView',
|
|
23
|
+
}));
|
|
109
24
|
|
|
110
25
|
interface NativeCommands {
|
|
111
|
-
+hotspotUpdate: (
|
|
112
|
-
|
|
113
|
-
x: number,
|
|
114
|
-
y: number,
|
|
115
|
-
) => void;
|
|
116
|
-
+setPressed: (
|
|
117
|
-
viewRef: React.ElementRef<HostComponent<mixed>>,
|
|
118
|
-
pressed: boolean,
|
|
119
|
-
) => void;
|
|
26
|
+
+hotspotUpdate: (viewRef: HostInstance, x: number, y: number) => void;
|
|
27
|
+
+setPressed: (viewRef: HostInstance, pressed: boolean) => void;
|
|
120
28
|
}
|
|
121
29
|
|
|
122
30
|
export const Commands: NativeCommands = codegenNativeCommands<NativeCommands>({
|
|
@@ -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
|
|
@@ -567,9 +567,6 @@ export type ViewProps = $ReadOnly<{|
|
|
|
567
567
|
* optimization. Set this property to `false` to disable this optimization and
|
|
568
568
|
* ensure that this `View` exists in the native view hierarchy.
|
|
569
569
|
*
|
|
570
|
-
* @platform android
|
|
571
|
-
* In Fabric, this prop is used in ios as well.
|
|
572
|
-
*
|
|
573
570
|
* See https://reactnative.dev/docs/view#collapsable
|
|
574
571
|
*/
|
|
575
572
|
collapsable?: ?boolean,
|
|
@@ -628,9 +628,6 @@ export type ViewProps = $ReadOnly<{|
|
|
|
628
628
|
* optimization. Set this property to `false` to disable this optimization and
|
|
629
629
|
* ensure that this `View` exists in the native view hierarchy.
|
|
630
630
|
*
|
|
631
|
-
* @platform android
|
|
632
|
-
* In Fabric, this prop is used in ios as well.
|
|
633
|
-
*
|
|
634
631
|
* See https://reactnative.dev/docs/view#collapsable
|
|
635
632
|
*/
|
|
636
633
|
collapsable?: ?boolean,
|
|
@@ -22,10 +22,11 @@ type ExceptionDecorator = ExceptionData => ExceptionData;
|
|
|
22
22
|
let userExceptionDecorator: ?ExceptionDecorator;
|
|
23
23
|
let inUserExceptionDecorator = false;
|
|
24
24
|
|
|
25
|
-
// This
|
|
25
|
+
// This string is used to decorate an ExtendedError with extra data in select usecases.
|
|
26
26
|
// Note that data passed using this method should be strictly contained,
|
|
27
27
|
// as data that's not serializable/too large may cause issues with passing the error to the native code.
|
|
28
|
-
|
|
28
|
+
// TODO(T204185517): We should use a Symbol for this, but jsi through jsc doesn't support it yet.
|
|
29
|
+
const decoratedExtraDataKey = 'RN$ErrorExtraDataKey';
|
|
29
30
|
|
|
30
31
|
/**
|
|
31
32
|
* Allows the app to add information to the exception report before it is sent
|
|
@@ -120,6 +121,12 @@ function reportException(
|
|
|
120
121
|
const NativeExceptionsManager =
|
|
121
122
|
require('./NativeExceptionsManager').default;
|
|
122
123
|
if (NativeExceptionsManager) {
|
|
124
|
+
if (isFatal) {
|
|
125
|
+
if (global.RN$hasHandledFatalException?.()) {
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
global.RN$notifyOfFatalException?.();
|
|
129
|
+
}
|
|
123
130
|
NativeExceptionsManager.reportException(data);
|
|
124
131
|
}
|
|
125
132
|
}
|
|
@@ -140,24 +147,31 @@ let inExceptionHandler = false;
|
|
|
140
147
|
* Logs exceptions to the (native) console and displays them
|
|
141
148
|
*/
|
|
142
149
|
function handleException(e: mixed, isFatal: boolean) {
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
150
|
+
// TODO(T196834299): We should really use a c++ turbomodule for this
|
|
151
|
+
const reportToConsole = true;
|
|
152
|
+
if (
|
|
153
|
+
!global.RN$handleException ||
|
|
154
|
+
!global.RN$handleException(e, isFatal, reportToConsole)
|
|
155
|
+
) {
|
|
156
|
+
let error: Error;
|
|
157
|
+
if (e instanceof Error) {
|
|
158
|
+
error = e;
|
|
159
|
+
} else {
|
|
160
|
+
// Workaround for reporting errors caused by `throw 'some string'`
|
|
161
|
+
// Unfortunately there is no way to figure out the stacktrace in this
|
|
162
|
+
// case, so if you ended up here trying to trace an error, look for
|
|
163
|
+
// `throw '<error message>'` somewhere in your codebase.
|
|
164
|
+
error = new SyntheticError(e);
|
|
165
|
+
}
|
|
166
|
+
try {
|
|
167
|
+
inExceptionHandler = true;
|
|
168
|
+
/* $FlowFixMe[class-object-subtyping] added when improving typing for this
|
|
169
|
+
* parameters */
|
|
170
|
+
// $FlowFixMe[incompatible-call]
|
|
171
|
+
reportException(error, isFatal, reportToConsole);
|
|
172
|
+
} finally {
|
|
173
|
+
inExceptionHandler = false;
|
|
174
|
+
}
|
|
161
175
|
}
|
|
162
176
|
}
|
|
163
177
|
|
|
@@ -169,7 +183,7 @@ function reactConsoleErrorHandler(...args) {
|
|
|
169
183
|
if (!console.reportErrorsAsExceptions) {
|
|
170
184
|
return;
|
|
171
185
|
}
|
|
172
|
-
if (inExceptionHandler) {
|
|
186
|
+
if (inExceptionHandler || global.RN$inExceptionHandler?.()) {
|
|
173
187
|
// The fundamental trick here is that are multiple entry point to logging errors:
|
|
174
188
|
// (see D19743075 for more background)
|
|
175
189
|
//
|
|
@@ -223,14 +237,21 @@ function reactConsoleErrorHandler(...args) {
|
|
|
223
237
|
error.name = 'console.error';
|
|
224
238
|
}
|
|
225
239
|
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
error,
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
240
|
+
const isFatal = false;
|
|
241
|
+
const reportToConsole = false;
|
|
242
|
+
if (
|
|
243
|
+
!global.RN$handleException ||
|
|
244
|
+
!global.RN$handleException(error, isFatal, reportToConsole)
|
|
245
|
+
) {
|
|
246
|
+
reportException(
|
|
247
|
+
/* $FlowFixMe[class-object-subtyping] added when improving typing for this
|
|
248
|
+
* parameters */
|
|
249
|
+
// $FlowFixMe[incompatible-call]
|
|
250
|
+
error,
|
|
251
|
+
isFatal,
|
|
252
|
+
reportToConsole,
|
|
253
|
+
);
|
|
254
|
+
}
|
|
234
255
|
}
|
|
235
256
|
|
|
236
257
|
/**
|
|
@@ -14,7 +14,6 @@ import typeof NativeExceptionsManager from '../NativeExceptionsManager';
|
|
|
14
14
|
export default ({
|
|
15
15
|
reportFatalException: jest.fn(),
|
|
16
16
|
reportSoftException: jest.fn(),
|
|
17
|
-
updateExceptionMessage: jest.fn(),
|
|
18
17
|
dismissRedbox: jest.fn(),
|
|
19
18
|
reportException: jest.fn(),
|
|
20
19
|
}: NativeExceptionsManager);
|
|
@@ -16,16 +16,7 @@ if (global.RN$Bridgeless === true && global.RN$registerCallableModule) {
|
|
|
16
16
|
} else {
|
|
17
17
|
const BatchedBridge = require('../BatchedBridge/BatchedBridge');
|
|
18
18
|
registerModule = (
|
|
19
|
-
moduleName:
|
|
20
|
-
| $TEMPORARY$string<'GlobalPerformanceLogger'>
|
|
21
|
-
| $TEMPORARY$string<'HMRClient'>
|
|
22
|
-
| $TEMPORARY$string<'HeapCapture'>
|
|
23
|
-
| $TEMPORARY$string<'JSTimers'>
|
|
24
|
-
| $TEMPORARY$string<'RCTDeviceEventEmitter'>
|
|
25
|
-
| $TEMPORARY$string<'RCTLog'>
|
|
26
|
-
| $TEMPORARY$string<'RCTNativeAppEventEmitter'>
|
|
27
|
-
| $TEMPORARY$string<'SamplingProfiler'>
|
|
28
|
-
| $TEMPORARY$string<'Systrace'>,
|
|
19
|
+
moduleName: string,
|
|
29
20
|
/* $FlowFixMe[missing-local-annot] The type annotation(s) required by
|
|
30
21
|
* Flow's LTI update could not be added via codemod */
|
|
31
22
|
factory,
|
|
@@ -42,13 +42,9 @@ if (__DEV__) {
|
|
|
42
42
|
if (!Platform.isTesting) {
|
|
43
43
|
const HMRClient = require('../Utilities/HMRClient');
|
|
44
44
|
|
|
45
|
-
// [0.76 only] When under React Native DevTools, log "JavaScript logs will
|
|
46
|
-
// be removed from Metro..." warning, and continue to forward logs.
|
|
47
45
|
if (global.__FUSEBOX_HAS_FULL_CONSOLE_SUPPORT__) {
|
|
48
46
|
HMRClient.unstable_notifyFuseboxConsoleEnabled();
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
if (console._isPolyfilled) {
|
|
47
|
+
} else if (console._isPolyfilled) {
|
|
52
48
|
// We assume full control over the console and send JavaScript logs to Metro.
|
|
53
49
|
[
|
|
54
50
|
'trace',
|
|
@@ -10,24 +10,26 @@
|
|
|
10
10
|
|
|
11
11
|
'use strict';
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
ExceptionsManager
|
|
13
|
+
if (global.RN$useAlwaysAvailableJSErrorHandling !== true) {
|
|
14
|
+
/**
|
|
15
|
+
* Sets up the console and exception handling (redbox) for React Native.
|
|
16
|
+
* You can use this module directly, or just require InitializeCore.
|
|
17
|
+
*/
|
|
18
|
+
const ExceptionsManager = require('./ExceptionsManager');
|
|
19
|
+
ExceptionsManager.installConsoleErrorReporter();
|
|
19
20
|
|
|
20
|
-
// Set up error handler
|
|
21
|
-
if (!global.__fbDisableExceptionsManager) {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
21
|
+
// Set up error handler
|
|
22
|
+
if (!global.__fbDisableExceptionsManager) {
|
|
23
|
+
const handleError = (e: mixed, isFatal: boolean) => {
|
|
24
|
+
try {
|
|
25
|
+
ExceptionsManager.handleException(e, isFatal);
|
|
26
|
+
} catch (ee) {
|
|
27
|
+
console.log('Failed to print error: ', ee.message);
|
|
28
|
+
throw e;
|
|
29
|
+
}
|
|
30
|
+
};
|
|
30
31
|
|
|
31
|
-
|
|
32
|
-
|
|
32
|
+
const ErrorUtils = require('../vendor/core/ErrorUtils');
|
|
33
|
+
ErrorUtils.setGlobalHandler(handleError);
|
|
34
|
+
}
|
|
33
35
|
}
|
|
@@ -10,14 +10,44 @@
|
|
|
10
10
|
|
|
11
11
|
'use strict';
|
|
12
12
|
|
|
13
|
-
import type {Domain} from '../../src/private/
|
|
13
|
+
import type {Domain} from '../../src/private/debugging/setUpFuseboxReactDevToolsDispatcher';
|
|
14
|
+
import type {Spec as NativeReactDevToolsRuntimeSettingsModuleSpec} from '../../src/private/fusebox/specs/NativeReactDevToolsRuntimeSettingsModule';
|
|
14
15
|
|
|
15
16
|
if (__DEV__) {
|
|
16
17
|
// Register dispatcher on global, which can be used later by Chrome DevTools frontend
|
|
17
|
-
require('../../src/private/
|
|
18
|
+
require('../../src/private/debugging/setUpFuseboxReactDevToolsDispatcher');
|
|
19
|
+
const {
|
|
20
|
+
initialize,
|
|
21
|
+
connectToDevTools,
|
|
22
|
+
connectWithCustomMessagingProtocol,
|
|
23
|
+
} = require('react-devtools-core');
|
|
24
|
+
|
|
25
|
+
const reactDevToolsSettingsManager = require('../../src/private/debugging/ReactDevToolsSettingsManager');
|
|
26
|
+
const serializedHookSettings =
|
|
27
|
+
reactDevToolsSettingsManager.getGlobalHookSettings();
|
|
28
|
+
const maybeReactDevToolsRuntimeSettingsModuleModule =
|
|
29
|
+
require('../../src/private/fusebox/specs/NativeReactDevToolsRuntimeSettingsModule').default;
|
|
30
|
+
|
|
31
|
+
let hookSettings = null;
|
|
32
|
+
if (serializedHookSettings != null) {
|
|
33
|
+
try {
|
|
34
|
+
const parsedSettings = JSON.parse(serializedHookSettings);
|
|
35
|
+
hookSettings = parsedSettings;
|
|
36
|
+
} catch {
|
|
37
|
+
console.error(
|
|
38
|
+
'Failed to parse persisted React DevTools hook settings. React DevTools will be initialized with default settings.',
|
|
39
|
+
);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const {
|
|
44
|
+
isProfiling: shouldStartProfilingNow,
|
|
45
|
+
profilingSettings: initialProfilingSettings,
|
|
46
|
+
} = readReloadAndProfileConfig(maybeReactDevToolsRuntimeSettingsModuleModule);
|
|
18
47
|
|
|
19
48
|
// Install hook before React is loaded.
|
|
20
|
-
|
|
49
|
+
initialize(hookSettings, shouldStartProfilingNow, initialProfilingSettings);
|
|
50
|
+
|
|
21
51
|
// This should be defined in DEV, otherwise error is expected.
|
|
22
52
|
const fuseboxReactDevToolsDispatcher =
|
|
23
53
|
global.__FUSEBOX_REACT_DEVTOOLS_DISPATCHER__;
|
|
@@ -25,9 +55,14 @@ if (__DEV__) {
|
|
|
25
55
|
fuseboxReactDevToolsDispatcher.BINDING_NAME;
|
|
26
56
|
|
|
27
57
|
const ReactNativeStyleAttributes = require('../Components/View/ReactNativeStyleAttributes');
|
|
28
|
-
const devToolsSettingsManager = require('../DevToolsSettings/DevToolsSettingsManager');
|
|
29
58
|
const resolveRNStyle = require('../StyleSheet/flattenStyle');
|
|
30
59
|
|
|
60
|
+
function handleReactDevToolsSettingsUpdate(settings: Object) {
|
|
61
|
+
reactDevToolsSettingsManager.setGlobalHookSettings(
|
|
62
|
+
JSON.stringify(settings),
|
|
63
|
+
);
|
|
64
|
+
}
|
|
65
|
+
|
|
31
66
|
let disconnect = null;
|
|
32
67
|
function disconnectBackendFromReactDevToolsInFuseboxIfNeeded() {
|
|
33
68
|
if (disconnect != null) {
|
|
@@ -37,7 +72,15 @@ if (__DEV__) {
|
|
|
37
72
|
}
|
|
38
73
|
|
|
39
74
|
function connectToReactDevToolsInFusebox(domain: Domain) {
|
|
40
|
-
|
|
75
|
+
const {
|
|
76
|
+
isReloadAndProfileSupported,
|
|
77
|
+
isProfiling,
|
|
78
|
+
onReloadAndProfile,
|
|
79
|
+
onReloadAndProfileFlagsReset,
|
|
80
|
+
} = readReloadAndProfileConfig(
|
|
81
|
+
maybeReactDevToolsRuntimeSettingsModuleModule,
|
|
82
|
+
);
|
|
83
|
+
disconnect = connectWithCustomMessagingProtocol({
|
|
41
84
|
onSubscribe: listener => {
|
|
42
85
|
domain.onMessage.addEventListener(listener);
|
|
43
86
|
},
|
|
@@ -47,9 +90,13 @@ if (__DEV__) {
|
|
|
47
90
|
onMessage: (event, payload) => {
|
|
48
91
|
domain.sendMessage({event, payload});
|
|
49
92
|
},
|
|
50
|
-
settingsManager: devToolsSettingsManager,
|
|
51
93
|
nativeStyleEditorValidAttributes: Object.keys(ReactNativeStyleAttributes),
|
|
52
94
|
resolveRNStyle,
|
|
95
|
+
onSettingsUpdated: handleReactDevToolsSettingsUpdate,
|
|
96
|
+
isReloadAndProfileSupported,
|
|
97
|
+
isProfiling,
|
|
98
|
+
onReloadAndProfile,
|
|
99
|
+
onReloadAndProfileFlagsReset,
|
|
53
100
|
});
|
|
54
101
|
}
|
|
55
102
|
|
|
@@ -101,14 +148,26 @@ if (__DEV__) {
|
|
|
101
148
|
isWebSocketOpen = true;
|
|
102
149
|
});
|
|
103
150
|
|
|
104
|
-
|
|
151
|
+
const {
|
|
152
|
+
isReloadAndProfileSupported,
|
|
153
|
+
isProfiling,
|
|
154
|
+
onReloadAndProfile,
|
|
155
|
+
onReloadAndProfileFlagsReset,
|
|
156
|
+
} = readReloadAndProfileConfig(
|
|
157
|
+
maybeReactDevToolsRuntimeSettingsModuleModule,
|
|
158
|
+
);
|
|
159
|
+
connectToDevTools({
|
|
105
160
|
isAppActive,
|
|
106
161
|
resolveRNStyle,
|
|
107
162
|
nativeStyleEditorValidAttributes: Object.keys(
|
|
108
163
|
ReactNativeStyleAttributes,
|
|
109
164
|
),
|
|
110
165
|
websocket: ws,
|
|
111
|
-
|
|
166
|
+
onSettingsUpdated: handleReactDevToolsSettingsUpdate,
|
|
167
|
+
isReloadAndProfileSupported,
|
|
168
|
+
isProfiling,
|
|
169
|
+
onReloadAndProfile,
|
|
170
|
+
onReloadAndProfileFlagsReset,
|
|
112
171
|
});
|
|
113
172
|
}
|
|
114
173
|
}
|
|
@@ -140,3 +199,43 @@ if (__DEV__) {
|
|
|
140
199
|
);
|
|
141
200
|
connectToWSBasedReactDevToolsFrontend(); // Try connecting once on load
|
|
142
201
|
}
|
|
202
|
+
|
|
203
|
+
function readReloadAndProfileConfig(
|
|
204
|
+
maybeModule: ?NativeReactDevToolsRuntimeSettingsModuleSpec,
|
|
205
|
+
) {
|
|
206
|
+
const isReloadAndProfileSupported = maybeModule != null;
|
|
207
|
+
const config = maybeModule?.getReloadAndProfileConfig();
|
|
208
|
+
const isProfiling = config?.shouldReloadAndProfile === true;
|
|
209
|
+
const profilingSettings = {
|
|
210
|
+
recordChangeDescriptions: config?.recordChangeDescriptions === true,
|
|
211
|
+
recordTimeline: false,
|
|
212
|
+
};
|
|
213
|
+
const onReloadAndProfile = (recordChangeDescriptions: boolean) => {
|
|
214
|
+
if (maybeModule == null) {
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
maybeModule.setReloadAndProfileConfig({
|
|
219
|
+
shouldReloadAndProfile: true,
|
|
220
|
+
recordChangeDescriptions,
|
|
221
|
+
});
|
|
222
|
+
};
|
|
223
|
+
const onReloadAndProfileFlagsReset = () => {
|
|
224
|
+
if (maybeModule == null) {
|
|
225
|
+
return;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
maybeModule.setReloadAndProfileConfig({
|
|
229
|
+
shouldReloadAndProfile: false,
|
|
230
|
+
recordChangeDescriptions: false,
|
|
231
|
+
});
|
|
232
|
+
};
|
|
233
|
+
|
|
234
|
+
return {
|
|
235
|
+
isReloadAndProfileSupported,
|
|
236
|
+
isProfiling,
|
|
237
|
+
profilingSettings,
|
|
238
|
+
onReloadAndProfile,
|
|
239
|
+
onReloadAndProfileFlagsReset,
|
|
240
|
+
};
|
|
241
|
+
}
|