UNPKG

@lyra/components

Version:
145 lines (128 loc) 4.42 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 _defaultStyle = require('part:@lyra/components/previews/default-style'); var _defaultStyle2 = _interopRequireDefault(_defaultStyle); var _Styleable = require('../utilities/Styleable'); var _Styleable2 = _interopRequireDefault(_Styleable); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /* eslint-disable complexity */ const fieldProp = _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.node, _propTypes2.default.func]); class DefaultPreview extends _react2.default.PureComponent { render() { var _props = this.props; const title = _props.title, subtitle = _props.subtitle, media = _props.media, children = _props.children, status = _props.status, isPlaceholder = _props.isPlaceholder, progress = _props.progress, mediaDimensions = _props.mediaDimensions, styles = _props.styles; if (isPlaceholder) { return _react2.default.createElement( 'div', { className: styles.placeholder }, _react2.default.createElement('div', { className: styles.media }), _react2.default.createElement( 'div', { className: styles.heading }, _react2.default.createElement( 'h2', { className: styles.title }, 'Loading\u2026' ), _react2.default.createElement( 'h3', { className: styles.subtitle }, 'Loading\u2026' ) ) ); } return _react2.default.createElement( 'div', { className: ` ${styles.root} ${subtitle ? styles.hasSubtitle : ''} ${media ? styles.hasMedia : ''} ` }, _react2.default.createElement( 'div', { className: styles.media }, typeof media === 'function' && media({ dimensions: mediaDimensions, layout: 'default' }), typeof media === 'string' && _react2.default.createElement( 'div', { className: styles.mediaString }, media ), _react2.default.isValidElement(media) && media ), _react2.default.createElement( 'div', { className: styles.heading }, _react2.default.createElement( 'h2', { className: styles.title }, typeof title !== 'function' && title, typeof title === 'function' && title({ layout: 'default' }) ), subtitle && _react2.default.createElement( 'h3', { className: styles.subtitle }, typeof subtitle === 'function' && subtitle({ layout: 'default' }) || subtitle ) ), status && _react2.default.createElement( 'div', { className: styles.status }, typeof status === 'function' && status({ layout: 'default' }) || status ), children && _react2.default.createElement( 'div', { className: styles.children }, children ), typeof progress === 'number' && progress > -1 && _react2.default.createElement( 'div', { className: styles.progress }, _react2.default.createElement('div', { className: styles.progressBar, style: { width: `${progress}%` } }) ) ); } } DefaultPreview.propTypes = { title: fieldProp, subtitle: fieldProp, 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 }), status: fieldProp, media: fieldProp, isPlaceholder: _propTypes2.default.bool, children: _propTypes2.default.node, styles: _propTypes2.default.object, progress: _propTypes2.default.number }; DefaultPreview.defaultProps = { title: 'Untitled', subtitle: undefined, progress: undefined, media: undefined, mediaDimensions: { width: 80, height: 80, aspect: 1, fit: 'crop' } }; exports.default = (0, _Styleable2.default)(DefaultPreview, _defaultStyle2.default);