@wordpress/editor 13.33.0 → 13.35.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 (494) hide show
  1. package/CHANGELOG.md +12 -4
  2. package/README.md +132 -20
  3. package/build/bindings/pattern-overrides.js +70 -1
  4. package/build/bindings/pattern-overrides.js.map +1 -1
  5. package/build/components/autosave-monitor/index.js +15 -12
  6. package/build/components/autosave-monitor/index.js.map +1 -1
  7. package/build/components/block-settings-menu/content-only-settings-menu.js +126 -0
  8. package/build/components/block-settings-menu/content-only-settings-menu.js.map +1 -0
  9. package/build/components/block-settings-menu/content-only-settings-menu.native.js +11 -0
  10. package/build/components/block-settings-menu/content-only-settings-menu.native.js.map +1 -0
  11. package/build/components/character-count/index.js +5 -0
  12. package/build/components/character-count/index.js.map +1 -1
  13. package/build/components/collapsible-block-toolbar/index.js +73 -0
  14. package/build/components/collapsible-block-toolbar/index.js.map +1 -0
  15. package/build/components/document-bar/index.js +2 -2
  16. package/build/components/document-bar/index.js.map +1 -1
  17. package/build/components/document-outline/check.js +8 -0
  18. package/build/components/document-outline/check.js.map +1 -1
  19. package/build/components/document-outline/index.js +11 -0
  20. package/build/components/document-outline/index.js.map +1 -1
  21. package/build/components/document-outline/item.js +2 -2
  22. package/build/components/document-outline/item.js.map +1 -1
  23. package/build/components/document-tools/index.js +15 -25
  24. package/build/components/document-tools/index.js.map +1 -1
  25. package/build/components/editor-canvas/edit-template-blocks-notification.js +1 -1
  26. package/build/components/editor-canvas/edit-template-blocks-notification.js.map +1 -1
  27. package/build/components/editor-canvas/index.js +19 -8
  28. package/build/components/editor-canvas/index.js.map +1 -1
  29. package/build/components/editor-history/redo.js +11 -0
  30. package/build/components/editor-history/redo.js.map +1 -1
  31. package/build/components/editor-history/undo.js +11 -0
  32. package/build/components/editor-history/undo.js.map +1 -1
  33. package/build/components/editor-snackbars/index.js +6 -0
  34. package/build/components/editor-snackbars/index.js.map +1 -1
  35. package/build/components/global-keyboard-shortcuts/index.js +7 -0
  36. package/build/components/global-keyboard-shortcuts/index.js.map +1 -1
  37. package/build/components/global-keyboard-shortcuts/register-shortcuts.js +35 -1
  38. package/build/components/global-keyboard-shortcuts/register-shortcuts.js.map +1 -1
  39. package/build/components/global-styles-provider/index.js +130 -0
  40. package/build/components/global-styles-provider/index.js.map +1 -0
  41. package/build/components/header/index.js +147 -0
  42. package/build/components/header/index.js.map +1 -0
  43. package/build/components/inserter-sidebar/index.js +56 -34
  44. package/build/components/inserter-sidebar/index.js.map +1 -1
  45. package/build/components/keyboard-shortcut-help-modal/config.js +4 -0
  46. package/build/components/keyboard-shortcut-help-modal/config.js.map +1 -1
  47. package/build/components/keyboard-shortcut-help-modal/index.js +2 -2
  48. package/build/components/keyboard-shortcut-help-modal/index.js.map +1 -1
  49. package/build/components/list-view-sidebar/index.js +1 -1
  50. package/build/components/list-view-sidebar/index.js.map +1 -1
  51. package/build/components/more-menu/copy-content-menu-item.js +59 -0
  52. package/build/components/more-menu/copy-content-menu-item.js.map +1 -0
  53. package/build/components/more-menu/index.js +119 -0
  54. package/build/components/more-menu/index.js.map +1 -0
  55. package/build/components/more-menu/tools-more-menu-group.js +23 -0
  56. package/build/components/more-menu/tools-more-menu-group.js.map +1 -0
  57. package/build/components/more-menu/view-more-menu-group.js +24 -0
  58. package/build/components/more-menu/view-more-menu-group.js.map +1 -0
  59. package/build/components/page-attributes/check.js +8 -0
  60. package/build/components/page-attributes/check.js.map +1 -1
  61. package/build/components/page-attributes/order.js +7 -0
  62. package/build/components/page-attributes/order.js.map +1 -1
  63. package/build/components/page-attributes/panel.js +14 -8
  64. package/build/components/page-attributes/panel.js.map +1 -1
  65. package/build/components/page-attributes/parent.js +7 -0
  66. package/build/components/page-attributes/parent.js.map +1 -1
  67. package/build/components/plugin-post-publish-panel/index.js +1 -1
  68. package/build/components/plugin-post-publish-panel/index.js.map +1 -1
  69. package/build/components/plugin-pre-publish-panel/index.js +1 -1
  70. package/build/components/plugin-pre-publish-panel/index.js.map +1 -1
  71. package/build/components/plugin-sidebar/index.js +1 -1
  72. package/build/components/plugin-sidebar/index.js.map +1 -1
  73. package/build/components/post-actions/actions.js +219 -66
  74. package/build/components/post-actions/actions.js.map +1 -1
  75. package/build/components/post-actions/index.js +32 -16
  76. package/build/components/post-actions/index.js.map +1 -1
  77. package/build/components/post-author/check.js +9 -0
  78. package/build/components/post-author/check.js.map +1 -1
  79. package/build/components/post-author/index.js +6 -0
  80. package/build/components/post-author/index.js.map +1 -1
  81. package/build/components/post-author/panel.js +5 -0
  82. package/build/components/post-author/panel.js.map +1 -1
  83. package/build/components/post-card-panel/index.js +7 -66
  84. package/build/components/post-card-panel/index.js.map +1 -1
  85. package/build/components/post-comments/index.js +28 -8
  86. package/build/components/post-comments/index.js.map +1 -1
  87. package/build/components/post-content-information/index.js +72 -0
  88. package/build/components/post-content-information/index.js.map +1 -0
  89. package/build/components/post-discussion/panel.js +104 -20
  90. package/build/components/post-discussion/panel.js.map +1 -1
  91. package/build/components/post-excerpt/check.js +0 -19
  92. package/build/components/post-excerpt/check.js.map +1 -1
  93. package/build/components/post-excerpt/index.js +52 -12
  94. package/build/components/post-excerpt/index.js.map +1 -1
  95. package/build/components/post-excerpt/panel.js +118 -7
  96. package/build/components/post-excerpt/panel.js.map +1 -1
  97. package/build/components/post-excerpt/plugin.js +2 -2
  98. package/build/components/post-excerpt/plugin.js.map +1 -1
  99. package/build/components/post-featured-image/index.js +1 -1
  100. package/build/components/post-featured-image/index.js.map +1 -1
  101. package/build/components/post-format/panel.js +27 -0
  102. package/build/components/post-format/panel.js.map +1 -0
  103. package/build/components/post-last-edited-panel/index.js +33 -0
  104. package/build/components/post-last-edited-panel/index.js.map +1 -0
  105. package/build/components/post-panel-row/index.js +2 -2
  106. package/build/components/post-panel-row/index.js.map +1 -1
  107. package/build/components/post-panel-section/index.js +28 -0
  108. package/build/components/post-panel-section/index.js.map +1 -0
  109. package/build/components/post-pingbacks/index.js +5 -2
  110. package/build/components/post-pingbacks/index.js.map +1 -1
  111. package/build/components/post-publish-button/post-publish-button-or-toggle.js +100 -0
  112. package/build/components/post-publish-button/post-publish-button-or-toggle.js.map +1 -0
  113. package/build/components/post-saved-state/index.js +2 -2
  114. package/build/components/post-saved-state/index.js.map +1 -1
  115. package/build/components/post-schedule/panel.js +1 -1
  116. package/build/components/post-schedule/panel.js.map +1 -1
  117. package/build/components/post-slug/panel.js +27 -0
  118. package/build/components/post-slug/panel.js.map +1 -0
  119. package/build/components/post-status/index.js +13 -13
  120. package/build/components/post-status/index.js.map +1 -1
  121. package/build/components/post-sticky/panel.js +21 -0
  122. package/build/components/post-sticky/panel.js.map +1 -0
  123. package/build/components/post-template/block-theme.js +2 -2
  124. package/build/components/post-template/block-theme.js.map +1 -1
  125. package/build/components/post-template/classic-theme.js +0 -1
  126. package/build/components/post-template/classic-theme.js.map +1 -1
  127. package/build/components/post-template/swap-template-button.js +2 -5
  128. package/build/components/post-template/swap-template-button.js.map +1 -1
  129. package/build/components/post-title/index.js +2 -2
  130. package/build/components/post-title/index.js.map +1 -1
  131. package/build/components/post-title/post-title-raw.js +2 -2
  132. package/build/components/post-title/post-title-raw.js.map +1 -1
  133. package/build/components/post-transform-panel/hooks.js +90 -0
  134. package/build/components/post-transform-panel/hooks.js.map +1 -0
  135. package/build/components/post-transform-panel/index.js +101 -0
  136. package/build/components/post-transform-panel/index.js.map +1 -0
  137. package/build/components/post-trash/panel.js +18 -0
  138. package/build/components/post-trash/panel.js.map +1 -0
  139. package/build/components/post-type-support-check/index.js +1 -1
  140. package/build/components/post-type-support-check/index.js.map +1 -1
  141. package/build/components/post-url/index.js +2 -1
  142. package/build/components/post-url/index.js.map +1 -1
  143. package/build/components/post-url/panel.js +1 -1
  144. package/build/components/post-url/panel.js.map +1 -1
  145. package/build/components/preferences-modal/enable-publish-sidebar.js +34 -0
  146. package/build/components/preferences-modal/enable-publish-sidebar.js.map +1 -0
  147. package/build/components/preferences-modal/index.js +11 -5
  148. package/build/components/preferences-modal/index.js.map +1 -1
  149. package/build/components/preview-dropdown/index.js +3 -1
  150. package/build/components/preview-dropdown/index.js.map +1 -1
  151. package/build/components/provider/disable-non-page-content-blocks.js +23 -16
  152. package/build/components/provider/disable-non-page-content-blocks.js.map +1 -1
  153. package/build/components/provider/index.js +3 -1
  154. package/build/components/provider/index.js.map +1 -1
  155. package/build/components/provider/use-block-editor-settings.js +21 -3
  156. package/build/components/provider/use-block-editor-settings.js.map +1 -1
  157. package/build/components/save-publish-panels/index.js +89 -0
  158. package/build/components/save-publish-panels/index.js.map +1 -0
  159. package/build/components/sidebar/constants.js +11 -0
  160. package/build/components/sidebar/constants.js.map +1 -0
  161. package/build/components/sidebar/header.js +53 -0
  162. package/build/components/sidebar/header.js.map +1 -0
  163. package/build/components/sidebar/index.js +157 -0
  164. package/build/components/sidebar/index.js.map +1 -0
  165. package/build/components/sidebar/post-summary.js +84 -0
  166. package/build/components/sidebar/post-summary.js.map +1 -0
  167. package/build/components/start-page-options/index.js +10 -8
  168. package/build/components/start-page-options/index.js.map +1 -1
  169. package/build/components/start-template-options/index.js +192 -0
  170. package/build/components/start-template-options/index.js.map +1 -0
  171. package/build/components/template-content-panel/index.js +38 -0
  172. package/build/components/template-content-panel/index.js.map +1 -0
  173. package/build/hooks/pattern-overrides.js +10 -5
  174. package/build/hooks/pattern-overrides.js.map +1 -1
  175. package/build/private-apis.js +19 -8
  176. package/build/private-apis.js.map +1 -1
  177. package/build/private-apis.native.js +72 -0
  178. package/build/private-apis.native.js.map +1 -0
  179. package/build/store/private-selectors.js +6 -1
  180. package/build/store/private-selectors.js.map +1 -1
  181. package/build/store/reducer.js +15 -0
  182. package/build/store/reducer.js.map +1 -1
  183. package/build/store/selectors.js +3 -1
  184. package/build/store/selectors.js.map +1 -1
  185. package/build-module/bindings/pattern-overrides.js +69 -1
  186. package/build-module/bindings/pattern-overrides.js.map +1 -1
  187. package/build-module/components/autosave-monitor/index.js +15 -13
  188. package/build-module/components/autosave-monitor/index.js.map +1 -1
  189. package/build-module/components/block-settings-menu/content-only-settings-menu.js +119 -0
  190. package/build-module/components/block-settings-menu/content-only-settings-menu.js.map +1 -0
  191. package/build-module/components/block-settings-menu/content-only-settings-menu.native.js +5 -0
  192. package/build-module/components/block-settings-menu/content-only-settings-menu.native.js.map +1 -0
  193. package/build-module/components/character-count/index.js +6 -0
  194. package/build-module/components/character-count/index.js.map +1 -1
  195. package/build-module/components/collapsible-block-toolbar/index.js +65 -0
  196. package/build-module/components/collapsible-block-toolbar/index.js.map +1 -0
  197. package/build-module/components/document-bar/index.js +2 -2
  198. package/build-module/components/document-bar/index.js.map +1 -1
  199. package/build-module/components/document-outline/check.js +9 -0
  200. package/build-module/components/document-outline/check.js.map +1 -1
  201. package/build-module/components/document-outline/index.js +11 -0
  202. package/build-module/components/document-outline/index.js.map +1 -1
  203. package/build-module/components/document-outline/item.js +2 -2
  204. package/build-module/components/document-outline/item.js.map +1 -1
  205. package/build-module/components/document-tools/index.js +17 -27
  206. package/build-module/components/document-tools/index.js.map +1 -1
  207. package/build-module/components/editor-canvas/edit-template-blocks-notification.js +1 -1
  208. package/build-module/components/editor-canvas/edit-template-blocks-notification.js.map +1 -1
  209. package/build-module/components/editor-canvas/index.js +19 -8
  210. package/build-module/components/editor-canvas/index.js.map +1 -1
  211. package/build-module/components/editor-history/redo.js +11 -0
  212. package/build-module/components/editor-history/redo.js.map +1 -1
  213. package/build-module/components/editor-history/undo.js +11 -0
  214. package/build-module/components/editor-history/undo.js.map +1 -1
  215. package/build-module/components/editor-snackbars/index.js +6 -0
  216. package/build-module/components/editor-snackbars/index.js.map +1 -1
  217. package/build-module/components/global-keyboard-shortcuts/index.js +8 -0
  218. package/build-module/components/global-keyboard-shortcuts/index.js.map +1 -1
  219. package/build-module/components/global-keyboard-shortcuts/register-shortcuts.js +36 -1
  220. package/build-module/components/global-keyboard-shortcuts/register-shortcuts.js.map +1 -1
  221. package/build-module/components/global-styles-provider/index.js +120 -0
  222. package/build-module/components/global-styles-provider/index.js.map +1 -0
  223. package/build-module/components/header/index.js +139 -0
  224. package/build-module/components/header/index.js.map +1 -0
  225. package/build-module/components/inserter-sidebar/index.js +59 -37
  226. package/build-module/components/inserter-sidebar/index.js.map +1 -1
  227. package/build-module/components/keyboard-shortcut-help-modal/config.js +4 -0
  228. package/build-module/components/keyboard-shortcut-help-modal/config.js.map +1 -1
  229. package/build-module/components/keyboard-shortcut-help-modal/index.js +2 -2
  230. package/build-module/components/keyboard-shortcut-help-modal/index.js.map +1 -1
  231. package/build-module/components/list-view-sidebar/index.js +1 -1
  232. package/build-module/components/list-view-sidebar/index.js.map +1 -1
  233. package/build-module/components/more-menu/copy-content-menu-item.js +52 -0
  234. package/build-module/components/more-menu/copy-content-menu-item.js.map +1 -0
  235. package/build-module/components/more-menu/index.js +111 -0
  236. package/build-module/components/more-menu/index.js.map +1 -0
  237. package/build-module/components/more-menu/tools-more-menu-group.js +16 -0
  238. package/build-module/components/more-menu/tools-more-menu-group.js.map +1 -0
  239. package/build-module/components/more-menu/view-more-menu-group.js +17 -0
  240. package/build-module/components/more-menu/view-more-menu-group.js.map +1 -0
  241. package/build-module/components/page-attributes/check.js +9 -0
  242. package/build-module/components/page-attributes/check.js.map +1 -1
  243. package/build-module/components/page-attributes/order.js +7 -0
  244. package/build-module/components/page-attributes/order.js.map +1 -1
  245. package/build-module/components/page-attributes/panel.js +13 -6
  246. package/build-module/components/page-attributes/panel.js.map +1 -1
  247. package/build-module/components/page-attributes/parent.js +7 -0
  248. package/build-module/components/page-attributes/parent.js.map +1 -1
  249. package/build-module/components/plugin-post-publish-panel/index.js +1 -1
  250. package/build-module/components/plugin-post-publish-panel/index.js.map +1 -1
  251. package/build-module/components/plugin-pre-publish-panel/index.js +1 -1
  252. package/build-module/components/plugin-pre-publish-panel/index.js.map +1 -1
  253. package/build-module/components/plugin-sidebar/index.js +1 -1
  254. package/build-module/components/plugin-sidebar/index.js.map +1 -1
  255. package/build-module/components/post-actions/actions.js +223 -70
  256. package/build-module/components/post-actions/actions.js.map +1 -1
  257. package/build-module/components/post-actions/index.js +33 -17
  258. package/build-module/components/post-actions/index.js.map +1 -1
  259. package/build-module/components/post-author/check.js +10 -0
  260. package/build-module/components/post-author/check.js.map +1 -1
  261. package/build-module/components/post-author/index.js +6 -0
  262. package/build-module/components/post-author/index.js.map +1 -1
  263. package/build-module/components/post-author/panel.js +6 -0
  264. package/build-module/components/post-author/panel.js.map +1 -1
  265. package/build-module/components/post-card-panel/index.js +9 -67
  266. package/build-module/components/post-card-panel/index.js.map +1 -1
  267. package/build-module/components/post-comments/index.js +30 -10
  268. package/build-module/components/post-comments/index.js.map +1 -1
  269. package/build-module/components/post-content-information/index.js +66 -0
  270. package/build-module/components/post-content-information/index.js.map +1 -0
  271. package/build-module/components/post-discussion/panel.js +105 -21
  272. package/build-module/components/post-discussion/panel.js.map +1 -1
  273. package/build-module/components/post-excerpt/check.js +0 -19
  274. package/build-module/components/post-excerpt/check.js.map +1 -1
  275. package/build-module/components/post-excerpt/index.js +52 -11
  276. package/build-module/components/post-excerpt/index.js.map +1 -1
  277. package/build-module/components/post-excerpt/panel.js +118 -8
  278. package/build-module/components/post-excerpt/panel.js.map +1 -1
  279. package/build-module/components/post-excerpt/plugin.js +2 -2
  280. package/build-module/components/post-excerpt/plugin.js.map +1 -1
  281. package/build-module/components/post-featured-image/index.js +1 -1
  282. package/build-module/components/post-featured-image/index.js.map +1 -1
  283. package/build-module/components/post-format/panel.js +18 -0
  284. package/build-module/components/post-format/panel.js.map +1 -0
  285. package/build-module/components/post-last-edited-panel/index.js +26 -0
  286. package/build-module/components/post-last-edited-panel/index.js.map +1 -0
  287. package/build-module/components/post-panel-row/index.js +2 -2
  288. package/build-module/components/post-panel-row/index.js.map +1 -1
  289. package/build-module/components/post-panel-section/index.js +20 -0
  290. package/build-module/components/post-panel-section/index.js.map +1 -0
  291. package/build-module/components/post-pingbacks/index.js +6 -3
  292. package/build-module/components/post-pingbacks/index.js.map +1 -1
  293. package/build-module/components/post-publish-button/post-publish-button-or-toggle.js +91 -0
  294. package/build-module/components/post-publish-button/post-publish-button-or-toggle.js.map +1 -0
  295. package/build-module/components/post-saved-state/index.js +2 -2
  296. package/build-module/components/post-saved-state/index.js.map +1 -1
  297. package/build-module/components/post-schedule/panel.js +1 -1
  298. package/build-module/components/post-schedule/panel.js.map +1 -1
  299. package/build-module/components/post-slug/panel.js +18 -0
  300. package/build-module/components/post-slug/panel.js.map +1 -0
  301. package/build-module/components/post-status/index.js +13 -13
  302. package/build-module/components/post-status/index.js.map +1 -1
  303. package/build-module/components/post-sticky/panel.js +12 -0
  304. package/build-module/components/post-sticky/panel.js.map +1 -0
  305. package/build-module/components/post-template/block-theme.js +2 -2
  306. package/build-module/components/post-template/block-theme.js.map +1 -1
  307. package/build-module/components/post-template/classic-theme.js +0 -1
  308. package/build-module/components/post-template/classic-theme.js.map +1 -1
  309. package/build-module/components/post-template/swap-template-button.js +3 -6
  310. package/build-module/components/post-template/swap-template-button.js.map +1 -1
  311. package/build-module/components/post-title/index.js +2 -2
  312. package/build-module/components/post-title/index.js.map +1 -1
  313. package/build-module/components/post-title/post-title-raw.js +2 -2
  314. package/build-module/components/post-title/post-title-raw.js.map +1 -1
  315. package/build-module/components/post-transform-panel/hooks.js +83 -0
  316. package/build-module/components/post-transform-panel/hooks.js.map +1 -0
  317. package/build-module/components/post-transform-panel/index.js +94 -0
  318. package/build-module/components/post-transform-panel/index.js.map +1 -0
  319. package/build-module/components/post-trash/panel.js +10 -0
  320. package/build-module/components/post-trash/panel.js.map +1 -0
  321. package/build-module/components/post-type-support-check/index.js +1 -1
  322. package/build-module/components/post-type-support-check/index.js.map +1 -1
  323. package/build-module/components/post-url/index.js +2 -1
  324. package/build-module/components/post-url/index.js.map +1 -1
  325. package/build-module/components/post-url/panel.js +1 -1
  326. package/build-module/components/post-url/panel.js.map +1 -1
  327. package/build-module/components/preferences-modal/enable-publish-sidebar.js +27 -0
  328. package/build-module/components/preferences-modal/enable-publish-sidebar.js.map +1 -0
  329. package/build-module/components/preferences-modal/index.js +11 -5
  330. package/build-module/components/preferences-modal/index.js.map +1 -1
  331. package/build-module/components/preview-dropdown/index.js +3 -1
  332. package/build-module/components/preview-dropdown/index.js.map +1 -1
  333. package/build-module/components/provider/disable-non-page-content-blocks.js +24 -17
  334. package/build-module/components/provider/disable-non-page-content-blocks.js.map +1 -1
  335. package/build-module/components/provider/index.js +3 -1
  336. package/build-module/components/provider/index.js.map +1 -1
  337. package/build-module/components/provider/use-block-editor-settings.js +21 -3
  338. package/build-module/components/provider/use-block-editor-settings.js.map +1 -1
  339. package/build-module/components/save-publish-panels/index.js +80 -0
  340. package/build-module/components/save-publish-panels/index.js.map +1 -0
  341. package/build-module/components/sidebar/constants.js +5 -0
  342. package/build-module/components/sidebar/constants.js.map +1 -0
  343. package/build-module/components/sidebar/header.js +46 -0
  344. package/build-module/components/sidebar/header.js.map +1 -0
  345. package/build-module/components/sidebar/index.js +149 -0
  346. package/build-module/components/sidebar/index.js.map +1 -0
  347. package/build-module/components/sidebar/post-summary.js +77 -0
  348. package/build-module/components/sidebar/post-summary.js.map +1 -0
  349. package/build-module/components/start-page-options/index.js +10 -8
  350. package/build-module/components/start-page-options/index.js.map +1 -1
  351. package/build-module/components/start-template-options/index.js +185 -0
  352. package/build-module/components/start-template-options/index.js.map +1 -0
  353. package/build-module/components/template-content-panel/index.js +31 -0
  354. package/build-module/components/template-content-panel/index.js.map +1 -0
  355. package/build-module/hooks/pattern-overrides.js +10 -5
  356. package/build-module/hooks/pattern-overrides.js.map +1 -1
  357. package/build-module/private-apis.js +19 -8
  358. package/build-module/private-apis.js.map +1 -1
  359. package/build-module/private-apis.native.js +62 -0
  360. package/build-module/private-apis.native.js.map +1 -0
  361. package/build-module/store/private-selectors.js +3 -0
  362. package/build-module/store/private-selectors.js.map +1 -1
  363. package/build-module/store/reducer.js +14 -0
  364. package/build-module/store/reducer.js.map +1 -1
  365. package/build-module/store/selectors.js +3 -1
  366. package/build-module/store/selectors.js.map +1 -1
  367. package/build-style/style-rtl.css +535 -48
  368. package/build-style/style.css +535 -48
  369. package/package.json +38 -36
  370. package/src/bindings/pattern-overrides.js +83 -1
  371. package/src/components/autocompleters/style.scss +1 -2
  372. package/src/components/autosave-monitor/index.js +15 -12
  373. package/src/components/block-settings-menu/content-only-settings-menu.js +175 -0
  374. package/src/components/block-settings-menu/content-only-settings-menu.native.js +4 -0
  375. package/src/components/block-settings-menu/style.scss +4 -0
  376. package/src/components/character-count/index.js +5 -0
  377. package/src/components/collapsible-block-toolbar/index.js +77 -0
  378. package/src/components/collapsible-block-toolbar/style.scss +80 -0
  379. package/src/components/document-bar/index.js +2 -2
  380. package/src/components/document-outline/check.js +8 -0
  381. package/src/components/document-outline/index.js +10 -0
  382. package/src/components/document-outline/item.js +2 -2
  383. package/src/components/document-tools/index.js +19 -26
  384. package/src/components/editor-canvas/edit-template-blocks-notification.js +1 -1
  385. package/src/components/editor-canvas/index.js +18 -6
  386. package/src/components/editor-history/redo.js +10 -0
  387. package/src/components/editor-history/undo.js +10 -0
  388. package/src/components/editor-snackbars/index.js +5 -0
  389. package/src/components/entities-saved-states/style.scss +7 -0
  390. package/src/components/global-keyboard-shortcuts/index.js +7 -0
  391. package/src/components/global-keyboard-shortcuts/register-shortcuts.js +42 -1
  392. package/src/components/global-styles-provider/index.js +162 -0
  393. package/src/components/header/index.js +154 -0
  394. package/src/components/header/style.scss +231 -0
  395. package/src/components/inserter-sidebar/index.js +52 -32
  396. package/src/components/inserter-sidebar/style.scss +10 -3
  397. package/src/components/keyboard-shortcut-help-modal/config.js +10 -1
  398. package/src/components/keyboard-shortcut-help-modal/index.js +2 -2
  399. package/src/components/list-view-sidebar/index.js +1 -1
  400. package/src/components/list-view-sidebar/style.scss +3 -2
  401. package/src/components/more-menu/copy-content-menu-item.js +51 -0
  402. package/src/components/more-menu/index.js +158 -0
  403. package/src/components/more-menu/tools-more-menu-group.js +11 -0
  404. package/src/components/more-menu/view-more-menu-group.js +13 -0
  405. package/src/components/page-attributes/check.js +8 -0
  406. package/src/components/page-attributes/order.js +6 -0
  407. package/src/components/page-attributes/panel.js +21 -17
  408. package/src/components/page-attributes/parent.js +6 -0
  409. package/src/components/page-attributes/test/order.js +5 -1
  410. package/src/components/plugin-post-publish-panel/index.js +1 -1
  411. package/src/components/plugin-pre-publish-panel/index.js +1 -1
  412. package/src/components/plugin-sidebar/index.js +1 -1
  413. package/src/components/post-actions/actions.js +373 -152
  414. package/src/components/post-actions/index.js +34 -33
  415. package/src/components/post-author/check.js +9 -0
  416. package/src/components/post-author/index.js +5 -0
  417. package/src/components/post-author/panel.js +5 -0
  418. package/src/components/post-card-panel/index.js +40 -141
  419. package/src/components/post-card-panel/style.scss +2 -6
  420. package/src/components/post-comments/index.js +47 -9
  421. package/src/components/post-content-information/index.js +83 -0
  422. package/src/components/post-content-information/style.scss +6 -0
  423. package/src/components/post-discussion/panel.js +108 -27
  424. package/src/components/post-discussion/style.scss +26 -0
  425. package/src/components/post-excerpt/check.js +0 -18
  426. package/src/components/post-excerpt/index.js +66 -15
  427. package/src/components/post-excerpt/panel.js +196 -19
  428. package/src/components/post-excerpt/plugin.js +2 -2
  429. package/src/components/post-excerpt/style.scss +24 -0
  430. package/src/components/post-featured-image/index.js +1 -1
  431. package/src/components/post-featured-image/style.scss +2 -8
  432. package/src/components/post-format/panel.js +22 -0
  433. package/src/components/post-format/style.scss +6 -0
  434. package/src/components/post-last-edited-panel/index.js +35 -0
  435. package/src/components/post-last-edited-panel/style.scss +6 -0
  436. package/src/components/post-last-revision/test/check.js +5 -1
  437. package/src/components/post-panel-row/index.js +2 -2
  438. package/src/components/post-panel-row/style.scss +3 -3
  439. package/src/components/post-panel-section/index.js +19 -0
  440. package/src/components/post-panel-section/style.scss +3 -0
  441. package/src/components/post-pingbacks/index.js +11 -2
  442. package/src/components/post-publish-button/post-publish-button-or-toggle.js +102 -0
  443. package/src/components/post-publish-button/test/post-publish-button-or-toggle.js +63 -0
  444. package/src/components/post-publish-panel/style.scss +48 -0
  445. package/src/components/post-publish-panel/test/__snapshots__/index.js.snap +225 -75
  446. package/src/components/post-saved-state/index.js +2 -2
  447. package/src/components/post-schedule/panel.js +1 -1
  448. package/src/components/post-schedule/style.scss +2 -4
  449. package/src/components/post-slug/panel.js +22 -0
  450. package/src/components/post-slug/style.scss +5 -0
  451. package/src/components/post-slug/test/index.js +5 -1
  452. package/src/components/post-status/index.js +88 -80
  453. package/src/components/post-status/style.scss +0 -1
  454. package/src/components/post-sticky/panel.js +18 -0
  455. package/src/components/post-template/block-theme.js +2 -2
  456. package/src/components/post-template/classic-theme.js +0 -1
  457. package/src/components/post-template/swap-template-button.js +3 -6
  458. package/src/components/post-text-editor/style.scss +1 -1
  459. package/src/components/post-title/index.js +2 -2
  460. package/src/components/post-title/post-title-raw.js +2 -2
  461. package/src/components/post-title/style.scss +1 -1
  462. package/src/components/post-transform-panel/hooks.js +114 -0
  463. package/src/components/post-transform-panel/index.js +99 -0
  464. package/src/components/post-trash/panel.js +13 -0
  465. package/src/components/post-type-support-check/index.js +1 -1
  466. package/src/components/post-type-support-check/test/index.js +2 -2
  467. package/src/components/post-url/index.js +1 -0
  468. package/src/components/post-url/panel.js +1 -1
  469. package/src/components/preferences-modal/enable-publish-sidebar.js +28 -0
  470. package/src/components/preferences-modal/index.js +17 -3
  471. package/src/components/preview-dropdown/index.js +3 -1
  472. package/src/components/provider/disable-non-page-content-blocks.js +23 -21
  473. package/src/components/provider/index.js +4 -0
  474. package/src/components/provider/use-block-editor-settings.js +19 -4
  475. package/src/components/save-publish-panels/index.js +96 -0
  476. package/src/components/save-publish-panels/style.scss +36 -0
  477. package/src/components/sidebar/constants.js +4 -0
  478. package/src/components/sidebar/header.js +49 -0
  479. package/src/components/sidebar/index.js +200 -0
  480. package/src/components/sidebar/post-summary.js +104 -0
  481. package/src/components/sidebar/style.scss +18 -0
  482. package/src/components/start-page-options/index.js +12 -5
  483. package/src/components/start-template-options/index.js +219 -0
  484. package/src/components/start-template-options/style.scss +55 -0
  485. package/src/components/template-areas/style.scss +0 -1
  486. package/src/components/template-content-panel/index.js +36 -0
  487. package/src/hooks/pattern-overrides.js +12 -6
  488. package/src/private-apis.js +22 -8
  489. package/src/private-apis.native.js +61 -0
  490. package/src/store/private-selectors.js +3 -0
  491. package/src/store/reducer.js +12 -0
  492. package/src/store/selectors.js +3 -1
  493. package/src/style.scss +11 -0
  494. package/src/components/post-slug/test/check.js +0 -17
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Internal dependencies
3
+ */
4
+ import PostPanelRow from '../post-panel-row';
5
+ import PostStickyForm from './';
6
+ import PostStickyCheck from './check';
7
+
8
+ export function PostStickyPanel() {
9
+ return (
10
+ <PostStickyCheck>
11
+ <PostPanelRow>
12
+ <PostStickyForm />
13
+ </PostPanelRow>
14
+ </PostStickyCheck>
15
+ );
16
+ }
17
+
18
+ export default PostStickyPanel;
@@ -76,7 +76,7 @@ export default function BlockThemeControl( { id } ) {
76
76
  popoverProps={ POPOVER_PROPS }
77
77
  focusOnMount
78
78
  toggleProps={ {
79
- __next40pxDefaultSize: true,
79
+ size: 'compact',
80
80
  variant: 'tertiary',
81
81
  } }
82
82
  label={ __( 'Template options' ) }
@@ -128,7 +128,7 @@ export default function BlockThemeControl( { id } ) {
128
128
  );
129
129
  } }
130
130
  >
131
- { __( 'Template preview' ) }
131
+ { __( 'Show template' ) }
132
132
  </MenuItem>
133
133
  </MenuGroup>
134
134
  </>
@@ -45,7 +45,6 @@ function PostTemplateToggle( { isOpen, onClick } ) {
45
45
  return (
46
46
  <Button
47
47
  __next40pxDefaultSize
48
- className="edit-post-post-template__toggle"
49
48
  variant="tertiary"
50
49
  aria-expanded={ isOpen }
51
50
  aria-label={ __( 'Template options' ) }
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { useMemo, useState, useCallback } from '@wordpress/element';
4
+ import { useMemo, useState } from '@wordpress/element';
5
5
  import { decodeEntities } from '@wordpress/html-entities';
6
6
  import { __experimentalBlockPatternsList as BlockPatternsList } from '@wordpress/block-editor';
7
7
  import { MenuItem, Modal } from '@wordpress/components';
@@ -18,9 +18,6 @@ import { useAvailableTemplates, useEditedPostContext } from './hooks';
18
18
 
19
19
  export default function SwapTemplateButton( { onClick } ) {
20
20
  const [ showModal, setShowModal ] = useState( false );
21
- const onClose = useCallback( () => {
22
- setShowModal( false );
23
- }, [] );
24
21
  const { postType, postId } = useEditedPostContext();
25
22
  const availableTemplates = useAvailableTemplates( postType );
26
23
  const { editEntityRecord } = useDispatch( coreStore );
@@ -35,7 +32,7 @@ export default function SwapTemplateButton( { onClick } ) {
35
32
  { template: template.name },
36
33
  { undoIgnore: true }
37
34
  );
38
- onClose(); // Close the template suggestions modal first.
35
+ setShowModal( false ); // Close the template suggestions modal first.
39
36
  onClick();
40
37
  };
41
38
  return (
@@ -46,7 +43,7 @@ export default function SwapTemplateButton( { onClick } ) {
46
43
  { showModal && (
47
44
  <Modal
48
45
  title={ __( 'Choose a template' ) }
49
- onRequestClose={ onClose }
46
+ onRequestClose={ () => setShowModal( false ) }
50
47
  overlayClassName="editor-post-template__swap-template-modal"
51
48
  isFullScreen
52
49
  >
@@ -1,4 +1,4 @@
1
- .edit-post-text-editor__body textarea.editor-post-text-editor {
1
+ textarea.editor-post-text-editor {
2
2
  border: $border-width solid $gray-600;
3
3
  border-radius: 0;
4
4
  display: block;
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import classnames from 'classnames';
4
+ import clsx from 'clsx';
5
5
 
6
6
  /**
7
7
  * WordPress dependencies
@@ -185,7 +185,7 @@ function PostTitle( _, forwardedRef ) {
185
185
 
186
186
  // The wp-block className is important for editor styles.
187
187
  // This same block is used in both the visual and the code editor.
188
- const className = classnames( DEFAULT_CLASSNAMES, {
188
+ const className = clsx( DEFAULT_CLASSNAMES, {
189
189
  'is-selected': isSelected,
190
190
  'has-fixed-toolbar': hasFixedToolbar,
191
191
  } );
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import classnames from 'classnames';
4
+ import clsx from 'clsx';
5
5
 
6
6
  /**
7
7
  * WordPress dependencies
@@ -51,7 +51,7 @@ function PostTitleRaw( _, forwardedRef ) {
51
51
 
52
52
  // The wp-block className is important for editor styles.
53
53
  // This same block is used in both the visual and the code editor.
54
- const className = classnames( DEFAULT_CLASSNAMES, {
54
+ const className = clsx( DEFAULT_CLASSNAMES, {
55
55
  'is-selected': isSelected,
56
56
  'has-fixed-toolbar': hasFixedToolbar,
57
57
  'is-raw-text': true,
@@ -1,5 +1,5 @@
1
1
  // Raw Text Variant
2
- .edit-post-text-editor__body .editor-post-title.is-raw-text {
2
+ .editor-post-title.is-raw-text {
3
3
  margin-bottom: $grid-unit-30;
4
4
  margin-top: 2px; // space for focus outline to appear.
5
5
  max-width: none;
@@ -0,0 +1,114 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { useSelect } from '@wordpress/data';
5
+ import { useMemo } from '@wordpress/element';
6
+ import { store as coreStore } from '@wordpress/core-data';
7
+ import { parse } from '@wordpress/blocks';
8
+ import { privateApis as patternsPrivateApis } from '@wordpress/patterns';
9
+
10
+ /**
11
+ * Internal dependencies
12
+ */
13
+ import { unlock } from '../../lock-unlock';
14
+ import { store as editorStore } from '../../store';
15
+
16
+ const { EXCLUDED_PATTERN_SOURCES, PATTERN_TYPES } =
17
+ unlock( patternsPrivateApis );
18
+
19
+ function injectThemeAttributeInBlockTemplateContent(
20
+ block,
21
+ currentThemeStylesheet
22
+ ) {
23
+ block.innerBlocks = block.innerBlocks.map( ( innerBlock ) => {
24
+ return injectThemeAttributeInBlockTemplateContent(
25
+ innerBlock,
26
+ currentThemeStylesheet
27
+ );
28
+ } );
29
+
30
+ if (
31
+ block.name === 'core/template-part' &&
32
+ block.attributes.theme === undefined
33
+ ) {
34
+ block.attributes.theme = currentThemeStylesheet;
35
+ }
36
+ return block;
37
+ }
38
+
39
+ /**
40
+ * Filter all patterns and return only the ones that are compatible with the current template.
41
+ *
42
+ * @param {Array} patterns An array of patterns.
43
+ * @param {Object} template The current template.
44
+ * @return {Array} Array of patterns that are compatible with the current template.
45
+ */
46
+ function filterPatterns( patterns, template ) {
47
+ // Filter out duplicates.
48
+ const filterOutDuplicatesByName = ( currentItem, index, items ) =>
49
+ index === items.findIndex( ( item ) => currentItem.name === item.name );
50
+
51
+ // Filter out core/directory patterns not included in theme.json.
52
+ const filterOutExcludedPatternSources = ( pattern ) =>
53
+ ! EXCLUDED_PATTERN_SOURCES.includes( pattern.source );
54
+
55
+ // Looks for patterns that have the same template type as the current template,
56
+ // or have a block type that matches the current template area.
57
+ const filterCompatiblePatterns = ( pattern ) =>
58
+ pattern.templateTypes?.includes( template.slug ) ||
59
+ pattern.blockTypes?.includes( 'core/template-part/' + template.area );
60
+
61
+ return patterns.filter( ( pattern, index, items ) => {
62
+ return (
63
+ filterOutDuplicatesByName( pattern, index, items ) &&
64
+ filterOutExcludedPatternSources( pattern ) &&
65
+ filterCompatiblePatterns( pattern )
66
+ );
67
+ } );
68
+ }
69
+
70
+ function preparePatterns( patterns, currentThemeStylesheet ) {
71
+ return patterns.map( ( pattern ) => ( {
72
+ ...pattern,
73
+ keywords: pattern.keywords || [],
74
+ type: PATTERN_TYPES.theme,
75
+ blocks: parse( pattern.content, {
76
+ __unstableSkipMigrationLogs: true,
77
+ } ).map( ( block ) =>
78
+ injectThemeAttributeInBlockTemplateContent(
79
+ block,
80
+ currentThemeStylesheet
81
+ )
82
+ ),
83
+ } ) );
84
+ }
85
+
86
+ export function useAvailablePatterns( template ) {
87
+ const { blockPatterns, restBlockPatterns, currentThemeStylesheet } =
88
+ useSelect( ( select ) => {
89
+ const { getEditorSettings } = select( editorStore );
90
+ const settings = getEditorSettings();
91
+
92
+ return {
93
+ blockPatterns:
94
+ settings.__experimentalAdditionalBlockPatterns ??
95
+ settings.__experimentalBlockPatterns,
96
+ restBlockPatterns: select( coreStore ).getBlockPatterns(),
97
+ currentThemeStylesheet:
98
+ select( coreStore ).getCurrentTheme().stylesheet,
99
+ };
100
+ }, [] );
101
+
102
+ return useMemo( () => {
103
+ const mergedPatterns = [
104
+ ...( blockPatterns || [] ),
105
+ ...( restBlockPatterns || [] ),
106
+ ];
107
+ const filteredPatterns = filterPatterns( mergedPatterns, template );
108
+ return preparePatterns(
109
+ filteredPatterns,
110
+ template,
111
+ currentThemeStylesheet
112
+ );
113
+ }, [ blockPatterns, restBlockPatterns, template, currentThemeStylesheet ] );
114
+ }
@@ -0,0 +1,99 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { useSelect, useDispatch } from '@wordpress/data';
5
+ import { store as coreStore } from '@wordpress/core-data';
6
+ import { PanelBody, PanelRow } from '@wordpress/components';
7
+ import { __ } from '@wordpress/i18n';
8
+ import { useAsyncList } from '@wordpress/compose';
9
+ import { __experimentalBlockPatternsList as BlockPatternsList } from '@wordpress/block-editor';
10
+ import { serialize } from '@wordpress/blocks';
11
+
12
+ /**
13
+ * Internal dependencies
14
+ */
15
+ import { store as editorStore } from '../../store';
16
+ import { useAvailablePatterns } from './hooks';
17
+ import {
18
+ TEMPLATE_POST_TYPE,
19
+ TEMPLATE_PART_POST_TYPE,
20
+ } from '../../store/constants';
21
+
22
+ function TemplatesList( { availableTemplates, onSelect } ) {
23
+ const shownTemplates = useAsyncList( availableTemplates );
24
+ if ( ! availableTemplates || availableTemplates?.length === 0 ) {
25
+ return null;
26
+ }
27
+
28
+ return (
29
+ <BlockPatternsList
30
+ label={ __( 'Templates' ) }
31
+ blockPatterns={ availableTemplates }
32
+ shownPatterns={ shownTemplates }
33
+ onClickPattern={ onSelect }
34
+ showTitlesAsTooltip
35
+ />
36
+ );
37
+ }
38
+
39
+ function PostTransform() {
40
+ const { record, postType, postId } = useSelect( ( select ) => {
41
+ const { getCurrentPostType, getCurrentPostId } = select( editorStore );
42
+ const { getEditedEntityRecord } = select( coreStore );
43
+ const type = getCurrentPostType();
44
+ const id = getCurrentPostId();
45
+ return {
46
+ postType: type,
47
+ postId: id,
48
+ record: getEditedEntityRecord( 'postType', type, id ),
49
+ };
50
+ }, [] );
51
+ const { editEntityRecord } = useDispatch( coreStore );
52
+ const availablePatterns = useAvailablePatterns( record );
53
+ const onTemplateSelect = async ( selectedTemplate ) => {
54
+ await editEntityRecord( 'postType', postType, postId, {
55
+ blocks: selectedTemplate.blocks,
56
+ content: serialize( selectedTemplate.blocks ),
57
+ } );
58
+ };
59
+ if ( ! availablePatterns?.length ) {
60
+ return null;
61
+ }
62
+
63
+ return (
64
+ <PanelBody
65
+ title={ __( 'Transform into:' ) }
66
+ initialOpen={ record.type === TEMPLATE_PART_POST_TYPE }
67
+ >
68
+ <PanelRow>
69
+ <p>
70
+ { __(
71
+ 'Choose a predefined pattern to switch up the look of your template.' // TODO - make this dynamic?
72
+ ) }
73
+ </p>
74
+ </PanelRow>
75
+
76
+ <TemplatesList
77
+ availableTemplates={ availablePatterns }
78
+ onSelect={ onTemplateSelect }
79
+ />
80
+ </PanelBody>
81
+ );
82
+ }
83
+
84
+ export default function PostTransformPanel() {
85
+ const { postType } = useSelect( ( select ) => {
86
+ const { getCurrentPostType } = select( editorStore );
87
+ return {
88
+ postType: getCurrentPostType(),
89
+ };
90
+ }, [] );
91
+
92
+ if (
93
+ ! [ TEMPLATE_PART_POST_TYPE, TEMPLATE_POST_TYPE ].includes( postType )
94
+ ) {
95
+ return null;
96
+ }
97
+
98
+ return <PostTransform />;
99
+ }
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Internal dependencies
3
+ */
4
+ import PostTrashCheck from './check';
5
+ import PostTrashLink from './';
6
+
7
+ export default function PostTrashPanel() {
8
+ return (
9
+ <PostTrashCheck>
10
+ <PostTrashLink />
11
+ </PostTrashCheck>
12
+ );
13
+ }
@@ -27,7 +27,7 @@ function PostTypeSupportCheck( { children, supportKeys } ) {
27
27
  const { getPostType } = select( coreStore );
28
28
  return getPostType( getEditedPostAttribute( 'type' ) );
29
29
  }, [] );
30
- let isSupported = true;
30
+ let isSupported = !! postType;
31
31
  if ( postType ) {
32
32
  isSupported = (
33
33
  Array.isArray( supportKeys ) ? supportKeys : [ supportKeys ]
@@ -29,7 +29,7 @@ function setupUseSelectMock( postType ) {
29
29
  }
30
30
 
31
31
  describe( 'PostTypeSupportCheck', () => {
32
- it( 'renders its children when post type is not known', () => {
32
+ it( 'does not render its children when post type is not known', () => {
33
33
  setupUseSelectMock( undefined );
34
34
 
35
35
  const { container } = render(
@@ -38,7 +38,7 @@ describe( 'PostTypeSupportCheck', () => {
38
38
  </PostTypeSupportCheck>
39
39
  );
40
40
 
41
- expect( container ).toHaveTextContent( 'Supported' );
41
+ expect( container ).not.toHaveTextContent( 'Supported' );
42
42
  } );
43
43
 
44
44
  it( 'does not render its children when post type is known and not supports', () => {
@@ -89,6 +89,7 @@ export default function PostURL( { onClose } ) {
89
89
  <Button
90
90
  icon={ copySmall }
91
91
  ref={ copyButtonRef }
92
+ label={ __( 'Copy' ) }
92
93
  />
93
94
  }
94
95
  label={ __( 'Link' ) }
@@ -60,7 +60,7 @@ function PostURLToggle( { isOpen, onClick } ) {
60
60
  const decodedSlug = safeDecodeURIComponent( slug );
61
61
  return (
62
62
  <Button
63
- __next40pxDefaultSize
63
+ size="compact"
64
64
  className="editor-post-url__panel-toggle"
65
65
  variant="tertiary"
66
66
  aria-expanded={ isOpen }
@@ -0,0 +1,28 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { compose } from '@wordpress/compose';
5
+ import { withSelect, withDispatch } from '@wordpress/data';
6
+ import { privateApis as preferencesPrivateApis } from '@wordpress/preferences';
7
+
8
+ /**
9
+ * Internal dependencies
10
+ */
11
+ import { unlock } from '../../lock-unlock';
12
+ import { store as editorStore } from '../../store';
13
+
14
+ const { PreferenceBaseOption } = unlock( preferencesPrivateApis );
15
+
16
+ export default compose(
17
+ withSelect( ( select ) => ( {
18
+ isChecked: select( editorStore ).isPublishSidebarEnabled(),
19
+ } ) ),
20
+ withDispatch( ( dispatch ) => {
21
+ const { enablePublishSidebar, disablePublishSidebar } =
22
+ dispatch( editorStore );
23
+ return {
24
+ onChange: ( isEnabled ) =>
25
+ isEnabled ? enablePublishSidebar() : disablePublishSidebar(),
26
+ };
27
+ } )
28
+ )( PreferenceBaseOption );
@@ -17,6 +17,7 @@ import { store as interfaceStore } from '@wordpress/interface';
17
17
  */
18
18
  import EnablePanelOption from './enable-panel';
19
19
  import EnablePluginDocumentSettingPanelOption from './enable-plugin-document-setting-panel';
20
+ import EnablePublishSidebarOption from './enable-publish-sidebar';
20
21
  import BlockManager from '../block-manager';
21
22
  import PostTaxonomies from '../post-taxonomies';
22
23
  import PostFeaturedImageCheck from '../post-featured-image/check';
@@ -69,9 +70,9 @@ export default function EditorPreferencesModal( { extraSections = {} } ) {
69
70
  scope="core"
70
71
  featureName="showListViewByDefault"
71
72
  help={ __(
72
- 'Opens the block list view sidebar by default.'
73
+ 'Opens the List View sidebar by default.'
73
74
  ) }
74
- label={ __( 'Always open list view' ) }
75
+ label={ __( 'Always open List View' ) }
75
76
  />
76
77
  { showBlockBreadcrumbsOption && (
77
78
  <PreferenceToggleControl
@@ -87,7 +88,7 @@ export default function EditorPreferencesModal( { extraSections = {} } ) {
87
88
  scope="core"
88
89
  featureName="allowRightClickOverrides"
89
90
  help={ __(
90
- 'Allows contextual list view menus via right-click, overriding browser defaults.'
91
+ 'Allows contextual List View menus via right-click, overriding browser defaults.'
91
92
  ) }
92
93
  label={ __(
93
94
  'Allow right-click contextual menus'
@@ -136,6 +137,18 @@ export default function EditorPreferencesModal( { extraSections = {} } ) {
136
137
  />
137
138
  </PageAttributesCheck>
138
139
  </PreferencesModalSection>
140
+ { isLargeViewport && (
141
+ <PreferencesModalSection
142
+ title={ __( 'Publishing' ) }
143
+ >
144
+ <EnablePublishSidebarOption
145
+ help={ __(
146
+ 'Review settings, such as visibility and tags.'
147
+ ) }
148
+ label={ __( 'Enable pre-publish checks' ) }
149
+ />
150
+ </PreferencesModalSection>
151
+ ) }
139
152
  { extraSections?.general }
140
153
  </>
141
154
  ),
@@ -258,6 +271,7 @@ export default function EditorPreferencesModal( { extraSections = {} } ) {
258
271
  setIsInserterOpened,
259
272
  setIsListViewOpened,
260
273
  setPreference,
274
+ isLargeViewport,
261
275
  ]
262
276
  );
263
277
 
@@ -38,7 +38,9 @@ export default function PreviewDropdown( { forceIsAutosaveable, disabled } ) {
38
38
  }, [] );
39
39
  const { setDeviceType } = useDispatch( editorStore );
40
40
  const isMobile = useViewportMatch( 'medium', '<' );
41
- if ( isMobile ) return null;
41
+ if ( isMobile ) {
42
+ return null;
43
+ }
42
44
 
43
45
  const popoverProps = {
44
46
  placement: 'bottom-end',
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { useSelect, useDispatch } from '@wordpress/data';
4
+ import { useSelect, useRegistry } from '@wordpress/data';
5
5
  import { store as blockEditorStore } from '@wordpress/block-editor';
6
6
  import { useEffect } from '@wordpress/element';
7
7
  import { applyFilters } from '@wordpress/hooks';
@@ -18,6 +18,8 @@ const CONTENT_ONLY_BLOCKS = applyFilters( 'editor.postContentBlockTypes', [
18
18
  * page content to be edited.
19
19
  */
20
20
  export default function DisableNonPageContentBlocks() {
21
+ // Note that there are two separate subscription because the result for each
22
+ // returns a new array.
21
23
  const contentOnlyIds = useSelect( ( select ) => {
22
24
  const { getBlocksByName, getBlockParents, getBlockName } =
23
25
  select( blockEditorStore );
@@ -33,7 +35,6 @@ export default function DisableNonPageContentBlocks() {
33
35
  } )
34
36
  );
35
37
  }, [] );
36
-
37
38
  const disabledIds = useSelect( ( select ) => {
38
39
  const { getBlocksByName, getBlockOrder } = select( blockEditorStore );
39
40
  return getBlocksByName( [ 'core/template-part' ] ).flatMap(
@@ -41,33 +42,34 @@ export default function DisableNonPageContentBlocks() {
41
42
  );
42
43
  }, [] );
43
44
 
44
- const { setBlockEditingMode, unsetBlockEditingMode } =
45
- useDispatch( blockEditorStore );
45
+ const registry = useRegistry();
46
46
 
47
47
  useEffect( () => {
48
- setBlockEditingMode( '', 'disabled' );
49
- for ( const clientId of contentOnlyIds ) {
50
- setBlockEditingMode( clientId, 'contentOnly' );
51
- }
52
- for ( const clientId of disabledIds ) {
53
- setBlockEditingMode( clientId, 'disabled' );
54
- }
48
+ const { setBlockEditingMode, unsetBlockEditingMode } =
49
+ registry.dispatch( blockEditorStore );
55
50
 
56
- return () => {
57
- unsetBlockEditingMode( '' );
51
+ registry.batch( () => {
52
+ setBlockEditingMode( '', 'disabled' );
58
53
  for ( const clientId of contentOnlyIds ) {
59
- unsetBlockEditingMode( clientId );
54
+ setBlockEditingMode( clientId, 'contentOnly' );
60
55
  }
61
56
  for ( const clientId of disabledIds ) {
62
- unsetBlockEditingMode( clientId );
57
+ setBlockEditingMode( clientId, 'disabled' );
63
58
  }
59
+ } );
60
+
61
+ return () => {
62
+ registry.batch( () => {
63
+ unsetBlockEditingMode( '' );
64
+ for ( const clientId of contentOnlyIds ) {
65
+ unsetBlockEditingMode( clientId );
66
+ }
67
+ for ( const clientId of disabledIds ) {
68
+ unsetBlockEditingMode( clientId );
69
+ }
70
+ } );
64
71
  };
65
- }, [
66
- contentOnlyIds,
67
- disabledIds,
68
- setBlockEditingMode,
69
- unsetBlockEditingMode,
70
- ] );
72
+ }, [ contentOnlyIds, disabledIds, registry ] );
71
73
 
72
74
  return null;
73
75
  }
@@ -28,6 +28,8 @@ import useCommands from '../commands';
28
28
  import BlockRemovalWarnings from '../block-removal-warnings';
29
29
  import StartPageOptions from '../start-page-options';
30
30
  import KeyboardShortcutHelpModal from '../keyboard-shortcut-help-modal';
31
+ import ContentOnlySettingsMenu from '../block-settings-menu/content-only-settings-menu';
32
+ import StartTemplateOptions from '../start-template-options';
31
33
 
32
34
  const { ExperimentalBlockEditorProvider } = unlock( blockEditorPrivateApis );
33
35
  const { PatternsMenuItems } = unlock( editPatternsPrivateApis );
@@ -264,6 +266,7 @@ export const ExperimentalEditorProvider = withRegistryProvider(
264
266
  { ! settings.__unstableIsPreviewMode && (
265
267
  <>
266
268
  <PatternsMenuItems />
269
+ <ContentOnlySettingsMenu />
267
270
  { mode === 'template-locked' && (
268
271
  <DisableNonPageContentBlocks />
269
272
  ) }
@@ -273,6 +276,7 @@ export const ExperimentalEditorProvider = withRegistryProvider(
273
276
  <KeyboardShortcutHelpModal />
274
277
  <BlockRemovalWarnings />
275
278
  <StartPageOptions />
279
+ <StartTemplateOptions />
276
280
  </>
277
281
  ) }
278
282
  </BlockEditorProviderComponent>
@@ -24,8 +24,10 @@ import inserterMediaCategories from '../media-categories';
24
24
  import { mediaUpload } from '../../utils';
25
25
  import { store as editorStore } from '../../store';
26
26
  import { lock, unlock } from '../../lock-unlock';
27
+ import { useGlobalStylesContext } from '../global-styles-provider';
27
28
 
28
29
  const EMPTY_BLOCKS_LIST = [];
30
+ const DEFAULT_STYLES = {};
29
31
 
30
32
  function __experimentalReusableBlocksSelect( select ) {
31
33
  return (
@@ -173,6 +175,9 @@ function useBlockEditorSettings( settings, postType, postId, renderingMode ) {
173
175
  [ postType, postId, isLargeViewport, renderingMode ]
174
176
  );
175
177
 
178
+ const { merged: mergedGlobalStyles } = useGlobalStylesContext();
179
+ const globalStylesData = mergedGlobalStyles.styles ?? DEFAULT_STYLES;
180
+
176
181
  const settingsBlockPatterns =
177
182
  settings.__experimentalAdditionalBlockPatterns ?? // WP 6.0
178
183
  settings.__experimentalBlockPatterns; // WP 5.9
@@ -251,6 +256,8 @@ function useBlockEditorSettings( settings, postType, postId, renderingMode ) {
251
256
  }, [ settings.allowedBlockTypes, hiddenBlockTypes, blockTypes ] );
252
257
 
253
258
  const forceDisableFocusMode = settings.focusMode === false;
259
+ const { globalStylesDataKey, selectBlockPatternsKey } =
260
+ unlock( privateApis );
254
261
 
255
262
  return useMemo( () => {
256
263
  const blockEditorSettings = {
@@ -259,6 +266,7 @@ function useBlockEditorSettings( settings, postType, postId, renderingMode ) {
259
266
  BLOCK_EDITOR_SETTINGS.includes( key )
260
267
  )
261
268
  ),
269
+ [ globalStylesDataKey ]: globalStylesData,
262
270
  allowedBlockTypes,
263
271
  allowRightClickOverrides,
264
272
  focusMode: focusMode && ! forceDisableFocusMode,
@@ -267,10 +275,14 @@ function useBlockEditorSettings( settings, postType, postId, renderingMode ) {
267
275
  keepCaretInsideBlock,
268
276
  mediaUpload: hasUploadPermissions ? mediaUpload : undefined,
269
277
  __experimentalBlockPatterns: blockPatterns,
270
- [ unlock( privateApis ).selectBlockPatternsKey ]: ( select ) =>
271
- unlock( select( coreStore ) ).getBlockPatternsForPostType(
272
- postType
273
- ),
278
+ [ selectBlockPatternsKey ]: ( select ) => {
279
+ const { hasFinishedResolution, getBlockPatternsForPostType } =
280
+ unlock( select( coreStore ) );
281
+ const patterns = getBlockPatternsForPostType( postType );
282
+ return hasFinishedResolution( 'getBlockPatterns' )
283
+ ? patterns
284
+ : undefined;
285
+ },
274
286
  [ unlock( privateApis ).reusableBlocksSelectKey ]:
275
287
  __experimentalReusableBlocksSelect,
276
288
  __experimentalBlockPatternCategories: blockPatternCategories,
@@ -327,6 +339,9 @@ function useBlockEditorSettings( settings, postType, postId, renderingMode ) {
327
339
  postType,
328
340
  setIsInserterOpened,
329
341
  sectionRootClientId,
342
+ globalStylesData,
343
+ globalStylesDataKey,
344
+ selectBlockPatternsKey,
330
345
  ] );
331
346
  }
332
347