UNPKG

@lyra/components

Version:
77 lines (63 loc) 2.28 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _propTypes = require('prop-types'); var _propTypes2 = _interopRequireDefault(_propTypes); var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _inlineStyle = require('part:@lyra/components/previews/inline-style'); var _inlineStyle2 = _interopRequireDefault(_inlineStyle); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const fieldProp = _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.node, _propTypes2.default.func]); class InlinePreview extends _react2.default.PureComponent { render() { var _props = this.props; const title = _props.title, media = _props.media, mediaDimensions = _props.mediaDimensions, children = _props.children; if (!title && !media) { return _react2.default.createElement('span', null); } return _react2.default.createElement( 'span', { className: _inlineStyle2.default.root }, media && _react2.default.createElement( 'span', { className: _inlineStyle2.default.media }, typeof media === 'function' && media({ dimensions: mediaDimensions, layout: 'default' }), typeof media !== 'function' && media, _react2.default.isValidElement(media) && media ), _react2.default.createElement( 'span', { className: _inlineStyle2.default.title }, typeof title === 'function' && title({ layout: 'inline' }) || title ), children && _react2.default.createElement( 'span', null, children ) ); } } exports.default = InlinePreview; InlinePreview.propTypes = { title: fieldProp, media: fieldProp, children: _propTypes2.default.node, mediaDimensions: _propTypes2.default.shape({ width: _propTypes2.default.number, height: _propTypes2.default.number, fit: _propTypes2.default.oneOf(['clip', 'crop', 'fill', 'fillmax', 'max', 'scale', 'min']), aspect: _propTypes2.default.number }) }; InlinePreview.defaultProps = { title: undefined, children: undefined, media: undefined, mediaDimensions: { width: 32, height: 32, fit: 'crop', aspect: 1 } };