@wordpress/block-editor
Version:
110 lines (89 loc) • 3.38 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _element = require("@wordpress/element");
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _classnames = _interopRequireDefault(require("classnames"));
var _icons = require("@wordpress/icons");
var _components = require("@wordpress/components");
var _data = require("@wordpress/data");
var _i18n = require("@wordpress/i18n");
var _blockDraggable = _interopRequireDefault(require("../block-draggable"));
var _button = require("./button");
var _store = require("../../store");
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
function BlockMover({
clientIds,
hideDragHandle
}) {
const {
canMove,
rootClientId,
isFirst,
isLast,
orientation
} = (0, _data.useSelect)(select => {
const {
getBlockIndex,
getBlockListSettings,
canMoveBlocks,
getBlockOrder,
getBlockRootClientId
} = select(_store.store);
const normalizedClientIds = Array.isArray(clientIds) ? clientIds : [clientIds];
const firstClientId = normalizedClientIds[0];
const _rootClientId = getBlockRootClientId(firstClientId);
const firstIndex = getBlockIndex(firstClientId);
const lastIndex = getBlockIndex(normalizedClientIds[normalizedClientIds.length - 1]);
const blockOrder = getBlockOrder(_rootClientId);
return {
canMove: canMoveBlocks(clientIds, _rootClientId),
rootClientId: _rootClientId,
isFirst: firstIndex === 0,
isLast: lastIndex === blockOrder.length - 1,
orientation: getBlockListSettings(_rootClientId)?.orientation
};
}, [clientIds]);
if (!canMove || isFirst && isLast && !rootClientId) {
return null;
}
const dragHandleLabel = (0, _i18n.__)('Drag');
return (0, _element.createElement)(_components.ToolbarGroup, {
className: (0, _classnames.default)('block-editor-block-mover', {
'is-horizontal': orientation === 'horizontal'
})
}, !hideDragHandle && (0, _element.createElement)(_blockDraggable.default, {
clientIds: clientIds
}, draggableProps => (0, _element.createElement)(_components.Button, (0, _extends2.default)({
icon: _icons.dragHandle,
className: "block-editor-block-mover__drag-handle",
"aria-hidden": "true",
label: dragHandleLabel // Should not be able to tab to drag handle as this
// button can only be used with a pointer device.
,
tabIndex: "-1"
}, draggableProps))), (0, _element.createElement)("div", {
className: "block-editor-block-mover__move-button-container"
}, (0, _element.createElement)(_components.ToolbarItem, null, itemProps => (0, _element.createElement)(_button.BlockMoverUpButton, (0, _extends2.default)({
clientIds: clientIds
}, itemProps))), (0, _element.createElement)(_components.ToolbarItem, null, itemProps => (0, _element.createElement)(_button.BlockMoverDownButton, (0, _extends2.default)({
clientIds: clientIds
}, itemProps)))));
}
/**
* @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/block-mover/README.md
*/
var _default = BlockMover;
exports.default = _default;
//# sourceMappingURL=index.js.map