curls
Version:
💪 Responsive, expressive UI primitives for React written with Style Hooks and Emotion
126 lines (106 loc) • 2.95 kB
JavaScript
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
)
}