@wordpress/editor
Version:
Enhanced block editor for WordPress posts.
8 lines (7 loc) • 5.47 kB
Source Map (JSON)
{
"version": 3,
"sources": ["../../../src/components/block-removal-warnings/index.js"],
"sourcesContent": ["/**\n * WordPress dependencies\n */\n\nimport { __, _n } from '@wordpress/i18n';\nimport { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';\nimport { useSelect } from '@wordpress/data';\nimport { useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport { store as editorStore } from '../../store';\n\nconst { BlockRemovalWarningModal } = unlock( blockEditorPrivateApis );\n\n// Prevent accidental removal of certain blocks, asking the user for confirmation first.\nconst TEMPLATE_BLOCKS = [\n\t'core/post-content',\n\t'core/post-template',\n\t'core/query',\n];\nconst BLOCK_REMOVAL_RULES = [\n\t{\n\t\t// Template blocks.\n\t\t// The warning is only shown when a user manipulates templates or template parts.\n\t\tpostTypes: [ 'wp_template', 'wp_template_part' ],\n\t\tcallback( removedBlocks ) {\n\t\t\t// Check specifically for post-content block first.\n\t\t\tconst removedPostContentBlocks = removedBlocks.filter(\n\t\t\t\t( { name } ) => name === 'core/post-content'\n\t\t\t);\n\t\t\tif ( removedPostContentBlocks.length ) {\n\t\t\t\treturn {\n\t\t\t\t\tdescription: __(\n\t\t\t\t\t\t'This block displays the content of posts and pages using this template.'\n\t\t\t\t\t),\n\t\t\t\t\twarning: __(\n\t\t\t\t\t\t'If you delete it, posts or pages using this template will not display any content.'\n\t\t\t\t\t),\n\t\t\t\t\tsubtext: __( 'Visitors will see blank pages.' ),\n\t\t\t\t\trequireConfirmation: true,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// Other template blocks (post-template, query) - keep existing string message.\n\t\t\tconst removedTemplateBlocks = removedBlocks.filter( ( { name } ) =>\n\t\t\t\tTEMPLATE_BLOCKS.includes( name )\n\t\t\t);\n\t\t\tif ( removedTemplateBlocks.length ) {\n\t\t\t\treturn _n(\n\t\t\t\t\t'Deleting this block will stop your post or page content from displaying on this template. It is not recommended.',\n\t\t\t\t\t'Some of the deleted blocks will stop your post or page content from displaying on this template. It is not recommended.',\n\t\t\t\t\tremovedBlocks.length\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t},\n\t{\n\t\t// Pattern overrides.\n\t\t// The warning is only shown when the user edits a pattern.\n\t\tpostTypes: [ 'wp_block' ],\n\t\tcallback( removedBlocks ) {\n\t\t\tconst removedBlocksWithOverrides = removedBlocks.filter(\n\t\t\t\t( { attributes } ) =>\n\t\t\t\t\tattributes?.metadata?.bindings &&\n\t\t\t\t\tObject.values( attributes.metadata.bindings ).some(\n\t\t\t\t\t\t( binding ) =>\n\t\t\t\t\t\t\tbinding.source === 'core/pattern-overrides'\n\t\t\t\t\t)\n\t\t\t);\n\t\t\tif ( removedBlocksWithOverrides.length ) {\n\t\t\t\treturn _n(\n\t\t\t\t\t'The deleted block allows instance overrides. Removing it may result in content not displaying where this pattern is used. Are you sure you want to proceed?',\n\t\t\t\t\t'Some of the deleted blocks allow instance overrides. Removing them may result in content not displaying where this pattern is used. Are you sure you want to proceed?',\n\t\t\t\t\tremovedBlocks.length\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t},\n];\n\nexport default function BlockRemovalWarnings() {\n\tconst currentPostType = useSelect(\n\t\t( select ) => select( editorStore ).getCurrentPostType(),\n\t\t[]\n\t);\n\n\tconst removalRulesForPostType = useMemo(\n\t\t() =>\n\t\t\tBLOCK_REMOVAL_RULES.filter( ( rule ) =>\n\t\t\t\trule.postTypes.includes( currentPostType )\n\t\t\t),\n\t\t[ currentPostType ]\n\t);\n\n\t// `BlockRemovalWarnings` is rendered in the editor provider, a shared component\n\t// across react native and web. However, `BlockRemovalWarningModal` is web only.\n\t// Check it exists before trying to render it.\n\tif ( ! BlockRemovalWarningModal ) {\n\t\treturn null;\n\t}\n\n\tif ( ! removalRulesForPostType ) {\n\t\treturn null;\n\t}\n\n\treturn <BlockRemovalWarningModal rules={ removalRulesForPostType } />;\n}\n"],
"mappings": ";AAIA,SAAS,IAAI,UAAU;AACvB,SAAS,eAAe,8BAA8B;AACtD,SAAS,iBAAiB;AAC1B,SAAS,eAAe;AAKxB,SAAS,cAAc;AACvB,SAAS,SAAS,mBAAmB;AA+F7B;AA7FR,IAAM,EAAE,yBAAyB,IAAI,OAAQ,sBAAuB;AAGpE,IAAM,kBAAkB;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AACD;AACA,IAAM,sBAAsB;AAAA,EAC3B;AAAA;AAAA;AAAA,IAGC,WAAW,CAAE,eAAe,kBAAmB;AAAA,IAC/C,SAAU,eAAgB;AAEzB,YAAM,2BAA2B,cAAc;AAAA,QAC9C,CAAE,EAAE,KAAK,MAAO,SAAS;AAAA,MAC1B;AACA,UAAK,yBAAyB,QAAS;AACtC,eAAO;AAAA,UACN,aAAa;AAAA,YACZ;AAAA,UACD;AAAA,UACA,SAAS;AAAA,YACR;AAAA,UACD;AAAA,UACA,SAAS,GAAI,gCAAiC;AAAA,UAC9C,qBAAqB;AAAA,QACtB;AAAA,MACD;AAGA,YAAM,wBAAwB,cAAc;AAAA,QAAQ,CAAE,EAAE,KAAK,MAC5D,gBAAgB,SAAU,IAAK;AAAA,MAChC;AACA,UAAK,sBAAsB,QAAS;AACnC,eAAO;AAAA,UACN;AAAA,UACA;AAAA,UACA,cAAc;AAAA,QACf;AAAA,MACD;AAAA,IACD;AAAA,EACD;AAAA,EACA;AAAA;AAAA;AAAA,IAGC,WAAW,CAAE,UAAW;AAAA,IACxB,SAAU,eAAgB;AACzB,YAAM,6BAA6B,cAAc;AAAA,QAChD,CAAE,EAAE,WAAW,MACd,YAAY,UAAU,YACtB,OAAO,OAAQ,WAAW,SAAS,QAAS,EAAE;AAAA,UAC7C,CAAE,YACD,QAAQ,WAAW;AAAA,QACrB;AAAA,MACF;AACA,UAAK,2BAA2B,QAAS;AACxC,eAAO;AAAA,UACN;AAAA,UACA;AAAA,UACA,cAAc;AAAA,QACf;AAAA,MACD;AAAA,IACD;AAAA,EACD;AACD;AAEe,SAAR,uBAAwC;AAC9C,QAAM,kBAAkB;AAAA,IACvB,CAAE,WAAY,OAAQ,WAAY,EAAE,mBAAmB;AAAA,IACvD,CAAC;AAAA,EACF;AAEA,QAAM,0BAA0B;AAAA,IAC/B,MACC,oBAAoB;AAAA,MAAQ,CAAE,SAC7B,KAAK,UAAU,SAAU,eAAgB;AAAA,IAC1C;AAAA,IACD,CAAE,eAAgB;AAAA,EACnB;AAKA,MAAK,CAAE,0BAA2B;AACjC,WAAO;AAAA,EACR;AAEA,MAAK,CAAE,yBAA0B;AAChC,WAAO;AAAA,EACR;AAEA,SAAO,oBAAC,4BAAyB,OAAQ,yBAA0B;AACpE;",
"names": []
}