@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.
Files changed (219) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/README.md +857 -0
  3. package/build/bindings/index.js +3 -1
  4. package/build/bindings/index.js.map +1 -1
  5. package/build/components/block-settings-menu/plugin-block-settings-menu-item.js +107 -0
  6. package/build/components/block-settings-menu/plugin-block-settings-menu-item.js.map +1 -0
  7. package/build/components/commands/index.js +1 -1
  8. package/build/components/commands/index.js.map +1 -1
  9. package/build/components/deprecated.js +158 -0
  10. package/build/components/deprecated.js.map +1 -1
  11. package/build/components/document-bar/index.js +7 -10
  12. package/build/components/document-bar/index.js.map +1 -1
  13. package/build/components/document-outline/index.js +1 -1
  14. package/build/components/document-outline/index.js.map +1 -1
  15. package/build/components/editor-canvas/edit-template-blocks-notification.js +2 -39
  16. package/build/components/editor-canvas/edit-template-blocks-notification.js.map +1 -1
  17. package/build/components/editor-canvas/index.js +3 -0
  18. package/build/components/editor-canvas/index.js.map +1 -1
  19. package/build/components/entities-saved-states/hooks/use-is-dirty.js +10 -16
  20. package/build/components/entities-saved-states/hooks/use-is-dirty.js.map +1 -1
  21. package/build/components/entities-saved-states/index.js +28 -88
  22. package/build/components/entities-saved-states/index.js.map +1 -1
  23. package/build/components/error-boundary/index.native.js +133 -0
  24. package/build/components/error-boundary/index.native.js.map +1 -0
  25. package/build/components/index.js +33 -8
  26. package/build/components/index.js.map +1 -1
  27. package/build/components/index.native.js +9 -1
  28. package/build/components/index.native.js.map +1 -1
  29. package/build/components/inserter-sidebar/index.js +5 -1
  30. package/build/components/inserter-sidebar/index.js.map +1 -1
  31. package/build/components/list-view-sidebar/index.js +2 -1
  32. package/build/components/list-view-sidebar/index.js.map +1 -1
  33. package/build/components/pattern-overrides-panel/index.js +30 -0
  34. package/build/components/pattern-overrides-panel/index.js.map +1 -0
  35. package/build/components/plugin-document-setting-panel/index.js +123 -0
  36. package/build/components/plugin-document-setting-panel/index.js.map +1 -0
  37. package/build/components/plugin-post-publish-panel/index.js +68 -0
  38. package/build/components/plugin-post-publish-panel/index.js.map +1 -0
  39. package/build/components/plugin-pre-publish-panel/index.js +71 -0
  40. package/build/components/plugin-pre-publish-panel/index.js.map +1 -0
  41. package/build/components/post-actions/actions.js +455 -0
  42. package/build/components/post-actions/actions.js.map +1 -0
  43. package/build/components/post-card-panel/index.js +93 -0
  44. package/build/components/post-card-panel/index.js.map +1 -0
  45. package/build/components/post-featured-image/index.js +3 -8
  46. package/build/components/post-featured-image/index.js.map +1 -1
  47. package/build/components/post-featured-image/panel.js +7 -3
  48. package/build/components/post-featured-image/panel.js.map +1 -1
  49. package/build/components/post-sync-status/index.js +0 -72
  50. package/build/components/post-sync-status/index.js.map +1 -1
  51. package/build/components/post-taxonomies/flat-term-selector.js +7 -3
  52. package/build/components/post-taxonomies/flat-term-selector.js.map +1 -1
  53. package/build/components/post-title/index.native.js +1 -1
  54. package/build/components/post-title/index.native.js.map +1 -1
  55. package/build/components/provider/disable-non-page-content-blocks.js +36 -20
  56. package/build/components/provider/disable-non-page-content-blocks.js.map +1 -1
  57. package/build/components/provider/index.js +1 -1
  58. package/build/components/provider/index.js.map +1 -1
  59. package/build/components/provider/use-block-editor-settings.js +8 -9
  60. package/build/components/provider/use-block-editor-settings.js.map +1 -1
  61. package/build/components/provider/use-hide-blocks-from-inserter.js +4 -3
  62. package/build/components/provider/use-hide-blocks-from-inserter.js.map +1 -1
  63. package/build/components/template-areas/index.js +70 -0
  64. package/build/components/template-areas/index.js.map +1 -0
  65. package/build/hooks/use-select-nearest-editable-block.js +87 -0
  66. package/build/hooks/use-select-nearest-editable-block.js.map +1 -0
  67. package/build/private-apis.js +6 -2
  68. package/build/private-apis.js.map +1 -1
  69. package/build/store/actions.js +46 -6
  70. package/build/store/actions.js.map +1 -1
  71. package/build/store/constants.js +3 -1
  72. package/build/store/constants.js.map +1 -1
  73. package/build/store/private-actions.js +80 -1
  74. package/build/store/private-actions.js.map +1 -1
  75. package/build/store/private-selectors.js +56 -3
  76. package/build/store/private-selectors.js.map +1 -1
  77. package/build/store/reducer.js +14 -1
  78. package/build/store/reducer.js.map +1 -1
  79. package/build/store/selectors.js +21 -11
  80. package/build/store/selectors.js.map +1 -1
  81. package/build/store/utils/get-filtered-template-parts.js +71 -0
  82. package/build/store/utils/get-filtered-template-parts.js.map +1 -0
  83. package/build-module/bindings/index.js +3 -1
  84. package/build-module/bindings/index.js.map +1 -1
  85. package/build-module/components/block-settings-menu/plugin-block-settings-menu-item.js +100 -0
  86. package/build-module/components/block-settings-menu/plugin-block-settings-menu-item.js.map +1 -0
  87. package/build-module/components/commands/index.js +1 -1
  88. package/build-module/components/commands/index.js.map +1 -1
  89. package/build-module/components/deprecated.js +159 -0
  90. package/build-module/components/deprecated.js.map +1 -1
  91. package/build-module/components/document-bar/index.js +8 -11
  92. package/build-module/components/document-bar/index.js.map +1 -1
  93. package/build-module/components/document-outline/index.js +1 -1
  94. package/build-module/components/document-outline/index.js.map +1 -1
  95. package/build-module/components/editor-canvas/edit-template-blocks-notification.js +4 -41
  96. package/build-module/components/editor-canvas/edit-template-blocks-notification.js.map +1 -1
  97. package/build-module/components/editor-canvas/index.js +3 -0
  98. package/build-module/components/editor-canvas/index.js.map +1 -1
  99. package/build-module/components/entities-saved-states/hooks/use-is-dirty.js +10 -16
  100. package/build-module/components/entities-saved-states/hooks/use-is-dirty.js.map +1 -1
  101. package/build-module/components/entities-saved-states/index.js +29 -89
  102. package/build-module/components/entities-saved-states/index.js.map +1 -1
  103. package/build-module/components/error-boundary/index.native.js +125 -0
  104. package/build-module/components/error-boundary/index.native.js.map +1 -0
  105. package/build-module/components/index.js +5 -1
  106. package/build-module/components/index.js.map +1 -1
  107. package/build-module/components/index.native.js +1 -0
  108. package/build-module/components/index.native.js.map +1 -1
  109. package/build-module/components/inserter-sidebar/index.js +5 -1
  110. package/build-module/components/inserter-sidebar/index.js.map +1 -1
  111. package/build-module/components/list-view-sidebar/index.js +2 -1
  112. package/build-module/components/list-view-sidebar/index.js.map +1 -1
  113. package/build-module/components/pattern-overrides-panel/index.js +23 -0
  114. package/build-module/components/pattern-overrides-panel/index.js.map +1 -0
  115. package/build-module/components/plugin-document-setting-panel/index.js +115 -0
  116. package/build-module/components/plugin-document-setting-panel/index.js.map +1 -0
  117. package/build-module/components/plugin-post-publish-panel/index.js +61 -0
  118. package/build-module/components/plugin-post-publish-panel/index.js.map +1 -0
  119. package/build-module/components/plugin-pre-publish-panel/index.js +64 -0
  120. package/build-module/components/plugin-pre-publish-panel/index.js.map +1 -0
  121. package/build-module/components/post-actions/actions.js +444 -0
  122. package/build-module/components/post-actions/actions.js.map +1 -0
  123. package/build-module/components/post-card-panel/index.js +85 -0
  124. package/build-module/components/post-card-panel/index.js.map +1 -0
  125. package/build-module/components/post-featured-image/index.js +4 -9
  126. package/build-module/components/post-featured-image/index.js.map +1 -1
  127. package/build-module/components/post-featured-image/panel.js +6 -2
  128. package/build-module/components/post-featured-image/panel.js.map +1 -1
  129. package/build-module/components/post-sync-status/index.js +2 -73
  130. package/build-module/components/post-sync-status/index.js.map +1 -1
  131. package/build-module/components/post-taxonomies/flat-term-selector.js +7 -3
  132. package/build-module/components/post-taxonomies/flat-term-selector.js.map +1 -1
  133. package/build-module/components/post-title/index.native.js +1 -1
  134. package/build-module/components/post-title/index.native.js.map +1 -1
  135. package/build-module/components/provider/disable-non-page-content-blocks.js +36 -20
  136. package/build-module/components/provider/disable-non-page-content-blocks.js.map +1 -1
  137. package/build-module/components/provider/index.js +1 -1
  138. package/build-module/components/provider/index.js.map +1 -1
  139. package/build-module/components/provider/use-block-editor-settings.js +9 -10
  140. package/build-module/components/provider/use-block-editor-settings.js.map +1 -1
  141. package/build-module/components/provider/use-hide-blocks-from-inserter.js +4 -3
  142. package/build-module/components/provider/use-hide-blocks-from-inserter.js.map +1 -1
  143. package/build-module/components/template-areas/index.js +63 -0
  144. package/build-module/components/template-areas/index.js.map +1 -0
  145. package/build-module/hooks/use-select-nearest-editable-block.js +80 -0
  146. package/build-module/hooks/use-select-nearest-editable-block.js.map +1 -0
  147. package/build-module/private-apis.js +6 -2
  148. package/build-module/private-apis.js.map +1 -1
  149. package/build-module/store/actions.js +37 -3
  150. package/build-module/store/actions.js.map +1 -1
  151. package/build-module/store/constants.js +2 -0
  152. package/build-module/store/constants.js.map +1 -1
  153. package/build-module/store/private-actions.js +78 -0
  154. package/build-module/store/private-actions.js.map +1 -1
  155. package/build-module/store/private-selectors.js +54 -3
  156. package/build-module/store/private-selectors.js.map +1 -1
  157. package/build-module/store/reducer.js +13 -1
  158. package/build-module/store/reducer.js.map +1 -1
  159. package/build-module/store/selectors.js +19 -10
  160. package/build-module/store/selectors.js.map +1 -1
  161. package/build-module/store/utils/get-filtered-template-parts.js +64 -0
  162. package/build-module/store/utils/get-filtered-template-parts.js.map +1 -0
  163. package/build-style/style-rtl.css +76 -33
  164. package/build-style/style.css +76 -33
  165. package/package.json +35 -33
  166. package/src/bindings/index.js +4 -1
  167. package/src/components/block-settings-menu/plugin-block-settings-menu-item.js +108 -0
  168. package/src/components/commands/index.js +1 -1
  169. package/src/components/deprecated.js +157 -0
  170. package/src/components/document-bar/index.js +12 -17
  171. package/src/components/document-bar/style.scss +9 -12
  172. package/src/components/document-outline/index.js +2 -1
  173. package/src/components/document-tools/style.scss +4 -11
  174. package/src/components/editor-canvas/edit-template-blocks-notification.js +6 -56
  175. package/src/components/editor-canvas/index.js +4 -0
  176. package/src/components/entities-saved-states/hooks/use-is-dirty.js +18 -22
  177. package/src/components/entities-saved-states/index.js +45 -121
  178. package/src/components/entities-saved-states/test/use-is-dirty.js +3 -0
  179. package/src/components/error-boundary/index.native.js +192 -0
  180. package/src/components/error-boundary/style.native.scss +116 -0
  181. package/src/components/index.js +5 -4
  182. package/src/components/index.native.js +1 -0
  183. package/src/components/inserter-sidebar/index.js +7 -1
  184. package/src/components/list-view-sidebar/index.js +1 -0
  185. package/src/components/list-view-sidebar/style.scss +1 -1
  186. package/src/components/pattern-overrides-panel/index.js +26 -0
  187. package/src/components/plugin-document-setting-panel/index.js +121 -0
  188. package/src/components/plugin-post-publish-panel/index.js +64 -0
  189. package/src/components/plugin-post-publish-panel/test/__snapshots__/index.js.snap +39 -0
  190. package/src/components/plugin-post-publish-panel/test/index.js +33 -0
  191. package/src/components/plugin-pre-publish-panel/index.js +67 -0
  192. package/src/components/plugin-pre-publish-panel/test/index.js +33 -0
  193. package/src/components/post-actions/actions.js +582 -0
  194. package/src/components/post-card-panel/index.js +108 -0
  195. package/src/components/post-card-panel/style.scss +32 -0
  196. package/src/components/post-featured-image/index.js +6 -15
  197. package/src/components/post-featured-image/panel.js +9 -3
  198. package/src/components/post-featured-image/style.scss +9 -13
  199. package/src/components/post-sync-status/index.js +1 -94
  200. package/src/components/post-taxonomies/flat-term-selector.js +13 -8
  201. package/src/components/post-title/index.native.js +1 -1
  202. package/src/components/provider/disable-non-page-content-blocks.js +40 -20
  203. package/src/components/provider/index.js +1 -1
  204. package/src/components/provider/test/disable-non-page-content-blocks.js +35 -14
  205. package/src/components/provider/use-block-editor-settings.js +11 -11
  206. package/src/components/provider/use-hide-blocks-from-inserter.js +5 -3
  207. package/src/components/template-areas/index.js +85 -0
  208. package/src/components/template-areas/style.scss +23 -0
  209. package/src/hooks/use-select-nearest-editable-block.js +95 -0
  210. package/src/private-apis.js +6 -2
  211. package/src/store/actions.js +37 -3
  212. package/src/store/constants.js +2 -0
  213. package/src/store/private-actions.js +111 -0
  214. package/src/store/private-selectors.js +105 -17
  215. package/src/store/reducer.js +13 -0
  216. package/src/store/selectors.js +50 -40
  217. package/src/store/utils/get-filtered-template-parts.js +69 -0
  218. package/src/store/utils/test/get-filtered-template-parts.js +189 -0
  219. package/src/style.scss +2 -0
@@ -1 +1 @@
1
- {"version":3,"names":["__","sprintf","applyFilters","DropZone","Button","Spinner","ResponsiveWrapper","withNotices","withFilters","__experimentalHStack","HStack","isBlobURL","useState","useRef","compose","useSelect","withDispatch","withSelect","MediaUpload","MediaUploadCheck","store","blockEditorStore","coreStore","PostFeaturedImageCheck","editorStore","ALLOWED_MEDIA_TYPES","DEFAULT_FEATURE_IMAGE_LABEL","DEFAULT_SET_FEATURE_IMAGE_LABEL","instructions","createElement","getMediaDetails","media","postId","_media$media_details$","_media$media_details$2","defaultSize","id","media_details","sizes","mediaWidth","width","mediaHeight","height","mediaSourceUrl","source_url","fallbackSize","PostFeaturedImage","currentPostId","featuredImageId","onUpdateImage","onRemoveImage","postType","noticeUI","noticeOperations","toggleRef","isLoading","setIsLoading","getSettings","onDropFiles","filesList","mediaUpload","allowedTypes","onFileChange","image","url","onError","message","removeAllNotices","createErrorNotice","className","alt_text","full","file","slug","fallback","title","labels","featured_image","onSelect","unstableFeaturedImageFlow","modalClass","render","open","ref","onClick","naturalWidth","naturalHeight","isInline","src","alt","set_featured_image","current","focus","onFilesDrop","value","applyWithSelect","select","getMedia","getPostType","getCurrentPostId","getEditedPostAttribute","context","applyWithDispatch","dispatch","editPost","featured_media","onDropImage"],"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":["__","sprintf","applyFilters","DropZone","Button","Spinner","withNotices","withFilters","__experimentalHStack","HStack","isBlobURL","useState","useRef","compose","useSelect","withDispatch","withSelect","MediaUpload","MediaUploadCheck","store","blockEditorStore","coreStore","PostFeaturedImageCheck","editorStore","ALLOWED_MEDIA_TYPES","DEFAULT_FEATURE_IMAGE_LABEL","DEFAULT_SET_FEATURE_IMAGE_LABEL","instructions","createElement","getMediaDetails","media","postId","_media$media_details$","_media$media_details$2","defaultSize","id","media_details","sizes","mediaWidth","width","mediaHeight","height","mediaSourceUrl","source_url","fallbackSize","PostFeaturedImage","currentPostId","featuredImageId","onUpdateImage","onRemoveImage","postType","noticeUI","noticeOperations","toggleRef","isLoading","setIsLoading","getSettings","onDropFiles","filesList","mediaUpload","allowedTypes","onFileChange","image","url","onError","message","removeAllNotices","createErrorNotice","className","alt_text","full","file","slug","fallback","title","labels","featured_image","onSelect","unstableFeaturedImageFlow","modalClass","render","open","ref","onClick","src","alt","set_featured_image","current","focus","onFilesDrop","value","applyWithSelect","select","getMedia","getPostType","getCurrentPostId","getEditedPostAttribute","context","applyWithDispatch","dispatch","editPost","featured_media","onDropImage"],"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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"}
@@ -14,7 +14,9 @@ import { store as editorStore } from '../../store';
14
14
  import PostFeaturedImage from './index';
15
15
  import PostFeaturedImageCheck from './check';
16
16
  const PANEL_NAME = 'featured-image';
17
- function FeaturedImage() {
17
+ export default function PostFeaturedImagePanel({
18
+ withPanelBody = true
19
+ }) {
18
20
  var _postType$labels$feat;
19
21
  const {
20
22
  postType,
@@ -41,11 +43,13 @@ function FeaturedImage() {
41
43
  if (!isEnabled) {
42
44
  return null;
43
45
  }
46
+ if (!withPanelBody) {
47
+ return createElement(PostFeaturedImageCheck, null, createElement(PostFeaturedImage, null));
48
+ }
44
49
  return createElement(PostFeaturedImageCheck, null, createElement(PanelBody, {
45
50
  title: (_postType$labels$feat = postType?.labels?.featured_image) !== null && _postType$labels$feat !== void 0 ? _postType$labels$feat : __('Featured image'),
46
51
  opened: isOpened,
47
52
  onToggle: () => toggleEditorPanelOpened(PANEL_NAME)
48
53
  }, createElement(PostFeaturedImage, null)));
49
54
  }
50
- export default FeaturedImage;
51
55
  //# sourceMappingURL=panel.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["__","PanelBody","useSelect","useDispatch","store","coreStore","editorStore","PostFeaturedImage","PostFeaturedImageCheck","PANEL_NAME","FeaturedImage","_postType$labels$feat","postType","isEnabled","isOpened","select","getEditedPostAttribute","isEditorPanelEnabled","isEditorPanelOpened","getPostType","toggleEditorPanelOpened","createElement","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\nfunction FeaturedImage() {\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\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\nexport default FeaturedImage;\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,EAAE,QAAQ,iBAAiB;AACpC,SAASC,SAAS,QAAQ,uBAAuB;AACjD,SAASC,SAAS,EAAEC,WAAW,QAAQ,iBAAiB;AACxD,SAASC,KAAK,IAAIC,SAAS,QAAQ,sBAAsB;;AAEzD;AACA;AACA;AACA,SAASD,KAAK,IAAIE,WAAW,QAAQ,aAAa;AAClD,OAAOC,iBAAiB,MAAM,SAAS;AACvC,OAAOC,sBAAsB,MAAM,SAAS;AAE5C,MAAMC,UAAU,GAAG,gBAAgB;AAEnC,SAASC,aAAaA,CAAA,EAAG;EAAA,IAAAC,qBAAA;EACxB,MAAM;IAAEC,QAAQ;IAAEC,SAAS;IAAEC;EAAS,CAAC,GAAGZ,SAAS,CAAIa,MAAM,IAAM;IAClE,MAAM;MACLC,sBAAsB;MACtBC,oBAAoB;MACpBC;IACD,CAAC,GAAGH,MAAM,CAAET,WAAY,CAAC;IACzB,MAAM;MAAEa;IAAY,CAAC,GAAGJ,MAAM,CAAEV,SAAU,CAAC;IAE3C,OAAO;MACNO,QAAQ,EAAEO,WAAW,CAAEH,sBAAsB,CAAE,MAAO,CAAE,CAAC;MACzDH,SAAS,EAAEI,oBAAoB,CAAER,UAAW,CAAC;MAC7CK,QAAQ,EAAEI,mBAAmB,CAAET,UAAW;IAC3C,CAAC;EACF,CAAC,EAAE,EAAG,CAAC;EAEP,MAAM;IAAEW;EAAwB,CAAC,GAAGjB,WAAW,CAAEG,WAAY,CAAC;EAE9D,IAAK,CAAEO,SAAS,EAAG;IAClB,OAAO,IAAI;EACZ;EAEA,OACCQ,aAAA,CAACb,sBAAsB,QACtBa,aAAA,CAACpB,SAAS;IACTqB,KAAK,GAAAX,qBAAA,GACJC,QAAQ,EAAEW,MAAM,EAAEC,cAAc,cAAAb,qBAAA,cAAAA,qBAAA,GAAIX,EAAE,CAAE,gBAAiB,CACzD;IACDyB,MAAM,EAAGX,QAAU;IACnBY,QAAQ,EAAGA,CAAA,KAAMN,uBAAuB,CAAEX,UAAW;EAAG,GAExDY,aAAA,CAACd,iBAAiB,MAAE,CACV,CACY,CAAC;AAE3B;AAEA,eAAeG,aAAa"}
1
+ {"version":3,"names":["__","PanelBody","useSelect","useDispatch","store","coreStore","editorStore","PostFeaturedImage","PostFeaturedImageCheck","PANEL_NAME","PostFeaturedImagePanel","withPanelBody","_postType$labels$feat","postType","isEnabled","isOpened","select","getEditedPostAttribute","isEditorPanelEnabled","isEditorPanelOpened","getPostType","toggleEditorPanelOpened","createElement","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":";AAAA;AACA;AACA;AACA,SAASA,EAAE,QAAQ,iBAAiB;AACpC,SAASC,SAAS,QAAQ,uBAAuB;AACjD,SAASC,SAAS,EAAEC,WAAW,QAAQ,iBAAiB;AACxD,SAASC,KAAK,IAAIC,SAAS,QAAQ,sBAAsB;;AAEzD;AACA;AACA;AACA,SAASD,KAAK,IAAIE,WAAW,QAAQ,aAAa;AAClD,OAAOC,iBAAiB,MAAM,SAAS;AACvC,OAAOC,sBAAsB,MAAM,SAAS;AAE5C,MAAMC,UAAU,GAAG,gBAAgB;AAEnC,eAAe,SAASC,sBAAsBA,CAAE;EAAEC,aAAa,GAAG;AAAK,CAAC,EAAG;EAAA,IAAAC,qBAAA;EAC1E,MAAM;IAAEC,QAAQ;IAAEC,SAAS;IAAEC;EAAS,CAAC,GAAGb,SAAS,CAAIc,MAAM,IAAM;IAClE,MAAM;MACLC,sBAAsB;MACtBC,oBAAoB;MACpBC;IACD,CAAC,GAAGH,MAAM,CAAEV,WAAY,CAAC;IACzB,MAAM;MAAEc;IAAY,CAAC,GAAGJ,MAAM,CAAEX,SAAU,CAAC;IAE3C,OAAO;MACNQ,QAAQ,EAAEO,WAAW,CAAEH,sBAAsB,CAAE,MAAO,CAAE,CAAC;MACzDH,SAAS,EAAEI,oBAAoB,CAAET,UAAW,CAAC;MAC7CM,QAAQ,EAAEI,mBAAmB,CAAEV,UAAW;IAC3C,CAAC;EACF,CAAC,EAAE,EAAG,CAAC;EAEP,MAAM;IAAEY;EAAwB,CAAC,GAAGlB,WAAW,CAAEG,WAAY,CAAC;EAE9D,IAAK,CAAEQ,SAAS,EAAG;IAClB,OAAO,IAAI;EACZ;EAEA,IAAK,CAAEH,aAAa,EAAG;IACtB,OACCW,aAAA,CAACd,sBAAsB,QACtBc,aAAA,CAACf,iBAAiB,MAAE,CACG,CAAC;EAE3B;EAEA,OACCe,aAAA,CAACd,sBAAsB,QACtBc,aAAA,CAACrB,SAAS;IACTsB,KAAK,GAAAX,qBAAA,GACJC,QAAQ,EAAEW,MAAM,EAAEC,cAAc,cAAAb,qBAAA,cAAAA,qBAAA,GAAIZ,EAAE,CAAE,gBAAiB,CACzD;IACD0B,MAAM,EAAGX,QAAU;IACnBY,QAAQ,EAAGA,CAAA,KAAMN,uBAAuB,CAAEZ,UAAW;EAAG,GAExDa,aAAA,CAACf,iBAAiB,MAAE,CACV,CACY,CAAC;AAE3B"}
@@ -1,22 +1,15 @@
1
- import { createElement, Fragment } from "react";
1
+ import { createElement } from "react";
2
2
  /**
3
3
  * WordPress dependencies
4
4
  */
5
- import { useSelect, useDispatch } from '@wordpress/data';
5
+ import { useSelect } from '@wordpress/data';
6
6
  import { __, _x } from '@wordpress/i18n';
7
- import { Modal, Button, __experimentalHStack as HStack, __experimentalVStack as VStack, ToggleControl } from '@wordpress/components';
8
- import { useEffect, useState } from '@wordpress/element';
9
- import { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';
10
7
 
11
8
  /**
12
9
  * Internal dependencies
13
10
  */
14
11
  import PostPanelRow from '../post-panel-row';
15
12
  import { store as editorStore } from '../../store';
16
- import { unlock } from '../../lock-unlock';
17
- const {
18
- ReusableBlocksRenameHint
19
- } = unlock(blockEditorPrivateApis);
20
13
  export default function PostSyncStatus() {
21
14
  const {
22
15
  syncStatus,
@@ -43,68 +36,4 @@ export default function PostSyncStatus() {
43
36
  className: "editor-post-sync-status__value"
44
37
  }, syncStatus === 'unsynced' ? _x('Not synced', 'Text that indicates that the pattern is not synchronized') : _x('Synced', 'Text that indicates that the pattern is synchronized')));
45
38
  }
46
- export function PostSyncStatusModal() {
47
- const {
48
- editPost
49
- } = useDispatch(editorStore);
50
- const [isModalOpen, setIsModalOpen] = useState(false);
51
- const [syncType, setSyncType] = useState(undefined);
52
- const {
53
- postType,
54
- isNewPost
55
- } = useSelect(select => {
56
- const {
57
- getEditedPostAttribute,
58
- isCleanNewPost
59
- } = select(editorStore);
60
- return {
61
- postType: getEditedPostAttribute('type'),
62
- isNewPost: isCleanNewPost()
63
- };
64
- }, []);
65
- useEffect(() => {
66
- if (isNewPost && postType === 'wp_block') {
67
- setIsModalOpen(true);
68
- }
69
- // We only want the modal to open when the page is first loaded.
70
- // eslint-disable-next-line react-hooks/exhaustive-deps
71
- }, []);
72
- const setSyncStatus = () => {
73
- editPost({
74
- meta: {
75
- wp_pattern_sync_status: syncType
76
- }
77
- });
78
- };
79
- if (postType !== 'wp_block' || !isNewPost) {
80
- return null;
81
- }
82
- return createElement(Fragment, null, isModalOpen && createElement(Modal, {
83
- title: __('Set pattern sync status'),
84
- onRequestClose: () => {
85
- setIsModalOpen(false);
86
- },
87
- overlayClassName: "reusable-blocks-menu-items__convert-modal"
88
- }, createElement("form", {
89
- onSubmit: event => {
90
- event.preventDefault();
91
- setIsModalOpen(false);
92
- setSyncStatus();
93
- }
94
- }, createElement(VStack, {
95
- spacing: "5"
96
- }, createElement(ReusableBlocksRenameHint, null), createElement(ToggleControl, {
97
- label: _x('Synced', 'Option that makes an individual pattern synchronized'),
98
- help: __('Sync this pattern across multiple locations.'),
99
- checked: !syncType,
100
- onChange: () => {
101
- setSyncType(!syncType ? 'unsynced' : undefined);
102
- }
103
- }), createElement(HStack, {
104
- justify: "right"
105
- }, createElement(Button, {
106
- variant: "primary",
107
- type: "submit"
108
- }, __('Create')))))));
109
- }
110
39
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useSelect","useDispatch","__","_x","Modal","Button","__experimentalHStack","HStack","__experimentalVStack","VStack","ToggleControl","useEffect","useState","privateApis","blockEditorPrivateApis","PostPanelRow","store","editorStore","unlock","ReusableBlocksRenameHint","PostSyncStatus","syncStatus","postType","select","getEditedPostAttribute","meta","currentSyncStatus","wp_pattern_sync_status","createElement","label","className","PostSyncStatusModal","editPost","isModalOpen","setIsModalOpen","syncType","setSyncType","undefined","isNewPost","isCleanNewPost","setSyncStatus","Fragment","title","onRequestClose","overlayClassName","onSubmit","event","preventDefault","spacing","help","checked","onChange","justify","variant","type"],"sources":["@wordpress/editor/src/components/post-sync-status/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { __, _x } from '@wordpress/i18n';\nimport {\n\tModal,\n\tButton,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\tToggleControl,\n} from '@wordpress/components';\nimport { useEffect, useState } from '@wordpress/element';\nimport { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport PostPanelRow from '../post-panel-row';\nimport { store as editorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\n\nconst { ReusableBlocksRenameHint } = unlock( blockEditorPrivateApis );\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\nexport function PostSyncStatusModal() {\n\tconst { editPost } = useDispatch( editorStore );\n\tconst [ isModalOpen, setIsModalOpen ] = useState( false );\n\tconst [ syncType, setSyncType ] = useState( undefined );\n\n\tconst { postType, isNewPost } = useSelect( ( select ) => {\n\t\tconst { getEditedPostAttribute, isCleanNewPost } =\n\t\t\tselect( editorStore );\n\t\treturn {\n\t\t\tpostType: getEditedPostAttribute( 'type' ),\n\t\t\tisNewPost: isCleanNewPost(),\n\t\t};\n\t}, [] );\n\n\tuseEffect( () => {\n\t\tif ( isNewPost && postType === 'wp_block' ) {\n\t\t\tsetIsModalOpen( true );\n\t\t}\n\t\t// We only want the modal to open when the page is first loaded.\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [] );\n\n\tconst setSyncStatus = () => {\n\t\teditPost( {\n\t\t\tmeta: {\n\t\t\t\twp_pattern_sync_status: syncType,\n\t\t\t},\n\t\t} );\n\t};\n\n\tif ( postType !== 'wp_block' || ! isNewPost ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{ isModalOpen && (\n\t\t\t\t<Modal\n\t\t\t\t\ttitle={ __( 'Set pattern sync status' ) }\n\t\t\t\t\tonRequestClose={ () => {\n\t\t\t\t\t\tsetIsModalOpen( false );\n\t\t\t\t\t} }\n\t\t\t\t\toverlayClassName=\"reusable-blocks-menu-items__convert-modal\"\n\t\t\t\t>\n\t\t\t\t\t<form\n\t\t\t\t\t\tonSubmit={ ( event ) => {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tsetIsModalOpen( false );\n\t\t\t\t\t\t\tsetSyncStatus();\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t<VStack spacing=\"5\">\n\t\t\t\t\t\t\t<ReusableBlocksRenameHint />\n\t\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\t\tlabel={ _x(\n\t\t\t\t\t\t\t\t\t'Synced',\n\t\t\t\t\t\t\t\t\t'Option that makes an individual pattern synchronized'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t\t'Sync this pattern across multiple locations.'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tchecked={ ! syncType }\n\t\t\t\t\t\t\t\tonChange={ () => {\n\t\t\t\t\t\t\t\t\tsetSyncType(\n\t\t\t\t\t\t\t\t\t\t! syncType ? 'unsynced' : undefined\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<HStack justify=\"right\">\n\t\t\t\t\t\t\t\t<Button variant=\"primary\" type=\"submit\">\n\t\t\t\t\t\t\t\t\t{ __( 'Create' ) }\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t</HStack>\n\t\t\t\t\t\t</VStack>\n\t\t\t\t\t</form>\n\t\t\t\t</Modal>\n\t\t\t) }\n\t\t</>\n\t);\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["useSelect","__","_x","PostPanelRow","store","editorStore","PostSyncStatus","syncStatus","postType","select","getEditedPostAttribute","meta","currentSyncStatus","wp_pattern_sync_status","createElement","label","className"],"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":";AAAA;AACA;AACA;AACA,SAASA,SAAS,QAAQ,iBAAiB;AAC3C,SAASC,EAAE,EAAEC,EAAE,QAAQ,iBAAiB;;AAExC;AACA;AACA;AACA,OAAOC,YAAY,MAAM,mBAAmB;AAC5C,SAASC,KAAK,IAAIC,WAAW,QAAQ,aAAa;AAElD,eAAe,SAASC,cAAcA,CAAA,EAAG;EACxC,MAAM;IAAEC,UAAU;IAAEC;EAAS,CAAC,GAAGR,SAAS,CAAIS,MAAM,IAAM;IACzD,MAAM;MAAEC;IAAuB,CAAC,GAAGD,MAAM,CAAEJ,WAAY,CAAC;IACxD,MAAMM,IAAI,GAAGD,sBAAsB,CAAE,MAAO,CAAC;;IAE7C;IACA,MAAME,iBAAiB,GACtBD,IAAI,EAAEE,sBAAsB,KAAK,UAAU,GACxC,UAAU,GACVH,sBAAsB,CAAE,wBAAyB,CAAC;IAEtD,OAAO;MACNH,UAAU,EAAEK,iBAAiB;MAC7BJ,QAAQ,EAAEE,sBAAsB,CAAE,MAAO;IAC1C,CAAC;EACF,CAAE,CAAC;EAEH,IAAKF,QAAQ,KAAK,UAAU,EAAG;IAC9B,OAAO,IAAI;EACZ;EAEA,OACCM,aAAA,CAACX,YAAY;IAACY,KAAK,EAAGd,EAAE,CAAE,aAAc;EAAG,GAC1Ca,aAAA;IAAKE,SAAS,EAAC;EAAgC,GAC5CT,UAAU,KAAK,UAAU,GACxBL,EAAE,CACF,YAAY,EACZ,0DACA,CAAC,GACDA,EAAE,CACF,QAAQ,EACR,sDACA,CACC,CACQ,CAAC;AAEjB"}
@@ -37,7 +37,7 @@ const DEFAULT_QUERY = {
37
37
  };
38
38
  const isSameTermName = (termA, termB) => unescapeString(termA).toLowerCase() === unescapeString(termB).toLowerCase();
39
39
  const termNamesToIds = (names, terms) => {
40
- return names.map(termName => terms.find(term => isSameTermName(term.name, termName)).id);
40
+ return names.map(termName => terms.find(term => isSameTermName(term.name, termName))?.id).filter(id => id !== undefined);
41
41
  };
42
42
  export function FlatTermSelector({
43
43
  slug
@@ -154,7 +154,8 @@ export function FlatTermSelector({
154
154
  // The selector will always re-fetch terms later.
155
155
  setValues(uniqueTerms);
156
156
  if (newTermNames.length === 0) {
157
- return onUpdateTerms(termNamesToIds(uniqueTerms, availableTerms));
157
+ onUpdateTerms(termNamesToIds(uniqueTerms, availableTerms));
158
+ return;
158
159
  }
159
160
  if (!hasCreateAction) {
160
161
  return;
@@ -163,11 +164,14 @@ export function FlatTermSelector({
163
164
  name: termName
164
165
  }))).then(newTerms => {
165
166
  const newAvailableTerms = availableTerms.concat(newTerms);
166
- return onUpdateTerms(termNamesToIds(uniqueTerms, newAvailableTerms));
167
+ onUpdateTerms(termNamesToIds(uniqueTerms, newAvailableTerms));
167
168
  }).catch(error => {
168
169
  createErrorNotice(error.message, {
169
170
  type: 'snackbar'
170
171
  });
172
+ // In case of a failure, try assigning available terms.
173
+ // This will invalidate the optimistic update.
174
+ onUpdateTerms(termNamesToIds(uniqueTerms, availableTerms));
171
175
  });
172
176
  }
173
177
  function appendTerm(newTerm) {
@@ -1 +1 @@
1
- {"version":3,"names":["__","_x","sprintf","useEffect","useMemo","useState","FormTokenField","withFilters","useSelect","useDispatch","store","coreStore","useDebounce","speak","noticesStore","editorStore","unescapeString","unescapeTerm","MostUsedTerms","EMPTY_ARRAY","MAX_TERMS_SUGGESTIONS","DEFAULT_QUERY","per_page","_fields","context","isSameTermName","termA","termB","toLowerCase","termNamesToIds","names","terms","map","termName","find","term","name","id","FlatTermSelector","slug","_taxonomy$labels$add_","_taxonomy$labels$sing2","values","setValues","search","setSearch","debouncedSearch","termIds","taxonomy","hasAssignAction","hasCreateAction","hasResolvedTerms","select","_post$_links","_post$_links2","getCurrentPost","getEditedPostAttribute","getEntityRecords","getTaxonomy","hasFinishedResolution","post","_taxonomy","_termIds","rest_base","query","include","join","_links","length","searchResults","newValues","suggestions","editPost","saveEntityRecord","createErrorNotice","findOrCreateTerm","newTerm","throwOnError","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","labels","singular_name","newTermLabel","add_new_item","singularName","termAddedLabel","termRemovedLabel","removeTermLabel","createElement","Fragment","__next40pxDefaultSize","value","onInputChange","maxSuggestions","label","messages","added","removed","remove","onSelect"],"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":"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"}
1
+ {"version":3,"names":["__","_x","sprintf","useEffect","useMemo","useState","FormTokenField","withFilters","useSelect","useDispatch","store","coreStore","useDebounce","speak","noticesStore","editorStore","unescapeString","unescapeTerm","MostUsedTerms","EMPTY_ARRAY","MAX_TERMS_SUGGESTIONS","DEFAULT_QUERY","per_page","_fields","context","isSameTermName","termA","termB","toLowerCase","termNamesToIds","names","terms","map","termName","find","term","name","id","filter","undefined","FlatTermSelector","slug","_taxonomy$labels$add_","_taxonomy$labels$sing2","values","setValues","search","setSearch","debouncedSearch","termIds","taxonomy","hasAssignAction","hasCreateAction","hasResolvedTerms","select","_post$_links","_post$_links2","getCurrentPost","getEditedPostAttribute","getEntityRecords","getTaxonomy","hasFinishedResolution","post","_taxonomy","_termIds","rest_base","query","include","join","_links","length","searchResults","newValues","suggestions","editPost","saveEntityRecord","createErrorNotice","findOrCreateTerm","newTerm","throwOnError","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","labels","singular_name","newTermLabel","add_new_item","singularName","termAddedLabel","termRemovedLabel","removeTermLabel","createElement","Fragment","__next40pxDefaultSize","value","onInputChange","maxSuggestions","label","messages","added","removed","remove","onSelect"],"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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"}
@@ -133,7 +133,7 @@ class PostTitle extends Component {
133
133
  accessibilityLabel: this.getTitle(title, postType),
134
134
  accessibilityHint: __('Updates the title.')
135
135
  }, createElement(RichText.Raw, {
136
- setRef: this.setRef,
136
+ ref: this.setRef,
137
137
  accessibilityLabel: this.getTitle(title, postType),
138
138
  tagName: 'p',
139
139
  tagsToEliminate: ['strong'],
@@ -1 +1 @@
1
- {"version":3,"names":["View","Component","create","toHTMLString","insert","decodeEntities","withDispatch","withSelect","withFocusOutside","withInstanceId","compose","__","sprintf","pasteHandler","store","blockEditorStore","RichText","editorStore","__unstableStripHTML","stripHTML","styles","PostTitle","constructor","props","setRef","bind","onPaste","componentDidUpdate","prevProps","isSelected","isAnyBlockSelected","richTextRef","blur","onUnselect","componentDidMount","innerRef","handleFocusOutside","focus","onSelect","value","plainText","html","title","onInsertBlockAfter","onUpdate","content","HTML","length","firstBlock","name","contentNoHTML","attributes","slice","newValue","richText","getTitle","postType","render","placeholder","style","focusedBorderColor","borderStyle","isDimmed","globalStyles","decodedPlaceholder","borderColor","titleStyles","text","color","placeholderColor","createElement","testID","titleContainer","dimmed","accessible","accessibilityLabel","accessibilityHint","Raw","tagName","tagsToEliminate","unstableOnFocus","onBlur","fontSize","lineHeight","fontWeight","deleteEnter","onChange","onSelectionChange","onEnter","onEnterPress","disableEditingMenu","__unstableIsSelected","__unstableOnCreateUndoLevel","select","isPostTitleSelected","getEditedPostAttribute","getSelectedBlockClientId","getBlockRootClientId","getSettings","selectedId","selectionIsNested","__experimentalGlobalStylesBaseStyles","dispatch","undo","redo","togglePostTitleSelection","editPost","clearSelectedBlock","insertDefaultBlock","insertBlocks","undefined","onUndo","onRedo","blocks"],"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":["View","Component","create","toHTMLString","insert","decodeEntities","withDispatch","withSelect","withFocusOutside","withInstanceId","compose","__","sprintf","pasteHandler","store","blockEditorStore","RichText","editorStore","__unstableStripHTML","stripHTML","styles","PostTitle","constructor","props","setRef","bind","onPaste","componentDidUpdate","prevProps","isSelected","isAnyBlockSelected","richTextRef","blur","onUnselect","componentDidMount","innerRef","handleFocusOutside","focus","onSelect","value","plainText","html","title","onInsertBlockAfter","onUpdate","content","HTML","length","firstBlock","name","contentNoHTML","attributes","slice","newValue","richText","getTitle","postType","render","placeholder","style","focusedBorderColor","borderStyle","isDimmed","globalStyles","decodedPlaceholder","borderColor","titleStyles","text","color","placeholderColor","createElement","testID","titleContainer","dimmed","accessible","accessibilityLabel","accessibilityHint","Raw","ref","tagName","tagsToEliminate","unstableOnFocus","onBlur","fontSize","lineHeight","fontWeight","deleteEnter","onChange","onSelectionChange","onEnter","onEnterPress","disableEditingMenu","__unstableIsSelected","__unstableOnCreateUndoLevel","select","isPostTitleSelected","getEditedPostAttribute","getSelectedBlockClientId","getBlockRootClientId","getSettings","selectedId","selectionIsNested","__experimentalGlobalStylesBaseStyles","dispatch","undo","redo","togglePostTitleSelection","editPost","clearSelectedBlock","insertDefaultBlock","insertBlocks","undefined","onUndo","onRedo","blocks"],"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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"}
@@ -4,43 +4,59 @@
4
4
  import { useSelect, useDispatch } from '@wordpress/data';
5
5
  import { store as blockEditorStore } from '@wordpress/block-editor';
6
6
  import { useEffect } from '@wordpress/element';
7
- const PAGE_CONTENT_BLOCKS = ['core/post-title', 'core/post-featured-image', 'core/post-content'];
8
- function useDisableNonPageContentBlocks() {
9
- const contentIds = useSelect(select => {
7
+ import { applyFilters } from '@wordpress/hooks';
8
+ const CONTENT_ONLY_BLOCKS = applyFilters('editor.postContentBlockTypes', ['core/post-title', 'core/post-featured-image', 'core/post-content', 'core/template-part']);
9
+
10
+ /**
11
+ * Component that when rendered, makes it so that the site editor allows only
12
+ * page content to be edited.
13
+ */
14
+ export default function DisableNonPageContentBlocks() {
15
+ const contentOnlyIds = useSelect(select => {
10
16
  const {
11
17
  getBlocksByName,
12
18
  getBlockParents,
13
19
  getBlockName
14
20
  } = select(blockEditorStore);
15
- return getBlocksByName(PAGE_CONTENT_BLOCKS).filter(clientId => getBlockParents(clientId).every(parentClientId => {
21
+ return getBlocksByName(CONTENT_ONLY_BLOCKS).filter(clientId => getBlockParents(clientId).every(parentClientId => {
16
22
  const parentBlockName = getBlockName(parentClientId);
17
- return parentBlockName !== 'core/query' && !PAGE_CONTENT_BLOCKS.includes(parentBlockName);
23
+ return (
24
+ // Ignore descendents of the query block.
25
+ parentBlockName !== 'core/query' &&
26
+ // Enable only the top-most block.
27
+ !CONTENT_ONLY_BLOCKS.includes(parentBlockName)
28
+ );
18
29
  }));
19
30
  }, []);
31
+ const disabledIds = useSelect(select => {
32
+ const {
33
+ getBlocksByName,
34
+ getBlockOrder
35
+ } = select(blockEditorStore);
36
+ return getBlocksByName(['core/template-part']).flatMap(clientId => getBlockOrder(clientId));
37
+ }, []);
20
38
  const {
21
39
  setBlockEditingMode,
22
40
  unsetBlockEditingMode
23
41
  } = useDispatch(blockEditorStore);
24
42
  useEffect(() => {
25
- setBlockEditingMode('', 'disabled'); // Disable editing at the root level.
26
-
27
- for (const contentId of contentIds) {
28
- setBlockEditingMode(contentId, 'contentOnly'); // Re-enable each content block.
43
+ setBlockEditingMode('', 'disabled');
44
+ for (const clientId of contentOnlyIds) {
45
+ setBlockEditingMode(clientId, 'contentOnly');
46
+ }
47
+ for (const clientId of disabledIds) {
48
+ setBlockEditingMode(clientId, 'disabled');
29
49
  }
30
50
  return () => {
31
51
  unsetBlockEditingMode('');
32
- for (const contentId of contentIds) {
33
- unsetBlockEditingMode(contentId);
52
+ for (const clientId of contentOnlyIds) {
53
+ unsetBlockEditingMode(clientId);
54
+ }
55
+ for (const clientId of disabledIds) {
56
+ unsetBlockEditingMode(clientId);
34
57
  }
35
58
  };
36
- }, [contentIds, setBlockEditingMode, unsetBlockEditingMode]);
37
- }
38
-
39
- /**
40
- * Component that when rendered, makes it so that the site editor allows only
41
- * page content to be edited.
42
- */
43
- export default function DisableNonPageContentBlocks() {
44
- useDisableNonPageContentBlocks();
59
+ }, [contentOnlyIds, disabledIds, setBlockEditingMode, unsetBlockEditingMode]);
60
+ return null;
45
61
  }
46
62
  //# sourceMappingURL=disable-non-page-content-blocks.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useSelect","useDispatch","store","blockEditorStore","useEffect","PAGE_CONTENT_BLOCKS","useDisableNonPageContentBlocks","contentIds","select","getBlocksByName","getBlockParents","getBlockName","filter","clientId","every","parentClientId","parentBlockName","includes","setBlockEditingMode","unsetBlockEditingMode","contentId","DisableNonPageContentBlocks"],"sources":["@wordpress/editor/src/components/provider/disable-non-page-content-blocks.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { useEffect } from '@wordpress/element';\n\nconst PAGE_CONTENT_BLOCKS = [\n\t'core/post-title',\n\t'core/post-featured-image',\n\t'core/post-content',\n];\n\nfunction useDisableNonPageContentBlocks() {\n\tconst contentIds = useSelect( ( select ) => {\n\t\tconst { getBlocksByName, getBlockParents, getBlockName } =\n\t\t\tselect( blockEditorStore );\n\t\treturn getBlocksByName( PAGE_CONTENT_BLOCKS ).filter( ( clientId ) =>\n\t\t\tgetBlockParents( clientId ).every( ( parentClientId ) => {\n\t\t\t\tconst parentBlockName = getBlockName( parentClientId );\n\t\t\t\treturn (\n\t\t\t\t\tparentBlockName !== 'core/query' &&\n\t\t\t\t\t! PAGE_CONTENT_BLOCKS.includes( parentBlockName )\n\t\t\t\t);\n\t\t\t} )\n\t\t);\n\t}, [] );\n\n\tconst { setBlockEditingMode, unsetBlockEditingMode } =\n\t\tuseDispatch( blockEditorStore );\n\n\tuseEffect( () => {\n\t\tsetBlockEditingMode( '', 'disabled' ); // Disable editing at the root level.\n\n\t\tfor ( const contentId of contentIds ) {\n\t\t\tsetBlockEditingMode( contentId, 'contentOnly' ); // Re-enable each content block.\n\t\t}\n\t\treturn () => {\n\t\t\tunsetBlockEditingMode( '' );\n\t\t\tfor ( const contentId of contentIds ) {\n\t\t\t\tunsetBlockEditingMode( contentId );\n\t\t\t}\n\t\t};\n\t}, [ contentIds, setBlockEditingMode, unsetBlockEditingMode ] );\n}\n\n/**\n * Component that when rendered, makes it so that the site editor allows only\n * page content to be edited.\n */\nexport default function DisableNonPageContentBlocks() {\n\tuseDisableNonPageContentBlocks();\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,SAAS,EAAEC,WAAW,QAAQ,iBAAiB;AACxD,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,yBAAyB;AACnE,SAASC,SAAS,QAAQ,oBAAoB;AAE9C,MAAMC,mBAAmB,GAAG,CAC3B,iBAAiB,EACjB,0BAA0B,EAC1B,mBAAmB,CACnB;AAED,SAASC,8BAA8BA,CAAA,EAAG;EACzC,MAAMC,UAAU,GAAGP,SAAS,CAAIQ,MAAM,IAAM;IAC3C,MAAM;MAAEC,eAAe;MAAEC,eAAe;MAAEC;IAAa,CAAC,GACvDH,MAAM,CAAEL,gBAAiB,CAAC;IAC3B,OAAOM,eAAe,CAAEJ,mBAAoB,CAAC,CAACO,MAAM,CAAIC,QAAQ,IAC/DH,eAAe,CAAEG,QAAS,CAAC,CAACC,KAAK,CAAIC,cAAc,IAAM;MACxD,MAAMC,eAAe,GAAGL,YAAY,CAAEI,cAAe,CAAC;MACtD,OACCC,eAAe,KAAK,YAAY,IAChC,CAAEX,mBAAmB,CAACY,QAAQ,CAAED,eAAgB,CAAC;IAEnD,CAAE,CACH,CAAC;EACF,CAAC,EAAE,EAAG,CAAC;EAEP,MAAM;IAAEE,mBAAmB;IAAEC;EAAsB,CAAC,GACnDlB,WAAW,CAAEE,gBAAiB,CAAC;EAEhCC,SAAS,CAAE,MAAM;IAChBc,mBAAmB,CAAE,EAAE,EAAE,UAAW,CAAC,CAAC,CAAC;;IAEvC,KAAM,MAAME,SAAS,IAAIb,UAAU,EAAG;MACrCW,mBAAmB,CAAEE,SAAS,EAAE,aAAc,CAAC,CAAC,CAAC;IAClD;IACA,OAAO,MAAM;MACZD,qBAAqB,CAAE,EAAG,CAAC;MAC3B,KAAM,MAAMC,SAAS,IAAIb,UAAU,EAAG;QACrCY,qBAAqB,CAAEC,SAAU,CAAC;MACnC;IACD,CAAC;EACF,CAAC,EAAE,CAAEb,UAAU,EAAEW,mBAAmB,EAAEC,qBAAqB,CAAG,CAAC;AAChE;;AAEA;AACA;AACA;AACA;AACA,eAAe,SAASE,2BAA2BA,CAAA,EAAG;EACrDf,8BAA8B,CAAC,CAAC;AACjC"}
1
+ {"version":3,"names":["useSelect","useDispatch","store","blockEditorStore","useEffect","applyFilters","CONTENT_ONLY_BLOCKS","DisableNonPageContentBlocks","contentOnlyIds","select","getBlocksByName","getBlockParents","getBlockName","filter","clientId","every","parentClientId","parentBlockName","includes","disabledIds","getBlockOrder","flatMap","setBlockEditingMode","unsetBlockEditingMode"],"sources":["@wordpress/editor/src/components/provider/disable-non-page-content-blocks.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { useEffect } from '@wordpress/element';\nimport { applyFilters } from '@wordpress/hooks';\n\nconst CONTENT_ONLY_BLOCKS = applyFilters( 'editor.postContentBlockTypes', [\n\t'core/post-title',\n\t'core/post-featured-image',\n\t'core/post-content',\n\t'core/template-part',\n] );\n\n/**\n * Component that when rendered, makes it so that the site editor allows only\n * page content to be edited.\n */\nexport default function DisableNonPageContentBlocks() {\n\tconst contentOnlyIds = useSelect( ( select ) => {\n\t\tconst { getBlocksByName, getBlockParents, getBlockName } =\n\t\t\tselect( blockEditorStore );\n\t\treturn getBlocksByName( CONTENT_ONLY_BLOCKS ).filter( ( clientId ) =>\n\t\t\tgetBlockParents( clientId ).every( ( parentClientId ) => {\n\t\t\t\tconst parentBlockName = getBlockName( parentClientId );\n\t\t\t\treturn (\n\t\t\t\t\t// Ignore descendents of the query block.\n\t\t\t\t\tparentBlockName !== 'core/query' &&\n\t\t\t\t\t// Enable only the top-most block.\n\t\t\t\t\t! CONTENT_ONLY_BLOCKS.includes( parentBlockName )\n\t\t\t\t);\n\t\t\t} )\n\t\t);\n\t}, [] );\n\n\tconst disabledIds = useSelect( ( select ) => {\n\t\tconst { getBlocksByName, getBlockOrder } = select( blockEditorStore );\n\t\treturn getBlocksByName( [ 'core/template-part' ] ).flatMap(\n\t\t\t( clientId ) => getBlockOrder( clientId )\n\t\t);\n\t}, [] );\n\n\tconst { setBlockEditingMode, unsetBlockEditingMode } =\n\t\tuseDispatch( blockEditorStore );\n\n\tuseEffect( () => {\n\t\tsetBlockEditingMode( '', 'disabled' );\n\t\tfor ( const clientId of contentOnlyIds ) {\n\t\t\tsetBlockEditingMode( clientId, 'contentOnly' );\n\t\t}\n\t\tfor ( const clientId of disabledIds ) {\n\t\t\tsetBlockEditingMode( clientId, 'disabled' );\n\t\t}\n\n\t\treturn () => {\n\t\t\tunsetBlockEditingMode( '' );\n\t\t\tfor ( const clientId of contentOnlyIds ) {\n\t\t\t\tunsetBlockEditingMode( clientId );\n\t\t\t}\n\t\t\tfor ( const clientId of disabledIds ) {\n\t\t\t\tunsetBlockEditingMode( clientId );\n\t\t\t}\n\t\t};\n\t}, [\n\t\tcontentOnlyIds,\n\t\tdisabledIds,\n\t\tsetBlockEditingMode,\n\t\tunsetBlockEditingMode,\n\t] );\n\n\treturn null;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,SAAS,EAAEC,WAAW,QAAQ,iBAAiB;AACxD,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,yBAAyB;AACnE,SAASC,SAAS,QAAQ,oBAAoB;AAC9C,SAASC,YAAY,QAAQ,kBAAkB;AAE/C,MAAMC,mBAAmB,GAAGD,YAAY,CAAE,8BAA8B,EAAE,CACzE,iBAAiB,EACjB,0BAA0B,EAC1B,mBAAmB,EACnB,oBAAoB,CACnB,CAAC;;AAEH;AACA;AACA;AACA;AACA,eAAe,SAASE,2BAA2BA,CAAA,EAAG;EACrD,MAAMC,cAAc,GAAGR,SAAS,CAAIS,MAAM,IAAM;IAC/C,MAAM;MAAEC,eAAe;MAAEC,eAAe;MAAEC;IAAa,CAAC,GACvDH,MAAM,CAAEN,gBAAiB,CAAC;IAC3B,OAAOO,eAAe,CAAEJ,mBAAoB,CAAC,CAACO,MAAM,CAAIC,QAAQ,IAC/DH,eAAe,CAAEG,QAAS,CAAC,CAACC,KAAK,CAAIC,cAAc,IAAM;MACxD,MAAMC,eAAe,GAAGL,YAAY,CAAEI,cAAe,CAAC;MACtD;QACC;QACAC,eAAe,KAAK,YAAY;QAChC;QACA,CAAEX,mBAAmB,CAACY,QAAQ,CAAED,eAAgB;MAAC;IAEnD,CAAE,CACH,CAAC;EACF,CAAC,EAAE,EAAG,CAAC;EAEP,MAAME,WAAW,GAAGnB,SAAS,CAAIS,MAAM,IAAM;IAC5C,MAAM;MAAEC,eAAe;MAAEU;IAAc,CAAC,GAAGX,MAAM,CAAEN,gBAAiB,CAAC;IACrE,OAAOO,eAAe,CAAE,CAAE,oBAAoB,CAAG,CAAC,CAACW,OAAO,CACvDP,QAAQ,IAAMM,aAAa,CAAEN,QAAS,CACzC,CAAC;EACF,CAAC,EAAE,EAAG,CAAC;EAEP,MAAM;IAAEQ,mBAAmB;IAAEC;EAAsB,CAAC,GACnDtB,WAAW,CAAEE,gBAAiB,CAAC;EAEhCC,SAAS,CAAE,MAAM;IAChBkB,mBAAmB,CAAE,EAAE,EAAE,UAAW,CAAC;IACrC,KAAM,MAAMR,QAAQ,IAAIN,cAAc,EAAG;MACxCc,mBAAmB,CAAER,QAAQ,EAAE,aAAc,CAAC;IAC/C;IACA,KAAM,MAAMA,QAAQ,IAAIK,WAAW,EAAG;MACrCG,mBAAmB,CAAER,QAAQ,EAAE,UAAW,CAAC;IAC5C;IAEA,OAAO,MAAM;MACZS,qBAAqB,CAAE,EAAG,CAAC;MAC3B,KAAM,MAAMT,QAAQ,IAAIN,cAAc,EAAG;QACxCe,qBAAqB,CAAET,QAAS,CAAC;MAClC;MACA,KAAM,MAAMA,QAAQ,IAAIK,WAAW,EAAG;QACrCI,qBAAqB,CAAET,QAAS,CAAC;MAClC;IACD,CAAC;EACF,CAAC,EAAE,CACFN,cAAc,EACdW,WAAW,EACXG,mBAAmB,EACnBC,qBAAqB,CACpB,CAAC;EAEH,OAAO,IAAI;AACZ"}
@@ -184,7 +184,7 @@ export const ExperimentalEditorProvider = withRegistryProvider(({
184
184
  var _settings$defaultRend;
185
185
  setRenderingMode((_settings$defaultRend = settings.defaultRenderingMode) !== null && _settings$defaultRend !== void 0 ? _settings$defaultRend : 'post-only');
186
186
  }, [settings.defaultRenderingMode, setRenderingMode]);
187
- useHideBlocksFromInserter(post.type);
187
+ useHideBlocksFromInserter(post.type, mode);
188
188
 
189
189
  // Register the editor commands.
190
190
  useCommands();