@office-iss/react-native-win32 0.74.4 → 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.
- package/.flowconfig +9 -4
- package/CHANGELOG.json +554 -51
- package/CHANGELOG.md +165 -30
- package/Libraries/Animated/AnimatedImplementation.js +2 -0
- package/Libraries/Animated/NativeAnimatedHelper.js +4 -0
- package/Libraries/Animated/NativeAnimatedHelper.win32.js +4 -0
- package/Libraries/Animated/createAnimatedComponent.js +10 -4
- package/Libraries/Animated/useAnimatedProps.js +56 -28
- package/Libraries/BatchedBridge/MessageQueue.js +1 -0
- package/Libraries/Components/Button.js +10 -5
- package/Libraries/Components/Button.win32.js +1 -0
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +11 -2
- package/Libraries/Components/Pressable/Pressable.js +13 -6
- package/Libraries/Components/Pressable/Pressable.win32.js +13 -6
- package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +4 -0
- package/Libraries/Components/ScrollView/ScrollView.js +109 -29
- package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +6 -0
- package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +13 -1
- package/Libraries/Components/StatusBar/StatusBar.js +1 -21
- package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +0 -15
- package/Libraries/Components/TextInput/InputAccessoryView.js +10 -1
- package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +0 -12
- package/Libraries/Components/TextInput/TextInput.d.ts +0 -19
- package/Libraries/Components/TextInput/TextInput.js +14 -70
- package/Libraries/Components/TextInput/TextInput.win32.js +15 -72
- package/Libraries/Components/Touchable/Touchable.js +2 -2
- package/Libraries/Components/Touchable/TouchableHighlight.d.ts +4 -10
- package/Libraries/Components/Touchable/TouchableHighlight.js +3 -1
- package/Libraries/Components/Touchable/TouchableOpacity.d.ts +4 -32
- package/Libraries/Components/Touchable/TouchableOpacity.js +3 -1
- package/Libraries/Components/Touchable/TouchableWithoutFeedback.d.ts +8 -0
- package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +117 -111
- package/Libraries/Components/View/ReactNativeStyleAttributes.js +6 -0
- package/Libraries/Components/View/ReactNativeViewAttributes.js +1 -0
- package/Libraries/Components/View/ReactNativeViewAttributes.win32.js +1 -0
- package/Libraries/Components/View/View.js +0 -11
- package/Libraries/Components/View/View.win32.js +0 -11
- package/Libraries/Components/View/ViewAccessibility.js +4 -4
- package/Libraries/Components/View/ViewAccessibility.win32.js +6 -6
- package/Libraries/Components/View/ViewPropTypes.d.ts +7 -49
- package/Libraries/Components/View/ViewPropTypes.js +7 -0
- package/Libraries/Components/View/ViewPropTypes.win32.js +7 -0
- package/Libraries/Core/Devtools/loadBundleFromServer.js +3 -3
- package/Libraries/Core/Devtools/loadBundleFromServer.win32.js +153 -0
- package/Libraries/Core/Devtools/parseErrorStack.js +5 -5
- package/Libraries/Core/Devtools/parseHermesStack.js +22 -16
- package/Libraries/Core/ErrorHandlers.js +116 -0
- package/Libraries/Core/ExceptionsManager.js +2 -2
- package/Libraries/Core/ReactNativeVersion.js +3 -3
- package/Libraries/Core/setUpDeveloperTools.js +3 -1
- package/Libraries/Core/setUpPerformance.js +6 -4
- package/Libraries/Core/setUpReactDevTools.js +70 -10
- package/Libraries/Core/setUpTimers.js +50 -31
- package/Libraries/Debugging/DebuggingOverlayRegistry.js +1 -1
- package/Libraries/Image/Image.android.js +23 -13
- package/Libraries/Image/Image.d.ts +14 -15
- package/Libraries/Image/Image.ios.js +21 -11
- package/Libraries/Image/Image.win32.js +5 -3
- package/Libraries/Image/ImageProps.js +16 -5
- package/Libraries/Image/ImageTypes.flow.js +7 -2
- package/Libraries/Image/ImageUtils.js +1 -0
- package/Libraries/Image/ImageViewNativeComponent.js +2 -1
- package/Libraries/Inspector/ElementBox.js +6 -3
- package/Libraries/Inspector/ElementProperties.js +1 -1
- package/Libraries/Interaction/TouchHistoryMath.js +4 -4
- package/Libraries/IntersectionObserver/IntersectionObserverManager.js +6 -26
- package/Libraries/JSInspector/NetworkAgent.js +1 -1
- package/Libraries/LogBox/Data/LogBoxData.js +39 -29
- package/Libraries/LogBox/Data/LogBoxLog.js +114 -2
- package/Libraries/LogBox/Data/parseLogBoxLog.js +168 -53
- package/Libraries/LogBox/LogBox.js +29 -12
- package/Libraries/LogBox/LogBoxNotificationContainer.js +4 -0
- package/Libraries/LogBox/UI/LogBoxInspector.js +8 -70
- package/Libraries/LogBox/UI/LogBoxInspectorBody.js +87 -0
- package/Libraries/LogBox/UI/LogBoxInspectorFooter.js +6 -42
- package/Libraries/LogBox/UI/LogBoxInspectorFooterButton.js +58 -0
- package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +5 -66
- package/Libraries/LogBox/UI/LogBoxInspectorHeader.win32.js +8 -52
- package/Libraries/LogBox/UI/LogBoxInspectorHeaderButton.js +76 -0
- package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.js +8 -5
- package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.win32.js +8 -5
- package/Libraries/LogBox/UI/LogBoxNotification.js +13 -152
- package/Libraries/LogBox/UI/LogBoxNotificationCountBadge.js +63 -0
- package/Libraries/LogBox/UI/LogBoxNotificationDismissButton.js +67 -0
- package/Libraries/LogBox/UI/LogBoxNotificationMessage.js +57 -0
- package/Libraries/NativeComponent/BaseViewConfig.android.js +5 -0
- package/Libraries/NativeComponent/BaseViewConfig.ios.js +5 -0
- package/Libraries/NativeComponent/BaseViewConfig.win32.js +5 -0
- package/Libraries/NativeComponent/NativeComponentRegistry.js +12 -5
- package/Libraries/NativeComponent/StaticViewConfigValidator.js +3 -0
- package/Libraries/Network/XMLHttpRequest.js +5 -1
- package/Libraries/NewAppScreen/components/LearnMoreLinks.js +3 -3
- package/Libraries/Pressability/Pressability.js +3 -51
- package/Libraries/Pressability/Pressability.win32.js +3 -51
- package/Libraries/ReactNative/AppContainer-dev.js +3 -2
- package/Libraries/ReactNative/AppContainer-prod.js +2 -1
- package/Libraries/ReactNative/AppContainer.js +2 -0
- package/Libraries/ReactNative/AppRegistry.d.ts +7 -0
- package/Libraries/ReactNative/AppRegistry.js +10 -4
- package/Libraries/ReactNative/BridgelessUIManager.js +1 -21
- package/Libraries/ReactNative/FabricUIManager.js +0 -51
- package/Libraries/ReactNative/ReactFabricPublicInstance/warnForStyleProps.js +1 -0
- package/Libraries/ReactNative/RendererImplementation.js +20 -2
- package/Libraries/ReactNative/UIManager.d.ts +0 -21
- package/Libraries/ReactNative/UIManagerProperties.js +0 -3
- package/Libraries/ReactNative/__mocks__/FabricUIManager.js +5 -341
- package/Libraries/ReactNative/getNativeComponentAttributes.js +8 -8
- package/Libraries/ReactNative/renderApplication.js +3 -0
- package/Libraries/Renderer/implementations/ReactFabric-dev.js +15682 -27088
- package/Libraries/Renderer/implementations/ReactFabric-prod.js +5082 -4381
- package/Libraries/Renderer/implementations/ReactFabric-profiling.js +3480 -2571
- package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +15943 -27543
- package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +5303 -4606
- package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +3450 -2572
- package/Libraries/Renderer/shims/ReactFabric.js +2 -2
- package/Libraries/Renderer/shims/ReactFeatureFlags.js +2 -2
- package/Libraries/Renderer/shims/ReactNative.js +2 -3
- package/Libraries/Renderer/shims/ReactNativeTypes.js +24 -3
- package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +2 -2
- package/Libraries/Renderer/shims/createReactNativeComponentClass.js +2 -2
- package/Libraries/Share/Share.d.ts +16 -10
- package/Libraries/Share/Share.js +14 -15
- package/Libraries/StyleSheet/StyleSheet.d.ts +1 -1
- package/Libraries/StyleSheet/StyleSheet.js +3 -10
- package/Libraries/StyleSheet/StyleSheet.win32.js +3 -10
- package/Libraries/StyleSheet/StyleSheetTypes.d.ts +21 -21
- package/Libraries/StyleSheet/StyleSheetTypes.js +24 -18
- package/Libraries/StyleSheet/flattenStyle.js +1 -0
- package/Libraries/StyleSheet/processFilter.js +132 -0
- package/Libraries/StyleSheet/processTransform.js +18 -3
- package/Libraries/Text/Text.js +151 -128
- package/Libraries/Text/Text.win32.js +163 -138
- package/Libraries/Text/TextNativeComponent.js +5 -4
- package/Libraries/Text/TextNativeComponent.win32.js +5 -4
- package/Libraries/Text/TextProps.js +6 -6
- package/Libraries/Text/TextProps.win32.js +6 -6
- package/Libraries/TurboModule/TurboModuleRegistry.js +2 -1
- package/Libraries/Types/CodegenTypes.js +3 -0
- package/Libraries/Utilities/{LoadingView.android.js → DevLoadingView.js} +33 -11
- package/Libraries/Utilities/Dimensions.js +1 -0
- package/Libraries/Utilities/Dimensions.win32.js +1 -0
- package/Libraries/Utilities/HMRClient.js +36 -8
- package/Libraries/Utilities/HMRClientProdShim.js +1 -0
- package/Libraries/Utilities/Platform.android.js +4 -4
- package/Libraries/Utilities/RCTLog.js +1 -0
- package/Libraries/Utilities/ReactNativeTestTools.js +12 -24
- package/Libraries/Utilities/verifyComponentAttributeEquivalence.js +11 -6
- package/Libraries/__tests__/ButtonWin32-test.js +7 -6
- package/Libraries/promiseRejectionTrackingOptions.js +1 -0
- package/jest/mockComponent.js +7 -0
- package/jest/renderer.js +25 -14
- package/jest/setup.js +19 -13
- package/jest.config.js +2 -1
- package/overrides.json +30 -29
- package/package.json +27 -25
- package/rn-get-polyfills.js +1 -0
- package/src/private/core/composeStyles.js +27 -0
- package/src/private/featureflags/ReactNativeFeatureFlags.js +93 -33
- package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +23 -4
- package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +56 -0
- package/src/private/fusebox/setUpFuseboxReactDevToolsDispatcher.js +108 -0
- package/src/private/specs/modules/NativeBlobModule.js +4 -2
- package/src/private/specs/modules/NativeDevSettings.js +1 -0
- package/src/private/specs/modules/NativePushNotificationManagerIOS.js +0 -4
- package/src/private/specs/modules/NativeUIManager.js +0 -7
- package/src/private/webapis/dom/geometry/DOMRectReadOnly.js +24 -24
- package/src/private/webapis/dom/nodes/ReactNativeElement.js +11 -14
- package/src/private/webapis/dom/nodes/ReadOnlyCharacterData.js +2 -3
- package/src/private/webapis/dom/nodes/ReadOnlyElement.js +24 -54
- package/src/private/webapis/dom/nodes/ReadOnlyNode.js +5 -13
- package/src/private/webapis/dom/nodes/specs/NativeDOM.js +468 -0
- package/src/private/webapis/dom/nodes/specs/__mocks__/NativeDOMMock.js +413 -0
- package/src/private/webapis/dom/oldstylecollections/DOMRectList.js +4 -4
- package/src/private/webapis/dom/oldstylecollections/HTMLCollection.js +4 -4
- package/src/private/webapis/dom/oldstylecollections/NodeList.js +5 -5
- package/src/private/webapis/idlecallbacks/specs/NativeIdleCallbacks.js +34 -0
- package/src/private/webapis/microtasks/specs/NativeMicrotasks.js +21 -0
- package/src/private/webapis/performance/EventCounts.js +1 -1
- package/src/private/webapis/performance/MemoryInfo.js +9 -9
- package/src/private/webapis/performance/Performance.js +10 -56
- package/src/private/webapis/performance/PerformanceObserver.js +30 -22
- package/src/private/webapis/performance/RawPerformanceEntry.js +2 -7
- package/src/private/webapis/performance/ReactNativeStartupTiming.js +18 -18
- package/src/private/webapis/performance/UserTiming.js +63 -0
- package/src/private/webapis/performance/{NativePerformance.js → specs/NativePerformance.js} +3 -2
- package/src/private/webapis/performance/{NativePerformanceObserver.js → specs/NativePerformanceObserver.js} +2 -2
- package/src/private/webapis/performance/{__mocks__ → specs/__mocks__}/NativePerformance.js +1 -1
- package/src/private/webapis/performance/{__mocks__ → specs/__mocks__}/NativePerformanceObserver.js +3 -4
- package/src-win/Libraries/Components/View/ViewPropTypes.d.ts +7 -49
- package/types/modules/globals.d.ts +4 -0
- package/Libraries/Components/ScrollView/ScrollView.win32.js +0 -1915
- package/Libraries/NativeModules/specs/NativeAnimationsDebugModule.js +0 -13
- package/Libraries/Utilities/LoadingView.ios.js +0 -50
- package/Libraries/Utilities/LoadingView.js +0 -16
- package/jest/ReactNativeInternalFeatureFlagsMock.js +0 -13
- package/src/private/featureflags/NativeReactNativeFeatureFlags.js +0 -44
- package/src/private/featureflags/__tests__/ReactNativeFeatureFlags-test.js +0 -92
- package/src/private/specs/modules/NativeAnimationsDebugModule.js +0 -20
- package/src/private/webapis/dom/oldstylecollections/__tests__/DOMRectList-test.js +0 -85
- package/src/private/webapis/dom/oldstylecollections/__tests__/HTMLCollection-test.js +0 -80
- package/src/private/webapis/dom/oldstylecollections/__tests__/NodeList-test.js +0 -161
- package/src/private/webapis/performance/__tests__/EventCounts-test.js +0 -116
- package/src/private/webapis/performance/__tests__/NativePerformanceMock-test.js +0 -82
- package/src/private/webapis/performance/__tests__/NativePerformanceObserverMock-test.js +0 -108
- package/src/private/webapis/performance/__tests__/Performance-test.js +0 -117
- package/src/private/webapis/performance/__tests__/PerformanceObserver-test.js +0 -208
|
@@ -13,6 +13,7 @@ import type {ExtendedExceptionData} from './Data/parseLogBoxLog';
|
|
|
13
13
|
|
|
14
14
|
import Platform from '../Utilities/Platform';
|
|
15
15
|
import RCTLog from '../Utilities/RCTLog';
|
|
16
|
+
import {hasComponentStack} from './Data/parseLogBoxLog';
|
|
16
17
|
|
|
17
18
|
export type {LogData, ExtendedExceptionData, IgnorePattern};
|
|
18
19
|
|
|
@@ -150,7 +151,8 @@ if (__DEV__) {
|
|
|
150
151
|
|
|
151
152
|
try {
|
|
152
153
|
if (!isRCTLogAdviceWarning(...args)) {
|
|
153
|
-
const {category, message, componentStack} =
|
|
154
|
+
const {category, message, componentStack, componentStackType} =
|
|
155
|
+
parseLogBoxLog(args);
|
|
154
156
|
|
|
155
157
|
if (!LogBoxData.isMessageIgnored(message.content)) {
|
|
156
158
|
LogBoxData.addLog({
|
|
@@ -158,6 +160,7 @@ if (__DEV__) {
|
|
|
158
160
|
category,
|
|
159
161
|
message,
|
|
160
162
|
componentStack,
|
|
163
|
+
componentStackType,
|
|
161
164
|
});
|
|
162
165
|
}
|
|
163
166
|
}
|
|
@@ -176,12 +179,20 @@ if (__DEV__) {
|
|
|
176
179
|
}
|
|
177
180
|
|
|
178
181
|
try {
|
|
179
|
-
if (!isWarningModuleWarning(...args)) {
|
|
180
|
-
// Only show LogBox for the 'warning' module,
|
|
182
|
+
if (!isWarningModuleWarning(...args) && !hasComponentStack(args)) {
|
|
183
|
+
// Only show LogBox for the 'warning' module, or React errors with
|
|
184
|
+
// component stacks, otherwise pass the error through.u
|
|
185
|
+
//
|
|
181
186
|
// By passing through, this will get picked up by the React console override,
|
|
182
187
|
// potentially adding the component stack. React then passes it back to the
|
|
183
188
|
// React Native ExceptionsManager, which reports it to LogBox as an error.
|
|
184
189
|
//
|
|
190
|
+
// Ideally, we refactor all RN error handling so that LogBox patching
|
|
191
|
+
// errors is not necessary, and they are reported the same as a framework.
|
|
192
|
+
// The blocker to this is that the ExceptionManager console.error override
|
|
193
|
+
// strigifys all of the args before passing it through to LogBox, which
|
|
194
|
+
// would lose all of the interpolation information.
|
|
195
|
+
//
|
|
185
196
|
// The 'warning' module needs to be handled here because React internally calls
|
|
186
197
|
// `console.error('Warning: ')` with the component stack already included.
|
|
187
198
|
originalConsoleError(...args);
|
|
@@ -190,20 +201,25 @@ if (__DEV__) {
|
|
|
190
201
|
|
|
191
202
|
const format = args[0].replace('Warning: ', '');
|
|
192
203
|
const filterResult = LogBoxData.checkWarningFilter(format);
|
|
193
|
-
if (filterResult.suppressCompletely) {
|
|
194
|
-
return;
|
|
195
|
-
}
|
|
196
|
-
|
|
197
204
|
let level = 'error';
|
|
198
|
-
if (filterResult.
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
205
|
+
if (filterResult.monitorEvent !== 'warning_unhandled') {
|
|
206
|
+
if (filterResult.suppressCompletely) {
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
if (filterResult.suppressDialog_LEGACY === true) {
|
|
211
|
+
level = 'warn';
|
|
212
|
+
} else if (filterResult.forceDialogImmediately === true) {
|
|
213
|
+
level = 'fatal'; // Do not downgrade. These are real bugs with same severity as throws.
|
|
214
|
+
}
|
|
202
215
|
}
|
|
203
216
|
|
|
204
217
|
// Unfortunately, we need to add the Warning: prefix back for downstream dependencies.
|
|
218
|
+
// Downstream, we check for this prefix to know that LogBox already handled it, so
|
|
219
|
+
// it doesn't get reported back to LogBox. It's an absolute mess.
|
|
205
220
|
args[0] = `Warning: ${filterResult.finalFormat}`;
|
|
206
|
-
const {category, message, componentStack} =
|
|
221
|
+
const {category, message, componentStack, componentStackType} =
|
|
222
|
+
parseLogBoxLog(args);
|
|
207
223
|
|
|
208
224
|
// Interpolate the message so they are formatted for adb and other CLIs.
|
|
209
225
|
// This is different than the message.content above because it includes component stacks.
|
|
@@ -216,6 +232,7 @@ if (__DEV__) {
|
|
|
216
232
|
category,
|
|
217
233
|
message,
|
|
218
234
|
componentStack,
|
|
235
|
+
componentStackType,
|
|
219
236
|
});
|
|
220
237
|
}
|
|
221
238
|
} catch (err) {
|
|
@@ -36,6 +36,10 @@ export function _LogBoxNotificationContainer(props: Props): React.Node {
|
|
|
36
36
|
};
|
|
37
37
|
|
|
38
38
|
function openLog(log: LogBoxLog) {
|
|
39
|
+
if (log.onNotificationPress) {
|
|
40
|
+
log.onNotificationPress();
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
39
43
|
let index = logs.length - 1;
|
|
40
44
|
|
|
41
45
|
// Stop at zero because if we don't find any log, we'll open the first log.
|
|
@@ -9,40 +9,37 @@
|
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
11
|
import Keyboard from '../../Components/Keyboard/Keyboard';
|
|
12
|
-
import ScrollView from '../../Components/ScrollView/ScrollView';
|
|
13
12
|
import View from '../../Components/View/View';
|
|
14
13
|
import StyleSheet from '../../StyleSheet/StyleSheet';
|
|
15
14
|
import * as LogBoxData from '../Data/LogBoxData';
|
|
16
15
|
import LogBoxLog, {type LogLevel} from '../Data/LogBoxLog';
|
|
17
|
-
import
|
|
16
|
+
import LogBoxInspectorBody from './LogBoxInspectorBody';
|
|
18
17
|
import LogBoxInspectorFooter from './LogBoxInspectorFooter';
|
|
19
18
|
import LogBoxInspectorHeader from './LogBoxInspectorHeader';
|
|
20
|
-
import LogBoxInspectorMessageHeader from './LogBoxInspectorMessageHeader';
|
|
21
|
-
import LogBoxInspectorReactFrames from './LogBoxInspectorReactFrames';
|
|
22
|
-
import LogBoxInspectorStackFrames from './LogBoxInspectorStackFrames';
|
|
23
19
|
import * as LogBoxStyle from './LogBoxStyle';
|
|
24
20
|
import * as React from 'react';
|
|
21
|
+
import {useEffect} from 'react';
|
|
25
22
|
|
|
26
|
-
type Props = $ReadOnly<{
|
|
23
|
+
type Props = $ReadOnly<{
|
|
27
24
|
onDismiss: () => void,
|
|
28
25
|
onChangeSelectedIndex: (index: number) => void,
|
|
29
26
|
onMinimize: () => void,
|
|
30
27
|
logs: $ReadOnlyArray<LogBoxLog>,
|
|
31
28
|
selectedIndex: number,
|
|
32
29
|
fatalType?: ?LogLevel,
|
|
33
|
-
|
|
30
|
+
}>;
|
|
34
31
|
|
|
35
|
-
function LogBoxInspector(props: Props): React.Node {
|
|
32
|
+
export default function LogBoxInspector(props: Props): React.Node {
|
|
36
33
|
const {logs, selectedIndex} = props;
|
|
37
34
|
let log = logs[selectedIndex];
|
|
38
35
|
|
|
39
|
-
|
|
36
|
+
useEffect(() => {
|
|
40
37
|
if (log) {
|
|
41
38
|
LogBoxData.symbolicateLogNow(log);
|
|
42
39
|
}
|
|
43
40
|
}, [log]);
|
|
44
41
|
|
|
45
|
-
|
|
42
|
+
useEffect(() => {
|
|
46
43
|
// Optimistically symbolicate the last and next logs.
|
|
47
44
|
if (logs.length > 1) {
|
|
48
45
|
const selected = selectedIndex;
|
|
@@ -54,7 +51,7 @@ function LogBoxInspector(props: Props): React.Node {
|
|
|
54
51
|
}
|
|
55
52
|
}, [logs, selectedIndex]);
|
|
56
53
|
|
|
57
|
-
|
|
54
|
+
useEffect(() => {
|
|
58
55
|
Keyboard.dismiss();
|
|
59
56
|
}, []);
|
|
60
57
|
|
|
@@ -84,68 +81,9 @@ function LogBoxInspector(props: Props): React.Node {
|
|
|
84
81
|
);
|
|
85
82
|
}
|
|
86
83
|
|
|
87
|
-
const headerTitleMap = {
|
|
88
|
-
warn: 'Console Warning',
|
|
89
|
-
error: 'Console Error',
|
|
90
|
-
fatal: 'Uncaught Error',
|
|
91
|
-
syntax: 'Syntax Error',
|
|
92
|
-
component: 'Render Error',
|
|
93
|
-
};
|
|
94
|
-
|
|
95
|
-
function LogBoxInspectorBody(props: {log: LogBoxLog, onRetry: () => void}) {
|
|
96
|
-
const [collapsed, setCollapsed] = React.useState(true);
|
|
97
|
-
|
|
98
|
-
React.useEffect(() => {
|
|
99
|
-
setCollapsed(true);
|
|
100
|
-
}, [props.log]);
|
|
101
|
-
|
|
102
|
-
const headerTitle =
|
|
103
|
-
props.log.type ??
|
|
104
|
-
headerTitleMap[props.log.isComponentError ? 'component' : props.log.level];
|
|
105
|
-
|
|
106
|
-
if (collapsed) {
|
|
107
|
-
return (
|
|
108
|
-
<>
|
|
109
|
-
<LogBoxInspectorMessageHeader
|
|
110
|
-
collapsed={collapsed}
|
|
111
|
-
onPress={() => setCollapsed(!collapsed)}
|
|
112
|
-
message={props.log.message}
|
|
113
|
-
level={props.log.level}
|
|
114
|
-
title={headerTitle}
|
|
115
|
-
/>
|
|
116
|
-
<ScrollView style={styles.scrollBody}>
|
|
117
|
-
<LogBoxInspectorCodeFrame codeFrame={props.log.codeFrame} />
|
|
118
|
-
<LogBoxInspectorReactFrames log={props.log} />
|
|
119
|
-
<LogBoxInspectorStackFrames log={props.log} onRetry={props.onRetry} />
|
|
120
|
-
</ScrollView>
|
|
121
|
-
</>
|
|
122
|
-
);
|
|
123
|
-
}
|
|
124
|
-
return (
|
|
125
|
-
<ScrollView style={styles.scrollBody}>
|
|
126
|
-
<LogBoxInspectorMessageHeader
|
|
127
|
-
collapsed={collapsed}
|
|
128
|
-
onPress={() => setCollapsed(!collapsed)}
|
|
129
|
-
message={props.log.message}
|
|
130
|
-
level={props.log.level}
|
|
131
|
-
title={headerTitle}
|
|
132
|
-
/>
|
|
133
|
-
<LogBoxInspectorCodeFrame codeFrame={props.log.codeFrame} />
|
|
134
|
-
<LogBoxInspectorReactFrames log={props.log} />
|
|
135
|
-
<LogBoxInspectorStackFrames log={props.log} onRetry={props.onRetry} />
|
|
136
|
-
</ScrollView>
|
|
137
|
-
);
|
|
138
|
-
}
|
|
139
|
-
|
|
140
84
|
const styles = StyleSheet.create({
|
|
141
85
|
root: {
|
|
142
86
|
flex: 1,
|
|
143
87
|
backgroundColor: LogBoxStyle.getTextColor(),
|
|
144
88
|
},
|
|
145
|
-
scrollBody: {
|
|
146
|
-
backgroundColor: LogBoxStyle.getBackgroundColor(0.9),
|
|
147
|
-
flex: 1,
|
|
148
|
-
},
|
|
149
89
|
});
|
|
150
|
-
|
|
151
|
-
export default LogBoxInspector;
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*
|
|
7
|
+
* @flow strict-local
|
|
8
|
+
* @format
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import ScrollView from '../../Components/ScrollView/ScrollView';
|
|
12
|
+
import StyleSheet from '../../StyleSheet/StyleSheet';
|
|
13
|
+
import LogBoxLog from '../Data/LogBoxLog';
|
|
14
|
+
import LogBoxInspectorCodeFrame from './LogBoxInspectorCodeFrame';
|
|
15
|
+
import LogBoxInspectorMessageHeader from './LogBoxInspectorMessageHeader';
|
|
16
|
+
import LogBoxInspectorReactFrames from './LogBoxInspectorReactFrames';
|
|
17
|
+
import LogBoxInspectorStackFrames from './LogBoxInspectorStackFrames';
|
|
18
|
+
import * as LogBoxStyle from './LogBoxStyle';
|
|
19
|
+
import * as React from 'react';
|
|
20
|
+
import {useEffect, useState} from 'react';
|
|
21
|
+
|
|
22
|
+
const headerTitleMap = {
|
|
23
|
+
warn: 'Console Warning',
|
|
24
|
+
error: 'Console Error',
|
|
25
|
+
fatal: 'Uncaught Error',
|
|
26
|
+
syntax: 'Syntax Error',
|
|
27
|
+
component: 'Render Error',
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
export default function LogBoxInspectorBody(props: {
|
|
31
|
+
log: LogBoxLog,
|
|
32
|
+
onRetry: () => void,
|
|
33
|
+
}): React.Node {
|
|
34
|
+
const [collapsed, setCollapsed] = useState(true);
|
|
35
|
+
|
|
36
|
+
useEffect(() => {
|
|
37
|
+
setCollapsed(true);
|
|
38
|
+
}, [props.log]);
|
|
39
|
+
|
|
40
|
+
const headerTitle =
|
|
41
|
+
props.log.type ??
|
|
42
|
+
headerTitleMap[props.log.isComponentError ? 'component' : props.log.level];
|
|
43
|
+
|
|
44
|
+
if (collapsed) {
|
|
45
|
+
return (
|
|
46
|
+
<>
|
|
47
|
+
<LogBoxInspectorMessageHeader
|
|
48
|
+
collapsed={collapsed}
|
|
49
|
+
onPress={() => setCollapsed(!collapsed)}
|
|
50
|
+
message={props.log.message}
|
|
51
|
+
level={props.log.level}
|
|
52
|
+
title={headerTitle}
|
|
53
|
+
/>
|
|
54
|
+
<ScrollView style={styles.scrollBody}>
|
|
55
|
+
<LogBoxInspectorCodeFrame codeFrame={props.log.codeFrame} />
|
|
56
|
+
<LogBoxInspectorReactFrames log={props.log} />
|
|
57
|
+
<LogBoxInspectorStackFrames log={props.log} onRetry={props.onRetry} />
|
|
58
|
+
</ScrollView>
|
|
59
|
+
</>
|
|
60
|
+
);
|
|
61
|
+
}
|
|
62
|
+
return (
|
|
63
|
+
<ScrollView style={styles.scrollBody}>
|
|
64
|
+
<LogBoxInspectorMessageHeader
|
|
65
|
+
collapsed={collapsed}
|
|
66
|
+
onPress={() => setCollapsed(!collapsed)}
|
|
67
|
+
message={props.log.message}
|
|
68
|
+
level={props.log.level}
|
|
69
|
+
title={headerTitle}
|
|
70
|
+
/>
|
|
71
|
+
<LogBoxInspectorCodeFrame codeFrame={props.log.codeFrame} />
|
|
72
|
+
<LogBoxInspectorReactFrames log={props.log} />
|
|
73
|
+
<LogBoxInspectorStackFrames log={props.log} onRetry={props.onRetry} />
|
|
74
|
+
</ScrollView>
|
|
75
|
+
);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
const styles = StyleSheet.create({
|
|
79
|
+
root: {
|
|
80
|
+
flex: 1,
|
|
81
|
+
backgroundColor: LogBoxStyle.getTextColor(),
|
|
82
|
+
},
|
|
83
|
+
scrollBody: {
|
|
84
|
+
backgroundColor: LogBoxStyle.getBackgroundColor(0.9),
|
|
85
|
+
flex: 1,
|
|
86
|
+
},
|
|
87
|
+
});
|
|
@@ -10,21 +10,20 @@
|
|
|
10
10
|
|
|
11
11
|
import type {LogLevel} from '../Data/LogBoxLog';
|
|
12
12
|
|
|
13
|
-
import SafeAreaView from '../../Components/SafeAreaView/SafeAreaView';
|
|
14
13
|
import View from '../../Components/View/View';
|
|
15
14
|
import StyleSheet from '../../StyleSheet/StyleSheet';
|
|
16
15
|
import Text from '../../Text/Text';
|
|
17
|
-
import
|
|
16
|
+
import LogBoxInspectorFooterButton from './LogBoxInspectorFooterButton';
|
|
18
17
|
import * as LogBoxStyle from './LogBoxStyle';
|
|
19
18
|
import * as React from 'react';
|
|
20
19
|
|
|
21
|
-
type Props = $ReadOnly<{
|
|
20
|
+
type Props = $ReadOnly<{
|
|
22
21
|
onDismiss: () => void,
|
|
23
22
|
onMinimize: () => void,
|
|
24
23
|
level?: ?LogLevel,
|
|
25
|
-
|
|
24
|
+
}>;
|
|
26
25
|
|
|
27
|
-
function LogBoxInspectorFooter(props: Props): React.Node {
|
|
26
|
+
export default function LogBoxInspectorFooter(props: Props): React.Node {
|
|
28
27
|
if (props.level === 'syntax') {
|
|
29
28
|
return (
|
|
30
29
|
<View style={styles.root}>
|
|
@@ -39,34 +38,12 @@ function LogBoxInspectorFooter(props: Props): React.Node {
|
|
|
39
38
|
|
|
40
39
|
return (
|
|
41
40
|
<View style={styles.root}>
|
|
42
|
-
<
|
|
43
|
-
<
|
|
41
|
+
<LogBoxInspectorFooterButton text="Dismiss" onPress={props.onDismiss} />
|
|
42
|
+
<LogBoxInspectorFooterButton text="Minimize" onPress={props.onMinimize} />
|
|
44
43
|
</View>
|
|
45
44
|
);
|
|
46
45
|
}
|
|
47
46
|
|
|
48
|
-
type ButtonProps = $ReadOnly<{|
|
|
49
|
-
onPress: () => void,
|
|
50
|
-
text: string,
|
|
51
|
-
|}>;
|
|
52
|
-
|
|
53
|
-
function FooterButton(props: ButtonProps): React.Node {
|
|
54
|
-
return (
|
|
55
|
-
<SafeAreaView style={styles.button}>
|
|
56
|
-
<LogBoxButton
|
|
57
|
-
backgroundColor={{
|
|
58
|
-
default: 'transparent',
|
|
59
|
-
pressed: LogBoxStyle.getBackgroundDarkColor(),
|
|
60
|
-
}}
|
|
61
|
-
onPress={props.onPress}>
|
|
62
|
-
<View style={styles.buttonContent}>
|
|
63
|
-
<Text style={styles.buttonLabel}>{props.text}</Text>
|
|
64
|
-
</View>
|
|
65
|
-
</LogBoxButton>
|
|
66
|
-
</SafeAreaView>
|
|
67
|
-
);
|
|
68
|
-
}
|
|
69
|
-
|
|
70
47
|
const styles = StyleSheet.create({
|
|
71
48
|
root: {
|
|
72
49
|
backgroundColor: LogBoxStyle.getBackgroundColor(1),
|
|
@@ -79,17 +56,6 @@ const styles = StyleSheet.create({
|
|
|
79
56
|
button: {
|
|
80
57
|
flex: 1,
|
|
81
58
|
},
|
|
82
|
-
buttonContent: {
|
|
83
|
-
alignItems: 'center',
|
|
84
|
-
height: 48,
|
|
85
|
-
justifyContent: 'center',
|
|
86
|
-
},
|
|
87
|
-
buttonLabel: {
|
|
88
|
-
color: LogBoxStyle.getTextColor(1),
|
|
89
|
-
fontSize: 14,
|
|
90
|
-
includeFontPadding: false,
|
|
91
|
-
lineHeight: 20,
|
|
92
|
-
},
|
|
93
59
|
syntaxErrorText: {
|
|
94
60
|
textAlign: 'center',
|
|
95
61
|
width: '100%',
|
|
@@ -102,5 +68,3 @@ const styles = StyleSheet.create({
|
|
|
102
68
|
color: LogBoxStyle.getTextColor(0.6),
|
|
103
69
|
},
|
|
104
70
|
});
|
|
105
|
-
|
|
106
|
-
export default LogBoxInspectorFooter;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*
|
|
7
|
+
* @flow strict-local
|
|
8
|
+
* @format
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import SafeAreaView from '../../Components/SafeAreaView/SafeAreaView';
|
|
12
|
+
import View from '../../Components/View/View';
|
|
13
|
+
import StyleSheet from '../../StyleSheet/StyleSheet';
|
|
14
|
+
import Text from '../../Text/Text';
|
|
15
|
+
import LogBoxButton from './LogBoxButton';
|
|
16
|
+
import * as LogBoxStyle from './LogBoxStyle';
|
|
17
|
+
import * as React from 'react';
|
|
18
|
+
|
|
19
|
+
type ButtonProps = $ReadOnly<{
|
|
20
|
+
onPress: () => void,
|
|
21
|
+
text: string,
|
|
22
|
+
}>;
|
|
23
|
+
|
|
24
|
+
export default function LogBoxInspectorFooterButton(
|
|
25
|
+
props: ButtonProps,
|
|
26
|
+
): React.Node {
|
|
27
|
+
return (
|
|
28
|
+
<SafeAreaView style={styles.button}>
|
|
29
|
+
<LogBoxButton
|
|
30
|
+
backgroundColor={{
|
|
31
|
+
default: 'transparent',
|
|
32
|
+
pressed: LogBoxStyle.getBackgroundDarkColor(),
|
|
33
|
+
}}
|
|
34
|
+
onPress={props.onPress}>
|
|
35
|
+
<View style={styles.buttonContent}>
|
|
36
|
+
<Text style={styles.buttonLabel}>{props.text}</Text>
|
|
37
|
+
</View>
|
|
38
|
+
</LogBoxButton>
|
|
39
|
+
</SafeAreaView>
|
|
40
|
+
);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const styles = StyleSheet.create({
|
|
44
|
+
button: {
|
|
45
|
+
flex: 1,
|
|
46
|
+
},
|
|
47
|
+
buttonContent: {
|
|
48
|
+
alignItems: 'center',
|
|
49
|
+
height: 48,
|
|
50
|
+
justifyContent: 'center',
|
|
51
|
+
},
|
|
52
|
+
buttonLabel: {
|
|
53
|
+
color: LogBoxStyle.getTextColor(1),
|
|
54
|
+
fontSize: 14,
|
|
55
|
+
includeFontPadding: false,
|
|
56
|
+
lineHeight: 20,
|
|
57
|
+
},
|
|
58
|
+
});
|
|
@@ -8,26 +8,25 @@
|
|
|
8
8
|
* @format
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
import type {ImageSource} from '../../Image/ImageSource';
|
|
12
11
|
import type {LogLevel} from '../Data/LogBoxLog';
|
|
13
12
|
|
|
14
13
|
import StatusBar from '../../Components/StatusBar/StatusBar';
|
|
15
14
|
import View from '../../Components/View/View';
|
|
16
|
-
import Image from '../../Image/Image';
|
|
17
15
|
import StyleSheet from '../../StyleSheet/StyleSheet';
|
|
18
16
|
import Text from '../../Text/Text';
|
|
19
17
|
import Platform from '../../Utilities/Platform';
|
|
20
|
-
import
|
|
18
|
+
import LogBoxInspectorHeaderButton from './LogBoxInspectorHeaderButton';
|
|
21
19
|
import * as LogBoxStyle from './LogBoxStyle';
|
|
22
20
|
import * as React from 'react';
|
|
23
|
-
|
|
21
|
+
|
|
22
|
+
type Props = $ReadOnly<{
|
|
24
23
|
onSelectIndex: (selectedIndex: number) => void,
|
|
25
24
|
selectedIndex: number,
|
|
26
25
|
total: number,
|
|
27
26
|
level: LogLevel,
|
|
28
|
-
|
|
27
|
+
}>;
|
|
29
28
|
|
|
30
|
-
function LogBoxInspectorHeader(props: Props): React.Node {
|
|
29
|
+
export default function LogBoxInspectorHeader(props: Props): React.Node {
|
|
31
30
|
if (props.level === 'syntax') {
|
|
32
31
|
return (
|
|
33
32
|
<View style={[styles.safeArea, styles[props.level]]}>
|
|
@@ -70,64 +69,6 @@ function LogBoxInspectorHeader(props: Props): React.Node {
|
|
|
70
69
|
);
|
|
71
70
|
}
|
|
72
71
|
|
|
73
|
-
const backgroundForLevel = (level: LogLevel) =>
|
|
74
|
-
({
|
|
75
|
-
warn: {
|
|
76
|
-
default: 'transparent',
|
|
77
|
-
pressed: LogBoxStyle.getWarningDarkColor(),
|
|
78
|
-
},
|
|
79
|
-
error: {
|
|
80
|
-
default: 'transparent',
|
|
81
|
-
pressed: LogBoxStyle.getErrorDarkColor(),
|
|
82
|
-
},
|
|
83
|
-
fatal: {
|
|
84
|
-
default: 'transparent',
|
|
85
|
-
pressed: LogBoxStyle.getFatalDarkColor(),
|
|
86
|
-
},
|
|
87
|
-
syntax: {
|
|
88
|
-
default: 'transparent',
|
|
89
|
-
pressed: LogBoxStyle.getFatalDarkColor(),
|
|
90
|
-
},
|
|
91
|
-
})[level];
|
|
92
|
-
|
|
93
|
-
function LogBoxInspectorHeaderButton(
|
|
94
|
-
props: $ReadOnly<{|
|
|
95
|
-
disabled: boolean,
|
|
96
|
-
image: ImageSource,
|
|
97
|
-
level: LogLevel,
|
|
98
|
-
onPress?: ?() => void,
|
|
99
|
-
|}>,
|
|
100
|
-
): React.Node {
|
|
101
|
-
return (
|
|
102
|
-
<LogBoxButton
|
|
103
|
-
backgroundColor={backgroundForLevel(props.level)}
|
|
104
|
-
onPress={props.disabled ? null : props.onPress}
|
|
105
|
-
style={headerStyles.button}>
|
|
106
|
-
{props.disabled ? null : (
|
|
107
|
-
<Image source={props.image} style={headerStyles.buttonImage} />
|
|
108
|
-
)}
|
|
109
|
-
</LogBoxButton>
|
|
110
|
-
);
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
const headerStyles = StyleSheet.create({
|
|
114
|
-
button: {
|
|
115
|
-
alignItems: 'center',
|
|
116
|
-
aspectRatio: 1,
|
|
117
|
-
justifyContent: 'center',
|
|
118
|
-
marginTop: 5,
|
|
119
|
-
marginRight: 6,
|
|
120
|
-
marginLeft: 6,
|
|
121
|
-
marginBottom: -8,
|
|
122
|
-
borderRadius: 3,
|
|
123
|
-
},
|
|
124
|
-
buttonImage: {
|
|
125
|
-
height: 14,
|
|
126
|
-
width: 8,
|
|
127
|
-
tintColor: LogBoxStyle.getTextColor(),
|
|
128
|
-
},
|
|
129
|
-
});
|
|
130
|
-
|
|
131
72
|
const styles = StyleSheet.create({
|
|
132
73
|
syntax: {
|
|
133
74
|
backgroundColor: LogBoxStyle.getFatalColor(),
|
|
@@ -164,5 +105,3 @@ const styles = StyleSheet.create({
|
|
|
164
105
|
paddingTop: Platform.OS === 'android' ? StatusBar.currentHeight : 40,
|
|
165
106
|
},
|
|
166
107
|
});
|
|
167
|
-
|
|
168
|
-
export default LogBoxInspectorHeader;
|
|
@@ -17,17 +17,18 @@ import View from '../../Components/View/View';
|
|
|
17
17
|
import StyleSheet from '../../StyleSheet/StyleSheet';
|
|
18
18
|
import Text from '../../Text/Text';
|
|
19
19
|
import Platform from '../../Utilities/Platform';
|
|
20
|
-
import
|
|
20
|
+
import LogBoxInspectorHeaderButton from './LogBoxInspectorHeaderButton';
|
|
21
21
|
import * as LogBoxStyle from './LogBoxStyle';
|
|
22
22
|
import * as React from 'react';
|
|
23
|
-
|
|
23
|
+
|
|
24
|
+
type Props = $ReadOnly<{
|
|
24
25
|
onSelectIndex: (selectedIndex: number) => void,
|
|
25
26
|
selectedIndex: number,
|
|
26
27
|
total: number,
|
|
27
28
|
level: LogLevel,
|
|
28
|
-
|
|
29
|
+
}>;
|
|
29
30
|
|
|
30
|
-
function LogBoxInspectorHeader(props: Props): React.Node {
|
|
31
|
+
export default function LogBoxInspectorHeader(props: Props): React.Node {
|
|
31
32
|
if (props.level === 'syntax') {
|
|
32
33
|
return (
|
|
33
34
|
<View style={[styles.safeArea, styles[props.level]]}>
|
|
@@ -53,7 +54,7 @@ function LogBoxInspectorHeader(props: Props): React.Node {
|
|
|
53
54
|
<LogBoxInspectorHeaderButton
|
|
54
55
|
disabled={props.total <= 1}
|
|
55
56
|
level={props.level}
|
|
56
|
-
image={'←'}
|
|
57
|
+
image={new String('←')}
|
|
57
58
|
onPress={() => props.onSelectIndex(prevIndex)}
|
|
58
59
|
/>
|
|
59
60
|
<View style={styles.title}>
|
|
@@ -62,7 +63,7 @@ function LogBoxInspectorHeader(props: Props): React.Node {
|
|
|
62
63
|
<LogBoxInspectorHeaderButton
|
|
63
64
|
disabled={props.total <= 1}
|
|
64
65
|
level={props.level}
|
|
65
|
-
image={'→'}
|
|
66
|
+
image={new String('→')}
|
|
66
67
|
onPress={() => props.onSelectIndex(nextIndex)}
|
|
67
68
|
/>
|
|
68
69
|
</View>
|
|
@@ -88,51 +89,8 @@ const backgroundForLevel = (level: LogLevel) =>
|
|
|
88
89
|
default: 'transparent',
|
|
89
90
|
pressed: LogBoxStyle.getFatalDarkColor(),
|
|
90
91
|
},
|
|
91
|
-
}[level]
|
|
92
|
+
})[level];
|
|
92
93
|
|
|
93
|
-
function LogBoxInspectorHeaderButton(
|
|
94
|
-
props: $ReadOnly<{|
|
|
95
|
-
disabled: boolean,
|
|
96
|
-
image: string,
|
|
97
|
-
level: LogLevel,
|
|
98
|
-
onPress?: ?() => void,
|
|
99
|
-
|}>,
|
|
100
|
-
): React.Node {
|
|
101
|
-
return (
|
|
102
|
-
<LogBoxButton
|
|
103
|
-
backgroundColor={backgroundForLevel(props.level)}
|
|
104
|
-
onPress={props.disabled ? null : props.onPress}
|
|
105
|
-
style={styles.title}>
|
|
106
|
-
{props.disabled ? null : (
|
|
107
|
-
<Text style={[styles.titleText, headerStyles.buttonText]}>
|
|
108
|
-
{props.image}
|
|
109
|
-
</Text>
|
|
110
|
-
)}
|
|
111
|
-
</LogBoxButton>
|
|
112
|
-
);
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
const headerStyles = StyleSheet.create({
|
|
116
|
-
button: {
|
|
117
|
-
alignItems: 'center',
|
|
118
|
-
aspectRatio: 1,
|
|
119
|
-
justifyContent: 'center',
|
|
120
|
-
marginTop: 0,
|
|
121
|
-
marginRight: 6,
|
|
122
|
-
marginLeft: 6,
|
|
123
|
-
marginBottom: 0,
|
|
124
|
-
borderRadius: 3,
|
|
125
|
-
height: 50,
|
|
126
|
-
width: 50,
|
|
127
|
-
},
|
|
128
|
-
buttonText: {
|
|
129
|
-
fontSize: 30,
|
|
130
|
-
},
|
|
131
|
-
buttonImage: {
|
|
132
|
-
fontSize: 20,
|
|
133
|
-
color: LogBoxStyle.getTextColor(),
|
|
134
|
-
},
|
|
135
|
-
});
|
|
136
94
|
|
|
137
95
|
const styles = StyleSheet.create({
|
|
138
96
|
syntax: {
|
|
@@ -173,5 +131,3 @@ const styles = StyleSheet.create({
|
|
|
173
131
|
paddingTop: Platform.OS === 'android' ? StatusBar.currentHeight : 40,
|
|
174
132
|
},
|
|
175
133
|
});
|
|
176
|
-
|
|
177
|
-
export default LogBoxInspectorHeader;
|