@wordpress/editor 14.0.4 → 14.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/bindings/post-meta.js +4 -0
- package/build/bindings/post-meta.js.map +1 -1
- package/build/components/page-attributes/parent.js +2 -1
- package/build/components/page-attributes/parent.js.map +1 -1
- package/build/components/post-actions/actions.js +13 -35
- package/build/components/post-actions/actions.js.map +1 -1
- package/build/components/post-actions/export-pattern-action.js +2 -2
- package/build/components/post-actions/export-pattern-action.js.map +1 -1
- package/build/components/post-publish-button/index.js +4 -11
- package/build/components/post-publish-button/index.js.map +1 -1
- package/build/components/post-saved-state/index.js +11 -1
- package/build/components/post-saved-state/index.js.map +1 -1
- package/build/components/post-status/index.js +2 -1
- package/build/components/post-status/index.js.map +1 -1
- package/build/components/save-publish-panels/index.js +1 -2
- package/build/components/save-publish-panels/index.js.map +1 -1
- package/build/store/utils/is-template-revertable.js +6 -8
- package/build/store/utils/is-template-revertable.js.map +1 -1
- package/build-module/bindings/post-meta.js +4 -0
- package/build-module/bindings/post-meta.js.map +1 -1
- package/build-module/components/page-attributes/parent.js +2 -1
- package/build-module/components/page-attributes/parent.js.map +1 -1
- package/build-module/components/post-actions/actions.js +13 -35
- package/build-module/components/post-actions/actions.js.map +1 -1
- package/build-module/components/post-actions/export-pattern-action.js +2 -2
- package/build-module/components/post-actions/export-pattern-action.js.map +1 -1
- package/build-module/components/post-publish-button/index.js +4 -11
- package/build-module/components/post-publish-button/index.js.map +1 -1
- package/build-module/components/post-saved-state/index.js +11 -1
- package/build-module/components/post-saved-state/index.js.map +1 -1
- package/build-module/components/post-status/index.js +1 -1
- package/build-module/components/post-status/index.js.map +1 -1
- package/build-module/components/save-publish-panels/index.js +1 -2
- package/build-module/components/save-publish-panels/index.js.map +1 -1
- package/build-module/store/utils/is-template-revertable.js +6 -8
- package/build-module/store/utils/is-template-revertable.js.map +1 -1
- package/build-style/style-rtl.css +1 -0
- package/build-style/style.css +1 -0
- package/package.json +6 -6
- package/src/bindings/post-meta.js +5 -0
- package/src/components/page-attributes/parent.js +6 -3
- package/src/components/post-actions/actions.js +28 -57
- package/src/components/post-actions/export-pattern-action.js +4 -2
- package/src/components/post-panel-row/style.scss +1 -0
- package/src/components/post-publish-button/index.js +4 -17
- package/src/components/post-saved-state/index.js +11 -1
- package/src/components/post-status/index.js +1 -1
- package/src/components/save-publish-panels/index.js +1 -4
- package/src/store/utils/is-template-revertable.js +8 -8
|
@@ -46,11 +46,6 @@ function isTemplateRemovable(template) {
|
|
|
46
46
|
// two props whether is custom or has a theme file.
|
|
47
47
|
return [template.source, template.templatePart?.source].includes(TEMPLATE_ORIGINS.custom) && !template.has_theme_file && !template.templatePart?.has_theme_file;
|
|
48
48
|
}
|
|
49
|
-
const canDeleteOrReset = item => {
|
|
50
|
-
const isTemplatePart = item.type === TEMPLATE_PART_POST_TYPE;
|
|
51
|
-
const isUserPattern = item.type === PATTERN_TYPES.user;
|
|
52
|
-
return isUserPattern || isTemplatePart && item.isCustom;
|
|
53
|
-
};
|
|
54
49
|
function getItemTitle(item) {
|
|
55
50
|
if (typeof item.title === 'string') {
|
|
56
51
|
return decodeEntities(item.title);
|
|
@@ -191,12 +186,9 @@ const trashPostAction = {
|
|
|
191
186
|
if (promiseResult.length === 1) {
|
|
192
187
|
successMessage = sprintf( /* translators: The item's title. */
|
|
193
188
|
__('"%s" moved to trash.'), getItemTitle(items[0]));
|
|
194
|
-
} else
|
|
189
|
+
} else {
|
|
195
190
|
successMessage = sprintf( /* translators: The number of items. */
|
|
196
191
|
_n('%s item moved to trash.', '%s items moved to trash.', items.length), items.length);
|
|
197
|
-
} else {
|
|
198
|
-
successMessage = sprintf( /* translators: The number of posts. */
|
|
199
|
-
__('%s items move to trash.'), items.length);
|
|
200
192
|
}
|
|
201
193
|
createSuccessNotice(successMessage, {
|
|
202
194
|
type: 'snackbar',
|
|
@@ -671,18 +663,11 @@ const duplicatePostAction = {
|
|
|
671
663
|
});
|
|
672
664
|
}
|
|
673
665
|
};
|
|
674
|
-
const isTemplatePartRevertable = item => {
|
|
675
|
-
if (!item) {
|
|
676
|
-
return false;
|
|
677
|
-
}
|
|
678
|
-
const hasThemeFile = item.templatePart?.has_theme_file;
|
|
679
|
-
return canDeleteOrReset(item) && hasThemeFile;
|
|
680
|
-
};
|
|
681
666
|
const resetTemplateAction = {
|
|
682
667
|
id: 'reset-template',
|
|
683
668
|
label: __('Reset'),
|
|
684
669
|
isEligible: item => {
|
|
685
|
-
return
|
|
670
|
+
return isTemplateRevertable(item);
|
|
686
671
|
},
|
|
687
672
|
icon: backup,
|
|
688
673
|
supportsBulk: true,
|
|
@@ -695,8 +680,7 @@ const resetTemplateAction = {
|
|
|
695
680
|
}) => {
|
|
696
681
|
const [isBusy, setIsBusy] = useState(false);
|
|
697
682
|
const {
|
|
698
|
-
revertTemplate
|
|
699
|
-
removeTemplates
|
|
683
|
+
revertTemplate
|
|
700
684
|
} = unlock(useDispatch(editorStore));
|
|
701
685
|
const {
|
|
702
686
|
saveEditedEntityRecord
|
|
@@ -707,24 +691,18 @@ const resetTemplateAction = {
|
|
|
707
691
|
} = useDispatch(noticesStore);
|
|
708
692
|
const onConfirm = async () => {
|
|
709
693
|
try {
|
|
710
|
-
|
|
711
|
-
await
|
|
712
|
-
|
|
713
|
-
for (const template of items) {
|
|
714
|
-
if (template.type === TEMPLATE_POST_TYPE) {
|
|
715
|
-
await revertTemplate(template, {
|
|
716
|
-
allowUndo: false
|
|
717
|
-
});
|
|
718
|
-
await saveEditedEntityRecord('postType', template.type, template.id);
|
|
719
|
-
}
|
|
720
|
-
}
|
|
721
|
-
createSuccessNotice(items.length > 1 ? sprintf( /* translators: The number of items. */
|
|
722
|
-
__('%s items reset.'), items.length) : sprintf( /* translators: The template/part's name. */
|
|
723
|
-
__('"%s" reset.'), decodeEntities(getItemTitle(items[0]))), {
|
|
724
|
-
type: 'snackbar',
|
|
725
|
-
id: 'revert-template-action'
|
|
694
|
+
for (const template of items) {
|
|
695
|
+
await revertTemplate(template, {
|
|
696
|
+
allowUndo: false
|
|
726
697
|
});
|
|
698
|
+
await saveEditedEntityRecord('postType', template.type, template.id);
|
|
727
699
|
}
|
|
700
|
+
createSuccessNotice(items.length > 1 ? sprintf( /* translators: The number of items. */
|
|
701
|
+
__('%s items reset.'), items.length) : sprintf( /* translators: The template/part's name. */
|
|
702
|
+
__('"%s" reset.'), decodeEntities(getItemTitle(items[0]))), {
|
|
703
|
+
type: 'snackbar',
|
|
704
|
+
id: 'revert-template-action'
|
|
705
|
+
});
|
|
728
706
|
} catch (error) {
|
|
729
707
|
let fallbackErrorMessage;
|
|
730
708
|
if (items[0].type === TEMPLATE_POST_TYPE) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["external","trash","backup","addQueryArgs","useDispatch","useSelect","useRegistry","decodeEntities","store","coreStore","__","_n","sprintf","_x","noticesStore","useMemo","useState","privateApis","patternsPrivateApis","Button","TextControl","__experimentalText","Text","__experimentalHStack","HStack","__experimentalVStack","VStack","TEMPLATE_ORIGINS","TEMPLATE_PART_POST_TYPE","TEMPLATE_POST_TYPE","PATTERN_POST_TYPE","editorStore","unlock","isTemplateRevertable","exportPatternAsJSONAction","CreateTemplatePartModalContents","jsx","_jsx","jsxs","_jsxs","PATTERN_TYPES","CreatePatternModalContents","useDuplicatePatternProps","isTemplateRemovable","template","source","templatePart","includes","custom","has_theme_file","canDeleteOrReset","item","isTemplatePart","type","isUserPattern","user","isCustom","getItemTitle","title","rendered","deletePostAction","id","label","isPrimary","icon","isEligible","post","supportsBulk","hideModalHeader","RenderModal","items","closeModal","onActionStart","onActionPerformed","isBusy","setIsBusy","removeTemplates","spacing","children","length","justify","variant","onClick","disabled","__experimentalIsFocusable","allowUndo","useCanUserEligibilityCheckPostType","capability","resource","action","registry","select","canUser","trashPostAction","status","createSuccessNotice","createErrorNotice","deleteEntityRecord","promiseResult","Promise","allSettled","map","throwOnError","every","successMessage","errorMessage","reason","message","errorMessages","Set","failedPromises","filter","failedPromise","add","size","join","useTrashPostAction","usePermanentlyDeletePostAction","permanentlyDeletePostAction","callback","posts","force","useRestorePostAction","editEntityRecord","saveEditedEntityRecord","restorePostAction","viewPostAction","window","open","link","postRevisionsAction","context","_items$0$_links$versi","revisionsCount","_links","count","_post$_links$predeces","_post$_links$version","lastRevisionId","href","revision","document","location","renamePostAction","Object","values","is_custom","isCustomPattern","hasThemeFile","originalTitle","setTitle","onRename","event","preventDefault","error","code","onSubmit","__nextHasNoMarginBottom","__next40pxDefaultSize","value","onChange","required","useRenamePostAction","duplicatePostAction","isCreatingPage","setIsCreatingPage","saveEntityRecord","createPage","newItem","slug","author","comment_status","content","raw","excerpt","meta","parent","password","format","featured_media","menu_order","ping_status","categories","tags","placeholder","isTemplatePartRevertable","resetTemplateAction","revertTemplate","onConfirm","fallbackErrorMessage","duplicatePatternAction","modalHeader","isThemePattern","theme","duplicatedProps","pattern","patternPost","onSuccess","onClose","confirmLabel","duplicateTemplatePartAction","onTemplatePartSuccess","blocks","defaultArea","area","defaultTitle","onCreate","onError","usePostActions","postType","postTypeObject","cachedCanUserResolvers","userCanCreatePostType","getPostType","getCachedResolvers","_postTypeObject","_resource","rest_base","trashPostActionForPostType","permanentlyDeletePostActionForPostType","renamePostActionForPostType","restorePostActionForPostType","isTemplateOrTemplatePart","isPattern","isLoaded","supportsRevisions","supports","revisions","supportsTitle","actions","viewable","globalThis","IS_GUTENBERG_PLUGIN","Boolean","i","existingCallback","_onActionPerformed","_items","ExistingRenderModal","props"],"sources":["@wordpress/editor/src/components/post-actions/actions.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { external, trash, backup } from '@wordpress/icons';\nimport { addQueryArgs } from '@wordpress/url';\nimport { useDispatch, useSelect, useRegistry } from '@wordpress/data';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { __, _n, sprintf, _x } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { useMemo, useState } from '@wordpress/element';\nimport { privateApis as patternsPrivateApis } from '@wordpress/patterns';\n\nimport {\n\tButton,\n\tTextControl,\n\t__experimentalText as Text,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport {\n\tTEMPLATE_ORIGINS,\n\tTEMPLATE_PART_POST_TYPE,\n\tTEMPLATE_POST_TYPE,\n\tPATTERN_POST_TYPE,\n} from '../../store/constants';\nimport { store as editorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\nimport isTemplateRevertable from '../../store/utils/is-template-revertable';\nimport { exportPatternAsJSONAction } from './export-pattern-action';\nimport { CreateTemplatePartModalContents } from '../create-template-part-modal';\n\n// Patterns.\nconst { PATTERN_TYPES, CreatePatternModalContents, useDuplicatePatternProps } =\n\tunlock( patternsPrivateApis );\n\n/**\n * Check if a template is removable.\n *\n * @param {Object} template The template entity to check.\n * @return {boolean} Whether the template is removable.\n */\nfunction isTemplateRemovable( template ) {\n\tif ( ! template ) {\n\t\treturn false;\n\t}\n\t// In patterns list page we map the templates parts to a different object\n\t// than the one returned from the endpoint. This is why we need to check for\n\t// two props whether is custom or has a theme file.\n\treturn (\n\t\t[ template.source, template.templatePart?.source ].includes(\n\t\t\tTEMPLATE_ORIGINS.custom\n\t\t) &&\n\t\t! template.has_theme_file &&\n\t\t! template.templatePart?.has_theme_file\n\t);\n}\nconst canDeleteOrReset = ( item ) => {\n\tconst isTemplatePart = item.type === TEMPLATE_PART_POST_TYPE;\n\tconst isUserPattern = item.type === PATTERN_TYPES.user;\n\treturn isUserPattern || ( isTemplatePart && item.isCustom );\n};\n\nfunction getItemTitle( item ) {\n\tif ( typeof item.title === 'string' ) {\n\t\treturn decodeEntities( item.title );\n\t}\n\treturn decodeEntities( item.title?.rendered || '' );\n}\n\n// This action is used for templates, patterns and template parts.\n// Every other post type uses the similar `trashPostAction` which\n// moves the post to trash.\nconst deletePostAction = {\n\tid: 'delete-post',\n\tlabel: __( 'Delete' ),\n\tisPrimary: true,\n\ticon: trash,\n\tisEligible( post ) {\n\t\tif (\n\t\t\t[ TEMPLATE_POST_TYPE, TEMPLATE_PART_POST_TYPE ].includes(\n\t\t\t\tpost.type\n\t\t\t)\n\t\t) {\n\t\t\treturn isTemplateRemovable( post );\n\t\t}\n\t\t// We can only remove user patterns.\n\t\treturn post.type === PATTERN_TYPES.user;\n\t},\n\tsupportsBulk: true,\n\thideModalHeader: true,\n\tRenderModal: ( {\n\t\titems,\n\t\tcloseModal,\n\t\tonActionStart,\n\t\tonActionPerformed,\n\t} ) => {\n\t\tconst [ isBusy, setIsBusy ] = useState( false );\n\t\tconst { removeTemplates } = unlock( useDispatch( editorStore ) );\n\t\treturn (\n\t\t\t<VStack spacing=\"5\">\n\t\t\t\t<Text>\n\t\t\t\t\t{ items.length > 1\n\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t// translators: %d: number of items to delete.\n\t\t\t\t\t\t\t\t_n(\n\t\t\t\t\t\t\t\t\t'Delete %d item?',\n\t\t\t\t\t\t\t\t\t'Delete %d items?',\n\t\t\t\t\t\t\t\t\titems.length\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\titems.length\n\t\t\t\t\t\t )\n\t\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t\t// translators: %s: The template or template part's titles\n\t\t\t\t\t\t\t\t__( 'Delete \"%s\"?' ),\n\t\t\t\t\t\t\t\tgetItemTitle( items[ 0 ] )\n\t\t\t\t\t\t ) }\n\t\t\t\t</Text>\n\t\t\t\t<HStack justify=\"right\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\tonClick={ closeModal }\n\t\t\t\t\t\tdisabled={ isBusy }\n\t\t\t\t\t\t__experimentalIsFocusable\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\tonClick={ async () => {\n\t\t\t\t\t\t\tsetIsBusy( true );\n\t\t\t\t\t\t\tif ( onActionStart ) {\n\t\t\t\t\t\t\t\tonActionStart( items );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tawait removeTemplates( items, {\n\t\t\t\t\t\t\t\tallowUndo: false,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\tonActionPerformed?.( items );\n\t\t\t\t\t\t\tsetIsBusy( false );\n\t\t\t\t\t\t\tcloseModal();\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tisBusy={ isBusy }\n\t\t\t\t\t\tdisabled={ isBusy }\n\t\t\t\t\t\t__experimentalIsFocusable\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Delete' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</HStack>\n\t\t\t</VStack>\n\t\t);\n\t},\n};\n\nfunction useCanUserEligibilityCheckPostType( capability, resource, action ) {\n\tconst registry = useRegistry();\n\treturn useMemo(\n\t\t() => ( {\n\t\t\t...action,\n\t\t\tisEligible( item ) {\n\t\t\t\treturn (\n\t\t\t\t\taction.isEligible( item ) &&\n\t\t\t\t\tregistry\n\t\t\t\t\t\t.select( coreStore )\n\t\t\t\t\t\t.canUser( capability, resource, item.id )\n\t\t\t\t);\n\t\t\t},\n\t\t} ),\n\t\t[ action, registry, capability, resource ]\n\t);\n}\n\nconst trashPostAction = {\n\tid: 'move-to-trash',\n\tlabel: __( 'Move to Trash' ),\n\tisPrimary: true,\n\ticon: trash,\n\tisEligible( item ) {\n\t\treturn ! [ 'auto-draft', 'trash' ].includes( item.status );\n\t},\n\tsupportsBulk: true,\n\thideModalHeader: true,\n\tRenderModal: ( {\n\t\titems,\n\t\tcloseModal,\n\t\tonActionStart,\n\t\tonActionPerformed,\n\t} ) => {\n\t\tconst [ isBusy, setIsBusy ] = useState( false );\n\t\tconst { createSuccessNotice, createErrorNotice } =\n\t\t\tuseDispatch( noticesStore );\n\t\tconst { deleteEntityRecord } = useDispatch( coreStore );\n\t\treturn (\n\t\t\t<VStack spacing=\"5\">\n\t\t\t\t<Text>\n\t\t\t\t\t{ items.length === 1\n\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t// translators: %s: The item's title.\n\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t'Are you sure you want to move to trash \"%s\"?'\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tgetItemTitle( items[ 0 ] )\n\t\t\t\t\t\t )\n\t\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t\t// translators: %d: The number of items (2 or more).\n\t\t\t\t\t\t\t\t_n(\n\t\t\t\t\t\t\t\t\t'Are you sure you want to move to trash %d item?',\n\t\t\t\t\t\t\t\t\t'Are you sure you want to move to trash %d items?',\n\t\t\t\t\t\t\t\t\titems.length\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\titems.length\n\t\t\t\t\t\t ) }\n\t\t\t\t</Text>\n\t\t\t\t<HStack justify=\"right\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\tonClick={ closeModal }\n\t\t\t\t\t\tdisabled={ isBusy }\n\t\t\t\t\t\t__experimentalIsFocusable\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\tonClick={ async () => {\n\t\t\t\t\t\t\tsetIsBusy( true );\n\t\t\t\t\t\t\tif ( onActionStart ) {\n\t\t\t\t\t\t\t\tonActionStart( items );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tconst promiseResult = await Promise.allSettled(\n\t\t\t\t\t\t\t\titems.map( ( item ) =>\n\t\t\t\t\t\t\t\t\tdeleteEntityRecord(\n\t\t\t\t\t\t\t\t\t\t'postType',\n\t\t\t\t\t\t\t\t\t\titem.type,\n\t\t\t\t\t\t\t\t\t\titem.id,\n\t\t\t\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\t\t\t\t{ throwOnError: true }\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t// If all the promises were fulfilled with success.\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tpromiseResult.every(\n\t\t\t\t\t\t\t\t\t( { status } ) => status === 'fulfilled'\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tlet successMessage;\n\t\t\t\t\t\t\t\tif ( promiseResult.length === 1 ) {\n\t\t\t\t\t\t\t\t\tsuccessMessage = sprintf(\n\t\t\t\t\t\t\t\t\t\t/* translators: The item's title. */\n\t\t\t\t\t\t\t\t\t\t__( '\"%s\" moved to trash.' ),\n\t\t\t\t\t\t\t\t\t\tgetItemTitle( items[ 0 ] )\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t} else if ( items[ 0 ].type === 'page' ) {\n\t\t\t\t\t\t\t\t\tsuccessMessage = sprintf(\n\t\t\t\t\t\t\t\t\t\t/* translators: The number of items. */\n\t\t\t\t\t\t\t\t\t\t_n(\n\t\t\t\t\t\t\t\t\t\t\t'%s item moved to trash.',\n\t\t\t\t\t\t\t\t\t\t\t'%s items moved to trash.',\n\t\t\t\t\t\t\t\t\t\t\titems.length\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\titems.length\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tsuccessMessage = sprintf(\n\t\t\t\t\t\t\t\t\t\t/* translators: The number of posts. */\n\t\t\t\t\t\t\t\t\t\t__( '%s items move to trash.' ),\n\t\t\t\t\t\t\t\t\t\titems.length\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcreateSuccessNotice( successMessage, {\n\t\t\t\t\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\t\t\t\t\tid: 'move-to-trash-action',\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// If there was at least one failure.\n\t\t\t\t\t\t\t\tlet errorMessage;\n\t\t\t\t\t\t\t\t// If we were trying to delete a single item.\n\t\t\t\t\t\t\t\tif ( promiseResult.length === 1 ) {\n\t\t\t\t\t\t\t\t\tif ( promiseResult[ 0 ].reason?.message ) {\n\t\t\t\t\t\t\t\t\t\terrorMessage =\n\t\t\t\t\t\t\t\t\t\t\tpromiseResult[ 0 ].reason.message;\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\terrorMessage = __(\n\t\t\t\t\t\t\t\t\t\t\t'An error occurred while moving to trash the item.'\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t// If we were trying to delete multiple items.\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tconst errorMessages = new Set();\n\t\t\t\t\t\t\t\t\tconst failedPromises = promiseResult.filter(\n\t\t\t\t\t\t\t\t\t\t( { status } ) => status === 'rejected'\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\tfor ( const failedPromise of failedPromises ) {\n\t\t\t\t\t\t\t\t\t\tif ( failedPromise.reason?.message ) {\n\t\t\t\t\t\t\t\t\t\t\terrorMessages.add(\n\t\t\t\t\t\t\t\t\t\t\t\tfailedPromise.reason.message\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif ( errorMessages.size === 0 ) {\n\t\t\t\t\t\t\t\t\t\terrorMessage = __(\n\t\t\t\t\t\t\t\t\t\t\t'An error occurred while moving to trash the items.'\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t} else if ( errorMessages.size === 1 ) {\n\t\t\t\t\t\t\t\t\t\terrorMessage = sprintf(\n\t\t\t\t\t\t\t\t\t\t\t/* translators: %s: an error message */\n\t\t\t\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t\t\t\t'An error occurred while moving to trash the item: %s'\n\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t[ ...errorMessages ][ 0 ]\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\terrorMessage = sprintf(\n\t\t\t\t\t\t\t\t\t\t\t/* translators: %s: a list of comma separated error messages */\n\t\t\t\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t\t\t\t'Some errors occurred while moving to trash the items: %s'\n\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t[ ...errorMessages ].join( ',' )\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcreateErrorNotice( errorMessage, {\n\t\t\t\t\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif ( onActionPerformed ) {\n\t\t\t\t\t\t\t\tonActionPerformed( items );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tsetIsBusy( false );\n\t\t\t\t\t\t\tcloseModal();\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tisBusy={ isBusy }\n\t\t\t\t\t\tdisabled={ isBusy }\n\t\t\t\t\t\t__experimentalIsFocusable\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Trash' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</HStack>\n\t\t\t</VStack>\n\t\t);\n\t},\n};\n\nfunction useTrashPostAction( resource ) {\n\treturn useCanUserEligibilityCheckPostType(\n\t\t'delete',\n\t\tresource,\n\t\ttrashPostAction\n\t);\n}\n\nfunction usePermanentlyDeletePostAction( resource ) {\n\tconst { createSuccessNotice, createErrorNotice } =\n\t\tuseDispatch( noticesStore );\n\tconst { deleteEntityRecord } = useDispatch( coreStore );\n\n\tconst permanentlyDeletePostAction = useMemo(\n\t\t() => ( {\n\t\t\tid: 'permanently-delete',\n\t\t\tlabel: __( 'Permanently delete' ),\n\t\t\tsupportsBulk: true,\n\t\t\tisEligible( { status } ) {\n\t\t\t\treturn status === 'trash';\n\t\t\t},\n\t\t\tasync callback( posts, onActionPerformed ) {\n\t\t\t\tconst promiseResult = await Promise.allSettled(\n\t\t\t\t\tposts.map( ( post ) => {\n\t\t\t\t\t\treturn deleteEntityRecord(\n\t\t\t\t\t\t\t'postType',\n\t\t\t\t\t\t\tpost.type,\n\t\t\t\t\t\t\tpost.id,\n\t\t\t\t\t\t\t{ force: true },\n\t\t\t\t\t\t\t{ throwOnError: true }\n\t\t\t\t\t\t);\n\t\t\t\t\t} )\n\t\t\t\t);\n\t\t\t\t// If all the promises were fulfilled with success.\n\t\t\t\tif (\n\t\t\t\t\tpromiseResult.every(\n\t\t\t\t\t\t( { status } ) => status === 'fulfilled'\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\tlet successMessage;\n\t\t\t\t\tif ( promiseResult.length === 1 ) {\n\t\t\t\t\t\tsuccessMessage = sprintf(\n\t\t\t\t\t\t\t/* translators: The posts's title. */\n\t\t\t\t\t\t\t__( '\"%s\" permanently deleted.' ),\n\t\t\t\t\t\t\tgetItemTitle( posts[ 0 ] )\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsuccessMessage = __(\n\t\t\t\t\t\t\t'The posts were permanently deleted.'\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tcreateSuccessNotice( successMessage, {\n\t\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\t\tid: 'permanently-delete-post-action',\n\t\t\t\t\t} );\n\t\t\t\t\tif ( onActionPerformed ) {\n\t\t\t\t\t\tonActionPerformed( posts );\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// If there was at lease one failure.\n\t\t\t\t\tlet errorMessage;\n\t\t\t\t\t// If we were trying to permanently delete a single post.\n\t\t\t\t\tif ( promiseResult.length === 1 ) {\n\t\t\t\t\t\tif ( promiseResult[ 0 ].reason?.message ) {\n\t\t\t\t\t\t\terrorMessage = promiseResult[ 0 ].reason.message;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\terrorMessage = __(\n\t\t\t\t\t\t\t\t'An error occurred while permanently deleting the post.'\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// If we were trying to permanently delete multiple posts\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst errorMessages = new Set();\n\t\t\t\t\t\tconst failedPromises = promiseResult.filter(\n\t\t\t\t\t\t\t( { status } ) => status === 'rejected'\n\t\t\t\t\t\t);\n\t\t\t\t\t\tfor ( const failedPromise of failedPromises ) {\n\t\t\t\t\t\t\tif ( failedPromise.reason?.message ) {\n\t\t\t\t\t\t\t\terrorMessages.add(\n\t\t\t\t\t\t\t\t\tfailedPromise.reason.message\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( errorMessages.size === 0 ) {\n\t\t\t\t\t\t\terrorMessage = __(\n\t\t\t\t\t\t\t\t'An error occurred while permanently deleting the posts.'\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else if ( errorMessages.size === 1 ) {\n\t\t\t\t\t\t\terrorMessage = sprintf(\n\t\t\t\t\t\t\t\t/* translators: %s: an error message */\n\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t'An error occurred while permanently deleting the posts: %s'\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t[ ...errorMessages ][ 0 ]\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\terrorMessage = sprintf(\n\t\t\t\t\t\t\t\t/* translators: %s: a list of comma separated error messages */\n\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t'Some errors occurred while permanently deleting the posts: %s'\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t[ ...errorMessages ].join( ',' )\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcreateErrorNotice( errorMessage, {\n\t\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t},\n\t\t} ),\n\t\t[ createSuccessNotice, createErrorNotice, deleteEntityRecord ]\n\t);\n\treturn useCanUserEligibilityCheckPostType(\n\t\t'delete',\n\t\tresource,\n\t\tpermanentlyDeletePostAction\n\t);\n}\n\nfunction useRestorePostAction( resource ) {\n\tconst { createSuccessNotice, createErrorNotice } =\n\t\tuseDispatch( noticesStore );\n\tconst { editEntityRecord, saveEditedEntityRecord } =\n\t\tuseDispatch( coreStore );\n\n\tconst restorePostAction = useMemo(\n\t\t() => ( {\n\t\t\tid: 'restore',\n\t\t\tlabel: __( 'Restore' ),\n\t\t\tisPrimary: true,\n\t\t\ticon: backup,\n\t\t\tsupportsBulk: true,\n\t\t\tisEligible( { status } ) {\n\t\t\t\treturn status === 'trash';\n\t\t\t},\n\t\t\tasync callback( posts, onActionPerformed ) {\n\t\t\t\tawait Promise.allSettled(\n\t\t\t\t\tposts.map( ( post ) => {\n\t\t\t\t\t\treturn editEntityRecord(\n\t\t\t\t\t\t\t'postType',\n\t\t\t\t\t\t\tpost.type,\n\t\t\t\t\t\t\tpost.id,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tstatus: 'draft',\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t\t} )\n\t\t\t\t);\n\t\t\t\tconst promiseResult = await Promise.allSettled(\n\t\t\t\t\tposts.map( ( post ) => {\n\t\t\t\t\t\treturn saveEditedEntityRecord(\n\t\t\t\t\t\t\t'postType',\n\t\t\t\t\t\t\tpost.type,\n\t\t\t\t\t\t\tpost.id,\n\t\t\t\t\t\t\t{ throwOnError: true }\n\t\t\t\t\t\t);\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\tif (\n\t\t\t\t\tpromiseResult.every(\n\t\t\t\t\t\t( { status } ) => status === 'fulfilled'\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\tlet successMessage;\n\t\t\t\t\tif ( posts.length === 1 ) {\n\t\t\t\t\t\tsuccessMessage = sprintf(\n\t\t\t\t\t\t\t/* translators: The number of posts. */\n\t\t\t\t\t\t\t__( '\"%s\" has been restored.' ),\n\t\t\t\t\t\t\tgetItemTitle( posts[ 0 ] )\n\t\t\t\t\t\t);\n\t\t\t\t\t} else if ( posts[ 0 ].type === 'page' ) {\n\t\t\t\t\t\tsuccessMessage = sprintf(\n\t\t\t\t\t\t\t/* translators: The number of posts. */\n\t\t\t\t\t\t\t__( '%d pages have been restored.' ),\n\t\t\t\t\t\t\tposts.length\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsuccessMessage = sprintf(\n\t\t\t\t\t\t\t/* translators: The number of posts. */\n\t\t\t\t\t\t\t__( '%d posts have been restored.' ),\n\t\t\t\t\t\t\tposts.length\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tcreateSuccessNotice( successMessage, {\n\t\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\t\tid: 'restore-post-action',\n\t\t\t\t\t} );\n\t\t\t\t\tif ( onActionPerformed ) {\n\t\t\t\t\t\tonActionPerformed( posts );\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// If there was at lease one failure.\n\t\t\t\t\tlet errorMessage;\n\t\t\t\t\t// If we were trying to move a single post to the trash.\n\t\t\t\t\tif ( promiseResult.length === 1 ) {\n\t\t\t\t\t\tif ( promiseResult[ 0 ].reason?.message ) {\n\t\t\t\t\t\t\terrorMessage = promiseResult[ 0 ].reason.message;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\terrorMessage = __(\n\t\t\t\t\t\t\t\t'An error occurred while restoring the post.'\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// If we were trying to move multiple posts to the trash\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst errorMessages = new Set();\n\t\t\t\t\t\tconst failedPromises = promiseResult.filter(\n\t\t\t\t\t\t\t( { status } ) => status === 'rejected'\n\t\t\t\t\t\t);\n\t\t\t\t\t\tfor ( const failedPromise of failedPromises ) {\n\t\t\t\t\t\t\tif ( failedPromise.reason?.message ) {\n\t\t\t\t\t\t\t\terrorMessages.add(\n\t\t\t\t\t\t\t\t\tfailedPromise.reason.message\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( errorMessages.size === 0 ) {\n\t\t\t\t\t\t\terrorMessage = __(\n\t\t\t\t\t\t\t\t'An error occurred while restoring the posts.'\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else if ( errorMessages.size === 1 ) {\n\t\t\t\t\t\t\terrorMessage = sprintf(\n\t\t\t\t\t\t\t\t/* translators: %s: an error message */\n\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t'An error occurred while restoring the posts: %s'\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t[ ...errorMessages ][ 0 ]\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\terrorMessage = sprintf(\n\t\t\t\t\t\t\t\t/* translators: %s: a list of comma separated error messages */\n\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t'Some errors occurred while restoring the posts: %s'\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t[ ...errorMessages ].join( ',' )\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcreateErrorNotice( errorMessage, {\n\t\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t},\n\t\t} ),\n\t\t[\n\t\t\tcreateSuccessNotice,\n\t\t\tcreateErrorNotice,\n\t\t\teditEntityRecord,\n\t\t\tsaveEditedEntityRecord,\n\t\t]\n\t);\n\treturn useCanUserEligibilityCheckPostType(\n\t\t'update',\n\t\tresource,\n\t\trestorePostAction\n\t);\n}\n\nconst viewPostAction = {\n\tid: 'view-post',\n\tlabel: __( 'View' ),\n\tisPrimary: true,\n\ticon: external,\n\tisEligible( post ) {\n\t\treturn post.status !== 'trash';\n\t},\n\tcallback( posts, onActionPerformed ) {\n\t\tconst post = posts[ 0 ];\n\t\twindow.open( post.link, '_blank' );\n\t\tif ( onActionPerformed ) {\n\t\t\tonActionPerformed( posts );\n\t\t}\n\t},\n};\n\nconst postRevisionsAction = {\n\tid: 'view-post-revisions',\n\tcontext: 'list',\n\tlabel( items ) {\n\t\tconst revisionsCount =\n\t\t\titems[ 0 ]._links?.[ 'version-history' ]?.[ 0 ]?.count ?? 0;\n\t\treturn sprintf(\n\t\t\t/* translators: %s: number of revisions */\n\t\t\t__( 'View revisions (%s)' ),\n\t\t\trevisionsCount\n\t\t);\n\t},\n\tisEligible: ( post ) => {\n\t\tif ( post.status === 'trash' ) {\n\t\t\treturn false;\n\t\t}\n\t\tconst lastRevisionId =\n\t\t\tpost?._links?.[ 'predecessor-version' ]?.[ 0 ]?.id ?? null;\n\t\tconst revisionsCount =\n\t\t\tpost?._links?.[ 'version-history' ]?.[ 0 ]?.count ?? 0;\n\t\treturn lastRevisionId && revisionsCount > 1;\n\t},\n\tcallback( posts, onActionPerformed ) {\n\t\tconst post = posts[ 0 ];\n\t\tconst href = addQueryArgs( 'revision.php', {\n\t\t\trevision: post?._links?.[ 'predecessor-version' ]?.[ 0 ]?.id,\n\t\t} );\n\t\tdocument.location.href = href;\n\t\tif ( onActionPerformed ) {\n\t\t\tonActionPerformed( posts );\n\t\t}\n\t},\n};\n\nconst renamePostAction = {\n\tid: 'rename-post',\n\tlabel: __( 'Rename' ),\n\tisEligible( post ) {\n\t\tif ( post.status === 'trash' ) {\n\t\t\treturn false;\n\t\t}\n\t\t// Templates, template parts and patterns have special checks for renaming.\n\t\tif (\n\t\t\t! [\n\t\t\t\tTEMPLATE_POST_TYPE,\n\t\t\t\tTEMPLATE_PART_POST_TYPE,\n\t\t\t\t...Object.values( PATTERN_TYPES ),\n\t\t\t].includes( post.type )\n\t\t) {\n\t\t\treturn true;\n\t\t}\n\t\t// In the case of templates, we can only rename custom templates.\n\t\tif ( post.type === TEMPLATE_POST_TYPE ) {\n\t\t\treturn isTemplateRemovable( post ) && post.is_custom;\n\t\t}\n\t\t// Make necessary checks for template parts and patterns.\n\t\tconst isTemplatePart = post.type === TEMPLATE_PART_POST_TYPE;\n\t\tconst isUserPattern = post.type === PATTERN_TYPES.user;\n\t\t// In patterns list page we map the templates parts to a different object\n\t\t// than the one returned from the endpoint. This is why we need to check for\n\t\t// two props whether is custom or has a theme file.\n\t\tconst isCustomPattern =\n\t\t\tisUserPattern ||\n\t\t\t( isTemplatePart &&\n\t\t\t\t( post.isCustom || post.source === TEMPLATE_ORIGINS.custom ) );\n\t\tconst hasThemeFile =\n\t\t\tisTemplatePart &&\n\t\t\t( post.templatePart?.has_theme_file || post.has_theme_file );\n\t\treturn isCustomPattern && ! hasThemeFile;\n\t},\n\tRenderModal: ( { items, closeModal, onActionPerformed } ) => {\n\t\tconst [ item ] = items;\n\t\tconst originalTitle = decodeEntities(\n\t\t\ttypeof item.title === 'string' ? item.title : item.title.rendered\n\t\t);\n\t\tconst [ title, setTitle ] = useState( () => originalTitle );\n\t\tconst { editEntityRecord, saveEditedEntityRecord } =\n\t\t\tuseDispatch( coreStore );\n\t\tconst { createSuccessNotice, createErrorNotice } =\n\t\t\tuseDispatch( noticesStore );\n\n\t\tasync function onRename( event ) {\n\t\t\tevent.preventDefault();\n\t\t\ttry {\n\t\t\t\tawait editEntityRecord( 'postType', item.type, item.id, {\n\t\t\t\t\ttitle,\n\t\t\t\t} );\n\t\t\t\t// Update state before saving rerenders the list.\n\t\t\t\tsetTitle( '' );\n\t\t\t\tcloseModal();\n\t\t\t\t// Persist edited entity.\n\t\t\t\tawait saveEditedEntityRecord( 'postType', item.type, item.id, {\n\t\t\t\t\tthrowOnError: true,\n\t\t\t\t} );\n\t\t\t\tcreateSuccessNotice( __( 'Name updated' ), {\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t} );\n\t\t\t\tonActionPerformed?.( items );\n\t\t\t} catch ( error ) {\n\t\t\t\tconst errorMessage =\n\t\t\t\t\terror.message && error.code !== 'unknown_error'\n\t\t\t\t\t\t? error.message\n\t\t\t\t\t\t: __( 'An error occurred while updating the name' );\n\t\t\t\tcreateErrorNotice( errorMessage, { type: 'snackbar' } );\n\t\t\t}\n\t\t}\n\n\t\treturn (\n\t\t\t<form onSubmit={ onRename }>\n\t\t\t\t<VStack spacing=\"5\">\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tlabel={ __( 'Name' ) }\n\t\t\t\t\t\tvalue={ title }\n\t\t\t\t\t\tonChange={ setTitle }\n\t\t\t\t\t\trequired\n\t\t\t\t\t/>\n\t\t\t\t\t<HStack justify=\"right\">\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tcloseModal();\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Save' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</HStack>\n\t\t\t\t</VStack>\n\t\t\t</form>\n\t\t);\n\t},\n};\n\nfunction useRenamePostAction( resource ) {\n\treturn useCanUserEligibilityCheckPostType(\n\t\t'update',\n\t\tresource,\n\t\trenamePostAction\n\t);\n}\n\nconst duplicatePostAction = {\n\tid: 'duplicate-post',\n\tlabel: _x( 'Duplicate', 'action label' ),\n\tisEligible( { status } ) {\n\t\treturn status !== 'trash';\n\t},\n\tRenderModal: ( { items, closeModal, onActionPerformed } ) => {\n\t\tconst [ item ] = items;\n\t\tconst [ isCreatingPage, setIsCreatingPage ] = useState( false );\n\t\tconst [ title, setTitle ] = useState(\n\t\t\tsprintf(\n\t\t\t\t/* translators: %s: Existing item title */\n\t\t\t\t__( '%s (Copy)' ),\n\t\t\t\tgetItemTitle( item )\n\t\t\t)\n\t\t);\n\n\t\tconst { saveEntityRecord } = useDispatch( coreStore );\n\t\tconst { createSuccessNotice, createErrorNotice } =\n\t\t\tuseDispatch( noticesStore );\n\n\t\tasync function createPage( event ) {\n\t\t\tevent.preventDefault();\n\n\t\t\tif ( isCreatingPage ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetIsCreatingPage( true );\n\t\t\ttry {\n\t\t\t\tconst newItem = await saveEntityRecord(\n\t\t\t\t\t'postType',\n\t\t\t\t\titem.type,\n\t\t\t\t\t{\n\t\t\t\t\t\tstatus: 'draft',\n\t\t\t\t\t\ttitle,\n\t\t\t\t\t\tslug: title || __( 'No title' ),\n\t\t\t\t\t\tauthor: item.author,\n\t\t\t\t\t\tcomment_status: item.comment_status,\n\t\t\t\t\t\tcontent:\n\t\t\t\t\t\t\ttypeof item.content === 'string'\n\t\t\t\t\t\t\t\t? item.content\n\t\t\t\t\t\t\t\t: item.content.raw,\n\t\t\t\t\t\texcerpt: item.excerpt.raw,\n\t\t\t\t\t\tmeta: item.meta,\n\t\t\t\t\t\tparent: item.parent,\n\t\t\t\t\t\tpassword: item.password,\n\t\t\t\t\t\ttemplate: item.template,\n\t\t\t\t\t\tformat: item.format,\n\t\t\t\t\t\tfeatured_media: item.featured_media,\n\t\t\t\t\t\tmenu_order: item.menu_order,\n\t\t\t\t\t\tping_status: item.ping_status,\n\t\t\t\t\t\tcategories: item.categories,\n\t\t\t\t\t\ttags: item.tags,\n\t\t\t\t\t},\n\t\t\t\t\t{ throwOnError: true }\n\t\t\t\t);\n\n\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\tsprintf(\n\t\t\t\t\t\t// translators: %s: Title of the created template e.g: \"Category\".\n\t\t\t\t\t\t__( '\"%s\" successfully created.' ),\n\t\t\t\t\t\tdecodeEntities( newItem.title?.rendered || title )\n\t\t\t\t\t),\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'duplicate-post-action',\n\t\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\tif ( onActionPerformed ) {\n\t\t\t\t\tonActionPerformed( [ newItem ] );\n\t\t\t\t}\n\t\t\t} catch ( error ) {\n\t\t\t\tconst errorMessage =\n\t\t\t\t\terror.message && error.code !== 'unknown_error'\n\t\t\t\t\t\t? error.message\n\t\t\t\t\t\t: __( 'An error occurred while duplicating the page.' );\n\n\t\t\t\tcreateErrorNotice( errorMessage, {\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t} );\n\t\t\t} finally {\n\t\t\t\tsetIsCreatingPage( false );\n\t\t\t\tcloseModal();\n\t\t\t}\n\t\t}\n\t\treturn (\n\t\t\t<form onSubmit={ createPage }>\n\t\t\t\t<VStack spacing={ 3 }>\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\tlabel={ __( 'Title' ) }\n\t\t\t\t\t\tonChange={ setTitle }\n\t\t\t\t\t\tplaceholder={ __( 'No title' ) }\n\t\t\t\t\t\tvalue={ title }\n\t\t\t\t\t/>\n\t\t\t\t\t<HStack spacing={ 2 } justify=\"end\">\n\t\t\t\t\t\t<Button variant=\"tertiary\" onClick={ closeModal }>\n\t\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\t\tisBusy={ isCreatingPage }\n\t\t\t\t\t\t\taria-disabled={ isCreatingPage }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ _x( 'Duplicate', 'action label' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</HStack>\n\t\t\t\t</VStack>\n\t\t\t</form>\n\t\t);\n\t},\n};\n\nconst isTemplatePartRevertable = ( item ) => {\n\tif ( ! item ) {\n\t\treturn false;\n\t}\n\tconst hasThemeFile = item.templatePart?.has_theme_file;\n\treturn canDeleteOrReset( item ) && hasThemeFile;\n};\n\nconst resetTemplateAction = {\n\tid: 'reset-template',\n\tlabel: __( 'Reset' ),\n\tisEligible: ( item ) => {\n\t\treturn item.type === TEMPLATE_PART_POST_TYPE\n\t\t\t? isTemplatePartRevertable( item )\n\t\t\t: isTemplateRevertable( item );\n\t},\n\ticon: backup,\n\tsupportsBulk: true,\n\thideModalHeader: true,\n\tRenderModal: ( {\n\t\titems,\n\t\tcloseModal,\n\t\tonActionStart,\n\t\tonActionPerformed,\n\t} ) => {\n\t\tconst [ isBusy, setIsBusy ] = useState( false );\n\t\tconst { revertTemplate, removeTemplates } = unlock(\n\t\t\tuseDispatch( editorStore )\n\t\t);\n\t\tconst { saveEditedEntityRecord } = useDispatch( coreStore );\n\t\tconst { createSuccessNotice, createErrorNotice } =\n\t\t\tuseDispatch( noticesStore );\n\t\tconst onConfirm = async () => {\n\t\t\ttry {\n\t\t\t\tif ( items[ 0 ].type === TEMPLATE_PART_POST_TYPE ) {\n\t\t\t\t\tawait removeTemplates( items );\n\t\t\t\t} else {\n\t\t\t\t\tfor ( const template of items ) {\n\t\t\t\t\t\tif ( template.type === TEMPLATE_POST_TYPE ) {\n\t\t\t\t\t\t\tawait revertTemplate( template, {\n\t\t\t\t\t\t\t\tallowUndo: false,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\tawait saveEditedEntityRecord(\n\t\t\t\t\t\t\t\t'postType',\n\t\t\t\t\t\t\t\ttemplate.type,\n\t\t\t\t\t\t\t\ttemplate.id\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\t\titems.length > 1\n\t\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t\t/* translators: The number of items. */\n\t\t\t\t\t\t\t\t\t__( '%s items reset.' ),\n\t\t\t\t\t\t\t\t\titems.length\n\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t\t\t/* translators: The template/part's name. */\n\t\t\t\t\t\t\t\t\t__( '\"%s\" reset.' ),\n\t\t\t\t\t\t\t\t\tdecodeEntities( getItemTitle( items[ 0 ] ) )\n\t\t\t\t\t\t\t ),\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\t\t\tid: 'revert-template-action',\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} catch ( error ) {\n\t\t\t\tlet fallbackErrorMessage;\n\t\t\t\tif ( items[ 0 ].type === TEMPLATE_POST_TYPE ) {\n\t\t\t\t\tfallbackErrorMessage =\n\t\t\t\t\t\titems.length === 1\n\t\t\t\t\t\t\t? __(\n\t\t\t\t\t\t\t\t\t'An error occurred while reverting the template.'\n\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t: __(\n\t\t\t\t\t\t\t\t\t'An error occurred while reverting the templates.'\n\t\t\t\t\t\t\t );\n\t\t\t\t} else {\n\t\t\t\t\tfallbackErrorMessage =\n\t\t\t\t\t\titems.length === 1\n\t\t\t\t\t\t\t? __(\n\t\t\t\t\t\t\t\t\t'An error occurred while reverting the template part.'\n\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t: __(\n\t\t\t\t\t\t\t\t\t'An error occurred while reverting the template parts.'\n\t\t\t\t\t\t\t );\n\t\t\t\t}\n\t\t\t\tconst errorMessage =\n\t\t\t\t\terror.message && error.code !== 'unknown_error'\n\t\t\t\t\t\t? error.message\n\t\t\t\t\t\t: fallbackErrorMessage;\n\n\t\t\t\tcreateErrorNotice( errorMessage, { type: 'snackbar' } );\n\t\t\t}\n\t\t};\n\t\treturn (\n\t\t\t<VStack spacing=\"5\">\n\t\t\t\t<Text>\n\t\t\t\t\t{ __( 'Reset to default and clear all customizations?' ) }\n\t\t\t\t</Text>\n\t\t\t\t<HStack justify=\"right\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\tonClick={ closeModal }\n\t\t\t\t\t\tdisabled={ isBusy }\n\t\t\t\t\t\t__experimentalIsFocusable\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\tonClick={ async () => {\n\t\t\t\t\t\t\tsetIsBusy( true );\n\t\t\t\t\t\t\tif ( onActionStart ) {\n\t\t\t\t\t\t\t\tonActionStart( items );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tawait onConfirm( items );\n\t\t\t\t\t\t\tonActionPerformed?.( items );\n\t\t\t\t\t\t\tsetIsBusy( false );\n\t\t\t\t\t\t\tcloseModal();\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tisBusy={ isBusy }\n\t\t\t\t\t\tdisabled={ isBusy }\n\t\t\t\t\t\t__experimentalIsFocusable\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Reset' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</HStack>\n\t\t\t</VStack>\n\t\t);\n\t},\n};\n\nexport const duplicatePatternAction = {\n\tid: 'duplicate-pattern',\n\tlabel: _x( 'Duplicate', 'action label' ),\n\tisEligible: ( item ) => item.type !== TEMPLATE_PART_POST_TYPE,\n\tmodalHeader: _x( 'Duplicate pattern', 'action label' ),\n\tRenderModal: ( { items, closeModal } ) => {\n\t\tconst [ item ] = items;\n\t\tconst isThemePattern = item.type === PATTERN_TYPES.theme;\n\t\tconst duplicatedProps = useDuplicatePatternProps( {\n\t\t\tpattern:\n\t\t\t\tisThemePattern || ! item.patternPost ? item : item.patternPost,\n\t\t\tonSuccess: () => closeModal(),\n\t\t} );\n\t\treturn (\n\t\t\t<CreatePatternModalContents\n\t\t\t\tonClose={ closeModal }\n\t\t\t\tconfirmLabel={ _x( 'Duplicate', 'action label' ) }\n\t\t\t\t{ ...duplicatedProps }\n\t\t\t/>\n\t\t);\n\t},\n};\n\nexport const duplicateTemplatePartAction = {\n\tid: 'duplicate-template-part',\n\tlabel: _x( 'Duplicate', 'action label' ),\n\tisEligible: ( item ) => item.type === TEMPLATE_PART_POST_TYPE,\n\tmodalHeader: _x( 'Duplicate template part', 'action label' ),\n\tRenderModal: ( { items, closeModal } ) => {\n\t\tconst [ item ] = items;\n\t\tconst { createSuccessNotice } = useDispatch( noticesStore );\n\t\tfunction onTemplatePartSuccess() {\n\t\t\tcreateSuccessNotice(\n\t\t\t\tsprintf(\n\t\t\t\t\t// translators: %s: The new template part's title e.g. 'Call to action (copy)'.\n\t\t\t\t\t__( '\"%s\" duplicated.' ),\n\t\t\t\t\titem.title\n\t\t\t\t),\n\t\t\t\t{ type: 'snackbar', id: 'edit-site-patterns-success' }\n\t\t\t);\n\t\t\tcloseModal();\n\t\t}\n\t\treturn (\n\t\t\t<CreateTemplatePartModalContents\n\t\t\t\tblocks={ item.blocks }\n\t\t\t\tdefaultArea={ item.templatePart?.area || item.area }\n\t\t\t\tdefaultTitle={ sprintf(\n\t\t\t\t\t/* translators: %s: Existing template part title */\n\t\t\t\t\t__( '%s (Copy)' ),\n\t\t\t\t\titem.title\n\t\t\t\t) }\n\t\t\t\tonCreate={ onTemplatePartSuccess }\n\t\t\t\tonError={ closeModal }\n\t\t\t\tconfirmLabel={ _x( 'Duplicate', 'action label' ) }\n\t\t\t/>\n\t\t);\n\t},\n};\n\nexport function usePostActions( { postType, onActionPerformed, context } ) {\n\tconst {\n\t\tpostTypeObject,\n\t\tresource,\n\t\tcachedCanUserResolvers,\n\t\tuserCanCreatePostType,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getPostType, getCachedResolvers, canUser } =\n\t\t\t\tselect( coreStore );\n\t\t\tconst _postTypeObject = getPostType( postType );\n\t\t\tconst _resource = _postTypeObject?.rest_base || '';\n\t\t\treturn {\n\t\t\t\tpostTypeObject: _postTypeObject,\n\t\t\t\tresource: _resource,\n\t\t\t\tcachedCanUserResolvers: getCachedResolvers()?.canUser,\n\t\t\t\tuserCanCreatePostType: canUser( 'create', _resource ),\n\t\t\t};\n\t\t},\n\t\t[ postType ]\n\t);\n\n\tconst trashPostActionForPostType = useTrashPostAction( resource );\n\tconst permanentlyDeletePostActionForPostType =\n\t\tusePermanentlyDeletePostAction( resource );\n\tconst renamePostActionForPostType = useRenamePostAction( resource );\n\tconst restorePostActionForPostType = useRestorePostAction( resource );\n\tconst isTemplateOrTemplatePart = [\n\t\tTEMPLATE_POST_TYPE,\n\t\tTEMPLATE_PART_POST_TYPE,\n\t].includes( postType );\n\tconst isPattern = postType === PATTERN_POST_TYPE;\n\tconst isLoaded = !! postTypeObject;\n\tconst supportsRevisions = !! postTypeObject?.supports?.revisions;\n\tconst supportsTitle = !! postTypeObject?.supports?.title;\n\treturn useMemo( () => {\n\t\tif ( ! isLoaded ) {\n\t\t\treturn [];\n\t\t}\n\n\t\tlet actions = [\n\t\t\tpostTypeObject?.viewable && viewPostAction,\n\t\t\tsupportsRevisions && postRevisionsAction,\n\t\t\tglobalThis.IS_GUTENBERG_PLUGIN\n\t\t\t\t? ! isTemplateOrTemplatePart &&\n\t\t\t\t ! isPattern &&\n\t\t\t\t duplicatePostAction\n\t\t\t\t: false,\n\t\t\tisTemplateOrTemplatePart &&\n\t\t\t\tuserCanCreatePostType &&\n\t\t\t\tduplicateTemplatePartAction,\n\t\t\tisPattern && userCanCreatePostType && duplicatePatternAction,\n\t\t\tsupportsTitle && renamePostActionForPostType,\n\t\t\tisPattern && exportPatternAsJSONAction,\n\t\t\tisTemplateOrTemplatePart\n\t\t\t\t? resetTemplateAction\n\t\t\t\t: restorePostActionForPostType,\n\t\t\tisTemplateOrTemplatePart || isPattern\n\t\t\t\t? deletePostAction\n\t\t\t\t: trashPostActionForPostType,\n\t\t\t! isTemplateOrTemplatePart &&\n\t\t\t\tpermanentlyDeletePostActionForPostType,\n\t\t].filter( Boolean );\n\t\t// Filter actions based on provided context. If not provided\n\t\t// all actions are returned. We'll have a single entry for getting the actions\n\t\t// and the consumer should provide the context to filter the actions, if needed.\n\t\t// Actions should also provide the `context` they support, if it's specific, to\n\t\t// compare with the provided context to get all the actions.\n\t\t// Right now the only supported context is `list`.\n\t\tactions = actions.filter( ( action ) => {\n\t\t\tif ( ! action.context ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn action.context === context;\n\t\t} );\n\n\t\tif ( onActionPerformed ) {\n\t\t\tfor ( let i = 0; i < actions.length; ++i ) {\n\t\t\t\tif ( actions[ i ].callback ) {\n\t\t\t\t\tconst existingCallback = actions[ i ].callback;\n\t\t\t\t\tactions[ i ] = {\n\t\t\t\t\t\t...actions[ i ],\n\t\t\t\t\t\tcallback: ( items, _onActionPerformed ) => {\n\t\t\t\t\t\t\texistingCallback( items, ( _items ) => {\n\t\t\t\t\t\t\t\tif ( _onActionPerformed ) {\n\t\t\t\t\t\t\t\t\t_onActionPerformed( _items );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tonActionPerformed( actions[ i ].id, _items );\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tif ( actions[ i ].RenderModal ) {\n\t\t\t\t\tconst ExistingRenderModal = actions[ i ].RenderModal;\n\t\t\t\t\tactions[ i ] = {\n\t\t\t\t\t\t...actions[ i ],\n\t\t\t\t\t\tRenderModal: ( props ) => {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<ExistingRenderModal\n\t\t\t\t\t\t\t\t\t{ ...props }\n\t\t\t\t\t\t\t\t\tonActionPerformed={ ( _items ) => {\n\t\t\t\t\t\t\t\t\t\tif ( props.onActionPerformed ) {\n\t\t\t\t\t\t\t\t\t\t\tprops.onActionPerformed( _items );\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tonActionPerformed(\n\t\t\t\t\t\t\t\t\t\t\tactions[ i ].id,\n\t\t\t\t\t\t\t\t\t\t\t_items\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn actions;\n\t\t// We are making this use memo depend on cachedCanUserResolvers as a way to make the component using this hook re-render\n\t\t// when user capabilities are resolved. This makes sure the isEligible functions of actions dependent on capabilities are re-evaluated.\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [\n\t\tisTemplateOrTemplatePart,\n\t\tisPattern,\n\t\tpostTypeObject?.viewable,\n\t\tpermanentlyDeletePostActionForPostType,\n\t\trestorePostActionForPostType,\n\t\trenamePostActionForPostType,\n\t\ttrashPostActionForPostType,\n\t\tonActionPerformed,\n\t\tisLoaded,\n\t\tsupportsRevisions,\n\t\tsupportsTitle,\n\t\tcontext,\n\t\tuserCanCreatePostType,\n\t\tcachedCanUserResolvers,\n\t] );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["external","trash","backup","addQueryArgs","useDispatch","useSelect","useRegistry","decodeEntities","store","coreStore","__","_n","sprintf","_x","noticesStore","useMemo","useState","privateApis","patternsPrivateApis","Button","TextControl","__experimentalText","Text","__experimentalHStack","HStack","__experimentalVStack","VStack","TEMPLATE_ORIGINS","TEMPLATE_PART_POST_TYPE","TEMPLATE_POST_TYPE","PATTERN_POST_TYPE","editorStore","unlock","isTemplateRevertable","exportPatternAsJSONAction","CreateTemplatePartModalContents","jsx","_jsx","jsxs","_jsxs","PATTERN_TYPES","CreatePatternModalContents","useDuplicatePatternProps","isTemplateRemovable","template","source","templatePart","includes","custom","has_theme_file","getItemTitle","item","title","rendered","deletePostAction","id","label","isPrimary","icon","isEligible","post","type","user","supportsBulk","hideModalHeader","RenderModal","items","closeModal","onActionStart","onActionPerformed","isBusy","setIsBusy","removeTemplates","spacing","children","length","justify","variant","onClick","disabled","__experimentalIsFocusable","allowUndo","useCanUserEligibilityCheckPostType","capability","resource","action","registry","select","canUser","trashPostAction","status","createSuccessNotice","createErrorNotice","deleteEntityRecord","promiseResult","Promise","allSettled","map","throwOnError","every","successMessage","errorMessage","reason","message","errorMessages","Set","failedPromises","filter","failedPromise","add","size","join","useTrashPostAction","usePermanentlyDeletePostAction","permanentlyDeletePostAction","callback","posts","force","useRestorePostAction","editEntityRecord","saveEditedEntityRecord","restorePostAction","viewPostAction","window","open","link","postRevisionsAction","context","_items$0$_links$versi","revisionsCount","_links","count","_post$_links$predeces","_post$_links$version","lastRevisionId","href","revision","document","location","renamePostAction","Object","values","is_custom","isTemplatePart","isUserPattern","isCustomPattern","isCustom","hasThemeFile","originalTitle","setTitle","onRename","event","preventDefault","error","code","onSubmit","__nextHasNoMarginBottom","__next40pxDefaultSize","value","onChange","required","useRenamePostAction","duplicatePostAction","isCreatingPage","setIsCreatingPage","saveEntityRecord","createPage","newItem","slug","author","comment_status","content","raw","excerpt","meta","parent","password","format","featured_media","menu_order","ping_status","categories","tags","placeholder","resetTemplateAction","revertTemplate","onConfirm","fallbackErrorMessage","duplicatePatternAction","modalHeader","isThemePattern","theme","duplicatedProps","pattern","patternPost","onSuccess","onClose","confirmLabel","duplicateTemplatePartAction","onTemplatePartSuccess","blocks","defaultArea","area","defaultTitle","onCreate","onError","usePostActions","postType","postTypeObject","cachedCanUserResolvers","userCanCreatePostType","getPostType","getCachedResolvers","_postTypeObject","_resource","rest_base","trashPostActionForPostType","permanentlyDeletePostActionForPostType","renamePostActionForPostType","restorePostActionForPostType","isTemplateOrTemplatePart","isPattern","isLoaded","supportsRevisions","supports","revisions","supportsTitle","actions","viewable","globalThis","IS_GUTENBERG_PLUGIN","Boolean","i","existingCallback","_onActionPerformed","_items","ExistingRenderModal","props"],"sources":["@wordpress/editor/src/components/post-actions/actions.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { external, trash, backup } from '@wordpress/icons';\nimport { addQueryArgs } from '@wordpress/url';\nimport { useDispatch, useSelect, useRegistry } from '@wordpress/data';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { __, _n, sprintf, _x } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { useMemo, useState } from '@wordpress/element';\nimport { privateApis as patternsPrivateApis } from '@wordpress/patterns';\n\nimport {\n\tButton,\n\tTextControl,\n\t__experimentalText as Text,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport {\n\tTEMPLATE_ORIGINS,\n\tTEMPLATE_PART_POST_TYPE,\n\tTEMPLATE_POST_TYPE,\n\tPATTERN_POST_TYPE,\n} from '../../store/constants';\nimport { store as editorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\nimport isTemplateRevertable from '../../store/utils/is-template-revertable';\nimport { exportPatternAsJSONAction } from './export-pattern-action';\nimport { CreateTemplatePartModalContents } from '../create-template-part-modal';\n\n// Patterns.\nconst { PATTERN_TYPES, CreatePatternModalContents, useDuplicatePatternProps } =\n\tunlock( patternsPrivateApis );\n\n/**\n * Check if a template is removable.\n *\n * @param {Object} template The template entity to check.\n * @return {boolean} Whether the template is removable.\n */\nfunction isTemplateRemovable( template ) {\n\tif ( ! template ) {\n\t\treturn false;\n\t}\n\t// In patterns list page we map the templates parts to a different object\n\t// than the one returned from the endpoint. This is why we need to check for\n\t// two props whether is custom or has a theme file.\n\treturn (\n\t\t[ template.source, template.templatePart?.source ].includes(\n\t\t\tTEMPLATE_ORIGINS.custom\n\t\t) &&\n\t\t! template.has_theme_file &&\n\t\t! template.templatePart?.has_theme_file\n\t);\n}\n\nfunction getItemTitle( item ) {\n\tif ( typeof item.title === 'string' ) {\n\t\treturn decodeEntities( item.title );\n\t}\n\treturn decodeEntities( item.title?.rendered || '' );\n}\n\n// This action is used for templates, patterns and template parts.\n// Every other post type uses the similar `trashPostAction` which\n// moves the post to trash.\nconst deletePostAction = {\n\tid: 'delete-post',\n\tlabel: __( 'Delete' ),\n\tisPrimary: true,\n\ticon: trash,\n\tisEligible( post ) {\n\t\tif (\n\t\t\t[ TEMPLATE_POST_TYPE, TEMPLATE_PART_POST_TYPE ].includes(\n\t\t\t\tpost.type\n\t\t\t)\n\t\t) {\n\t\t\treturn isTemplateRemovable( post );\n\t\t}\n\t\t// We can only remove user patterns.\n\t\treturn post.type === PATTERN_TYPES.user;\n\t},\n\tsupportsBulk: true,\n\thideModalHeader: true,\n\tRenderModal: ( {\n\t\titems,\n\t\tcloseModal,\n\t\tonActionStart,\n\t\tonActionPerformed,\n\t} ) => {\n\t\tconst [ isBusy, setIsBusy ] = useState( false );\n\t\tconst { removeTemplates } = unlock( useDispatch( editorStore ) );\n\t\treturn (\n\t\t\t<VStack spacing=\"5\">\n\t\t\t\t<Text>\n\t\t\t\t\t{ items.length > 1\n\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t// translators: %d: number of items to delete.\n\t\t\t\t\t\t\t\t_n(\n\t\t\t\t\t\t\t\t\t'Delete %d item?',\n\t\t\t\t\t\t\t\t\t'Delete %d items?',\n\t\t\t\t\t\t\t\t\titems.length\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\titems.length\n\t\t\t\t\t\t )\n\t\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t\t// translators: %s: The template or template part's titles\n\t\t\t\t\t\t\t\t__( 'Delete \"%s\"?' ),\n\t\t\t\t\t\t\t\tgetItemTitle( items[ 0 ] )\n\t\t\t\t\t\t ) }\n\t\t\t\t</Text>\n\t\t\t\t<HStack justify=\"right\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\tonClick={ closeModal }\n\t\t\t\t\t\tdisabled={ isBusy }\n\t\t\t\t\t\t__experimentalIsFocusable\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\tonClick={ async () => {\n\t\t\t\t\t\t\tsetIsBusy( true );\n\t\t\t\t\t\t\tif ( onActionStart ) {\n\t\t\t\t\t\t\t\tonActionStart( items );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tawait removeTemplates( items, {\n\t\t\t\t\t\t\t\tallowUndo: false,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\tonActionPerformed?.( items );\n\t\t\t\t\t\t\tsetIsBusy( false );\n\t\t\t\t\t\t\tcloseModal();\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tisBusy={ isBusy }\n\t\t\t\t\t\tdisabled={ isBusy }\n\t\t\t\t\t\t__experimentalIsFocusable\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Delete' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</HStack>\n\t\t\t</VStack>\n\t\t);\n\t},\n};\n\nfunction useCanUserEligibilityCheckPostType( capability, resource, action ) {\n\tconst registry = useRegistry();\n\treturn useMemo(\n\t\t() => ( {\n\t\t\t...action,\n\t\t\tisEligible( item ) {\n\t\t\t\treturn (\n\t\t\t\t\taction.isEligible( item ) &&\n\t\t\t\t\tregistry\n\t\t\t\t\t\t.select( coreStore )\n\t\t\t\t\t\t.canUser( capability, resource, item.id )\n\t\t\t\t);\n\t\t\t},\n\t\t} ),\n\t\t[ action, registry, capability, resource ]\n\t);\n}\n\nconst trashPostAction = {\n\tid: 'move-to-trash',\n\tlabel: __( 'Move to Trash' ),\n\tisPrimary: true,\n\ticon: trash,\n\tisEligible( item ) {\n\t\treturn ! [ 'auto-draft', 'trash' ].includes( item.status );\n\t},\n\tsupportsBulk: true,\n\thideModalHeader: true,\n\tRenderModal: ( {\n\t\titems,\n\t\tcloseModal,\n\t\tonActionStart,\n\t\tonActionPerformed,\n\t} ) => {\n\t\tconst [ isBusy, setIsBusy ] = useState( false );\n\t\tconst { createSuccessNotice, createErrorNotice } =\n\t\t\tuseDispatch( noticesStore );\n\t\tconst { deleteEntityRecord } = useDispatch( coreStore );\n\t\treturn (\n\t\t\t<VStack spacing=\"5\">\n\t\t\t\t<Text>\n\t\t\t\t\t{ items.length === 1\n\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t// translators: %s: The item's title.\n\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t'Are you sure you want to move to trash \"%s\"?'\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tgetItemTitle( items[ 0 ] )\n\t\t\t\t\t\t )\n\t\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t\t// translators: %d: The number of items (2 or more).\n\t\t\t\t\t\t\t\t_n(\n\t\t\t\t\t\t\t\t\t'Are you sure you want to move to trash %d item?',\n\t\t\t\t\t\t\t\t\t'Are you sure you want to move to trash %d items?',\n\t\t\t\t\t\t\t\t\titems.length\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\titems.length\n\t\t\t\t\t\t ) }\n\t\t\t\t</Text>\n\t\t\t\t<HStack justify=\"right\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\tonClick={ closeModal }\n\t\t\t\t\t\tdisabled={ isBusy }\n\t\t\t\t\t\t__experimentalIsFocusable\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\tonClick={ async () => {\n\t\t\t\t\t\t\tsetIsBusy( true );\n\t\t\t\t\t\t\tif ( onActionStart ) {\n\t\t\t\t\t\t\t\tonActionStart( items );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tconst promiseResult = await Promise.allSettled(\n\t\t\t\t\t\t\t\titems.map( ( item ) =>\n\t\t\t\t\t\t\t\t\tdeleteEntityRecord(\n\t\t\t\t\t\t\t\t\t\t'postType',\n\t\t\t\t\t\t\t\t\t\titem.type,\n\t\t\t\t\t\t\t\t\t\titem.id,\n\t\t\t\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\t\t\t\t{ throwOnError: true }\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t// If all the promises were fulfilled with success.\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tpromiseResult.every(\n\t\t\t\t\t\t\t\t\t( { status } ) => status === 'fulfilled'\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tlet successMessage;\n\t\t\t\t\t\t\t\tif ( promiseResult.length === 1 ) {\n\t\t\t\t\t\t\t\t\tsuccessMessage = sprintf(\n\t\t\t\t\t\t\t\t\t\t/* translators: The item's title. */\n\t\t\t\t\t\t\t\t\t\t__( '\"%s\" moved to trash.' ),\n\t\t\t\t\t\t\t\t\t\tgetItemTitle( items[ 0 ] )\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tsuccessMessage = sprintf(\n\t\t\t\t\t\t\t\t\t\t/* translators: The number of items. */\n\t\t\t\t\t\t\t\t\t\t_n(\n\t\t\t\t\t\t\t\t\t\t\t'%s item moved to trash.',\n\t\t\t\t\t\t\t\t\t\t\t'%s items moved to trash.',\n\t\t\t\t\t\t\t\t\t\t\titems.length\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\titems.length\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcreateSuccessNotice( successMessage, {\n\t\t\t\t\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\t\t\t\t\tid: 'move-to-trash-action',\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// If there was at least one failure.\n\t\t\t\t\t\t\t\tlet errorMessage;\n\t\t\t\t\t\t\t\t// If we were trying to delete a single item.\n\t\t\t\t\t\t\t\tif ( promiseResult.length === 1 ) {\n\t\t\t\t\t\t\t\t\tif ( promiseResult[ 0 ].reason?.message ) {\n\t\t\t\t\t\t\t\t\t\terrorMessage =\n\t\t\t\t\t\t\t\t\t\t\tpromiseResult[ 0 ].reason.message;\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\terrorMessage = __(\n\t\t\t\t\t\t\t\t\t\t\t'An error occurred while moving to trash the item.'\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t// If we were trying to delete multiple items.\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tconst errorMessages = new Set();\n\t\t\t\t\t\t\t\t\tconst failedPromises = promiseResult.filter(\n\t\t\t\t\t\t\t\t\t\t( { status } ) => status === 'rejected'\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\tfor ( const failedPromise of failedPromises ) {\n\t\t\t\t\t\t\t\t\t\tif ( failedPromise.reason?.message ) {\n\t\t\t\t\t\t\t\t\t\t\terrorMessages.add(\n\t\t\t\t\t\t\t\t\t\t\t\tfailedPromise.reason.message\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif ( errorMessages.size === 0 ) {\n\t\t\t\t\t\t\t\t\t\terrorMessage = __(\n\t\t\t\t\t\t\t\t\t\t\t'An error occurred while moving to trash the items.'\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t} else if ( errorMessages.size === 1 ) {\n\t\t\t\t\t\t\t\t\t\terrorMessage = sprintf(\n\t\t\t\t\t\t\t\t\t\t\t/* translators: %s: an error message */\n\t\t\t\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t\t\t\t'An error occurred while moving to trash the item: %s'\n\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t[ ...errorMessages ][ 0 ]\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\terrorMessage = sprintf(\n\t\t\t\t\t\t\t\t\t\t\t/* translators: %s: a list of comma separated error messages */\n\t\t\t\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t\t\t\t'Some errors occurred while moving to trash the items: %s'\n\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t[ ...errorMessages ].join( ',' )\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcreateErrorNotice( errorMessage, {\n\t\t\t\t\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif ( onActionPerformed ) {\n\t\t\t\t\t\t\t\tonActionPerformed( items );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tsetIsBusy( false );\n\t\t\t\t\t\t\tcloseModal();\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tisBusy={ isBusy }\n\t\t\t\t\t\tdisabled={ isBusy }\n\t\t\t\t\t\t__experimentalIsFocusable\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Trash' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</HStack>\n\t\t\t</VStack>\n\t\t);\n\t},\n};\n\nfunction useTrashPostAction( resource ) {\n\treturn useCanUserEligibilityCheckPostType(\n\t\t'delete',\n\t\tresource,\n\t\ttrashPostAction\n\t);\n}\n\nfunction usePermanentlyDeletePostAction( resource ) {\n\tconst { createSuccessNotice, createErrorNotice } =\n\t\tuseDispatch( noticesStore );\n\tconst { deleteEntityRecord } = useDispatch( coreStore );\n\n\tconst permanentlyDeletePostAction = useMemo(\n\t\t() => ( {\n\t\t\tid: 'permanently-delete',\n\t\t\tlabel: __( 'Permanently delete' ),\n\t\t\tsupportsBulk: true,\n\t\t\tisEligible( { status } ) {\n\t\t\t\treturn status === 'trash';\n\t\t\t},\n\t\t\tasync callback( posts, onActionPerformed ) {\n\t\t\t\tconst promiseResult = await Promise.allSettled(\n\t\t\t\t\tposts.map( ( post ) => {\n\t\t\t\t\t\treturn deleteEntityRecord(\n\t\t\t\t\t\t\t'postType',\n\t\t\t\t\t\t\tpost.type,\n\t\t\t\t\t\t\tpost.id,\n\t\t\t\t\t\t\t{ force: true },\n\t\t\t\t\t\t\t{ throwOnError: true }\n\t\t\t\t\t\t);\n\t\t\t\t\t} )\n\t\t\t\t);\n\t\t\t\t// If all the promises were fulfilled with success.\n\t\t\t\tif (\n\t\t\t\t\tpromiseResult.every(\n\t\t\t\t\t\t( { status } ) => status === 'fulfilled'\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\tlet successMessage;\n\t\t\t\t\tif ( promiseResult.length === 1 ) {\n\t\t\t\t\t\tsuccessMessage = sprintf(\n\t\t\t\t\t\t\t/* translators: The posts's title. */\n\t\t\t\t\t\t\t__( '\"%s\" permanently deleted.' ),\n\t\t\t\t\t\t\tgetItemTitle( posts[ 0 ] )\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsuccessMessage = __(\n\t\t\t\t\t\t\t'The posts were permanently deleted.'\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tcreateSuccessNotice( successMessage, {\n\t\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\t\tid: 'permanently-delete-post-action',\n\t\t\t\t\t} );\n\t\t\t\t\tif ( onActionPerformed ) {\n\t\t\t\t\t\tonActionPerformed( posts );\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// If there was at lease one failure.\n\t\t\t\t\tlet errorMessage;\n\t\t\t\t\t// If we were trying to permanently delete a single post.\n\t\t\t\t\tif ( promiseResult.length === 1 ) {\n\t\t\t\t\t\tif ( promiseResult[ 0 ].reason?.message ) {\n\t\t\t\t\t\t\terrorMessage = promiseResult[ 0 ].reason.message;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\terrorMessage = __(\n\t\t\t\t\t\t\t\t'An error occurred while permanently deleting the post.'\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// If we were trying to permanently delete multiple posts\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst errorMessages = new Set();\n\t\t\t\t\t\tconst failedPromises = promiseResult.filter(\n\t\t\t\t\t\t\t( { status } ) => status === 'rejected'\n\t\t\t\t\t\t);\n\t\t\t\t\t\tfor ( const failedPromise of failedPromises ) {\n\t\t\t\t\t\t\tif ( failedPromise.reason?.message ) {\n\t\t\t\t\t\t\t\terrorMessages.add(\n\t\t\t\t\t\t\t\t\tfailedPromise.reason.message\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( errorMessages.size === 0 ) {\n\t\t\t\t\t\t\terrorMessage = __(\n\t\t\t\t\t\t\t\t'An error occurred while permanently deleting the posts.'\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else if ( errorMessages.size === 1 ) {\n\t\t\t\t\t\t\terrorMessage = sprintf(\n\t\t\t\t\t\t\t\t/* translators: %s: an error message */\n\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t'An error occurred while permanently deleting the posts: %s'\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t[ ...errorMessages ][ 0 ]\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\terrorMessage = sprintf(\n\t\t\t\t\t\t\t\t/* translators: %s: a list of comma separated error messages */\n\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t'Some errors occurred while permanently deleting the posts: %s'\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t[ ...errorMessages ].join( ',' )\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcreateErrorNotice( errorMessage, {\n\t\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t},\n\t\t} ),\n\t\t[ createSuccessNotice, createErrorNotice, deleteEntityRecord ]\n\t);\n\treturn useCanUserEligibilityCheckPostType(\n\t\t'delete',\n\t\tresource,\n\t\tpermanentlyDeletePostAction\n\t);\n}\n\nfunction useRestorePostAction( resource ) {\n\tconst { createSuccessNotice, createErrorNotice } =\n\t\tuseDispatch( noticesStore );\n\tconst { editEntityRecord, saveEditedEntityRecord } =\n\t\tuseDispatch( coreStore );\n\n\tconst restorePostAction = useMemo(\n\t\t() => ( {\n\t\t\tid: 'restore',\n\t\t\tlabel: __( 'Restore' ),\n\t\t\tisPrimary: true,\n\t\t\ticon: backup,\n\t\t\tsupportsBulk: true,\n\t\t\tisEligible( { status } ) {\n\t\t\t\treturn status === 'trash';\n\t\t\t},\n\t\t\tasync callback( posts, onActionPerformed ) {\n\t\t\t\tawait Promise.allSettled(\n\t\t\t\t\tposts.map( ( post ) => {\n\t\t\t\t\t\treturn editEntityRecord(\n\t\t\t\t\t\t\t'postType',\n\t\t\t\t\t\t\tpost.type,\n\t\t\t\t\t\t\tpost.id,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tstatus: 'draft',\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t\t} )\n\t\t\t\t);\n\t\t\t\tconst promiseResult = await Promise.allSettled(\n\t\t\t\t\tposts.map( ( post ) => {\n\t\t\t\t\t\treturn saveEditedEntityRecord(\n\t\t\t\t\t\t\t'postType',\n\t\t\t\t\t\t\tpost.type,\n\t\t\t\t\t\t\tpost.id,\n\t\t\t\t\t\t\t{ throwOnError: true }\n\t\t\t\t\t\t);\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\tif (\n\t\t\t\t\tpromiseResult.every(\n\t\t\t\t\t\t( { status } ) => status === 'fulfilled'\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\tlet successMessage;\n\t\t\t\t\tif ( posts.length === 1 ) {\n\t\t\t\t\t\tsuccessMessage = sprintf(\n\t\t\t\t\t\t\t/* translators: The number of posts. */\n\t\t\t\t\t\t\t__( '\"%s\" has been restored.' ),\n\t\t\t\t\t\t\tgetItemTitle( posts[ 0 ] )\n\t\t\t\t\t\t);\n\t\t\t\t\t} else if ( posts[ 0 ].type === 'page' ) {\n\t\t\t\t\t\tsuccessMessage = sprintf(\n\t\t\t\t\t\t\t/* translators: The number of posts. */\n\t\t\t\t\t\t\t__( '%d pages have been restored.' ),\n\t\t\t\t\t\t\tposts.length\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsuccessMessage = sprintf(\n\t\t\t\t\t\t\t/* translators: The number of posts. */\n\t\t\t\t\t\t\t__( '%d posts have been restored.' ),\n\t\t\t\t\t\t\tposts.length\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tcreateSuccessNotice( successMessage, {\n\t\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\t\tid: 'restore-post-action',\n\t\t\t\t\t} );\n\t\t\t\t\tif ( onActionPerformed ) {\n\t\t\t\t\t\tonActionPerformed( posts );\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// If there was at lease one failure.\n\t\t\t\t\tlet errorMessage;\n\t\t\t\t\t// If we were trying to move a single post to the trash.\n\t\t\t\t\tif ( promiseResult.length === 1 ) {\n\t\t\t\t\t\tif ( promiseResult[ 0 ].reason?.message ) {\n\t\t\t\t\t\t\terrorMessage = promiseResult[ 0 ].reason.message;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\terrorMessage = __(\n\t\t\t\t\t\t\t\t'An error occurred while restoring the post.'\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// If we were trying to move multiple posts to the trash\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst errorMessages = new Set();\n\t\t\t\t\t\tconst failedPromises = promiseResult.filter(\n\t\t\t\t\t\t\t( { status } ) => status === 'rejected'\n\t\t\t\t\t\t);\n\t\t\t\t\t\tfor ( const failedPromise of failedPromises ) {\n\t\t\t\t\t\t\tif ( failedPromise.reason?.message ) {\n\t\t\t\t\t\t\t\terrorMessages.add(\n\t\t\t\t\t\t\t\t\tfailedPromise.reason.message\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( errorMessages.size === 0 ) {\n\t\t\t\t\t\t\terrorMessage = __(\n\t\t\t\t\t\t\t\t'An error occurred while restoring the posts.'\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else if ( errorMessages.size === 1 ) {\n\t\t\t\t\t\t\terrorMessage = sprintf(\n\t\t\t\t\t\t\t\t/* translators: %s: an error message */\n\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t'An error occurred while restoring the posts: %s'\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t[ ...errorMessages ][ 0 ]\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\terrorMessage = sprintf(\n\t\t\t\t\t\t\t\t/* translators: %s: a list of comma separated error messages */\n\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t'Some errors occurred while restoring the posts: %s'\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t[ ...errorMessages ].join( ',' )\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcreateErrorNotice( errorMessage, {\n\t\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t},\n\t\t} ),\n\t\t[\n\t\t\tcreateSuccessNotice,\n\t\t\tcreateErrorNotice,\n\t\t\teditEntityRecord,\n\t\t\tsaveEditedEntityRecord,\n\t\t]\n\t);\n\treturn useCanUserEligibilityCheckPostType(\n\t\t'update',\n\t\tresource,\n\t\trestorePostAction\n\t);\n}\n\nconst viewPostAction = {\n\tid: 'view-post',\n\tlabel: __( 'View' ),\n\tisPrimary: true,\n\ticon: external,\n\tisEligible( post ) {\n\t\treturn post.status !== 'trash';\n\t},\n\tcallback( posts, onActionPerformed ) {\n\t\tconst post = posts[ 0 ];\n\t\twindow.open( post.link, '_blank' );\n\t\tif ( onActionPerformed ) {\n\t\t\tonActionPerformed( posts );\n\t\t}\n\t},\n};\n\nconst postRevisionsAction = {\n\tid: 'view-post-revisions',\n\tcontext: 'list',\n\tlabel( items ) {\n\t\tconst revisionsCount =\n\t\t\titems[ 0 ]._links?.[ 'version-history' ]?.[ 0 ]?.count ?? 0;\n\t\treturn sprintf(\n\t\t\t/* translators: %s: number of revisions */\n\t\t\t__( 'View revisions (%s)' ),\n\t\t\trevisionsCount\n\t\t);\n\t},\n\tisEligible: ( post ) => {\n\t\tif ( post.status === 'trash' ) {\n\t\t\treturn false;\n\t\t}\n\t\tconst lastRevisionId =\n\t\t\tpost?._links?.[ 'predecessor-version' ]?.[ 0 ]?.id ?? null;\n\t\tconst revisionsCount =\n\t\t\tpost?._links?.[ 'version-history' ]?.[ 0 ]?.count ?? 0;\n\t\treturn lastRevisionId && revisionsCount > 1;\n\t},\n\tcallback( posts, onActionPerformed ) {\n\t\tconst post = posts[ 0 ];\n\t\tconst href = addQueryArgs( 'revision.php', {\n\t\t\trevision: post?._links?.[ 'predecessor-version' ]?.[ 0 ]?.id,\n\t\t} );\n\t\tdocument.location.href = href;\n\t\tif ( onActionPerformed ) {\n\t\t\tonActionPerformed( posts );\n\t\t}\n\t},\n};\n\nconst renamePostAction = {\n\tid: 'rename-post',\n\tlabel: __( 'Rename' ),\n\tisEligible( post ) {\n\t\tif ( post.status === 'trash' ) {\n\t\t\treturn false;\n\t\t}\n\t\t// Templates, template parts and patterns have special checks for renaming.\n\t\tif (\n\t\t\t! [\n\t\t\t\tTEMPLATE_POST_TYPE,\n\t\t\t\tTEMPLATE_PART_POST_TYPE,\n\t\t\t\t...Object.values( PATTERN_TYPES ),\n\t\t\t].includes( post.type )\n\t\t) {\n\t\t\treturn true;\n\t\t}\n\t\t// In the case of templates, we can only rename custom templates.\n\t\tif ( post.type === TEMPLATE_POST_TYPE ) {\n\t\t\treturn isTemplateRemovable( post ) && post.is_custom;\n\t\t}\n\t\t// Make necessary checks for template parts and patterns.\n\t\tconst isTemplatePart = post.type === TEMPLATE_PART_POST_TYPE;\n\t\tconst isUserPattern = post.type === PATTERN_TYPES.user;\n\t\t// In patterns list page we map the templates parts to a different object\n\t\t// than the one returned from the endpoint. This is why we need to check for\n\t\t// two props whether is custom or has a theme file.\n\t\tconst isCustomPattern =\n\t\t\tisUserPattern ||\n\t\t\t( isTemplatePart &&\n\t\t\t\t( post.isCustom || post.source === TEMPLATE_ORIGINS.custom ) );\n\t\tconst hasThemeFile =\n\t\t\tisTemplatePart &&\n\t\t\t( post.templatePart?.has_theme_file || post.has_theme_file );\n\t\treturn isCustomPattern && ! hasThemeFile;\n\t},\n\tRenderModal: ( { items, closeModal, onActionPerformed } ) => {\n\t\tconst [ item ] = items;\n\t\tconst originalTitle = decodeEntities(\n\t\t\ttypeof item.title === 'string' ? item.title : item.title.rendered\n\t\t);\n\t\tconst [ title, setTitle ] = useState( () => originalTitle );\n\t\tconst { editEntityRecord, saveEditedEntityRecord } =\n\t\t\tuseDispatch( coreStore );\n\t\tconst { createSuccessNotice, createErrorNotice } =\n\t\t\tuseDispatch( noticesStore );\n\n\t\tasync function onRename( event ) {\n\t\t\tevent.preventDefault();\n\t\t\ttry {\n\t\t\t\tawait editEntityRecord( 'postType', item.type, item.id, {\n\t\t\t\t\ttitle,\n\t\t\t\t} );\n\t\t\t\t// Update state before saving rerenders the list.\n\t\t\t\tsetTitle( '' );\n\t\t\t\tcloseModal();\n\t\t\t\t// Persist edited entity.\n\t\t\t\tawait saveEditedEntityRecord( 'postType', item.type, item.id, {\n\t\t\t\t\tthrowOnError: true,\n\t\t\t\t} );\n\t\t\t\tcreateSuccessNotice( __( 'Name updated' ), {\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t} );\n\t\t\t\tonActionPerformed?.( items );\n\t\t\t} catch ( error ) {\n\t\t\t\tconst errorMessage =\n\t\t\t\t\terror.message && error.code !== 'unknown_error'\n\t\t\t\t\t\t? error.message\n\t\t\t\t\t\t: __( 'An error occurred while updating the name' );\n\t\t\t\tcreateErrorNotice( errorMessage, { type: 'snackbar' } );\n\t\t\t}\n\t\t}\n\n\t\treturn (\n\t\t\t<form onSubmit={ onRename }>\n\t\t\t\t<VStack spacing=\"5\">\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tlabel={ __( 'Name' ) }\n\t\t\t\t\t\tvalue={ title }\n\t\t\t\t\t\tonChange={ setTitle }\n\t\t\t\t\t\trequired\n\t\t\t\t\t/>\n\t\t\t\t\t<HStack justify=\"right\">\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tcloseModal();\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Save' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</HStack>\n\t\t\t\t</VStack>\n\t\t\t</form>\n\t\t);\n\t},\n};\n\nfunction useRenamePostAction( resource ) {\n\treturn useCanUserEligibilityCheckPostType(\n\t\t'update',\n\t\tresource,\n\t\trenamePostAction\n\t);\n}\n\nconst duplicatePostAction = {\n\tid: 'duplicate-post',\n\tlabel: _x( 'Duplicate', 'action label' ),\n\tisEligible( { status } ) {\n\t\treturn status !== 'trash';\n\t},\n\tRenderModal: ( { items, closeModal, onActionPerformed } ) => {\n\t\tconst [ item ] = items;\n\t\tconst [ isCreatingPage, setIsCreatingPage ] = useState( false );\n\t\tconst [ title, setTitle ] = useState(\n\t\t\tsprintf(\n\t\t\t\t/* translators: %s: Existing item title */\n\t\t\t\t__( '%s (Copy)' ),\n\t\t\t\tgetItemTitle( item )\n\t\t\t)\n\t\t);\n\n\t\tconst { saveEntityRecord } = useDispatch( coreStore );\n\t\tconst { createSuccessNotice, createErrorNotice } =\n\t\t\tuseDispatch( noticesStore );\n\n\t\tasync function createPage( event ) {\n\t\t\tevent.preventDefault();\n\n\t\t\tif ( isCreatingPage ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetIsCreatingPage( true );\n\t\t\ttry {\n\t\t\t\tconst newItem = await saveEntityRecord(\n\t\t\t\t\t'postType',\n\t\t\t\t\titem.type,\n\t\t\t\t\t{\n\t\t\t\t\t\tstatus: 'draft',\n\t\t\t\t\t\ttitle,\n\t\t\t\t\t\tslug: title || __( 'No title' ),\n\t\t\t\t\t\tauthor: item.author,\n\t\t\t\t\t\tcomment_status: item.comment_status,\n\t\t\t\t\t\tcontent:\n\t\t\t\t\t\t\ttypeof item.content === 'string'\n\t\t\t\t\t\t\t\t? item.content\n\t\t\t\t\t\t\t\t: item.content.raw,\n\t\t\t\t\t\texcerpt: item.excerpt.raw,\n\t\t\t\t\t\tmeta: item.meta,\n\t\t\t\t\t\tparent: item.parent,\n\t\t\t\t\t\tpassword: item.password,\n\t\t\t\t\t\ttemplate: item.template,\n\t\t\t\t\t\tformat: item.format,\n\t\t\t\t\t\tfeatured_media: item.featured_media,\n\t\t\t\t\t\tmenu_order: item.menu_order,\n\t\t\t\t\t\tping_status: item.ping_status,\n\t\t\t\t\t\tcategories: item.categories,\n\t\t\t\t\t\ttags: item.tags,\n\t\t\t\t\t},\n\t\t\t\t\t{ throwOnError: true }\n\t\t\t\t);\n\n\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\tsprintf(\n\t\t\t\t\t\t// translators: %s: Title of the created template e.g: \"Category\".\n\t\t\t\t\t\t__( '\"%s\" successfully created.' ),\n\t\t\t\t\t\tdecodeEntities( newItem.title?.rendered || title )\n\t\t\t\t\t),\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'duplicate-post-action',\n\t\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\tif ( onActionPerformed ) {\n\t\t\t\t\tonActionPerformed( [ newItem ] );\n\t\t\t\t}\n\t\t\t} catch ( error ) {\n\t\t\t\tconst errorMessage =\n\t\t\t\t\terror.message && error.code !== 'unknown_error'\n\t\t\t\t\t\t? error.message\n\t\t\t\t\t\t: __( 'An error occurred while duplicating the page.' );\n\n\t\t\t\tcreateErrorNotice( errorMessage, {\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t} );\n\t\t\t} finally {\n\t\t\t\tsetIsCreatingPage( false );\n\t\t\t\tcloseModal();\n\t\t\t}\n\t\t}\n\t\treturn (\n\t\t\t<form onSubmit={ createPage }>\n\t\t\t\t<VStack spacing={ 3 }>\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\tlabel={ __( 'Title' ) }\n\t\t\t\t\t\tonChange={ setTitle }\n\t\t\t\t\t\tplaceholder={ __( 'No title' ) }\n\t\t\t\t\t\tvalue={ title }\n\t\t\t\t\t/>\n\t\t\t\t\t<HStack spacing={ 2 } justify=\"end\">\n\t\t\t\t\t\t<Button variant=\"tertiary\" onClick={ closeModal }>\n\t\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\t\tisBusy={ isCreatingPage }\n\t\t\t\t\t\t\taria-disabled={ isCreatingPage }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ _x( 'Duplicate', 'action label' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</HStack>\n\t\t\t\t</VStack>\n\t\t\t</form>\n\t\t);\n\t},\n};\n\nconst resetTemplateAction = {\n\tid: 'reset-template',\n\tlabel: __( 'Reset' ),\n\tisEligible: ( item ) => {\n\t\treturn isTemplateRevertable( item );\n\t},\n\ticon: backup,\n\tsupportsBulk: true,\n\thideModalHeader: true,\n\tRenderModal: ( {\n\t\titems,\n\t\tcloseModal,\n\t\tonActionStart,\n\t\tonActionPerformed,\n\t} ) => {\n\t\tconst [ isBusy, setIsBusy ] = useState( false );\n\t\tconst { revertTemplate } = unlock( useDispatch( editorStore ) );\n\t\tconst { saveEditedEntityRecord } = useDispatch( coreStore );\n\t\tconst { createSuccessNotice, createErrorNotice } =\n\t\t\tuseDispatch( noticesStore );\n\t\tconst onConfirm = async () => {\n\t\t\ttry {\n\t\t\t\tfor ( const template of items ) {\n\t\t\t\t\tawait revertTemplate( template, {\n\t\t\t\t\t\tallowUndo: false,\n\t\t\t\t\t} );\n\t\t\t\t\tawait saveEditedEntityRecord(\n\t\t\t\t\t\t'postType',\n\t\t\t\t\t\ttemplate.type,\n\t\t\t\t\t\ttemplate.id\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\titems.length > 1\n\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t/* translators: The number of items. */\n\t\t\t\t\t\t\t\t__( '%s items reset.' ),\n\t\t\t\t\t\t\t\titems.length\n\t\t\t\t\t\t )\n\t\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t\t/* translators: The template/part's name. */\n\t\t\t\t\t\t\t\t__( '\"%s\" reset.' ),\n\t\t\t\t\t\t\t\tdecodeEntities( getItemTitle( items[ 0 ] ) )\n\t\t\t\t\t\t ),\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\t\tid: 'revert-template-action',\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t} catch ( error ) {\n\t\t\t\tlet fallbackErrorMessage;\n\t\t\t\tif ( items[ 0 ].type === TEMPLATE_POST_TYPE ) {\n\t\t\t\t\tfallbackErrorMessage =\n\t\t\t\t\t\titems.length === 1\n\t\t\t\t\t\t\t? __(\n\t\t\t\t\t\t\t\t\t'An error occurred while reverting the template.'\n\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t: __(\n\t\t\t\t\t\t\t\t\t'An error occurred while reverting the templates.'\n\t\t\t\t\t\t\t );\n\t\t\t\t} else {\n\t\t\t\t\tfallbackErrorMessage =\n\t\t\t\t\t\titems.length === 1\n\t\t\t\t\t\t\t? __(\n\t\t\t\t\t\t\t\t\t'An error occurred while reverting the template part.'\n\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t: __(\n\t\t\t\t\t\t\t\t\t'An error occurred while reverting the template parts.'\n\t\t\t\t\t\t\t );\n\t\t\t\t}\n\t\t\t\tconst errorMessage =\n\t\t\t\t\terror.message && error.code !== 'unknown_error'\n\t\t\t\t\t\t? error.message\n\t\t\t\t\t\t: fallbackErrorMessage;\n\n\t\t\t\tcreateErrorNotice( errorMessage, { type: 'snackbar' } );\n\t\t\t}\n\t\t};\n\t\treturn (\n\t\t\t<VStack spacing=\"5\">\n\t\t\t\t<Text>\n\t\t\t\t\t{ __( 'Reset to default and clear all customizations?' ) }\n\t\t\t\t</Text>\n\t\t\t\t<HStack justify=\"right\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\tonClick={ closeModal }\n\t\t\t\t\t\tdisabled={ isBusy }\n\t\t\t\t\t\t__experimentalIsFocusable\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\tonClick={ async () => {\n\t\t\t\t\t\t\tsetIsBusy( true );\n\t\t\t\t\t\t\tif ( onActionStart ) {\n\t\t\t\t\t\t\t\tonActionStart( items );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tawait onConfirm( items );\n\t\t\t\t\t\t\tonActionPerformed?.( items );\n\t\t\t\t\t\t\tsetIsBusy( false );\n\t\t\t\t\t\t\tcloseModal();\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tisBusy={ isBusy }\n\t\t\t\t\t\tdisabled={ isBusy }\n\t\t\t\t\t\t__experimentalIsFocusable\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Reset' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</HStack>\n\t\t\t</VStack>\n\t\t);\n\t},\n};\n\nexport const duplicatePatternAction = {\n\tid: 'duplicate-pattern',\n\tlabel: _x( 'Duplicate', 'action label' ),\n\tisEligible: ( item ) => item.type !== TEMPLATE_PART_POST_TYPE,\n\tmodalHeader: _x( 'Duplicate pattern', 'action label' ),\n\tRenderModal: ( { items, closeModal } ) => {\n\t\tconst [ item ] = items;\n\t\tconst isThemePattern = item.type === PATTERN_TYPES.theme;\n\t\tconst duplicatedProps = useDuplicatePatternProps( {\n\t\t\tpattern:\n\t\t\t\tisThemePattern || ! item.patternPost ? item : item.patternPost,\n\t\t\tonSuccess: () => closeModal(),\n\t\t} );\n\t\treturn (\n\t\t\t<CreatePatternModalContents\n\t\t\t\tonClose={ closeModal }\n\t\t\t\tconfirmLabel={ _x( 'Duplicate', 'action label' ) }\n\t\t\t\t{ ...duplicatedProps }\n\t\t\t/>\n\t\t);\n\t},\n};\n\nexport const duplicateTemplatePartAction = {\n\tid: 'duplicate-template-part',\n\tlabel: _x( 'Duplicate', 'action label' ),\n\tisEligible: ( item ) => item.type === TEMPLATE_PART_POST_TYPE,\n\tmodalHeader: _x( 'Duplicate template part', 'action label' ),\n\tRenderModal: ( { items, closeModal } ) => {\n\t\tconst [ item ] = items;\n\t\tconst { createSuccessNotice } = useDispatch( noticesStore );\n\t\tfunction onTemplatePartSuccess() {\n\t\t\tcreateSuccessNotice(\n\t\t\t\tsprintf(\n\t\t\t\t\t// translators: %s: The new template part's title e.g. 'Call to action (copy)'.\n\t\t\t\t\t__( '\"%s\" duplicated.' ),\n\t\t\t\t\titem.title\n\t\t\t\t),\n\t\t\t\t{ type: 'snackbar', id: 'edit-site-patterns-success' }\n\t\t\t);\n\t\t\tcloseModal();\n\t\t}\n\t\treturn (\n\t\t\t<CreateTemplatePartModalContents\n\t\t\t\tblocks={ item.blocks }\n\t\t\t\tdefaultArea={ item.templatePart?.area || item.area }\n\t\t\t\tdefaultTitle={ sprintf(\n\t\t\t\t\t/* translators: %s: Existing template part title */\n\t\t\t\t\t__( '%s (Copy)' ),\n\t\t\t\t\titem.title\n\t\t\t\t) }\n\t\t\t\tonCreate={ onTemplatePartSuccess }\n\t\t\t\tonError={ closeModal }\n\t\t\t\tconfirmLabel={ _x( 'Duplicate', 'action label' ) }\n\t\t\t/>\n\t\t);\n\t},\n};\n\nexport function usePostActions( { postType, onActionPerformed, context } ) {\n\tconst {\n\t\tpostTypeObject,\n\t\tresource,\n\t\tcachedCanUserResolvers,\n\t\tuserCanCreatePostType,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getPostType, getCachedResolvers, canUser } =\n\t\t\t\tselect( coreStore );\n\t\t\tconst _postTypeObject = getPostType( postType );\n\t\t\tconst _resource = _postTypeObject?.rest_base || '';\n\t\t\treturn {\n\t\t\t\tpostTypeObject: _postTypeObject,\n\t\t\t\tresource: _resource,\n\t\t\t\tcachedCanUserResolvers: getCachedResolvers()?.canUser,\n\t\t\t\tuserCanCreatePostType: canUser( 'create', _resource ),\n\t\t\t};\n\t\t},\n\t\t[ postType ]\n\t);\n\n\tconst trashPostActionForPostType = useTrashPostAction( resource );\n\tconst permanentlyDeletePostActionForPostType =\n\t\tusePermanentlyDeletePostAction( resource );\n\tconst renamePostActionForPostType = useRenamePostAction( resource );\n\tconst restorePostActionForPostType = useRestorePostAction( resource );\n\tconst isTemplateOrTemplatePart = [\n\t\tTEMPLATE_POST_TYPE,\n\t\tTEMPLATE_PART_POST_TYPE,\n\t].includes( postType );\n\tconst isPattern = postType === PATTERN_POST_TYPE;\n\tconst isLoaded = !! postTypeObject;\n\tconst supportsRevisions = !! postTypeObject?.supports?.revisions;\n\tconst supportsTitle = !! postTypeObject?.supports?.title;\n\treturn useMemo( () => {\n\t\tif ( ! isLoaded ) {\n\t\t\treturn [];\n\t\t}\n\n\t\tlet actions = [\n\t\t\tpostTypeObject?.viewable && viewPostAction,\n\t\t\tsupportsRevisions && postRevisionsAction,\n\t\t\tglobalThis.IS_GUTENBERG_PLUGIN\n\t\t\t\t? ! isTemplateOrTemplatePart &&\n\t\t\t\t ! isPattern &&\n\t\t\t\t duplicatePostAction\n\t\t\t\t: false,\n\t\t\tisTemplateOrTemplatePart &&\n\t\t\t\tuserCanCreatePostType &&\n\t\t\t\tduplicateTemplatePartAction,\n\t\t\tisPattern && userCanCreatePostType && duplicatePatternAction,\n\t\t\tsupportsTitle && renamePostActionForPostType,\n\t\t\tisPattern && exportPatternAsJSONAction,\n\t\t\tisTemplateOrTemplatePart\n\t\t\t\t? resetTemplateAction\n\t\t\t\t: restorePostActionForPostType,\n\t\t\tisTemplateOrTemplatePart || isPattern\n\t\t\t\t? deletePostAction\n\t\t\t\t: trashPostActionForPostType,\n\t\t\t! isTemplateOrTemplatePart &&\n\t\t\t\tpermanentlyDeletePostActionForPostType,\n\t\t].filter( Boolean );\n\t\t// Filter actions based on provided context. If not provided\n\t\t// all actions are returned. We'll have a single entry for getting the actions\n\t\t// and the consumer should provide the context to filter the actions, if needed.\n\t\t// Actions should also provide the `context` they support, if it's specific, to\n\t\t// compare with the provided context to get all the actions.\n\t\t// Right now the only supported context is `list`.\n\t\tactions = actions.filter( ( action ) => {\n\t\t\tif ( ! action.context ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn action.context === context;\n\t\t} );\n\n\t\tif ( onActionPerformed ) {\n\t\t\tfor ( let i = 0; i < actions.length; ++i ) {\n\t\t\t\tif ( actions[ i ].callback ) {\n\t\t\t\t\tconst existingCallback = actions[ i ].callback;\n\t\t\t\t\tactions[ i ] = {\n\t\t\t\t\t\t...actions[ i ],\n\t\t\t\t\t\tcallback: ( items, _onActionPerformed ) => {\n\t\t\t\t\t\t\texistingCallback( items, ( _items ) => {\n\t\t\t\t\t\t\t\tif ( _onActionPerformed ) {\n\t\t\t\t\t\t\t\t\t_onActionPerformed( _items );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tonActionPerformed( actions[ i ].id, _items );\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tif ( actions[ i ].RenderModal ) {\n\t\t\t\t\tconst ExistingRenderModal = actions[ i ].RenderModal;\n\t\t\t\t\tactions[ i ] = {\n\t\t\t\t\t\t...actions[ i ],\n\t\t\t\t\t\tRenderModal: ( props ) => {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<ExistingRenderModal\n\t\t\t\t\t\t\t\t\t{ ...props }\n\t\t\t\t\t\t\t\t\tonActionPerformed={ ( _items ) => {\n\t\t\t\t\t\t\t\t\t\tif ( props.onActionPerformed ) {\n\t\t\t\t\t\t\t\t\t\t\tprops.onActionPerformed( _items );\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tonActionPerformed(\n\t\t\t\t\t\t\t\t\t\t\tactions[ i ].id,\n\t\t\t\t\t\t\t\t\t\t\t_items\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn actions;\n\t\t// We are making this use memo depend on cachedCanUserResolvers as a way to make the component using this hook re-render\n\t\t// when user capabilities are resolved. This makes sure the isEligible functions of actions dependent on capabilities are re-evaluated.\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [\n\t\tisTemplateOrTemplatePart,\n\t\tisPattern,\n\t\tpostTypeObject?.viewable,\n\t\tpermanentlyDeletePostActionForPostType,\n\t\trestorePostActionForPostType,\n\t\trenamePostActionForPostType,\n\t\ttrashPostActionForPostType,\n\t\tonActionPerformed,\n\t\tisLoaded,\n\t\tsupportsRevisions,\n\t\tsupportsTitle,\n\t\tcontext,\n\t\tuserCanCreatePostType,\n\t\tcachedCanUserResolvers,\n\t] );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -24,8 +24,8 @@ function getJsonFromItem(item) {
|
|
|
24
24
|
return JSON.stringify({
|
|
25
25
|
__file: item.type,
|
|
26
26
|
title: item.title || item.name,
|
|
27
|
-
content: item
|
|
28
|
-
syncStatus: item
|
|
27
|
+
content: item?.patternPost?.content?.raw || item.content,
|
|
28
|
+
syncStatus: item?.patternPost?.wp_pattern_sync_status || item.wp_pattern_sync_status
|
|
29
29
|
}, null, 2);
|
|
30
30
|
}
|
|
31
31
|
export const exportPatternAsJSONAction = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["paramCase","kebabCase","downloadZip","downloadBlob","__","privateApis","patternsPrivateApis","unlock","PATTERN_TYPES","getJsonFromItem","item","JSON","stringify","__file","type","title","name","content","patternPost","raw","syncStatus","wp_pattern_sync_status","exportPatternAsJSONAction","id","label","supportsBulk","isEligible","user","callback","items","length","nameCount","filesToZip","map","lastModified","Date","input","blob"],"sources":["@wordpress/editor/src/components/post-actions/export-pattern-action.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { paramCase as kebabCase } from 'change-case';\nimport { downloadZip } from 'client-zip';\n\n/**\n * WordPress dependencies\n */\nimport { downloadBlob } from '@wordpress/blob';\nimport { __ } from '@wordpress/i18n';\nimport { privateApis as patternsPrivateApis } from '@wordpress/patterns';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\n\n// Patterns.\nconst { PATTERN_TYPES } = unlock( patternsPrivateApis );\n\nfunction getJsonFromItem( item ) {\n\treturn JSON.stringify(\n\t\t{\n\t\t\t__file: item.type,\n\t\t\ttitle: item.title || item.name,\n\t\t\tcontent: item
|
|
1
|
+
{"version":3,"names":["paramCase","kebabCase","downloadZip","downloadBlob","__","privateApis","patternsPrivateApis","unlock","PATTERN_TYPES","getJsonFromItem","item","JSON","stringify","__file","type","title","name","content","patternPost","raw","syncStatus","wp_pattern_sync_status","exportPatternAsJSONAction","id","label","supportsBulk","isEligible","user","callback","items","length","nameCount","filesToZip","map","lastModified","Date","input","blob"],"sources":["@wordpress/editor/src/components/post-actions/export-pattern-action.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { paramCase as kebabCase } from 'change-case';\nimport { downloadZip } from 'client-zip';\n\n/**\n * WordPress dependencies\n */\nimport { downloadBlob } from '@wordpress/blob';\nimport { __ } from '@wordpress/i18n';\nimport { privateApis as patternsPrivateApis } from '@wordpress/patterns';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\n\n// Patterns.\nconst { PATTERN_TYPES } = unlock( patternsPrivateApis );\n\nfunction getJsonFromItem( item ) {\n\treturn JSON.stringify(\n\t\t{\n\t\t\t__file: item.type,\n\t\t\ttitle: item.title || item.name,\n\t\t\tcontent: item?.patternPost?.content?.raw || item.content,\n\t\t\tsyncStatus:\n\t\t\t\titem?.patternPost?.wp_pattern_sync_status ||\n\t\t\t\titem.wp_pattern_sync_status,\n\t\t},\n\t\tnull,\n\t\t2\n\t);\n}\n\nexport const exportPatternAsJSONAction = {\n\tid: 'export-pattern',\n\tlabel: __( 'Export as JSON' ),\n\tsupportsBulk: true,\n\tisEligible: ( item ) => {\n\t\tif ( ! item.type ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn item.type === PATTERN_TYPES.user;\n\t},\n\tcallback: async ( items ) => {\n\t\tif ( items.length === 1 ) {\n\t\t\treturn downloadBlob(\n\t\t\t\t`${ kebabCase( items[ 0 ].title || items[ 0 ].name ) }.json`,\n\t\t\t\tgetJsonFromItem( items[ 0 ] ),\n\t\t\t\t'application/json'\n\t\t\t);\n\t\t}\n\t\tconst nameCount = {};\n\t\tconst filesToZip = items.map( ( item ) => {\n\t\t\tconst name = kebabCase( item.title || item.name );\n\t\t\tnameCount[ name ] = ( nameCount[ name ] || 0 ) + 1;\n\t\t\treturn {\n\t\t\t\tname: `${\n\t\t\t\t\tname +\n\t\t\t\t\t( nameCount[ name ] > 1\n\t\t\t\t\t\t? '-' + ( nameCount[ name ] - 1 )\n\t\t\t\t\t\t: '' )\n\t\t\t\t}.json`,\n\t\t\t\tlastModified: new Date(),\n\t\t\t\tinput: getJsonFromItem( item ),\n\t\t\t};\n\t\t} );\n\t\treturn downloadBlob(\n\t\t\t__( 'patterns-export' ) + '.zip',\n\t\t\tawait downloadZip( filesToZip ).blob(),\n\t\t\t'application/zip'\n\t\t);\n\t},\n};\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,SAAS,IAAIC,SAAS,QAAQ,aAAa;AACpD,SAASC,WAAW,QAAQ,YAAY;;AAExC;AACA;AACA;AACA,SAASC,YAAY,QAAQ,iBAAiB;AAC9C,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SAASC,WAAW,IAAIC,mBAAmB,QAAQ,qBAAqB;;AAExE;AACA;AACA;AACA,SAASC,MAAM,QAAQ,mBAAmB;;AAE1C;AACA,MAAM;EAAEC;AAAc,CAAC,GAAGD,MAAM,CAAED,mBAAoB,CAAC;AAEvD,SAASG,eAAeA,CAAEC,IAAI,EAAG;EAChC,OAAOC,IAAI,CAACC,SAAS,CACpB;IACCC,MAAM,EAAEH,IAAI,CAACI,IAAI;IACjBC,KAAK,EAAEL,IAAI,CAACK,KAAK,IAAIL,IAAI,CAACM,IAAI;IAC9BC,OAAO,EAAEP,IAAI,EAAEQ,WAAW,EAAED,OAAO,EAAEE,GAAG,IAAIT,IAAI,CAACO,OAAO;IACxDG,UAAU,EACTV,IAAI,EAAEQ,WAAW,EAAEG,sBAAsB,IACzCX,IAAI,CAACW;EACP,CAAC,EACD,IAAI,EACJ,CACD,CAAC;AACF;AAEA,OAAO,MAAMC,yBAAyB,GAAG;EACxCC,EAAE,EAAE,gBAAgB;EACpBC,KAAK,EAAEpB,EAAE,CAAE,gBAAiB,CAAC;EAC7BqB,YAAY,EAAE,IAAI;EAClBC,UAAU,EAAIhB,IAAI,IAAM;IACvB,IAAK,CAAEA,IAAI,CAACI,IAAI,EAAG;MAClB,OAAO,KAAK;IACb;IACA,OAAOJ,IAAI,CAACI,IAAI,KAAKN,aAAa,CAACmB,IAAI;EACxC,CAAC;EACDC,QAAQ,EAAE,MAAQC,KAAK,IAAM;IAC5B,IAAKA,KAAK,CAACC,MAAM,KAAK,CAAC,EAAG;MACzB,OAAO3B,YAAY,CACjB,GAAGF,SAAS,CAAE4B,KAAK,CAAE,CAAC,CAAE,CAACd,KAAK,IAAIc,KAAK,CAAE,CAAC,CAAE,CAACb,IAAK,CAAG,OAAM,EAC5DP,eAAe,CAAEoB,KAAK,CAAE,CAAC,CAAG,CAAC,EAC7B,kBACD,CAAC;IACF;IACA,MAAME,SAAS,GAAG,CAAC,CAAC;IACpB,MAAMC,UAAU,GAAGH,KAAK,CAACI,GAAG,CAAIvB,IAAI,IAAM;MACzC,MAAMM,IAAI,GAAGf,SAAS,CAAES,IAAI,CAACK,KAAK,IAAIL,IAAI,CAACM,IAAK,CAAC;MACjDe,SAAS,CAAEf,IAAI,CAAE,GAAG,CAAEe,SAAS,CAAEf,IAAI,CAAE,IAAI,CAAC,IAAK,CAAC;MAClD,OAAO;QACNA,IAAI,EAAG,GACNA,IAAI,IACFe,SAAS,CAAEf,IAAI,CAAE,GAAG,CAAC,GACpB,GAAG,IAAKe,SAAS,CAAEf,IAAI,CAAE,GAAG,CAAC,CAAE,GAC/B,EAAE,CACL,OAAM;QACPkB,YAAY,EAAE,IAAIC,IAAI,CAAC,CAAC;QACxBC,KAAK,EAAE3B,eAAe,CAAEC,IAAK;MAC9B,CAAC;IACF,CAAE,CAAC;IACH,OAAOP,YAAY,CAClBC,EAAE,CAAE,iBAAkB,CAAC,GAAG,MAAM,EAChC,MAAMF,WAAW,CAAE8B,UAAW,CAAC,CAACK,IAAI,CAAC,CAAC,EACtC,iBACD,CAAC;EACF;AACD,CAAC","ignoreList":[]}
|
|
@@ -11,7 +11,6 @@ import { compose } from '@wordpress/compose';
|
|
|
11
11
|
*/
|
|
12
12
|
import PublishButtonLabel from './label';
|
|
13
13
|
import { store as editorStore } from '../../store';
|
|
14
|
-
import { unlock } from '../../lock-unlock';
|
|
15
14
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
16
15
|
import { Fragment as _Fragment } from "react/jsx-runtime";
|
|
17
16
|
const noop = () => {};
|
|
@@ -42,18 +41,14 @@ export class PostPublishButton extends Component {
|
|
|
42
41
|
return (...args) => {
|
|
43
42
|
const {
|
|
44
43
|
hasNonPostEntityChanges,
|
|
45
|
-
|
|
46
|
-
setEntitiesSavedStatesCallback,
|
|
47
|
-
isPublished
|
|
44
|
+
setEntitiesSavedStatesCallback
|
|
48
45
|
} = this.props;
|
|
49
46
|
// If a post with non-post entities is published, but the user
|
|
50
47
|
// elects to not save changes to the non-post entities, those
|
|
51
48
|
// entities will still be dirty when the Publish button is clicked.
|
|
52
49
|
// We also need to check that the `setEntitiesSavedStatesCallback`
|
|
53
50
|
// prop was passed. See https://github.com/WordPress/gutenberg/pull/37383
|
|
54
|
-
|
|
55
|
-
// TODO: Explore how to manage `hasPostMetaChanges` and pre-publish workflow properly.
|
|
56
|
-
if ((hasNonPostEntityChanges || hasPostMetaChanges && isPublished) && setEntitiesSavedStatesCallback) {
|
|
51
|
+
if (hasNonPostEntityChanges && setEntitiesSavedStatesCallback) {
|
|
57
52
|
// The modal for multiple entity saving will open,
|
|
58
53
|
// hold the callback for saving/publishing the post
|
|
59
54
|
// so that we can call it if the post entity is checked.
|
|
@@ -187,9 +182,8 @@ export default compose([withSelect(select => {
|
|
|
187
182
|
hasNonPostEntityChanges,
|
|
188
183
|
isSavingNonPostEntityChanges,
|
|
189
184
|
getEditedPostAttribute,
|
|
190
|
-
getPostEdits
|
|
191
|
-
|
|
192
|
-
} = unlock(select(editorStore));
|
|
185
|
+
getPostEdits
|
|
186
|
+
} = select(editorStore);
|
|
193
187
|
return {
|
|
194
188
|
isSaving: isSavingPost(),
|
|
195
189
|
isAutoSaving: isAutosavingPost(),
|
|
@@ -205,7 +199,6 @@ export default compose([withSelect(select => {
|
|
|
205
199
|
postStatus: getEditedPostAttribute('status'),
|
|
206
200
|
postStatusHasChanged: getPostEdits()?.status,
|
|
207
201
|
hasNonPostEntityChanges: hasNonPostEntityChanges(),
|
|
208
|
-
hasPostMetaChanges: hasPostMetaChanges(),
|
|
209
202
|
isSavingNonPostEntityChanges: isSavingNonPostEntityChanges()
|
|
210
203
|
};
|
|
211
204
|
}), withDispatch(dispatch => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Button","Component","createRef","withSelect","withDispatch","compose","PublishButtonLabel","store","editorStore","unlock","jsx","_jsx","Fragment","_Fragment","noop","PostPublishButton","constructor","props","buttonNode","createOnClick","bind","closeEntitiesSavedStates","state","entitiesSavedStatesCallback","componentDidMount","focusOnMount","timeoutID","setTimeout","current","focus","componentWillUnmount","clearTimeout","callback","args","hasNonPostEntityChanges","hasPostMetaChanges","setEntitiesSavedStatesCallback","isPublished","setState","savedEntities","postType","postId","some","elt","kind","name","key","render","forceIsDirty","hasPublishAction","isBeingScheduled","isOpen","isPostSavingLocked","isPublishable","isSaveable","isSaving","isAutoSaving","isToggle","savePostStatus","onSubmit","onToggle","visibility","isSavingNonPostEntityChanges","postStatus","postStatusHasChanged","isButtonDisabled","isToggleDisabled","publishStatus","onClickButton","onClickToggle","buttonProps","className","isBusy","variant","onClick","toggleProps","size","componentProps","children","ref","select","_getCurrentPost$_link","isSavingPost","isAutosavingPost","isEditedPostBeingScheduled","getEditedPostVisibility","isCurrentPostPublished","isEditedPostSaveable","isEditedPostPublishable","getCurrentPost","getCurrentPostType","getCurrentPostId","getEditedPostAttribute","getPostEdits","_links","status","dispatch","editPost","savePost","undoIgnore"],"sources":["@wordpress/editor/src/components/post-publish-button/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { Button } from '@wordpress/components';\nimport { Component, createRef } from '@wordpress/element';\nimport { withSelect, withDispatch } from '@wordpress/data';\nimport { compose } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport PublishButtonLabel from './label';\nimport { store as editorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\n\nconst noop = () => {};\n\nexport class PostPublishButton extends Component {\n\tconstructor( props ) {\n\t\tsuper( props );\n\t\tthis.buttonNode = createRef();\n\n\t\tthis.createOnClick = this.createOnClick.bind( this );\n\t\tthis.closeEntitiesSavedStates =\n\t\t\tthis.closeEntitiesSavedStates.bind( this );\n\n\t\tthis.state = {\n\t\t\tentitiesSavedStatesCallback: false,\n\t\t};\n\t}\n\n\tcomponentDidMount() {\n\t\tif ( this.props.focusOnMount ) {\n\t\t\t// This timeout is necessary to make sure the `useEffect` hook of\n\t\t\t// `useFocusReturn` gets the correct element (the button that opens the\n\t\t\t// PostPublishPanel) otherwise it will get this button.\n\t\t\tthis.timeoutID = setTimeout( () => {\n\t\t\t\tthis.buttonNode.current.focus();\n\t\t\t}, 0 );\n\t\t}\n\t}\n\n\tcomponentWillUnmount() {\n\t\tclearTimeout( this.timeoutID );\n\t}\n\n\tcreateOnClick( callback ) {\n\t\treturn ( ...args ) => {\n\t\t\tconst {\n\t\t\t\thasNonPostEntityChanges,\n\t\t\t\thasPostMetaChanges,\n\t\t\t\tsetEntitiesSavedStatesCallback,\n\t\t\t\tisPublished,\n\t\t\t} = this.props;\n\t\t\t// If a post with non-post entities is published, but the user\n\t\t\t// elects to not save changes to the non-post entities, those\n\t\t\t// entities will still be dirty when the Publish button is clicked.\n\t\t\t// We also need to check that the `setEntitiesSavedStatesCallback`\n\t\t\t// prop was passed. See https://github.com/WordPress/gutenberg/pull/37383\n\t\t\t//\n\t\t\t// TODO: Explore how to manage `hasPostMetaChanges` and pre-publish workflow properly.\n\t\t\tif (\n\t\t\t\t( hasNonPostEntityChanges ||\n\t\t\t\t\t( hasPostMetaChanges && isPublished ) ) &&\n\t\t\t\tsetEntitiesSavedStatesCallback\n\t\t\t) {\n\t\t\t\t// The modal for multiple entity saving will open,\n\t\t\t\t// hold the callback for saving/publishing the post\n\t\t\t\t// so that we can call it if the post entity is checked.\n\t\t\t\tthis.setState( {\n\t\t\t\t\tentitiesSavedStatesCallback: () => callback( ...args ),\n\t\t\t\t} );\n\n\t\t\t\t// Open the save panel by setting its callback.\n\t\t\t\t// To set a function on the useState hook, we must set it\n\t\t\t\t// with another function (() => myFunction). Passing the\n\t\t\t\t// function on its own will cause an error when called.\n\t\t\t\tsetEntitiesSavedStatesCallback(\n\t\t\t\t\t() => this.closeEntitiesSavedStates\n\t\t\t\t);\n\t\t\t\treturn noop;\n\t\t\t}\n\n\t\t\treturn callback( ...args );\n\t\t};\n\t}\n\n\tcloseEntitiesSavedStates( savedEntities ) {\n\t\tconst { postType, postId } = this.props;\n\t\tconst { entitiesSavedStatesCallback } = this.state;\n\t\tthis.setState( { entitiesSavedStatesCallback: false }, () => {\n\t\t\tif (\n\t\t\t\tsavedEntities &&\n\t\t\t\tsavedEntities.some(\n\t\t\t\t\t( elt ) =>\n\t\t\t\t\t\telt.kind === 'postType' &&\n\t\t\t\t\t\telt.name === postType &&\n\t\t\t\t\t\telt.key === postId\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\t// The post entity was checked, call the held callback from `createOnClick`.\n\t\t\t\tentitiesSavedStatesCallback();\n\t\t\t}\n\t\t} );\n\t}\n\n\trender() {\n\t\tconst {\n\t\t\tforceIsDirty,\n\t\t\thasPublishAction,\n\t\t\tisBeingScheduled,\n\t\t\tisOpen,\n\t\t\tisPostSavingLocked,\n\t\t\tisPublishable,\n\t\t\tisPublished,\n\t\t\tisSaveable,\n\t\t\tisSaving,\n\t\t\tisAutoSaving,\n\t\t\tisToggle,\n\t\t\tsavePostStatus,\n\t\t\tonSubmit = noop,\n\t\t\tonToggle,\n\t\t\tvisibility,\n\t\t\thasNonPostEntityChanges,\n\t\t\tisSavingNonPostEntityChanges,\n\t\t\tpostStatus,\n\t\t\tpostStatusHasChanged,\n\t\t} = this.props;\n\n\t\tconst isButtonDisabled =\n\t\t\t( isSaving ||\n\t\t\t\t! isSaveable ||\n\t\t\t\tisPostSavingLocked ||\n\t\t\t\t( ! isPublishable && ! forceIsDirty ) ) &&\n\t\t\t( ! hasNonPostEntityChanges || isSavingNonPostEntityChanges );\n\n\t\tconst isToggleDisabled =\n\t\t\t( isPublished ||\n\t\t\t\tisSaving ||\n\t\t\t\t! isSaveable ||\n\t\t\t\t( ! isPublishable && ! forceIsDirty ) ) &&\n\t\t\t( ! hasNonPostEntityChanges || isSavingNonPostEntityChanges );\n\n\t\t// If the new status has not changed explicitely, we derive it from\n\t\t// other factors, like having a publish action, etc.. We need to preserve\n\t\t// this because it affects when to show the pre and post publish panels.\n\t\t// If it has changed though explicitely, we need to respect that.\n\t\tlet publishStatus = 'publish';\n\t\tif ( postStatusHasChanged ) {\n\t\t\tpublishStatus = postStatus;\n\t\t} else if ( ! hasPublishAction ) {\n\t\t\tpublishStatus = 'pending';\n\t\t} else if ( visibility === 'private' ) {\n\t\t\tpublishStatus = 'private';\n\t\t} else if ( isBeingScheduled ) {\n\t\t\tpublishStatus = 'future';\n\t\t}\n\n\t\tconst onClickButton = () => {\n\t\t\tif ( isButtonDisabled ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tonSubmit();\n\t\t\tsavePostStatus( publishStatus );\n\t\t};\n\n\t\t// Callback to open the publish panel.\n\t\tconst onClickToggle = () => {\n\t\t\tif ( isToggleDisabled ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tonToggle();\n\t\t};\n\n\t\tconst buttonProps = {\n\t\t\t'aria-disabled': isButtonDisabled,\n\t\t\tclassName: 'editor-post-publish-button',\n\t\t\tisBusy: ! isAutoSaving && isSaving,\n\t\t\tvariant: 'primary',\n\t\t\tonClick: this.createOnClick( onClickButton ),\n\t\t};\n\n\t\tconst toggleProps = {\n\t\t\t'aria-disabled': isToggleDisabled,\n\t\t\t'aria-expanded': isOpen,\n\t\t\tclassName: 'editor-post-publish-panel__toggle',\n\t\t\tisBusy: isSaving && isPublished,\n\t\t\tvariant: 'primary',\n\t\t\tsize: 'compact',\n\t\t\tonClick: this.createOnClick( onClickToggle ),\n\t\t};\n\t\tconst componentProps = isToggle ? toggleProps : buttonProps;\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<Button\n\t\t\t\t\tref={ this.buttonNode }\n\t\t\t\t\t{ ...componentProps }\n\t\t\t\t\tclassName={ `${ componentProps.className } editor-post-publish-button__button` }\n\t\t\t\t\tsize=\"compact\"\n\t\t\t\t>\n\t\t\t\t\t<PublishButtonLabel />\n\t\t\t\t</Button>\n\t\t\t</>\n\t\t);\n\t}\n}\n\nexport default compose( [\n\twithSelect( ( select ) => {\n\t\tconst {\n\t\t\tisSavingPost,\n\t\t\tisAutosavingPost,\n\t\t\tisEditedPostBeingScheduled,\n\t\t\tgetEditedPostVisibility,\n\t\t\tisCurrentPostPublished,\n\t\t\tisEditedPostSaveable,\n\t\t\tisEditedPostPublishable,\n\t\t\tisPostSavingLocked,\n\t\t\tgetCurrentPost,\n\t\t\tgetCurrentPostType,\n\t\t\tgetCurrentPostId,\n\t\t\thasNonPostEntityChanges,\n\t\t\tisSavingNonPostEntityChanges,\n\t\t\tgetEditedPostAttribute,\n\t\t\tgetPostEdits,\n\t\t\thasPostMetaChanges,\n\t\t} = unlock( select( editorStore ) );\n\t\treturn {\n\t\t\tisSaving: isSavingPost(),\n\t\t\tisAutoSaving: isAutosavingPost(),\n\t\t\tisBeingScheduled: isEditedPostBeingScheduled(),\n\t\t\tvisibility: getEditedPostVisibility(),\n\t\t\tisSaveable: isEditedPostSaveable(),\n\t\t\tisPostSavingLocked: isPostSavingLocked(),\n\t\t\tisPublishable: isEditedPostPublishable(),\n\t\t\tisPublished: isCurrentPostPublished(),\n\t\t\thasPublishAction:\n\t\t\t\tgetCurrentPost()._links?.[ 'wp:action-publish' ] ?? false,\n\t\t\tpostType: getCurrentPostType(),\n\t\t\tpostId: getCurrentPostId(),\n\t\t\tpostStatus: getEditedPostAttribute( 'status' ),\n\t\t\tpostStatusHasChanged: getPostEdits()?.status,\n\t\t\thasNonPostEntityChanges: hasNonPostEntityChanges(),\n\t\t\thasPostMetaChanges: hasPostMetaChanges(),\n\t\t\tisSavingNonPostEntityChanges: isSavingNonPostEntityChanges(),\n\t\t};\n\t} ),\n\twithDispatch( ( dispatch ) => {\n\t\tconst { editPost, savePost } = dispatch( editorStore );\n\t\treturn {\n\t\t\tsavePostStatus: ( status ) => {\n\t\t\t\teditPost( { status }, { undoIgnore: true } );\n\t\t\t\tsavePost();\n\t\t\t},\n\t\t};\n\t} ),\n] )( PostPublishButton );\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["Button","Component","createRef","withSelect","withDispatch","compose","PublishButtonLabel","store","editorStore","jsx","_jsx","Fragment","_Fragment","noop","PostPublishButton","constructor","props","buttonNode","createOnClick","bind","closeEntitiesSavedStates","state","entitiesSavedStatesCallback","componentDidMount","focusOnMount","timeoutID","setTimeout","current","focus","componentWillUnmount","clearTimeout","callback","args","hasNonPostEntityChanges","setEntitiesSavedStatesCallback","setState","savedEntities","postType","postId","some","elt","kind","name","key","render","forceIsDirty","hasPublishAction","isBeingScheduled","isOpen","isPostSavingLocked","isPublishable","isPublished","isSaveable","isSaving","isAutoSaving","isToggle","savePostStatus","onSubmit","onToggle","visibility","isSavingNonPostEntityChanges","postStatus","postStatusHasChanged","isButtonDisabled","isToggleDisabled","publishStatus","onClickButton","onClickToggle","buttonProps","className","isBusy","variant","onClick","toggleProps","size","componentProps","children","ref","select","_getCurrentPost$_link","isSavingPost","isAutosavingPost","isEditedPostBeingScheduled","getEditedPostVisibility","isCurrentPostPublished","isEditedPostSaveable","isEditedPostPublishable","getCurrentPost","getCurrentPostType","getCurrentPostId","getEditedPostAttribute","getPostEdits","_links","status","dispatch","editPost","savePost","undoIgnore"],"sources":["@wordpress/editor/src/components/post-publish-button/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { Button } from '@wordpress/components';\nimport { Component, createRef } from '@wordpress/element';\nimport { withSelect, withDispatch } from '@wordpress/data';\nimport { compose } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport PublishButtonLabel from './label';\nimport { store as editorStore } from '../../store';\n\nconst noop = () => {};\n\nexport class PostPublishButton extends Component {\n\tconstructor( props ) {\n\t\tsuper( props );\n\t\tthis.buttonNode = createRef();\n\n\t\tthis.createOnClick = this.createOnClick.bind( this );\n\t\tthis.closeEntitiesSavedStates =\n\t\t\tthis.closeEntitiesSavedStates.bind( this );\n\n\t\tthis.state = {\n\t\t\tentitiesSavedStatesCallback: false,\n\t\t};\n\t}\n\n\tcomponentDidMount() {\n\t\tif ( this.props.focusOnMount ) {\n\t\t\t// This timeout is necessary to make sure the `useEffect` hook of\n\t\t\t// `useFocusReturn` gets the correct element (the button that opens the\n\t\t\t// PostPublishPanel) otherwise it will get this button.\n\t\t\tthis.timeoutID = setTimeout( () => {\n\t\t\t\tthis.buttonNode.current.focus();\n\t\t\t}, 0 );\n\t\t}\n\t}\n\n\tcomponentWillUnmount() {\n\t\tclearTimeout( this.timeoutID );\n\t}\n\n\tcreateOnClick( callback ) {\n\t\treturn ( ...args ) => {\n\t\t\tconst { hasNonPostEntityChanges, setEntitiesSavedStatesCallback } =\n\t\t\t\tthis.props;\n\t\t\t// If a post with non-post entities is published, but the user\n\t\t\t// elects to not save changes to the non-post entities, those\n\t\t\t// entities will still be dirty when the Publish button is clicked.\n\t\t\t// We also need to check that the `setEntitiesSavedStatesCallback`\n\t\t\t// prop was passed. See https://github.com/WordPress/gutenberg/pull/37383\n\t\t\tif ( hasNonPostEntityChanges && setEntitiesSavedStatesCallback ) {\n\t\t\t\t// The modal for multiple entity saving will open,\n\t\t\t\t// hold the callback for saving/publishing the post\n\t\t\t\t// so that we can call it if the post entity is checked.\n\t\t\t\tthis.setState( {\n\t\t\t\t\tentitiesSavedStatesCallback: () => callback( ...args ),\n\t\t\t\t} );\n\n\t\t\t\t// Open the save panel by setting its callback.\n\t\t\t\t// To set a function on the useState hook, we must set it\n\t\t\t\t// with another function (() => myFunction). Passing the\n\t\t\t\t// function on its own will cause an error when called.\n\t\t\t\tsetEntitiesSavedStatesCallback(\n\t\t\t\t\t() => this.closeEntitiesSavedStates\n\t\t\t\t);\n\t\t\t\treturn noop;\n\t\t\t}\n\n\t\t\treturn callback( ...args );\n\t\t};\n\t}\n\n\tcloseEntitiesSavedStates( savedEntities ) {\n\t\tconst { postType, postId } = this.props;\n\t\tconst { entitiesSavedStatesCallback } = this.state;\n\t\tthis.setState( { entitiesSavedStatesCallback: false }, () => {\n\t\t\tif (\n\t\t\t\tsavedEntities &&\n\t\t\t\tsavedEntities.some(\n\t\t\t\t\t( elt ) =>\n\t\t\t\t\t\telt.kind === 'postType' &&\n\t\t\t\t\t\telt.name === postType &&\n\t\t\t\t\t\telt.key === postId\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\t// The post entity was checked, call the held callback from `createOnClick`.\n\t\t\t\tentitiesSavedStatesCallback();\n\t\t\t}\n\t\t} );\n\t}\n\n\trender() {\n\t\tconst {\n\t\t\tforceIsDirty,\n\t\t\thasPublishAction,\n\t\t\tisBeingScheduled,\n\t\t\tisOpen,\n\t\t\tisPostSavingLocked,\n\t\t\tisPublishable,\n\t\t\tisPublished,\n\t\t\tisSaveable,\n\t\t\tisSaving,\n\t\t\tisAutoSaving,\n\t\t\tisToggle,\n\t\t\tsavePostStatus,\n\t\t\tonSubmit = noop,\n\t\t\tonToggle,\n\t\t\tvisibility,\n\t\t\thasNonPostEntityChanges,\n\t\t\tisSavingNonPostEntityChanges,\n\t\t\tpostStatus,\n\t\t\tpostStatusHasChanged,\n\t\t} = this.props;\n\n\t\tconst isButtonDisabled =\n\t\t\t( isSaving ||\n\t\t\t\t! isSaveable ||\n\t\t\t\tisPostSavingLocked ||\n\t\t\t\t( ! isPublishable && ! forceIsDirty ) ) &&\n\t\t\t( ! hasNonPostEntityChanges || isSavingNonPostEntityChanges );\n\n\t\tconst isToggleDisabled =\n\t\t\t( isPublished ||\n\t\t\t\tisSaving ||\n\t\t\t\t! isSaveable ||\n\t\t\t\t( ! isPublishable && ! forceIsDirty ) ) &&\n\t\t\t( ! hasNonPostEntityChanges || isSavingNonPostEntityChanges );\n\n\t\t// If the new status has not changed explicitely, we derive it from\n\t\t// other factors, like having a publish action, etc.. We need to preserve\n\t\t// this because it affects when to show the pre and post publish panels.\n\t\t// If it has changed though explicitely, we need to respect that.\n\t\tlet publishStatus = 'publish';\n\t\tif ( postStatusHasChanged ) {\n\t\t\tpublishStatus = postStatus;\n\t\t} else if ( ! hasPublishAction ) {\n\t\t\tpublishStatus = 'pending';\n\t\t} else if ( visibility === 'private' ) {\n\t\t\tpublishStatus = 'private';\n\t\t} else if ( isBeingScheduled ) {\n\t\t\tpublishStatus = 'future';\n\t\t}\n\n\t\tconst onClickButton = () => {\n\t\t\tif ( isButtonDisabled ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tonSubmit();\n\t\t\tsavePostStatus( publishStatus );\n\t\t};\n\n\t\t// Callback to open the publish panel.\n\t\tconst onClickToggle = () => {\n\t\t\tif ( isToggleDisabled ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tonToggle();\n\t\t};\n\n\t\tconst buttonProps = {\n\t\t\t'aria-disabled': isButtonDisabled,\n\t\t\tclassName: 'editor-post-publish-button',\n\t\t\tisBusy: ! isAutoSaving && isSaving,\n\t\t\tvariant: 'primary',\n\t\t\tonClick: this.createOnClick( onClickButton ),\n\t\t};\n\n\t\tconst toggleProps = {\n\t\t\t'aria-disabled': isToggleDisabled,\n\t\t\t'aria-expanded': isOpen,\n\t\t\tclassName: 'editor-post-publish-panel__toggle',\n\t\t\tisBusy: isSaving && isPublished,\n\t\t\tvariant: 'primary',\n\t\t\tsize: 'compact',\n\t\t\tonClick: this.createOnClick( onClickToggle ),\n\t\t};\n\t\tconst componentProps = isToggle ? toggleProps : buttonProps;\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<Button\n\t\t\t\t\tref={ this.buttonNode }\n\t\t\t\t\t{ ...componentProps }\n\t\t\t\t\tclassName={ `${ componentProps.className } editor-post-publish-button__button` }\n\t\t\t\t\tsize=\"compact\"\n\t\t\t\t>\n\t\t\t\t\t<PublishButtonLabel />\n\t\t\t\t</Button>\n\t\t\t</>\n\t\t);\n\t}\n}\n\nexport default compose( [\n\twithSelect( ( select ) => {\n\t\tconst {\n\t\t\tisSavingPost,\n\t\t\tisAutosavingPost,\n\t\t\tisEditedPostBeingScheduled,\n\t\t\tgetEditedPostVisibility,\n\t\t\tisCurrentPostPublished,\n\t\t\tisEditedPostSaveable,\n\t\t\tisEditedPostPublishable,\n\t\t\tisPostSavingLocked,\n\t\t\tgetCurrentPost,\n\t\t\tgetCurrentPostType,\n\t\t\tgetCurrentPostId,\n\t\t\thasNonPostEntityChanges,\n\t\t\tisSavingNonPostEntityChanges,\n\t\t\tgetEditedPostAttribute,\n\t\t\tgetPostEdits,\n\t\t} = select( editorStore );\n\t\treturn {\n\t\t\tisSaving: isSavingPost(),\n\t\t\tisAutoSaving: isAutosavingPost(),\n\t\t\tisBeingScheduled: isEditedPostBeingScheduled(),\n\t\t\tvisibility: getEditedPostVisibility(),\n\t\t\tisSaveable: isEditedPostSaveable(),\n\t\t\tisPostSavingLocked: isPostSavingLocked(),\n\t\t\tisPublishable: isEditedPostPublishable(),\n\t\t\tisPublished: isCurrentPostPublished(),\n\t\t\thasPublishAction:\n\t\t\t\tgetCurrentPost()._links?.[ 'wp:action-publish' ] ?? false,\n\t\t\tpostType: getCurrentPostType(),\n\t\t\tpostId: getCurrentPostId(),\n\t\t\tpostStatus: getEditedPostAttribute( 'status' ),\n\t\t\tpostStatusHasChanged: getPostEdits()?.status,\n\t\t\thasNonPostEntityChanges: hasNonPostEntityChanges(),\n\t\t\tisSavingNonPostEntityChanges: isSavingNonPostEntityChanges(),\n\t\t};\n\t} ),\n\twithDispatch( ( dispatch ) => {\n\t\tconst { editPost, savePost } = dispatch( editorStore );\n\t\treturn {\n\t\t\tsavePostStatus: ( status ) => {\n\t\t\t\teditPost( { status }, { undoIgnore: true } );\n\t\t\t\tsavePost();\n\t\t\t},\n\t\t};\n\t} ),\n] )( PostPublishButton );\n"],"mappings":"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","ignoreList":[]}
|