UNPKG

@lyra/components

Version:
136 lines (120 loc) 4.29 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 _mediaStyle = require('part:@lyra/components/previews/media-style'); var _mediaStyle2 = _interopRequireDefault(_mediaStyle); var _circle = require('part:@lyra/components/progress/circle'); var _circle2 = _interopRequireDefault(_circle); 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 MediaPreview extends _react2.default.PureComponent { render() { var _props = this.props; const title = _props.title, subtitle = _props.subtitle, description = _props.description, media = _props.media, mediaDimensions = _props.mediaDimensions, children = _props.children, isPlaceholder = _props.isPlaceholder, progress = _props.progress; if (isPlaceholder) { return _react2.default.createElement( 'div', { className: _mediaStyle2.default.root }, _react2.default.createElement('div', { className: _mediaStyle2.default.padder, style: { paddingTop: `${100 / mediaDimensions.aspect || 100}%` } }) ); } return _react2.default.createElement( 'div', { className: _mediaStyle2.default.root, title: title }, _react2.default.createElement('div', { className: _mediaStyle2.default.padder, style: { paddingTop: `${100 / mediaDimensions.aspect || 100}%` } }), _react2.default.createElement( 'div', { className: _mediaStyle2.default.mediaContainer }, typeof media === 'undefined' && _react2.default.createElement( 'div', { className: _mediaStyle2.default.mediaString }, title ), typeof media === 'function' && media({ dimensions: mediaDimensions, layout: 'media' }), typeof media === 'string' && _react2.default.createElement( 'div', { className: _mediaStyle2.default.mediaString }, media ), _react2.default.isValidElement(media) && media, typeof progress === 'number' && progress > -1 && _react2.default.createElement( 'div', { className: _mediaStyle2.default.progress }, _react2.default.createElement(_circle2.default, { percent: progress, showPercent: true, text: 'Uploaded' }) ) ), _react2.default.createElement( 'div', { className: _mediaStyle2.default.meta }, _react2.default.createElement( 'div', { className: _mediaStyle2.default.metaInner }, title && _react2.default.createElement( 'h2', { className: _mediaStyle2.default.title }, title ), subtitle && _react2.default.createElement( 'h3', { className: _mediaStyle2.default.subtitle }, subtitle ), description && _react2.default.createElement( 'p', { className: _mediaStyle2.default.description }, description ) ) ), children ); } } exports.default = MediaPreview; MediaPreview.propTypes = { title: fieldProp, subtitle: fieldProp, description: fieldProp, media: fieldProp, progress: _propTypes2.default.number, 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 }), children: _propTypes2.default.node, isPlaceholder: _propTypes2.default.bool }; MediaPreview.defaultProps = { title: undefined, subtitle: undefined, description: undefined, media: undefined, isPlaceholder: false, children: undefined, mediaDimensions: { width: 160, height: 160, aspect: 1, fit: 'crop' } };