UNPKG

@wordpress/block-library

Version:
178 lines (152 loc) 5.67 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _element = require("@wordpress/element"); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn")); var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _components = require("@wordpress/components"); var _blockEditor = require("@wordpress/block-editor"); var _i18n = require("@wordpress/i18n"); var _mediaContainerIcon = _interopRequireDefault(require("./media-container-icon")); /** * WordPress dependencies */ /** * Internal dependencies */ /** * Constants */ var ALLOWED_MEDIA_TYPES = ['image', 'video']; var MediaContainer = /*#__PURE__*/ function (_Component) { (0, _inherits2.default)(MediaContainer, _Component); function MediaContainer() { (0, _classCallCheck2.default)(this, MediaContainer); return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(MediaContainer).apply(this, arguments)); } (0, _createClass2.default)(MediaContainer, [{ key: "renderToolbarEditButton", value: function renderToolbarEditButton() { var _this$props = this.props, mediaId = _this$props.mediaId, onSelectMedia = _this$props.onSelectMedia; return (0, _element.createElement)(_blockEditor.BlockControls, null, (0, _element.createElement)(_components.Toolbar, null, (0, _element.createElement)(_blockEditor.MediaUpload, { onSelect: onSelectMedia, allowedTypes: ALLOWED_MEDIA_TYPES, value: mediaId, render: function render(_ref) { var open = _ref.open; return (0, _element.createElement)(_components.IconButton, { className: "components-toolbar__control", label: (0, _i18n.__)('Edit media'), icon: "edit", onClick: open }); } }))); } }, { key: "renderImage", value: function renderImage() { var _this$props2 = this.props, mediaAlt = _this$props2.mediaAlt, mediaUrl = _this$props2.mediaUrl, className = _this$props2.className; return (0, _element.createElement)(_element.Fragment, null, this.renderToolbarEditButton(), (0, _element.createElement)("figure", { className: className }, (0, _element.createElement)("img", { src: mediaUrl, alt: mediaAlt }))); } }, { key: "renderVideo", value: function renderVideo() { var _this$props3 = this.props, mediaUrl = _this$props3.mediaUrl, className = _this$props3.className; return (0, _element.createElement)(_element.Fragment, null, this.renderToolbarEditButton(), (0, _element.createElement)("figure", { className: className }, (0, _element.createElement)("video", { controls: true, src: mediaUrl }))); } }, { key: "renderPlaceholder", value: function renderPlaceholder() { var _this$props4 = this.props, onSelectMedia = _this$props4.onSelectMedia, className = _this$props4.className; return (0, _element.createElement)(_blockEditor.MediaPlaceholder, { icon: (0, _element.createElement)(_blockEditor.BlockIcon, { icon: _mediaContainerIcon.default }), labels: { title: (0, _i18n.__)('Media area') }, className: className, onSelect: onSelectMedia, accept: "image/*,video/*", allowedTypes: ALLOWED_MEDIA_TYPES }); } }, { key: "render", value: function render() { var _this$props5 = this.props, mediaPosition = _this$props5.mediaPosition, mediaUrl = _this$props5.mediaUrl, mediaType = _this$props5.mediaType, mediaWidth = _this$props5.mediaWidth, commitWidthChange = _this$props5.commitWidthChange, onWidthChange = _this$props5.onWidthChange; if (mediaType && mediaUrl) { var onResize = function onResize(event, direction, elt) { onWidthChange(parseInt(elt.style.width)); }; var onResizeStop = function onResizeStop(event, direction, elt) { commitWidthChange(parseInt(elt.style.width)); }; var enablePositions = { right: mediaPosition === 'left', left: mediaPosition === 'right' }; var mediaElement = null; switch (mediaType) { case 'image': mediaElement = this.renderImage(); break; case 'video': mediaElement = this.renderVideo(); break; } return (0, _element.createElement)(_components.ResizableBox, { className: "editor-media-container__resizer", size: { width: mediaWidth + '%' }, minWidth: "10%", maxWidth: "100%", enable: enablePositions, onResize: onResize, onResizeStop: onResizeStop, axis: "x" }, mediaElement); } return this.renderPlaceholder(); } }]); return MediaContainer; }(_element.Component); var _default = MediaContainer; exports.default = _default; //# sourceMappingURL=media-container.js.map