@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,231 @@
1
+ .editor-header {
2
+ height: $header-height;
3
+ background: $white;
4
+ display: flex;
5
+ flex-wrap: wrap;
6
+ align-items: center;
7
+ // The header should never be wider than the viewport, or buttons might be hidden. Especially relevant at high zoom levels. Related to https://core.trac.wordpress.org/ticket/47603#ticket.
8
+ max-width: 100vw;
9
+ justify-content: space-between;
10
+
11
+ // Make toolbar sticky on larger breakpoints
12
+ @include break-zoomed-in {
13
+ flex-wrap: nowrap;
14
+ }
15
+ }
16
+
17
+ .editor-header__toolbar {
18
+ display: flex;
19
+ // Allow this area to shrink to fit the toolbar buttons.
20
+ flex-shrink: 8;
21
+ // Take up the space of the toolbar so it can be justified to the left side of the toolbar.
22
+ flex-grow: 3;
23
+ // Hide the overflow so flex will limit its width. Block toolbar will allow scrolling on fixed toolbar.
24
+ overflow: hidden;
25
+ // Leave enough room for the focus ring to show.
26
+ padding: 2px 0;
27
+ align-items: center;
28
+ // Allow focus ring to be fully visible on furthest right button.
29
+ @include break-medium() {
30
+ padding-right: var(--wp-admin-border-width-focus);
31
+ }
32
+
33
+ .table-of-contents {
34
+ display: none;
35
+
36
+ @include break-small() {
37
+ display: block;
38
+ }
39
+ }
40
+ }
41
+
42
+ .editor-header__center {
43
+ flex-grow: 1;
44
+ display: flex;
45
+ justify-content: center;
46
+
47
+ &.is-collapsed {
48
+ display: none;
49
+ }
50
+ }
51
+
52
+ /**
53
+ * Buttons on the right side
54
+ */
55
+
56
+ .editor-header__settings {
57
+ display: inline-flex;
58
+ align-items: center;
59
+ flex-wrap: nowrap;
60
+ padding-right: $grid-unit-05;
61
+
62
+ @include break-small () {
63
+ padding-right: $grid-unit-10;
64
+ }
65
+
66
+ gap: $grid-unit-10;
67
+ }
68
+
69
+ /**
70
+ * Show icon labels.
71
+ */
72
+
73
+ .show-icon-labels.interface-pinned-items,
74
+ .show-icon-labels .editor-header {
75
+ .components-button.has-icon {
76
+ width: auto;
77
+
78
+ // Hide the button icons when labels are set to display...
79
+ svg {
80
+ display: none;
81
+ }
82
+ // ... and display labels.
83
+ &::after {
84
+ content: attr(aria-label);
85
+ }
86
+ &[aria-disabled="true"] {
87
+ background-color: transparent;
88
+ }
89
+ }
90
+ .is-tertiary {
91
+ &:active {
92
+ box-shadow: 0 0 0 1.5px var(--wp-admin-theme-color);
93
+ background-color: transparent;
94
+ }
95
+ }
96
+ // Exception for drodpdown toggle buttons.
97
+ .components-button.has-icon.button-toggle {
98
+ svg {
99
+ display: block;
100
+ }
101
+ &::after {
102
+ content: none;
103
+ }
104
+ }
105
+
106
+ // Don't hide MenuItemsChoice check icons
107
+ .components-menu-items-choice .components-menu-items__item-icon.components-menu-items__item-icon {
108
+ display: block;
109
+ }
110
+ .editor-document-tools__inserter-toggle.editor-document-tools__inserter-toggle,
111
+ .interface-pinned-items .components-button {
112
+ padding-left: $grid-unit;
113
+ padding-right: $grid-unit;
114
+
115
+ @include break-small {
116
+ padding-left: $grid-unit-15;
117
+ padding-right: $grid-unit-15;
118
+ }
119
+ }
120
+
121
+ .editor-post-save-draft.editor-post-save-draft,
122
+ .editor-post-saved-state.editor-post-saved-state {
123
+ &::after {
124
+ content: none;
125
+ }
126
+ }
127
+ }
128
+
129
+ .show-icon-labels {
130
+ .editor-header__toolbar .block-editor-block-mover {
131
+ // Modified group borders.
132
+ border-left: none;
133
+
134
+ &::before {
135
+ content: "";
136
+ width: $border-width;
137
+ height: $grid-unit-30;
138
+ background-color: $gray-300;
139
+ margin-top: $grid-unit-05;
140
+ margin-left: $grid-unit;
141
+ }
142
+
143
+ // Modified block movers horizontal separator.
144
+ .block-editor-block-mover__move-button-container {
145
+ &::before {
146
+ width: calc(100% - #{$grid-unit-30});
147
+ background: $gray-300;
148
+ left: calc(50% + 1px);
149
+ }
150
+ }
151
+ }
152
+ }
153
+
154
+ .show-icon-labels.interface-pinned-items {
155
+ padding: 6px $grid-unit-15 $grid-unit-15;
156
+ margin-top: 0;
157
+ margin-bottom: 0;
158
+ margin-left: -$grid-unit-15;
159
+ margin-right: -$grid-unit-15;
160
+ border-bottom: 1px solid $gray-400;
161
+ display: block;
162
+
163
+ > .components-button.has-icon {
164
+ margin: 0;
165
+ padding: 6px 6px 6px $grid-unit;
166
+ width: 14.625rem;
167
+ justify-content: flex-start;
168
+
169
+ &[aria-expanded="true"] svg {
170
+ display: block;
171
+ max-width: $grid-unit-30;
172
+ }
173
+ &[aria-expanded="false"] {
174
+ padding-left: $grid-unit-50;
175
+ }
176
+ svg {
177
+ margin-right: 8px;
178
+ }
179
+ }
180
+ }
181
+
182
+ .editor-header__post-preview-button {
183
+ @include break-small {
184
+ display: none;
185
+ }
186
+ }
187
+
188
+ .is-distraction-free {
189
+ .interface-interface-skeleton__header {
190
+ border-bottom: none;
191
+ }
192
+
193
+ .editor-header {
194
+ background-color: $white;
195
+ border-bottom: 1px solid #e0e0e0;
196
+ position: absolute;
197
+ width: 100%;
198
+
199
+
200
+ // hide some parts
201
+ & > .edit-post-header__settings > .edit-post-header__post-preview-button {
202
+ visibility: hidden;
203
+ }
204
+
205
+ & > .editor-header__toolbar .editor-document-tools__document-overview-toggle,
206
+ & > .editor-header__settings > .editor-preview-dropdown,
207
+ & > .editor-header__settings > .interface-pinned-items {
208
+ display: none;
209
+ }
210
+
211
+ }
212
+
213
+ // We need ! important because we override inline styles
214
+ // set by the motion component.
215
+ .interface-interface-skeleton__header:focus-within {
216
+ opacity: 1 !important;
217
+ div {
218
+ transform: translateX(0) translateZ(0) !important;
219
+ }
220
+
221
+ }
222
+
223
+ .components-editor-notices__dismissible {
224
+ position: absolute;
225
+ z-index: 35;
226
+ }
227
+ }
228
+
229
+ .components-popover.more-menu-dropdown__content {
230
+ z-index: z-index(".components-popover.more-menu__content");
231
+ }
@@ -2,16 +2,14 @@
2
2
  * WordPress dependencies
3
3
  */
4
4
  import { useDispatch, useSelect } from '@wordpress/data';
5
- import { Button, VisuallyHidden } from '@wordpress/components';
6
- import { __experimentalLibrary as Library } from '@wordpress/block-editor';
7
- import { close } from '@wordpress/icons';
8
5
  import {
9
- useViewportMatch,
10
- __experimentalUseDialog as useDialog,
11
- } from '@wordpress/compose';
12
- import { __ } from '@wordpress/i18n';
13
- import { useEffect, useRef } from '@wordpress/element';
6
+ __experimentalLibrary as Library,
7
+ store as blockEditorStore,
8
+ } from '@wordpress/block-editor';
9
+ import { useViewportMatch } from '@wordpress/compose';
10
+ import { useCallback, useRef } from '@wordpress/element';
14
11
  import { store as preferencesStore } from '@wordpress/preferences';
12
+ import { ESCAPE } from '@wordpress/keycodes';
15
13
 
16
14
  /**
17
15
  * Internal dependencies
@@ -23,55 +21,77 @@ export default function InserterSidebar( {
23
21
  closeGeneralSidebar,
24
22
  isRightSidebarOpen,
25
23
  } ) {
26
- const { insertionPoint, showMostUsedBlocks } = useSelect( ( select ) => {
27
- const { getInsertionPoint } = unlock( select( editorStore ) );
24
+ const {
25
+ blockSectionRootClientId,
26
+ inserterSidebarToggleRef,
27
+ insertionPoint,
28
+ showMostUsedBlocks,
29
+ } = useSelect( ( select ) => {
30
+ const { getInserterSidebarToggleRef, getInsertionPoint } = unlock(
31
+ select( editorStore )
32
+ );
33
+ const { getBlockRootClientId, __unstableGetEditorMode, getSettings } =
34
+ select( blockEditorStore );
28
35
  const { get } = select( preferencesStore );
36
+ const getBlockSectionRootClientId = () => {
37
+ if ( __unstableGetEditorMode() === 'zoom-out' ) {
38
+ const { sectionRootClientId } = unlock( getSettings() );
39
+ if ( sectionRootClientId ) {
40
+ return sectionRootClientId;
41
+ }
42
+ }
43
+ return getBlockRootClientId();
44
+ };
29
45
  return {
46
+ inserterSidebarToggleRef: getInserterSidebarToggleRef(),
30
47
  insertionPoint: getInsertionPoint(),
31
48
  showMostUsedBlocks: get( 'core', 'mostUsedBlocks' ),
49
+ blockSectionRootClientId: getBlockSectionRootClientId(),
32
50
  };
33
51
  }, [] );
34
52
  const { setIsInserterOpened } = useDispatch( editorStore );
35
53
 
36
54
  const isMobileViewport = useViewportMatch( 'medium', '<' );
37
- const TagName = ! isMobileViewport ? VisuallyHidden : 'div';
38
- const [ inserterDialogRef, inserterDialogProps ] = useDialog( {
39
- onClose: () => setIsInserterOpened( false ),
40
- focusOnMount: null,
41
- } );
42
-
43
55
  const libraryRef = useRef();
44
- useEffect( () => {
45
- libraryRef.current.focusSearch();
46
- }, [] );
56
+
57
+ // When closing the inserter, focus should return to the toggle button.
58
+ const closeInserterSidebar = useCallback( () => {
59
+ setIsInserterOpened( false );
60
+ inserterSidebarToggleRef.current?.focus();
61
+ }, [ inserterSidebarToggleRef, setIsInserterOpened ] );
62
+
63
+ const closeOnEscape = useCallback(
64
+ ( event ) => {
65
+ if ( event.keyCode === ESCAPE && ! event.defaultPrevented ) {
66
+ event.preventDefault();
67
+ closeInserterSidebar();
68
+ }
69
+ },
70
+ [ closeInserterSidebar ]
71
+ );
47
72
 
48
73
  return (
49
- <div
50
- ref={ inserterDialogRef }
51
- { ...inserterDialogProps }
52
- className="editor-inserter-sidebar"
53
- >
54
- <TagName className="editor-inserter-sidebar__header">
55
- <Button
56
- icon={ close }
57
- label={ __( 'Close block inserter' ) }
58
- onClick={ () => setIsInserterOpened( false ) }
59
- />
60
- </TagName>
74
+ // eslint-disable-next-line jsx-a11y/no-static-element-interactions
75
+ <div onKeyDown={ closeOnEscape } className="editor-inserter-sidebar">
61
76
  <div className="editor-inserter-sidebar__content">
62
77
  <Library
63
78
  showMostUsedBlocks={ showMostUsedBlocks }
64
79
  showInserterHelpPanel
65
80
  shouldFocusBlock={ isMobileViewport }
66
- rootClientId={ insertionPoint.rootClientId }
81
+ rootClientId={
82
+ blockSectionRootClientId ?? insertionPoint.rootClientId
83
+ }
67
84
  __experimentalInsertionIndex={
68
85
  insertionPoint.insertionIndex
69
86
  }
87
+ __experimentalInitialTab={ insertionPoint.tab }
88
+ __experimentalInitialCategory={ insertionPoint.category }
70
89
  __experimentalFilterValue={ insertionPoint.filterValue }
71
90
  __experimentalOnPatternCategorySelection={
72
91
  isRightSidebarOpen ? closeGeneralSidebar : undefined
73
92
  }
74
93
  ref={ libraryRef }
94
+ onClose={ closeInserterSidebar }
75
95
  />
76
96
  </div>
77
97
  </div>
@@ -6,16 +6,23 @@
6
6
  flex-direction: column;
7
7
  }
8
8
 
9
- .editor-inserter-sidebar__header {
10
- padding-top: $grid-unit-10;
9
+ .block-editor-inserter-sidebar__header {
10
+ border-bottom: $border-width solid $gray-300;
11
11
  padding-right: $grid-unit-10;
12
12
  display: flex;
13
- justify-content: flex-end;
13
+ justify-content: space-between;
14
+
15
+ .block-editor-inserter-sidebar__close-button {
16
+ /* stylelint-disable-next-line property-disallowed-list -- This should be refactored to avoid order if possible */
17
+ order: 1;
18
+ align-self: center;
19
+ }
14
20
  }
15
21
 
16
22
  .editor-inserter-sidebar__content {
17
23
  // Leave space for the close button
18
24
  height: calc(100% - #{$button-size} - #{$grid-unit-10});
25
+
19
26
  @include break-medium() {
20
27
  height: 100%;
21
28
  }
@@ -37,7 +37,16 @@ export const textFormattingShortcuts = [
37
37
  description: __( 'Make the selected text inline code.' ),
38
38
  },
39
39
  {
40
- keyCombination: { modifier: 'access', character: '0' },
40
+ keyCombination: {
41
+ modifier: 'access',
42
+ character: '0',
43
+ },
44
+ aliases: [
45
+ {
46
+ modifier: 'access',
47
+ character: '7',
48
+ },
49
+ ],
41
50
  description: __( 'Convert the current heading to a paragraph.' ),
42
51
  },
43
52
  {
@@ -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
@@ -52,7 +52,7 @@ const ShortcutList = ( { shortcuts } ) => (
52
52
 
53
53
  const ShortcutSection = ( { title, shortcuts, className } ) => (
54
54
  <section
55
- className={ classnames(
55
+ className={ clsx(
56
56
  'editor-keyboard-shortcut-help-modal__section',
57
57
  className
58
58
  ) }
@@ -129,7 +129,7 @@ export default function ListViewSidebar() {
129
129
  // can be rendered internally.
130
130
  defaultTabId="list-view"
131
131
  >
132
- <div className="edit-post-editor__document-overview-panel__header">
132
+ <div className="editor-list-view-sidebar__header">
133
133
  <Button
134
134
  className="editor-list-view-sidebar__close-button"
135
135
  icon={ closeSmall }
@@ -8,12 +8,13 @@
8
8
  // @see packages/block-editor/src/components/inserter/style.scss
9
9
  width: 350px;
10
10
  }
11
- .edit-post-editor__document-overview-panel__header {
11
+ .editor-list-view-sidebar__header {
12
12
  display: flex;
13
13
  border-bottom: $border-width solid $gray-300;
14
14
  }
15
15
  .editor-list-view-sidebar__close-button {
16
16
  background: $white;
17
+ /* stylelint-disable-next-line property-disallowed-list -- This should be removed when https://github.com/WordPress/gutenberg/issues/59013 is fixed. */
17
18
  order: 1;
18
19
  align-self: center;
19
20
  margin-right: $grid-unit-15;
@@ -49,7 +50,7 @@
49
50
  scrollbar-gutter: auto;
50
51
 
51
52
  // The table cells use an extra pixels of space left and right. We compensate for that here.
52
- padding: $grid-unit-10 ($grid-unit-10 - $border-width - $border-width);
53
+ padding: $grid-unit-05;
53
54
  }
54
55
 
55
56
  .editor-list-view-sidebar__list-view-container {
@@ -0,0 +1,51 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { MenuItem } from '@wordpress/components';
5
+ import { useSelect, useDispatch } from '@wordpress/data';
6
+ import { __ } from '@wordpress/i18n';
7
+ import { useCopyToClipboard } from '@wordpress/compose';
8
+ import { store as noticesStore } from '@wordpress/notices';
9
+ import { store as coreStore } from '@wordpress/core-data';
10
+ import { __unstableSerializeAndClean } from '@wordpress/blocks';
11
+
12
+ /**
13
+ * Internal dependencies
14
+ */
15
+ import { store as editorStore } from '../../store';
16
+
17
+ export default function CopyContentMenuItem() {
18
+ const { createNotice } = useDispatch( noticesStore );
19
+ const { getCurrentPostId, getCurrentPostType } = useSelect( editorStore );
20
+ const { getEditedEntityRecord } = useSelect( coreStore );
21
+
22
+ function getText() {
23
+ const record = getEditedEntityRecord(
24
+ 'postType',
25
+ getCurrentPostType(),
26
+ getCurrentPostId()
27
+ );
28
+ if ( ! record ) {
29
+ return '';
30
+ }
31
+
32
+ if ( typeof record.content === 'function' ) {
33
+ return record.content( record );
34
+ } else if ( record.blocks ) {
35
+ return __unstableSerializeAndClean( record.blocks );
36
+ } else if ( record.content ) {
37
+ return record.content;
38
+ }
39
+ }
40
+
41
+ function onSuccess() {
42
+ createNotice( 'info', __( 'All content copied.' ), {
43
+ isDismissible: true,
44
+ type: 'snackbar',
45
+ } );
46
+ }
47
+
48
+ const ref = useCopyToClipboard( getText, onSuccess );
49
+
50
+ return <MenuItem ref={ ref }>{ __( 'Copy all blocks' ) }</MenuItem>;
51
+ }
@@ -0,0 +1,158 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { __, _x } from '@wordpress/i18n';
5
+ import { useSelect, useDispatch } from '@wordpress/data';
6
+ import { displayShortcut } from '@wordpress/keycodes';
7
+ import { external, moreVertical } from '@wordpress/icons';
8
+ import {
9
+ MenuGroup,
10
+ MenuItem,
11
+ VisuallyHidden,
12
+ DropdownMenu,
13
+ } from '@wordpress/components';
14
+ import {
15
+ PreferenceToggleMenuItem,
16
+ store as preferencesStore,
17
+ } from '@wordpress/preferences';
18
+ import { store as interfaceStore, ActionItem } from '@wordpress/interface';
19
+
20
+ /**
21
+ * Internal dependencies
22
+ */
23
+ import CopyContentMenuItem from './copy-content-menu-item';
24
+ import ModeSwitcher from '../mode-switcher';
25
+ import ToolsMoreMenuGroup from './tools-more-menu-group';
26
+ import ViewMoreMenuGroup from './view-more-menu-group';
27
+ import { store as editorStore } from '../../store';
28
+
29
+ export default function MoreMenu() {
30
+ const { openModal } = useDispatch( interfaceStore );
31
+ const { set: setPreference } = useDispatch( preferencesStore );
32
+ const { toggleDistractionFree } = useDispatch( editorStore );
33
+ const showIconLabels = useSelect(
34
+ ( select ) =>
35
+ select( preferencesStore ).get( 'core', 'showIconLabels' ),
36
+ []
37
+ );
38
+ const turnOffDistractionFree = () => {
39
+ setPreference( 'core', 'distractionFree', false );
40
+ };
41
+
42
+ return (
43
+ <>
44
+ <DropdownMenu
45
+ icon={ moreVertical }
46
+ label={ __( 'Options' ) }
47
+ popoverProps={ {
48
+ placement: 'bottom-end',
49
+ className: 'more-menu-dropdown__content',
50
+ } }
51
+ toggleProps={ {
52
+ showTooltip: ! showIconLabels,
53
+ ...( showIconLabels && { variant: 'tertiary' } ),
54
+ tooltipPosition: 'bottom',
55
+ size: 'compact',
56
+ } }
57
+ >
58
+ { ( { onClose } ) => (
59
+ <>
60
+ <MenuGroup label={ _x( 'View', 'noun' ) }>
61
+ <PreferenceToggleMenuItem
62
+ scope="core"
63
+ name="fixedToolbar"
64
+ onToggle={ turnOffDistractionFree }
65
+ label={ __( 'Top toolbar' ) }
66
+ info={ __(
67
+ 'Access all block and document tools in a single place'
68
+ ) }
69
+ messageActivated={ __(
70
+ 'Top toolbar activated'
71
+ ) }
72
+ messageDeactivated={ __(
73
+ 'Top toolbar deactivated'
74
+ ) }
75
+ />
76
+ <PreferenceToggleMenuItem
77
+ scope="core"
78
+ name="distractionFree"
79
+ label={ __( 'Distraction free' ) }
80
+ info={ __( 'Write with calmness' ) }
81
+ handleToggling={ false }
82
+ onToggle={ toggleDistractionFree }
83
+ messageActivated={ __(
84
+ 'Distraction free mode activated'
85
+ ) }
86
+ messageDeactivated={ __(
87
+ 'Distraction free mode deactivated'
88
+ ) }
89
+ shortcut={ displayShortcut.primaryShift(
90
+ '\\'
91
+ ) }
92
+ />
93
+ <PreferenceToggleMenuItem
94
+ scope="core"
95
+ name="focusMode"
96
+ label={ __( 'Spotlight mode' ) }
97
+ info={ __( 'Focus on one block at a time' ) }
98
+ messageActivated={ __(
99
+ 'Spotlight mode activated'
100
+ ) }
101
+ messageDeactivated={ __(
102
+ 'Spotlight mode deactivated'
103
+ ) }
104
+ />
105
+ <ViewMoreMenuGroup.Slot fillProps={ { onClose } } />
106
+ </MenuGroup>
107
+ <ModeSwitcher />
108
+ <ActionItem.Slot
109
+ name="core/plugin-more-menu"
110
+ label={ __( 'Plugins' ) }
111
+ as={ MenuGroup }
112
+ fillProps={ { onClick: onClose } }
113
+ />
114
+ <MenuGroup label={ __( 'Tools' ) }>
115
+ <MenuItem
116
+ onClick={ () =>
117
+ openModal( 'editor/keyboard-shortcut-help' )
118
+ }
119
+ shortcut={ displayShortcut.access( 'h' ) }
120
+ >
121
+ { __( 'Keyboard shortcuts' ) }
122
+ </MenuItem>
123
+ <CopyContentMenuItem />
124
+ <MenuItem
125
+ icon={ external }
126
+ href={ __(
127
+ 'https://wordpress.org/documentation/article/wordpress-block-editor/'
128
+ ) }
129
+ target="_blank"
130
+ rel="noopener noreferrer"
131
+ >
132
+ { __( 'Help' ) }
133
+ <VisuallyHidden as="span">
134
+ {
135
+ /* translators: accessibility text */
136
+ __( '(opens in a new tab)' )
137
+ }
138
+ </VisuallyHidden>
139
+ </MenuItem>
140
+ <ToolsMoreMenuGroup.Slot
141
+ fillProps={ { onClose } }
142
+ />
143
+ </MenuGroup>
144
+ <MenuGroup>
145
+ <MenuItem
146
+ onClick={ () =>
147
+ openModal( 'editor/preferences' )
148
+ }
149
+ >
150
+ { __( 'Preferences' ) }
151
+ </MenuItem>
152
+ </MenuGroup>
153
+ </>
154
+ ) }
155
+ </DropdownMenu>
156
+ </>
157
+ );
158
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { createSlotFill } from '@wordpress/components';
5
+
6
+ const { Fill: ToolsMoreMenuGroup, Slot } =
7
+ createSlotFill( 'ToolsMoreMenuGroup' );
8
+
9
+ ToolsMoreMenuGroup.Slot = ( { fillProps } ) => <Slot fillProps={ fillProps } />;
10
+
11
+ export default ToolsMoreMenuGroup;
@@ -0,0 +1,13 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { createSlotFill } from '@wordpress/components';
5
+ import { Platform } from '@wordpress/element';
6
+
7
+ const { Fill: ViewMoreMenuGroup, Slot } = createSlotFill(
8
+ Platform.OS === 'web' ? Symbol( 'ViewMoreMenuGroup' ) : 'ViewMoreMenuGroup'
9
+ );
10
+
11
+ ViewMoreMenuGroup.Slot = ( { fillProps } ) => <Slot fillProps={ fillProps } />;
12
+
13
+ export default ViewMoreMenuGroup;