UNPKG

react-native

Version:

A framework for building native apps using React

111 lines (102 loc) 2.69 kB
/** * 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. * * @format * @flow strict-local */ 'use strict'; const React = require('react'); const StyleSheet = require('../StyleSheet/StyleSheet'); const Text = require('../Text/Text'); const View = require('../Components/View/View'); const resolveBoxStyle = require('./resolveBoxStyle'); const blank = { top: 0, left: 0, right: 0, bottom: 0, }; class BoxInspector extends React.Component<$FlowFixMeProps> { render(): React.Node { const frame = this.props.frame; const style = this.props.style; const margin = (style && resolveBoxStyle('margin', style)) || blank; const padding = (style && resolveBoxStyle('padding', style)) || blank; return ( <BoxContainer title="margin" titleStyle={styles.marginLabel} box={margin}> <BoxContainer title="padding" box={padding}> <View> <Text style={styles.innerText}> ({(frame.left || 0).toFixed(1)}, {(frame.top || 0).toFixed(1)}) </Text> <Text style={styles.innerText}> {(frame.width || 0).toFixed(1)} &times;{' '} {(frame.height || 0).toFixed(1)} </Text> </View> </BoxContainer> </BoxContainer> ); } } class BoxContainer extends React.Component<$FlowFixMeProps> { render() { const box = this.props.box; return ( <View style={styles.box}> <View style={styles.row}> {} <Text style={[this.props.titleStyle, styles.label]}> {this.props.title} </Text> <Text style={styles.boxText}>{box.top}</Text> </View> <View style={styles.row}> <Text style={styles.boxText}>{box.left}</Text> {this.props.children} <Text style={styles.boxText}>{box.right}</Text> </View> <Text style={styles.boxText}>{box.bottom}</Text> </View> ); } } const styles = StyleSheet.create({ row: { flexDirection: 'row', alignItems: 'center', justifyContent: 'space-around', }, marginLabel: { width: 60, }, label: { fontSize: 10, color: 'rgb(255,100,0)', marginLeft: 5, flex: 1, textAlign: 'left', top: -3, }, innerText: { color: 'yellow', fontSize: 12, textAlign: 'center', width: 70, }, box: { borderWidth: 1, borderColor: 'grey', }, boxText: { color: 'white', fontSize: 12, marginHorizontal: 3, marginVertical: 2, textAlign: 'center', }, }); module.exports = BoxInspector;