UNPKG

2.43 kBJavaScriptView Raw
1import _extends from "@babel/runtime-corejs2/helpers/esm/extends";
2import _objectWithoutPropertiesLoose from "@babel/runtime-corejs2/helpers/esm/objectWithoutPropertiesLoose";
3import _inheritsLoose from "@babel/runtime-corejs2/helpers/esm/inheritsLoose";
4import classNames from 'classnames';
5import React, { cloneElement } from 'react';
6import PropTypes from 'prop-types';
7import warning from 'warning';
8import { bsClass, getClassSet, prefix, splitBsProps } from './utils/bootstrapUtils'; // TODO: This should probably take a single `aspectRatio` prop.
9
10var propTypes = {
11 /**
12 * This component requires a single child element
13 */
14 children: PropTypes.element.isRequired,
15
16 /**
17 * 16by9 aspect ratio
18 */
19 a16by9: PropTypes.bool,
20
21 /**
22 * 4by3 aspect ratio
23 */
24 a4by3: PropTypes.bool
25};
26var defaultProps = {
27 a16by9: false,
28 a4by3: false
29};
30
31var ResponsiveEmbed =
32/*#__PURE__*/
33function (_React$Component) {
34 _inheritsLoose(ResponsiveEmbed, _React$Component);
35
36 function ResponsiveEmbed() {
37 return _React$Component.apply(this, arguments) || this;
38 }
39
40 var _proto = ResponsiveEmbed.prototype;
41
42 _proto.render = function render() {
43 var _extends2;
44
45 var _this$props = this.props,
46 a16by9 = _this$props.a16by9,
47 a4by3 = _this$props.a4by3,
48 className = _this$props.className,
49 children = _this$props.children,
50 props = _objectWithoutPropertiesLoose(_this$props, ["a16by9", "a4by3", "className", "children"]);
51
52 var _splitBsProps = splitBsProps(props),
53 bsProps = _splitBsProps[0],
54 elementProps = _splitBsProps[1];
55
56 process.env.NODE_ENV !== "production" ? warning(a16by9 || a4by3, 'Either `a16by9` or `a4by3` must be set.') : void 0;
57 process.env.NODE_ENV !== "production" ? warning(!(a16by9 && a4by3), 'Only one of `a16by9` or `a4by3` can be set.') : void 0;
58
59 var classes = _extends({}, getClassSet(bsProps), (_extends2 = {}, _extends2[prefix(bsProps, '16by9')] = a16by9, _extends2[prefix(bsProps, '4by3')] = a4by3, _extends2));
60
61 return React.createElement("div", {
62 className: classNames(classes)
63 }, cloneElement(children, _extends({}, elementProps, {
64 className: classNames(className, prefix(bsProps, 'item'))
65 })));
66 };
67
68 return ResponsiveEmbed;
69}(React.Component);
70
71ResponsiveEmbed.propTypes = propTypes;
72ResponsiveEmbed.defaultProps = defaultProps;
73export default bsClass('embed-responsive', ResponsiveEmbed);
\No newline at end of file