@wordpress/block-editor
Version:
8 lines (7 loc) • 5.97 kB
Source Map (JSON)
{
"version": 3,
"sources": ["../../../src/components/block-actions/index.js"],
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport {\n\thasBlockSupport,\n\tswitchToBlockType,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport usePasteStyles from '../use-paste-styles';\nimport { store as blockEditorStore } from '../../store';\n\nexport default function BlockActions( {\n\tclientIds,\n\tchildren,\n\t__experimentalUpdateSelection: updateSelection,\n} ) {\n\tconst { getDefaultBlockName, getGroupingBlockName } =\n\t\tuseSelect( blocksStore );\n\tconst selected = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tcanInsertBlockType,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tgetBlocksByClientId,\n\t\t\t\tgetDirectInsertBlock,\n\t\t\t\tcanRemoveBlocks,\n\t\t\t} = select( blockEditorStore );\n\n\t\t\tconst blocks = getBlocksByClientId( clientIds );\n\t\t\tconst rootClientId = getBlockRootClientId( clientIds[ 0 ] );\n\t\t\tconst canInsertDefaultBlock = canInsertBlockType(\n\t\t\t\tgetDefaultBlockName(),\n\t\t\t\trootClientId\n\t\t\t);\n\t\t\tconst directInsertBlock = rootClientId\n\t\t\t\t? getDirectInsertBlock( rootClientId )\n\t\t\t\t: null;\n\n\t\t\treturn {\n\t\t\t\tcanRemove: canRemoveBlocks( clientIds ),\n\t\t\t\tcanInsertBlock: blocks.every( ( block ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t( canInsertDefaultBlock || !! directInsertBlock ) &&\n\t\t\t\t\t\tcanInsertBlockType( block.name, rootClientId )\n\t\t\t\t\t);\n\t\t\t\t} ),\n\t\t\t\tcanCopyStyles: blocks.every( ( block ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t!! block &&\n\t\t\t\t\t\t( hasBlockSupport( block.name, 'color' ) ||\n\t\t\t\t\t\t\thasBlockSupport( block.name, 'typography' ) )\n\t\t\t\t\t);\n\t\t\t\t} ),\n\t\t\t\tcanDuplicate: blocks.every( ( block ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t!! block &&\n\t\t\t\t\t\thasBlockSupport( block.name, 'multiple', true ) &&\n\t\t\t\t\t\tcanInsertBlockType( block.name, rootClientId )\n\t\t\t\t\t);\n\t\t\t\t} ),\n\t\t\t};\n\t\t},\n\t\t[ clientIds, getDefaultBlockName ]\n\t);\n\tconst { getBlocksByClientId, getBlocks } = useSelect( blockEditorStore );\n\n\tconst { canRemove, canInsertBlock, canCopyStyles, canDuplicate } = selected;\n\n\tconst {\n\t\tremoveBlocks,\n\t\treplaceBlocks,\n\t\tduplicateBlocks,\n\t\tinsertAfterBlock,\n\t\tinsertBeforeBlock,\n\t\tflashBlock,\n\t} = useDispatch( blockEditorStore );\n\n\tconst pasteStyles = usePasteStyles();\n\n\treturn children( {\n\t\tcanCopyStyles,\n\t\tcanDuplicate,\n\t\tcanInsertBlock,\n\t\tcanRemove,\n\t\tonDuplicate() {\n\t\t\treturn duplicateBlocks( clientIds, updateSelection );\n\t\t},\n\t\tonRemove() {\n\t\t\treturn removeBlocks( clientIds, updateSelection );\n\t\t},\n\t\tonInsertBefore() {\n\t\t\tinsertBeforeBlock( clientIds[ 0 ] );\n\t\t},\n\t\tonInsertAfter() {\n\t\t\tinsertAfterBlock( clientIds[ clientIds.length - 1 ] );\n\t\t},\n\t\tonGroup() {\n\t\t\tif ( ! clientIds.length ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst groupingBlockName = getGroupingBlockName();\n\n\t\t\t// Activate the `transform` on `core/group` which does the conversion.\n\t\t\tconst newBlocks = switchToBlockType(\n\t\t\t\tgetBlocksByClientId( clientIds ),\n\t\t\t\tgroupingBlockName\n\t\t\t);\n\n\t\t\tif ( ! newBlocks ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treplaceBlocks( clientIds, newBlocks );\n\t\t},\n\t\tonUngroup() {\n\t\t\tif ( ! clientIds.length ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst innerBlocks = getBlocks( clientIds[ 0 ] );\n\t\t\tif ( ! innerBlocks.length ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\treplaceBlocks( clientIds, innerBlocks );\n\t\t},\n\t\tonCopy() {\n\t\t\tif ( clientIds.length === 1 ) {\n\t\t\t\tflashBlock( clientIds[ 0 ] );\n\t\t\t}\n\t\t},\n\t\tasync onPasteStyles() {\n\t\t\tawait pasteStyles( getBlocksByClientId( clientIds ) );\n\t\t},\n\t} );\n}\n"],
"mappings": "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",
"names": ["getBlocksByClientId"]
}