UNPKG

curls

Version:

💪 Responsive, expressive UI primitives for React written with Style Hooks and Emotion

126 lines (106 loc) • 2.95 kB
'use strict' exports.__esModule = true exports.TextArea = exports.useTextArea = void 0 var _react = _interopRequireDefault(require('react')) var _core = require('@emotion/core') var _core2 = require('@style-hooks/core') var _utils = require('../utils') var _Box = require('../Box') var _Text = require('../Text') var styles = _interopRequireWildcard(require('./styles')) function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj } else { var newObj = {} if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {} if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc) } else { newObj[key] = obj[key] } } } } newObj.default = obj return newObj } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : {default: obj} } function _extends() { _extends = Object.assign || function(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key] } } } return target } return _extends.apply(this, arguments) } const defaultStyles = { name: '13m8hic', styles: 'appearance:none;outline:none;margin:0;', }, autoResize = e => { if (!e.target.value) e.target.style.height = '' else { e.target.style.height = 'auto' e.target.style.height = e.target.scrollHeight + 'px' } } const useTextArea = props => (0, _core2.useStyles)( 'textArea', styles, (0, _utils.pushCss)( _extends( { __textAreaStyles: true, }, props ), defaultStyles ) ), TextArea = _react.default.forwardRef((props, ref) => { let nodeProps = (0, _Box.useBox)((0, _Text.useText)(useTextArea(props))) nodeProps.ref = ref function _ref(e) { typeof props.onChange === 'function' && props.onChange(e) autoResize(e) } if (props.autoResize) { nodeProps.onChange = _ref } return (0, _core2.createElement)('textarea', nodeProps) }) exports.TextArea = TextArea exports.useTextArea = useTextArea if (process.env.NODE_ENV !== 'production') { const propTypes = require('./propTypes').default, typePropTypes = require('../Text/propTypes').default, boxPropTypes = require('../Box/propTypes').default, flexPropTypes = require('../Flex/propTypes').default TextArea.displayName = 'TextArea' TextArea.propTypes = _extends( {}, boxPropTypes, flexPropTypes, typePropTypes, propTypes ) }