/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * * @flow strict-local * @format */ import type {ViewProps} from '../../Components/View/ViewPropTypes'; import type {LogLevel} from '../Data/LogBoxLog'; import SafeAreaView from '../../Components/SafeAreaView/SafeAreaView'; import View from '../../Components/View/View'; import StyleSheet from '../../StyleSheet/StyleSheet'; import Text from '../../Text/Text'; import Platform from '../../Utilities/Platform'; import LogBoxInspectorHeaderButton from './LogBoxInspectorHeaderButton'; import * as LogBoxStyle from './LogBoxStyle'; import * as React from 'react'; type Props = $ReadOnly<{ onSelectIndex: (selectedIndex: number) => void, selectedIndex: number, total: number, level: LogLevel, }>; const LogBoxInspectorHeaderSafeArea: React.ComponentType = Platform.OS === 'android' ? View : SafeAreaView; export default function LogBoxInspectorHeader(props: Props): React.Node { if (props.level === 'syntax') { return ( Failed to compile ); } const prevIndex = props.selectedIndex - 1 < 0 ? props.total - 1 : props.selectedIndex - 1; const nextIndex = props.selectedIndex + 1 > props.total - 1 ? 0 : props.selectedIndex + 1; const titleText = `Log ${props.selectedIndex + 1} of ${props.total}`; return ( props.onSelectIndex(prevIndex)} /> {titleText} props.onSelectIndex(nextIndex)} /> ); } const styles = StyleSheet.create({ syntax: { backgroundColor: LogBoxStyle.getFatalColor(), }, fatal: { backgroundColor: LogBoxStyle.getFatalColor(), }, warn: { backgroundColor: LogBoxStyle.getWarningColor(), }, error: { backgroundColor: LogBoxStyle.getErrorColor(), }, header: { flexDirection: 'row', height: Platform.select({ android: 48, ios: 44, }), }, title: { alignItems: 'center', flex: 1, justifyContent: 'center', }, titleText: { color: LogBoxStyle.getTextColor(), fontSize: 16, fontWeight: '600', includeFontPadding: false, lineHeight: 20, }, });