diff --git a/packages/react-native/Libraries/LogBox/UI/LogBoxButton.js b/packages/react-native/Libraries/LogBox/UI/LogBoxButton.js
index 6e4da80afbf..e897e13d0b9 100644
--- a/packages/react-native/Libraries/LogBox/UI/LogBoxButton.js
+++ b/packages/react-native/Libraries/LogBox/UI/LogBoxButton.js
@@ -19,7 +19,7 @@ import * as LogBoxStyle from './LogBoxStyle';
import * as React from 'react';
import {useState} from 'react';
-type Props = Readonly<{
+component LogBoxButton(
id?: string,
backgroundColor: Readonly<{
default: string,
@@ -29,14 +29,12 @@ type Props = Readonly<{
hitSlop?: ?EdgeInsetsProp,
onPress?: ?(event: GestureResponderEvent) => void,
style?: ViewStyleProp,
-}>;
-
-function LogBoxButton(props: Props): React.Node {
+) {
const [pressed, setPressed] = useState(false);
- let backgroundColor = props.backgroundColor;
- if (!backgroundColor) {
- backgroundColor = {
+ let resolvedBackgroundColor = backgroundColor;
+ if (!resolvedBackgroundColor) {
+ resolvedBackgroundColor = {
default: LogBoxStyle.getBackgroundColor(0.95),
pressed: LogBoxStyle.getBackgroundColor(0.6),
};
@@ -44,25 +42,25 @@ function LogBoxButton(props: Props): React.Node {
const content = (
- {props.children}
+ {children}
);
- return props.onPress == null ? (
+ return onPress == null ? (
content
) : (
setPressed(true)}
onPressOut={() => setPressed(false)}>
{content}
diff --git a/packages/react-native/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.js b/packages/react-native/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.js
index 7703d4483e1..8611a6d8d26 100644
--- a/packages/react-native/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.js
+++ b/packages/react-native/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.js
@@ -23,12 +23,7 @@ import LogBoxInspectorSection from './LogBoxInspectorSection';
import * as LogBoxStyle from './LogBoxStyle';
import * as React from 'react';
-type Props = Readonly<{
- componentCodeFrame: ?CodeFrame,
- codeFrame: ?CodeFrame,
-}>;
-
-function CodeFrameDisplay({codeFrame}: {codeFrame: CodeFrame}): React.Node {
+component CodeFrameDisplay(codeFrame: CodeFrame) {
function getFileName() {
// $FlowFixMe[incompatible-use]
const matches = /[^/]*$/.exec(codeFrame.fileName);
@@ -77,8 +72,10 @@ function CodeFrameDisplay({codeFrame}: {codeFrame: CodeFrame}): React.Node {
);
}
-function LogBoxInspectorCodeFrame(props: Props): React.Node {
- const {codeFrame, componentCodeFrame} = props;
+component LogBoxInspectorCodeFrame(
+ componentCodeFrame: ?CodeFrame,
+ codeFrame: ?CodeFrame,
+) {
let sources = [];
if (codeFrame != null) {
sources.push(codeFrame);
@@ -103,7 +100,7 @@ function LogBoxInspectorCodeFrame(props: Props): React.Node {
);
}
-function AppInfo() {
+component AppInfo() {
const appInfo = LogBoxData.getAppInfo();
if (appInfo == null) {
return null;
diff --git a/packages/react-native/Libraries/LogBox/UI/LogBoxInspectorMessageHeader.js b/packages/react-native/Libraries/LogBox/UI/LogBoxInspectorMessageHeader.js
index fd50a1375b6..b54820b3be6 100644
--- a/packages/react-native/Libraries/LogBox/UI/LogBoxInspectorMessageHeader.js
+++ b/packages/react-native/Libraries/LogBox/UI/LogBoxInspectorMessageHeader.js
@@ -18,26 +18,21 @@ import LogBoxMessage from './LogBoxMessage';
import * as LogBoxStyle from './LogBoxStyle';
import * as React from 'react';
-type Props = Readonly<{
+const SHOW_MORE_MESSAGE_LENGTH = 300;
+
+component LogBoxInspectorMessageHeader(
collapsed: boolean,
message: Message,
level: LogLevel,
title: string,
onPress: () => void,
-}>;
-
-const SHOW_MORE_MESSAGE_LENGTH = 300;
-
-function LogBoxInspectorMessageHeader(props: Props): React.Node {
+) {
function renderShowMore() {
- if (
- props.message.content.length < SHOW_MORE_MESSAGE_LENGTH ||
- !props.collapsed
- ) {
+ if (message.content.length < SHOW_MORE_MESSAGE_LENGTH || !collapsed) {
return null;
}
return (
- props.onPress()}>
+ onPress()}>
... See More
);
@@ -47,15 +42,15 @@ function LogBoxInspectorMessageHeader(props: Props): React.Node {
- {props.title}
+ {title}
{renderShowMore()}
diff --git a/packages/react-native/Libraries/LogBox/UI/LogBoxInspectorReactFrames.js b/packages/react-native/Libraries/LogBox/UI/LogBoxInspectorReactFrames.js
index de1c5410ece..d583068b45a 100644
--- a/packages/react-native/Libraries/LogBox/UI/LogBoxInspectorReactFrames.js
+++ b/packages/react-native/Libraries/LogBox/UI/LogBoxInspectorReactFrames.js
@@ -21,10 +21,6 @@ import * as LogBoxStyle from './LogBoxStyle';
import * as React from 'react';
import {useState} from 'react';
-type Props = Readonly<{
- log: LogBoxLog,
-}>;
-
const BEFORE_SLASH_RE = /^(.*)[\\/]/;
// Taken from React https://github.com/facebook/react/blob/206d61f72214e8ae5b935f0bf8628491cb7f0797/packages/react-devtools-shared/src/backend/describeComponentFrame.js#L27-L41
@@ -49,29 +45,30 @@ function getPrettyFileName(path: string) {
return fileName;
}
-function LogBoxInspectorReactFrames(props: Props): React.Node {
+
+component LogBoxInspectorReactFrames(log: LogBoxLog) {
const [collapsed, setCollapsed] = useState(true);
if (
- props.log.getAvailableComponentStack() == null ||
- props.log.getAvailableComponentStack().length < 1
+ log.getAvailableComponentStack() == null ||
+ log.getAvailableComponentStack().length < 1
) {
return null;
}
function getStackList() {
if (collapsed) {
- return props.log.getAvailableComponentStack().slice(0, 3);
+ return log.getAvailableComponentStack().slice(0, 3);
} else {
- return props.log.getAvailableComponentStack();
+ return log.getAvailableComponentStack();
}
}
function getCollapseMessage() {
- if (props.log.getAvailableComponentStack().length <= 3) {
+ if (log.getAvailableComponentStack().length <= 3) {
return;
}
- const count = props.log.getAvailableComponentStack().length - 3;
+ const count = log.getAvailableComponentStack().length - 3;
if (collapsed) {
return `See ${count} more components`;
} else {
diff --git a/packages/react-native/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.js b/packages/react-native/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.js
index 96e93c500e2..5351316fc12 100644
--- a/packages/react-native/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.js
+++ b/packages/react-native/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.js
@@ -19,19 +19,17 @@ import * as LogBoxStyle from './LogBoxStyle';
import * as React from 'react';
import {useEffect, useState} from 'react';
-type Props = Readonly<{
+component LogBoxInspectorSourceMapStatus(
onPress?: ?(event: GestureResponderEvent) => void,
status: 'COMPLETE' | 'FAILED' | 'NONE' | 'PENDING',
-}>;
-
-function LogBoxInspectorSourceMapStatus(props: Props): React.Node {
+) {
const [state, setState] = useState({
animation: null,
rotate: null,
});
useEffect(() => {
- if (props.status === 'PENDING') {
+ if (status === 'PENDING') {
if (state.animation == null) {
const animated = new Animated.Value(0);
const animation = Animated.loop(
@@ -67,11 +65,11 @@ function LogBoxInspectorSourceMapStatus(props: Props): React.Node {
state.animation.stop();
}
};
- }, [props.status, state.animation]);
+ }, [status, state.animation]);
let image;
let color;
- switch (props.status) {
+ switch (status) {
case 'FAILED':
image = require('./LogBoxImages/alert-triangle.png');
color = LogBoxStyle.getErrorColor(1);
@@ -82,7 +80,7 @@ function LogBoxInspectorSourceMapStatus(props: Props): React.Node {
break;
}
- if (props.status === 'COMPLETE' || image == null) {
+ if (status === 'COMPLETE' || image == null) {
return null;
}
@@ -93,14 +91,14 @@ function LogBoxInspectorSourceMapStatus(props: Props): React.Node {
pressed: LogBoxStyle.getBackgroundColor(1),
}}
hitSlop={{bottom: 8, left: 8, right: 8, top: 8}}
- onPress={props.onPress}
+ onPress={onPress}
style={styles.root}>
void,
-}>;
-
-function LogBoxInspectorStackFrame(props: Props): React.Node {
- const {frame, onPress} = props;
+) {
const column = frame.column != null && parseInt(frame.column, 10);
const location =
getFileName(frame.file) +
diff --git a/packages/react-native/Libraries/LogBox/UI/LogBoxInspectorStackFrames.js b/packages/react-native/Libraries/LogBox/UI/LogBoxInspectorStackFrames.js
index 249658f2468..8487e6fa807 100644
--- a/packages/react-native/Libraries/LogBox/UI/LogBoxInspectorStackFrames.js
+++ b/packages/react-native/Libraries/LogBox/UI/LogBoxInspectorStackFrames.js
@@ -24,11 +24,6 @@ import * as LogBoxStyle from './LogBoxStyle';
import * as React from 'react';
import {useState} from 'react';
-type Props = Readonly<{
- log: LogBoxLog,
- onRetry: () => void,
-}>;
-
export function getCollapseMessage(
stackFrames: Stack,
collapsed: boolean,
@@ -65,21 +60,21 @@ export function getCollapseMessage(
}
}
-function LogBoxInspectorStackFrames(props: Props): React.Node {
+component LogBoxInspectorStackFrames(log: LogBoxLog, onRetry: () => void) {
const [collapsed, setCollapsed] = useState(() => {
// Only collapse frames initially if some frames are not collapsed.
- return props.log.getAvailableStack().some(({collapse}) => !collapse);
+ return log.getAvailableStack().some(({collapse}) => !collapse);
});
function getStackList() {
if (collapsed === true) {
- return props.log.getAvailableStack().filter(({collapse}) => !collapse);
+ return log.getAvailableStack().filter(({collapse}) => !collapse);
} else {
- return props.log.getAvailableStack();
+ return log.getAvailableStack();
}
}
- if (props.log.getAvailableStack().length === 0) {
+ if (log.getAvailableStack().length === 0) {
return null;
}
@@ -88,13 +83,11 @@ function LogBoxInspectorStackFrames(props: Props): React.Node {
heading="Call Stack"
action={
}>
- {props.log.symbolicated.status !== 'COMPLETE' && (
+ {log.symbolicated.status !== 'COMPLETE' && (
This call stack is not symbolicated. Some features are unavailable
@@ -102,32 +95,29 @@ function LogBoxInspectorStackFrames(props: Props): React.Node {
)}
-
+
setCollapsed(!collapsed)}
- message={getCollapseMessage(props.log.getAvailableStack(), collapsed)}
+ message={getCollapseMessage(log.getAvailableStack(), collapsed)}
/>
);
}
-function StackFrameList(props: {
+component StackFrameList(
list: Stack | Array,
status: string | 'COMPLETE' | 'FAILED' | 'NONE' | 'PENDING',
-}) {
+) {
return (
<>
- {props.list.map((frame, index) => {
+ {list.map((frame, index) => {
const {file, lineNumber} = frame;
return (
openFileInEditor(file, lineNumber)
: null
}
@@ -138,9 +128,7 @@ function StackFrameList(props: {
);
}
-function StackFrameFooter(
- props: Readonly<{message: string, onPress: () => void}>,
-) {
+component StackFrameFooter(message: string, onPress: () => void) {
return (
- {props.message}
+ {message}
);
diff --git a/packages/react-native/Libraries/LogBox/UI/LogBoxMessage.js b/packages/react-native/Libraries/LogBox/UI/LogBoxMessage.js
index b02fb10de98..73fd359cc08 100644
--- a/packages/react-native/Libraries/LogBox/UI/LogBoxMessage.js
+++ b/packages/react-native/Libraries/LogBox/UI/LogBoxMessage.js
@@ -16,14 +16,6 @@ import StyleSheet from '../../StyleSheet/StyleSheet';
import Text from '../../Text/Text';
import * as React from 'react';
-type Props = {
- message: Message,
- style: TextStyleProp,
- plaintext?: ?boolean,
- maxLength?: ?number,
- ...
-};
-
type Range = {
lowerBound: number,
upperBound: number,
@@ -46,15 +38,12 @@ function getLinkRanges(string: string): ReadonlyArray {
return matches;
}
-function TappableLinks(props: {
- content: string,
- style: void | TextStyleProp,
-}): React.Node {
- const matches = getLinkRanges(props.content);
+component TappableLinks(content: string, style: void | TextStyleProp) {
+ const matches = getLinkRanges(content);
if (matches.length === 0) {
// No URLs detected. Just return the content.
- return {props.content};
+ return {content};
}
// URLs were detected. Construct array of Text nodes.
@@ -65,14 +54,11 @@ function TappableLinks(props: {
for (const linkRange of matches) {
if (startIndex < linkRange.lowerBound) {
- const text = props.content.substring(startIndex, linkRange.lowerBound);
+ const text = content.substring(startIndex, linkRange.lowerBound);
fragments.push({text});
}
- const link = props.content.substring(
- linkRange.lowerBound,
- linkRange.upperBound,
- );
+ const link = content.substring(linkRange.lowerBound, linkRange.upperBound);
fragments.push(
{
@@ -88,46 +74,51 @@ function TappableLinks(props: {
startIndex = linkRange.upperBound;
}
- if (startIndex < props.content.length) {
- const text = props.content.substring(startIndex);
+ if (startIndex < content.length) {
+ const text = content.substring(startIndex);
fragments.push(
-
+
{text}
,
);
}
- return {fragments};
+ return {fragments};
}
const cleanContent = (content: string) =>
content.replace(/^(TransformError |Error: )/g, '');
-function LogBoxMessage(props: Props): React.Node {
- const {content, substitutions}: Message = props.message;
+component LogBoxMessage(
+ message: Message,
+ style: TextStyleProp,
+ plaintext?: ?boolean,
+ maxLength?: ?number,
+) {
+ const {content, substitutions}: Message = message;
- if (props.plaintext === true) {
+ if (plaintext === true) {
return {cleanContent(content)};
}
- const maxLength = props.maxLength != null ? props.maxLength : Infinity;
- const substitutionStyle: TextStyleProp = props.style;
+ const resolvedMaxLength = maxLength != null ? maxLength : Infinity;
+ const substitutionStyle: TextStyleProp = style;
const elements = [];
let length = 0;
const createUnderLength = (
key: string,
- message: string,
- style: void | TextStyleProp,
+ messageText: string,
+ textStyle: void | TextStyleProp,
) => {
- let cleanMessage = cleanContent(message);
+ let cleanMessage = cleanContent(messageText);
- if (props.maxLength != null) {
- cleanMessage = cleanMessage.slice(0, props.maxLength - length);
+ if (maxLength != null) {
+ cleanMessage = cleanMessage.slice(0, maxLength - length);
}
- if (length < maxLength) {
+ if (length < resolvedMaxLength) {
elements.push(
- ,
+ ,
);
}