UNPKG

@wordpress/block-editor

Version:
8 lines (7 loc) 6.3 kB
{ "version": 3, "sources": ["../../../src/components/block-list/block-invalid-warning.js"], "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __, _x } from '@wordpress/i18n';\nimport { Button, Modal } from '@wordpress/components';\nimport { useState, useCallback, useMemo } from '@wordpress/element';\nimport { createBlock, rawHandler } from '@wordpress/blocks';\nimport { useDispatch, useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport Warning from '../warning';\nimport BlockCompare from '../block-compare';\nimport { store as blockEditorStore } from '../../store';\n\nconst blockToBlocks = ( block ) =>\n\trawHandler( {\n\t\tHTML: block.originalContent,\n\t} );\n\nexport default function BlockInvalidWarning( { clientId } ) {\n\tconst { block, canInsertHTMLBlock, canInsertClassicBlock } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { canInsertBlockType, getBlock, getBlockRootClientId } =\n\t\t\t\tselect( blockEditorStore );\n\n\t\t\tconst rootClientId = getBlockRootClientId( clientId );\n\n\t\t\treturn {\n\t\t\t\tblock: getBlock( clientId ),\n\t\t\t\tcanInsertHTMLBlock: canInsertBlockType(\n\t\t\t\t\t'core/html',\n\t\t\t\t\trootClientId\n\t\t\t\t),\n\t\t\t\tcanInsertClassicBlock: canInsertBlockType(\n\t\t\t\t\t'core/freeform',\n\t\t\t\t\trootClientId\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\tconst { replaceBlock } = useDispatch( blockEditorStore );\n\n\tconst [ compare, setCompare ] = useState( false );\n\tconst onCompareClose = useCallback( () => setCompare( false ), [] );\n\n\tconst convert = useMemo(\n\t\t() => ( {\n\t\t\ttoClassic() {\n\t\t\t\tconst classicBlock = createBlock( 'core/freeform', {\n\t\t\t\t\tcontent: block.originalContent,\n\t\t\t\t} );\n\t\t\t\treturn replaceBlock( block.clientId, classicBlock );\n\t\t\t},\n\t\t\ttoHTML() {\n\t\t\t\tconst htmlBlock = createBlock( 'core/html', {\n\t\t\t\t\tcontent: block.originalContent,\n\t\t\t\t} );\n\t\t\t\treturn replaceBlock( block.clientId, htmlBlock );\n\t\t\t},\n\t\t\ttoBlocks() {\n\t\t\t\tconst newBlocks = blockToBlocks( block );\n\t\t\t\treturn replaceBlock( block.clientId, newBlocks );\n\t\t\t},\n\t\t\ttoRecoveredBlock() {\n\t\t\t\tconst recoveredBlock = createBlock(\n\t\t\t\t\tblock.name,\n\t\t\t\t\tblock.attributes,\n\t\t\t\t\tblock.innerBlocks\n\t\t\t\t);\n\t\t\t\treturn replaceBlock( block.clientId, recoveredBlock );\n\t\t\t},\n\t\t} ),\n\t\t[ block, replaceBlock ]\n\t);\n\n\tconst secondaryActions = useMemo(\n\t\t() =>\n\t\t\t[\n\t\t\t\t{\n\t\t\t\t\t// translators: Button to fix block content\n\t\t\t\t\ttitle: _x( 'Resolve', 'imperative verb' ),\n\t\t\t\t\tonClick: () => setCompare( true ),\n\t\t\t\t},\n\t\t\t\tcanInsertHTMLBlock && {\n\t\t\t\t\ttitle: __( 'Convert to HTML' ),\n\t\t\t\t\tonClick: convert.toHTML,\n\t\t\t\t},\n\t\t\t\tcanInsertClassicBlock && {\n\t\t\t\t\ttitle: __( 'Convert to Classic Block' ),\n\t\t\t\t\tonClick: convert.toClassic,\n\t\t\t\t},\n\t\t\t].filter( Boolean ),\n\t\t[ canInsertHTMLBlock, canInsertClassicBlock, convert ]\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t<Warning\n\t\t\t\tactions={ [\n\t\t\t\t\t<Button\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tkey=\"recover\"\n\t\t\t\t\t\tonClick={ convert.toRecoveredBlock }\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Attempt recovery' ) }\n\t\t\t\t\t</Button>,\n\t\t\t\t] }\n\t\t\t\tsecondaryActions={ secondaryActions }\n\t\t\t>\n\t\t\t\t{ __( 'Block contains unexpected or invalid content.' ) }\n\t\t\t</Warning>\n\t\t\t{ compare && (\n\t\t\t\t<Modal\n\t\t\t\t\ttitle={\n\t\t\t\t\t\t// translators: Dialog title to fix block content\n\t\t\t\t\t\t__( 'Resolve Block' )\n\t\t\t\t\t}\n\t\t\t\t\tonRequestClose={ onCompareClose }\n\t\t\t\t\tclassName=\"block-editor-block-compare\"\n\t\t\t\t>\n\t\t\t\t\t<BlockCompare\n\t\t\t\t\t\tblock={ block }\n\t\t\t\t\t\tonKeep={ convert.toHTML }\n\t\t\t\t\t\tonConvert={ convert.toBlocks }\n\t\t\t\t\t\tconvertor={ blockToBlocks }\n\t\t\t\t\t\tconvertButtonText={ __( 'Convert to Blocks' ) }\n\t\t\t\t\t/>\n\t\t\t\t</Modal>\n\t\t\t) }\n\t\t</>\n\t);\n}\n"], "mappings": "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", "names": ["blockEditorStore", "Warning", "BlockCompare"] }