@wordpress/block-editor
Version:
96 lines (86 loc) • 3.01 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = ImageSizeControl;
var _element = require("@wordpress/element");
var _lodash = require("lodash");
var _components = require("@wordpress/components");
var _i18n = require("@wordpress/i18n");
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
const IMAGE_SIZE_PRESETS = [25, 50, 75, 100];
function ImageSizeControl({
imageWidth,
imageHeight,
imageSizeOptions = [],
isResizable = true,
slug,
width,
height,
onChange,
onChangeImage = _lodash.noop
}) {
var _ref, _ref2;
function updateDimensions(nextWidth, nextHeight) {
return () => {
onChange({
width: nextWidth,
height: nextHeight
});
};
}
return (0, _element.createElement)(_element.Fragment, null, !(0, _lodash.isEmpty)(imageSizeOptions) && (0, _element.createElement)(_components.SelectControl, {
label: (0, _i18n.__)('Image size'),
value: slug,
options: imageSizeOptions,
onChange: onChangeImage
}), isResizable && (0, _element.createElement)("div", {
className: "block-editor-image-size-control"
}, (0, _element.createElement)("p", {
className: "block-editor-image-size-control__row"
}, (0, _i18n.__)('Image dimensions')), (0, _element.createElement)("div", {
className: "block-editor-image-size-control__row"
}, (0, _element.createElement)(_components.TextControl, {
type: "number",
className: "block-editor-image-size-control__width",
label: (0, _i18n.__)('Width'),
value: (_ref = width !== null && width !== void 0 ? width : imageWidth) !== null && _ref !== void 0 ? _ref : '',
min: 1,
onChange: value => onChange({
width: parseInt(value, 10)
})
}), (0, _element.createElement)(_components.TextControl, {
type: "number",
className: "block-editor-image-size-control__height",
label: (0, _i18n.__)('Height'),
value: (_ref2 = height !== null && height !== void 0 ? height : imageHeight) !== null && _ref2 !== void 0 ? _ref2 : '',
min: 1,
onChange: value => onChange({
height: parseInt(value, 10)
})
})), (0, _element.createElement)("div", {
className: "block-editor-image-size-control__row"
}, (0, _element.createElement)(_components.ButtonGroup, {
"aria-label": (0, _i18n.__)('Image size presets')
}, IMAGE_SIZE_PRESETS.map(scale => {
const scaledWidth = Math.round(imageWidth * (scale / 100));
const scaledHeight = Math.round(imageHeight * (scale / 100));
const isCurrent = width === scaledWidth && height === scaledHeight;
return (0, _element.createElement)(_components.Button, {
key: scale,
isSmall: true,
isPrimary: isCurrent,
isPressed: isCurrent,
onClick: updateDimensions(scaledWidth, scaledHeight)
}, scale, "%");
})), (0, _element.createElement)(_components.Button, {
isSmall: true,
onClick: updateDimensions()
}, (0, _i18n.__)('Reset')))));
}
//# sourceMappingURL=index.js.map