@wordpress/block-library
Version:
Block library for the WordPress editor.
178 lines (152 loc) • 5.67 kB
JavaScript
"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