@wordpress/editor 14.14.0 → 14.15.0
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/CHANGELOG.md +2 -0
- package/LICENSE.md +1 -1
- package/README.md +1 -0
- package/build/components/commands/index.js +28 -0
- package/build/components/commands/index.js.map +1 -1
- package/build/components/document-bar/index.js +2 -1
- package/build/components/document-bar/index.js.map +1 -1
- package/build/components/document-tools/index.js +3 -6
- package/build/components/document-tools/index.js.map +1 -1
- package/build/components/editor-help/intro-to-blocks.native.js +1 -1
- package/build/components/editor-help/intro-to-blocks.native.js.map +1 -1
- package/build/components/entities-saved-states/index.js +2 -1
- package/build/components/entities-saved-states/index.js.map +1 -1
- package/build/components/error-boundary/index.native.js +1 -1
- package/build/components/error-boundary/index.native.js.map +1 -1
- package/build/components/more-menu/index.js +0 -1
- package/build/components/more-menu/index.js.map +1 -1
- package/build/components/post-actions/actions.js +9 -4
- package/build/components/post-actions/actions.js.map +1 -1
- package/build/components/post-actions/index.js +17 -14
- package/build/components/post-actions/index.js.map +1 -1
- package/build/components/post-actions/set-as-homepage.js +23 -34
- package/build/components/post-actions/set-as-homepage.js.map +1 -1
- package/build/components/post-actions/set-as-posts-page.js +154 -0
- package/build/components/post-actions/set-as-posts-page.js.map +1 -0
- package/build/components/post-card-panel/index.js +12 -5
- package/build/components/post-card-panel/index.js.map +1 -1
- package/build/components/post-publish-panel/maybe-upload-media.js +1 -1
- package/build/components/post-publish-panel/maybe-upload-media.js.map +1 -1
- package/build/components/preferences-modal/index.js +2 -4
- package/build/components/preferences-modal/index.js.map +1 -1
- package/build/components/preview-dropdown/index.js +0 -1
- package/build/components/preview-dropdown/index.js.map +1 -1
- package/build/components/provider/disable-non-page-content-blocks.js +65 -13
- package/build/components/provider/disable-non-page-content-blocks.js.map +1 -1
- package/build/components/provider/index.js +9 -13
- package/build/components/provider/index.js.map +1 -1
- package/build/components/provider/use-block-editor-settings.js +3 -1
- package/build/components/provider/use-block-editor-settings.js.map +1 -1
- package/build/components/start-page-options/index.js +20 -107
- package/build/components/start-page-options/index.js.map +1 -1
- package/build/components/template-part-menu-items/index.js +2 -10
- package/build/components/template-part-menu-items/index.js.map +1 -1
- package/build/store/actions.js +0 -2
- package/build/store/actions.js.map +1 -1
- package/build/store/constants.js +1 -3
- package/build/store/constants.js.map +1 -1
- package/build/store/private-actions.js +1 -1
- package/build/store/private-actions.js.map +1 -1
- package/build/store/utils/notice-builder.js +3 -8
- package/build/store/utils/notice-builder.js.map +1 -1
- package/build/utils/get-item-title.js +32 -0
- package/build/utils/get-item-title.js.map +1 -0
- package/build/utils/media-sideload/index.js +21 -0
- package/build/utils/media-sideload/index.js.map +1 -0
- package/build/utils/media-sideload/index.native.js +8 -0
- package/build/utils/media-sideload/index.native.js.map +1 -0
- package/build/utils/media-upload/index.js +5 -2
- package/build/utils/media-upload/index.js.map +1 -1
- package/build-module/components/commands/index.js +28 -0
- package/build-module/components/commands/index.js.map +1 -1
- package/build-module/components/document-bar/index.js +2 -1
- package/build-module/components/document-bar/index.js.map +1 -1
- package/build-module/components/document-tools/index.js +4 -7
- package/build-module/components/document-tools/index.js.map +1 -1
- package/build-module/components/editor-help/intro-to-blocks.native.js +1 -1
- package/build-module/components/editor-help/intro-to-blocks.native.js.map +1 -1
- package/build-module/components/entities-saved-states/index.js +2 -1
- package/build-module/components/entities-saved-states/index.js.map +1 -1
- package/build-module/components/error-boundary/index.native.js +2 -2
- package/build-module/components/error-boundary/index.native.js.map +1 -1
- package/build-module/components/more-menu/index.js +0 -1
- package/build-module/components/more-menu/index.js.map +1 -1
- package/build-module/components/post-actions/actions.js +9 -4
- package/build-module/components/post-actions/actions.js.map +1 -1
- package/build-module/components/post-actions/index.js +18 -15
- package/build-module/components/post-actions/index.js.map +1 -1
- package/build-module/components/post-actions/set-as-homepage.js +22 -33
- package/build-module/components/post-actions/set-as-homepage.js.map +1 -1
- package/build-module/components/post-actions/set-as-posts-page.js +146 -0
- package/build-module/components/post-actions/set-as-posts-page.js.map +1 -0
- package/build-module/components/post-card-panel/index.js +11 -6
- package/build-module/components/post-card-panel/index.js.map +1 -1
- package/build-module/components/post-publish-panel/maybe-upload-media.js +2 -2
- package/build-module/components/post-publish-panel/maybe-upload-media.js.map +1 -1
- package/build-module/components/preferences-modal/index.js +2 -4
- package/build-module/components/preferences-modal/index.js.map +1 -1
- package/build-module/components/preview-dropdown/index.js +0 -1
- package/build-module/components/preview-dropdown/index.js.map +1 -1
- package/build-module/components/provider/disable-non-page-content-blocks.js +65 -13
- package/build-module/components/provider/disable-non-page-content-blocks.js.map +1 -1
- package/build-module/components/provider/index.js +10 -14
- package/build-module/components/provider/index.js.map +1 -1
- package/build-module/components/provider/use-block-editor-settings.js +3 -1
- package/build-module/components/provider/use-block-editor-settings.js.map +1 -1
- package/build-module/components/start-page-options/index.js +21 -107
- package/build-module/components/start-page-options/index.js.map +1 -1
- package/build-module/components/template-part-menu-items/index.js +2 -10
- package/build-module/components/template-part-menu-items/index.js.map +1 -1
- package/build-module/store/actions.js +0 -2
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/constants.js +0 -2
- package/build-module/store/constants.js.map +1 -1
- package/build-module/store/private-actions.js +1 -1
- package/build-module/store/private-actions.js.map +1 -1
- package/build-module/store/utils/notice-builder.js +3 -8
- package/build-module/store/utils/notice-builder.js.map +1 -1
- package/build-module/utils/get-item-title.js +26 -0
- package/build-module/utils/get-item-title.js.map +1 -0
- package/build-module/utils/media-sideload/index.js +14 -0
- package/build-module/utils/media-sideload/index.js.map +1 -0
- package/build-module/utils/media-sideload/index.native.js +2 -0
- package/build-module/utils/media-sideload/index.native.js.map +1 -0
- package/build-module/utils/media-upload/index.js +5 -2
- package/build-module/utils/media-upload/index.js.map +1 -1
- package/build-style/style-rtl.css +5 -25
- package/build-style/style.css +5 -25
- package/build-types/components/commands/index.d.ts.map +1 -1
- package/build-types/components/document-bar/index.d.ts.map +1 -1
- package/build-types/components/document-tools/index.d.ts.map +1 -1
- package/build-types/components/entities-saved-states/index.d.ts.map +1 -1
- package/build-types/components/more-menu/index.d.ts.map +1 -1
- package/build-types/components/post-actions/actions.d.ts.map +1 -1
- package/build-types/components/post-actions/index.d.ts.map +1 -1
- package/build-types/components/post-actions/set-as-homepage.d.ts.map +1 -1
- package/build-types/components/post-actions/set-as-posts-page.d.ts +10 -0
- package/build-types/components/post-actions/set-as-posts-page.d.ts.map +1 -0
- package/build-types/components/post-card-panel/index.d.ts.map +1 -1
- package/build-types/components/preferences-modal/index.d.ts.map +1 -1
- package/build-types/components/preview-dropdown/index.d.ts.map +1 -1
- package/build-types/components/provider/disable-non-page-content-blocks.d.ts.map +1 -1
- package/build-types/components/provider/index.d.ts.map +1 -1
- package/build-types/components/provider/use-block-editor-settings.d.ts.map +1 -1
- package/build-types/components/start-page-options/index.d.ts +1 -2
- package/build-types/components/start-page-options/index.d.ts.map +1 -1
- package/build-types/store/actions.d.ts.map +1 -1
- package/build-types/store/constants.d.ts +0 -2
- package/build-types/store/constants.d.ts.map +1 -1
- package/build-types/store/private-actions.d.ts.map +1 -1
- package/build-types/store/utils/notice-builder.d.ts.map +1 -1
- package/build-types/utils/get-item-title.d.ts +10 -0
- package/build-types/utils/get-item-title.d.ts.map +1 -0
- package/build-types/utils/media-sideload/index.d.ts +3 -0
- package/build-types/utils/media-sideload/index.d.ts.map +1 -0
- package/build-types/utils/media-upload/index.d.ts +3 -1
- package/build-types/utils/media-upload/index.d.ts.map +1 -1
- package/package.json +37 -37
- package/src/components/commands/index.js +29 -0
- package/src/components/document-bar/index.js +2 -1
- package/src/components/document-tools/index.js +3 -6
- package/src/components/document-tools/style.scss +0 -6
- package/src/components/editor-help/intro-to-blocks.native.js +1 -1
- package/src/components/entities-saved-states/index.js +5 -1
- package/src/components/error-boundary/index.native.js +2 -2
- package/src/components/more-menu/index.js +0 -1
- package/src/components/post-actions/actions.js +12 -4
- package/src/components/post-actions/index.js +19 -17
- package/src/components/post-actions/set-as-homepage.js +29 -45
- package/src/components/post-actions/set-as-posts-page.js +164 -0
- package/src/components/post-card-panel/index.js +8 -6
- package/src/components/post-card-panel/style.scss +4 -13
- package/src/components/post-publish-panel/maybe-upload-media.js +2 -2
- package/src/components/preferences-modal/index.js +8 -13
- package/src/components/preview-dropdown/index.js +0 -1
- package/src/components/provider/disable-non-page-content-blocks.js +64 -13
- package/src/components/provider/index.js +13 -27
- package/src/components/provider/use-block-editor-settings.js +3 -0
- package/src/components/start-page-options/index.js +28 -119
- package/src/components/template-part-menu-items/index.js +2 -11
- package/src/store/actions.js +0 -2
- package/src/store/constants.ts +0 -2
- package/src/store/private-actions.js +1 -1
- package/src/store/utils/notice-builder.js +3 -8
- package/src/store/utils/test/notice-builder.js +3 -4
- package/src/utils/get-item-title.js +25 -0
- package/src/utils/media-sideload/index.js +13 -0
- package/src/utils/media-sideload/index.native.js +1 -0
- package/src/utils/media-upload/index.js +4 -1
- package/tsconfig.json +1 -4
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useRegistry","useSelect","useState","useMemo","__","privateApis","componentsPrivateApis","Button","Modal","moreVertical","store","coreStore","unlock","usePostActions","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","Menu","kebabCase","useEditedEntityRecordsWithPermissions","postType","postIds","items","permissions","select","getEditedEntityRecord","getEntityRecordPermissions","map","postId","item","index","PostActions","onActionPerformed","activeModalAction","setActiveModalAction","_postIds","Array","isArray","itemsWithPermissions","allActions","actions","filter","action","isEligible","some","itemWithPermissions","length","supportsBulk","children","trigger","size","icon","label","disabled","accessibleWhenDisabled","className","placement","ActionsDropdownMenuGroup","ActionModal","closeModal","DropdownMenuItemTrigger","onClick","Item","ItemLabel","title","modalHeader","__experimentalHideHeader","hideModalHeader","onRequestClose","focusOnMount","overlayClassName","id","RenderModal","registry","Group","callback"],"sources":["@wordpress/editor/src/components/post-actions/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useRegistry, useSelect } from '@wordpress/data';\nimport { useState, useMemo } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tprivateApis as componentsPrivateApis,\n\tButton,\n\tModal,\n} from '@wordpress/components';\nimport { moreVertical } from '@wordpress/icons';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport { usePostActions } from './actions';\n\nconst { Menu, kebabCase } = unlock( componentsPrivateApis );\n\nfunction useEditedEntityRecordsWithPermissions( postType, postIds ) {\n\tconst { items, permissions } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEditedEntityRecord, getEntityRecordPermissions } =\n\t\t\t\tunlock( select( coreStore ) );\n\t\t\treturn {\n\t\t\t\titems: postIds.map( ( postId ) =>\n\t\t\t\t\tgetEditedEntityRecord( 'postType', postType, postId )\n\t\t\t\t),\n\t\t\t\tpermissions: postIds.map( ( postId ) =>\n\t\t\t\t\tgetEntityRecordPermissions( 'postType', postType, postId )\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ postIds, postType ]\n\t);\n\n\treturn useMemo( () => {\n\t\treturn items.map( ( item, index ) => ( {\n\t\t\t...item,\n\t\t\tpermissions: permissions[ index ],\n\t\t} ) );\n\t}, [ items, permissions ] );\n}\n\nexport default function PostActions( { postType, postId, onActionPerformed } ) {\n\tconst [ activeModalAction, setActiveModalAction ] = useState( null );\n\tconst _postIds = useMemo( () => {\n\t\tif ( Array.isArray( postId ) ) {\n\t\t\treturn postId;\n\t\t}\n\t\treturn postId ? [ postId ] : [];\n\t}, [ postId ] );\n\n\tconst itemsWithPermissions = useEditedEntityRecordsWithPermissions(\n\t\tpostType,\n\t\t_postIds\n\t);\n\tconst allActions = usePostActions( { postType, onActionPerformed } );\n\n\tconst actions = useMemo( () => {\n\t\treturn allActions.filter( ( action ) => {\n\t\t\treturn (\n\t\t\t\t( ! action.isEligible ||\n\t\t\t\t\titemsWithPermissions.some( ( itemWithPermissions ) =>\n\t\t\t\t\t\taction.isEligible( itemWithPermissions )\n\t\t\t\t\t) ) &&\n\t\t\t\t( itemsWithPermissions.length < 2 || action.supportsBulk )\n\t\t\t);\n\t\t} );\n\t}, [ allActions, itemsWithPermissions ] );\n\n\treturn (\n\t\t<>\n\t\t\t<Menu\n\t\t\t\ttrigger={\n\t\t\t\t\t<Button\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\t\tlabel={ __( 'Actions' ) }\n\t\t\t\t\t\tdisabled={ ! actions.length }\n\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t\tclassName=\"editor-all-actions-button\"\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t\tplacement=\"bottom-end\"\n\t\t\t>\n\t\t\t\t<ActionsDropdownMenuGroup\n\t\t\t\t\tactions={ actions }\n\t\t\t\t\titems={ itemsWithPermissions }\n\t\t\t\t\tsetActiveModalAction={ setActiveModalAction }\n\t\t\t\t/>\n\t\t\t</Menu>\n\t\t\t{ !! activeModalAction && (\n\t\t\t\t<ActionModal\n\t\t\t\t\taction={ activeModalAction }\n\t\t\t\t\titems={ itemsWithPermissions }\n\t\t\t\t\tcloseModal={ () => setActiveModalAction( null ) }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\n// From now on all the functions on this file are copied as from the dataviews packages,\n// The editor packages should not be using the dataviews packages directly,\n// and the dataviews package should not be using the editor packages directly,\n// so duplicating the code here seems like the least bad option.\n\nfunction DropdownMenuItemTrigger( { action, onClick, items } ) {\n\tconst label =\n\t\ttypeof action.label === 'string' ? action.label : action.label( items );\n\treturn (\n\t\t<Menu.Item onClick={ onClick }>\n\t\t\t<Menu.ItemLabel>{ label }</Menu.ItemLabel>\n\t\t</Menu.Item>\n\t);\n}\n\nexport function ActionModal( { action, items, closeModal } ) {\n\tconst label =\n\t\ttypeof action.label === 'string' ? action.label : action.label( items );\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ action.modalHeader || label }\n\t\t\t__experimentalHideHeader={ !! action.hideModalHeader }\n\t\t\tonRequestClose={ closeModal ?? ( () => {} ) }\n\t\t\tfocusOnMount=\"firstContentElement\"\n\t\t\tsize=\"medium\"\n\t\t\toverlayClassName={ `editor-action-modal editor-action-modal__${ kebabCase(\n\t\t\t\taction.id\n\t\t\t) }` }\n\t\t>\n\t\t\t<action.RenderModal items={ items } closeModal={ closeModal } />\n\t\t</Modal>\n\t);\n}\n\nfunction ActionsDropdownMenuGroup( { actions, items, setActiveModalAction } ) {\n\tconst registry = useRegistry();\n\treturn (\n\t\t<Menu.Group>\n\t\t\t{ actions.map( ( action ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<DropdownMenuItemTrigger\n\t\t\t\t\t\tkey={ action.id }\n\t\t\t\t\t\taction={ action }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tif ( 'RenderModal' in action ) {\n\t\t\t\t\t\t\t\tsetActiveModalAction( action );\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\taction.callback( items, { registry } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\titems={ items }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</Menu.Group>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["useRegistry","useSelect","useState","useMemo","__","privateApis","componentsPrivateApis","Button","Modal","moreVertical","store","coreStore","unlock","usePostActions","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","Menu","kebabCase","useEditedEntityRecordsWithPermissions","postType","postIds","items","permissions","select","getEditedEntityRecord","getEntityRecordPermissions","map","postId","item","index","PostActions","onActionPerformed","activeModalAction","setActiveModalAction","_postIds","Array","isArray","itemsWithPermissions","allActions","actions","filter","action","isEligible","some","itemWithPermissions","length","supportsBulk","children","placement","TriggerButton","render","size","icon","label","disabled","accessibleWhenDisabled","className","Popover","ActionsDropdownMenuGroup","ActionModal","closeModal","DropdownMenuItemTrigger","onClick","Item","ItemLabel","title","modalHeader","__experimentalHideHeader","hideModalHeader","onRequestClose","focusOnMount","overlayClassName","id","RenderModal","registry","Group","callback"],"sources":["@wordpress/editor/src/components/post-actions/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useRegistry, useSelect } from '@wordpress/data';\nimport { useState, useMemo } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tprivateApis as componentsPrivateApis,\n\tButton,\n\tModal,\n} from '@wordpress/components';\nimport { moreVertical } from '@wordpress/icons';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport { usePostActions } from './actions';\n\nconst { Menu, kebabCase } = unlock( componentsPrivateApis );\n\nfunction useEditedEntityRecordsWithPermissions( postType, postIds ) {\n\tconst { items, permissions } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEditedEntityRecord, getEntityRecordPermissions } =\n\t\t\t\tunlock( select( coreStore ) );\n\t\t\treturn {\n\t\t\t\titems: postIds.map( ( postId ) =>\n\t\t\t\t\tgetEditedEntityRecord( 'postType', postType, postId )\n\t\t\t\t),\n\t\t\t\tpermissions: postIds.map( ( postId ) =>\n\t\t\t\t\tgetEntityRecordPermissions( 'postType', postType, postId )\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ postIds, postType ]\n\t);\n\n\treturn useMemo( () => {\n\t\treturn items.map( ( item, index ) => ( {\n\t\t\t...item,\n\t\t\tpermissions: permissions[ index ],\n\t\t} ) );\n\t}, [ items, permissions ] );\n}\n\nexport default function PostActions( { postType, postId, onActionPerformed } ) {\n\tconst [ activeModalAction, setActiveModalAction ] = useState( null );\n\tconst _postIds = useMemo( () => {\n\t\tif ( Array.isArray( postId ) ) {\n\t\t\treturn postId;\n\t\t}\n\t\treturn postId ? [ postId ] : [];\n\t}, [ postId ] );\n\n\tconst itemsWithPermissions = useEditedEntityRecordsWithPermissions(\n\t\tpostType,\n\t\t_postIds\n\t);\n\tconst allActions = usePostActions( { postType, onActionPerformed } );\n\n\tconst actions = useMemo( () => {\n\t\treturn allActions.filter( ( action ) => {\n\t\t\treturn (\n\t\t\t\t( ! action.isEligible ||\n\t\t\t\t\titemsWithPermissions.some( ( itemWithPermissions ) =>\n\t\t\t\t\t\taction.isEligible( itemWithPermissions )\n\t\t\t\t\t) ) &&\n\t\t\t\t( itemsWithPermissions.length < 2 || action.supportsBulk )\n\t\t\t);\n\t\t} );\n\t}, [ allActions, itemsWithPermissions ] );\n\n\treturn (\n\t\t<>\n\t\t\t<Menu placement=\"bottom-end\">\n\t\t\t\t<Menu.TriggerButton\n\t\t\t\t\trender={\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\t\t\tlabel={ __( 'Actions' ) }\n\t\t\t\t\t\t\tdisabled={ ! actions.length }\n\t\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t\t\tclassName=\"editor-all-actions-button\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t\t<Menu.Popover>\n\t\t\t\t\t<ActionsDropdownMenuGroup\n\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\titems={ itemsWithPermissions }\n\t\t\t\t\t\tsetActiveModalAction={ setActiveModalAction }\n\t\t\t\t\t/>\n\t\t\t\t</Menu.Popover>\n\t\t\t</Menu>\n\t\t\t{ !! activeModalAction && (\n\t\t\t\t<ActionModal\n\t\t\t\t\taction={ activeModalAction }\n\t\t\t\t\titems={ itemsWithPermissions }\n\t\t\t\t\tcloseModal={ () => setActiveModalAction( null ) }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\n// From now on all the functions on this file are copied as from the dataviews packages,\n// The editor packages should not be using the dataviews packages directly,\n// and the dataviews package should not be using the editor packages directly,\n// so duplicating the code here seems like the least bad option.\n\nfunction DropdownMenuItemTrigger( { action, onClick, items } ) {\n\tconst label =\n\t\ttypeof action.label === 'string' ? action.label : action.label( items );\n\treturn (\n\t\t<Menu.Item onClick={ onClick }>\n\t\t\t<Menu.ItemLabel>{ label }</Menu.ItemLabel>\n\t\t</Menu.Item>\n\t);\n}\n\nexport function ActionModal( { action, items, closeModal } ) {\n\tconst label =\n\t\ttypeof action.label === 'string' ? action.label : action.label( items );\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ action.modalHeader || label }\n\t\t\t__experimentalHideHeader={ !! action.hideModalHeader }\n\t\t\tonRequestClose={ closeModal ?? ( () => {} ) }\n\t\t\tfocusOnMount=\"firstContentElement\"\n\t\t\tsize=\"medium\"\n\t\t\toverlayClassName={ `editor-action-modal editor-action-modal__${ kebabCase(\n\t\t\t\taction.id\n\t\t\t) }` }\n\t\t>\n\t\t\t<action.RenderModal items={ items } closeModal={ closeModal } />\n\t\t</Modal>\n\t);\n}\n\nfunction ActionsDropdownMenuGroup( { actions, items, setActiveModalAction } ) {\n\tconst registry = useRegistry();\n\treturn (\n\t\t<Menu.Group>\n\t\t\t{ actions.map( ( action ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<DropdownMenuItemTrigger\n\t\t\t\t\t\tkey={ action.id }\n\t\t\t\t\t\taction={ action }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tif ( 'RenderModal' in action ) {\n\t\t\t\t\t\t\t\tsetActiveModalAction( action );\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\taction.callback( items, { registry } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\titems={ items }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</Menu.Group>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -7,20 +7,12 @@ import { Button, __experimentalText as Text, __experimentalHStack as HStack, __e
|
|
|
7
7
|
import { useDispatch, useSelect } from '@wordpress/data';
|
|
8
8
|
import { store as coreStore } from '@wordpress/core-data';
|
|
9
9
|
import { store as noticesStore } from '@wordpress/notices';
|
|
10
|
-
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Internal dependencies
|
|
13
|
+
*/
|
|
14
|
+
import { getItemTitle } from '../../utils/get-item-title';
|
|
11
15
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
12
|
-
const getItemTitle = item => {
|
|
13
|
-
if (typeof item.title === 'string') {
|
|
14
|
-
return decodeEntities(item.title);
|
|
15
|
-
}
|
|
16
|
-
if (item.title && 'rendered' in item.title) {
|
|
17
|
-
return decodeEntities(item.title.rendered);
|
|
18
|
-
}
|
|
19
|
-
if (item.title && 'raw' in item.title) {
|
|
20
|
-
return decodeEntities(item.title.raw);
|
|
21
|
-
}
|
|
22
|
-
return '';
|
|
23
|
-
};
|
|
24
16
|
const SetAsHomepageModal = ({
|
|
25
17
|
items,
|
|
26
18
|
closeModal
|
|
@@ -44,9 +36,7 @@ const SetAsHomepageModal = ({
|
|
|
44
36
|
isSaving: isSavingEntityRecord('root', 'site')
|
|
45
37
|
};
|
|
46
38
|
});
|
|
47
|
-
const currentHomePageTitle = currentHomePage ? getItemTitle(currentHomePage) : '';
|
|
48
39
|
const {
|
|
49
|
-
saveEditedEntityRecord,
|
|
50
40
|
saveEntityRecord
|
|
51
41
|
} = useDispatch(coreStore);
|
|
52
42
|
const {
|
|
@@ -56,25 +46,15 @@ const SetAsHomepageModal = ({
|
|
|
56
46
|
async function onSetPageAsHomepage(event) {
|
|
57
47
|
event.preventDefault();
|
|
58
48
|
try {
|
|
59
|
-
// Save new home page settings.
|
|
60
|
-
await saveEditedEntityRecord('root', 'site', undefined, {
|
|
61
|
-
page_on_front: item.id,
|
|
62
|
-
show_on_front: 'page'
|
|
63
|
-
});
|
|
64
|
-
|
|
65
|
-
// This second call to a save function is a workaround for a bug in
|
|
66
|
-
// `saveEditedEntityRecord`. This forces the root site settings to be updated.
|
|
67
|
-
// See https://github.com/WordPress/gutenberg/issues/67161.
|
|
68
49
|
await saveEntityRecord('root', 'site', {
|
|
69
50
|
page_on_front: item.id,
|
|
70
51
|
show_on_front: 'page'
|
|
71
52
|
});
|
|
72
|
-
createSuccessNotice(__('Homepage updated'), {
|
|
53
|
+
createSuccessNotice(__('Homepage updated.'), {
|
|
73
54
|
type: 'snackbar'
|
|
74
55
|
});
|
|
75
56
|
} catch (error) {
|
|
76
|
-
const
|
|
77
|
-
const errorMessage = typedError.message && typedError.code !== 'unknown_error' ? typedError.message : __('An error occurred while setting the homepage');
|
|
57
|
+
const errorMessage = error.message && error.code !== 'unknown_error' ? error.message : __('An error occurred while setting the homepage.');
|
|
78
58
|
createErrorNotice(errorMessage, {
|
|
79
59
|
type: 'snackbar'
|
|
80
60
|
});
|
|
@@ -82,12 +62,17 @@ const SetAsHomepageModal = ({
|
|
|
82
62
|
closeModal?.();
|
|
83
63
|
}
|
|
84
64
|
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
65
|
+
let modalWarning = '';
|
|
66
|
+
if ('posts' === showOnFront) {
|
|
67
|
+
modalWarning = __('This will replace the current homepage which is set to display latest posts.');
|
|
68
|
+
} else if (currentHomePage) {
|
|
69
|
+
modalWarning = sprintf(
|
|
70
|
+
// translators: %s: title of the current home page.
|
|
71
|
+
__('This will replace the current homepage: "%s"'), getItemTitle(currentHomePage));
|
|
72
|
+
}
|
|
88
73
|
const modalText = sprintf(
|
|
89
74
|
// translators: %1$s: title of the page to be set as the homepage, %2$s: homepage replacement warning message.
|
|
90
|
-
__('Set "%1$s" as the site homepage? %2$s'), pageTitle, modalWarning);
|
|
75
|
+
__('Set "%1$s" as the site homepage? %2$s'), pageTitle, modalWarning).trim();
|
|
91
76
|
|
|
92
77
|
// translators: Button label to confirm setting the specified page as the homepage.
|
|
93
78
|
const modalButtonLabel = __('Set homepage');
|
|
@@ -126,9 +111,13 @@ export const useSetAsHomepageAction = () => {
|
|
|
126
111
|
pageForPosts
|
|
127
112
|
} = useSelect(select => {
|
|
128
113
|
const {
|
|
129
|
-
getEntityRecord
|
|
114
|
+
getEntityRecord,
|
|
115
|
+
canUser
|
|
130
116
|
} = select(coreStore);
|
|
131
|
-
const siteSettings =
|
|
117
|
+
const siteSettings = canUser('read', {
|
|
118
|
+
kind: 'root',
|
|
119
|
+
name: 'site'
|
|
120
|
+
}) ? getEntityRecord('root', 'site') : undefined;
|
|
132
121
|
return {
|
|
133
122
|
pageOnFront: siteSettings?.page_on_front,
|
|
134
123
|
pageForPosts: siteSettings?.page_for_posts
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["__","sprintf","useMemo","Button","__experimentalText","Text","__experimentalHStack","HStack","__experimentalVStack","VStack","useDispatch","useSelect","store","coreStore","noticesStore","decodeEntities","jsx","_jsx","jsxs","_jsxs","getItemTitle","item","title","rendered","raw","SetAsHomepageModal","items","closeModal","pageTitle","showOnFront","currentHomePage","isSaving","select","getEntityRecord","isSavingEntityRecord","siteSettings","currentHomePageItem","page_on_front","show_on_front","currentHomePageTitle","saveEditedEntityRecord","saveEntityRecord","createSuccessNotice","createErrorNotice","onSetPageAsHomepage","event","preventDefault","undefined","id","type","error","typedError","errorMessage","message","code","modalWarning","modalText","modalButtonLabel","onSubmit","children","spacing","justify","__next40pxDefaultSize","variant","onClick","disabled","accessibleWhenDisabled","useSetAsHomepageAction","pageOnFront","pageForPosts","page_for_posts","label","isEligible","post","status","RenderModal"],"sources":["@wordpress/editor/src/components/post-actions/set-as-homepage.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useMemo } from '@wordpress/element';\nimport {\n\tButton,\n\t__experimentalText as Text,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { decodeEntities } from '@wordpress/html-entities';\n\nconst getItemTitle = ( item ) => {\n\tif ( typeof item.title === 'string' ) {\n\t\treturn decodeEntities( item.title );\n\t}\n\tif ( item.title && 'rendered' in item.title ) {\n\t\treturn decodeEntities( item.title.rendered );\n\t}\n\tif ( item.title && 'raw' in item.title ) {\n\t\treturn decodeEntities( item.title.raw );\n\t}\n\treturn '';\n};\n\nconst SetAsHomepageModal = ( { items, closeModal } ) => {\n\tconst [ item ] = items;\n\tconst pageTitle = getItemTitle( item );\n\tconst { showOnFront, currentHomePage, isSaving } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEntityRecord, isSavingEntityRecord } =\n\t\t\t\tselect( coreStore );\n\t\t\tconst siteSettings = getEntityRecord( 'root', 'site' );\n\t\t\tconst currentHomePageItem = getEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\t'page',\n\t\t\t\tsiteSettings?.page_on_front\n\t\t\t);\n\t\t\treturn {\n\t\t\t\tshowOnFront: siteSettings?.show_on_front,\n\t\t\t\tcurrentHomePage: currentHomePageItem,\n\t\t\t\tisSaving: isSavingEntityRecord( 'root', 'site' ),\n\t\t\t};\n\t\t}\n\t);\n\tconst currentHomePageTitle = currentHomePage\n\t\t? getItemTitle( currentHomePage )\n\t\t: '';\n\n\tconst { saveEditedEntityRecord, saveEntityRecord } =\n\t\tuseDispatch( coreStore );\n\tconst { createSuccessNotice, createErrorNotice } =\n\t\tuseDispatch( noticesStore );\n\n\tasync function onSetPageAsHomepage( event ) {\n\t\tevent.preventDefault();\n\n\t\ttry {\n\t\t\t// Save new home page settings.\n\t\t\tawait saveEditedEntityRecord( 'root', 'site', undefined, {\n\t\t\t\tpage_on_front: item.id,\n\t\t\t\tshow_on_front: 'page',\n\t\t\t} );\n\n\t\t\t// This second call to a save function is a workaround for a bug in\n\t\t\t// `saveEditedEntityRecord`. This forces the root site settings to be updated.\n\t\t\t// See https://github.com/WordPress/gutenberg/issues/67161.\n\t\t\tawait saveEntityRecord( 'root', 'site', {\n\t\t\t\tpage_on_front: item.id,\n\t\t\t\tshow_on_front: 'page',\n\t\t\t} );\n\n\t\t\tcreateSuccessNotice( __( 'Homepage updated' ), {\n\t\t\t\ttype: 'snackbar',\n\t\t\t} );\n\t\t} catch ( error ) {\n\t\t\tconst typedError = error;\n\t\t\tconst errorMessage =\n\t\t\t\ttypedError.message && typedError.code !== 'unknown_error'\n\t\t\t\t\t? typedError.message\n\t\t\t\t\t: __( 'An error occurred while setting the homepage' );\n\t\t\tcreateErrorNotice( errorMessage, { type: 'snackbar' } );\n\t\t} finally {\n\t\t\tcloseModal?.();\n\t\t}\n\t}\n\n\tconst modalWarning =\n\t\t'posts' === showOnFront\n\t\t\t? __(\n\t\t\t\t\t'This will replace the current homepage which is set to display latest posts.'\n\t\t\t )\n\t\t\t: sprintf(\n\t\t\t\t\t// translators: %s: title of the current home page.\n\t\t\t\t\t__( 'This will replace the current homepage: \"%s\"' ),\n\t\t\t\t\tcurrentHomePageTitle\n\t\t\t );\n\n\tconst modalText = sprintf(\n\t\t// translators: %1$s: title of the page to be set as the homepage, %2$s: homepage replacement warning message.\n\t\t__( 'Set \"%1$s\" as the site homepage? %2$s' ),\n\t\tpageTitle,\n\t\tmodalWarning\n\t);\n\n\t// translators: Button label to confirm setting the specified page as the homepage.\n\tconst modalButtonLabel = __( 'Set homepage' );\n\n\treturn (\n\t\t<form onSubmit={ onSetPageAsHomepage }>\n\t\t\t<VStack spacing=\"5\">\n\t\t\t\t<Text>{ modalText }</Text>\n\t\t\t\t<HStack justify=\"right\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tcloseModal?.();\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tdisabled={ isSaving }\n\t\t\t\t\t\taccessibleWhenDisabled\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\t__next40pxDefaultSize\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\tdisabled={ isSaving }\n\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t>\n\t\t\t\t\t\t{ modalButtonLabel }\n\t\t\t\t\t</Button>\n\t\t\t\t</HStack>\n\t\t\t</VStack>\n\t\t</form>\n\t);\n};\n\nexport const useSetAsHomepageAction = () => {\n\tconst { pageOnFront, pageForPosts } = useSelect( ( select ) => {\n\t\tconst { getEntityRecord } = select( coreStore );\n\t\tconst siteSettings = getEntityRecord( 'root', 'site' );\n\t\treturn {\n\t\t\tpageOnFront: siteSettings?.page_on_front,\n\t\t\tpageForPosts: siteSettings?.page_for_posts,\n\t\t};\n\t} );\n\n\treturn useMemo(\n\t\t() => ( {\n\t\t\tid: 'set-as-homepage',\n\t\t\tlabel: __( 'Set as homepage' ),\n\t\t\tisEligible( post ) {\n\t\t\t\tif ( post.status !== 'publish' ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tif ( post.type !== 'page' ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t// Don't show the action if the page is already set as the homepage.\n\t\t\t\tif ( pageOnFront === post.id ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t// Don't show the action if the page is already set as the page for posts.\n\t\t\t\tif ( pageForPosts === post.id ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\tRenderModal: SetAsHomepageModal,\n\t\t} ),\n\t\t[ pageForPosts, pageOnFront ]\n\t);\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["__","sprintf","useMemo","Button","__experimentalText","Text","__experimentalHStack","HStack","__experimentalVStack","VStack","useDispatch","useSelect","store","coreStore","noticesStore","getItemTitle","jsx","_jsx","jsxs","_jsxs","SetAsHomepageModal","items","closeModal","item","pageTitle","showOnFront","currentHomePage","isSaving","select","getEntityRecord","isSavingEntityRecord","siteSettings","currentHomePageItem","page_on_front","show_on_front","saveEntityRecord","createSuccessNotice","createErrorNotice","onSetPageAsHomepage","event","preventDefault","id","type","error","errorMessage","message","code","modalWarning","modalText","trim","modalButtonLabel","onSubmit","children","spacing","justify","__next40pxDefaultSize","variant","onClick","disabled","accessibleWhenDisabled","useSetAsHomepageAction","pageOnFront","pageForPosts","canUser","kind","name","undefined","page_for_posts","label","isEligible","post","status","RenderModal"],"sources":["@wordpress/editor/src/components/post-actions/set-as-homepage.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useMemo } from '@wordpress/element';\nimport {\n\tButton,\n\t__experimentalText as Text,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport { getItemTitle } from '../../utils/get-item-title';\n\nconst SetAsHomepageModal = ( { items, closeModal } ) => {\n\tconst [ item ] = items;\n\tconst pageTitle = getItemTitle( item );\n\tconst { showOnFront, currentHomePage, isSaving } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEntityRecord, isSavingEntityRecord } =\n\t\t\t\tselect( coreStore );\n\t\t\tconst siteSettings = getEntityRecord( 'root', 'site' );\n\t\t\tconst currentHomePageItem = getEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\t'page',\n\t\t\t\tsiteSettings?.page_on_front\n\t\t\t);\n\t\t\treturn {\n\t\t\t\tshowOnFront: siteSettings?.show_on_front,\n\t\t\t\tcurrentHomePage: currentHomePageItem,\n\t\t\t\tisSaving: isSavingEntityRecord( 'root', 'site' ),\n\t\t\t};\n\t\t}\n\t);\n\n\tconst { saveEntityRecord } = useDispatch( coreStore );\n\tconst { createSuccessNotice, createErrorNotice } =\n\t\tuseDispatch( noticesStore );\n\n\tasync function onSetPageAsHomepage( event ) {\n\t\tevent.preventDefault();\n\n\t\ttry {\n\t\t\tawait saveEntityRecord( 'root', 'site', {\n\t\t\t\tpage_on_front: item.id,\n\t\t\t\tshow_on_front: 'page',\n\t\t\t} );\n\n\t\t\tcreateSuccessNotice( __( 'Homepage updated.' ), {\n\t\t\t\ttype: 'snackbar',\n\t\t\t} );\n\t\t} catch ( error ) {\n\t\t\tconst errorMessage =\n\t\t\t\terror.message && error.code !== 'unknown_error'\n\t\t\t\t\t? error.message\n\t\t\t\t\t: __( 'An error occurred while setting the homepage.' );\n\t\t\tcreateErrorNotice( errorMessage, { type: 'snackbar' } );\n\t\t} finally {\n\t\t\tcloseModal?.();\n\t\t}\n\t}\n\n\tlet modalWarning = '';\n\tif ( 'posts' === showOnFront ) {\n\t\tmodalWarning = __(\n\t\t\t'This will replace the current homepage which is set to display latest posts.'\n\t\t);\n\t} else if ( currentHomePage ) {\n\t\tmodalWarning = sprintf(\n\t\t\t// translators: %s: title of the current home page.\n\t\t\t__( 'This will replace the current homepage: \"%s\"' ),\n\t\t\tgetItemTitle( currentHomePage )\n\t\t);\n\t}\n\n\tconst modalText = sprintf(\n\t\t// translators: %1$s: title of the page to be set as the homepage, %2$s: homepage replacement warning message.\n\t\t__( 'Set \"%1$s\" as the site homepage? %2$s' ),\n\t\tpageTitle,\n\t\tmodalWarning\n\t).trim();\n\n\t// translators: Button label to confirm setting the specified page as the homepage.\n\tconst modalButtonLabel = __( 'Set homepage' );\n\n\treturn (\n\t\t<form onSubmit={ onSetPageAsHomepage }>\n\t\t\t<VStack spacing=\"5\">\n\t\t\t\t<Text>{ modalText }</Text>\n\t\t\t\t<HStack justify=\"right\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tcloseModal?.();\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tdisabled={ isSaving }\n\t\t\t\t\t\taccessibleWhenDisabled\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\t__next40pxDefaultSize\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\tdisabled={ isSaving }\n\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t>\n\t\t\t\t\t\t{ modalButtonLabel }\n\t\t\t\t\t</Button>\n\t\t\t\t</HStack>\n\t\t\t</VStack>\n\t\t</form>\n\t);\n};\n\nexport const useSetAsHomepageAction = () => {\n\tconst { pageOnFront, pageForPosts } = useSelect( ( select ) => {\n\t\tconst { getEntityRecord, canUser } = select( coreStore );\n\t\tconst siteSettings = canUser( 'read', {\n\t\t\tkind: 'root',\n\t\t\tname: 'site',\n\t\t} )\n\t\t\t? getEntityRecord( 'root', 'site' )\n\t\t\t: undefined;\n\t\treturn {\n\t\t\tpageOnFront: siteSettings?.page_on_front,\n\t\t\tpageForPosts: siteSettings?.page_for_posts,\n\t\t};\n\t} );\n\n\treturn useMemo(\n\t\t() => ( {\n\t\t\tid: 'set-as-homepage',\n\t\t\tlabel: __( 'Set as homepage' ),\n\t\t\tisEligible( post ) {\n\t\t\t\tif ( post.status !== 'publish' ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tif ( post.type !== 'page' ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t// Don't show the action if the page is already set as the homepage.\n\t\t\t\tif ( pageOnFront === post.id ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t// Don't show the action if the page is already set as the page for posts.\n\t\t\t\tif ( pageForPosts === post.id ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\tRenderModal: SetAsHomepageModal,\n\t\t} ),\n\t\t[ pageForPosts, pageOnFront ]\n\t);\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { __, sprintf } from '@wordpress/i18n';
|
|
5
|
+
import { useMemo } from '@wordpress/element';
|
|
6
|
+
import { Button, __experimentalText as Text, __experimentalHStack as HStack, __experimentalVStack as VStack } from '@wordpress/components';
|
|
7
|
+
import { useDispatch, useSelect } from '@wordpress/data';
|
|
8
|
+
import { store as coreStore } from '@wordpress/core-data';
|
|
9
|
+
import { store as noticesStore } from '@wordpress/notices';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Internal dependencies
|
|
13
|
+
*/
|
|
14
|
+
import { getItemTitle } from '../../utils/get-item-title';
|
|
15
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
16
|
+
const SetAsPostsPageModal = ({
|
|
17
|
+
items,
|
|
18
|
+
closeModal
|
|
19
|
+
}) => {
|
|
20
|
+
const [item] = items;
|
|
21
|
+
const pageTitle = getItemTitle(item);
|
|
22
|
+
const {
|
|
23
|
+
currentPostsPage,
|
|
24
|
+
isPageForPostsSet,
|
|
25
|
+
isSaving
|
|
26
|
+
} = useSelect(select => {
|
|
27
|
+
const {
|
|
28
|
+
getEntityRecord,
|
|
29
|
+
isSavingEntityRecord
|
|
30
|
+
} = select(coreStore);
|
|
31
|
+
const siteSettings = getEntityRecord('root', 'site');
|
|
32
|
+
const currentPostsPageItem = getEntityRecord('postType', 'page', siteSettings?.page_for_posts);
|
|
33
|
+
return {
|
|
34
|
+
currentPostsPage: currentPostsPageItem,
|
|
35
|
+
isPageForPostsSet: siteSettings?.page_for_posts !== 0,
|
|
36
|
+
isSaving: isSavingEntityRecord('root', 'site')
|
|
37
|
+
};
|
|
38
|
+
});
|
|
39
|
+
const {
|
|
40
|
+
saveEntityRecord
|
|
41
|
+
} = useDispatch(coreStore);
|
|
42
|
+
const {
|
|
43
|
+
createSuccessNotice,
|
|
44
|
+
createErrorNotice
|
|
45
|
+
} = useDispatch(noticesStore);
|
|
46
|
+
async function onSetPageAsPostsPage(event) {
|
|
47
|
+
event.preventDefault();
|
|
48
|
+
try {
|
|
49
|
+
await saveEntityRecord('root', 'site', {
|
|
50
|
+
page_for_posts: item.id,
|
|
51
|
+
show_on_front: 'page'
|
|
52
|
+
});
|
|
53
|
+
createSuccessNotice(__('Posts page updated.'), {
|
|
54
|
+
type: 'snackbar'
|
|
55
|
+
});
|
|
56
|
+
} catch (error) {
|
|
57
|
+
const errorMessage = error.message && error.code !== 'unknown_error' ? error.message : __('An error occurred while setting the posts page.');
|
|
58
|
+
createErrorNotice(errorMessage, {
|
|
59
|
+
type: 'snackbar'
|
|
60
|
+
});
|
|
61
|
+
} finally {
|
|
62
|
+
closeModal?.();
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
const modalWarning = isPageForPostsSet && currentPostsPage ? sprintf(
|
|
66
|
+
// translators: %s: title of the current posts page.
|
|
67
|
+
__('This will replace the current posts page: "%s"'), getItemTitle(currentPostsPage)) : __('This page will show the latest posts.');
|
|
68
|
+
const modalText = sprintf(
|
|
69
|
+
// translators: %1$s: title of the page to be set as the posts page, %2$s: posts page replacement warning message.
|
|
70
|
+
__('Set "%1$s" as the posts page? %2$s'), pageTitle, modalWarning);
|
|
71
|
+
|
|
72
|
+
// translators: Button label to confirm setting the specified page as the posts page.
|
|
73
|
+
const modalButtonLabel = __('Set posts page');
|
|
74
|
+
return /*#__PURE__*/_jsx("form", {
|
|
75
|
+
onSubmit: onSetPageAsPostsPage,
|
|
76
|
+
children: /*#__PURE__*/_jsxs(VStack, {
|
|
77
|
+
spacing: "5",
|
|
78
|
+
children: [/*#__PURE__*/_jsx(Text, {
|
|
79
|
+
children: modalText
|
|
80
|
+
}), /*#__PURE__*/_jsxs(HStack, {
|
|
81
|
+
justify: "right",
|
|
82
|
+
children: [/*#__PURE__*/_jsx(Button, {
|
|
83
|
+
__next40pxDefaultSize: true,
|
|
84
|
+
variant: "tertiary",
|
|
85
|
+
onClick: () => {
|
|
86
|
+
closeModal?.();
|
|
87
|
+
},
|
|
88
|
+
disabled: isSaving,
|
|
89
|
+
accessibleWhenDisabled: true,
|
|
90
|
+
children: __('Cancel')
|
|
91
|
+
}), /*#__PURE__*/_jsx(Button, {
|
|
92
|
+
__next40pxDefaultSize: true,
|
|
93
|
+
variant: "primary",
|
|
94
|
+
type: "submit",
|
|
95
|
+
disabled: isSaving,
|
|
96
|
+
accessibleWhenDisabled: true,
|
|
97
|
+
children: modalButtonLabel
|
|
98
|
+
})]
|
|
99
|
+
})]
|
|
100
|
+
})
|
|
101
|
+
});
|
|
102
|
+
};
|
|
103
|
+
export const useSetAsPostsPageAction = () => {
|
|
104
|
+
const {
|
|
105
|
+
pageOnFront,
|
|
106
|
+
pageForPosts
|
|
107
|
+
} = useSelect(select => {
|
|
108
|
+
const {
|
|
109
|
+
getEntityRecord,
|
|
110
|
+
canUser
|
|
111
|
+
} = select(coreStore);
|
|
112
|
+
const siteSettings = canUser('read', {
|
|
113
|
+
kind: 'root',
|
|
114
|
+
name: 'site'
|
|
115
|
+
}) ? getEntityRecord('root', 'site') : undefined;
|
|
116
|
+
return {
|
|
117
|
+
pageOnFront: siteSettings?.page_on_front,
|
|
118
|
+
pageForPosts: siteSettings?.page_for_posts
|
|
119
|
+
};
|
|
120
|
+
});
|
|
121
|
+
return useMemo(() => ({
|
|
122
|
+
id: 'set-as-posts-page',
|
|
123
|
+
label: __('Set as posts page'),
|
|
124
|
+
isEligible(post) {
|
|
125
|
+
if (post.status !== 'publish') {
|
|
126
|
+
return false;
|
|
127
|
+
}
|
|
128
|
+
if (post.type !== 'page') {
|
|
129
|
+
return false;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
// Don't show the action if the page is already set as the homepage.
|
|
133
|
+
if (pageOnFront === post.id) {
|
|
134
|
+
return false;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
// Don't show the action if the page is already set as the page for posts.
|
|
138
|
+
if (pageForPosts === post.id) {
|
|
139
|
+
return false;
|
|
140
|
+
}
|
|
141
|
+
return true;
|
|
142
|
+
},
|
|
143
|
+
RenderModal: SetAsPostsPageModal
|
|
144
|
+
}), [pageForPosts, pageOnFront]);
|
|
145
|
+
};
|
|
146
|
+
//# sourceMappingURL=set-as-posts-page.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["__","sprintf","useMemo","Button","__experimentalText","Text","__experimentalHStack","HStack","__experimentalVStack","VStack","useDispatch","useSelect","store","coreStore","noticesStore","getItemTitle","jsx","_jsx","jsxs","_jsxs","SetAsPostsPageModal","items","closeModal","item","pageTitle","currentPostsPage","isPageForPostsSet","isSaving","select","getEntityRecord","isSavingEntityRecord","siteSettings","currentPostsPageItem","page_for_posts","saveEntityRecord","createSuccessNotice","createErrorNotice","onSetPageAsPostsPage","event","preventDefault","id","show_on_front","type","error","errorMessage","message","code","modalWarning","modalText","modalButtonLabel","onSubmit","children","spacing","justify","__next40pxDefaultSize","variant","onClick","disabled","accessibleWhenDisabled","useSetAsPostsPageAction","pageOnFront","pageForPosts","canUser","kind","name","undefined","page_on_front","label","isEligible","post","status","RenderModal"],"sources":["@wordpress/editor/src/components/post-actions/set-as-posts-page.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useMemo } from '@wordpress/element';\nimport {\n\tButton,\n\t__experimentalText as Text,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport { getItemTitle } from '../../utils/get-item-title';\n\nconst SetAsPostsPageModal = ( { items, closeModal } ) => {\n\tconst [ item ] = items;\n\tconst pageTitle = getItemTitle( item );\n\tconst { currentPostsPage, isPageForPostsSet, isSaving } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEntityRecord, isSavingEntityRecord } =\n\t\t\t\tselect( coreStore );\n\t\t\tconst siteSettings = getEntityRecord( 'root', 'site' );\n\t\t\tconst currentPostsPageItem = getEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\t'page',\n\t\t\t\tsiteSettings?.page_for_posts\n\t\t\t);\n\t\t\treturn {\n\t\t\t\tcurrentPostsPage: currentPostsPageItem,\n\t\t\t\tisPageForPostsSet: siteSettings?.page_for_posts !== 0,\n\t\t\t\tisSaving: isSavingEntityRecord( 'root', 'site' ),\n\t\t\t};\n\t\t}\n\t);\n\n\tconst { saveEntityRecord } = useDispatch( coreStore );\n\tconst { createSuccessNotice, createErrorNotice } =\n\t\tuseDispatch( noticesStore );\n\n\tasync function onSetPageAsPostsPage( event ) {\n\t\tevent.preventDefault();\n\n\t\ttry {\n\t\t\tawait saveEntityRecord( 'root', 'site', {\n\t\t\t\tpage_for_posts: item.id,\n\t\t\t\tshow_on_front: 'page',\n\t\t\t} );\n\n\t\t\tcreateSuccessNotice( __( 'Posts page updated.' ), {\n\t\t\t\ttype: 'snackbar',\n\t\t\t} );\n\t\t} catch ( error ) {\n\t\t\tconst errorMessage =\n\t\t\t\terror.message && error.code !== 'unknown_error'\n\t\t\t\t\t? error.message\n\t\t\t\t\t: __( 'An error occurred while setting the posts page.' );\n\t\t\tcreateErrorNotice( errorMessage, { type: 'snackbar' } );\n\t\t} finally {\n\t\t\tcloseModal?.();\n\t\t}\n\t}\n\n\tconst modalWarning =\n\t\tisPageForPostsSet && currentPostsPage\n\t\t\t? sprintf(\n\t\t\t\t\t// translators: %s: title of the current posts page.\n\t\t\t\t\t__( 'This will replace the current posts page: \"%s\"' ),\n\t\t\t\t\tgetItemTitle( currentPostsPage )\n\t\t\t )\n\t\t\t: __( 'This page will show the latest posts.' );\n\n\tconst modalText = sprintf(\n\t\t// translators: %1$s: title of the page to be set as the posts page, %2$s: posts page replacement warning message.\n\t\t__( 'Set \"%1$s\" as the posts page? %2$s' ),\n\t\tpageTitle,\n\t\tmodalWarning\n\t);\n\n\t// translators: Button label to confirm setting the specified page as the posts page.\n\tconst modalButtonLabel = __( 'Set posts page' );\n\n\treturn (\n\t\t<form onSubmit={ onSetPageAsPostsPage }>\n\t\t\t<VStack spacing=\"5\">\n\t\t\t\t<Text>{ modalText }</Text>\n\t\t\t\t<HStack justify=\"right\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tcloseModal?.();\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tdisabled={ isSaving }\n\t\t\t\t\t\taccessibleWhenDisabled\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\t__next40pxDefaultSize\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\tdisabled={ isSaving }\n\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t>\n\t\t\t\t\t\t{ modalButtonLabel }\n\t\t\t\t\t</Button>\n\t\t\t\t</HStack>\n\t\t\t</VStack>\n\t\t</form>\n\t);\n};\n\nexport const useSetAsPostsPageAction = () => {\n\tconst { pageOnFront, pageForPosts } = useSelect( ( select ) => {\n\t\tconst { getEntityRecord, canUser } = select( coreStore );\n\t\tconst siteSettings = canUser( 'read', {\n\t\t\tkind: 'root',\n\t\t\tname: 'site',\n\t\t} )\n\t\t\t? getEntityRecord( 'root', 'site' )\n\t\t\t: undefined;\n\n\t\treturn {\n\t\t\tpageOnFront: siteSettings?.page_on_front,\n\t\t\tpageForPosts: siteSettings?.page_for_posts,\n\t\t};\n\t} );\n\n\treturn useMemo(\n\t\t() => ( {\n\t\t\tid: 'set-as-posts-page',\n\t\t\tlabel: __( 'Set as posts page' ),\n\t\t\tisEligible( post ) {\n\t\t\t\tif ( post.status !== 'publish' ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tif ( post.type !== 'page' ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t// Don't show the action if the page is already set as the homepage.\n\t\t\t\tif ( pageOnFront === post.id ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t// Don't show the action if the page is already set as the page for posts.\n\t\t\t\tif ( pageForPosts === post.id ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\tRenderModal: SetAsPostsPageModal,\n\t\t} ),\n\t\t[ pageForPosts, pageOnFront ]\n\t);\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* WordPress dependencies
|
|
3
3
|
*/
|
|
4
|
-
import { Icon, __experimentalHStack as HStack, __experimentalVStack as VStack, __experimentalText as Text } from '@wordpress/components';
|
|
4
|
+
import { Icon, __experimentalHStack as HStack, __experimentalVStack as VStack, __experimentalText as Text, privateApis as componentsPrivateApis } from '@wordpress/components';
|
|
5
5
|
import { store as coreStore } from '@wordpress/core-data';
|
|
6
6
|
import { useSelect } from '@wordpress/data';
|
|
7
7
|
import { useMemo } from '@wordpress/element';
|
|
8
8
|
import { __, sprintf } from '@wordpress/i18n';
|
|
9
|
-
import {
|
|
9
|
+
import { __unstableStripHTML as stripHTML } from '@wordpress/dom';
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
12
|
* Internal dependencies
|
|
@@ -17,6 +17,10 @@ import { unlock } from '../../lock-unlock';
|
|
|
17
17
|
import PostActions from '../post-actions';
|
|
18
18
|
import usePageTypeBadge from '../../utils/pageTypeBadge';
|
|
19
19
|
import { getTemplateInfo } from '../../utils/get-template-info';
|
|
20
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
21
|
+
const {
|
|
22
|
+
Badge
|
|
23
|
+
} = unlock(componentsPrivateApis);
|
|
20
24
|
|
|
21
25
|
/**
|
|
22
26
|
* Renders a title of the post type and the available quick actions available within a 3-dot dropdown.
|
|
@@ -27,7 +31,6 @@ import { getTemplateInfo } from '../../utils/get-template-info';
|
|
|
27
31
|
* @param {Function} [props.onActionPerformed] - A callback function for when a quick action is performed.
|
|
28
32
|
* @return {React.ReactNode} The rendered component.
|
|
29
33
|
*/
|
|
30
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
31
34
|
export default function PostCardPanel({
|
|
32
35
|
postType,
|
|
33
36
|
postId,
|
|
@@ -75,7 +78,7 @@ export default function PostCardPanel({
|
|
|
75
78
|
// translators: %i number of selected items %s: Name of the plural post type e.g: "Posts".
|
|
76
79
|
__('%i %s'), postId.length, labels?.name);
|
|
77
80
|
} else if (postTitle) {
|
|
78
|
-
title =
|
|
81
|
+
title = stripHTML(postTitle);
|
|
79
82
|
}
|
|
80
83
|
return /*#__PURE__*/_jsxs(VStack, {
|
|
81
84
|
spacing: 1,
|
|
@@ -92,8 +95,10 @@ export default function PostCardPanel({
|
|
|
92
95
|
truncate: true,
|
|
93
96
|
className: "editor-post-card-panel__title",
|
|
94
97
|
as: "h2",
|
|
95
|
-
children: [
|
|
96
|
-
className: "editor-post-card-panel__title-
|
|
98
|
+
children: [/*#__PURE__*/_jsx("span", {
|
|
99
|
+
className: "editor-post-card-panel__title-name",
|
|
100
|
+
children: title
|
|
101
|
+
}), pageTypeBadge && postIds.length === 1 && /*#__PURE__*/_jsx(Badge, {
|
|
97
102
|
children: pageTypeBadge
|
|
98
103
|
})]
|
|
99
104
|
}), /*#__PURE__*/_jsx(PostActions, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Icon","__experimentalHStack","HStack","__experimentalVStack","VStack","__experimentalText","Text","store","coreStore","useSelect","useMemo","__","sprintf","
|
|
1
|
+
{"version":3,"names":["Icon","__experimentalHStack","HStack","__experimentalVStack","VStack","__experimentalText","Text","privateApis","componentsPrivateApis","store","coreStore","useSelect","useMemo","__","sprintf","__unstableStripHTML","stripHTML","editorStore","TEMPLATE_POST_TYPE","TEMPLATE_PART_POST_TYPE","unlock","PostActions","usePageTypeBadge","getTemplateInfo","jsx","_jsx","jsxs","_jsxs","Badge","PostCardPanel","postType","postId","onActionPerformed","postIds","Array","isArray","postTitle","icon","labels","select","getEditedEntityRecord","getEntityRecord","getPostType","getPostIcon","_title","_record","length","_getEntityRecord","default_template_types","templateTypes","_templateInfo","includes","template","title","area","pageTypeBadge","name","spacing","className","children","align","numberOfLines","truncate","as","toLowerCase"],"sources":["@wordpress/editor/src/components/post-card-panel/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tIcon,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\t__experimentalText as Text,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useSelect } from '@wordpress/data';\nimport { useMemo } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { __unstableStripHTML as stripHTML } from '@wordpress/dom';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../../store';\nimport {\n\tTEMPLATE_POST_TYPE,\n\tTEMPLATE_PART_POST_TYPE,\n} from '../../store/constants';\nimport { unlock } from '../../lock-unlock';\nimport PostActions from '../post-actions';\nimport usePageTypeBadge from '../../utils/pageTypeBadge';\nimport { getTemplateInfo } from '../../utils/get-template-info';\nconst { Badge } = unlock( componentsPrivateApis );\n\n/**\n * Renders a title of the post type and the available quick actions available within a 3-dot dropdown.\n *\n * @param {Object} props - Component props.\n * @param {string} [props.postType] - The post type string.\n * @param {string|string[]} [props.postId] - The post id or list of post ids.\n * @param {Function} [props.onActionPerformed] - A callback function for when a quick action is performed.\n * @return {React.ReactNode} The rendered component.\n */\nexport default function PostCardPanel( {\n\tpostType,\n\tpostId,\n\tonActionPerformed,\n} ) {\n\tconst postIds = useMemo(\n\t\t() => ( Array.isArray( postId ) ? postId : [ postId ] ),\n\t\t[ postId ]\n\t);\n\tconst { postTitle, icon, labels } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEditedEntityRecord, getEntityRecord, getPostType } =\n\t\t\t\tselect( coreStore );\n\t\t\tconst { getPostIcon } = unlock( select( editorStore ) );\n\t\t\tlet _title = '';\n\t\t\tconst _record = getEditedEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\tpostType,\n\t\t\t\tpostIds[ 0 ]\n\t\t\t);\n\t\t\tif ( postIds.length === 1 ) {\n\t\t\t\tconst { default_template_types: templateTypes = [] } =\n\t\t\t\t\tgetEntityRecord( 'root', '__unstableBase' ) ?? {};\n\n\t\t\t\tconst _templateInfo = [\n\t\t\t\t\tTEMPLATE_POST_TYPE,\n\t\t\t\t\tTEMPLATE_PART_POST_TYPE,\n\t\t\t\t].includes( postType )\n\t\t\t\t\t? getTemplateInfo( {\n\t\t\t\t\t\t\ttemplate: _record,\n\t\t\t\t\t\t\ttemplateTypes,\n\t\t\t\t\t } )\n\t\t\t\t\t: {};\n\t\t\t\t_title = _templateInfo?.title || _record?.title;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tpostTitle: _title,\n\t\t\t\ticon: getPostIcon( postType, {\n\t\t\t\t\tarea: _record?.area,\n\t\t\t\t} ),\n\t\t\t\tlabels: getPostType( postType )?.labels,\n\t\t\t};\n\t\t},\n\t\t[ postIds, postType ]\n\t);\n\n\tconst pageTypeBadge = usePageTypeBadge( postId );\n\tlet title = __( 'No title' );\n\tif ( labels?.name && postIds.length > 1 ) {\n\t\ttitle = sprintf(\n\t\t\t// translators: %i number of selected items %s: Name of the plural post type e.g: \"Posts\".\n\t\t\t__( '%i %s' ),\n\t\t\tpostId.length,\n\t\t\tlabels?.name\n\t\t);\n\t} else if ( postTitle ) {\n\t\ttitle = stripHTML( postTitle );\n\t}\n\n\treturn (\n\t\t<VStack spacing={ 1 } className=\"editor-post-card-panel\">\n\t\t\t<HStack\n\t\t\t\tspacing={ 2 }\n\t\t\t\tclassName=\"editor-post-card-panel__header\"\n\t\t\t\talign=\"flex-start\"\n\t\t\t>\n\t\t\t\t<Icon className=\"editor-post-card-panel__icon\" icon={ icon } />\n\t\t\t\t<Text\n\t\t\t\t\tnumberOfLines={ 2 }\n\t\t\t\t\ttruncate\n\t\t\t\t\tclassName=\"editor-post-card-panel__title\"\n\t\t\t\t\tas=\"h2\"\n\t\t\t\t>\n\t\t\t\t\t<span className=\"editor-post-card-panel__title-name\">\n\t\t\t\t\t\t{ title }\n\t\t\t\t\t</span>\n\t\t\t\t\t{ pageTypeBadge && postIds.length === 1 && (\n\t\t\t\t\t\t<Badge>{ pageTypeBadge }</Badge>\n\t\t\t\t\t) }\n\t\t\t\t</Text>\n\t\t\t\t<PostActions\n\t\t\t\t\tpostType={ postType }\n\t\t\t\t\tpostId={ postId }\n\t\t\t\t\tonActionPerformed={ onActionPerformed }\n\t\t\t\t/>\n\t\t\t</HStack>\n\t\t\t{ postIds.length > 1 && (\n\t\t\t\t<Text className=\"editor-post-card-panel__description\">\n\t\t\t\t\t{ sprintf(\n\t\t\t\t\t\t// translators: %s: Name of the plural post type e.g: \"Posts\".\n\t\t\t\t\t\t__( 'Changes will be applied to all selected %s.' ),\n\t\t\t\t\t\tlabels?.name.toLowerCase()\n\t\t\t\t\t) }\n\t\t\t\t</Text>\n\t\t\t) }\n\t\t</VStack>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { PanelBody, Button, Spinner, __unstableMotion as motion, __unstableAnimatePresence as AnimatePresence } from '@wordpress/components';
|
|
6
6
|
import { useSelect, useDispatch } from '@wordpress/data';
|
|
7
|
-
import { __ } from '@wordpress/i18n';
|
|
7
|
+
import { __, _x } from '@wordpress/i18n';
|
|
8
8
|
import { store as blockEditorStore } from '@wordpress/block-editor';
|
|
9
9
|
import { useState } from '@wordpress/element';
|
|
10
10
|
import { isBlobURL } from '@wordpress/blob';
|
|
@@ -244,7 +244,7 @@ export default function MaybeUploadMediaPanel() {
|
|
|
244
244
|
size: "compact",
|
|
245
245
|
variant: "primary",
|
|
246
246
|
onClick: uploadImages,
|
|
247
|
-
children:
|
|
247
|
+
children: _x('Upload', 'verb')
|
|
248
248
|
})]
|
|
249
249
|
}), hadUploadError && /*#__PURE__*/_jsx("p", {
|
|
250
250
|
children: __('Upload failed, try again.')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["PanelBody","Button","Spinner","__unstableMotion","motion","__unstableAnimatePresence","AnimatePresence","useSelect","useDispatch","__","store","blockEditorStore","useState","isBlobURL","fetchMedia","jsx","_jsx","jsxs","_jsxs","flattenBlocks","blocks","result","forEach","block","push","innerBlocks","hasExternalMedia","name","attributes","url","id","mediaUrl","mediaId","undefined","getMediaInfo","alt","mediaAlt","Image","clientId","selectBlock","img","tabIndex","role","onClick","onKeyDown","event","key","preventDefault","src","animate","opacity","exit","scale","style","width","height","objectFit","borderRadius","cursor","whileHover","MaybeUploadMediaPanel","isUploading","setIsUploading","isAnimating","setIsAnimating","hadUploadError","setHadUploadError","editorBlocks","mediaUpload","select","getBlocks","getSettings","blocksWithExternalMedia","filter","updateBlockAttributes","length","panelBodyTitle","className","children","updateBlockWithUploadedMedia","media","uploadImages","mediaUrls","Set","map","uploadPromises","Object","fromEntries","entries","filePromise","uploadPromise","then","blob","Promise","resolve","reject","filesList","onFileChange","onError","allSettled","catch","finally","initialOpen","title","display","flexWrap","gap","onExitComplete","size","variant"],"sources":["@wordpress/editor/src/components/post-publish-panel/maybe-upload-media.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tPanelBody,\n\tButton,\n\tSpinner,\n\t__unstableMotion as motion,\n\t__unstableAnimatePresence as AnimatePresence,\n} from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { useState } from '@wordpress/element';\nimport { isBlobURL } from '@wordpress/blob';\n\n/**\n * Internal dependencies\n */\nimport { fetchMedia } from './media-util';\n\nfunction flattenBlocks( blocks ) {\n\tconst result = [];\n\n\tblocks.forEach( ( block ) => {\n\t\tresult.push( block );\n\t\tresult.push( ...flattenBlocks( block.innerBlocks ) );\n\t} );\n\n\treturn result;\n}\n\n/**\n * Determine whether a block has external media.\n *\n * Different blocks use different attribute names (and potentially\n * different logic as well) in determining whether the media is\n * present, and whether it's external.\n *\n * @param {{name: string, attributes: Object}} block The block.\n * @return {boolean?} Whether the block has external media\n */\nfunction hasExternalMedia( block ) {\n\tif ( block.name === 'core/image' || block.name === 'core/cover' ) {\n\t\treturn block.attributes.url && ! block.attributes.id;\n\t}\n\n\tif ( block.name === 'core/media-text' ) {\n\t\treturn block.attributes.mediaUrl && ! block.attributes.mediaId;\n\t}\n\n\treturn undefined;\n}\n\n/**\n * Retrieve media info from a block.\n *\n * Different blocks use different attribute names, so we need this\n * function to normalize things into a consistent naming scheme.\n *\n * @param {{name: string, attributes: Object}} block The block.\n * @return {{url: ?string, alt: ?string, id: ?number}} The media info for the block.\n */\nfunction getMediaInfo( block ) {\n\tif ( block.name === 'core/image' || block.name === 'core/cover' ) {\n\t\tconst { url, alt, id } = block.attributes;\n\t\treturn { url, alt, id };\n\t}\n\n\tif ( block.name === 'core/media-text' ) {\n\t\tconst { mediaUrl: url, mediaAlt: alt, mediaId: id } = block.attributes;\n\t\treturn { url, alt, id };\n\t}\n\n\treturn {};\n}\n\n// Image component to represent a single image in the upload dialog.\nfunction Image( { clientId, alt, url } ) {\n\tconst { selectBlock } = useDispatch( blockEditorStore );\n\treturn (\n\t\t<motion.img\n\t\t\ttabIndex={ 0 }\n\t\t\trole=\"button\"\n\t\t\taria-label={ __( 'Select image block.' ) }\n\t\t\tonClick={ () => {\n\t\t\t\tselectBlock( clientId );\n\t\t\t} }\n\t\t\tonKeyDown={ ( event ) => {\n\t\t\t\tif ( event.key === 'Enter' || event.key === ' ' ) {\n\t\t\t\t\tselectBlock( clientId );\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t} }\n\t\t\tkey={ clientId }\n\t\t\talt={ alt }\n\t\t\tsrc={ url }\n\t\t\tanimate={ { opacity: 1 } }\n\t\t\texit={ { opacity: 0, scale: 0 } }\n\t\t\tstyle={ {\n\t\t\t\twidth: '32px',\n\t\t\t\theight: '32px',\n\t\t\t\tobjectFit: 'cover',\n\t\t\t\tborderRadius: '2px',\n\t\t\t\tcursor: 'pointer',\n\t\t\t} }\n\t\t\twhileHover={ { scale: 1.08 } }\n\t\t/>\n\t);\n}\n\nexport default function MaybeUploadMediaPanel() {\n\tconst [ isUploading, setIsUploading ] = useState( false );\n\tconst [ isAnimating, setIsAnimating ] = useState( false );\n\tconst [ hadUploadError, setHadUploadError ] = useState( false );\n\tconst { editorBlocks, mediaUpload } = useSelect(\n\t\t( select ) => ( {\n\t\t\teditorBlocks: select( blockEditorStore ).getBlocks(),\n\t\t\tmediaUpload: select( blockEditorStore ).getSettings().mediaUpload,\n\t\t} ),\n\t\t[]\n\t);\n\n\t// Get a list of blocks with external media.\n\tconst blocksWithExternalMedia = flattenBlocks( editorBlocks ).filter(\n\t\t( block ) => hasExternalMedia( block )\n\t);\n\tconst { updateBlockAttributes } = useDispatch( blockEditorStore );\n\n\tif ( ! mediaUpload || ! blocksWithExternalMedia.length ) {\n\t\treturn null;\n\t}\n\n\tconst panelBodyTitle = [\n\t\t__( 'Suggestion:' ),\n\t\t<span className=\"editor-post-publish-panel__link\" key=\"label\">\n\t\t\t{ __( 'External media' ) }\n\t\t</span>,\n\t];\n\n\t/**\n\t * Update an individual block to point to newly-added library media.\n\t *\n\t * Different blocks use different attribute names, so we need this\n\t * function to ensure we modify the correct attributes for each type.\n\t *\n\t * @param {{name: string, attributes: Object}} block The block.\n\t * @param {{id: number, url: string}} media Media library file info.\n\t */\n\tfunction updateBlockWithUploadedMedia( block, media ) {\n\t\tif ( block.name === 'core/image' || block.name === 'core/cover' ) {\n\t\t\tupdateBlockAttributes( block.clientId, {\n\t\t\t\tid: media.id,\n\t\t\t\turl: media.url,\n\t\t\t} );\n\t\t}\n\n\t\tif ( block.name === 'core/media-text' ) {\n\t\t\tupdateBlockAttributes( block.clientId, {\n\t\t\t\tmediaId: media.id,\n\t\t\t\tmediaUrl: media.url,\n\t\t\t} );\n\t\t}\n\t}\n\n\t// Handle fetching and uploading all external media in the post.\n\tfunction uploadImages() {\n\t\tsetIsUploading( true );\n\t\tsetHadUploadError( false );\n\n\t\t// Multiple blocks can be using the same URL, so we\n\t\t// should ensure we only fetch and upload each of them once.\n\t\tconst mediaUrls = new Set(\n\t\t\tblocksWithExternalMedia.map( ( block ) => {\n\t\t\t\tconst { url } = getMediaInfo( block );\n\t\t\t\treturn url;\n\t\t\t} )\n\t\t);\n\n\t\t// Create an upload promise for each URL, that we can wait for in all\n\t\t// blocks that make use of that media.\n\t\tconst uploadPromises = Object.fromEntries(\n\t\t\tObject.entries( fetchMedia( [ ...mediaUrls ] ) ).map(\n\t\t\t\t( [ url, filePromise ] ) => {\n\t\t\t\t\tconst uploadPromise = filePromise.then(\n\t\t\t\t\t\t( blob ) =>\n\t\t\t\t\t\t\tnew Promise( ( resolve, reject ) => {\n\t\t\t\t\t\t\t\tmediaUpload( {\n\t\t\t\t\t\t\t\t\tfilesList: [ blob ],\n\t\t\t\t\t\t\t\t\tonFileChange: ( [ media ] ) => {\n\t\t\t\t\t\t\t\t\t\tif ( isBlobURL( media.url ) ) {\n\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tresolve( media );\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tonError() {\n\t\t\t\t\t\t\t\t\t\treject();\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);\n\n\t\t\t\t\treturn [ url, uploadPromise ];\n\t\t\t\t}\n\t\t\t)\n\t\t);\n\n\t\t// Wait for all blocks to be updated with library media.\n\t\tPromise.allSettled(\n\t\t\tblocksWithExternalMedia.map( ( block ) => {\n\t\t\t\tconst { url } = getMediaInfo( block );\n\n\t\t\t\treturn uploadPromises[ url ]\n\t\t\t\t\t.then( ( media ) =>\n\t\t\t\t\t\tupdateBlockWithUploadedMedia( block, media )\n\t\t\t\t\t)\n\t\t\t\t\t.then( () => setIsAnimating( true ) )\n\t\t\t\t\t.catch( () => setHadUploadError( true ) );\n\t\t\t} )\n\t\t).finally( () => {\n\t\t\tsetIsUploading( false );\n\t\t} );\n\t}\n\n\treturn (\n\t\t<PanelBody initialOpen title={ panelBodyTitle }>\n\t\t\t<p>\n\t\t\t\t{ __(\n\t\t\t\t\t'Upload external images to the Media Library. Images from different domains may load slowly, display incorrectly, or be removed unexpectedly.'\n\t\t\t\t) }\n\t\t\t</p>\n\t\t\t<div\n\t\t\t\tstyle={ {\n\t\t\t\t\tdisplay: 'inline-flex',\n\t\t\t\t\tflexWrap: 'wrap',\n\t\t\t\t\tgap: '8px',\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<AnimatePresence\n\t\t\t\t\tonExitComplete={ () => setIsAnimating( false ) }\n\t\t\t\t>\n\t\t\t\t\t{ blocksWithExternalMedia.map( ( block ) => {\n\t\t\t\t\t\tconst { url, alt } = getMediaInfo( block );\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Image\n\t\t\t\t\t\t\t\tkey={ block.clientId }\n\t\t\t\t\t\t\t\tclientId={ block.clientId }\n\t\t\t\t\t\t\t\turl={ url }\n\t\t\t\t\t\t\t\talt={ alt }\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</AnimatePresence>\n\t\t\t\t{ isUploading || isAnimating ? (\n\t\t\t\t\t<Spinner />\n\t\t\t\t) : (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\tonClick={ uploadImages }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Upload' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t\t{ hadUploadError && <p>{ __( 'Upload failed, try again.' ) }</p> }\n\t\t</PanelBody>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["PanelBody","Button","Spinner","__unstableMotion","motion","__unstableAnimatePresence","AnimatePresence","useSelect","useDispatch","__","_x","store","blockEditorStore","useState","isBlobURL","fetchMedia","jsx","_jsx","jsxs","_jsxs","flattenBlocks","blocks","result","forEach","block","push","innerBlocks","hasExternalMedia","name","attributes","url","id","mediaUrl","mediaId","undefined","getMediaInfo","alt","mediaAlt","Image","clientId","selectBlock","img","tabIndex","role","onClick","onKeyDown","event","key","preventDefault","src","animate","opacity","exit","scale","style","width","height","objectFit","borderRadius","cursor","whileHover","MaybeUploadMediaPanel","isUploading","setIsUploading","isAnimating","setIsAnimating","hadUploadError","setHadUploadError","editorBlocks","mediaUpload","select","getBlocks","getSettings","blocksWithExternalMedia","filter","updateBlockAttributes","length","panelBodyTitle","className","children","updateBlockWithUploadedMedia","media","uploadImages","mediaUrls","Set","map","uploadPromises","Object","fromEntries","entries","filePromise","uploadPromise","then","blob","Promise","resolve","reject","filesList","onFileChange","onError","allSettled","catch","finally","initialOpen","title","display","flexWrap","gap","onExitComplete","size","variant"],"sources":["@wordpress/editor/src/components/post-publish-panel/maybe-upload-media.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tPanelBody,\n\tButton,\n\tSpinner,\n\t__unstableMotion as motion,\n\t__unstableAnimatePresence as AnimatePresence,\n} from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { __, _x } from '@wordpress/i18n';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { useState } from '@wordpress/element';\nimport { isBlobURL } from '@wordpress/blob';\n\n/**\n * Internal dependencies\n */\nimport { fetchMedia } from './media-util';\n\nfunction flattenBlocks( blocks ) {\n\tconst result = [];\n\n\tblocks.forEach( ( block ) => {\n\t\tresult.push( block );\n\t\tresult.push( ...flattenBlocks( block.innerBlocks ) );\n\t} );\n\n\treturn result;\n}\n\n/**\n * Determine whether a block has external media.\n *\n * Different blocks use different attribute names (and potentially\n * different logic as well) in determining whether the media is\n * present, and whether it's external.\n *\n * @param {{name: string, attributes: Object}} block The block.\n * @return {boolean?} Whether the block has external media\n */\nfunction hasExternalMedia( block ) {\n\tif ( block.name === 'core/image' || block.name === 'core/cover' ) {\n\t\treturn block.attributes.url && ! block.attributes.id;\n\t}\n\n\tif ( block.name === 'core/media-text' ) {\n\t\treturn block.attributes.mediaUrl && ! block.attributes.mediaId;\n\t}\n\n\treturn undefined;\n}\n\n/**\n * Retrieve media info from a block.\n *\n * Different blocks use different attribute names, so we need this\n * function to normalize things into a consistent naming scheme.\n *\n * @param {{name: string, attributes: Object}} block The block.\n * @return {{url: ?string, alt: ?string, id: ?number}} The media info for the block.\n */\nfunction getMediaInfo( block ) {\n\tif ( block.name === 'core/image' || block.name === 'core/cover' ) {\n\t\tconst { url, alt, id } = block.attributes;\n\t\treturn { url, alt, id };\n\t}\n\n\tif ( block.name === 'core/media-text' ) {\n\t\tconst { mediaUrl: url, mediaAlt: alt, mediaId: id } = block.attributes;\n\t\treturn { url, alt, id };\n\t}\n\n\treturn {};\n}\n\n// Image component to represent a single image in the upload dialog.\nfunction Image( { clientId, alt, url } ) {\n\tconst { selectBlock } = useDispatch( blockEditorStore );\n\treturn (\n\t\t<motion.img\n\t\t\ttabIndex={ 0 }\n\t\t\trole=\"button\"\n\t\t\taria-label={ __( 'Select image block.' ) }\n\t\t\tonClick={ () => {\n\t\t\t\tselectBlock( clientId );\n\t\t\t} }\n\t\t\tonKeyDown={ ( event ) => {\n\t\t\t\tif ( event.key === 'Enter' || event.key === ' ' ) {\n\t\t\t\t\tselectBlock( clientId );\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t} }\n\t\t\tkey={ clientId }\n\t\t\talt={ alt }\n\t\t\tsrc={ url }\n\t\t\tanimate={ { opacity: 1 } }\n\t\t\texit={ { opacity: 0, scale: 0 } }\n\t\t\tstyle={ {\n\t\t\t\twidth: '32px',\n\t\t\t\theight: '32px',\n\t\t\t\tobjectFit: 'cover',\n\t\t\t\tborderRadius: '2px',\n\t\t\t\tcursor: 'pointer',\n\t\t\t} }\n\t\t\twhileHover={ { scale: 1.08 } }\n\t\t/>\n\t);\n}\n\nexport default function MaybeUploadMediaPanel() {\n\tconst [ isUploading, setIsUploading ] = useState( false );\n\tconst [ isAnimating, setIsAnimating ] = useState( false );\n\tconst [ hadUploadError, setHadUploadError ] = useState( false );\n\tconst { editorBlocks, mediaUpload } = useSelect(\n\t\t( select ) => ( {\n\t\t\teditorBlocks: select( blockEditorStore ).getBlocks(),\n\t\t\tmediaUpload: select( blockEditorStore ).getSettings().mediaUpload,\n\t\t} ),\n\t\t[]\n\t);\n\n\t// Get a list of blocks with external media.\n\tconst blocksWithExternalMedia = flattenBlocks( editorBlocks ).filter(\n\t\t( block ) => hasExternalMedia( block )\n\t);\n\tconst { updateBlockAttributes } = useDispatch( blockEditorStore );\n\n\tif ( ! mediaUpload || ! blocksWithExternalMedia.length ) {\n\t\treturn null;\n\t}\n\n\tconst panelBodyTitle = [\n\t\t__( 'Suggestion:' ),\n\t\t<span className=\"editor-post-publish-panel__link\" key=\"label\">\n\t\t\t{ __( 'External media' ) }\n\t\t</span>,\n\t];\n\n\t/**\n\t * Update an individual block to point to newly-added library media.\n\t *\n\t * Different blocks use different attribute names, so we need this\n\t * function to ensure we modify the correct attributes for each type.\n\t *\n\t * @param {{name: string, attributes: Object}} block The block.\n\t * @param {{id: number, url: string}} media Media library file info.\n\t */\n\tfunction updateBlockWithUploadedMedia( block, media ) {\n\t\tif ( block.name === 'core/image' || block.name === 'core/cover' ) {\n\t\t\tupdateBlockAttributes( block.clientId, {\n\t\t\t\tid: media.id,\n\t\t\t\turl: media.url,\n\t\t\t} );\n\t\t}\n\n\t\tif ( block.name === 'core/media-text' ) {\n\t\t\tupdateBlockAttributes( block.clientId, {\n\t\t\t\tmediaId: media.id,\n\t\t\t\tmediaUrl: media.url,\n\t\t\t} );\n\t\t}\n\t}\n\n\t// Handle fetching and uploading all external media in the post.\n\tfunction uploadImages() {\n\t\tsetIsUploading( true );\n\t\tsetHadUploadError( false );\n\n\t\t// Multiple blocks can be using the same URL, so we\n\t\t// should ensure we only fetch and upload each of them once.\n\t\tconst mediaUrls = new Set(\n\t\t\tblocksWithExternalMedia.map( ( block ) => {\n\t\t\t\tconst { url } = getMediaInfo( block );\n\t\t\t\treturn url;\n\t\t\t} )\n\t\t);\n\n\t\t// Create an upload promise for each URL, that we can wait for in all\n\t\t// blocks that make use of that media.\n\t\tconst uploadPromises = Object.fromEntries(\n\t\t\tObject.entries( fetchMedia( [ ...mediaUrls ] ) ).map(\n\t\t\t\t( [ url, filePromise ] ) => {\n\t\t\t\t\tconst uploadPromise = filePromise.then(\n\t\t\t\t\t\t( blob ) =>\n\t\t\t\t\t\t\tnew Promise( ( resolve, reject ) => {\n\t\t\t\t\t\t\t\tmediaUpload( {\n\t\t\t\t\t\t\t\t\tfilesList: [ blob ],\n\t\t\t\t\t\t\t\t\tonFileChange: ( [ media ] ) => {\n\t\t\t\t\t\t\t\t\t\tif ( isBlobURL( media.url ) ) {\n\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tresolve( media );\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tonError() {\n\t\t\t\t\t\t\t\t\t\treject();\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);\n\n\t\t\t\t\treturn [ url, uploadPromise ];\n\t\t\t\t}\n\t\t\t)\n\t\t);\n\n\t\t// Wait for all blocks to be updated with library media.\n\t\tPromise.allSettled(\n\t\t\tblocksWithExternalMedia.map( ( block ) => {\n\t\t\t\tconst { url } = getMediaInfo( block );\n\n\t\t\t\treturn uploadPromises[ url ]\n\t\t\t\t\t.then( ( media ) =>\n\t\t\t\t\t\tupdateBlockWithUploadedMedia( block, media )\n\t\t\t\t\t)\n\t\t\t\t\t.then( () => setIsAnimating( true ) )\n\t\t\t\t\t.catch( () => setHadUploadError( true ) );\n\t\t\t} )\n\t\t).finally( () => {\n\t\t\tsetIsUploading( false );\n\t\t} );\n\t}\n\n\treturn (\n\t\t<PanelBody initialOpen title={ panelBodyTitle }>\n\t\t\t<p>\n\t\t\t\t{ __(\n\t\t\t\t\t'Upload external images to the Media Library. Images from different domains may load slowly, display incorrectly, or be removed unexpectedly.'\n\t\t\t\t) }\n\t\t\t</p>\n\t\t\t<div\n\t\t\t\tstyle={ {\n\t\t\t\t\tdisplay: 'inline-flex',\n\t\t\t\t\tflexWrap: 'wrap',\n\t\t\t\t\tgap: '8px',\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<AnimatePresence\n\t\t\t\t\tonExitComplete={ () => setIsAnimating( false ) }\n\t\t\t\t>\n\t\t\t\t\t{ blocksWithExternalMedia.map( ( block ) => {\n\t\t\t\t\t\tconst { url, alt } = getMediaInfo( block );\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Image\n\t\t\t\t\t\t\t\tkey={ block.clientId }\n\t\t\t\t\t\t\t\tclientId={ block.clientId }\n\t\t\t\t\t\t\t\turl={ url }\n\t\t\t\t\t\t\t\talt={ alt }\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</AnimatePresence>\n\t\t\t\t{ isUploading || isAnimating ? (\n\t\t\t\t\t<Spinner />\n\t\t\t\t) : (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\tonClick={ uploadImages }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ _x( 'Upload', 'verb' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t\t{ hadUploadError && <p>{ __( 'Upload failed, try again.' ) }</p> }\n\t\t</PanelBody>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -24,7 +24,6 @@ import PageAttributesCheck from '../page-attributes/check';
|
|
|
24
24
|
import PostTypeSupportCheck from '../post-type-support-check';
|
|
25
25
|
import { store as editorStore } from '../../store';
|
|
26
26
|
import { unlock } from '../../lock-unlock';
|
|
27
|
-
import { useStartPatterns } from '../start-page-options';
|
|
28
27
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
29
28
|
const {
|
|
30
29
|
PreferencesModal,
|
|
@@ -76,7 +75,6 @@ function PreferencesModalContents({
|
|
|
76
75
|
const {
|
|
77
76
|
set: setPreference
|
|
78
77
|
} = useDispatch(preferencesStore);
|
|
79
|
-
const hasStarterPatterns = !!useStartPatterns().length;
|
|
80
78
|
const sections = useMemo(() => [{
|
|
81
79
|
name: 'general',
|
|
82
80
|
tabLabel: __('General'),
|
|
@@ -98,7 +96,7 @@ function PreferencesModalContents({
|
|
|
98
96
|
featureName: "allowRightClickOverrides",
|
|
99
97
|
help: __('Allows contextual List View menus via right-click, overriding browser defaults.'),
|
|
100
98
|
label: __('Allow right-click contextual menus')
|
|
101
|
-
}),
|
|
99
|
+
}), /*#__PURE__*/_jsx(PreferenceToggleControl, {
|
|
102
100
|
scope: "core",
|
|
103
101
|
featureName: "enableChoosePatternModal",
|
|
104
102
|
help: __('Shows starter patterns when creating a new page.'),
|
|
@@ -232,7 +230,7 @@ function PreferencesModalContents({
|
|
|
232
230
|
})]
|
|
233
231
|
})
|
|
234
232
|
})
|
|
235
|
-
}].filter(Boolean), [showBlockBreadcrumbsOption, extraSections, setIsInserterOpened, setIsListViewOpened, setPreference, isLargeViewport
|
|
233
|
+
}].filter(Boolean), [showBlockBreadcrumbsOption, extraSections, setIsInserterOpened, setIsListViewOpened, setPreference, isLargeViewport]);
|
|
236
234
|
return /*#__PURE__*/_jsx(PreferencesModalTabs, {
|
|
237
235
|
sections: sections
|
|
238
236
|
});
|