Summary: My benchmarks have shown react-emotion to be faster than the current implementation of `styled`. For this reason, I am converting all styling to [emotion](https://emotion.sh). Benchmark results: {F136839093} The syntax is very similar between the two libraries. The main difference is that emotion only allows a single function for the whole style attribute, whereas the old implementation had functions for every style-attirbute. Before: ``` { color: props => props.color, fontSize: props => props.size, } ``` After: ``` props => ({ color: props.color, fontSize: props.size, }) ``` Reviewed By: jknoxville Differential Revision: D9479893 fbshipit-source-id: 2c39e4618f7e52ceacb67bbec8ae26114025723f
36 lines
1016 B
JavaScript
36 lines
1016 B
JavaScript
/**
|
|
* Copyright 2018-present Facebook.
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
* @format
|
|
*/
|
|
|
|
import styled from '../styled/index.js';
|
|
|
|
/**
|
|
* A Text component.
|
|
*/
|
|
const Text = styled('span')(props => ({
|
|
color: props.color ? props.color : 'inherit',
|
|
display: 'inline',
|
|
fontWeight: props.bold ? 'bold' : 'inherit',
|
|
fontStyle: props.italic ? 'italic' : 'normal',
|
|
textAlign: props.align || 'left',
|
|
fontSize: props.size == null && props.code ? 12 : props.size,
|
|
fontFamily: props.code
|
|
? 'SF Mono, Monaco, Andale Mono, monospace'
|
|
: props.family,
|
|
overflow: props.code ? 'auto' : 'visible',
|
|
userSelect:
|
|
props.selectable || (props.code && typeof props.selectable === 'undefined')
|
|
? 'text'
|
|
: 'none',
|
|
wordWrap: props.code ? 'break-word' : props.wordWrap,
|
|
whiteSpace:
|
|
props.code && typeof props.whiteSpace === 'undefined'
|
|
? 'pre'
|
|
: props.whiteSpace,
|
|
}));
|
|
|
|
export default Text;
|