@wordpress/editor 14.3.0 → 14.5.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 (537) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/README.md +2 -1
  3. package/build/bindings/api.js +65 -0
  4. package/build/bindings/api.js.map +1 -0
  5. package/build/bindings/pattern-overrides.js +23 -13
  6. package/build/bindings/pattern-overrides.js.map +1 -1
  7. package/build/bindings/post-meta.js +35 -12
  8. package/build/bindings/post-meta.js.map +1 -1
  9. package/build/components/block-settings-menu/content-only-settings-menu.js +4 -1
  10. package/build/components/block-settings-menu/content-only-settings-menu.js.map +1 -1
  11. package/build/components/blog-title/index.js +7 -3
  12. package/build/components/blog-title/index.js.map +1 -1
  13. package/build/components/collapsible-block-toolbar/index.js +2 -3
  14. package/build/components/collapsible-block-toolbar/index.js.map +1 -1
  15. package/build/components/commands/index.js +8 -2
  16. package/build/components/commands/index.js.map +1 -1
  17. package/build/components/document-bar/index.js +1 -1
  18. package/build/components/document-bar/index.js.map +1 -1
  19. package/build/components/global-styles-provider/index.js +15 -3
  20. package/build/components/global-styles-provider/index.js.map +1 -1
  21. package/build/components/header/back-button.js +7 -8
  22. package/build/components/header/back-button.js.map +1 -1
  23. package/build/components/header/index.js +21 -20
  24. package/build/components/header/index.js.map +1 -1
  25. package/build/components/page-attributes/order.js +1 -67
  26. package/build/components/page-attributes/order.js.map +1 -1
  27. package/build/components/page-attributes/panel.js +1 -4
  28. package/build/components/page-attributes/panel.js.map +1 -1
  29. package/build/components/page-attributes/parent.js +6 -2
  30. package/build/components/page-attributes/parent.js.map +1 -1
  31. package/build/components/post-actions/actions.js +131 -344
  32. package/build/components/post-actions/actions.js.map +1 -1
  33. package/build/components/post-actions/index.js +16 -6
  34. package/build/components/post-actions/index.js.map +1 -1
  35. package/build/components/post-author/hook.js +10 -3
  36. package/build/components/post-author/hook.js.map +1 -1
  37. package/build/components/post-author/panel.js +2 -1
  38. package/build/components/post-author/panel.js.map +1 -1
  39. package/build/components/post-card-panel/index.js +9 -3
  40. package/build/components/post-card-panel/index.js.map +1 -1
  41. package/build/components/post-comments/index.js +6 -20
  42. package/build/components/post-comments/index.js.map +1 -1
  43. package/build/components/post-content-information/index.js +7 -1
  44. package/build/components/post-content-information/index.js.map +1 -1
  45. package/build/components/post-discussion/panel.js +2 -2
  46. package/build/components/post-discussion/panel.js.map +1 -1
  47. package/build/components/post-excerpt/panel.js +1 -1
  48. package/build/components/post-excerpt/panel.js.map +1 -1
  49. package/build/components/post-featured-image/index.js +3 -1
  50. package/build/components/post-featured-image/index.js.map +1 -1
  51. package/build/components/post-last-revision/index.js +2 -1
  52. package/build/components/post-last-revision/index.js.map +1 -1
  53. package/build/components/post-publish-button/index.js +4 -11
  54. package/build/components/post-publish-button/index.js.map +1 -1
  55. package/build/components/post-publish-panel/maybe-category-panel.js +4 -1
  56. package/build/components/post-publish-panel/maybe-category-panel.js.map +1 -1
  57. package/build/components/post-publish-panel/maybe-tags-panel.js +2 -1
  58. package/build/components/post-publish-panel/maybe-tags-panel.js.map +1 -1
  59. package/build/components/post-status/index.js +47 -51
  60. package/build/components/post-status/index.js.map +1 -1
  61. package/build/components/post-taxonomies/flat-term-selector.js +17 -6
  62. package/build/components/post-taxonomies/flat-term-selector.js.map +1 -1
  63. package/build/components/post-taxonomies/index.js +7 -1
  64. package/build/components/post-taxonomies/index.js.map +1 -1
  65. package/build/components/post-template/block-theme.js +4 -4
  66. package/build/components/post-template/block-theme.js.map +1 -1
  67. package/build/components/post-template/classic-theme.js +8 -2
  68. package/build/components/post-template/classic-theme.js.map +1 -1
  69. package/build/components/post-template/create-new-template-modal.js +3 -0
  70. package/build/components/post-template/create-new-template-modal.js.map +1 -1
  71. package/build/components/post-template/create-new-template.js +4 -1
  72. package/build/components/post-template/create-new-template.js.map +1 -1
  73. package/build/components/post-template/hooks.js +5 -1
  74. package/build/components/post-template/hooks.js.map +1 -1
  75. package/build/components/post-template/panel.js +8 -2
  76. package/build/components/post-template/panel.js.map +1 -1
  77. package/build/components/post-trash/check.js +6 -4
  78. package/build/components/post-trash/check.js.map +1 -1
  79. package/build/components/post-url/panel.js +9 -4
  80. package/build/components/post-url/panel.js.map +1 -1
  81. package/build/components/posts-per-page/index.js +6 -2
  82. package/build/components/posts-per-page/index.js.map +1 -1
  83. package/build/components/preview-dropdown/index.js +82 -17
  84. package/build/components/preview-dropdown/index.js.map +1 -1
  85. package/build/components/provider/disable-non-page-content-blocks.js +14 -18
  86. package/build/components/provider/disable-non-page-content-blocks.js.map +1 -1
  87. package/build/components/provider/use-block-editor-settings.js +15 -6
  88. package/build/components/provider/use-block-editor-settings.js.map +1 -1
  89. package/build/components/save-publish-panels/index.js +1 -2
  90. package/build/components/save-publish-panels/index.js.map +1 -1
  91. package/build/components/sidebar/index.js +3 -9
  92. package/build/components/sidebar/index.js.map +1 -1
  93. package/build/components/site-discussion/index.js +12 -22
  94. package/build/components/site-discussion/index.js.map +1 -1
  95. package/build/components/template-content-panel/index.js +17 -15
  96. package/build/components/template-content-panel/index.js.map +1 -1
  97. package/build/components/visual-editor/edit-template-blocks-notification.js +4 -4
  98. package/build/components/visual-editor/edit-template-blocks-notification.js.map +1 -1
  99. package/build/components/visual-editor/index.js +7 -3
  100. package/build/components/visual-editor/index.js.map +1 -1
  101. package/build/{hooks → components/visual-editor}/use-select-nearest-editable-block.js +1 -1
  102. package/build/components/visual-editor/use-select-nearest-editable-block.js.map +1 -0
  103. package/build/dataviews/actions/delete-post.js +2 -0
  104. package/build/dataviews/actions/delete-post.js.map +1 -1
  105. package/build/dataviews/actions/export-pattern.native.js +9 -0
  106. package/build/dataviews/actions/export-pattern.native.js.map +1 -0
  107. package/build/dataviews/actions/permanently-delete-post.js +107 -0
  108. package/build/dataviews/actions/permanently-delete-post.js.map +1 -0
  109. package/build/dataviews/actions/restore-post.js +112 -0
  110. package/build/dataviews/actions/restore-post.js.map +1 -0
  111. package/build/dataviews/actions/trash-post.js +142 -0
  112. package/build/dataviews/actions/trash-post.js.map +1 -0
  113. package/build/dataviews/store/private-actions.js +45 -0
  114. package/build/dataviews/store/private-actions.js.map +1 -1
  115. package/build/dataviews/store/private-selectors.js +10 -10
  116. package/build/dataviews/store/private-selectors.js.map +1 -1
  117. package/build/dataviews/store/reducer.js +15 -1
  118. package/build/dataviews/store/reducer.js.map +1 -1
  119. package/build/dataviews/types.js.map +1 -1
  120. package/build/hooks/pattern-overrides.js +1 -1
  121. package/build/hooks/pattern-overrides.js.map +1 -1
  122. package/build/index.js +0 -1
  123. package/build/index.js.map +1 -1
  124. package/build/private-apis.js +3 -2
  125. package/build/private-apis.js.map +1 -1
  126. package/build/store/actions.js +16 -2
  127. package/build/store/actions.js.map +1 -1
  128. package/build/store/private-actions.js +8 -1
  129. package/build/store/private-actions.js.map +1 -1
  130. package/build/store/private-selectors.js +33 -2
  131. package/build/store/private-selectors.js.map +1 -1
  132. package/build/utils/media-upload/index.js +35 -2
  133. package/build/utils/media-upload/index.js.map +1 -1
  134. package/build-module/bindings/api.js +57 -0
  135. package/build-module/bindings/api.js.map +1 -0
  136. package/build-module/bindings/pattern-overrides.js +23 -13
  137. package/build-module/bindings/pattern-overrides.js.map +1 -1
  138. package/build-module/bindings/post-meta.js +35 -12
  139. package/build-module/bindings/post-meta.js.map +1 -1
  140. package/build-module/components/block-settings-menu/content-only-settings-menu.js +4 -1
  141. package/build-module/components/block-settings-menu/content-only-settings-menu.js.map +1 -1
  142. package/build-module/components/blog-title/index.js +7 -3
  143. package/build-module/components/blog-title/index.js.map +1 -1
  144. package/build-module/components/collapsible-block-toolbar/index.js +1 -2
  145. package/build-module/components/collapsible-block-toolbar/index.js.map +1 -1
  146. package/build-module/components/commands/index.js +8 -2
  147. package/build-module/components/commands/index.js.map +1 -1
  148. package/build-module/components/document-bar/index.js +1 -1
  149. package/build-module/components/document-bar/index.js.map +1 -1
  150. package/build-module/components/global-styles-provider/index.js +15 -3
  151. package/build-module/components/global-styles-provider/index.js.map +1 -1
  152. package/build-module/components/header/back-button.js +5 -7
  153. package/build-module/components/header/back-button.js.map +1 -1
  154. package/build-module/components/header/index.js +21 -22
  155. package/build-module/components/header/index.js.map +1 -1
  156. package/build-module/components/page-attributes/order.js +4 -70
  157. package/build-module/components/page-attributes/order.js.map +1 -1
  158. package/build-module/components/page-attributes/panel.js +1 -6
  159. package/build-module/components/page-attributes/panel.js.map +1 -1
  160. package/build-module/components/page-attributes/parent.js +7 -3
  161. package/build-module/components/page-attributes/parent.js.map +1 -1
  162. package/build-module/components/post-actions/actions.js +137 -350
  163. package/build-module/components/post-actions/actions.js.map +1 -1
  164. package/build-module/components/post-actions/index.js +16 -6
  165. package/build-module/components/post-actions/index.js.map +1 -1
  166. package/build-module/components/post-author/hook.js +10 -3
  167. package/build-module/components/post-author/hook.js.map +1 -1
  168. package/build-module/components/post-author/panel.js +2 -1
  169. package/build-module/components/post-author/panel.js.map +1 -1
  170. package/build-module/components/post-card-panel/index.js +9 -3
  171. package/build-module/components/post-card-panel/index.js.map +1 -1
  172. package/build-module/components/post-comments/index.js +8 -24
  173. package/build-module/components/post-comments/index.js.map +1 -1
  174. package/build-module/components/post-content-information/index.js +7 -1
  175. package/build-module/components/post-content-information/index.js.map +1 -1
  176. package/build-module/components/post-discussion/panel.js +3 -3
  177. package/build-module/components/post-discussion/panel.js.map +1 -1
  178. package/build-module/components/post-excerpt/panel.js +1 -1
  179. package/build-module/components/post-excerpt/panel.js.map +1 -1
  180. package/build-module/components/post-featured-image/index.js +3 -1
  181. package/build-module/components/post-featured-image/index.js.map +1 -1
  182. package/build-module/components/post-last-revision/index.js +2 -1
  183. package/build-module/components/post-last-revision/index.js.map +1 -1
  184. package/build-module/components/post-publish-button/index.js +4 -11
  185. package/build-module/components/post-publish-button/index.js.map +1 -1
  186. package/build-module/components/post-publish-panel/maybe-category-panel.js +4 -1
  187. package/build-module/components/post-publish-panel/maybe-category-panel.js.map +1 -1
  188. package/build-module/components/post-publish-panel/maybe-tags-panel.js +2 -1
  189. package/build-module/components/post-publish-panel/maybe-tags-panel.js.map +1 -1
  190. package/build-module/components/post-status/index.js +49 -53
  191. package/build-module/components/post-status/index.js.map +1 -1
  192. package/build-module/components/post-taxonomies/flat-term-selector.js +17 -6
  193. package/build-module/components/post-taxonomies/flat-term-selector.js.map +1 -1
  194. package/build-module/components/post-taxonomies/index.js +7 -1
  195. package/build-module/components/post-taxonomies/index.js.map +1 -1
  196. package/build-module/components/post-template/block-theme.js +4 -4
  197. package/build-module/components/post-template/block-theme.js.map +1 -1
  198. package/build-module/components/post-template/classic-theme.js +8 -2
  199. package/build-module/components/post-template/classic-theme.js.map +1 -1
  200. package/build-module/components/post-template/create-new-template-modal.js +3 -0
  201. package/build-module/components/post-template/create-new-template-modal.js.map +1 -1
  202. package/build-module/components/post-template/create-new-template.js +4 -1
  203. package/build-module/components/post-template/create-new-template.js.map +1 -1
  204. package/build-module/components/post-template/hooks.js +5 -1
  205. package/build-module/components/post-template/hooks.js.map +1 -1
  206. package/build-module/components/post-template/panel.js +8 -2
  207. package/build-module/components/post-template/panel.js.map +1 -1
  208. package/build-module/components/post-trash/check.js +6 -4
  209. package/build-module/components/post-trash/check.js.map +1 -1
  210. package/build-module/components/post-url/panel.js +10 -7
  211. package/build-module/components/post-url/panel.js.map +1 -1
  212. package/build-module/components/posts-per-page/index.js +6 -2
  213. package/build-module/components/posts-per-page/index.js.map +1 -1
  214. package/build-module/components/preview-dropdown/index.js +84 -19
  215. package/build-module/components/preview-dropdown/index.js.map +1 -1
  216. package/build-module/components/provider/disable-non-page-content-blocks.js +15 -19
  217. package/build-module/components/provider/disable-non-page-content-blocks.js.map +1 -1
  218. package/build-module/components/provider/use-block-editor-settings.js +15 -6
  219. package/build-module/components/provider/use-block-editor-settings.js.map +1 -1
  220. package/build-module/components/save-publish-panels/index.js +1 -2
  221. package/build-module/components/save-publish-panels/index.js.map +1 -1
  222. package/build-module/components/sidebar/index.js +3 -9
  223. package/build-module/components/sidebar/index.js.map +1 -1
  224. package/build-module/components/site-discussion/index.js +14 -24
  225. package/build-module/components/site-discussion/index.js.map +1 -1
  226. package/build-module/components/template-content-panel/index.js +18 -16
  227. package/build-module/components/template-content-panel/index.js.map +1 -1
  228. package/build-module/components/visual-editor/edit-template-blocks-notification.js +4 -4
  229. package/build-module/components/visual-editor/edit-template-blocks-notification.js.map +1 -1
  230. package/build-module/components/visual-editor/index.js +7 -3
  231. package/build-module/components/visual-editor/index.js.map +1 -1
  232. package/build-module/{hooks → components/visual-editor}/use-select-nearest-editable-block.js +1 -1
  233. package/build-module/components/visual-editor/use-select-nearest-editable-block.js.map +1 -0
  234. package/build-module/dataviews/actions/delete-post.js +2 -0
  235. package/build-module/dataviews/actions/delete-post.js.map +1 -1
  236. package/build-module/dataviews/actions/export-pattern.native.js +3 -0
  237. package/build-module/dataviews/actions/export-pattern.native.js.map +1 -0
  238. package/build-module/dataviews/actions/permanently-delete-post.js +99 -0
  239. package/build-module/dataviews/actions/permanently-delete-post.js.map +1 -0
  240. package/build-module/dataviews/actions/restore-post.js +104 -0
  241. package/build-module/dataviews/actions/restore-post.js.map +1 -0
  242. package/build-module/dataviews/actions/trash-post.js +135 -0
  243. package/build-module/dataviews/actions/trash-post.js.map +1 -0
  244. package/build-module/dataviews/store/private-actions.js +40 -0
  245. package/build-module/dataviews/store/private-actions.js.map +1 -1
  246. package/build-module/dataviews/store/private-selectors.js +8 -9
  247. package/build-module/dataviews/store/private-selectors.js.map +1 -1
  248. package/build-module/dataviews/store/reducer.js +15 -1
  249. package/build-module/dataviews/store/reducer.js.map +1 -1
  250. package/build-module/dataviews/types.js.map +1 -1
  251. package/build-module/hooks/pattern-overrides.js +1 -1
  252. package/build-module/hooks/pattern-overrides.js.map +1 -1
  253. package/build-module/index.js +0 -1
  254. package/build-module/index.js.map +1 -1
  255. package/build-module/private-apis.js +3 -2
  256. package/build-module/private-apis.js.map +1 -1
  257. package/build-module/store/actions.js +16 -2
  258. package/build-module/store/actions.js.map +1 -1
  259. package/build-module/store/private-actions.js +8 -1
  260. package/build-module/store/private-actions.js.map +1 -1
  261. package/build-module/store/private-selectors.js +32 -2
  262. package/build-module/store/private-selectors.js.map +1 -1
  263. package/build-module/utils/media-upload/index.js +36 -3
  264. package/build-module/utils/media-upload/index.js.map +1 -1
  265. package/build-style/style-rtl.css +97 -45
  266. package/build-style/style.css +97 -45
  267. package/build-types/bindings/api.d.ts +25 -0
  268. package/build-types/bindings/api.d.ts.map +1 -0
  269. package/build-types/bindings/pattern-overrides.d.ts +5 -6
  270. package/build-types/bindings/pattern-overrides.d.ts.map +1 -1
  271. package/build-types/bindings/post-meta.d.ts +11 -7
  272. package/build-types/bindings/post-meta.d.ts.map +1 -1
  273. package/build-types/components/autocompleters/user.d.ts +2 -2
  274. package/build-types/components/autocompleters/user.d.ts.map +1 -1
  275. package/build-types/components/block-settings-menu/plugin-block-settings-menu-item.d.ts.map +1 -1
  276. package/build-types/components/blog-title/index.d.ts.map +1 -1
  277. package/build-types/components/collapsible-block-toolbar/index.d.ts +1 -2
  278. package/build-types/components/collapsible-block-toolbar/index.d.ts.map +1 -1
  279. package/build-types/components/commands/index.d.ts.map +1 -1
  280. package/build-types/components/document-bar/index.d.ts.map +1 -1
  281. package/build-types/components/document-outline/check.d.ts.map +1 -1
  282. package/build-types/components/document-outline/index.d.ts.map +1 -1
  283. package/build-types/components/editor-history/redo.d.ts +1 -1
  284. package/build-types/components/editor-history/undo.d.ts +1 -1
  285. package/build-types/components/editor-notices/index.d.ts.map +1 -1
  286. package/build-types/components/editor-snackbars/index.d.ts.map +1 -1
  287. package/build-types/components/entities-saved-states/index.d.ts.map +1 -1
  288. package/build-types/components/global-styles-provider/index.d.ts.map +1 -1
  289. package/build-types/components/header/back-button.d.ts +1 -0
  290. package/build-types/components/header/back-button.d.ts.map +1 -1
  291. package/build-types/components/header/index.d.ts.map +1 -1
  292. package/build-types/components/local-autosave-monitor/index.d.ts.map +1 -1
  293. package/build-types/components/media-categories/index.d.ts.map +1 -1
  294. package/build-types/components/more-menu/tools-more-menu-group.d.ts.map +1 -1
  295. package/build-types/components/more-menu/view-more-menu-group.d.ts.map +1 -1
  296. package/build-types/components/page-attributes/check.d.ts.map +1 -1
  297. package/build-types/components/page-attributes/order.d.ts +1 -1
  298. package/build-types/components/page-attributes/order.d.ts.map +1 -1
  299. package/build-types/components/page-attributes/panel.d.ts.map +1 -1
  300. package/build-types/components/page-attributes/parent.d.ts.map +1 -1
  301. package/build-types/components/plugin-document-setting-panel/index.d.ts.map +1 -1
  302. package/build-types/components/plugin-post-publish-panel/index.d.ts.map +1 -1
  303. package/build-types/components/plugin-post-status-info/index.d.ts.map +1 -1
  304. package/build-types/components/plugin-pre-publish-panel/index.d.ts.map +1 -1
  305. package/build-types/components/plugin-sidebar/index.d.ts.map +1 -1
  306. package/build-types/components/plugin-sidebar-more-menu-item/index.d.ts.map +1 -1
  307. package/build-types/components/post-actions/actions.d.ts.map +1 -1
  308. package/build-types/components/post-actions/index.d.ts.map +1 -1
  309. package/build-types/components/post-author/check.d.ts.map +1 -1
  310. package/build-types/components/post-author/hook.d.ts +1 -1
  311. package/build-types/components/post-author/hook.d.ts.map +1 -1
  312. package/build-types/components/post-author/index.d.ts.map +1 -1
  313. package/build-types/components/post-author/panel.d.ts.map +1 -1
  314. package/build-types/components/post-card-panel/index.d.ts.map +1 -1
  315. package/build-types/components/post-comments/index.d.ts.map +1 -1
  316. package/build-types/components/post-content-information/index.d.ts.map +1 -1
  317. package/build-types/components/post-discussion/panel.d.ts.map +1 -1
  318. package/build-types/components/post-excerpt/check.d.ts.map +1 -1
  319. package/build-types/components/post-excerpt/index.d.ts.map +1 -1
  320. package/build-types/components/post-excerpt/panel.d.ts.map +1 -1
  321. package/build-types/components/post-excerpt/plugin.d.ts.map +1 -1
  322. package/build-types/components/post-featured-image/check.d.ts.map +1 -1
  323. package/build-types/components/post-featured-image/panel.d.ts.map +1 -1
  324. package/build-types/components/post-format/index.d.ts.map +1 -1
  325. package/build-types/components/post-format/panel.d.ts.map +1 -1
  326. package/build-types/components/post-last-revision/check.d.ts.map +1 -1
  327. package/build-types/components/post-last-revision/index.d.ts.map +1 -1
  328. package/build-types/components/post-last-revision/panel.d.ts.map +1 -1
  329. package/build-types/components/post-locked-modal/index.d.ts.map +1 -1
  330. package/build-types/components/post-pending-status/check.d.ts.map +1 -1
  331. package/build-types/components/post-pending-status/index.d.ts.map +1 -1
  332. package/build-types/components/post-preview-button/index.d.ts.map +1 -1
  333. package/build-types/components/post-publish-button/index.d.ts.map +1 -1
  334. package/build-types/components/post-publish-panel/maybe-category-panel.d.ts.map +1 -1
  335. package/build-types/components/post-saved-state/index.d.ts +1 -1
  336. package/build-types/components/post-saved-state/index.d.ts.map +1 -1
  337. package/build-types/components/post-schedule/check.d.ts.map +1 -1
  338. package/build-types/components/post-schedule/index.d.ts.map +1 -1
  339. package/build-types/components/post-schedule/label.d.ts.map +1 -1
  340. package/build-types/components/post-schedule/panel.d.ts.map +1 -1
  341. package/build-types/components/post-slug/check.d.ts.map +1 -1
  342. package/build-types/components/post-slug/index.d.ts.map +1 -1
  343. package/build-types/components/post-status/index.d.ts +2 -1
  344. package/build-types/components/post-status/index.d.ts.map +1 -1
  345. package/build-types/components/post-sticky/check.d.ts.map +1 -1
  346. package/build-types/components/post-sticky/index.d.ts.map +1 -1
  347. package/build-types/components/post-switch-to-draft-button/index.d.ts.map +1 -1
  348. package/build-types/components/post-sync-status/index.d.ts.map +1 -1
  349. package/build-types/components/post-taxonomies/check.d.ts.map +1 -1
  350. package/build-types/components/post-taxonomies/flat-term-selector.d.ts +9 -7
  351. package/build-types/components/post-taxonomies/flat-term-selector.d.ts.map +1 -1
  352. package/build-types/components/post-taxonomies/hierarchical-term-selector.d.ts +13 -11
  353. package/build-types/components/post-taxonomies/hierarchical-term-selector.d.ts.map +1 -1
  354. package/build-types/components/post-taxonomies/index.d.ts.map +1 -1
  355. package/build-types/components/post-template/block-theme.d.ts.map +1 -1
  356. package/build-types/components/post-template/classic-theme.d.ts.map +1 -1
  357. package/build-types/components/post-template/create-new-template-modal.d.ts.map +1 -1
  358. package/build-types/components/post-template/create-new-template.d.ts.map +1 -1
  359. package/build-types/components/post-template/hooks.d.ts.map +1 -1
  360. package/build-types/components/post-template/panel.d.ts.map +1 -1
  361. package/build-types/components/post-text-editor/index.d.ts.map +1 -1
  362. package/build-types/components/post-trash/check.d.ts.map +1 -1
  363. package/build-types/components/post-trash/index.d.ts.map +1 -1
  364. package/build-types/components/post-type-support-check/index.d.ts.map +1 -1
  365. package/build-types/components/post-url/check.d.ts.map +1 -1
  366. package/build-types/components/post-url/index.d.ts.map +1 -1
  367. package/build-types/components/post-url/label.d.ts.map +1 -1
  368. package/build-types/components/post-url/panel.d.ts.map +1 -1
  369. package/build-types/components/post-visibility/check.d.ts.map +1 -1
  370. package/build-types/components/post-visibility/index.d.ts.map +1 -1
  371. package/build-types/components/posts-per-page/index.d.ts.map +1 -1
  372. package/build-types/components/preferences-modal/enable-plugin-document-setting-panel.d.ts.map +1 -1
  373. package/build-types/components/preview-dropdown/index.d.ts.map +1 -1
  374. package/build-types/components/provider/disable-non-page-content-blocks.d.ts.map +1 -1
  375. package/build-types/components/provider/index.d.ts.map +1 -1
  376. package/build-types/components/provider/use-block-editor-settings.d.ts.map +1 -1
  377. package/build-types/components/save-publish-panels/index.d.ts.map +1 -1
  378. package/build-types/components/sidebar/index.d.ts.map +1 -1
  379. package/build-types/components/site-discussion/index.d.ts.map +1 -1
  380. package/build-types/components/template-content-panel/index.d.ts +1 -3
  381. package/build-types/components/template-content-panel/index.d.ts.map +1 -1
  382. package/build-types/components/theme-support-check/index.d.ts.map +1 -1
  383. package/build-types/components/time-to-read/index.d.ts.map +1 -1
  384. package/build-types/components/unsaved-changes-warning/index.d.ts.map +1 -1
  385. package/build-types/components/visual-editor/edit-template-blocks-notification.d.ts +1 -1
  386. package/build-types/components/visual-editor/edit-template-blocks-notification.d.ts.map +1 -1
  387. package/build-types/components/visual-editor/index.d.ts.map +1 -1
  388. package/build-types/components/visual-editor/use-select-nearest-editable-block.d.ts.map +1 -0
  389. package/build-types/components/word-count/index.d.ts.map +1 -1
  390. package/build-types/dataviews/actions/delete-post.d.ts.map +1 -1
  391. package/build-types/dataviews/actions/export-pattern.native.d.ts +3 -0
  392. package/build-types/dataviews/actions/export-pattern.native.d.ts.map +1 -0
  393. package/build-types/dataviews/actions/permanently-delete-post.d.ts +5 -0
  394. package/build-types/dataviews/actions/permanently-delete-post.d.ts.map +1 -0
  395. package/build-types/dataviews/actions/restore-post.d.ts +5 -0
  396. package/build-types/dataviews/actions/restore-post.d.ts.map +1 -0
  397. package/build-types/dataviews/actions/trash-post.d.ts +5 -0
  398. package/build-types/dataviews/actions/trash-post.d.ts.map +1 -0
  399. package/build-types/dataviews/api.d.ts +1 -1
  400. package/build-types/dataviews/api.d.ts.map +1 -1
  401. package/build-types/dataviews/store/private-actions.d.ts +8 -3
  402. package/build-types/dataviews/store/private-actions.d.ts.map +1 -1
  403. package/build-types/dataviews/store/private-selectors.d.ts +2 -2
  404. package/build-types/dataviews/store/private-selectors.d.ts.map +1 -1
  405. package/build-types/dataviews/store/reducer.d.ts +4 -1
  406. package/build-types/dataviews/store/reducer.d.ts.map +1 -1
  407. package/build-types/dataviews/types.d.ts +9 -0
  408. package/build-types/dataviews/types.d.ts.map +1 -1
  409. package/build-types/hooks/custom-sources-backwards-compatibility.d.ts +1 -1
  410. package/build-types/hooks/custom-sources-backwards-compatibility.d.ts.map +1 -1
  411. package/build-types/hooks/pattern-overrides.d.ts.map +1 -1
  412. package/build-types/private-apis.d.ts.map +1 -1
  413. package/build-types/store/actions.d.ts.map +1 -1
  414. package/build-types/store/private-actions.d.ts.map +1 -1
  415. package/build-types/store/private-selectors.d.ts +11 -0
  416. package/build-types/store/private-selectors.d.ts.map +1 -1
  417. package/build-types/store/reducer.d.ts +1 -0
  418. package/build-types/store/reducer.d.ts.map +1 -1
  419. package/build-types/store/selectors.d.ts +0 -1
  420. package/build-types/store/selectors.d.ts.map +1 -1
  421. package/build-types/utils/media-upload/index.d.ts.map +1 -1
  422. package/package.json +38 -37
  423. package/src/bindings/api.js +57 -0
  424. package/src/bindings/pattern-overrides.js +28 -17
  425. package/src/bindings/post-meta.js +39 -14
  426. package/src/components/block-settings-menu/content-only-settings-menu.js +4 -4
  427. package/src/components/blog-title/index.js +8 -3
  428. package/src/components/collapsible-block-toolbar/index.js +1 -3
  429. package/src/components/collapsible-block-toolbar/style.scss +0 -3
  430. package/src/components/commands/index.js +4 -2
  431. package/src/components/document-bar/index.js +1 -1
  432. package/src/components/document-bar/style.scss +2 -6
  433. package/src/components/document-tools/style.scss +4 -4
  434. package/src/components/editor-interface/style.scss +9 -0
  435. package/src/components/global-styles-provider/index.js +22 -11
  436. package/src/components/header/back-button.js +6 -6
  437. package/src/components/header/index.js +27 -27
  438. package/src/components/header/style.scss +64 -21
  439. package/src/components/inserter-sidebar/style.scss +1 -6
  440. package/src/components/list-view-sidebar/style.scss +4 -0
  441. package/src/components/page-attributes/order.js +3 -77
  442. package/src/components/page-attributes/panel.js +1 -7
  443. package/src/components/page-attributes/parent.js +25 -7
  444. package/src/components/post-actions/actions.js +158 -463
  445. package/src/components/post-actions/index.js +19 -7
  446. package/src/components/post-author/hook.js +11 -3
  447. package/src/components/post-author/panel.js +3 -1
  448. package/src/components/post-card-panel/index.js +9 -3
  449. package/src/components/post-comments/index.js +8 -21
  450. package/src/components/post-content-information/index.js +7 -1
  451. package/src/components/post-discussion/panel.js +5 -3
  452. package/src/components/post-excerpt/panel.js +2 -1
  453. package/src/components/post-featured-image/index.js +5 -1
  454. package/src/components/post-last-revision/index.js +1 -0
  455. package/src/components/post-panel-row/style.scss +0 -1
  456. package/src/components/post-publish-button/index.js +4 -17
  457. package/src/components/post-publish-panel/maybe-category-panel.js +4 -1
  458. package/src/components/post-publish-panel/maybe-tags-panel.js +1 -1
  459. package/src/components/post-publish-panel/test/__snapshots__/index.js.snap +2 -2
  460. package/src/components/post-status/index.js +29 -51
  461. package/src/components/post-taxonomies/flat-term-selector.js +19 -5
  462. package/src/components/post-taxonomies/index.js +8 -1
  463. package/src/components/post-template/block-theme.js +5 -1
  464. package/src/components/post-template/classic-theme.js +8 -3
  465. package/src/components/post-template/create-new-template-modal.js +7 -1
  466. package/src/components/post-template/create-new-template.js +4 -1
  467. package/src/components/post-template/hooks.js +8 -2
  468. package/src/components/post-template/panel.js +10 -2
  469. package/src/components/post-trash/check.js +9 -5
  470. package/src/components/post-url/panel.js +15 -4
  471. package/src/components/posts-per-page/index.js +7 -2
  472. package/src/components/preview-dropdown/index.js +113 -35
  473. package/src/components/preview-dropdown/style.scss +5 -0
  474. package/src/components/provider/disable-non-page-content-blocks.js +27 -24
  475. package/src/components/provider/use-block-editor-settings.js +15 -6
  476. package/src/components/save-publish-panels/index.js +1 -4
  477. package/src/components/sidebar/index.js +2 -5
  478. package/src/components/site-discussion/index.js +15 -22
  479. package/src/components/template-content-panel/index.js +37 -21
  480. package/src/components/visual-editor/edit-template-blocks-notification.js +5 -1
  481. package/src/components/visual-editor/index.js +13 -8
  482. package/src/components/visual-editor/style.scss +1 -4
  483. package/src/{hooks → components/visual-editor}/use-select-nearest-editable-block.js +1 -1
  484. package/src/dataviews/actions/delete-post.tsx +2 -0
  485. package/src/dataviews/actions/export-pattern.native.tsx +3 -0
  486. package/src/dataviews/actions/permanently-delete-post.tsx +116 -0
  487. package/src/dataviews/actions/restore-post.tsx +134 -0
  488. package/src/dataviews/actions/trash-post.tsx +196 -0
  489. package/src/dataviews/store/private-actions.ts +68 -0
  490. package/src/dataviews/store/private-selectors.ts +9 -17
  491. package/src/dataviews/store/reducer.ts +20 -1
  492. package/src/dataviews/types.ts +11 -0
  493. package/src/hooks/pattern-overrides.js +1 -1
  494. package/src/index.js +0 -1
  495. package/src/private-apis.js +6 -2
  496. package/src/store/actions.js +36 -13
  497. package/src/store/private-actions.js +8 -4
  498. package/src/store/private-selectors.js +45 -2
  499. package/src/store/test/actions.js +9 -3
  500. package/src/store/test/private-selectors.js +78 -0
  501. package/src/utils/media-upload/index.js +38 -3
  502. package/tsconfig.tsbuildinfo +1 -1
  503. package/build/bindings/index.js +0 -22
  504. package/build/bindings/index.js.map +0 -1
  505. package/build/dataviews/actions/index.js +0 -32
  506. package/build/dataviews/actions/index.js.map +0 -1
  507. package/build/hooks/use-select-nearest-editable-block.js.map +0 -1
  508. package/build/store/utils/get-filtered-template-parts.js +0 -71
  509. package/build/store/utils/get-filtered-template-parts.js.map +0 -1
  510. package/build/utils/set-nested-value.js +0 -44
  511. package/build/utils/set-nested-value.js.map +0 -1
  512. package/build-module/bindings/index.js +0 -17
  513. package/build-module/bindings/index.js.map +0 -1
  514. package/build-module/dataviews/actions/index.js +0 -24
  515. package/build-module/dataviews/actions/index.js.map +0 -1
  516. package/build-module/hooks/use-select-nearest-editable-block.js.map +0 -1
  517. package/build-module/store/utils/get-filtered-template-parts.js +0 -64
  518. package/build-module/store/utils/get-filtered-template-parts.js.map +0 -1
  519. package/build-module/utils/set-nested-value.js +0 -38
  520. package/build-module/utils/set-nested-value.js.map +0 -1
  521. package/build-types/bindings/index.d.ts +0 -2
  522. package/build-types/bindings/index.d.ts.map +0 -1
  523. package/build-types/dataviews/actions/index.d.ts +0 -2
  524. package/build-types/dataviews/actions/index.d.ts.map +0 -1
  525. package/build-types/hooks/use-select-nearest-editable-block.d.ts.map +0 -1
  526. package/build-types/store/utils/get-filtered-template-parts.d.ts +0 -3
  527. package/build-types/store/utils/get-filtered-template-parts.d.ts.map +0 -1
  528. package/build-types/utils/set-nested-value.d.ts +0 -20
  529. package/build-types/utils/set-nested-value.d.ts.map +0 -1
  530. package/src/bindings/index.js +0 -15
  531. package/src/components/document-outline/test/__snapshots__/index.js.snap +0 -111
  532. package/src/components/document-outline/test/index.js +0 -185
  533. package/src/dataviews/actions/index.ts +0 -25
  534. package/src/store/utils/get-filtered-template-parts.js +0 -69
  535. package/src/store/utils/test/get-filtered-template-parts.js +0 -189
  536. package/src/utils/set-nested-value.js +0 -39
  537. /package/build-types/{hooks → components/visual-editor}/use-select-nearest-editable-block.d.ts +0 -0
@@ -17,7 +17,10 @@ export default function CreateNewTemplate( { onClick } ) {
17
17
  const { canCreateTemplates } = useSelect( ( select ) => {
18
18
  const { canUser } = select( coreStore );
19
19
  return {
20
- canCreateTemplates: canUser( 'create', 'templates' ),
20
+ canCreateTemplates: canUser( 'create', {
21
+ kind: 'postType',
22
+ name: 'wp_template',
23
+ } ),
21
24
  };
22
25
  }, [] );
23
26
  const [ isCreateModalOpen, setIsCreateModalOpen ] = useState( false );
@@ -23,8 +23,14 @@ export function useAllowSwitchingTemplates() {
23
23
  const { postType, postId } = useEditedPostContext();
24
24
  return useSelect(
25
25
  ( select ) => {
26
- const { getEntityRecord, getEntityRecords } = select( coreStore );
27
- const siteSettings = getEntityRecord( 'root', 'site' );
26
+ const { canUser, getEntityRecord, getEntityRecords } =
27
+ select( coreStore );
28
+ const siteSettings = canUser( 'read', {
29
+ kind: 'root',
30
+ name: 'site',
31
+ } )
32
+ ? getEntityRecord( 'root', 'site' )
33
+ : undefined;
28
34
  const templates = getEntityRecords( 'postType', 'wp_template', {
29
35
  per_page: -1,
30
36
  } );
@@ -48,12 +48,20 @@ export default function PostTemplatePanel() {
48
48
  }
49
49
 
50
50
  const canCreateTemplates =
51
- select( coreStore ).canUser( 'create', 'templates' ) ?? false;
51
+ select( coreStore ).canUser( 'create', {
52
+ kind: 'postType',
53
+ name: 'wp_template',
54
+ } ) ?? false;
52
55
  return canCreateTemplates;
53
56
  }, [] );
54
57
 
55
58
  const canViewTemplates = useSelect( ( select ) => {
56
- return select( coreStore ).canUser( 'read', 'templates' ) ?? false;
59
+ return (
60
+ select( coreStore ).canUser( 'read', {
61
+ kind: 'postType',
62
+ name: 'wp_template',
63
+ } ) ?? false
64
+ );
57
65
  }, [] );
58
66
 
59
67
  if ( ( ! isBlockTheme || ! canViewTemplates ) && isVisible ) {
@@ -21,13 +21,17 @@ export default function PostTrashCheck( { children } ) {
21
21
  const { canTrashPost } = useSelect( ( select ) => {
22
22
  const { isEditedPostNew, getCurrentPostId, getCurrentPostType } =
23
23
  select( editorStore );
24
- const { getPostType, canUser } = select( coreStore );
25
- const postType = getPostType( getCurrentPostType() );
24
+ const { canUser } = select( coreStore );
25
+ const postType = getCurrentPostType();
26
26
  const postId = getCurrentPostId();
27
27
  const isNew = isEditedPostNew();
28
- const resource = postType?.rest_base || ''; // eslint-disable-line camelcase
29
- const canUserDelete =
30
- postId && resource ? canUser( 'delete', resource, postId ) : false;
28
+ const canUserDelete = !! postId
29
+ ? canUser( 'delete', {
30
+ kind: 'postType',
31
+ name: postType,
32
+ id: postId,
33
+ } )
34
+ : false;
31
35
 
32
36
  return {
33
37
  canTrashPost: ( ! isNew || postId ) && canUserDelete,
@@ -3,7 +3,11 @@
3
3
  */
4
4
  import { useMemo, useState } from '@wordpress/element';
5
5
  import { useSelect } from '@wordpress/data';
6
- import { Dropdown, Button } from '@wordpress/components';
6
+ import {
7
+ Dropdown,
8
+ Button,
9
+ __experimentalTruncate as Truncate,
10
+ } from '@wordpress/components';
7
11
  import { __, sprintf } from '@wordpress/i18n';
8
12
  import { safeDecodeURIComponent } from '@wordpress/url';
9
13
  import { store as coreStore } from '@wordpress/core-data';
@@ -61,8 +65,13 @@ export default function PostURLPanel() {
61
65
  function PostURLToggle( { isOpen, onClick } ) {
62
66
  const { slug, isFrontPage, postLink } = useSelect( ( select ) => {
63
67
  const { getCurrentPostId, getCurrentPost } = select( editorStore );
64
- const { getEditedEntityRecord } = select( coreStore );
65
- const siteSettings = getEditedEntityRecord( 'root', 'site' );
68
+ const { getEditedEntityRecord, canUser } = select( coreStore );
69
+ const siteSettings = canUser( 'read', {
70
+ kind: 'root',
71
+ name: 'site',
72
+ } )
73
+ ? getEditedEntityRecord( 'root', 'site' )
74
+ : undefined;
66
75
  const _id = getCurrentPostId();
67
76
  return {
68
77
  slug: select( editorStore ).getEditedPostSlug(),
@@ -81,7 +90,9 @@ function PostURLToggle( { isOpen, onClick } ) {
81
90
  aria-label={ sprintf( __( 'Change link: %s' ), decodedSlug ) }
82
91
  onClick={ onClick }
83
92
  >
84
- { isFrontPage ? postLink : <>/{ decodedSlug }</> }
93
+ <Truncate numberOfLines={ 1 }>
94
+ { isFrontPage ? postLink : `/${ decodedSlug }` }
95
+ </Truncate>
85
96
  </Button>
86
97
  );
87
98
  }
@@ -24,8 +24,13 @@ export default function PostsPerPage() {
24
24
  const { postsPerPage, isTemplate, postSlug } = useSelect( ( select ) => {
25
25
  const { getEditedPostAttribute, getCurrentPostType } =
26
26
  select( editorStore );
27
- const { getEditedEntityRecord } = select( coreStore );
28
- const siteSettings = getEditedEntityRecord( 'root', 'site' );
27
+ const { getEditedEntityRecord, canUser } = select( coreStore );
28
+ const siteSettings = canUser( 'read', {
29
+ kind: 'root',
30
+ name: 'site',
31
+ } )
32
+ ? getEditedEntityRecord( 'root', 'site' )
33
+ : undefined;
29
34
  return {
30
35
  isTemplate: getCurrentPostType() === TEMPLATE_POST_TYPE,
31
36
  postSlug: getEditedPostAttribute( 'slug' ),
@@ -1,3 +1,8 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import clsx from 'clsx';
5
+
1
6
  /**
2
7
  * WordPress dependencies
3
8
  */
@@ -6,14 +11,17 @@ import {
6
11
  DropdownMenu,
7
12
  MenuGroup,
8
13
  MenuItem,
14
+ MenuItemsChoice,
9
15
  VisuallyHidden,
10
16
  Icon,
11
17
  } from '@wordpress/components';
12
18
  import { __ } from '@wordpress/i18n';
13
- import { check, desktop, mobile, tablet, external } from '@wordpress/icons';
19
+ import { desktop, mobile, tablet, external } from '@wordpress/icons';
14
20
  import { useSelect, useDispatch } from '@wordpress/data';
15
21
  import { store as coreStore } from '@wordpress/core-data';
22
+ import { useEffect, useRef } from '@wordpress/element';
16
23
  import { store as preferencesStore } from '@wordpress/preferences';
24
+ import { store as blockEditorStore } from '@wordpress/block-editor';
17
25
 
18
26
  /**
19
27
  * Internal dependencies
@@ -22,21 +30,50 @@ import { store as editorStore } from '../../store';
22
30
  import PostPreviewButton from '../post-preview-button';
23
31
 
24
32
  export default function PreviewDropdown( { forceIsAutosaveable, disabled } ) {
25
- const { deviceType, homeUrl, isTemplate, isViewable, showIconLabels } =
26
- useSelect( ( select ) => {
27
- const { getDeviceType, getCurrentPostType } = select( editorStore );
28
- const { getUnstableBase, getPostType } = select( coreStore );
29
- const { get } = select( preferencesStore );
30
- const _currentPostType = getCurrentPostType();
31
- return {
32
- deviceType: getDeviceType(),
33
- homeUrl: getUnstableBase()?.home,
34
- isTemplate: _currentPostType === 'wp_template',
35
- isViewable: getPostType( _currentPostType )?.viewable ?? false,
36
- showIconLabels: get( 'core', 'showIconLabels' ),
37
- };
38
- }, [] );
33
+ const {
34
+ deviceType,
35
+ editorMode,
36
+ homeUrl,
37
+ isTemplate,
38
+ isViewable,
39
+ showIconLabels,
40
+ } = useSelect( ( select ) => {
41
+ const { getDeviceType, getCurrentPostType } = select( editorStore );
42
+ const { getUnstableBase, getPostType } = select( coreStore );
43
+ const { get } = select( preferencesStore );
44
+ const { __unstableGetEditorMode } = select( blockEditorStore );
45
+ const _currentPostType = getCurrentPostType();
46
+ return {
47
+ deviceType: getDeviceType(),
48
+ editorMode: __unstableGetEditorMode(),
49
+ homeUrl: getUnstableBase()?.home,
50
+ isTemplate: _currentPostType === 'wp_template',
51
+ isViewable: getPostType( _currentPostType )?.viewable ?? false,
52
+ showIconLabels: get( 'core', 'showIconLabels' ),
53
+ };
54
+ }, [] );
39
55
  const { setDeviceType } = useDispatch( editorStore );
56
+ const { __unstableSetEditorMode } = useDispatch( blockEditorStore );
57
+
58
+ /**
59
+ * Save the original editing mode in a ref to restore it when we exit zoom out.
60
+ */
61
+ const originalEditingMode = useRef( editorMode );
62
+ useEffect( () => {
63
+ if ( editorMode !== 'zoom-out' ) {
64
+ originalEditingMode.current = editorMode;
65
+ }
66
+
67
+ return () => {
68
+ if (
69
+ editorMode === 'zoom-out' &&
70
+ editorMode !== originalEditingMode.current
71
+ ) {
72
+ __unstableSetEditorMode( originalEditingMode.current );
73
+ }
74
+ };
75
+ }, [ editorMode, __unstableSetEditorMode ] );
76
+
40
77
  const isMobile = useViewportMatch( 'medium', '<' );
41
78
  if ( isMobile ) {
42
79
  return null;
@@ -47,6 +84,7 @@ export default function PreviewDropdown( { forceIsAutosaveable, disabled } ) {
47
84
  };
48
85
  const toggleProps = {
49
86
  className: 'editor-preview-dropdown__toggle',
87
+ iconPosition: 'right',
50
88
  size: 'compact',
51
89
  showTooltip: ! showIconLabels,
52
90
  disabled,
@@ -57,42 +95,81 @@ export default function PreviewDropdown( { forceIsAutosaveable, disabled } ) {
57
95
  };
58
96
 
59
97
  const deviceIcons = {
98
+ desktop,
60
99
  mobile,
61
100
  tablet,
62
- desktop,
101
+ };
102
+
103
+ /**
104
+ * The choices for the device type.
105
+ *
106
+ * @type {Array}
107
+ */
108
+ const choices = [
109
+ {
110
+ value: 'Desktop',
111
+ label: __( 'Desktop' ),
112
+ icon: desktop,
113
+ },
114
+ {
115
+ value: 'ZoomOut',
116
+ label: __( 'Desktop (50%)' ),
117
+ icon: desktop,
118
+ },
119
+ {
120
+ value: 'Tablet',
121
+ label: __( 'Tablet' ),
122
+ icon: tablet,
123
+ },
124
+ {
125
+ value: 'Mobile',
126
+ label: __( 'Mobile' ),
127
+ icon: mobile,
128
+ },
129
+ ];
130
+
131
+ const previewValue = editorMode === 'zoom-out' ? 'ZoomOut' : deviceType;
132
+
133
+ /**
134
+ * Handles the selection of a device type.
135
+ *
136
+ * @param {string} value The device type.
137
+ */
138
+ const onSelect = ( value ) => {
139
+ let newEditorMode = originalEditingMode.current;
140
+
141
+ if ( value === 'ZoomOut' ) {
142
+ newEditorMode = 'zoom-out';
143
+ setDeviceType( 'Desktop' );
144
+ } else {
145
+ setDeviceType( value );
146
+ }
147
+
148
+ __unstableSetEditorMode( newEditorMode );
63
149
  };
64
150
 
65
151
  return (
66
152
  <DropdownMenu
67
- className="editor-preview-dropdown"
153
+ className={ clsx(
154
+ 'editor-preview-dropdown',
155
+ `editor-preview-dropdown--${ deviceType.toLowerCase() }`
156
+ ) }
68
157
  popoverProps={ popoverProps }
69
158
  toggleProps={ toggleProps }
70
159
  menuProps={ menuProps }
71
160
  icon={ deviceIcons[ deviceType.toLowerCase() ] }
161
+ text={ editorMode === 'zoom-out' ? __( '50%' ) : undefined }
72
162
  label={ __( 'View' ) }
73
163
  disableOpenOnArrowDown={ disabled }
74
164
  >
75
165
  { ( { onClose } ) => (
76
166
  <>
77
167
  <MenuGroup>
78
- <MenuItem
79
- onClick={ () => setDeviceType( 'Desktop' ) }
80
- icon={ deviceType === 'Desktop' && check }
81
- >
82
- { __( 'Desktop' ) }
83
- </MenuItem>
84
- <MenuItem
85
- onClick={ () => setDeviceType( 'Tablet' ) }
86
- icon={ deviceType === 'Tablet' && check }
87
- >
88
- { __( 'Tablet' ) }
89
- </MenuItem>
90
- <MenuItem
91
- onClick={ () => setDeviceType( 'Mobile' ) }
92
- icon={ deviceType === 'Mobile' && check }
93
- >
94
- { __( 'Mobile' ) }
95
- </MenuItem>
168
+ <MenuItemsChoice
169
+ choices={ choices }
170
+ value={ previewValue }
171
+ onSelect={ onSelect }
172
+ />
96
173
  </MenuGroup>
97
174
  { isTemplate && (
98
175
  <MenuGroup>
@@ -118,6 +195,7 @@ export default function PreviewDropdown( { forceIsAutosaveable, disabled } ) {
118
195
  className="editor-preview-dropdown__button-external"
119
196
  role="menuitem"
120
197
  forceIsAutosaveable={ forceIsAutosaveable }
198
+ aria-label={ __( 'Preview in new tab' ) }
121
199
  textContent={
122
200
  <>
123
201
  { __( 'Preview in new tab' ) }
@@ -1,3 +1,8 @@
1
+ .editor-preview-dropdown .editor-preview-dropdown__toggle.has-icon.has-text {
2
+ padding-right: 4px;
3
+ padding-left: 6px;
4
+ }
5
+
1
6
  .editor-preview-dropdown__button-external {
2
7
  width: 100%;
3
8
  display: flex;
@@ -3,14 +3,19 @@
3
3
  */
4
4
  import { useSelect, useRegistry } from '@wordpress/data';
5
5
  import { store as blockEditorStore } from '@wordpress/block-editor';
6
- import { useEffect } from '@wordpress/element';
6
+ import { useEffect, useMemo } from '@wordpress/element';
7
7
  import { applyFilters } from '@wordpress/hooks';
8
8
 
9
- const DEFAULT_CONTENT_ONLY_BLOCKS = [
9
+ /**
10
+ * Internal dependencies
11
+ */
12
+ import { store as editorStore } from '../../store';
13
+ import { unlock } from '../../lock-unlock';
14
+
15
+ const POST_CONTENT_BLOCK_TYPES = [
10
16
  'core/post-title',
11
17
  'core/post-featured-image',
12
18
  'core/post-content',
13
- 'core/template-part',
14
19
  ];
15
20
 
16
21
  /**
@@ -18,32 +23,30 @@ const DEFAULT_CONTENT_ONLY_BLOCKS = [
18
23
  * page content to be edited.
19
24
  */
20
25
  export default function DisableNonPageContentBlocks() {
21
- const contentOnlyBlocks = applyFilters(
22
- 'editor.postContentBlockTypes',
23
- DEFAULT_CONTENT_ONLY_BLOCKS
26
+ const contentOnlyBlockTypes = useMemo(
27
+ () => [
28
+ ...applyFilters(
29
+ 'editor.postContentBlockTypes',
30
+ POST_CONTENT_BLOCK_TYPES
31
+ ),
32
+ 'core/template-part',
33
+ ],
34
+ []
24
35
  );
25
36
 
26
- // Note that there are two separate subscription because the result for each
37
+ // Note that there are two separate subscriptions because the result for each
27
38
  // returns a new array.
28
- const contentOnlyIds = useSelect( ( select ) => {
29
- const { getBlocksByName, getBlockParents, getBlockName } =
30
- select( blockEditorStore );
31
- return getBlocksByName( contentOnlyBlocks ).filter( ( clientId ) =>
32
- getBlockParents( clientId ).every( ( parentClientId ) => {
33
- const parentBlockName = getBlockName( parentClientId );
34
- return (
35
- // Ignore descendents of the query block.
36
- parentBlockName !== 'core/query' &&
37
- // Enable only the top-most block.
38
- ! contentOnlyBlocks.includes( parentBlockName )
39
- );
40
- } )
41
- );
42
- }, [] );
39
+ const contentOnlyIds = useSelect(
40
+ ( select ) => {
41
+ const { getPostBlocksByName } = unlock( select( editorStore ) );
42
+ return getPostBlocksByName( contentOnlyBlockTypes );
43
+ },
44
+ [ contentOnlyBlockTypes ]
45
+ );
43
46
  const disabledIds = useSelect( ( select ) => {
44
47
  const { getBlocksByName, getBlockOrder } = select( blockEditorStore );
45
- return getBlocksByName( [ 'core/template-part' ] ).flatMap(
46
- ( clientId ) => getBlockOrder( clientId )
48
+ return getBlocksByName( 'core/template-part' ).flatMap( ( clientId ) =>
49
+ getBlockOrder( clientId )
47
50
  );
48
51
  }, [] );
49
52
 
@@ -83,8 +83,6 @@ const BLOCK_EDITOR_SETTINGS = [
83
83
  '__unstableIsPreviewMode',
84
84
  '__unstableResolvedAssets',
85
85
  '__unstableIsBlockBasedTheme',
86
- '__experimentalArchiveTitleTypeLabel',
87
- '__experimentalArchiveTitleNameLabel',
88
86
  ];
89
87
 
90
88
  const {
@@ -135,7 +133,10 @@ function useBlockEditorSettings( settings, postType, postId, renderingMode ) {
135
133
  const { getBlockTypes } = select( blocksStore );
136
134
  const { getBlocksByName, getBlockAttributes } =
137
135
  select( blockEditorStore );
138
- const siteSettings = canUser( 'read', 'settings' )
136
+ const siteSettings = canUser( 'read', {
137
+ kind: 'root',
138
+ name: 'site',
139
+ } )
139
140
  ? getEntityRecord( 'root', 'site' )
140
141
  : undefined;
141
142
 
@@ -169,8 +170,15 @@ function useBlockEditorSettings( settings, postType, postId, renderingMode ) {
169
170
  hiddenBlockTypes: get( 'core', 'hiddenBlockTypes' ),
170
171
  isDistractionFree: get( 'core', 'distractionFree' ),
171
172
  keepCaretInsideBlock: get( 'core', 'keepCaretInsideBlock' ),
172
- hasUploadPermissions: canUser( 'create', 'media' ) ?? true,
173
- userCanCreatePages: canUser( 'create', 'pages' ),
173
+ hasUploadPermissions:
174
+ canUser( 'create', {
175
+ kind: 'root',
176
+ name: 'media',
177
+ } ) ?? true,
178
+ userCanCreatePages: canUser( 'create', {
179
+ kind: 'postType',
180
+ name: 'page',
181
+ } ),
174
182
  pageOnFront: siteSettings?.page_on_front,
175
183
  pageForPosts: siteSettings?.page_for_posts,
176
184
  userPatternCategories: getUserPatternCategories(),
@@ -303,7 +311,7 @@ function useBlockEditorSettings( settings, postType, postId, renderingMode ) {
303
311
  __experimentalUndo: undo,
304
312
  // Check whether we want all site editor frames to have outlines
305
313
  // including the navigation / pattern / parts editors.
306
- outlineMode: postType === 'wp_template',
314
+ outlineMode: ! isDistractionFree && postType === 'wp_template',
307
315
  // Check these two properties: they were not present in the site editor.
308
316
  __experimentalCreatePageEntity: createPageEntity,
309
317
  __experimentalUserCanCreatePages: userCanCreatePages,
@@ -345,6 +353,7 @@ function useBlockEditorSettings( settings, postType, postId, renderingMode ) {
345
353
  setIsInserterOpened,
346
354
  sectionRootClientId,
347
355
  globalStylesData,
356
+ globalStylesLinksData,
348
357
  ] );
349
358
  }
350
359
 
@@ -14,7 +14,6 @@ import PostPublishPanel from '../post-publish-panel';
14
14
  import PluginPrePublishPanel from '../plugin-pre-publish-panel';
15
15
  import PluginPostPublishPanel from '../plugin-post-publish-panel';
16
16
  import { store as editorStore } from '../../store';
17
- import { unlock } from '../../lock-unlock';
18
17
 
19
18
  const { Fill, Slot } = createSlotFill( 'ActionsPanel' );
20
19
 
@@ -41,9 +40,7 @@ export default function SavePublishPanels( {
41
40
  isEditedPostDirty,
42
41
  hasNonPostEntityChanges,
43
42
  } = select( editorStore );
44
- const _hasOtherEntitiesChanges =
45
- hasNonPostEntityChanges() ||
46
- unlock( select( editorStore ) ).hasPostMetaChanges();
43
+ const _hasOtherEntitiesChanges = hasNonPostEntityChanges();
47
44
  return {
48
45
  publishSidebarOpened: isPublishSidebarOpened(),
49
46
  isPublishable:
@@ -51,7 +51,6 @@ const SIDEBAR_ACTIVE_BY_DEFAULT = Platform.select( {
51
51
  const SidebarContent = ( {
52
52
  tabName,
53
53
  keyboardShortcut,
54
- renderingMode,
55
54
  onActionPerformed,
56
55
  extraPanels,
57
56
  } ) => {
@@ -112,7 +111,7 @@ const SidebarContent = ( {
112
111
  <Tabs.TabPanel tabId={ sidebars.document } focusable={ false }>
113
112
  <PostSummary onActionPerformed={ onActionPerformed } />
114
113
  <PluginDocumentSettingPanel.Slot />
115
- <TemplateContentPanel renderingMode={ renderingMode } />
114
+ <TemplateContentPanel />
116
115
  <TemplatePartContentPanel />
117
116
  <PostTransformPanel />
118
117
  <PostTaxonomiesPanel />
@@ -129,7 +128,7 @@ const SidebarContent = ( {
129
128
 
130
129
  const Sidebar = ( { extraPanels, onActionPerformed } ) => {
131
130
  useAutoSwitchEditorSidebars();
132
- const { tabName, keyboardShortcut, showSummary, renderingMode } = useSelect(
131
+ const { tabName, keyboardShortcut, showSummary } = useSelect(
133
132
  ( select ) => {
134
133
  const shortcut = select(
135
134
  keyboardShortcutsStore
@@ -158,7 +157,6 @@ const Sidebar = ( { extraPanels, onActionPerformed } ) => {
158
157
  TEMPLATE_PART_POST_TYPE,
159
158
  NAVIGATION_POST_TYPE,
160
159
  ].includes( select( editorStore ).getCurrentPostType() ),
161
- renderingMode: select( editorStore ).getRenderingMode(),
162
160
  };
163
161
  },
164
162
  []
@@ -185,7 +183,6 @@ const Sidebar = ( { extraPanels, onActionPerformed } ) => {
185
183
  tabName={ tabName }
186
184
  keyboardShortcut={ keyboardShortcut }
187
185
  showSummary={ showSummary }
188
- renderingMode={ renderingMode }
189
186
  onActionPerformed={ onActionPerformed }
190
187
  extraPanels={ extraPanels }
191
188
  />
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { __ } from '@wordpress/i18n';
4
+ import { __, _x } from '@wordpress/i18n';
5
5
  import { useSelect, useDispatch } from '@wordpress/data';
6
6
  import { store as coreStore } from '@wordpress/core-data';
7
7
  import {
@@ -23,29 +23,17 @@ import { store as editorStore } from '../../store';
23
23
 
24
24
  const COMMENT_OPTIONS = [
25
25
  {
26
- label: (
27
- <>
28
- { __( 'Open' ) }
29
- <Text variant="muted" size={ 12 }>
30
- { __( 'Visitors can add new comments and replies.' ) }
31
- </Text>
32
- </>
33
- ),
26
+ label: _x( 'Open', 'Adjective: e.g. "Comments are open"' ),
34
27
  value: 'open',
28
+ description: __( 'Visitors can add new comments and replies.' ),
35
29
  },
36
30
  {
37
- label: (
38
- <>
39
- { __( 'Closed' ) }
40
- <Text variant="muted" size={ 12 }>
41
- { __( 'Visitors cannot add new comments or replies.' ) }
42
- </Text>
43
- <Text variant="muted" size={ 12 }>
44
- { __( 'Existing comments remain visible.' ) }
45
- </Text>
46
- </>
47
- ),
31
+ label: __( 'Closed' ),
48
32
  value: '',
33
+ description: [
34
+ __( 'Visitors cannot add new comments or replies.' ),
35
+ __( 'Existing comments remain visible.' ),
36
+ ].join( ' ' ),
49
37
  },
50
38
  ];
51
39
 
@@ -55,8 +43,13 @@ export default function SiteDiscussion() {
55
43
  ( select ) => {
56
44
  const { getEditedPostAttribute, getCurrentPostType } =
57
45
  select( editorStore );
58
- const { getEditedEntityRecord } = select( coreStore );
59
- const siteSettings = getEditedEntityRecord( 'root', 'site' );
46
+ const { getEditedEntityRecord, canUser } = select( coreStore );
47
+ const siteSettings = canUser( 'read', {
48
+ kind: 'root',
49
+ name: 'site',
50
+ } )
51
+ ? getEditedEntityRecord( 'root', 'site' )
52
+ : undefined;
60
53
  return {
61
54
  isTemplate: getCurrentPostType() === TEMPLATE_POST_TYPE,
62
55
  postSlug: getEditedPostAttribute( 'slug' ),