@wordpress/editor 13.30.0 → 13.32.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 +4 -0
- package/README.md +857 -0
- package/build/bindings/index.js +3 -1
- package/build/bindings/index.js.map +1 -1
- package/build/components/block-settings-menu/plugin-block-settings-menu-item.js +107 -0
- package/build/components/block-settings-menu/plugin-block-settings-menu-item.js.map +1 -0
- package/build/components/commands/index.js +1 -1
- package/build/components/commands/index.js.map +1 -1
- package/build/components/deprecated.js +158 -0
- package/build/components/deprecated.js.map +1 -1
- package/build/components/document-bar/index.js +7 -10
- package/build/components/document-bar/index.js.map +1 -1
- package/build/components/document-outline/index.js +1 -1
- package/build/components/document-outline/index.js.map +1 -1
- package/build/components/editor-canvas/edit-template-blocks-notification.js +2 -39
- package/build/components/editor-canvas/edit-template-blocks-notification.js.map +1 -1
- package/build/components/editor-canvas/index.js +3 -0
- package/build/components/editor-canvas/index.js.map +1 -1
- package/build/components/entities-saved-states/hooks/use-is-dirty.js +10 -16
- package/build/components/entities-saved-states/hooks/use-is-dirty.js.map +1 -1
- package/build/components/entities-saved-states/index.js +28 -88
- package/build/components/entities-saved-states/index.js.map +1 -1
- package/build/components/error-boundary/index.native.js +133 -0
- package/build/components/error-boundary/index.native.js.map +1 -0
- package/build/components/index.js +33 -8
- package/build/components/index.js.map +1 -1
- package/build/components/index.native.js +9 -1
- package/build/components/index.native.js.map +1 -1
- package/build/components/inserter-sidebar/index.js +5 -1
- package/build/components/inserter-sidebar/index.js.map +1 -1
- package/build/components/list-view-sidebar/index.js +2 -1
- package/build/components/list-view-sidebar/index.js.map +1 -1
- package/build/components/pattern-overrides-panel/index.js +30 -0
- package/build/components/pattern-overrides-panel/index.js.map +1 -0
- package/build/components/plugin-document-setting-panel/index.js +123 -0
- package/build/components/plugin-document-setting-panel/index.js.map +1 -0
- package/build/components/plugin-post-publish-panel/index.js +68 -0
- package/build/components/plugin-post-publish-panel/index.js.map +1 -0
- package/build/components/plugin-pre-publish-panel/index.js +71 -0
- package/build/components/plugin-pre-publish-panel/index.js.map +1 -0
- package/build/components/post-actions/actions.js +455 -0
- package/build/components/post-actions/actions.js.map +1 -0
- package/build/components/post-card-panel/index.js +93 -0
- package/build/components/post-card-panel/index.js.map +1 -0
- package/build/components/post-featured-image/index.js +3 -8
- package/build/components/post-featured-image/index.js.map +1 -1
- package/build/components/post-featured-image/panel.js +7 -3
- package/build/components/post-featured-image/panel.js.map +1 -1
- package/build/components/post-sync-status/index.js +0 -72
- package/build/components/post-sync-status/index.js.map +1 -1
- package/build/components/post-taxonomies/flat-term-selector.js +7 -3
- package/build/components/post-taxonomies/flat-term-selector.js.map +1 -1
- package/build/components/post-title/index.native.js +1 -1
- package/build/components/post-title/index.native.js.map +1 -1
- package/build/components/provider/disable-non-page-content-blocks.js +36 -20
- package/build/components/provider/disable-non-page-content-blocks.js.map +1 -1
- package/build/components/provider/index.js +1 -1
- package/build/components/provider/index.js.map +1 -1
- package/build/components/provider/use-block-editor-settings.js +8 -9
- package/build/components/provider/use-block-editor-settings.js.map +1 -1
- package/build/components/provider/use-hide-blocks-from-inserter.js +4 -3
- package/build/components/provider/use-hide-blocks-from-inserter.js.map +1 -1
- package/build/components/template-areas/index.js +70 -0
- package/build/components/template-areas/index.js.map +1 -0
- package/build/hooks/use-select-nearest-editable-block.js +87 -0
- package/build/hooks/use-select-nearest-editable-block.js.map +1 -0
- package/build/private-apis.js +6 -2
- package/build/private-apis.js.map +1 -1
- package/build/store/actions.js +46 -6
- package/build/store/actions.js.map +1 -1
- package/build/store/constants.js +3 -1
- package/build/store/constants.js.map +1 -1
- package/build/store/private-actions.js +80 -1
- package/build/store/private-actions.js.map +1 -1
- package/build/store/private-selectors.js +56 -3
- package/build/store/private-selectors.js.map +1 -1
- package/build/store/reducer.js +14 -1
- package/build/store/reducer.js.map +1 -1
- package/build/store/selectors.js +21 -11
- package/build/store/selectors.js.map +1 -1
- package/build/store/utils/get-filtered-template-parts.js +71 -0
- package/build/store/utils/get-filtered-template-parts.js.map +1 -0
- package/build-module/bindings/index.js +3 -1
- package/build-module/bindings/index.js.map +1 -1
- package/build-module/components/block-settings-menu/plugin-block-settings-menu-item.js +100 -0
- package/build-module/components/block-settings-menu/plugin-block-settings-menu-item.js.map +1 -0
- package/build-module/components/commands/index.js +1 -1
- package/build-module/components/commands/index.js.map +1 -1
- package/build-module/components/deprecated.js +159 -0
- package/build-module/components/deprecated.js.map +1 -1
- package/build-module/components/document-bar/index.js +8 -11
- package/build-module/components/document-bar/index.js.map +1 -1
- package/build-module/components/document-outline/index.js +1 -1
- package/build-module/components/document-outline/index.js.map +1 -1
- package/build-module/components/editor-canvas/edit-template-blocks-notification.js +4 -41
- package/build-module/components/editor-canvas/edit-template-blocks-notification.js.map +1 -1
- package/build-module/components/editor-canvas/index.js +3 -0
- package/build-module/components/editor-canvas/index.js.map +1 -1
- package/build-module/components/entities-saved-states/hooks/use-is-dirty.js +10 -16
- package/build-module/components/entities-saved-states/hooks/use-is-dirty.js.map +1 -1
- package/build-module/components/entities-saved-states/index.js +29 -89
- package/build-module/components/entities-saved-states/index.js.map +1 -1
- package/build-module/components/error-boundary/index.native.js +125 -0
- package/build-module/components/error-boundary/index.native.js.map +1 -0
- package/build-module/components/index.js +5 -1
- package/build-module/components/index.js.map +1 -1
- package/build-module/components/index.native.js +1 -0
- package/build-module/components/index.native.js.map +1 -1
- package/build-module/components/inserter-sidebar/index.js +5 -1
- package/build-module/components/inserter-sidebar/index.js.map +1 -1
- package/build-module/components/list-view-sidebar/index.js +2 -1
- package/build-module/components/list-view-sidebar/index.js.map +1 -1
- package/build-module/components/pattern-overrides-panel/index.js +23 -0
- package/build-module/components/pattern-overrides-panel/index.js.map +1 -0
- package/build-module/components/plugin-document-setting-panel/index.js +115 -0
- package/build-module/components/plugin-document-setting-panel/index.js.map +1 -0
- package/build-module/components/plugin-post-publish-panel/index.js +61 -0
- package/build-module/components/plugin-post-publish-panel/index.js.map +1 -0
- package/build-module/components/plugin-pre-publish-panel/index.js +64 -0
- package/build-module/components/plugin-pre-publish-panel/index.js.map +1 -0
- package/build-module/components/post-actions/actions.js +444 -0
- package/build-module/components/post-actions/actions.js.map +1 -0
- package/build-module/components/post-card-panel/index.js +85 -0
- package/build-module/components/post-card-panel/index.js.map +1 -0
- package/build-module/components/post-featured-image/index.js +4 -9
- package/build-module/components/post-featured-image/index.js.map +1 -1
- package/build-module/components/post-featured-image/panel.js +6 -2
- package/build-module/components/post-featured-image/panel.js.map +1 -1
- package/build-module/components/post-sync-status/index.js +2 -73
- package/build-module/components/post-sync-status/index.js.map +1 -1
- package/build-module/components/post-taxonomies/flat-term-selector.js +7 -3
- package/build-module/components/post-taxonomies/flat-term-selector.js.map +1 -1
- package/build-module/components/post-title/index.native.js +1 -1
- package/build-module/components/post-title/index.native.js.map +1 -1
- package/build-module/components/provider/disable-non-page-content-blocks.js +36 -20
- package/build-module/components/provider/disable-non-page-content-blocks.js.map +1 -1
- package/build-module/components/provider/index.js +1 -1
- package/build-module/components/provider/index.js.map +1 -1
- package/build-module/components/provider/use-block-editor-settings.js +9 -10
- package/build-module/components/provider/use-block-editor-settings.js.map +1 -1
- package/build-module/components/provider/use-hide-blocks-from-inserter.js +4 -3
- package/build-module/components/provider/use-hide-blocks-from-inserter.js.map +1 -1
- package/build-module/components/template-areas/index.js +63 -0
- package/build-module/components/template-areas/index.js.map +1 -0
- package/build-module/hooks/use-select-nearest-editable-block.js +80 -0
- package/build-module/hooks/use-select-nearest-editable-block.js.map +1 -0
- package/build-module/private-apis.js +6 -2
- package/build-module/private-apis.js.map +1 -1
- package/build-module/store/actions.js +37 -3
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/constants.js +2 -0
- package/build-module/store/constants.js.map +1 -1
- package/build-module/store/private-actions.js +78 -0
- package/build-module/store/private-actions.js.map +1 -1
- package/build-module/store/private-selectors.js +54 -3
- package/build-module/store/private-selectors.js.map +1 -1
- package/build-module/store/reducer.js +13 -1
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/store/selectors.js +19 -10
- package/build-module/store/selectors.js.map +1 -1
- package/build-module/store/utils/get-filtered-template-parts.js +64 -0
- package/build-module/store/utils/get-filtered-template-parts.js.map +1 -0
- package/build-style/style-rtl.css +76 -33
- package/build-style/style.css +76 -33
- package/package.json +35 -33
- package/src/bindings/index.js +4 -1
- package/src/components/block-settings-menu/plugin-block-settings-menu-item.js +108 -0
- package/src/components/commands/index.js +1 -1
- package/src/components/deprecated.js +157 -0
- package/src/components/document-bar/index.js +12 -17
- package/src/components/document-bar/style.scss +9 -12
- package/src/components/document-outline/index.js +2 -1
- package/src/components/document-tools/style.scss +4 -11
- package/src/components/editor-canvas/edit-template-blocks-notification.js +6 -56
- package/src/components/editor-canvas/index.js +4 -0
- package/src/components/entities-saved-states/hooks/use-is-dirty.js +18 -22
- package/src/components/entities-saved-states/index.js +45 -121
- package/src/components/entities-saved-states/test/use-is-dirty.js +3 -0
- package/src/components/error-boundary/index.native.js +192 -0
- package/src/components/error-boundary/style.native.scss +116 -0
- package/src/components/index.js +5 -4
- package/src/components/index.native.js +1 -0
- package/src/components/inserter-sidebar/index.js +7 -1
- package/src/components/list-view-sidebar/index.js +1 -0
- package/src/components/list-view-sidebar/style.scss +1 -1
- package/src/components/pattern-overrides-panel/index.js +26 -0
- package/src/components/plugin-document-setting-panel/index.js +121 -0
- package/src/components/plugin-post-publish-panel/index.js +64 -0
- package/src/components/plugin-post-publish-panel/test/__snapshots__/index.js.snap +39 -0
- package/src/components/plugin-post-publish-panel/test/index.js +33 -0
- package/src/components/plugin-pre-publish-panel/index.js +67 -0
- package/src/components/plugin-pre-publish-panel/test/index.js +33 -0
- package/src/components/post-actions/actions.js +582 -0
- package/src/components/post-card-panel/index.js +108 -0
- package/src/components/post-card-panel/style.scss +32 -0
- package/src/components/post-featured-image/index.js +6 -15
- package/src/components/post-featured-image/panel.js +9 -3
- package/src/components/post-featured-image/style.scss +9 -13
- package/src/components/post-sync-status/index.js +1 -94
- package/src/components/post-taxonomies/flat-term-selector.js +13 -8
- package/src/components/post-title/index.native.js +1 -1
- package/src/components/provider/disable-non-page-content-blocks.js +40 -20
- package/src/components/provider/index.js +1 -1
- package/src/components/provider/test/disable-non-page-content-blocks.js +35 -14
- package/src/components/provider/use-block-editor-settings.js +11 -11
- package/src/components/provider/use-hide-blocks-from-inserter.js +5 -3
- package/src/components/template-areas/index.js +85 -0
- package/src/components/template-areas/style.scss +23 -0
- package/src/hooks/use-select-nearest-editable-block.js +95 -0
- package/src/private-apis.js +6 -2
- package/src/store/actions.js +37 -3
- package/src/store/constants.js +2 -0
- package/src/store/private-actions.js +111 -0
- package/src/store/private-selectors.js +105 -17
- package/src/store/reducer.js +13 -0
- package/src/store/selectors.js +50 -40
- package/src/store/utils/get-filtered-template-parts.js +69 -0
- package/src/store/utils/test/get-filtered-template-parts.js +189 -0
- package/src/style.scss +2 -0
|
@@ -78,8 +78,6 @@ function PostFeaturedImage({
|
|
|
78
78
|
getSettings
|
|
79
79
|
} = (0, _data.useSelect)(_blockEditor.store);
|
|
80
80
|
const {
|
|
81
|
-
mediaWidth,
|
|
82
|
-
mediaHeight,
|
|
83
81
|
mediaSourceUrl
|
|
84
82
|
} = getMediaDetails(media, currentPostId);
|
|
85
83
|
function onDropFiles(filesList) {
|
|
@@ -129,14 +127,11 @@ function PostFeaturedImage({
|
|
|
129
127
|
onClick: open,
|
|
130
128
|
"aria-label": !featuredImageId ? null : (0, _i18n.__)('Edit or replace the image'),
|
|
131
129
|
"aria-describedby": !featuredImageId ? null : `editor-post-featured-image-${featuredImageId}-describedby`
|
|
132
|
-
}, !!featuredImageId && media && (0, _react.createElement)(
|
|
133
|
-
|
|
134
|
-
naturalHeight: mediaHeight,
|
|
135
|
-
isInline: true
|
|
136
|
-
}, (0, _react.createElement)("img", {
|
|
130
|
+
}, !!featuredImageId && media && (0, _react.createElement)("img", {
|
|
131
|
+
className: "editor-post-featured-image__preview-image",
|
|
137
132
|
src: mediaSourceUrl,
|
|
138
133
|
alt: ""
|
|
139
|
-
})
|
|
134
|
+
}), isLoading && (0, _react.createElement)(_components.Spinner, null), !featuredImageId && !isLoading && (postType?.labels?.set_featured_image || DEFAULT_SET_FEATURE_IMAGE_LABEL)), !!featuredImageId && (0, _react.createElement)(_components.__experimentalHStack, {
|
|
140
135
|
className: "editor-post-featured-image__actions"
|
|
141
136
|
}, (0, _react.createElement)(_components.Button, {
|
|
142
137
|
className: "editor-post-featured-image__action",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_i18n","require","_hooks","_components","_blob","_element","_compose","_data","_blockEditor","_coreData","_check","_interopRequireDefault","_store","ALLOWED_MEDIA_TYPES","DEFAULT_FEATURE_IMAGE_LABEL","__","DEFAULT_SET_FEATURE_IMAGE_LABEL","instructions","_react","createElement","getMediaDetails","media","postId","_media$media_details$","_media$media_details$2","defaultSize","applyFilters","id","media_details","sizes","mediaWidth","width","mediaHeight","height","mediaSourceUrl","source_url","fallbackSize","PostFeaturedImage","currentPostId","featuredImageId","onUpdateImage","onRemoveImage","postType","noticeUI","noticeOperations","toggleRef","useRef","isLoading","setIsLoading","useState","getSettings","useSelect","blockEditorStore","onDropFiles","filesList","mediaUpload","allowedTypes","onFileChange","image","isBlobURL","url","onError","message","removeAllNotices","createErrorNotice","default","className","alt_text","sprintf","full","file","slug","MediaUploadCheck","fallback","MediaUpload","title","labels","featured_image","onSelect","unstableFeaturedImageFlow","modalClass","render","open","Button","ref","onClick","ResponsiveWrapper","naturalWidth","naturalHeight","isInline","src","alt","Spinner","set_featured_image","__experimentalHStack","current","focus","DropZone","onFilesDrop","value","applyWithSelect","withSelect","select","getMedia","getPostType","coreStore","getCurrentPostId","getEditedPostAttribute","editorStore","context","applyWithDispatch","withDispatch","dispatch","editPost","featured_media","onDropImage","_default","exports","compose","withNotices","withFilters"],"sources":["@wordpress/editor/src/components/post-featured-image/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { applyFilters } from '@wordpress/hooks';\nimport {\n\tDropZone,\n\tButton,\n\tSpinner,\n\tResponsiveWrapper,\n\twithNotices,\n\twithFilters,\n\t__experimentalHStack as HStack,\n} from '@wordpress/components';\nimport { isBlobURL } from '@wordpress/blob';\nimport { useState, useRef } from '@wordpress/element';\nimport { compose } from '@wordpress/compose';\nimport { useSelect, withDispatch, withSelect } from '@wordpress/data';\nimport {\n\tMediaUpload,\n\tMediaUploadCheck,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport PostFeaturedImageCheck from './check';\nimport { store as editorStore } from '../../store';\n\nconst ALLOWED_MEDIA_TYPES = [ 'image' ];\n\n// Used when labels from post type were not yet loaded or when they are not present.\nconst DEFAULT_FEATURE_IMAGE_LABEL = __( 'Featured image' );\nconst DEFAULT_SET_FEATURE_IMAGE_LABEL = __( 'Set featured image' );\n\nconst instructions = (\n\t<p>\n\t\t{ __(\n\t\t\t'To edit the featured image, you need permission to upload media.'\n\t\t) }\n\t</p>\n);\n\nfunction getMediaDetails( media, postId ) {\n\tif ( ! media ) {\n\t\treturn {};\n\t}\n\n\tconst defaultSize = applyFilters(\n\t\t'editor.PostFeaturedImage.imageSize',\n\t\t'large',\n\t\tmedia.id,\n\t\tpostId\n\t);\n\tif ( defaultSize in ( media?.media_details?.sizes ?? {} ) ) {\n\t\treturn {\n\t\t\tmediaWidth: media.media_details.sizes[ defaultSize ].width,\n\t\t\tmediaHeight: media.media_details.sizes[ defaultSize ].height,\n\t\t\tmediaSourceUrl: media.media_details.sizes[ defaultSize ].source_url,\n\t\t};\n\t}\n\n\t// Use fallbackSize when defaultSize is not available.\n\tconst fallbackSize = applyFilters(\n\t\t'editor.PostFeaturedImage.imageSize',\n\t\t'thumbnail',\n\t\tmedia.id,\n\t\tpostId\n\t);\n\tif ( fallbackSize in ( media?.media_details?.sizes ?? {} ) ) {\n\t\treturn {\n\t\t\tmediaWidth: media.media_details.sizes[ fallbackSize ].width,\n\t\t\tmediaHeight: media.media_details.sizes[ fallbackSize ].height,\n\t\t\tmediaSourceUrl:\n\t\t\t\tmedia.media_details.sizes[ fallbackSize ].source_url,\n\t\t};\n\t}\n\n\t// Use full image size when fallbackSize and defaultSize are not available.\n\treturn {\n\t\tmediaWidth: media.media_details.width,\n\t\tmediaHeight: media.media_details.height,\n\t\tmediaSourceUrl: media.source_url,\n\t};\n}\n\nfunction PostFeaturedImage( {\n\tcurrentPostId,\n\tfeaturedImageId,\n\tonUpdateImage,\n\tonRemoveImage,\n\tmedia,\n\tpostType,\n\tnoticeUI,\n\tnoticeOperations,\n} ) {\n\tconst toggleRef = useRef();\n\tconst [ isLoading, setIsLoading ] = useState( false );\n\tconst { getSettings } = useSelect( blockEditorStore );\n\tconst { mediaWidth, mediaHeight, mediaSourceUrl } = getMediaDetails(\n\t\tmedia,\n\t\tcurrentPostId\n\t);\n\n\tfunction onDropFiles( filesList ) {\n\t\tgetSettings().mediaUpload( {\n\t\t\tallowedTypes: ALLOWED_MEDIA_TYPES,\n\t\t\tfilesList,\n\t\t\tonFileChange( [ image ] ) {\n\t\t\t\tif ( isBlobURL( image?.url ) ) {\n\t\t\t\t\tsetIsLoading( true );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif ( image ) {\n\t\t\t\t\tonUpdateImage( image );\n\t\t\t\t}\n\t\t\t\tsetIsLoading( false );\n\t\t\t},\n\t\t\tonError( message ) {\n\t\t\t\tnoticeOperations.removeAllNotices();\n\t\t\t\tnoticeOperations.createErrorNotice( message );\n\t\t\t},\n\t\t} );\n\t}\n\n\treturn (\n\t\t<PostFeaturedImageCheck>\n\t\t\t{ noticeUI }\n\t\t\t<div className=\"editor-post-featured-image\">\n\t\t\t\t{ media && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tid={ `editor-post-featured-image-${ featuredImageId }-describedby` }\n\t\t\t\t\t\tclassName=\"hidden\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ media.alt_text &&\n\t\t\t\t\t\t\tsprintf(\n\t\t\t\t\t\t\t\t// Translators: %s: The selected image alt text.\n\t\t\t\t\t\t\t\t__( 'Current image: %s' ),\n\t\t\t\t\t\t\t\tmedia.alt_text\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ ! media.alt_text &&\n\t\t\t\t\t\t\tsprintf(\n\t\t\t\t\t\t\t\t// Translators: %s: The selected image filename.\n\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t'The current image has no alternative text. The file name is: %s'\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tmedia.media_details.sizes?.full?.file ||\n\t\t\t\t\t\t\t\t\tmedia.slug\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t\t<MediaUploadCheck fallback={ instructions }>\n\t\t\t\t\t<MediaUpload\n\t\t\t\t\t\ttitle={\n\t\t\t\t\t\t\tpostType?.labels?.featured_image ||\n\t\t\t\t\t\t\tDEFAULT_FEATURE_IMAGE_LABEL\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonSelect={ onUpdateImage }\n\t\t\t\t\t\tunstableFeaturedImageFlow\n\t\t\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\t\t\tmodalClass=\"editor-post-featured-image__media-modal\"\n\t\t\t\t\t\trender={ ( { open } ) => (\n\t\t\t\t\t\t\t<div className=\"editor-post-featured-image__container\">\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\tref={ toggleRef }\n\t\t\t\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\t\t\t\t! featuredImageId\n\t\t\t\t\t\t\t\t\t\t\t? 'editor-post-featured-image__toggle'\n\t\t\t\t\t\t\t\t\t\t\t: 'editor-post-featured-image__preview'\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tonClick={ open }\n\t\t\t\t\t\t\t\t\taria-label={\n\t\t\t\t\t\t\t\t\t\t! featuredImageId\n\t\t\t\t\t\t\t\t\t\t\t? null\n\t\t\t\t\t\t\t\t\t\t\t: __( 'Edit or replace the image' )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\taria-describedby={\n\t\t\t\t\t\t\t\t\t\t! featuredImageId\n\t\t\t\t\t\t\t\t\t\t\t? null\n\t\t\t\t\t\t\t\t\t\t\t: `editor-post-featured-image-${ featuredImageId }-describedby`\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\t\t{ !! featuredImageId && media && (\n\t\t\t\t\t\t\t\t\t\t<ResponsiveWrapper\n\t\t\t\t\t\t\t\t\t\t\tnaturalWidth={ mediaWidth }\n\t\t\t\t\t\t\t\t\t\t\tnaturalHeight={ mediaHeight }\n\t\t\t\t\t\t\t\t\t\t\tisInline\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<img\n\t\t\t\t\t\t\t\t\t\t\t\tsrc={ mediaSourceUrl }\n\t\t\t\t\t\t\t\t\t\t\t\talt=\"\"\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</ResponsiveWrapper>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t{ isLoading && <Spinner /> }\n\t\t\t\t\t\t\t\t\t{ ! featuredImageId &&\n\t\t\t\t\t\t\t\t\t\t! isLoading &&\n\t\t\t\t\t\t\t\t\t\t( postType?.labels\n\t\t\t\t\t\t\t\t\t\t\t?.set_featured_image ||\n\t\t\t\t\t\t\t\t\t\t\tDEFAULT_SET_FEATURE_IMAGE_LABEL ) }\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t{ !! featuredImageId && (\n\t\t\t\t\t\t\t\t\t<HStack className=\"editor-post-featured-image__actions\">\n\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"editor-post-featured-image__action\"\n\t\t\t\t\t\t\t\t\t\t\tonClick={ open }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Replace' ) }\n\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"editor-post-featured-image__action\"\n\t\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\t\tonRemoveImage();\n\t\t\t\t\t\t\t\t\t\t\t\ttoggleRef.current.focus();\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\t\t{ __( 'Remove' ) }\n\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t</HStack>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t<DropZone onFilesDrop={ onDropFiles } />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tvalue={ featuredImageId }\n\t\t\t\t\t/>\n\t\t\t\t</MediaUploadCheck>\n\t\t\t</div>\n\t\t</PostFeaturedImageCheck>\n\t);\n}\n\nconst applyWithSelect = withSelect( ( select ) => {\n\tconst { getMedia, getPostType } = select( coreStore );\n\tconst { getCurrentPostId, getEditedPostAttribute } = select( editorStore );\n\tconst featuredImageId = getEditedPostAttribute( 'featured_media' );\n\n\treturn {\n\t\tmedia: featuredImageId\n\t\t\t? getMedia( featuredImageId, { context: 'view' } )\n\t\t\t: null,\n\t\tcurrentPostId: getCurrentPostId(),\n\t\tpostType: getPostType( getEditedPostAttribute( 'type' ) ),\n\t\tfeaturedImageId,\n\t};\n} );\n\nconst applyWithDispatch = withDispatch(\n\t( dispatch, { noticeOperations }, { select } ) => {\n\t\tconst { editPost } = dispatch( editorStore );\n\t\treturn {\n\t\t\tonUpdateImage( image ) {\n\t\t\t\teditPost( { featured_media: image.id } );\n\t\t\t},\n\t\t\tonDropImage( filesList ) {\n\t\t\t\tselect( blockEditorStore )\n\t\t\t\t\t.getSettings()\n\t\t\t\t\t.mediaUpload( {\n\t\t\t\t\t\tallowedTypes: [ 'image' ],\n\t\t\t\t\t\tfilesList,\n\t\t\t\t\t\tonFileChange( [ image ] ) {\n\t\t\t\t\t\t\teditPost( { featured_media: image.id } );\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonError( message ) {\n\t\t\t\t\t\t\tnoticeOperations.removeAllNotices();\n\t\t\t\t\t\t\tnoticeOperations.createErrorNotice( message );\n\t\t\t\t\t\t},\n\t\t\t\t\t} );\n\t\t\t},\n\t\t\tonRemoveImage() {\n\t\t\t\teditPost( { featured_media: 0 } );\n\t\t\t},\n\t\t};\n\t}\n);\n\nexport default compose(\n\twithNotices,\n\tapplyWithSelect,\n\tapplyWithDispatch,\n\twithFilters( 'editor.PostFeaturedImage' )\n)( PostFeaturedImage );\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_i18n","require","_hooks","_components","_blob","_element","_compose","_data","_blockEditor","_coreData","_check","_interopRequireDefault","_store","ALLOWED_MEDIA_TYPES","DEFAULT_FEATURE_IMAGE_LABEL","__","DEFAULT_SET_FEATURE_IMAGE_LABEL","instructions","_react","createElement","getMediaDetails","media","postId","_media$media_details$","_media$media_details$2","defaultSize","applyFilters","id","media_details","sizes","mediaWidth","width","mediaHeight","height","mediaSourceUrl","source_url","fallbackSize","PostFeaturedImage","currentPostId","featuredImageId","onUpdateImage","onRemoveImage","postType","noticeUI","noticeOperations","toggleRef","useRef","isLoading","setIsLoading","useState","getSettings","useSelect","blockEditorStore","onDropFiles","filesList","mediaUpload","allowedTypes","onFileChange","image","isBlobURL","url","onError","message","removeAllNotices","createErrorNotice","default","className","alt_text","sprintf","full","file","slug","MediaUploadCheck","fallback","MediaUpload","title","labels","featured_image","onSelect","unstableFeaturedImageFlow","modalClass","render","open","Button","ref","onClick","src","alt","Spinner","set_featured_image","__experimentalHStack","current","focus","DropZone","onFilesDrop","value","applyWithSelect","withSelect","select","getMedia","getPostType","coreStore","getCurrentPostId","getEditedPostAttribute","editorStore","context","applyWithDispatch","withDispatch","dispatch","editPost","featured_media","onDropImage","_default","exports","compose","withNotices","withFilters"],"sources":["@wordpress/editor/src/components/post-featured-image/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { applyFilters } from '@wordpress/hooks';\nimport {\n\tDropZone,\n\tButton,\n\tSpinner,\n\twithNotices,\n\twithFilters,\n\t__experimentalHStack as HStack,\n} from '@wordpress/components';\nimport { isBlobURL } from '@wordpress/blob';\nimport { useState, useRef } from '@wordpress/element';\nimport { compose } from '@wordpress/compose';\nimport { useSelect, withDispatch, withSelect } from '@wordpress/data';\nimport {\n\tMediaUpload,\n\tMediaUploadCheck,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport PostFeaturedImageCheck from './check';\nimport { store as editorStore } from '../../store';\n\nconst ALLOWED_MEDIA_TYPES = [ 'image' ];\n\n// Used when labels from post type were not yet loaded or when they are not present.\nconst DEFAULT_FEATURE_IMAGE_LABEL = __( 'Featured image' );\nconst DEFAULT_SET_FEATURE_IMAGE_LABEL = __( 'Set featured image' );\n\nconst instructions = (\n\t<p>\n\t\t{ __(\n\t\t\t'To edit the featured image, you need permission to upload media.'\n\t\t) }\n\t</p>\n);\n\nfunction getMediaDetails( media, postId ) {\n\tif ( ! media ) {\n\t\treturn {};\n\t}\n\n\tconst defaultSize = applyFilters(\n\t\t'editor.PostFeaturedImage.imageSize',\n\t\t'large',\n\t\tmedia.id,\n\t\tpostId\n\t);\n\tif ( defaultSize in ( media?.media_details?.sizes ?? {} ) ) {\n\t\treturn {\n\t\t\tmediaWidth: media.media_details.sizes[ defaultSize ].width,\n\t\t\tmediaHeight: media.media_details.sizes[ defaultSize ].height,\n\t\t\tmediaSourceUrl: media.media_details.sizes[ defaultSize ].source_url,\n\t\t};\n\t}\n\n\t// Use fallbackSize when defaultSize is not available.\n\tconst fallbackSize = applyFilters(\n\t\t'editor.PostFeaturedImage.imageSize',\n\t\t'thumbnail',\n\t\tmedia.id,\n\t\tpostId\n\t);\n\tif ( fallbackSize in ( media?.media_details?.sizes ?? {} ) ) {\n\t\treturn {\n\t\t\tmediaWidth: media.media_details.sizes[ fallbackSize ].width,\n\t\t\tmediaHeight: media.media_details.sizes[ fallbackSize ].height,\n\t\t\tmediaSourceUrl:\n\t\t\t\tmedia.media_details.sizes[ fallbackSize ].source_url,\n\t\t};\n\t}\n\n\t// Use full image size when fallbackSize and defaultSize are not available.\n\treturn {\n\t\tmediaWidth: media.media_details.width,\n\t\tmediaHeight: media.media_details.height,\n\t\tmediaSourceUrl: media.source_url,\n\t};\n}\n\nfunction PostFeaturedImage( {\n\tcurrentPostId,\n\tfeaturedImageId,\n\tonUpdateImage,\n\tonRemoveImage,\n\tmedia,\n\tpostType,\n\tnoticeUI,\n\tnoticeOperations,\n} ) {\n\tconst toggleRef = useRef();\n\tconst [ isLoading, setIsLoading ] = useState( false );\n\tconst { getSettings } = useSelect( blockEditorStore );\n\tconst { mediaSourceUrl } = getMediaDetails( media, currentPostId );\n\n\tfunction onDropFiles( filesList ) {\n\t\tgetSettings().mediaUpload( {\n\t\t\tallowedTypes: ALLOWED_MEDIA_TYPES,\n\t\t\tfilesList,\n\t\t\tonFileChange( [ image ] ) {\n\t\t\t\tif ( isBlobURL( image?.url ) ) {\n\t\t\t\t\tsetIsLoading( true );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif ( image ) {\n\t\t\t\t\tonUpdateImage( image );\n\t\t\t\t}\n\t\t\t\tsetIsLoading( false );\n\t\t\t},\n\t\t\tonError( message ) {\n\t\t\t\tnoticeOperations.removeAllNotices();\n\t\t\t\tnoticeOperations.createErrorNotice( message );\n\t\t\t},\n\t\t} );\n\t}\n\n\treturn (\n\t\t<PostFeaturedImageCheck>\n\t\t\t{ noticeUI }\n\t\t\t<div className=\"editor-post-featured-image\">\n\t\t\t\t{ media && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tid={ `editor-post-featured-image-${ featuredImageId }-describedby` }\n\t\t\t\t\t\tclassName=\"hidden\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ media.alt_text &&\n\t\t\t\t\t\t\tsprintf(\n\t\t\t\t\t\t\t\t// Translators: %s: The selected image alt text.\n\t\t\t\t\t\t\t\t__( 'Current image: %s' ),\n\t\t\t\t\t\t\t\tmedia.alt_text\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ ! media.alt_text &&\n\t\t\t\t\t\t\tsprintf(\n\t\t\t\t\t\t\t\t// Translators: %s: The selected image filename.\n\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t'The current image has no alternative text. The file name is: %s'\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tmedia.media_details.sizes?.full?.file ||\n\t\t\t\t\t\t\t\t\tmedia.slug\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t\t<MediaUploadCheck fallback={ instructions }>\n\t\t\t\t\t<MediaUpload\n\t\t\t\t\t\ttitle={\n\t\t\t\t\t\t\tpostType?.labels?.featured_image ||\n\t\t\t\t\t\t\tDEFAULT_FEATURE_IMAGE_LABEL\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonSelect={ onUpdateImage }\n\t\t\t\t\t\tunstableFeaturedImageFlow\n\t\t\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\t\t\tmodalClass=\"editor-post-featured-image__media-modal\"\n\t\t\t\t\t\trender={ ( { open } ) => (\n\t\t\t\t\t\t\t<div className=\"editor-post-featured-image__container\">\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\tref={ toggleRef }\n\t\t\t\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\t\t\t\t! featuredImageId\n\t\t\t\t\t\t\t\t\t\t\t? 'editor-post-featured-image__toggle'\n\t\t\t\t\t\t\t\t\t\t\t: 'editor-post-featured-image__preview'\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tonClick={ open }\n\t\t\t\t\t\t\t\t\taria-label={\n\t\t\t\t\t\t\t\t\t\t! featuredImageId\n\t\t\t\t\t\t\t\t\t\t\t? null\n\t\t\t\t\t\t\t\t\t\t\t: __( 'Edit or replace the image' )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\taria-describedby={\n\t\t\t\t\t\t\t\t\t\t! featuredImageId\n\t\t\t\t\t\t\t\t\t\t\t? null\n\t\t\t\t\t\t\t\t\t\t\t: `editor-post-featured-image-${ featuredImageId }-describedby`\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\t\t{ !! featuredImageId && media && (\n\t\t\t\t\t\t\t\t\t\t<img\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"editor-post-featured-image__preview-image\"\n\t\t\t\t\t\t\t\t\t\t\tsrc={ mediaSourceUrl }\n\t\t\t\t\t\t\t\t\t\t\talt=\"\"\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{ isLoading && <Spinner /> }\n\t\t\t\t\t\t\t\t\t{ ! featuredImageId &&\n\t\t\t\t\t\t\t\t\t\t! isLoading &&\n\t\t\t\t\t\t\t\t\t\t( postType?.labels\n\t\t\t\t\t\t\t\t\t\t\t?.set_featured_image ||\n\t\t\t\t\t\t\t\t\t\t\tDEFAULT_SET_FEATURE_IMAGE_LABEL ) }\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t{ !! featuredImageId && (\n\t\t\t\t\t\t\t\t\t<HStack className=\"editor-post-featured-image__actions\">\n\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"editor-post-featured-image__action\"\n\t\t\t\t\t\t\t\t\t\t\tonClick={ open }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Replace' ) }\n\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"editor-post-featured-image__action\"\n\t\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\t\tonRemoveImage();\n\t\t\t\t\t\t\t\t\t\t\t\ttoggleRef.current.focus();\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\t\t{ __( 'Remove' ) }\n\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t</HStack>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t<DropZone onFilesDrop={ onDropFiles } />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tvalue={ featuredImageId }\n\t\t\t\t\t/>\n\t\t\t\t</MediaUploadCheck>\n\t\t\t</div>\n\t\t</PostFeaturedImageCheck>\n\t);\n}\n\nconst applyWithSelect = withSelect( ( select ) => {\n\tconst { getMedia, getPostType } = select( coreStore );\n\tconst { getCurrentPostId, getEditedPostAttribute } = select( editorStore );\n\tconst featuredImageId = getEditedPostAttribute( 'featured_media' );\n\n\treturn {\n\t\tmedia: featuredImageId\n\t\t\t? getMedia( featuredImageId, { context: 'view' } )\n\t\t\t: null,\n\t\tcurrentPostId: getCurrentPostId(),\n\t\tpostType: getPostType( getEditedPostAttribute( 'type' ) ),\n\t\tfeaturedImageId,\n\t};\n} );\n\nconst applyWithDispatch = withDispatch(\n\t( dispatch, { noticeOperations }, { select } ) => {\n\t\tconst { editPost } = dispatch( editorStore );\n\t\treturn {\n\t\t\tonUpdateImage( image ) {\n\t\t\t\teditPost( { featured_media: image.id } );\n\t\t\t},\n\t\t\tonDropImage( filesList ) {\n\t\t\t\tselect( blockEditorStore )\n\t\t\t\t\t.getSettings()\n\t\t\t\t\t.mediaUpload( {\n\t\t\t\t\t\tallowedTypes: [ 'image' ],\n\t\t\t\t\t\tfilesList,\n\t\t\t\t\t\tonFileChange( [ image ] ) {\n\t\t\t\t\t\t\teditPost( { featured_media: image.id } );\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonError( message ) {\n\t\t\t\t\t\t\tnoticeOperations.removeAllNotices();\n\t\t\t\t\t\t\tnoticeOperations.createErrorNotice( message );\n\t\t\t\t\t\t},\n\t\t\t\t\t} );\n\t\t\t},\n\t\t\tonRemoveImage() {\n\t\t\t\teditPost( { featured_media: 0 } );\n\t\t\t},\n\t\t};\n\t}\n);\n\nexport default compose(\n\twithNotices,\n\tapplyWithSelect,\n\tapplyWithDispatch,\n\twithFilters( 'editor.PostFeaturedImage' )\n)( PostFeaturedImage );\n"],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.default =
|
|
7
|
+
exports.default = PostFeaturedImagePanel;
|
|
8
8
|
var _react = require("react");
|
|
9
9
|
var _i18n = require("@wordpress/i18n");
|
|
10
10
|
var _components = require("@wordpress/components");
|
|
@@ -22,7 +22,9 @@ var _check = _interopRequireDefault(require("./check"));
|
|
|
22
22
|
*/
|
|
23
23
|
|
|
24
24
|
const PANEL_NAME = 'featured-image';
|
|
25
|
-
function
|
|
25
|
+
function PostFeaturedImagePanel({
|
|
26
|
+
withPanelBody = true
|
|
27
|
+
}) {
|
|
26
28
|
var _postType$labels$feat;
|
|
27
29
|
const {
|
|
28
30
|
postType,
|
|
@@ -49,11 +51,13 @@ function FeaturedImage() {
|
|
|
49
51
|
if (!isEnabled) {
|
|
50
52
|
return null;
|
|
51
53
|
}
|
|
54
|
+
if (!withPanelBody) {
|
|
55
|
+
return (0, _react.createElement)(_check.default, null, (0, _react.createElement)(_index.default, null));
|
|
56
|
+
}
|
|
52
57
|
return (0, _react.createElement)(_check.default, null, (0, _react.createElement)(_components.PanelBody, {
|
|
53
58
|
title: (_postType$labels$feat = postType?.labels?.featured_image) !== null && _postType$labels$feat !== void 0 ? _postType$labels$feat : (0, _i18n.__)('Featured image'),
|
|
54
59
|
opened: isOpened,
|
|
55
60
|
onToggle: () => toggleEditorPanelOpened(PANEL_NAME)
|
|
56
61
|
}, (0, _react.createElement)(_index.default, null)));
|
|
57
62
|
}
|
|
58
|
-
var _default = exports.default = FeaturedImage;
|
|
59
63
|
//# sourceMappingURL=panel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_i18n","require","_components","_data","_coreData","_store","_index","_interopRequireDefault","_check","PANEL_NAME","
|
|
1
|
+
{"version":3,"names":["_i18n","require","_components","_data","_coreData","_store","_index","_interopRequireDefault","_check","PANEL_NAME","PostFeaturedImagePanel","withPanelBody","_postType$labels$feat","postType","isEnabled","isOpened","useSelect","select","getEditedPostAttribute","isEditorPanelEnabled","isEditorPanelOpened","editorStore","getPostType","coreStore","toggleEditorPanelOpened","useDispatch","_react","createElement","default","PanelBody","title","labels","featured_image","__","opened","onToggle"],"sources":["@wordpress/editor/src/components/post-featured-image/panel.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { PanelBody } from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../../store';\nimport PostFeaturedImage from './index';\nimport PostFeaturedImageCheck from './check';\n\nconst PANEL_NAME = 'featured-image';\n\nexport default function PostFeaturedImagePanel( { withPanelBody = true } ) {\n\tconst { postType, isEnabled, isOpened } = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tgetEditedPostAttribute,\n\t\t\tisEditorPanelEnabled,\n\t\t\tisEditorPanelOpened,\n\t\t} = select( editorStore );\n\t\tconst { getPostType } = select( coreStore );\n\n\t\treturn {\n\t\t\tpostType: getPostType( getEditedPostAttribute( 'type' ) ),\n\t\t\tisEnabled: isEditorPanelEnabled( PANEL_NAME ),\n\t\t\tisOpened: isEditorPanelOpened( PANEL_NAME ),\n\t\t};\n\t}, [] );\n\n\tconst { toggleEditorPanelOpened } = useDispatch( editorStore );\n\n\tif ( ! isEnabled ) {\n\t\treturn null;\n\t}\n\n\tif ( ! withPanelBody ) {\n\t\treturn (\n\t\t\t<PostFeaturedImageCheck>\n\t\t\t\t<PostFeaturedImage />\n\t\t\t</PostFeaturedImageCheck>\n\t\t);\n\t}\n\n\treturn (\n\t\t<PostFeaturedImageCheck>\n\t\t\t<PanelBody\n\t\t\t\ttitle={\n\t\t\t\t\tpostType?.labels?.featured_image ?? __( 'Featured image' )\n\t\t\t\t}\n\t\t\t\topened={ isOpened }\n\t\t\t\tonToggle={ () => toggleEditorPanelOpened( PANEL_NAME ) }\n\t\t\t>\n\t\t\t\t<PostFeaturedImage />\n\t\t\t</PanelBody>\n\t\t</PostFeaturedImageCheck>\n\t);\n}\n"],"mappings":";;;;;;;;AAGA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AACA,IAAAG,SAAA,GAAAH,OAAA;AAKA,IAAAI,MAAA,GAAAJ,OAAA;AACA,IAAAK,MAAA,GAAAC,sBAAA,CAAAN,OAAA;AACA,IAAAO,MAAA,GAAAD,sBAAA,CAAAN,OAAA;AAbA;AACA;AACA;;AAMA;AACA;AACA;;AAKA,MAAMQ,UAAU,GAAG,gBAAgB;AAEpB,SAASC,sBAAsBA,CAAE;EAAEC,aAAa,GAAG;AAAK,CAAC,EAAG;EAAA,IAAAC,qBAAA;EAC1E,MAAM;IAAEC,QAAQ;IAAEC,SAAS;IAAEC;EAAS,CAAC,GAAG,IAAAC,eAAS,EAAIC,MAAM,IAAM;IAClE,MAAM;MACLC,sBAAsB;MACtBC,oBAAoB;MACpBC;IACD,CAAC,GAAGH,MAAM,CAAEI,YAAY,CAAC;IACzB,MAAM;MAAEC;IAAY,CAAC,GAAGL,MAAM,CAAEM,eAAU,CAAC;IAE3C,OAAO;MACNV,QAAQ,EAAES,WAAW,CAAEJ,sBAAsB,CAAE,MAAO,CAAE,CAAC;MACzDJ,SAAS,EAAEK,oBAAoB,CAAEV,UAAW,CAAC;MAC7CM,QAAQ,EAAEK,mBAAmB,CAAEX,UAAW;IAC3C,CAAC;EACF,CAAC,EAAE,EAAG,CAAC;EAEP,MAAM;IAAEe;EAAwB,CAAC,GAAG,IAAAC,iBAAW,EAAEJ,YAAY,CAAC;EAE9D,IAAK,CAAEP,SAAS,EAAG;IAClB,OAAO,IAAI;EACZ;EAEA,IAAK,CAAEH,aAAa,EAAG;IACtB,OACC,IAAAe,MAAA,CAAAC,aAAA,EAACnB,MAAA,CAAAoB,OAAsB,QACtB,IAAAF,MAAA,CAAAC,aAAA,EAACrB,MAAA,CAAAsB,OAAiB,MAAE,CACG,CAAC;EAE3B;EAEA,OACC,IAAAF,MAAA,CAAAC,aAAA,EAACnB,MAAA,CAAAoB,OAAsB,QACtB,IAAAF,MAAA,CAAAC,aAAA,EAACzB,WAAA,CAAA2B,SAAS;IACTC,KAAK,GAAAlB,qBAAA,GACJC,QAAQ,EAAEkB,MAAM,EAAEC,cAAc,cAAApB,qBAAA,cAAAA,qBAAA,GAAI,IAAAqB,QAAE,EAAE,gBAAiB,CACzD;IACDC,MAAM,EAAGnB,QAAU;IACnBoB,QAAQ,EAAGA,CAAA,KAAMX,uBAAuB,CAAEf,UAAW;EAAG,GAExD,IAAAiB,MAAA,CAAAC,aAAA,EAACrB,MAAA,CAAAsB,OAAiB,MAAE,CACV,CACY,CAAC;AAE3B"}
|
|
@@ -4,17 +4,12 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.PostSyncStatusModal = PostSyncStatusModal;
|
|
8
7
|
exports.default = PostSyncStatus;
|
|
9
8
|
var _react = require("react");
|
|
10
9
|
var _data = require("@wordpress/data");
|
|
11
10
|
var _i18n = require("@wordpress/i18n");
|
|
12
|
-
var _components = require("@wordpress/components");
|
|
13
|
-
var _element = require("@wordpress/element");
|
|
14
|
-
var _blockEditor = require("@wordpress/block-editor");
|
|
15
11
|
var _postPanelRow = _interopRequireDefault(require("../post-panel-row"));
|
|
16
12
|
var _store = require("../../store");
|
|
17
|
-
var _lockUnlock = require("../../lock-unlock");
|
|
18
13
|
/**
|
|
19
14
|
* WordPress dependencies
|
|
20
15
|
*/
|
|
@@ -23,9 +18,6 @@ var _lockUnlock = require("../../lock-unlock");
|
|
|
23
18
|
* Internal dependencies
|
|
24
19
|
*/
|
|
25
20
|
|
|
26
|
-
const {
|
|
27
|
-
ReusableBlocksRenameHint
|
|
28
|
-
} = (0, _lockUnlock.unlock)(_blockEditor.privateApis);
|
|
29
21
|
function PostSyncStatus() {
|
|
30
22
|
const {
|
|
31
23
|
syncStatus,
|
|
@@ -52,68 +44,4 @@ function PostSyncStatus() {
|
|
|
52
44
|
className: "editor-post-sync-status__value"
|
|
53
45
|
}, syncStatus === 'unsynced' ? (0, _i18n._x)('Not synced', 'Text that indicates that the pattern is not synchronized') : (0, _i18n._x)('Synced', 'Text that indicates that the pattern is synchronized')));
|
|
54
46
|
}
|
|
55
|
-
function PostSyncStatusModal() {
|
|
56
|
-
const {
|
|
57
|
-
editPost
|
|
58
|
-
} = (0, _data.useDispatch)(_store.store);
|
|
59
|
-
const [isModalOpen, setIsModalOpen] = (0, _element.useState)(false);
|
|
60
|
-
const [syncType, setSyncType] = (0, _element.useState)(undefined);
|
|
61
|
-
const {
|
|
62
|
-
postType,
|
|
63
|
-
isNewPost
|
|
64
|
-
} = (0, _data.useSelect)(select => {
|
|
65
|
-
const {
|
|
66
|
-
getEditedPostAttribute,
|
|
67
|
-
isCleanNewPost
|
|
68
|
-
} = select(_store.store);
|
|
69
|
-
return {
|
|
70
|
-
postType: getEditedPostAttribute('type'),
|
|
71
|
-
isNewPost: isCleanNewPost()
|
|
72
|
-
};
|
|
73
|
-
}, []);
|
|
74
|
-
(0, _element.useEffect)(() => {
|
|
75
|
-
if (isNewPost && postType === 'wp_block') {
|
|
76
|
-
setIsModalOpen(true);
|
|
77
|
-
}
|
|
78
|
-
// We only want the modal to open when the page is first loaded.
|
|
79
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
80
|
-
}, []);
|
|
81
|
-
const setSyncStatus = () => {
|
|
82
|
-
editPost({
|
|
83
|
-
meta: {
|
|
84
|
-
wp_pattern_sync_status: syncType
|
|
85
|
-
}
|
|
86
|
-
});
|
|
87
|
-
};
|
|
88
|
-
if (postType !== 'wp_block' || !isNewPost) {
|
|
89
|
-
return null;
|
|
90
|
-
}
|
|
91
|
-
return (0, _react.createElement)(_react.Fragment, null, isModalOpen && (0, _react.createElement)(_components.Modal, {
|
|
92
|
-
title: (0, _i18n.__)('Set pattern sync status'),
|
|
93
|
-
onRequestClose: () => {
|
|
94
|
-
setIsModalOpen(false);
|
|
95
|
-
},
|
|
96
|
-
overlayClassName: "reusable-blocks-menu-items__convert-modal"
|
|
97
|
-
}, (0, _react.createElement)("form", {
|
|
98
|
-
onSubmit: event => {
|
|
99
|
-
event.preventDefault();
|
|
100
|
-
setIsModalOpen(false);
|
|
101
|
-
setSyncStatus();
|
|
102
|
-
}
|
|
103
|
-
}, (0, _react.createElement)(_components.__experimentalVStack, {
|
|
104
|
-
spacing: "5"
|
|
105
|
-
}, (0, _react.createElement)(ReusableBlocksRenameHint, null), (0, _react.createElement)(_components.ToggleControl, {
|
|
106
|
-
label: (0, _i18n._x)('Synced', 'Option that makes an individual pattern synchronized'),
|
|
107
|
-
help: (0, _i18n.__)('Sync this pattern across multiple locations.'),
|
|
108
|
-
checked: !syncType,
|
|
109
|
-
onChange: () => {
|
|
110
|
-
setSyncType(!syncType ? 'unsynced' : undefined);
|
|
111
|
-
}
|
|
112
|
-
}), (0, _react.createElement)(_components.__experimentalHStack, {
|
|
113
|
-
justify: "right"
|
|
114
|
-
}, (0, _react.createElement)(_components.Button, {
|
|
115
|
-
variant: "primary",
|
|
116
|
-
type: "submit"
|
|
117
|
-
}, (0, _i18n.__)('Create')))))));
|
|
118
|
-
}
|
|
119
47
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_data","require","_i18n","
|
|
1
|
+
{"version":3,"names":["_data","require","_i18n","_postPanelRow","_interopRequireDefault","_store","PostSyncStatus","syncStatus","postType","useSelect","select","getEditedPostAttribute","editorStore","meta","currentSyncStatus","wp_pattern_sync_status","_react","createElement","default","label","__","className","_x"],"sources":["@wordpress/editor/src/components/post-sync-status/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { __, _x } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport PostPanelRow from '../post-panel-row';\nimport { store as editorStore } from '../../store';\n\nexport default function PostSyncStatus() {\n\tconst { syncStatus, postType } = useSelect( ( select ) => {\n\t\tconst { getEditedPostAttribute } = select( editorStore );\n\t\tconst meta = getEditedPostAttribute( 'meta' );\n\n\t\t// When the post is first created, the top level wp_pattern_sync_status is not set so get meta value instead.\n\t\tconst currentSyncStatus =\n\t\t\tmeta?.wp_pattern_sync_status === 'unsynced'\n\t\t\t\t? 'unsynced'\n\t\t\t\t: getEditedPostAttribute( 'wp_pattern_sync_status' );\n\n\t\treturn {\n\t\t\tsyncStatus: currentSyncStatus,\n\t\t\tpostType: getEditedPostAttribute( 'type' ),\n\t\t};\n\t} );\n\n\tif ( postType !== 'wp_block' ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<PostPanelRow label={ __( 'Sync status' ) }>\n\t\t\t<div className=\"editor-post-sync-status__value\">\n\t\t\t\t{ syncStatus === 'unsynced'\n\t\t\t\t\t? _x(\n\t\t\t\t\t\t\t'Not synced',\n\t\t\t\t\t\t\t'Text that indicates that the pattern is not synchronized'\n\t\t\t\t\t )\n\t\t\t\t\t: _x(\n\t\t\t\t\t\t\t'Synced',\n\t\t\t\t\t\t\t'Text that indicates that the pattern is synchronized'\n\t\t\t\t\t ) }\n\t\t\t</div>\n\t\t</PostPanelRow>\n\t);\n}\n"],"mappings":";;;;;;;;AAGA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AAKA,IAAAE,aAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,MAAA,GAAAJ,OAAA;AAVA;AACA;AACA;;AAIA;AACA;AACA;;AAIe,SAASK,cAAcA,CAAA,EAAG;EACxC,MAAM;IAAEC,UAAU;IAAEC;EAAS,CAAC,GAAG,IAAAC,eAAS,EAAIC,MAAM,IAAM;IACzD,MAAM;MAAEC;IAAuB,CAAC,GAAGD,MAAM,CAAEE,YAAY,CAAC;IACxD,MAAMC,IAAI,GAAGF,sBAAsB,CAAE,MAAO,CAAC;;IAE7C;IACA,MAAMG,iBAAiB,GACtBD,IAAI,EAAEE,sBAAsB,KAAK,UAAU,GACxC,UAAU,GACVJ,sBAAsB,CAAE,wBAAyB,CAAC;IAEtD,OAAO;MACNJ,UAAU,EAAEO,iBAAiB;MAC7BN,QAAQ,EAAEG,sBAAsB,CAAE,MAAO;IAC1C,CAAC;EACF,CAAE,CAAC;EAEH,IAAKH,QAAQ,KAAK,UAAU,EAAG;IAC9B,OAAO,IAAI;EACZ;EAEA,OACC,IAAAQ,MAAA,CAAAC,aAAA,EAACd,aAAA,CAAAe,OAAY;IAACC,KAAK,EAAG,IAAAC,QAAE,EAAE,aAAc;EAAG,GAC1C,IAAAJ,MAAA,CAAAC,aAAA;IAAKI,SAAS,EAAC;EAAgC,GAC5Cd,UAAU,KAAK,UAAU,GACxB,IAAAe,QAAE,EACF,YAAY,EACZ,0DACA,CAAC,GACD,IAAAA,QAAE,EACF,QAAQ,EACR,sDACA,CACC,CACQ,CAAC;AAEjB"}
|
|
@@ -45,7 +45,7 @@ const DEFAULT_QUERY = {
|
|
|
45
45
|
};
|
|
46
46
|
const isSameTermName = (termA, termB) => (0, _terms.unescapeString)(termA).toLowerCase() === (0, _terms.unescapeString)(termB).toLowerCase();
|
|
47
47
|
const termNamesToIds = (names, terms) => {
|
|
48
|
-
return names.map(termName => terms.find(term => isSameTermName(term.name, termName)).id);
|
|
48
|
+
return names.map(termName => terms.find(term => isSameTermName(term.name, termName))?.id).filter(id => id !== undefined);
|
|
49
49
|
};
|
|
50
50
|
function FlatTermSelector({
|
|
51
51
|
slug
|
|
@@ -162,7 +162,8 @@ function FlatTermSelector({
|
|
|
162
162
|
// The selector will always re-fetch terms later.
|
|
163
163
|
setValues(uniqueTerms);
|
|
164
164
|
if (newTermNames.length === 0) {
|
|
165
|
-
|
|
165
|
+
onUpdateTerms(termNamesToIds(uniqueTerms, availableTerms));
|
|
166
|
+
return;
|
|
166
167
|
}
|
|
167
168
|
if (!hasCreateAction) {
|
|
168
169
|
return;
|
|
@@ -171,11 +172,14 @@ function FlatTermSelector({
|
|
|
171
172
|
name: termName
|
|
172
173
|
}))).then(newTerms => {
|
|
173
174
|
const newAvailableTerms = availableTerms.concat(newTerms);
|
|
174
|
-
|
|
175
|
+
onUpdateTerms(termNamesToIds(uniqueTerms, newAvailableTerms));
|
|
175
176
|
}).catch(error => {
|
|
176
177
|
createErrorNotice(error.message, {
|
|
177
178
|
type: 'snackbar'
|
|
178
179
|
});
|
|
180
|
+
// In case of a failure, try assigning available terms.
|
|
181
|
+
// This will invalidate the optimistic update.
|
|
182
|
+
onUpdateTerms(termNamesToIds(uniqueTerms, availableTerms));
|
|
179
183
|
});
|
|
180
184
|
}
|
|
181
185
|
function appendTerm(newTerm) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_i18n","require","_element","_components","_data","_coreData","_compose","_a11y","_notices","_store","_terms","_mostUsedTerms","_interopRequireDefault","EMPTY_ARRAY","MAX_TERMS_SUGGESTIONS","DEFAULT_QUERY","per_page","_fields","context","isSameTermName","termA","termB","unescapeString","toLowerCase","termNamesToIds","names","terms","map","termName","find","term","name","id","FlatTermSelector","slug","_taxonomy$labels$add_","_taxonomy$labels$sing2","values","setValues","useState","search","setSearch","debouncedSearch","useDebounce","termIds","taxonomy","hasAssignAction","hasCreateAction","hasResolvedTerms","useSelect","select","_post$_links","_post$_links2","getCurrentPost","getEditedPostAttribute","editorStore","getEntityRecords","getTaxonomy","hasFinishedResolution","coreStore","post","_taxonomy","_termIds","rest_base","query","include","join","_links","length","searchResults","useEffect","newValues","suggestions","useMemo","editPost","useDispatch","saveEntityRecord","createErrorNotice","noticesStore","findOrCreateTerm","newTerm","throwOnError","unescapeTerm","error","code","data","term_id","onUpdateTerms","newTermIds","onChange","termNames","availableTerms","uniqueTerms","reduce","acc","some","n","push","newTermNames","filter","Promise","all","then","newTerms","newAvailableTerms","concat","catch","message","type","appendTerm","_taxonomy$labels$sing","includes","defaultName","__","termAddedMessage","sprintf","_x","labels","singular_name","speak","newTermLabel","add_new_item","singularName","termAddedLabel","termRemovedLabel","removeTermLabel","_react","createElement","Fragment","FormTokenField","__next40pxDefaultSize","value","onInputChange","maxSuggestions","label","messages","added","removed","remove","default","onSelect","_default","exports","withFilters"],"sources":["@wordpress/editor/src/components/post-taxonomies/flat-term-selector.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, _x, sprintf } from '@wordpress/i18n';\nimport { useEffect, useMemo, useState } from '@wordpress/element';\nimport { FormTokenField, withFilters } from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useDebounce } from '@wordpress/compose';\nimport { speak } from '@wordpress/a11y';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../../store';\nimport { unescapeString, unescapeTerm } from '../../utils/terms';\nimport MostUsedTerms from './most-used-terms';\n\n/**\n * Shared reference to an empty array for cases where it is important to avoid\n * returning a new array reference on every invocation.\n *\n * @type {Array<any>}\n */\nconst EMPTY_ARRAY = [];\n\n/**\n * Module constants\n */\nconst MAX_TERMS_SUGGESTIONS = 20;\nconst DEFAULT_QUERY = {\n\tper_page: MAX_TERMS_SUGGESTIONS,\n\t_fields: 'id,name',\n\tcontext: 'view',\n};\n\nconst isSameTermName = ( termA, termB ) =>\n\tunescapeString( termA ).toLowerCase() ===\n\tunescapeString( termB ).toLowerCase();\n\nconst termNamesToIds = ( names, terms ) => {\n\treturn names.map(\n\t\t( termName ) =>\n\t\t\tterms.find( ( term ) => isSameTermName( term.name, termName ) ).id\n\t);\n};\n\nexport function FlatTermSelector( { slug } ) {\n\tconst [ values, setValues ] = useState( [] );\n\tconst [ search, setSearch ] = useState( '' );\n\tconst debouncedSearch = useDebounce( setSearch, 500 );\n\n\tconst {\n\t\tterms,\n\t\ttermIds,\n\t\ttaxonomy,\n\t\thasAssignAction,\n\t\thasCreateAction,\n\t\thasResolvedTerms,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getCurrentPost, getEditedPostAttribute } =\n\t\t\t\tselect( editorStore );\n\t\t\tconst { getEntityRecords, getTaxonomy, hasFinishedResolution } =\n\t\t\t\tselect( coreStore );\n\t\t\tconst post = getCurrentPost();\n\t\t\tconst _taxonomy = getTaxonomy( slug );\n\t\t\tconst _termIds = _taxonomy\n\t\t\t\t? getEditedPostAttribute( _taxonomy.rest_base )\n\t\t\t\t: EMPTY_ARRAY;\n\n\t\t\tconst query = {\n\t\t\t\t...DEFAULT_QUERY,\n\t\t\t\tinclude: _termIds.join( ',' ),\n\t\t\t\tper_page: -1,\n\t\t\t};\n\n\t\t\treturn {\n\t\t\t\thasCreateAction: _taxonomy\n\t\t\t\t\t? post._links?.[\n\t\t\t\t\t\t\t'wp:action-create-' + _taxonomy.rest_base\n\t\t\t\t\t ] ?? false\n\t\t\t\t\t: false,\n\t\t\t\thasAssignAction: _taxonomy\n\t\t\t\t\t? post._links?.[\n\t\t\t\t\t\t\t'wp:action-assign-' + _taxonomy.rest_base\n\t\t\t\t\t ] ?? false\n\t\t\t\t\t: false,\n\t\t\t\ttaxonomy: _taxonomy,\n\t\t\t\ttermIds: _termIds,\n\t\t\t\tterms: _termIds.length\n\t\t\t\t\t? getEntityRecords( 'taxonomy', slug, query )\n\t\t\t\t\t: EMPTY_ARRAY,\n\t\t\t\thasResolvedTerms: hasFinishedResolution( 'getEntityRecords', [\n\t\t\t\t\t'taxonomy',\n\t\t\t\t\tslug,\n\t\t\t\t\tquery,\n\t\t\t\t] ),\n\t\t\t};\n\t\t},\n\t\t[ slug ]\n\t);\n\n\tconst { searchResults } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEntityRecords } = select( coreStore );\n\n\t\t\treturn {\n\t\t\t\tsearchResults: !! search\n\t\t\t\t\t? getEntityRecords( 'taxonomy', slug, {\n\t\t\t\t\t\t\t...DEFAULT_QUERY,\n\t\t\t\t\t\t\tsearch,\n\t\t\t\t\t } )\n\t\t\t\t\t: EMPTY_ARRAY,\n\t\t\t};\n\t\t},\n\t\t[ search, slug ]\n\t);\n\n\t// Update terms state only after the selectors are resolved.\n\t// We're using this to avoid terms temporarily disappearing on slow networks\n\t// while core data makes REST API requests.\n\tuseEffect( () => {\n\t\tif ( hasResolvedTerms ) {\n\t\t\tconst newValues = ( terms ?? [] ).map( ( term ) =>\n\t\t\t\tunescapeString( term.name )\n\t\t\t);\n\n\t\t\tsetValues( newValues );\n\t\t}\n\t}, [ terms, hasResolvedTerms ] );\n\n\tconst suggestions = useMemo( () => {\n\t\treturn ( searchResults ?? [] ).map( ( term ) =>\n\t\t\tunescapeString( term.name )\n\t\t);\n\t}, [ searchResults ] );\n\n\tconst { editPost } = useDispatch( editorStore );\n\tconst { saveEntityRecord } = useDispatch( coreStore );\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\n\tif ( ! hasAssignAction ) {\n\t\treturn null;\n\t}\n\n\tasync function findOrCreateTerm( term ) {\n\t\ttry {\n\t\t\tconst newTerm = await saveEntityRecord( 'taxonomy', slug, term, {\n\t\t\t\tthrowOnError: true,\n\t\t\t} );\n\t\t\treturn unescapeTerm( newTerm );\n\t\t} catch ( error ) {\n\t\t\tif ( error.code !== 'term_exists' ) {\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tid: error.data.term_id,\n\t\t\t\tname: term.name,\n\t\t\t};\n\t\t}\n\t}\n\n\tfunction onUpdateTerms( newTermIds ) {\n\t\teditPost( { [ taxonomy.rest_base ]: newTermIds } );\n\t}\n\n\tfunction onChange( termNames ) {\n\t\tconst availableTerms = [\n\t\t\t...( terms ?? [] ),\n\t\t\t...( searchResults ?? [] ),\n\t\t];\n\t\tconst uniqueTerms = termNames.reduce( ( acc, name ) => {\n\t\t\tif (\n\t\t\t\t! acc.some( ( n ) => n.toLowerCase() === name.toLowerCase() )\n\t\t\t) {\n\t\t\t\tacc.push( name );\n\t\t\t}\n\t\t\treturn acc;\n\t\t}, [] );\n\n\t\tconst newTermNames = uniqueTerms.filter(\n\t\t\t( termName ) =>\n\t\t\t\t! availableTerms.find( ( term ) =>\n\t\t\t\t\tisSameTermName( term.name, termName )\n\t\t\t\t)\n\t\t);\n\n\t\t// Optimistically update term values.\n\t\t// The selector will always re-fetch terms later.\n\t\tsetValues( uniqueTerms );\n\n\t\tif ( newTermNames.length === 0 ) {\n\t\t\treturn onUpdateTerms(\n\t\t\t\ttermNamesToIds( uniqueTerms, availableTerms )\n\t\t\t);\n\t\t}\n\n\t\tif ( ! hasCreateAction ) {\n\t\t\treturn;\n\t\t}\n\n\t\tPromise.all(\n\t\t\tnewTermNames.map( ( termName ) =>\n\t\t\t\tfindOrCreateTerm( { name: termName } )\n\t\t\t)\n\t\t)\n\t\t\t.then( ( newTerms ) => {\n\t\t\t\tconst newAvailableTerms = availableTerms.concat( newTerms );\n\t\t\t\treturn onUpdateTerms(\n\t\t\t\t\ttermNamesToIds( uniqueTerms, newAvailableTerms )\n\t\t\t\t);\n\t\t\t} )\n\t\t\t.catch( ( error ) => {\n\t\t\t\tcreateErrorNotice( error.message, {\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t} );\n\t\t\t} );\n\t}\n\n\tfunction appendTerm( newTerm ) {\n\t\tif ( termIds.includes( newTerm.id ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst newTermIds = [ ...termIds, newTerm.id ];\n\t\tconst defaultName = slug === 'post_tag' ? __( 'Tag' ) : __( 'Term' );\n\t\tconst termAddedMessage = sprintf(\n\t\t\t/* translators: %s: term name. */\n\t\t\t_x( '%s added', 'term' ),\n\t\t\ttaxonomy?.labels?.singular_name ?? defaultName\n\t\t);\n\n\t\tspeak( termAddedMessage, 'assertive' );\n\t\tonUpdateTerms( newTermIds );\n\t}\n\n\tconst newTermLabel =\n\t\ttaxonomy?.labels?.add_new_item ??\n\t\t( slug === 'post_tag' ? __( 'Add new tag' ) : __( 'Add new Term' ) );\n\tconst singularName =\n\t\ttaxonomy?.labels?.singular_name ??\n\t\t( slug === 'post_tag' ? __( 'Tag' ) : __( 'Term' ) );\n\tconst termAddedLabel = sprintf(\n\t\t/* translators: %s: term name. */\n\t\t_x( '%s added', 'term' ),\n\t\tsingularName\n\t);\n\tconst termRemovedLabel = sprintf(\n\t\t/* translators: %s: term name. */\n\t\t_x( '%s removed', 'term' ),\n\t\tsingularName\n\t);\n\tconst removeTermLabel = sprintf(\n\t\t/* translators: %s: term name. */\n\t\t_x( 'Remove %s', 'term' ),\n\t\tsingularName\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t<FormTokenField\n\t\t\t\t__next40pxDefaultSize\n\t\t\t\tvalue={ values }\n\t\t\t\tsuggestions={ suggestions }\n\t\t\t\tonChange={ onChange }\n\t\t\t\tonInputChange={ debouncedSearch }\n\t\t\t\tmaxSuggestions={ MAX_TERMS_SUGGESTIONS }\n\t\t\t\tlabel={ newTermLabel }\n\t\t\t\tmessages={ {\n\t\t\t\t\tadded: termAddedLabel,\n\t\t\t\t\tremoved: termRemovedLabel,\n\t\t\t\t\tremove: removeTermLabel,\n\t\t\t\t} }\n\t\t\t/>\n\t\t\t<MostUsedTerms taxonomy={ taxonomy } onSelect={ appendTerm } />\n\t\t</>\n\t);\n}\n\nexport default withFilters( 'editor.PostTaxonomyType' )( FlatTermSelector );\n"],"mappings":";;;;;;;;;AAGA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AACA,IAAAG,KAAA,GAAAH,OAAA;AACA,IAAAI,SAAA,GAAAJ,OAAA;AACA,IAAAK,QAAA,GAAAL,OAAA;AACA,IAAAM,KAAA,GAAAN,OAAA;AACA,IAAAO,QAAA,GAAAP,OAAA;AAKA,IAAAQ,MAAA,GAAAR,OAAA;AACA,IAAAS,MAAA,GAAAT,OAAA;AACA,IAAAU,cAAA,GAAAC,sBAAA,CAAAX,OAAA;AAjBA;AACA;AACA;;AAUA;AACA;AACA;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMY,WAAW,GAAG,EAAE;;AAEtB;AACA;AACA;AACA,MAAMC,qBAAqB,GAAG,EAAE;AAChC,MAAMC,aAAa,GAAG;EACrBC,QAAQ,EAAEF,qBAAqB;EAC/BG,OAAO,EAAE,SAAS;EAClBC,OAAO,EAAE;AACV,CAAC;AAED,MAAMC,cAAc,GAAGA,CAAEC,KAAK,EAAEC,KAAK,KACpC,IAAAC,qBAAc,EAAEF,KAAM,CAAC,CAACG,WAAW,CAAC,CAAC,KACrC,IAAAD,qBAAc,EAAED,KAAM,CAAC,CAACE,WAAW,CAAC,CAAC;AAEtC,MAAMC,cAAc,GAAGA,CAAEC,KAAK,EAAEC,KAAK,KAAM;EAC1C,OAAOD,KAAK,CAACE,GAAG,CACbC,QAAQ,IACTF,KAAK,CAACG,IAAI,CAAIC,IAAI,IAAMX,cAAc,CAAEW,IAAI,CAACC,IAAI,EAAEH,QAAS,CAAE,CAAC,CAACI,EAClE,CAAC;AACF,CAAC;AAEM,SAASC,gBAAgBA,CAAE;EAAEC;AAAK,CAAC,EAAG;EAAA,IAAAC,qBAAA,EAAAC,sBAAA;EAC5C,MAAM,CAAEC,MAAM,EAAEC,SAAS,CAAE,GAAG,IAAAC,iBAAQ,EAAE,EAAG,CAAC;EAC5C,MAAM,CAAEC,MAAM,EAAEC,SAAS,CAAE,GAAG,IAAAF,iBAAQ,EAAE,EAAG,CAAC;EAC5C,MAAMG,eAAe,GAAG,IAAAC,oBAAW,EAAEF,SAAS,EAAE,GAAI,CAAC;EAErD,MAAM;IACLf,KAAK;IACLkB,OAAO;IACPC,QAAQ;IACRC,eAAe;IACfC,eAAe;IACfC;EACD,CAAC,GAAG,IAAAC,eAAS,EACVC,MAAM,IAAM;IAAA,IAAAC,YAAA,EAAAC,aAAA;IACb,MAAM;MAAEC,cAAc;MAAEC;IAAuB,CAAC,GAC/CJ,MAAM,CAAEK,YAAY,CAAC;IACtB,MAAM;MAAEC,gBAAgB;MAAEC,WAAW;MAAEC;IAAsB,CAAC,GAC7DR,MAAM,CAAES,eAAU,CAAC;IACpB,MAAMC,IAAI,GAAGP,cAAc,CAAC,CAAC;IAC7B,MAAMQ,SAAS,GAAGJ,WAAW,CAAEvB,IAAK,CAAC;IACrC,MAAM4B,QAAQ,GAAGD,SAAS,GACvBP,sBAAsB,CAAEO,SAAS,CAACE,SAAU,CAAC,GAC7ClD,WAAW;IAEd,MAAMmD,KAAK,GAAG;MACb,GAAGjD,aAAa;MAChBkD,OAAO,EAAEH,QAAQ,CAACI,IAAI,CAAE,GAAI,CAAC;MAC7BlD,QAAQ,EAAE,CAAC;IACZ,CAAC;IAED,OAAO;MACN+B,eAAe,EAAEc,SAAS,IAAAV,YAAA,GACvBS,IAAI,CAACO,MAAM,GACX,mBAAmB,GAAGN,SAAS,CAACE,SAAS,CACxC,cAAAZ,YAAA,cAAAA,YAAA,GAAI,KAAK,GACV,KAAK;MACRL,eAAe,EAAEe,SAAS,IAAAT,aAAA,GACvBQ,IAAI,CAACO,MAAM,GACX,mBAAmB,GAAGN,SAAS,CAACE,SAAS,CACxC,cAAAX,aAAA,cAAAA,aAAA,GAAI,KAAK,GACV,KAAK;MACRP,QAAQ,EAAEgB,SAAS;MACnBjB,OAAO,EAAEkB,QAAQ;MACjBpC,KAAK,EAAEoC,QAAQ,CAACM,MAAM,GACnBZ,gBAAgB,CAAE,UAAU,EAAEtB,IAAI,EAAE8B,KAAM,CAAC,GAC3CnD,WAAW;MACdmC,gBAAgB,EAAEU,qBAAqB,CAAE,kBAAkB,EAAE,CAC5D,UAAU,EACVxB,IAAI,EACJ8B,KAAK,CACJ;IACH,CAAC;EACF,CAAC,EACD,CAAE9B,IAAI,CACP,CAAC;EAED,MAAM;IAAEmC;EAAc,CAAC,GAAG,IAAApB,eAAS,EAChCC,MAAM,IAAM;IACb,MAAM;MAAEM;IAAiB,CAAC,GAAGN,MAAM,CAAES,eAAU,CAAC;IAEhD,OAAO;MACNU,aAAa,EAAE,CAAC,CAAE7B,MAAM,GACrBgB,gBAAgB,CAAE,UAAU,EAAEtB,IAAI,EAAE;QACpC,GAAGnB,aAAa;QAChByB;MACA,CAAE,CAAC,GACH3B;IACJ,CAAC;EACF,CAAC,EACD,CAAE2B,MAAM,EAAEN,IAAI,CACf,CAAC;;EAED;EACA;EACA;EACA,IAAAoC,kBAAS,EAAE,MAAM;IAChB,IAAKtB,gBAAgB,EAAG;MACvB,MAAMuB,SAAS,GAAG,CAAE7C,KAAK,aAALA,KAAK,cAALA,KAAK,GAAI,EAAE,EAAGC,GAAG,CAAIG,IAAI,IAC5C,IAAAR,qBAAc,EAAEQ,IAAI,CAACC,IAAK,CAC3B,CAAC;MAEDO,SAAS,CAAEiC,SAAU,CAAC;IACvB;EACD,CAAC,EAAE,CAAE7C,KAAK,EAAEsB,gBAAgB,CAAG,CAAC;EAEhC,MAAMwB,WAAW,GAAG,IAAAC,gBAAO,EAAE,MAAM;IAClC,OAAO,CAAEJ,aAAa,aAAbA,aAAa,cAAbA,aAAa,GAAI,EAAE,EAAG1C,GAAG,CAAIG,IAAI,IACzC,IAAAR,qBAAc,EAAEQ,IAAI,CAACC,IAAK,CAC3B,CAAC;EACF,CAAC,EAAE,CAAEsC,aAAa,CAAG,CAAC;EAEtB,MAAM;IAAEK;EAAS,CAAC,GAAG,IAAAC,iBAAW,EAAEpB,YAAY,CAAC;EAC/C,MAAM;IAAEqB;EAAiB,CAAC,GAAG,IAAAD,iBAAW,EAAEhB,eAAU,CAAC;EACrD,MAAM;IAAEkB;EAAkB,CAAC,GAAG,IAAAF,iBAAW,EAAEG,cAAa,CAAC;EAEzD,IAAK,CAAEhC,eAAe,EAAG;IACxB,OAAO,IAAI;EACZ;EAEA,eAAeiC,gBAAgBA,CAAEjD,IAAI,EAAG;IACvC,IAAI;MACH,MAAMkD,OAAO,GAAG,MAAMJ,gBAAgB,CAAE,UAAU,EAAE1C,IAAI,EAAEJ,IAAI,EAAE;QAC/DmD,YAAY,EAAE;MACf,CAAE,CAAC;MACH,OAAO,IAAAC,mBAAY,EAAEF,OAAQ,CAAC;IAC/B,CAAC,CAAC,OAAQG,KAAK,EAAG;MACjB,IAAKA,KAAK,CAACC,IAAI,KAAK,aAAa,EAAG;QACnC,MAAMD,KAAK;MACZ;MAEA,OAAO;QACNnD,EAAE,EAAEmD,KAAK,CAACE,IAAI,CAACC,OAAO;QACtBvD,IAAI,EAAED,IAAI,CAACC;MACZ,CAAC;IACF;EACD;EAEA,SAASwD,aAAaA,CAAEC,UAAU,EAAG;IACpCd,QAAQ,CAAE;MAAE,CAAE7B,QAAQ,CAACkB,SAAS,GAAIyB;IAAW,CAAE,CAAC;EACnD;EAEA,SAASC,QAAQA,CAAEC,SAAS,EAAG;IAC9B,MAAMC,cAAc,GAAG,CACtB,IAAKjE,KAAK,aAALA,KAAK,cAALA,KAAK,GAAI,EAAE,CAAE,EAClB,IAAK2C,aAAa,aAAbA,aAAa,cAAbA,aAAa,GAAI,EAAE,CAAE,CAC1B;IACD,MAAMuB,WAAW,GAAGF,SAAS,CAACG,MAAM,CAAE,CAAEC,GAAG,EAAE/D,IAAI,KAAM;MACtD,IACC,CAAE+D,GAAG,CAACC,IAAI,CAAIC,CAAC,IAAMA,CAAC,CAACzE,WAAW,CAAC,CAAC,KAAKQ,IAAI,CAACR,WAAW,CAAC,CAAE,CAAC,EAC5D;QACDuE,GAAG,CAACG,IAAI,CAAElE,IAAK,CAAC;MACjB;MACA,OAAO+D,GAAG;IACX,CAAC,EAAE,EAAG,CAAC;IAEP,MAAMI,YAAY,GAAGN,WAAW,CAACO,MAAM,CACpCvE,QAAQ,IACT,CAAE+D,cAAc,CAAC9D,IAAI,CAAIC,IAAI,IAC5BX,cAAc,CAAEW,IAAI,CAACC,IAAI,EAAEH,QAAS,CACrC,CACF,CAAC;;IAED;IACA;IACAU,SAAS,CAAEsD,WAAY,CAAC;IAExB,IAAKM,YAAY,CAAC9B,MAAM,KAAK,CAAC,EAAG;MAChC,OAAOmB,aAAa,CACnB/D,cAAc,CAAEoE,WAAW,EAAED,cAAe,CAC7C,CAAC;IACF;IAEA,IAAK,CAAE5C,eAAe,EAAG;MACxB;IACD;IAEAqD,OAAO,CAACC,GAAG,CACVH,YAAY,CAACvE,GAAG,CAAIC,QAAQ,IAC3BmD,gBAAgB,CAAE;MAAEhD,IAAI,EAAEH;IAAS,CAAE,CACtC,CACD,CAAC,CACC0E,IAAI,CAAIC,QAAQ,IAAM;MACtB,MAAMC,iBAAiB,GAAGb,cAAc,CAACc,MAAM,CAAEF,QAAS,CAAC;MAC3D,OAAOhB,aAAa,CACnB/D,cAAc,CAAEoE,WAAW,EAAEY,iBAAkB,CAChD,CAAC;IACF,CAAE,CAAC,CACFE,KAAK,CAAIvB,KAAK,IAAM;MACpBN,iBAAiB,CAAEM,KAAK,CAACwB,OAAO,EAAE;QACjCC,IAAI,EAAE;MACP,CAAE,CAAC;IACJ,CAAE,CAAC;EACL;EAEA,SAASC,UAAUA,CAAE7B,OAAO,EAAG;IAAA,IAAA8B,qBAAA;IAC9B,IAAKlE,OAAO,CAACmE,QAAQ,CAAE/B,OAAO,CAAChD,EAAG,CAAC,EAAG;MACrC;IACD;IAEA,MAAMwD,UAAU,GAAG,CAAE,GAAG5C,OAAO,EAAEoC,OAAO,CAAChD,EAAE,CAAE;IAC7C,MAAMgF,WAAW,GAAG9E,IAAI,KAAK,UAAU,GAAG,IAAA+E,QAAE,EAAE,KAAM,CAAC,GAAG,IAAAA,QAAE,EAAE,MAAO,CAAC;IACpE,MAAMC,gBAAgB,GAAG,IAAAC,aAAO,GAC/B;IACA,IAAAC,QAAE,EAAE,UAAU,EAAE,MAAO,CAAC,GAAAN,qBAAA,GACxBjE,QAAQ,EAAEwE,MAAM,EAAEC,aAAa,cAAAR,qBAAA,cAAAA,qBAAA,GAAIE,WACpC,CAAC;IAED,IAAAO,WAAK,EAAEL,gBAAgB,EAAE,WAAY,CAAC;IACtC3B,aAAa,CAAEC,UAAW,CAAC;EAC5B;EAEA,MAAMgC,YAAY,IAAArF,qBAAA,GACjBU,QAAQ,EAAEwE,MAAM,EAAEI,YAAY,cAAAtF,qBAAA,cAAAA,qBAAA,GAC5BD,IAAI,KAAK,UAAU,GAAG,IAAA+E,QAAE,EAAE,aAAc,CAAC,GAAG,IAAAA,QAAE,EAAE,cAAe,CAAG;EACrE,MAAMS,YAAY,IAAAtF,sBAAA,GACjBS,QAAQ,EAAEwE,MAAM,EAAEC,aAAa,cAAAlF,sBAAA,cAAAA,sBAAA,GAC7BF,IAAI,KAAK,UAAU,GAAG,IAAA+E,QAAE,EAAE,KAAM,CAAC,GAAG,IAAAA,QAAE,EAAE,MAAO,CAAG;EACrD,MAAMU,cAAc,GAAG,IAAAR,aAAO,GAC7B;EACA,IAAAC,QAAE,EAAE,UAAU,EAAE,MAAO,CAAC,EACxBM,YACD,CAAC;EACD,MAAME,gBAAgB,GAAG,IAAAT,aAAO,GAC/B;EACA,IAAAC,QAAE,EAAE,YAAY,EAAE,MAAO,CAAC,EAC1BM,YACD,CAAC;EACD,MAAMG,eAAe,GAAG,IAAAV,aAAO,GAC9B;EACA,IAAAC,QAAE,EAAE,WAAW,EAAE,MAAO,CAAC,EACzBM,YACD,CAAC;EAED,OACC,IAAAI,MAAA,CAAAC,aAAA,EAAAD,MAAA,CAAAE,QAAA,QACC,IAAAF,MAAA,CAAAC,aAAA,EAAC5H,WAAA,CAAA8H,cAAc;IACdC,qBAAqB;IACrBC,KAAK,EAAG9F,MAAQ;IAChBmC,WAAW,EAAGA,WAAa;IAC3BiB,QAAQ,EAAGA,QAAU;IACrB2C,aAAa,EAAG1F,eAAiB;IACjC2F,cAAc,EAAGvH,qBAAuB;IACxCwH,KAAK,EAAGd,YAAc;IACtBe,QAAQ,EAAG;MACVC,KAAK,EAAEb,cAAc;MACrBc,OAAO,EAAEb,gBAAgB;MACzBc,MAAM,EAAEb;IACT;EAAG,CACH,CAAC,EACF,IAAAC,MAAA,CAAAC,aAAA,EAACpH,cAAA,CAAAgI,OAAa;IAAC9F,QAAQ,EAAGA,QAAU;IAAC+F,QAAQ,EAAG/B;EAAY,CAAE,CAC7D,CAAC;AAEL;AAAC,IAAAgC,QAAA,GAAAC,OAAA,CAAAH,OAAA,GAEc,IAAAI,uBAAW,EAAE,yBAA0B,CAAC,CAAE9G,gBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"names":["_i18n","require","_element","_components","_data","_coreData","_compose","_a11y","_notices","_store","_terms","_mostUsedTerms","_interopRequireDefault","EMPTY_ARRAY","MAX_TERMS_SUGGESTIONS","DEFAULT_QUERY","per_page","_fields","context","isSameTermName","termA","termB","unescapeString","toLowerCase","termNamesToIds","names","terms","map","termName","find","term","name","id","filter","undefined","FlatTermSelector","slug","_taxonomy$labels$add_","_taxonomy$labels$sing2","values","setValues","useState","search","setSearch","debouncedSearch","useDebounce","termIds","taxonomy","hasAssignAction","hasCreateAction","hasResolvedTerms","useSelect","select","_post$_links","_post$_links2","getCurrentPost","getEditedPostAttribute","editorStore","getEntityRecords","getTaxonomy","hasFinishedResolution","coreStore","post","_taxonomy","_termIds","rest_base","query","include","join","_links","length","searchResults","useEffect","newValues","suggestions","useMemo","editPost","useDispatch","saveEntityRecord","createErrorNotice","noticesStore","findOrCreateTerm","newTerm","throwOnError","unescapeTerm","error","code","data","term_id","onUpdateTerms","newTermIds","onChange","termNames","availableTerms","uniqueTerms","reduce","acc","some","n","push","newTermNames","Promise","all","then","newTerms","newAvailableTerms","concat","catch","message","type","appendTerm","_taxonomy$labels$sing","includes","defaultName","__","termAddedMessage","sprintf","_x","labels","singular_name","speak","newTermLabel","add_new_item","singularName","termAddedLabel","termRemovedLabel","removeTermLabel","_react","createElement","Fragment","FormTokenField","__next40pxDefaultSize","value","onInputChange","maxSuggestions","label","messages","added","removed","remove","default","onSelect","_default","exports","withFilters"],"sources":["@wordpress/editor/src/components/post-taxonomies/flat-term-selector.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, _x, sprintf } from '@wordpress/i18n';\nimport { useEffect, useMemo, useState } from '@wordpress/element';\nimport { FormTokenField, withFilters } from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useDebounce } from '@wordpress/compose';\nimport { speak } from '@wordpress/a11y';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../../store';\nimport { unescapeString, unescapeTerm } from '../../utils/terms';\nimport MostUsedTerms from './most-used-terms';\n\n/**\n * Shared reference to an empty array for cases where it is important to avoid\n * returning a new array reference on every invocation.\n *\n * @type {Array<any>}\n */\nconst EMPTY_ARRAY = [];\n\n/**\n * Module constants\n */\nconst MAX_TERMS_SUGGESTIONS = 20;\nconst DEFAULT_QUERY = {\n\tper_page: MAX_TERMS_SUGGESTIONS,\n\t_fields: 'id,name',\n\tcontext: 'view',\n};\n\nconst isSameTermName = ( termA, termB ) =>\n\tunescapeString( termA ).toLowerCase() ===\n\tunescapeString( termB ).toLowerCase();\n\nconst termNamesToIds = ( names, terms ) => {\n\treturn names\n\t\t.map(\n\t\t\t( termName ) =>\n\t\t\t\tterms.find( ( term ) => isSameTermName( term.name, termName ) )\n\t\t\t\t\t?.id\n\t\t)\n\t\t.filter( ( id ) => id !== undefined );\n};\n\nexport function FlatTermSelector( { slug } ) {\n\tconst [ values, setValues ] = useState( [] );\n\tconst [ search, setSearch ] = useState( '' );\n\tconst debouncedSearch = useDebounce( setSearch, 500 );\n\n\tconst {\n\t\tterms,\n\t\ttermIds,\n\t\ttaxonomy,\n\t\thasAssignAction,\n\t\thasCreateAction,\n\t\thasResolvedTerms,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getCurrentPost, getEditedPostAttribute } =\n\t\t\t\tselect( editorStore );\n\t\t\tconst { getEntityRecords, getTaxonomy, hasFinishedResolution } =\n\t\t\t\tselect( coreStore );\n\t\t\tconst post = getCurrentPost();\n\t\t\tconst _taxonomy = getTaxonomy( slug );\n\t\t\tconst _termIds = _taxonomy\n\t\t\t\t? getEditedPostAttribute( _taxonomy.rest_base )\n\t\t\t\t: EMPTY_ARRAY;\n\n\t\t\tconst query = {\n\t\t\t\t...DEFAULT_QUERY,\n\t\t\t\tinclude: _termIds.join( ',' ),\n\t\t\t\tper_page: -1,\n\t\t\t};\n\n\t\t\treturn {\n\t\t\t\thasCreateAction: _taxonomy\n\t\t\t\t\t? post._links?.[\n\t\t\t\t\t\t\t'wp:action-create-' + _taxonomy.rest_base\n\t\t\t\t\t ] ?? false\n\t\t\t\t\t: false,\n\t\t\t\thasAssignAction: _taxonomy\n\t\t\t\t\t? post._links?.[\n\t\t\t\t\t\t\t'wp:action-assign-' + _taxonomy.rest_base\n\t\t\t\t\t ] ?? false\n\t\t\t\t\t: false,\n\t\t\t\ttaxonomy: _taxonomy,\n\t\t\t\ttermIds: _termIds,\n\t\t\t\tterms: _termIds.length\n\t\t\t\t\t? getEntityRecords( 'taxonomy', slug, query )\n\t\t\t\t\t: EMPTY_ARRAY,\n\t\t\t\thasResolvedTerms: hasFinishedResolution( 'getEntityRecords', [\n\t\t\t\t\t'taxonomy',\n\t\t\t\t\tslug,\n\t\t\t\t\tquery,\n\t\t\t\t] ),\n\t\t\t};\n\t\t},\n\t\t[ slug ]\n\t);\n\n\tconst { searchResults } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEntityRecords } = select( coreStore );\n\n\t\t\treturn {\n\t\t\t\tsearchResults: !! search\n\t\t\t\t\t? getEntityRecords( 'taxonomy', slug, {\n\t\t\t\t\t\t\t...DEFAULT_QUERY,\n\t\t\t\t\t\t\tsearch,\n\t\t\t\t\t } )\n\t\t\t\t\t: EMPTY_ARRAY,\n\t\t\t};\n\t\t},\n\t\t[ search, slug ]\n\t);\n\n\t// Update terms state only after the selectors are resolved.\n\t// We're using this to avoid terms temporarily disappearing on slow networks\n\t// while core data makes REST API requests.\n\tuseEffect( () => {\n\t\tif ( hasResolvedTerms ) {\n\t\t\tconst newValues = ( terms ?? [] ).map( ( term ) =>\n\t\t\t\tunescapeString( term.name )\n\t\t\t);\n\n\t\t\tsetValues( newValues );\n\t\t}\n\t}, [ terms, hasResolvedTerms ] );\n\n\tconst suggestions = useMemo( () => {\n\t\treturn ( searchResults ?? [] ).map( ( term ) =>\n\t\t\tunescapeString( term.name )\n\t\t);\n\t}, [ searchResults ] );\n\n\tconst { editPost } = useDispatch( editorStore );\n\tconst { saveEntityRecord } = useDispatch( coreStore );\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\n\tif ( ! hasAssignAction ) {\n\t\treturn null;\n\t}\n\n\tasync function findOrCreateTerm( term ) {\n\t\ttry {\n\t\t\tconst newTerm = await saveEntityRecord( 'taxonomy', slug, term, {\n\t\t\t\tthrowOnError: true,\n\t\t\t} );\n\t\t\treturn unescapeTerm( newTerm );\n\t\t} catch ( error ) {\n\t\t\tif ( error.code !== 'term_exists' ) {\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tid: error.data.term_id,\n\t\t\t\tname: term.name,\n\t\t\t};\n\t\t}\n\t}\n\n\tfunction onUpdateTerms( newTermIds ) {\n\t\teditPost( { [ taxonomy.rest_base ]: newTermIds } );\n\t}\n\n\tfunction onChange( termNames ) {\n\t\tconst availableTerms = [\n\t\t\t...( terms ?? [] ),\n\t\t\t...( searchResults ?? [] ),\n\t\t];\n\t\tconst uniqueTerms = termNames.reduce( ( acc, name ) => {\n\t\t\tif (\n\t\t\t\t! acc.some( ( n ) => n.toLowerCase() === name.toLowerCase() )\n\t\t\t) {\n\t\t\t\tacc.push( name );\n\t\t\t}\n\t\t\treturn acc;\n\t\t}, [] );\n\n\t\tconst newTermNames = uniqueTerms.filter(\n\t\t\t( termName ) =>\n\t\t\t\t! availableTerms.find( ( term ) =>\n\t\t\t\t\tisSameTermName( term.name, termName )\n\t\t\t\t)\n\t\t);\n\n\t\t// Optimistically update term values.\n\t\t// The selector will always re-fetch terms later.\n\t\tsetValues( uniqueTerms );\n\n\t\tif ( newTermNames.length === 0 ) {\n\t\t\tonUpdateTerms( termNamesToIds( uniqueTerms, availableTerms ) );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( ! hasCreateAction ) {\n\t\t\treturn;\n\t\t}\n\n\t\tPromise.all(\n\t\t\tnewTermNames.map( ( termName ) =>\n\t\t\t\tfindOrCreateTerm( { name: termName } )\n\t\t\t)\n\t\t)\n\t\t\t.then( ( newTerms ) => {\n\t\t\t\tconst newAvailableTerms = availableTerms.concat( newTerms );\n\t\t\t\tonUpdateTerms(\n\t\t\t\t\ttermNamesToIds( uniqueTerms, newAvailableTerms )\n\t\t\t\t);\n\t\t\t} )\n\t\t\t.catch( ( error ) => {\n\t\t\t\tcreateErrorNotice( error.message, {\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t} );\n\t\t\t\t// In case of a failure, try assigning available terms.\n\t\t\t\t// This will invalidate the optimistic update.\n\t\t\t\tonUpdateTerms( termNamesToIds( uniqueTerms, availableTerms ) );\n\t\t\t} );\n\t}\n\n\tfunction appendTerm( newTerm ) {\n\t\tif ( termIds.includes( newTerm.id ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst newTermIds = [ ...termIds, newTerm.id ];\n\t\tconst defaultName = slug === 'post_tag' ? __( 'Tag' ) : __( 'Term' );\n\t\tconst termAddedMessage = sprintf(\n\t\t\t/* translators: %s: term name. */\n\t\t\t_x( '%s added', 'term' ),\n\t\t\ttaxonomy?.labels?.singular_name ?? defaultName\n\t\t);\n\n\t\tspeak( termAddedMessage, 'assertive' );\n\t\tonUpdateTerms( newTermIds );\n\t}\n\n\tconst newTermLabel =\n\t\ttaxonomy?.labels?.add_new_item ??\n\t\t( slug === 'post_tag' ? __( 'Add new tag' ) : __( 'Add new Term' ) );\n\tconst singularName =\n\t\ttaxonomy?.labels?.singular_name ??\n\t\t( slug === 'post_tag' ? __( 'Tag' ) : __( 'Term' ) );\n\tconst termAddedLabel = sprintf(\n\t\t/* translators: %s: term name. */\n\t\t_x( '%s added', 'term' ),\n\t\tsingularName\n\t);\n\tconst termRemovedLabel = sprintf(\n\t\t/* translators: %s: term name. */\n\t\t_x( '%s removed', 'term' ),\n\t\tsingularName\n\t);\n\tconst removeTermLabel = sprintf(\n\t\t/* translators: %s: term name. */\n\t\t_x( 'Remove %s', 'term' ),\n\t\tsingularName\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t<FormTokenField\n\t\t\t\t__next40pxDefaultSize\n\t\t\t\tvalue={ values }\n\t\t\t\tsuggestions={ suggestions }\n\t\t\t\tonChange={ onChange }\n\t\t\t\tonInputChange={ debouncedSearch }\n\t\t\t\tmaxSuggestions={ MAX_TERMS_SUGGESTIONS }\n\t\t\t\tlabel={ newTermLabel }\n\t\t\t\tmessages={ {\n\t\t\t\t\tadded: termAddedLabel,\n\t\t\t\t\tremoved: termRemovedLabel,\n\t\t\t\t\tremove: removeTermLabel,\n\t\t\t\t} }\n\t\t\t/>\n\t\t\t<MostUsedTerms taxonomy={ taxonomy } onSelect={ appendTerm } />\n\t\t</>\n\t);\n}\n\nexport default withFilters( 'editor.PostTaxonomyType' )( FlatTermSelector );\n"],"mappings":"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"}
|
|
@@ -141,7 +141,7 @@ class PostTitle extends _element.Component {
|
|
|
141
141
|
accessibilityLabel: this.getTitle(title, postType),
|
|
142
142
|
accessibilityHint: (0, _i18n.__)('Updates the title.')
|
|
143
143
|
}, (0, _react.createElement)(_blockEditor.RichText.Raw, {
|
|
144
|
-
|
|
144
|
+
ref: this.setRef,
|
|
145
145
|
accessibilityLabel: this.getTitle(title, postType),
|
|
146
146
|
tagName: 'p',
|
|
147
147
|
tagsToEliminate: ['strong'],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_element","_richText","_htmlEntities","_data","_components","_compose","_i18n","_blocks","_blockEditor","_editor","_dom","_style","_interopRequireDefault","PostTitle","Component","constructor","props","setRef","bind","onPaste","componentDidUpdate","prevProps","isSelected","isAnyBlockSelected","richTextRef","blur","onUnselect","componentDidMount","innerRef","handleFocusOutside","focus","onSelect","value","plainText","html","title","onInsertBlockAfter","onUpdate","content","pasteHandler","HTML","length","firstBlock","name","contentNoHTML","stripHTML","attributes","slice","newValue","insert","create","toHTMLString","richText","getTitle","postType","__","sprintf","render","placeholder","style","focusedBorderColor","borderStyle","isDimmed","globalStyles","decodedPlaceholder","decodeEntities","borderColor","titleStyles","text","color","placeholderColor","_react","createElement","View","testID","styles","titleContainer","dimmed","accessible","accessibilityLabel","accessibilityHint","RichText","Raw","tagName","tagsToEliminate","unstableOnFocus","onBlur","fontSize","lineHeight","fontWeight","deleteEnter","onChange","onSelectionChange","onEnter","onEnterPress","disableEditingMenu","__unstableIsSelected","__unstableOnCreateUndoLevel","_default","exports","default","compose","withSelect","select","isPostTitleSelected","getEditedPostAttribute","editorStore","getSelectedBlockClientId","getBlockRootClientId","getSettings","blockEditorStore","selectedId","selectionIsNested","__experimentalGlobalStylesBaseStyles","withDispatch","dispatch","undo","redo","togglePostTitleSelection","editPost","clearSelectedBlock","insertDefaultBlock","insertBlocks","undefined","onUndo","onRedo","blocks","withInstanceId","withFocusOutside"],"sources":["@wordpress/editor/src/components/post-title/index.native.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { View } from 'react-native';\n\n/**\n * WordPress dependencies\n */\nimport { Component } from '@wordpress/element';\nimport { create, toHTMLString, insert } from '@wordpress/rich-text';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { withDispatch, withSelect } from '@wordpress/data';\nimport { withFocusOutside } from '@wordpress/components';\nimport { withInstanceId, compose } from '@wordpress/compose';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { pasteHandler } from '@wordpress/blocks';\nimport { store as blockEditorStore, RichText } from '@wordpress/block-editor';\nimport { store as editorStore } from '@wordpress/editor';\nimport { __unstableStripHTML as stripHTML } from '@wordpress/dom';\n\n/**\n * Internal dependencies\n */\nimport styles from './style.scss';\n\nclass PostTitle extends Component {\n\tconstructor( props ) {\n\t\tsuper( props );\n\n\t\tthis.setRef = this.setRef.bind( this );\n\t\tthis.onPaste = this.onPaste.bind( this );\n\t}\n\tcomponentDidUpdate( prevProps ) {\n\t\t// Unselect if any other block is selected and blur the RichText.\n\t\tif (\n\t\t\tthis.props.isSelected &&\n\t\t\t! prevProps.isAnyBlockSelected &&\n\t\t\tthis.props.isAnyBlockSelected\n\t\t) {\n\t\t\tif ( this.richTextRef ) {\n\t\t\t\tthis.richTextRef.blur();\n\t\t\t}\n\t\t\tthis.props.onUnselect();\n\t\t}\n\t}\n\n\tcomponentDidMount() {\n\t\tif ( this.props.innerRef ) {\n\t\t\tthis.props.innerRef( this );\n\t\t}\n\t}\n\n\thandleFocusOutside() {\n\t\tthis.props.onUnselect();\n\t}\n\n\tfocus() {\n\t\tthis.props.onSelect();\n\t}\n\n\tonPaste( { value, plainText, html } ) {\n\t\tconst { title, onInsertBlockAfter, onUpdate } = this.props;\n\n\t\tconst content = pasteHandler( {\n\t\t\tHTML: html,\n\t\t\tplainText,\n\t\t} );\n\n\t\tif ( ! content.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( typeof content !== 'string' ) {\n\t\t\tconst [ firstBlock ] = content;\n\n\t\t\tif (\n\t\t\t\t! title &&\n\t\t\t\t( firstBlock.name === 'core/heading' ||\n\t\t\t\t\tfirstBlock.name === 'core/paragraph' )\n\t\t\t) {\n\t\t\t\t// Strip HTML to avoid unwanted HTML being added to the title.\n\t\t\t\t// In the majority of cases it is assumed that HTML in the title\n\t\t\t\t// is undesirable.\n\t\t\t\tconst contentNoHTML = stripHTML(\n\t\t\t\t\tfirstBlock.attributes.content\n\t\t\t\t);\n\t\t\t\tonUpdate( contentNoHTML );\n\t\t\t\tonInsertBlockAfter( content.slice( 1 ) );\n\t\t\t} else {\n\t\t\t\tonInsertBlockAfter( content );\n\t\t\t}\n\t\t} else {\n\t\t\t// Strip HTML to avoid unwanted HTML being added to the title.\n\t\t\t// In the majority of cases it is assumed that HTML in the title\n\t\t\t// is undesirable.\n\t\t\tconst contentNoHTML = stripHTML( content );\n\n\t\t\tconst newValue = insert( value, create( { html: contentNoHTML } ) );\n\t\t\tonUpdate( toHTMLString( { value: newValue } ) );\n\t\t}\n\t}\n\n\tsetRef( richText ) {\n\t\tthis.richTextRef = richText;\n\t}\n\n\tgetTitle( title, postType ) {\n\t\tif ( 'page' === postType ) {\n\t\t\treturn ! title\n\t\t\t\t? /* translators: accessibility text. empty page title. */\n\t\t\t\t __( 'Page title. Empty' )\n\t\t\t\t: sprintf(\n\t\t\t\t\t\t/* translators: accessibility text. %s: text content of the page title. */\n\t\t\t\t\t\t__( 'Page title. %s' ),\n\t\t\t\t\t\ttitle\n\t\t\t\t );\n\t\t}\n\n\t\treturn ! title\n\t\t\t? /* translators: accessibility text. empty post title. */\n\t\t\t __( 'Post title. Empty' )\n\t\t\t: sprintf(\n\t\t\t\t\t/* translators: accessibility text. %s: text content of the post title. */\n\t\t\t\t\t__( 'Post title. %s' ),\n\t\t\t\t\ttitle\n\t\t\t );\n\t}\n\n\trender() {\n\t\tconst {\n\t\t\tplaceholder,\n\t\t\tstyle,\n\t\t\ttitle,\n\t\t\tfocusedBorderColor,\n\t\t\tborderStyle,\n\t\t\tisDimmed,\n\t\t\tpostType,\n\t\t\tglobalStyles,\n\t\t} = this.props;\n\n\t\tconst decodedPlaceholder = decodeEntities( placeholder );\n\t\tconst borderColor = this.props.isSelected\n\t\t\t? focusedBorderColor\n\t\t\t: 'transparent';\n\t\tconst titleStyles = {\n\t\t\t...style,\n\t\t\t...( globalStyles?.text && {\n\t\t\t\tcolor: globalStyles.text,\n\t\t\t\tplaceholderColor: globalStyles.text,\n\t\t\t} ),\n\t\t};\n\n\t\treturn (\n\t\t\t<View\n\t\t\t\ttestID=\"post-title\"\n\t\t\t\tstyle={ [\n\t\t\t\t\tstyles.titleContainer,\n\t\t\t\t\tborderStyle,\n\t\t\t\t\t{ borderColor },\n\t\t\t\t\tisDimmed && styles.dimmed,\n\t\t\t\t] }\n\t\t\t\taccessible={ ! this.props.isSelected }\n\t\t\t\taccessibilityLabel={ this.getTitle( title, postType ) }\n\t\t\t\taccessibilityHint={ __( 'Updates the title.' ) }\n\t\t\t>\n\t\t\t\t<RichText.Raw\n\t\t\t\t\tsetRef={ this.setRef }\n\t\t\t\t\taccessibilityLabel={ this.getTitle( title, postType ) }\n\t\t\t\t\ttagName={ 'p' }\n\t\t\t\t\ttagsToEliminate={ [ 'strong' ] }\n\t\t\t\t\tunstableOnFocus={ this.props.onSelect }\n\t\t\t\t\tonBlur={ this.props.onBlur } // Always assign onBlur as a props.\n\t\t\t\t\tstyle={ titleStyles }\n\t\t\t\t\tstyles={ styles }\n\t\t\t\t\tfontSize={ 24 }\n\t\t\t\t\tlineHeight={ 1 }\n\t\t\t\t\tfontWeight={ 'bold' }\n\t\t\t\t\tdeleteEnter\n\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\tthis.props.onUpdate( value );\n\t\t\t\t\t} }\n\t\t\t\t\tonPaste={ this.onPaste }\n\t\t\t\t\tplaceholder={ decodedPlaceholder }\n\t\t\t\t\tvalue={ title }\n\t\t\t\t\tonSelectionChange={ () => {} }\n\t\t\t\t\tonEnter={ this.props.onEnterPress }\n\t\t\t\t\tdisableEditingMenu\n\t\t\t\t\t__unstableIsSelected={ this.props.isSelected }\n\t\t\t\t\t__unstableOnCreateUndoLevel={ () => {} }\n\t\t\t\t/>\n\t\t\t</View>\n\t\t);\n\t}\n}\n\nexport default compose(\n\twithSelect( ( select ) => {\n\t\tconst { isPostTitleSelected, getEditedPostAttribute } =\n\t\t\tselect( editorStore );\n\t\tconst { getSelectedBlockClientId, getBlockRootClientId, getSettings } =\n\t\t\tselect( blockEditorStore );\n\n\t\tconst selectedId = getSelectedBlockClientId();\n\t\tconst selectionIsNested = !! getBlockRootClientId( selectedId );\n\t\tconst globalStyles =\n\t\t\tgetSettings()?.__experimentalGlobalStylesBaseStyles?.color;\n\n\t\treturn {\n\t\t\tpostType: getEditedPostAttribute( 'type' ),\n\t\t\ttitle: getEditedPostAttribute( 'title' ),\n\t\t\tisAnyBlockSelected: !! selectedId,\n\t\t\tisSelected: isPostTitleSelected(),\n\t\t\tisDimmed: selectionIsNested,\n\t\t\tglobalStyles,\n\t\t};\n\t} ),\n\twithDispatch( ( dispatch ) => {\n\t\tconst { undo, redo, togglePostTitleSelection, editPost } =\n\t\t\tdispatch( editorStore );\n\n\t\tconst { clearSelectedBlock, insertDefaultBlock, insertBlocks } =\n\t\t\tdispatch( blockEditorStore );\n\n\t\treturn {\n\t\t\tonEnterPress() {\n\t\t\t\tinsertDefaultBlock( undefined, undefined, 0 );\n\t\t\t},\n\t\t\tonUndo: undo,\n\t\t\tonRedo: redo,\n\t\t\tonSelect() {\n\t\t\t\ttogglePostTitleSelection( true );\n\t\t\t\tclearSelectedBlock();\n\t\t\t},\n\t\t\tonUnselect() {\n\t\t\t\ttogglePostTitleSelection( false );\n\t\t\t},\n\t\t\tonUpdate( title ) {\n\t\t\t\teditPost( { title } );\n\t\t\t},\n\t\t\tonInsertBlockAfter( blocks ) {\n\t\t\t\tinsertBlocks( blocks, 0 );\n\t\t\t},\n\t\t};\n\t} ),\n\twithInstanceId,\n\twithFocusOutside\n)( PostTitle );\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_element","_richText","_htmlEntities","_data","_components","_compose","_i18n","_blocks","_blockEditor","_editor","_dom","_style","_interopRequireDefault","PostTitle","Component","constructor","props","setRef","bind","onPaste","componentDidUpdate","prevProps","isSelected","isAnyBlockSelected","richTextRef","blur","onUnselect","componentDidMount","innerRef","handleFocusOutside","focus","onSelect","value","plainText","html","title","onInsertBlockAfter","onUpdate","content","pasteHandler","HTML","length","firstBlock","name","contentNoHTML","stripHTML","attributes","slice","newValue","insert","create","toHTMLString","richText","getTitle","postType","__","sprintf","render","placeholder","style","focusedBorderColor","borderStyle","isDimmed","globalStyles","decodedPlaceholder","decodeEntities","borderColor","titleStyles","text","color","placeholderColor","_react","createElement","View","testID","styles","titleContainer","dimmed","accessible","accessibilityLabel","accessibilityHint","RichText","Raw","ref","tagName","tagsToEliminate","unstableOnFocus","onBlur","fontSize","lineHeight","fontWeight","deleteEnter","onChange","onSelectionChange","onEnter","onEnterPress","disableEditingMenu","__unstableIsSelected","__unstableOnCreateUndoLevel","_default","exports","default","compose","withSelect","select","isPostTitleSelected","getEditedPostAttribute","editorStore","getSelectedBlockClientId","getBlockRootClientId","getSettings","blockEditorStore","selectedId","selectionIsNested","__experimentalGlobalStylesBaseStyles","withDispatch","dispatch","undo","redo","togglePostTitleSelection","editPost","clearSelectedBlock","insertDefaultBlock","insertBlocks","undefined","onUndo","onRedo","blocks","withInstanceId","withFocusOutside"],"sources":["@wordpress/editor/src/components/post-title/index.native.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { View } from 'react-native';\n\n/**\n * WordPress dependencies\n */\nimport { Component } from '@wordpress/element';\nimport { create, toHTMLString, insert } from '@wordpress/rich-text';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { withDispatch, withSelect } from '@wordpress/data';\nimport { withFocusOutside } from '@wordpress/components';\nimport { withInstanceId, compose } from '@wordpress/compose';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { pasteHandler } from '@wordpress/blocks';\nimport { store as blockEditorStore, RichText } from '@wordpress/block-editor';\nimport { store as editorStore } from '@wordpress/editor';\nimport { __unstableStripHTML as stripHTML } from '@wordpress/dom';\n\n/**\n * Internal dependencies\n */\nimport styles from './style.scss';\n\nclass PostTitle extends Component {\n\tconstructor( props ) {\n\t\tsuper( props );\n\n\t\tthis.setRef = this.setRef.bind( this );\n\t\tthis.onPaste = this.onPaste.bind( this );\n\t}\n\tcomponentDidUpdate( prevProps ) {\n\t\t// Unselect if any other block is selected and blur the RichText.\n\t\tif (\n\t\t\tthis.props.isSelected &&\n\t\t\t! prevProps.isAnyBlockSelected &&\n\t\t\tthis.props.isAnyBlockSelected\n\t\t) {\n\t\t\tif ( this.richTextRef ) {\n\t\t\t\tthis.richTextRef.blur();\n\t\t\t}\n\t\t\tthis.props.onUnselect();\n\t\t}\n\t}\n\n\tcomponentDidMount() {\n\t\tif ( this.props.innerRef ) {\n\t\t\tthis.props.innerRef( this );\n\t\t}\n\t}\n\n\thandleFocusOutside() {\n\t\tthis.props.onUnselect();\n\t}\n\n\tfocus() {\n\t\tthis.props.onSelect();\n\t}\n\n\tonPaste( { value, plainText, html } ) {\n\t\tconst { title, onInsertBlockAfter, onUpdate } = this.props;\n\n\t\tconst content = pasteHandler( {\n\t\t\tHTML: html,\n\t\t\tplainText,\n\t\t} );\n\n\t\tif ( ! content.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( typeof content !== 'string' ) {\n\t\t\tconst [ firstBlock ] = content;\n\n\t\t\tif (\n\t\t\t\t! title &&\n\t\t\t\t( firstBlock.name === 'core/heading' ||\n\t\t\t\t\tfirstBlock.name === 'core/paragraph' )\n\t\t\t) {\n\t\t\t\t// Strip HTML to avoid unwanted HTML being added to the title.\n\t\t\t\t// In the majority of cases it is assumed that HTML in the title\n\t\t\t\t// is undesirable.\n\t\t\t\tconst contentNoHTML = stripHTML(\n\t\t\t\t\tfirstBlock.attributes.content\n\t\t\t\t);\n\t\t\t\tonUpdate( contentNoHTML );\n\t\t\t\tonInsertBlockAfter( content.slice( 1 ) );\n\t\t\t} else {\n\t\t\t\tonInsertBlockAfter( content );\n\t\t\t}\n\t\t} else {\n\t\t\t// Strip HTML to avoid unwanted HTML being added to the title.\n\t\t\t// In the majority of cases it is assumed that HTML in the title\n\t\t\t// is undesirable.\n\t\t\tconst contentNoHTML = stripHTML( content );\n\n\t\t\tconst newValue = insert( value, create( { html: contentNoHTML } ) );\n\t\t\tonUpdate( toHTMLString( { value: newValue } ) );\n\t\t}\n\t}\n\n\tsetRef( richText ) {\n\t\tthis.richTextRef = richText;\n\t}\n\n\tgetTitle( title, postType ) {\n\t\tif ( 'page' === postType ) {\n\t\t\treturn ! title\n\t\t\t\t? /* translators: accessibility text. empty page title. */\n\t\t\t\t __( 'Page title. Empty' )\n\t\t\t\t: sprintf(\n\t\t\t\t\t\t/* translators: accessibility text. %s: text content of the page title. */\n\t\t\t\t\t\t__( 'Page title. %s' ),\n\t\t\t\t\t\ttitle\n\t\t\t\t );\n\t\t}\n\n\t\treturn ! title\n\t\t\t? /* translators: accessibility text. empty post title. */\n\t\t\t __( 'Post title. Empty' )\n\t\t\t: sprintf(\n\t\t\t\t\t/* translators: accessibility text. %s: text content of the post title. */\n\t\t\t\t\t__( 'Post title. %s' ),\n\t\t\t\t\ttitle\n\t\t\t );\n\t}\n\n\trender() {\n\t\tconst {\n\t\t\tplaceholder,\n\t\t\tstyle,\n\t\t\ttitle,\n\t\t\tfocusedBorderColor,\n\t\t\tborderStyle,\n\t\t\tisDimmed,\n\t\t\tpostType,\n\t\t\tglobalStyles,\n\t\t} = this.props;\n\n\t\tconst decodedPlaceholder = decodeEntities( placeholder );\n\t\tconst borderColor = this.props.isSelected\n\t\t\t? focusedBorderColor\n\t\t\t: 'transparent';\n\t\tconst titleStyles = {\n\t\t\t...style,\n\t\t\t...( globalStyles?.text && {\n\t\t\t\tcolor: globalStyles.text,\n\t\t\t\tplaceholderColor: globalStyles.text,\n\t\t\t} ),\n\t\t};\n\n\t\treturn (\n\t\t\t<View\n\t\t\t\ttestID=\"post-title\"\n\t\t\t\tstyle={ [\n\t\t\t\t\tstyles.titleContainer,\n\t\t\t\t\tborderStyle,\n\t\t\t\t\t{ borderColor },\n\t\t\t\t\tisDimmed && styles.dimmed,\n\t\t\t\t] }\n\t\t\t\taccessible={ ! this.props.isSelected }\n\t\t\t\taccessibilityLabel={ this.getTitle( title, postType ) }\n\t\t\t\taccessibilityHint={ __( 'Updates the title.' ) }\n\t\t\t>\n\t\t\t\t<RichText.Raw\n\t\t\t\t\tref={ this.setRef }\n\t\t\t\t\taccessibilityLabel={ this.getTitle( title, postType ) }\n\t\t\t\t\ttagName={ 'p' }\n\t\t\t\t\ttagsToEliminate={ [ 'strong' ] }\n\t\t\t\t\tunstableOnFocus={ this.props.onSelect }\n\t\t\t\t\tonBlur={ this.props.onBlur } // Always assign onBlur as a props.\n\t\t\t\t\tstyle={ titleStyles }\n\t\t\t\t\tstyles={ styles }\n\t\t\t\t\tfontSize={ 24 }\n\t\t\t\t\tlineHeight={ 1 }\n\t\t\t\t\tfontWeight={ 'bold' }\n\t\t\t\t\tdeleteEnter\n\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\tthis.props.onUpdate( value );\n\t\t\t\t\t} }\n\t\t\t\t\tonPaste={ this.onPaste }\n\t\t\t\t\tplaceholder={ decodedPlaceholder }\n\t\t\t\t\tvalue={ title }\n\t\t\t\t\tonSelectionChange={ () => {} }\n\t\t\t\t\tonEnter={ this.props.onEnterPress }\n\t\t\t\t\tdisableEditingMenu\n\t\t\t\t\t__unstableIsSelected={ this.props.isSelected }\n\t\t\t\t\t__unstableOnCreateUndoLevel={ () => {} }\n\t\t\t\t/>\n\t\t\t</View>\n\t\t);\n\t}\n}\n\nexport default compose(\n\twithSelect( ( select ) => {\n\t\tconst { isPostTitleSelected, getEditedPostAttribute } =\n\t\t\tselect( editorStore );\n\t\tconst { getSelectedBlockClientId, getBlockRootClientId, getSettings } =\n\t\t\tselect( blockEditorStore );\n\n\t\tconst selectedId = getSelectedBlockClientId();\n\t\tconst selectionIsNested = !! getBlockRootClientId( selectedId );\n\t\tconst globalStyles =\n\t\t\tgetSettings()?.__experimentalGlobalStylesBaseStyles?.color;\n\n\t\treturn {\n\t\t\tpostType: getEditedPostAttribute( 'type' ),\n\t\t\ttitle: getEditedPostAttribute( 'title' ),\n\t\t\tisAnyBlockSelected: !! selectedId,\n\t\t\tisSelected: isPostTitleSelected(),\n\t\t\tisDimmed: selectionIsNested,\n\t\t\tglobalStyles,\n\t\t};\n\t} ),\n\twithDispatch( ( dispatch ) => {\n\t\tconst { undo, redo, togglePostTitleSelection, editPost } =\n\t\t\tdispatch( editorStore );\n\n\t\tconst { clearSelectedBlock, insertDefaultBlock, insertBlocks } =\n\t\t\tdispatch( blockEditorStore );\n\n\t\treturn {\n\t\t\tonEnterPress() {\n\t\t\t\tinsertDefaultBlock( undefined, undefined, 0 );\n\t\t\t},\n\t\t\tonUndo: undo,\n\t\t\tonRedo: redo,\n\t\t\tonSelect() {\n\t\t\t\ttogglePostTitleSelection( true );\n\t\t\t\tclearSelectedBlock();\n\t\t\t},\n\t\t\tonUnselect() {\n\t\t\t\ttogglePostTitleSelection( false );\n\t\t\t},\n\t\t\tonUpdate( title ) {\n\t\t\t\teditPost( { title } );\n\t\t\t},\n\t\t\tonInsertBlockAfter( blocks ) {\n\t\t\t\tinsertBlocks( blocks, 0 );\n\t\t\t},\n\t\t};\n\t} ),\n\twithInstanceId,\n\twithFocusOutside\n)( PostTitle );\n"],"mappings":"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"}
|
|
@@ -7,47 +7,63 @@ exports.default = DisableNonPageContentBlocks;
|
|
|
7
7
|
var _data = require("@wordpress/data");
|
|
8
8
|
var _blockEditor = require("@wordpress/block-editor");
|
|
9
9
|
var _element = require("@wordpress/element");
|
|
10
|
+
var _hooks = require("@wordpress/hooks");
|
|
10
11
|
/**
|
|
11
12
|
* WordPress dependencies
|
|
12
13
|
*/
|
|
13
14
|
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
const CONTENT_ONLY_BLOCKS = (0, _hooks.applyFilters)('editor.postContentBlockTypes', ['core/post-title', 'core/post-featured-image', 'core/post-content', 'core/template-part']);
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Component that when rendered, makes it so that the site editor allows only
|
|
19
|
+
* page content to be edited.
|
|
20
|
+
*/
|
|
21
|
+
function DisableNonPageContentBlocks() {
|
|
22
|
+
const contentOnlyIds = (0, _data.useSelect)(select => {
|
|
17
23
|
const {
|
|
18
24
|
getBlocksByName,
|
|
19
25
|
getBlockParents,
|
|
20
26
|
getBlockName
|
|
21
27
|
} = select(_blockEditor.store);
|
|
22
|
-
return getBlocksByName(
|
|
28
|
+
return getBlocksByName(CONTENT_ONLY_BLOCKS).filter(clientId => getBlockParents(clientId).every(parentClientId => {
|
|
23
29
|
const parentBlockName = getBlockName(parentClientId);
|
|
24
|
-
return
|
|
30
|
+
return (
|
|
31
|
+
// Ignore descendents of the query block.
|
|
32
|
+
parentBlockName !== 'core/query' &&
|
|
33
|
+
// Enable only the top-most block.
|
|
34
|
+
!CONTENT_ONLY_BLOCKS.includes(parentBlockName)
|
|
35
|
+
);
|
|
25
36
|
}));
|
|
26
37
|
}, []);
|
|
38
|
+
const disabledIds = (0, _data.useSelect)(select => {
|
|
39
|
+
const {
|
|
40
|
+
getBlocksByName,
|
|
41
|
+
getBlockOrder
|
|
42
|
+
} = select(_blockEditor.store);
|
|
43
|
+
return getBlocksByName(['core/template-part']).flatMap(clientId => getBlockOrder(clientId));
|
|
44
|
+
}, []);
|
|
27
45
|
const {
|
|
28
46
|
setBlockEditingMode,
|
|
29
47
|
unsetBlockEditingMode
|
|
30
48
|
} = (0, _data.useDispatch)(_blockEditor.store);
|
|
31
49
|
(0, _element.useEffect)(() => {
|
|
32
|
-
setBlockEditingMode('', 'disabled');
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
50
|
+
setBlockEditingMode('', 'disabled');
|
|
51
|
+
for (const clientId of contentOnlyIds) {
|
|
52
|
+
setBlockEditingMode(clientId, 'contentOnly');
|
|
53
|
+
}
|
|
54
|
+
for (const clientId of disabledIds) {
|
|
55
|
+
setBlockEditingMode(clientId, 'disabled');
|
|
36
56
|
}
|
|
37
57
|
return () => {
|
|
38
58
|
unsetBlockEditingMode('');
|
|
39
|
-
for (const
|
|
40
|
-
unsetBlockEditingMode(
|
|
59
|
+
for (const clientId of contentOnlyIds) {
|
|
60
|
+
unsetBlockEditingMode(clientId);
|
|
61
|
+
}
|
|
62
|
+
for (const clientId of disabledIds) {
|
|
63
|
+
unsetBlockEditingMode(clientId);
|
|
41
64
|
}
|
|
42
65
|
};
|
|
43
|
-
}, [
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
* Component that when rendered, makes it so that the site editor allows only
|
|
48
|
-
* page content to be edited.
|
|
49
|
-
*/
|
|
50
|
-
function DisableNonPageContentBlocks() {
|
|
51
|
-
useDisableNonPageContentBlocks();
|
|
66
|
+
}, [contentOnlyIds, disabledIds, setBlockEditingMode, unsetBlockEditingMode]);
|
|
67
|
+
return null;
|
|
52
68
|
}
|
|
53
69
|
//# sourceMappingURL=disable-non-page-content-blocks.js.map
|