@wordpress/block-editor
Version:
91 lines (87 loc) • 2.66 kB
JavaScript
import _extends from "@babel/runtime/helpers/esm/extends";
import { createElement, Fragment } from "@wordpress/element";
/**
* External dependencies
*/
import classnames from 'classnames';
/**
* WordPress dependencies
*/
import { useSelect } from '@wordpress/data';
import { forwardRef } from '@wordpress/element';
/**
* Internal dependencies
*/
import ListViewBlockSelectButton from './block-select-button';
import BlockDraggable from '../block-draggable';
import { store as blockEditorStore } from '../../store';
import { useListViewContext } from './context';
const ListViewBlockContents = forwardRef(({
onClick,
onToggleExpanded,
block,
isSelected,
position,
siblingBlockCount,
level,
isExpanded,
selectedClientIds,
...props
}, ref) => {
const {
clientId
} = block;
const {
blockMovingClientId,
selectedBlockInBlockEditor
} = useSelect(select => {
const {
hasBlockMovingClientId,
getSelectedBlockClientId
} = select(blockEditorStore);
return {
blockMovingClientId: hasBlockMovingClientId(),
selectedBlockInBlockEditor: getSelectedBlockClientId()
};
}, []);
const {
AdditionalBlockContent,
insertedBlock,
setInsertedBlock
} = useListViewContext();
const isBlockMoveTarget = blockMovingClientId && selectedBlockInBlockEditor === clientId;
const className = classnames('block-editor-list-view-block-contents', {
'is-dropping-before': isBlockMoveTarget
}); // Only include all selected blocks if the currently clicked on block
// is one of the selected blocks. This ensures that if a user attempts
// to drag a block that isn't part of the selection, they're still able
// to drag it and rearrange its position.
const draggableClientIds = selectedClientIds.includes(clientId) ? selectedClientIds : [clientId];
return createElement(Fragment, null, AdditionalBlockContent && createElement(AdditionalBlockContent, {
block: block,
insertedBlock: insertedBlock,
setInsertedBlock: setInsertedBlock
}), createElement(BlockDraggable, {
clientIds: draggableClientIds
}, ({
draggable,
onDragStart,
onDragEnd
}) => createElement(ListViewBlockSelectButton, _extends({
ref: ref,
className: className,
block: block,
onClick: onClick,
onToggleExpanded: onToggleExpanded,
isSelected: isSelected,
position: position,
siblingBlockCount: siblingBlockCount,
level: level,
draggable: draggable,
onDragStart: onDragStart,
onDragEnd: onDragEnd,
isExpanded: isExpanded
}, props))));
});
export default ListViewBlockContents;
//# sourceMappingURL=block-contents.js.map