UNPKG

@wordpress/block-editor

Version:
110 lines (89 loc) 3.38 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 _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