@wordpress/editor 13.34.0 → 14.0.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 (972) hide show
  1. package/CHANGELOG.md +17 -4
  2. package/README.md +333 -39
  3. package/build/bindings/index.js +1 -3
  4. package/build/bindings/index.js.map +1 -1
  5. package/build/bindings/pattern-overrides.js +71 -2
  6. package/build/bindings/pattern-overrides.js.map +1 -1
  7. package/build/bindings/post-meta.js +38 -2
  8. package/build/bindings/post-meta.js.map +1 -1
  9. package/build/components/autocompleters/user.js +12 -8
  10. package/build/components/autocompleters/user.js.map +1 -1
  11. package/build/components/block-manager/category.js +19 -17
  12. package/build/components/block-manager/category.js.map +1 -1
  13. package/build/components/block-manager/checklist.js +15 -14
  14. package/build/components/block-manager/checklist.js.map +1 -1
  15. package/build/components/block-manager/index.js +37 -33
  16. package/build/components/block-manager/index.js.map +1 -1
  17. package/build/components/block-removal-warnings/index.js +2 -2
  18. package/build/components/block-removal-warnings/index.js.map +1 -1
  19. package/build/components/block-settings-menu/content-only-settings-menu.js +140 -0
  20. package/build/components/block-settings-menu/content-only-settings-menu.js.map +1 -0
  21. package/build/components/block-settings-menu/content-only-settings-menu.native.js +11 -0
  22. package/build/components/block-settings-menu/content-only-settings-menu.native.js.map +1 -0
  23. package/build/components/block-settings-menu/plugin-block-settings-menu-item.js +16 -13
  24. package/build/components/block-settings-menu/plugin-block-settings-menu-item.js.map +1 -1
  25. package/build/components/blog-title/index.js +116 -0
  26. package/build/components/blog-title/index.js.map +1 -0
  27. package/build/components/collapsible-block-toolbar/index.js +22 -19
  28. package/build/components/collapsible-block-toolbar/index.js.map +1 -1
  29. package/build/components/commands/index.js +109 -3
  30. package/build/components/commands/index.js.map +1 -1
  31. package/build/components/create-template-part-modal/index.js +167 -0
  32. package/build/components/create-template-part-modal/index.js.map +1 -0
  33. package/build/components/create-template-part-modal/utils.js +64 -0
  34. package/build/components/create-template-part-modal/utils.js.map +1 -0
  35. package/build/components/deprecated.js +2 -2
  36. package/build/components/deprecated.js.map +1 -1
  37. package/build/components/document-bar/index.js +96 -72
  38. package/build/components/document-bar/index.js.map +1 -1
  39. package/build/components/document-outline/index.js +124 -121
  40. package/build/components/document-outline/index.js.map +1 -1
  41. package/build/components/document-outline/item.js +20 -16
  42. package/build/components/document-outline/item.js.map +1 -1
  43. package/build/components/document-tools/index.js +69 -69
  44. package/build/components/document-tools/index.js.map +1 -1
  45. package/build/components/editor-help/add-blocks.native.js +14 -11
  46. package/build/components/editor-help/add-blocks.native.js.map +1 -1
  47. package/build/components/editor-help/customize-blocks.native.js +14 -11
  48. package/build/components/editor-help/customize-blocks.native.js.map +1 -1
  49. package/build/components/editor-help/help-detail-navigation-screen.native.js +32 -22
  50. package/build/components/editor-help/help-detail-navigation-screen.native.js.map +1 -1
  51. package/build/components/editor-help/help-get-support-button.native.js +8 -6
  52. package/build/components/editor-help/help-get-support-button.native.js.map +1 -1
  53. package/build/components/editor-help/help-section-title.native.js +8 -6
  54. package/build/components/editor-help/help-section-title.native.js.map +1 -1
  55. package/build/components/editor-help/help-topic-row.native.js +7 -6
  56. package/build/components/editor-help/help-topic-row.native.js.map +1 -1
  57. package/build/components/editor-help/icon-move-blocks.native.js +7 -6
  58. package/build/components/editor-help/icon-move-blocks.native.js.map +1 -1
  59. package/build/components/editor-help/index.native.js +94 -76
  60. package/build/components/editor-help/index.native.js.map +1 -1
  61. package/build/components/editor-help/intro-to-blocks.native.js +41 -37
  62. package/build/components/editor-help/intro-to-blocks.native.js.map +1 -1
  63. package/build/components/editor-help/move-blocks.native.js +25 -21
  64. package/build/components/editor-help/move-blocks.native.js.map +1 -1
  65. package/build/components/editor-help/remove-blocks.native.js +12 -9
  66. package/build/components/editor-help/remove-blocks.native.js.map +1 -1
  67. package/build/components/editor-help/view-sections.native.js +24 -19
  68. package/build/components/editor-help/view-sections.native.js.map +1 -1
  69. package/build/components/editor-history/redo.js +2 -2
  70. package/build/components/editor-history/redo.js.map +1 -1
  71. package/build/components/editor-history/undo.js +2 -2
  72. package/build/components/editor-history/undo.js.map +1 -1
  73. package/build/components/editor-interface/content-slot-fill.js +23 -0
  74. package/build/components/editor-interface/content-slot-fill.js.map +1 -0
  75. package/build/components/editor-interface/index.js +178 -0
  76. package/build/components/editor-interface/index.js.map +1 -0
  77. package/build/components/editor-notices/index.js +22 -9
  78. package/build/components/editor-notices/index.js.map +1 -1
  79. package/build/components/editor-snackbars/index.js +2 -2
  80. package/build/components/editor-snackbars/index.js.map +1 -1
  81. package/build/components/entities-saved-states/entity-record-item.js +37 -10
  82. package/build/components/entities-saved-states/entity-record-item.js.map +1 -1
  83. package/build/components/entities-saved-states/entity-type-list.js +25 -22
  84. package/build/components/entities-saved-states/entity-type-list.js.map +1 -1
  85. package/build/components/entities-saved-states/index.js +53 -46
  86. package/build/components/entities-saved-states/index.js.map +1 -1
  87. package/build/components/error-boundary/index.js +27 -14
  88. package/build/components/error-boundary/index.js.map +1 -1
  89. package/build/components/error-boundary/index.native.js +45 -35
  90. package/build/components/error-boundary/index.native.js.map +1 -1
  91. package/build/components/global-keyboard-shortcuts/register-shortcuts.js +4 -5
  92. package/build/components/global-keyboard-shortcuts/register-shortcuts.js.map +1 -1
  93. package/build/components/global-styles-provider/index.js +195 -0
  94. package/build/components/global-styles-provider/index.js.map +1 -0
  95. package/build/components/header/back-button.js +34 -0
  96. package/build/components/header/back-button.js.map +1 -0
  97. package/build/components/header/index.js +176 -0
  98. package/build/components/header/index.js.map +1 -0
  99. package/build/components/inserter-sidebar/index.js +83 -32
  100. package/build/components/inserter-sidebar/index.js.map +1 -1
  101. package/build/components/keyboard-shortcut-help-modal/dynamic-shortcut.js +2 -2
  102. package/build/components/keyboard-shortcut-help-modal/dynamic-shortcut.js.map +1 -1
  103. package/build/components/keyboard-shortcut-help-modal/index.js +54 -49
  104. package/build/components/keyboard-shortcut-help-modal/index.js.map +1 -1
  105. package/build/components/keyboard-shortcut-help-modal/shortcut.js +30 -26
  106. package/build/components/keyboard-shortcut-help-modal/shortcut.js.map +1 -1
  107. package/build/components/list-view-sidebar/index.js +59 -47
  108. package/build/components/list-view-sidebar/index.js.map +1 -1
  109. package/build/components/list-view-sidebar/list-view-outline.js +21 -4
  110. package/build/components/list-view-sidebar/list-view-outline.js.map +1 -1
  111. package/build/components/local-autosave-monitor/index.js +15 -2
  112. package/build/components/local-autosave-monitor/index.js.map +1 -1
  113. package/build/components/mode-switcher/index.js +10 -10
  114. package/build/components/mode-switcher/index.js.map +1 -1
  115. package/build/components/more-menu/copy-content-menu-item.js +5 -4
  116. package/build/components/more-menu/copy-content-menu-item.js.map +1 -1
  117. package/build/components/more-menu/index.js +89 -76
  118. package/build/components/more-menu/index.js.map +1 -1
  119. package/build/components/more-menu/tools-more-menu-group.js +2 -2
  120. package/build/components/more-menu/tools-more-menu-group.js.map +1 -1
  121. package/build/components/more-menu/view-more-menu-group.js +2 -2
  122. package/build/components/more-menu/view-more-menu-group.js.map +1 -1
  123. package/build/components/offline-status/index.native.js +12 -11
  124. package/build/components/offline-status/index.native.js.map +1 -1
  125. package/build/components/page-attributes/order.js +87 -14
  126. package/build/components/page-attributes/order.js.map +1 -1
  127. package/build/components/page-attributes/panel.js +10 -19
  128. package/build/components/page-attributes/panel.js.map +1 -1
  129. package/build/components/page-attributes/parent.js +86 -3
  130. package/build/components/page-attributes/parent.js.map +1 -1
  131. package/build/components/pattern-duplicate-modal/index.js +59 -0
  132. package/build/components/pattern-duplicate-modal/index.js.map +1 -0
  133. package/build/components/pattern-overrides-panel/index.js +2 -2
  134. package/build/components/pattern-overrides-panel/index.js.map +1 -1
  135. package/build/components/pattern-rename-modal/index.js +58 -0
  136. package/build/components/pattern-rename-modal/index.js.map +1 -0
  137. package/build/components/plugin-document-setting-panel/index.js +17 -12
  138. package/build/components/plugin-document-setting-panel/index.js.map +1 -1
  139. package/build/components/plugin-post-publish-panel/index.js +10 -7
  140. package/build/components/plugin-post-publish-panel/index.js.map +1 -1
  141. package/build/components/plugin-post-status-info/index.js +7 -4
  142. package/build/components/plugin-post-status-info/index.js.map +1 -1
  143. package/build/components/plugin-pre-publish-panel/index.js +10 -7
  144. package/build/components/plugin-pre-publish-panel/index.js.map +1 -1
  145. package/build/components/plugin-sidebar/index.js +3 -4
  146. package/build/components/plugin-sidebar/index.js.map +1 -1
  147. package/build/components/plugin-sidebar-more-menu-item/index.js +3 -5
  148. package/build/components/plugin-sidebar-more-menu-item/index.js.map +1 -1
  149. package/build/components/post-actions/actions.js +454 -327
  150. package/build/components/post-actions/actions.js.map +1 -1
  151. package/build/components/post-actions/export-pattern-action.js +64 -0
  152. package/build/components/post-actions/export-pattern-action.js.map +1 -0
  153. package/build/components/post-actions/export-pattern-action.native.js +11 -0
  154. package/build/components/post-actions/export-pattern-action.native.js.map +1 -0
  155. package/build/components/post-actions/index.js +71 -62
  156. package/build/components/post-actions/index.js.map +1 -1
  157. package/build/components/post-author/check.js +6 -6
  158. package/build/components/post-author/check.js.map +1 -1
  159. package/build/components/post-author/combobox.js +4 -3
  160. package/build/components/post-author/combobox.js.map +1 -1
  161. package/build/components/post-author/hook.js +2 -1
  162. package/build/components/post-author/hook.js.map +1 -1
  163. package/build/components/post-author/index.js +3 -3
  164. package/build/components/post-author/index.js.map +1 -1
  165. package/build/components/post-author/panel.js +72 -4
  166. package/build/components/post-author/panel.js.map +1 -1
  167. package/build/components/post-author/select.js +4 -3
  168. package/build/components/post-author/select.js.map +1 -1
  169. package/build/components/post-card-panel/index.js +46 -35
  170. package/build/components/post-card-panel/index.js.map +1 -1
  171. package/build/components/post-comments/index.js +44 -8
  172. package/build/components/post-comments/index.js.map +1 -1
  173. package/build/components/post-content-information/index.js +8 -5
  174. package/build/components/post-content-information/index.js.map +1 -1
  175. package/build/components/post-discussion/panel.js +122 -24
  176. package/build/components/post-discussion/panel.js.map +1 -1
  177. package/build/components/post-excerpt/check.js +6 -6
  178. package/build/components/post-excerpt/check.js.map +1 -1
  179. package/build/components/post-excerpt/index.js +18 -17
  180. package/build/components/post-excerpt/index.js.map +1 -1
  181. package/build/components/post-excerpt/panel.js +59 -42
  182. package/build/components/post-excerpt/panel.js.map +1 -1
  183. package/build/components/post-excerpt/plugin.js +7 -4
  184. package/build/components/post-excerpt/plugin.js.map +1 -1
  185. package/build/components/post-featured-image/check.js +17 -7
  186. package/build/components/post-featured-image/check.js.map +1 -1
  187. package/build/components/post-featured-image/index.js +77 -49
  188. package/build/components/post-featured-image/index.js.map +1 -1
  189. package/build/components/post-featured-image/panel.js +22 -7
  190. package/build/components/post-featured-image/panel.js.map +1 -1
  191. package/build/components/post-format/check.js +14 -4
  192. package/build/components/post-format/check.js.map +1 -1
  193. package/build/components/post-format/index.js +37 -20
  194. package/build/components/post-format/index.js.map +1 -1
  195. package/build/components/post-format/panel.js +93 -0
  196. package/build/components/post-format/panel.js.map +1 -0
  197. package/build/components/post-last-edited-panel/index.js +7 -4
  198. package/build/components/post-last-edited-panel/index.js.map +1 -1
  199. package/build/components/post-last-revision/check.js +13 -5
  200. package/build/components/post-last-revision/check.js.map +1 -1
  201. package/build/components/post-last-revision/index.js +19 -13
  202. package/build/components/post-last-revision/index.js.map +1 -1
  203. package/build/components/post-last-revision/panel.js +12 -5
  204. package/build/components/post-last-revision/panel.js.map +1 -1
  205. package/build/components/post-locked-modal/index.js +57 -35
  206. package/build/components/post-locked-modal/index.js.map +1 -1
  207. package/build/components/post-panel-row/index.js +13 -10
  208. package/build/components/post-panel-row/index.js.map +1 -1
  209. package/build/components/post-panel-section/index.js +29 -0
  210. package/build/components/post-panel-section/index.js.map +1 -0
  211. package/build/components/post-pending-status/check.js +10 -0
  212. package/build/components/post-pending-status/check.js.map +1 -1
  213. package/build/components/post-pending-status/index.js +14 -7
  214. package/build/components/post-pending-status/index.js.map +1 -1
  215. package/build/components/post-pingbacks/index.js +15 -4
  216. package/build/components/post-pingbacks/index.js.map +1 -1
  217. package/build/components/post-preview-button/index.js +45 -21
  218. package/build/components/post-preview-button/index.js.map +1 -1
  219. package/build/components/post-publish-button/index.js +21 -11
  220. package/build/components/post-publish-button/index.js.map +1 -1
  221. package/build/components/post-publish-button/post-publish-button-or-toggle.js +2 -2
  222. package/build/components/post-publish-button/post-publish-button-or-toggle.js.map +1 -1
  223. package/build/components/post-publish-panel/index.js +46 -33
  224. package/build/components/post-publish-panel/index.js.map +1 -1
  225. package/build/components/post-publish-panel/maybe-category-panel.js +12 -9
  226. package/build/components/post-publish-panel/maybe-category-panel.js.map +1 -1
  227. package/build/components/post-publish-panel/maybe-post-format-panel.js +21 -15
  228. package/build/components/post-publish-panel/maybe-post-format-panel.js.map +1 -1
  229. package/build/components/post-publish-panel/maybe-tags-panel.js +13 -10
  230. package/build/components/post-publish-panel/maybe-tags-panel.js.map +1 -1
  231. package/build/components/post-publish-panel/maybe-upload-media.js +29 -24
  232. package/build/components/post-publish-panel/maybe-upload-media.js.map +1 -1
  233. package/build/components/post-publish-panel/postpublish.js +55 -38
  234. package/build/components/post-publish-panel/postpublish.js.map +1 -1
  235. package/build/components/post-publish-panel/prepublish.js +41 -26
  236. package/build/components/post-publish-panel/prepublish.js.map +1 -1
  237. package/build/components/post-saved-state/index.js +10 -10
  238. package/build/components/post-saved-state/index.js.map +1 -1
  239. package/build/components/post-schedule/check.js +8 -0
  240. package/build/components/post-schedule/check.js.map +1 -1
  241. package/build/components/post-schedule/index.js +30 -5
  242. package/build/components/post-schedule/index.js.map +1 -1
  243. package/build/components/post-schedule/label.js +16 -0
  244. package/build/components/post-schedule/label.js.map +1 -1
  245. package/build/components/post-schedule/panel.js +43 -30
  246. package/build/components/post-schedule/panel.js.map +1 -1
  247. package/build/components/post-slug/check.js +5 -4
  248. package/build/components/post-slug/check.js.map +1 -1
  249. package/build/components/post-slug/index.js +5 -3
  250. package/build/components/post-slug/index.js.map +1 -1
  251. package/build/components/post-slug/panel.js +30 -0
  252. package/build/components/post-slug/panel.js.map +1 -0
  253. package/build/components/post-status/index.js +118 -119
  254. package/build/components/post-status/index.js.map +1 -1
  255. package/build/components/post-sticky/index.js +16 -8
  256. package/build/components/post-sticky/index.js.map +1 -1
  257. package/build/components/post-sticky/panel.js +25 -0
  258. package/build/components/post-sticky/panel.js.map +1 -0
  259. package/build/components/post-switch-to-draft-button/index.js +25 -21
  260. package/build/components/post-switch-to-draft-button/index.js.map +1 -1
  261. package/build/components/post-sync-status/index.js +8 -6
  262. package/build/components/post-sync-status/index.js.map +1 -1
  263. package/build/components/post-taxonomies/flat-term-selector.js +21 -20
  264. package/build/components/post-taxonomies/flat-term-selector.js.map +1 -1
  265. package/build/components/post-taxonomies/hierarchical-term-selector.js +71 -61
  266. package/build/components/post-taxonomies/hierarchical-term-selector.js.map +1 -1
  267. package/build/components/post-taxonomies/index.js +6 -6
  268. package/build/components/post-taxonomies/index.js.map +1 -1
  269. package/build/components/post-taxonomies/most-used-terms.js +19 -15
  270. package/build/components/post-taxonomies/most-used-terms.js.map +1 -1
  271. package/build/components/post-taxonomies/panel.js +15 -11
  272. package/build/components/post-taxonomies/panel.js.map +1 -1
  273. package/build/components/post-template/block-theme.js +42 -32
  274. package/build/components/post-template/block-theme.js.map +1 -1
  275. package/build/components/post-template/classic-theme.js +73 -50
  276. package/build/components/post-template/classic-theme.js.map +1 -1
  277. package/build/components/post-template/create-new-template-modal.js +33 -27
  278. package/build/components/post-template/create-new-template-modal.js.map +1 -1
  279. package/build/components/post-template/create-new-template.js +14 -11
  280. package/build/components/post-template/create-new-template.js.map +1 -1
  281. package/build/components/post-template/panel.js +16 -10
  282. package/build/components/post-template/panel.js.map +1 -1
  283. package/build/components/post-template/reset-default-template.js +5 -4
  284. package/build/components/post-template/reset-default-template.js.map +1 -1
  285. package/build/components/post-template/swap-template-button.js +20 -15
  286. package/build/components/post-template/swap-template-button.js.map +1 -1
  287. package/build/components/post-text-editor/index.js +27 -20
  288. package/build/components/post-text-editor/index.js.map +1 -1
  289. package/build/components/post-title/index.js +31 -19
  290. package/build/components/post-title/index.js.map +1 -1
  291. package/build/components/post-title/index.native.js +81 -57
  292. package/build/components/post-title/index.native.js.map +1 -1
  293. package/build/components/post-title/post-title-raw.js +12 -5
  294. package/build/components/post-title/post-title-raw.js.map +1 -1
  295. package/build/components/post-title/use-post-title-focus.js +7 -0
  296. package/build/components/post-title/use-post-title-focus.js.map +1 -1
  297. package/build/components/post-title/use-post-title.js +5 -0
  298. package/build/components/post-title/use-post-title.js.map +1 -1
  299. package/build/components/post-transform-panel/hooks.js +90 -0
  300. package/build/components/post-transform-panel/hooks.js.map +1 -0
  301. package/build/components/post-transform-panel/index.js +101 -0
  302. package/build/components/post-transform-panel/index.js.map +1 -0
  303. package/build/components/post-trash/index.js +19 -15
  304. package/build/components/post-trash/index.js.map +1 -1
  305. package/build/components/post-type-support-check/index.js +1 -1
  306. package/build/components/post-type-support-check/index.js.map +1 -1
  307. package/build/components/post-url/check.js +8 -0
  308. package/build/components/post-url/check.js.map +1 -1
  309. package/build/components/post-url/index.js +98 -73
  310. package/build/components/post-url/index.js.map +1 -1
  311. package/build/components/post-url/label.js +11 -0
  312. package/build/components/post-url/label.js.map +1 -1
  313. package/build/components/post-url/panel.js +33 -25
  314. package/build/components/post-url/panel.js.map +1 -1
  315. package/build/components/post-view-link/index.js +2 -2
  316. package/build/components/post-view-link/index.js.map +1 -1
  317. package/build/components/post-visibility/check.js +9 -0
  318. package/build/components/post-visibility/check.js.map +1 -1
  319. package/build/components/post-visibility/index.js +83 -68
  320. package/build/components/post-visibility/index.js.map +1 -1
  321. package/build/components/post-visibility/label.js +11 -0
  322. package/build/components/post-visibility/label.js.map +1 -1
  323. package/build/components/posts-per-page/index.js +109 -0
  324. package/build/components/posts-per-page/index.js.map +1 -0
  325. package/build/components/preferences-modal/enable-plugin-document-setting-panel.js +7 -5
  326. package/build/components/preferences-modal/enable-plugin-document-setting-panel.js.map +1 -1
  327. package/build/components/preferences-modal/index.js +124 -102
  328. package/build/components/preferences-modal/index.js.map +1 -1
  329. package/build/components/preview-dropdown/index.js +47 -31
  330. package/build/components/preview-dropdown/index.js.map +1 -1
  331. package/build/components/provider/index.js +96 -20
  332. package/build/components/provider/index.js.map +1 -1
  333. package/build/components/provider/index.native.js +55 -19
  334. package/build/components/provider/index.native.js.map +1 -1
  335. package/build/components/provider/use-block-editor-settings.js +23 -4
  336. package/build/components/provider/use-block-editor-settings.js.map +1 -1
  337. package/build/components/provider/with-registry-provider.js +31 -24
  338. package/build/components/provider/with-registry-provider.js.map +1 -1
  339. package/build/components/resizable-editor/index.js +96 -0
  340. package/build/components/resizable-editor/index.js.map +1 -0
  341. package/build/components/resizable-editor/resize-handle.js +59 -0
  342. package/build/components/resizable-editor/resize-handle.js.map +1 -0
  343. package/build/components/save-publish-panels/index.js +35 -26
  344. package/build/components/save-publish-panels/index.js.map +1 -1
  345. package/build/components/sidebar/constants.js +11 -0
  346. package/build/components/sidebar/constants.js.map +1 -0
  347. package/build/components/sidebar/header.js +56 -0
  348. package/build/components/sidebar/header.js.map +1 -0
  349. package/build/components/sidebar/index.js +161 -0
  350. package/build/components/sidebar/index.js.map +1 -0
  351. package/build/components/sidebar/post-summary.js +89 -0
  352. package/build/components/sidebar/post-summary.js.map +1 -0
  353. package/build/components/site-discussion/index.js +133 -0
  354. package/build/components/site-discussion/index.js.map +1 -0
  355. package/build/components/start-page-options/index.js +18 -18
  356. package/build/components/start-page-options/index.js.map +1 -1
  357. package/build/components/start-template-options/index.js +198 -0
  358. package/build/components/start-template-options/index.js.map +1 -0
  359. package/build/components/table-of-contents/index.js +4 -4
  360. package/build/components/table-of-contents/index.js.map +1 -1
  361. package/build/components/table-of-contents/panel.js +53 -35
  362. package/build/components/table-of-contents/panel.js.map +1 -1
  363. package/build/components/template-areas/index.js +36 -22
  364. package/build/components/template-areas/index.js.map +1 -1
  365. package/build/components/template-content-panel/index.js +39 -0
  366. package/build/components/template-content-panel/index.js.map +1 -0
  367. package/build/components/template-validation-notice/index.js +25 -21
  368. package/build/components/template-validation-notice/index.js.map +1 -1
  369. package/build/components/text-editor/index.js +73 -0
  370. package/build/components/text-editor/index.js.map +1 -0
  371. package/build/components/time-to-read/index.js +8 -8
  372. package/build/components/time-to-read/index.js.map +1 -1
  373. package/build/components/{editor-canvas → visual-editor}/edit-template-blocks-notification.js +6 -6
  374. package/build/components/visual-editor/edit-template-blocks-notification.js.map +1 -0
  375. package/build/components/{editor-canvas → visual-editor}/index.js +130 -78
  376. package/build/components/visual-editor/index.js.map +1 -0
  377. package/build/components/word-count/index.js +5 -4
  378. package/build/components/word-count/index.js.map +1 -1
  379. package/build/hooks/custom-sources-backwards-compatibility.js +3 -4
  380. package/build/hooks/custom-sources-backwards-compatibility.js.map +1 -1
  381. package/build/hooks/index.js +1 -0
  382. package/build/hooks/index.js.map +1 -1
  383. package/build/hooks/media-upload.js +10 -0
  384. package/build/hooks/media-upload.js.map +1 -0
  385. package/build/hooks/pattern-overrides.js +25 -16
  386. package/build/hooks/pattern-overrides.js.map +1 -1
  387. package/build/private-apis.js +15 -38
  388. package/build/private-apis.js.map +1 -1
  389. package/build/private-apis.native.js +48 -0
  390. package/build/private-apis.native.js.map +1 -0
  391. package/build/store/constants.js +4 -1
  392. package/build/store/constants.js.map +1 -1
  393. package/build/store/private-actions.js +10 -14
  394. package/build/store/private-actions.js.map +1 -1
  395. package/build/store/private-selectors.js +45 -2
  396. package/build/store/private-selectors.js.map +1 -1
  397. package/build/store/reducer.js +15 -0
  398. package/build/store/reducer.js.map +1 -1
  399. package/build/store/selectors.js +1 -1
  400. package/build/store/selectors.js.map +1 -1
  401. package/build/utils/set-nested-value.js +44 -0
  402. package/build/utils/set-nested-value.js.map +1 -0
  403. package/build-module/bindings/index.js +1 -3
  404. package/build-module/bindings/index.js.map +1 -1
  405. package/build-module/bindings/pattern-overrides.js +70 -2
  406. package/build-module/bindings/pattern-overrides.js.map +1 -1
  407. package/build-module/bindings/post-meta.js +38 -2
  408. package/build-module/bindings/post-meta.js.map +1 -1
  409. package/build-module/components/autocompleters/user.js +14 -9
  410. package/build-module/components/autocompleters/user.js.map +1 -1
  411. package/build-module/components/block-manager/category.js +20 -17
  412. package/build-module/components/block-manager/category.js.map +1 -1
  413. package/build-module/components/block-manager/checklist.js +16 -14
  414. package/build-module/components/block-manager/checklist.js.map +1 -1
  415. package/build-module/components/block-manager/index.js +38 -33
  416. package/build-module/components/block-manager/index.js.map +1 -1
  417. package/build-module/components/block-removal-warnings/index.js +2 -2
  418. package/build-module/components/block-removal-warnings/index.js.map +1 -1
  419. package/build-module/components/block-settings-menu/content-only-settings-menu.js +135 -0
  420. package/build-module/components/block-settings-menu/content-only-settings-menu.js.map +1 -0
  421. package/build-module/components/block-settings-menu/content-only-settings-menu.native.js +5 -0
  422. package/build-module/components/block-settings-menu/content-only-settings-menu.native.js.map +1 -0
  423. package/build-module/components/block-settings-menu/plugin-block-settings-menu-item.js +16 -13
  424. package/build-module/components/block-settings-menu/plugin-block-settings-menu-item.js.map +1 -1
  425. package/build-module/components/blog-title/index.js +110 -0
  426. package/build-module/components/blog-title/index.js.map +1 -0
  427. package/build-module/components/collapsible-block-toolbar/index.js +24 -19
  428. package/build-module/components/collapsible-block-toolbar/index.js.map +1 -1
  429. package/build-module/components/commands/index.js +111 -5
  430. package/build-module/components/commands/index.js.map +1 -1
  431. package/build-module/components/create-template-part-modal/index.js +160 -0
  432. package/build-module/components/create-template-part-modal/index.js.map +1 -0
  433. package/build-module/components/create-template-part-modal/utils.js +54 -0
  434. package/build-module/components/create-template-part-modal/utils.js.map +1 -0
  435. package/build-module/components/deprecated.js +2 -2
  436. package/build-module/components/deprecated.js.map +1 -1
  437. package/build-module/components/document-bar/index.js +95 -70
  438. package/build-module/components/document-bar/index.js.map +1 -1
  439. package/build-module/components/document-outline/index.js +125 -120
  440. package/build-module/components/document-outline/index.js.map +1 -1
  441. package/build-module/components/document-outline/item.js +21 -16
  442. package/build-module/components/document-outline/item.js.map +1 -1
  443. package/build-module/components/document-tools/index.js +72 -70
  444. package/build-module/components/document-tools/index.js.map +1 -1
  445. package/build-module/components/editor-help/add-blocks.native.js +16 -11
  446. package/build-module/components/editor-help/add-blocks.native.js.map +1 -1
  447. package/build-module/components/editor-help/customize-blocks.native.js +16 -11
  448. package/build-module/components/editor-help/customize-blocks.native.js.map +1 -1
  449. package/build-module/components/editor-help/help-detail-navigation-screen.native.js +33 -22
  450. package/build-module/components/editor-help/help-detail-navigation-screen.native.js.map +1 -1
  451. package/build-module/components/editor-help/help-get-support-button.native.js +8 -6
  452. package/build-module/components/editor-help/help-get-support-button.native.js.map +1 -1
  453. package/build-module/components/editor-help/help-section-title.native.js +8 -6
  454. package/build-module/components/editor-help/help-section-title.native.js.map +1 -1
  455. package/build-module/components/editor-help/help-topic-row.native.js +7 -6
  456. package/build-module/components/editor-help/help-topic-row.native.js.map +1 -1
  457. package/build-module/components/editor-help/icon-move-blocks.native.js +7 -6
  458. package/build-module/components/editor-help/icon-move-blocks.native.js.map +1 -1
  459. package/build-module/components/editor-help/index.native.js +96 -76
  460. package/build-module/components/editor-help/index.native.js.map +1 -1
  461. package/build-module/components/editor-help/intro-to-blocks.native.js +43 -37
  462. package/build-module/components/editor-help/intro-to-blocks.native.js.map +1 -1
  463. package/build-module/components/editor-help/move-blocks.native.js +27 -21
  464. package/build-module/components/editor-help/move-blocks.native.js.map +1 -1
  465. package/build-module/components/editor-help/remove-blocks.native.js +14 -9
  466. package/build-module/components/editor-help/remove-blocks.native.js.map +1 -1
  467. package/build-module/components/editor-help/view-sections.native.js +25 -19
  468. package/build-module/components/editor-help/view-sections.native.js.map +1 -1
  469. package/build-module/components/editor-history/redo.js +2 -2
  470. package/build-module/components/editor-history/redo.js.map +1 -1
  471. package/build-module/components/editor-history/undo.js +2 -2
  472. package/build-module/components/editor-history/undo.js.map +1 -1
  473. package/build-module/components/editor-interface/content-slot-fill.js +16 -0
  474. package/build-module/components/editor-interface/content-slot-fill.js.map +1 -0
  475. package/build-module/components/editor-interface/index.js +172 -0
  476. package/build-module/components/editor-interface/index.js.map +1 -0
  477. package/build-module/components/editor-notices/index.js +25 -9
  478. package/build-module/components/editor-notices/index.js.map +1 -1
  479. package/build-module/components/editor-snackbars/index.js +2 -2
  480. package/build-module/components/editor-snackbars/index.js.map +1 -1
  481. package/build-module/components/entities-saved-states/entity-record-item.js +40 -11
  482. package/build-module/components/entities-saved-states/entity-record-item.js.map +1 -1
  483. package/build-module/components/entities-saved-states/entity-type-list.js +26 -22
  484. package/build-module/components/entities-saved-states/entity-type-list.js.map +1 -1
  485. package/build-module/components/entities-saved-states/index.js +54 -46
  486. package/build-module/components/entities-saved-states/index.js.map +1 -1
  487. package/build-module/components/error-boundary/index.js +27 -14
  488. package/build-module/components/error-boundary/index.js.map +1 -1
  489. package/build-module/components/error-boundary/index.native.js +46 -35
  490. package/build-module/components/error-boundary/index.native.js.map +1 -1
  491. package/build-module/components/global-keyboard-shortcuts/register-shortcuts.js +3 -3
  492. package/build-module/components/global-keyboard-shortcuts/register-shortcuts.js.map +1 -1
  493. package/build-module/components/global-styles-provider/index.js +185 -0
  494. package/build-module/components/global-styles-provider/index.js.map +1 -0
  495. package/build-module/components/header/back-button.js +28 -0
  496. package/build-module/components/header/back-button.js.map +1 -0
  497. package/build-module/components/header/index.js +169 -0
  498. package/build-module/components/header/index.js.map +1 -0
  499. package/build-module/components/inserter-sidebar/index.js +85 -34
  500. package/build-module/components/inserter-sidebar/index.js.map +1 -1
  501. package/build-module/components/keyboard-shortcut-help-modal/dynamic-shortcut.js +2 -2
  502. package/build-module/components/keyboard-shortcut-help-modal/dynamic-shortcut.js.map +1 -1
  503. package/build-module/components/keyboard-shortcut-help-modal/index.js +55 -49
  504. package/build-module/components/keyboard-shortcut-help-modal/index.js.map +1 -1
  505. package/build-module/components/keyboard-shortcut-help-modal/shortcut.js +32 -26
  506. package/build-module/components/keyboard-shortcut-help-modal/shortcut.js.map +1 -1
  507. package/build-module/components/list-view-sidebar/index.js +60 -47
  508. package/build-module/components/list-view-sidebar/index.js.map +1 -1
  509. package/build-module/components/list-view-sidebar/list-view-outline.js +23 -4
  510. package/build-module/components/list-view-sidebar/list-view-outline.js.map +1 -1
  511. package/build-module/components/local-autosave-monitor/index.js +15 -2
  512. package/build-module/components/local-autosave-monitor/index.js.map +1 -1
  513. package/build-module/components/mode-switcher/index.js +9 -8
  514. package/build-module/components/mode-switcher/index.js.map +1 -1
  515. package/build-module/components/more-menu/copy-content-menu-item.js +5 -4
  516. package/build-module/components/more-menu/copy-content-menu-item.js.map +1 -1
  517. package/build-module/components/more-menu/index.js +91 -76
  518. package/build-module/components/more-menu/index.js.map +1 -1
  519. package/build-module/components/more-menu/tools-more-menu-group.js +2 -2
  520. package/build-module/components/more-menu/tools-more-menu-group.js.map +1 -1
  521. package/build-module/components/more-menu/view-more-menu-group.js +2 -2
  522. package/build-module/components/more-menu/view-more-menu-group.js.map +1 -1
  523. package/build-module/components/offline-status/index.native.js +12 -9
  524. package/build-module/components/offline-status/index.native.js.map +1 -1
  525. package/build-module/components/page-attributes/order.js +90 -17
  526. package/build-module/components/page-attributes/order.js.map +1 -1
  527. package/build-module/components/page-attributes/panel.js +13 -21
  528. package/build-module/components/page-attributes/panel.js.map +1 -1
  529. package/build-module/components/page-attributes/parent.js +88 -5
  530. package/build-module/components/page-attributes/parent.js.map +1 -1
  531. package/build-module/components/pattern-duplicate-modal/index.js +51 -0
  532. package/build-module/components/pattern-duplicate-modal/index.js.map +1 -0
  533. package/build-module/components/pattern-overrides-panel/index.js +2 -2
  534. package/build-module/components/pattern-overrides-panel/index.js.map +1 -1
  535. package/build-module/components/pattern-rename-modal/index.js +50 -0
  536. package/build-module/components/pattern-rename-modal/index.js.map +1 -0
  537. package/build-module/components/plugin-document-setting-panel/index.js +19 -12
  538. package/build-module/components/plugin-document-setting-panel/index.js.map +1 -1
  539. package/build-module/components/plugin-post-publish-panel/index.js +10 -7
  540. package/build-module/components/plugin-post-publish-panel/index.js.map +1 -1
  541. package/build-module/components/plugin-post-status-info/index.js +7 -4
  542. package/build-module/components/plugin-post-status-info/index.js.map +1 -1
  543. package/build-module/components/plugin-pre-publish-panel/index.js +10 -7
  544. package/build-module/components/plugin-pre-publish-panel/index.js.map +1 -1
  545. package/build-module/components/plugin-sidebar/index.js +2 -2
  546. package/build-module/components/plugin-sidebar/index.js.map +1 -1
  547. package/build-module/components/plugin-sidebar-more-menu-item/index.js +2 -3
  548. package/build-module/components/plugin-sidebar-more-menu-item/index.js.map +1 -1
  549. package/build-module/components/post-actions/actions.js +458 -329
  550. package/build-module/components/post-actions/actions.js.map +1 -1
  551. package/build-module/components/post-actions/export-pattern-action.js +58 -0
  552. package/build-module/components/post-actions/export-pattern-action.js.map +1 -0
  553. package/build-module/components/post-actions/export-pattern-action.native.js +5 -0
  554. package/build-module/components/post-actions/export-pattern-action.native.js.map +1 -0
  555. package/build-module/components/post-actions/index.js +73 -62
  556. package/build-module/components/post-actions/index.js.map +1 -1
  557. package/build-module/components/post-author/check.js +5 -4
  558. package/build-module/components/post-author/check.js.map +1 -1
  559. package/build-module/components/post-author/combobox.js +4 -3
  560. package/build-module/components/post-author/combobox.js.map +1 -1
  561. package/build-module/components/post-author/hook.js +2 -1
  562. package/build-module/components/post-author/hook.js.map +1 -1
  563. package/build-module/components/post-author/index.js +3 -3
  564. package/build-module/components/post-author/index.js.map +1 -1
  565. package/build-module/components/post-author/panel.js +72 -4
  566. package/build-module/components/post-author/panel.js.map +1 -1
  567. package/build-module/components/post-author/select.js +4 -3
  568. package/build-module/components/post-author/select.js.map +1 -1
  569. package/build-module/components/post-card-panel/index.js +49 -38
  570. package/build-module/components/post-card-panel/index.js.map +1 -1
  571. package/build-module/components/post-comments/index.js +47 -9
  572. package/build-module/components/post-comments/index.js.map +1 -1
  573. package/build-module/components/post-content-information/index.js +8 -5
  574. package/build-module/components/post-content-information/index.js.map +1 -1
  575. package/build-module/components/post-discussion/panel.js +125 -26
  576. package/build-module/components/post-discussion/panel.js.map +1 -1
  577. package/build-module/components/post-excerpt/check.js +5 -4
  578. package/build-module/components/post-excerpt/check.js.map +1 -1
  579. package/build-module/components/post-excerpt/index.js +17 -15
  580. package/build-module/components/post-excerpt/index.js.map +1 -1
  581. package/build-module/components/post-excerpt/panel.js +60 -40
  582. package/build-module/components/post-excerpt/panel.js.map +1 -1
  583. package/build-module/components/post-excerpt/plugin.js +7 -4
  584. package/build-module/components/post-excerpt/plugin.js.map +1 -1
  585. package/build-module/components/post-featured-image/check.js +18 -6
  586. package/build-module/components/post-featured-image/check.js.map +1 -1
  587. package/build-module/components/post-featured-image/index.js +78 -49
  588. package/build-module/components/post-featured-image/index.js.map +1 -1
  589. package/build-module/components/post-featured-image/panel.js +22 -7
  590. package/build-module/components/post-featured-image/panel.js.map +1 -1
  591. package/build-module/components/post-format/check.js +14 -4
  592. package/build-module/components/post-format/check.js.map +1 -1
  593. package/build-module/components/post-format/index.js +39 -21
  594. package/build-module/components/post-format/index.js.map +1 -1
  595. package/build-module/components/post-format/panel.js +86 -0
  596. package/build-module/components/post-format/panel.js.map +1 -0
  597. package/build-module/components/post-last-edited-panel/index.js +7 -4
  598. package/build-module/components/post-last-edited-panel/index.js.map +1 -1
  599. package/build-module/components/post-last-revision/check.js +14 -4
  600. package/build-module/components/post-last-revision/check.js.map +1 -1
  601. package/build-module/components/post-last-revision/index.js +21 -13
  602. package/build-module/components/post-last-revision/index.js.map +1 -1
  603. package/build-module/components/post-last-revision/panel.js +13 -4
  604. package/build-module/components/post-last-revision/panel.js.map +1 -1
  605. package/build-module/components/post-locked-modal/index.js +60 -34
  606. package/build-module/components/post-locked-modal/index.js.map +1 -1
  607. package/build-module/components/post-panel-row/index.js +14 -10
  608. package/build-module/components/post-panel-row/index.js.map +1 -1
  609. package/build-module/components/post-panel-section/index.js +21 -0
  610. package/build-module/components/post-panel-section/index.js.map +1 -0
  611. package/build-module/components/post-pending-status/check.js +11 -0
  612. package/build-module/components/post-pending-status/check.js.map +1 -1
  613. package/build-module/components/post-pending-status/index.js +15 -7
  614. package/build-module/components/post-pending-status/index.js.map +1 -1
  615. package/build-module/components/post-pingbacks/index.js +16 -5
  616. package/build-module/components/post-pingbacks/index.js.map +1 -1
  617. package/build-module/components/post-preview-button/index.js +47 -21
  618. package/build-module/components/post-preview-button/index.js.map +1 -1
  619. package/build-module/components/post-publish-button/index.js +22 -11
  620. package/build-module/components/post-publish-button/index.js.map +1 -1
  621. package/build-module/components/post-publish-button/post-publish-button-or-toggle.js +2 -2
  622. package/build-module/components/post-publish-button/post-publish-button-or-toggle.js.map +1 -1
  623. package/build-module/components/post-publish-panel/index.js +48 -33
  624. package/build-module/components/post-publish-panel/index.js.map +1 -1
  625. package/build-module/components/post-publish-panel/maybe-category-panel.js +13 -9
  626. package/build-module/components/post-publish-panel/maybe-category-panel.js.map +1 -1
  627. package/build-module/components/post-publish-panel/maybe-post-format-panel.js +22 -15
  628. package/build-module/components/post-publish-panel/maybe-post-format-panel.js.map +1 -1
  629. package/build-module/components/post-publish-panel/maybe-tags-panel.js +14 -10
  630. package/build-module/components/post-publish-panel/maybe-tags-panel.js.map +1 -1
  631. package/build-module/components/post-publish-panel/maybe-upload-media.js +30 -24
  632. package/build-module/components/post-publish-panel/maybe-upload-media.js.map +1 -1
  633. package/build-module/components/post-publish-panel/postpublish.js +57 -38
  634. package/build-module/components/post-publish-panel/postpublish.js.map +1 -1
  635. package/build-module/components/post-publish-panel/prepublish.js +43 -26
  636. package/build-module/components/post-publish-panel/prepublish.js.map +1 -1
  637. package/build-module/components/post-saved-state/index.js +10 -8
  638. package/build-module/components/post-saved-state/index.js.map +1 -1
  639. package/build-module/components/post-schedule/check.js +9 -0
  640. package/build-module/components/post-schedule/check.js.map +1 -1
  641. package/build-module/components/post-schedule/index.js +30 -6
  642. package/build-module/components/post-schedule/index.js.map +1 -1
  643. package/build-module/components/post-schedule/label.js +17 -0
  644. package/build-module/components/post-schedule/label.js.map +1 -1
  645. package/build-module/components/post-schedule/panel.js +43 -30
  646. package/build-module/components/post-schedule/panel.js.map +1 -1
  647. package/build-module/components/post-slug/check.js +5 -4
  648. package/build-module/components/post-slug/check.js.map +1 -1
  649. package/build-module/components/post-slug/index.js +5 -3
  650. package/build-module/components/post-slug/index.js.map +1 -1
  651. package/build-module/components/post-slug/panel.js +21 -0
  652. package/build-module/components/post-slug/panel.js.map +1 -0
  653. package/build-module/components/post-status/index.js +121 -120
  654. package/build-module/components/post-status/index.js.map +1 -1
  655. package/build-module/components/post-sticky/index.js +17 -9
  656. package/build-module/components/post-sticky/index.js.map +1 -1
  657. package/build-module/components/post-sticky/panel.js +16 -0
  658. package/build-module/components/post-sticky/panel.js.map +1 -0
  659. package/build-module/components/post-switch-to-draft-button/index.js +27 -21
  660. package/build-module/components/post-switch-to-draft-button/index.js.map +1 -1
  661. package/build-module/components/post-sync-status/index.js +8 -6
  662. package/build-module/components/post-sync-status/index.js.map +1 -1
  663. package/build-module/components/post-taxonomies/flat-term-selector.js +22 -18
  664. package/build-module/components/post-taxonomies/flat-term-selector.js.map +1 -1
  665. package/build-module/components/post-taxonomies/hierarchical-term-selector.js +71 -59
  666. package/build-module/components/post-taxonomies/hierarchical-term-selector.js.map +1 -1
  667. package/build-module/components/post-taxonomies/index.js +6 -6
  668. package/build-module/components/post-taxonomies/index.js.map +1 -1
  669. package/build-module/components/post-taxonomies/most-used-terms.js +20 -15
  670. package/build-module/components/post-taxonomies/most-used-terms.js.map +1 -1
  671. package/build-module/components/post-taxonomies/panel.js +15 -11
  672. package/build-module/components/post-taxonomies/panel.js.map +1 -1
  673. package/build-module/components/post-template/block-theme.js +44 -32
  674. package/build-module/components/post-template/block-theme.js.map +1 -1
  675. package/build-module/components/post-template/classic-theme.js +74 -50
  676. package/build-module/components/post-template/classic-theme.js.map +1 -1
  677. package/build-module/components/post-template/create-new-template-modal.js +34 -27
  678. package/build-module/components/post-template/create-new-template-modal.js.map +1 -1
  679. package/build-module/components/post-template/create-new-template.js +16 -11
  680. package/build-module/components/post-template/create-new-template.js.map +1 -1
  681. package/build-module/components/post-template/panel.js +17 -9
  682. package/build-module/components/post-template/panel.js.map +1 -1
  683. package/build-module/components/post-template/reset-default-template.js +5 -4
  684. package/build-module/components/post-template/reset-default-template.js.map +1 -1
  685. package/build-module/components/post-template/swap-template-button.js +22 -15
  686. package/build-module/components/post-template/swap-template-button.js.map +1 -1
  687. package/build-module/components/post-text-editor/index.js +30 -19
  688. package/build-module/components/post-text-editor/index.js.map +1 -1
  689. package/build-module/components/post-title/index.js +31 -20
  690. package/build-module/components/post-title/index.js.map +1 -1
  691. package/build-module/components/post-title/index.native.js +81 -57
  692. package/build-module/components/post-title/index.native.js.map +1 -1
  693. package/build-module/components/post-title/post-title-raw.js +13 -4
  694. package/build-module/components/post-title/post-title-raw.js.map +1 -1
  695. package/build-module/components/post-title/use-post-title-focus.js +8 -0
  696. package/build-module/components/post-title/use-post-title-focus.js.map +1 -1
  697. package/build-module/components/post-title/use-post-title.js +6 -0
  698. package/build-module/components/post-title/use-post-title.js.map +1 -1
  699. package/build-module/components/post-transform-panel/hooks.js +83 -0
  700. package/build-module/components/post-transform-panel/hooks.js.map +1 -0
  701. package/build-module/components/post-transform-panel/index.js +94 -0
  702. package/build-module/components/post-transform-panel/index.js.map +1 -0
  703. package/build-module/components/post-trash/index.js +21 -15
  704. package/build-module/components/post-trash/index.js.map +1 -1
  705. package/build-module/components/post-type-support-check/index.js +1 -1
  706. package/build-module/components/post-type-support-check/index.js.map +1 -1
  707. package/build-module/components/post-url/check.js +9 -0
  708. package/build-module/components/post-url/check.js.map +1 -1
  709. package/build-module/components/post-url/index.js +100 -72
  710. package/build-module/components/post-url/index.js.map +1 -1
  711. package/build-module/components/post-url/label.js +12 -0
  712. package/build-module/components/post-url/label.js.map +1 -1
  713. package/build-module/components/post-url/panel.js +35 -24
  714. package/build-module/components/post-url/panel.js.map +1 -1
  715. package/build-module/components/post-view-link/index.js +2 -2
  716. package/build-module/components/post-view-link/index.js.map +1 -1
  717. package/build-module/components/post-visibility/check.js +10 -0
  718. package/build-module/components/post-visibility/check.js.map +1 -1
  719. package/build-module/components/post-visibility/index.js +85 -67
  720. package/build-module/components/post-visibility/index.js.map +1 -1
  721. package/build-module/components/post-visibility/label.js +12 -0
  722. package/build-module/components/post-visibility/label.js.map +1 -1
  723. package/build-module/components/posts-per-page/index.js +103 -0
  724. package/build-module/components/posts-per-page/index.js.map +1 -0
  725. package/build-module/components/preferences-modal/enable-plugin-document-setting-panel.js +7 -5
  726. package/build-module/components/preferences-modal/enable-plugin-document-setting-panel.js.map +1 -1
  727. package/build-module/components/preferences-modal/index.js +126 -102
  728. package/build-module/components/preferences-modal/index.js.map +1 -1
  729. package/build-module/components/preview-dropdown/index.js +49 -31
  730. package/build-module/components/preview-dropdown/index.js.map +1 -1
  731. package/build-module/components/provider/index.js +98 -20
  732. package/build-module/components/provider/index.js.map +1 -1
  733. package/build-module/components/provider/index.native.js +58 -20
  734. package/build-module/components/provider/index.native.js.map +1 -1
  735. package/build-module/components/provider/use-block-editor-settings.js +23 -4
  736. package/build-module/components/provider/use-block-editor-settings.js.map +1 -1
  737. package/build-module/components/provider/with-registry-provider.js +33 -26
  738. package/build-module/components/provider/with-registry-provider.js.map +1 -1
  739. package/build-module/components/resizable-editor/index.js +89 -0
  740. package/build-module/components/resizable-editor/index.js.map +1 -0
  741. package/build-module/components/resizable-editor/resize-handle.js +54 -0
  742. package/build-module/components/resizable-editor/resize-handle.js.map +1 -0
  743. package/build-module/components/save-publish-panels/index.js +37 -26
  744. package/build-module/components/save-publish-panels/index.js.map +1 -1
  745. package/build-module/components/sidebar/constants.js +5 -0
  746. package/build-module/components/sidebar/constants.js.map +1 -0
  747. package/build-module/components/sidebar/header.js +50 -0
  748. package/build-module/components/sidebar/header.js.map +1 -0
  749. package/build-module/components/sidebar/index.js +154 -0
  750. package/build-module/components/sidebar/index.js.map +1 -0
  751. package/build-module/components/sidebar/post-summary.js +85 -0
  752. package/build-module/components/sidebar/post-summary.js.map +1 -0
  753. package/build-module/components/site-discussion/index.js +127 -0
  754. package/build-module/components/site-discussion/index.js.map +1 -0
  755. package/build-module/components/start-page-options/index.js +18 -18
  756. package/build-module/components/start-page-options/index.js.map +1 -1
  757. package/build-module/components/start-template-options/index.js +192 -0
  758. package/build-module/components/start-template-options/index.js.map +1 -0
  759. package/build-module/components/table-of-contents/index.js +4 -4
  760. package/build-module/components/table-of-contents/index.js.map +1 -1
  761. package/build-module/components/table-of-contents/panel.js +55 -35
  762. package/build-module/components/table-of-contents/panel.js.map +1 -1
  763. package/build-module/components/template-areas/index.js +37 -22
  764. package/build-module/components/template-areas/index.js.map +1 -1
  765. package/build-module/components/template-content-panel/index.js +32 -0
  766. package/build-module/components/template-content-panel/index.js.map +1 -0
  767. package/build-module/components/template-validation-notice/index.js +27 -21
  768. package/build-module/components/template-validation-notice/index.js.map +1 -1
  769. package/build-module/components/text-editor/index.js +66 -0
  770. package/build-module/components/text-editor/index.js.map +1 -0
  771. package/build-module/components/time-to-read/index.js +7 -6
  772. package/build-module/components/time-to-read/index.js.map +1 -1
  773. package/build-module/components/{editor-canvas → visual-editor}/edit-template-blocks-notification.js +5 -4
  774. package/build-module/components/visual-editor/edit-template-blocks-notification.js.map +1 -0
  775. package/build-module/components/{editor-canvas → visual-editor}/index.js +133 -79
  776. package/build-module/components/visual-editor/index.js.map +1 -0
  777. package/build-module/components/word-count/index.js +5 -4
  778. package/build-module/components/word-count/index.js.map +1 -1
  779. package/build-module/hooks/custom-sources-backwards-compatibility.js +2 -2
  780. package/build-module/hooks/custom-sources-backwards-compatibility.js.map +1 -1
  781. package/build-module/hooks/index.js +1 -0
  782. package/build-module/hooks/index.js.map +1 -1
  783. package/build-module/hooks/media-upload.js +7 -0
  784. package/build-module/hooks/media-upload.js.map +1 -0
  785. package/build-module/hooks/pattern-overrides.js +27 -16
  786. package/build-module/hooks/pattern-overrides.js.map +1 -1
  787. package/build-module/private-apis.js +15 -38
  788. package/build-module/private-apis.js.map +1 -1
  789. package/build-module/private-apis.native.js +38 -0
  790. package/build-module/private-apis.native.js.map +1 -0
  791. package/build-module/store/constants.js +3 -0
  792. package/build-module/store/constants.js.map +1 -1
  793. package/build-module/store/private-actions.js +10 -14
  794. package/build-module/store/private-actions.js.map +1 -1
  795. package/build-module/store/private-selectors.js +41 -1
  796. package/build-module/store/private-selectors.js.map +1 -1
  797. package/build-module/store/reducer.js +14 -0
  798. package/build-module/store/reducer.js.map +1 -1
  799. package/build-module/store/selectors.js +1 -1
  800. package/build-module/store/selectors.js.map +1 -1
  801. package/build-module/utils/set-nested-value.js +38 -0
  802. package/build-module/utils/set-nested-value.js.map +1 -0
  803. package/build-style/style-rtl.css +623 -85
  804. package/build-style/style.css +623 -85
  805. package/package.json +43 -37
  806. package/src/bindings/index.js +1 -4
  807. package/src/bindings/pattern-overrides.js +84 -2
  808. package/src/bindings/post-meta.js +46 -6
  809. package/src/components/autocompleters/style.scss +1 -2
  810. package/src/components/block-settings-menu/content-only-settings-menu.js +175 -0
  811. package/src/components/block-settings-menu/content-only-settings-menu.native.js +4 -0
  812. package/src/components/block-settings-menu/style.scss +4 -0
  813. package/src/components/blog-title/index.js +124 -0
  814. package/src/components/blog-title/style.scss +4 -0
  815. package/src/components/collapsible-block-toolbar/index.js +2 -2
  816. package/src/components/commands/index.js +113 -3
  817. package/src/components/create-template-part-modal/index.js +205 -0
  818. package/src/components/create-template-part-modal/style.scss +69 -0
  819. package/src/components/create-template-part-modal/test/utils.js +60 -0
  820. package/src/components/create-template-part-modal/utils.js +67 -0
  821. package/src/components/document-bar/index.js +34 -23
  822. package/src/components/document-outline/item.js +2 -2
  823. package/src/components/document-tools/index.js +21 -28
  824. package/src/components/editor-help/help-get-support-button.native.js +1 -1
  825. package/src/components/editor-interface/content-slot-fill.js +15 -0
  826. package/src/components/editor-interface/index.js +230 -0
  827. package/src/components/editor-notices/index.js +10 -0
  828. package/src/components/entities-saved-states/entity-record-item.js +45 -16
  829. package/src/components/entities-saved-states/style.scss +13 -0
  830. package/src/components/error-boundary/index.js +10 -0
  831. package/src/components/error-boundary/index.native.js +1 -1
  832. package/src/components/global-keyboard-shortcuts/register-shortcuts.js +1 -1
  833. package/src/components/global-styles-provider/index.js +254 -0
  834. package/src/components/header/back-button.js +27 -0
  835. package/src/components/header/index.js +169 -0
  836. package/src/components/header/style.scss +236 -0
  837. package/src/components/inserter-sidebar/index.js +92 -36
  838. package/src/components/inserter-sidebar/style.scss +1 -7
  839. package/src/components/keyboard-shortcut-help-modal/index.js +2 -2
  840. package/src/components/list-view-sidebar/style.scss +1 -0
  841. package/src/components/local-autosave-monitor/index.js +12 -0
  842. package/src/components/page-attributes/order.js +79 -3
  843. package/src/components/page-attributes/panel.js +10 -26
  844. package/src/components/page-attributes/parent.js +98 -2
  845. package/src/components/page-attributes/style.scss +19 -0
  846. package/src/components/page-attributes/test/order.js +5 -1
  847. package/src/components/pattern-duplicate-modal/index.js +50 -0
  848. package/src/components/pattern-rename-modal/index.js +44 -0
  849. package/src/components/post-actions/actions.js +522 -371
  850. package/src/components/post-actions/export-pattern-action.js +74 -0
  851. package/src/components/post-actions/export-pattern-action.native.js +4 -0
  852. package/src/components/post-actions/index.js +20 -42
  853. package/src/components/post-author/combobox.js +1 -0
  854. package/src/components/post-author/hook.js +1 -1
  855. package/src/components/post-author/panel.js +63 -2
  856. package/src/components/post-author/select.js +1 -0
  857. package/src/components/post-author/style.scss +6 -0
  858. package/src/components/post-card-panel/index.js +56 -55
  859. package/src/components/post-card-panel/style.scss +23 -1
  860. package/src/components/post-comments/index.js +52 -9
  861. package/src/components/post-discussion/panel.js +115 -31
  862. package/src/components/post-discussion/style.scss +24 -0
  863. package/src/components/post-excerpt/panel.js +45 -48
  864. package/src/components/post-excerpt/style.scss +0 -17
  865. package/src/components/post-featured-image/check.js +9 -0
  866. package/src/components/post-featured-image/index.js +15 -0
  867. package/src/components/post-featured-image/panel.js +9 -0
  868. package/src/components/post-format/check.js +8 -0
  869. package/src/components/post-format/index.js +15 -4
  870. package/src/components/post-format/panel.js +87 -0
  871. package/src/components/post-format/style.scss +12 -0
  872. package/src/components/post-last-revision/check.js +8 -0
  873. package/src/components/post-last-revision/index.js +7 -2
  874. package/src/components/post-last-revision/panel.js +5 -0
  875. package/src/components/post-last-revision/test/check.js +5 -1
  876. package/src/components/post-locked-modal/index.js +6 -0
  877. package/src/components/post-panel-row/index.js +2 -2
  878. package/src/components/post-panel-row/style.scss +15 -0
  879. package/src/components/post-panel-section/index.js +19 -0
  880. package/src/components/post-panel-section/style.scss +3 -0
  881. package/src/components/post-pending-status/check.js +10 -0
  882. package/src/components/post-pending-status/index.js +5 -0
  883. package/src/components/post-pingbacks/index.js +17 -2
  884. package/src/components/post-preview-button/index.js +15 -0
  885. package/src/components/post-publish-button/index.js +17 -4
  886. package/src/components/post-publish-panel/index.js +1 -0
  887. package/src/components/post-publish-panel/maybe-tags-panel.js +1 -1
  888. package/src/components/post-publish-panel/style.scss +5 -0
  889. package/src/components/post-publish-panel/test/__snapshots__/index.js.snap +3 -3
  890. package/src/components/post-saved-state/index.js +2 -2
  891. package/src/components/post-schedule/check.js +8 -0
  892. package/src/components/post-schedule/index.js +30 -3
  893. package/src/components/post-schedule/label.js +15 -0
  894. package/src/components/post-schedule/panel.js +9 -1
  895. package/src/components/post-schedule/style.scss +0 -11
  896. package/src/components/post-slug/panel.js +22 -0
  897. package/src/components/post-slug/style.scss +5 -0
  898. package/src/components/post-slug/test/index.js +5 -1
  899. package/src/components/post-status/index.js +30 -52
  900. package/src/components/post-status/style.scss +4 -34
  901. package/src/components/post-sticky/index.js +12 -7
  902. package/src/components/post-sticky/panel.js +18 -0
  903. package/src/components/post-sticky/style.scss +3 -0
  904. package/src/components/post-template/block-theme.js +1 -0
  905. package/src/components/post-template/classic-theme.js +15 -0
  906. package/src/components/post-template/panel.js +5 -0
  907. package/src/components/post-template/style.scss +0 -8
  908. package/src/components/post-text-editor/index.js +5 -0
  909. package/src/components/post-title/index.js +10 -3
  910. package/src/components/post-title/index.native.js +70 -35
  911. package/src/components/post-title/post-title-raw.js +10 -2
  912. package/src/components/post-title/use-post-title-focus.js +7 -0
  913. package/src/components/post-title/use-post-title.js +5 -0
  914. package/src/components/post-transform-panel/hooks.js +114 -0
  915. package/src/components/post-transform-panel/index.js +91 -0
  916. package/src/components/post-type-support-check/index.js +1 -1
  917. package/src/components/post-type-support-check/test/index.js +2 -2
  918. package/src/components/post-url/check.js +8 -0
  919. package/src/components/post-url/index.js +41 -24
  920. package/src/components/post-url/label.js +10 -0
  921. package/src/components/post-url/panel.js +6 -1
  922. package/src/components/post-url/style.scss +0 -9
  923. package/src/components/post-visibility/check.js +9 -0
  924. package/src/components/post-visibility/index.js +7 -0
  925. package/src/components/post-visibility/label.js +10 -0
  926. package/src/components/posts-per-page/index.js +101 -0
  927. package/src/components/posts-per-page/style.scss +4 -0
  928. package/src/components/preferences-modal/index.js +3 -3
  929. package/src/components/provider/index.js +72 -0
  930. package/src/components/provider/index.native.js +43 -2
  931. package/src/components/provider/use-block-editor-settings.js +19 -6
  932. package/src/components/provider/with-registry-provider.js +32 -31
  933. package/src/components/resizable-editor/index.js +90 -0
  934. package/src/components/resizable-editor/resize-handle.js +62 -0
  935. package/src/components/resizable-editor/style.scss +53 -0
  936. package/src/components/save-publish-panels/index.js +10 -2
  937. package/src/components/sidebar/constants.js +4 -0
  938. package/src/components/sidebar/header.js +49 -0
  939. package/src/components/sidebar/index.js +196 -0
  940. package/src/components/sidebar/post-summary.js +97 -0
  941. package/src/components/sidebar/style.scss +18 -0
  942. package/src/components/site-discussion/index.js +138 -0
  943. package/src/components/site-discussion/style.scss +19 -0
  944. package/src/components/start-page-options/index.js +6 -4
  945. package/src/components/start-template-options/index.js +219 -0
  946. package/src/components/start-template-options/style.scss +47 -0
  947. package/src/components/template-areas/index.js +15 -6
  948. package/src/components/template-areas/style.scss +0 -1
  949. package/src/components/template-content-panel/index.js +36 -0
  950. package/src/components/text-editor/index.js +57 -0
  951. package/src/components/text-editor/style.scss +71 -0
  952. package/src/components/{editor-canvas → visual-editor}/index.js +191 -110
  953. package/src/components/visual-editor/style.scss +37 -0
  954. package/src/hooks/index.js +1 -0
  955. package/src/hooks/media-upload.js +11 -0
  956. package/src/hooks/pattern-overrides.js +12 -6
  957. package/src/private-apis.js +18 -38
  958. package/src/private-apis.native.js +37 -0
  959. package/src/store/constants.js +7 -0
  960. package/src/store/private-actions.js +22 -50
  961. package/src/store/private-selectors.js +48 -0
  962. package/src/store/reducer.js +12 -0
  963. package/src/store/selectors.js +1 -1
  964. package/src/style.scss +16 -0
  965. package/src/utils/set-nested-value.js +39 -0
  966. package/build/components/editor-canvas/edit-template-blocks-notification.js.map +0 -1
  967. package/build/components/editor-canvas/index.js.map +0 -1
  968. package/build-module/components/editor-canvas/edit-template-blocks-notification.js.map +0 -1
  969. package/build-module/components/editor-canvas/index.js.map +0 -1
  970. package/src/components/post-slug/test/check.js +0 -17
  971. package/src/components/provider/README.md +0 -37
  972. /package/src/components/{editor-canvas → visual-editor}/edit-template-blocks-notification.js +0 -0
@@ -1,14 +1,15 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { external, trash, edit, backup } from '@wordpress/icons';
4
+ import { external, trash, backup } from '@wordpress/icons';
5
5
  import { addQueryArgs } from '@wordpress/url';
6
- import { useDispatch } from '@wordpress/data';
6
+ import { useDispatch, useSelect } from '@wordpress/data';
7
7
  import { decodeEntities } from '@wordpress/html-entities';
8
8
  import { store as coreStore } from '@wordpress/core-data';
9
9
  import { __, _n, sprintf, _x } from '@wordpress/i18n';
10
10
  import { store as noticesStore } from '@wordpress/notices';
11
11
  import { useMemo, useState } from '@wordpress/element';
12
+ import { privateApis as patternsPrivateApis } from '@wordpress/patterns';
12
13
 
13
14
  import {
14
15
  Button,
@@ -21,10 +22,48 @@ import {
21
22
  /**
22
23
  * Internal dependencies
23
24
  */
24
- import { TEMPLATE_ORIGINS, TEMPLATE_POST_TYPE } from '../../store/constants';
25
+ import {
26
+ TEMPLATE_ORIGINS,
27
+ TEMPLATE_PART_POST_TYPE,
28
+ TEMPLATE_POST_TYPE,
29
+ PATTERN_POST_TYPE,
30
+ } from '../../store/constants';
25
31
  import { store as editorStore } from '../../store';
26
32
  import { unlock } from '../../lock-unlock';
27
33
  import isTemplateRevertable from '../../store/utils/is-template-revertable';
34
+ import { exportPatternAsJSONAction } from './export-pattern-action';
35
+ import { CreateTemplatePartModalContents } from '../create-template-part-modal';
36
+
37
+ // Patterns.
38
+ const { PATTERN_TYPES, CreatePatternModalContents, useDuplicatePatternProps } =
39
+ unlock( patternsPrivateApis );
40
+
41
+ /**
42
+ * Check if a template is removable.
43
+ *
44
+ * @param {Object} template The template entity to check.
45
+ * @return {boolean} Whether the template is removable.
46
+ */
47
+ function isTemplateRemovable( template ) {
48
+ if ( ! template ) {
49
+ return false;
50
+ }
51
+ // In patterns list page we map the templates parts to a different object
52
+ // than the one returned from the endpoint. This is why we need to check for
53
+ // two props whether is custom or has a theme file.
54
+ return (
55
+ [ template.source, template.templatePart?.source ].includes(
56
+ TEMPLATE_ORIGINS.custom
57
+ ) &&
58
+ ! template.has_theme_file &&
59
+ ! template.templatePart?.has_theme_file
60
+ );
61
+ }
62
+ const canDeleteOrReset = ( item ) => {
63
+ const isTemplatePart = item.type === TEMPLATE_PART_POST_TYPE;
64
+ const isUserPattern = item.type === PATTERN_TYPES.user;
65
+ return isUserPattern || ( isTemplatePart && item.isCustom );
66
+ };
28
67
 
29
68
  function getItemTitle( item ) {
30
69
  if ( typeof item.title === 'string' ) {
@@ -33,56 +72,156 @@ function getItemTitle( item ) {
33
72
  return decodeEntities( item.title?.rendered || '' );
34
73
  }
35
74
 
75
+ // This action is used for templates, patterns and template parts.
76
+ // Every other post type uses the similar `trashPostAction` which
77
+ // moves the post to trash.
78
+ const deletePostAction = {
79
+ id: 'delete-post',
80
+ label: __( 'Delete' ),
81
+ isPrimary: true,
82
+ icon: trash,
83
+ isEligible( post ) {
84
+ if (
85
+ [ TEMPLATE_POST_TYPE, TEMPLATE_PART_POST_TYPE ].includes(
86
+ post.type
87
+ )
88
+ ) {
89
+ return isTemplateRemovable( post );
90
+ }
91
+ // We can only remove user patterns.
92
+ return post.type === PATTERN_TYPES.user;
93
+ },
94
+ supportsBulk: true,
95
+ hideModalHeader: true,
96
+ RenderModal: ( {
97
+ items,
98
+ closeModal,
99
+ onActionStart,
100
+ onActionPerformed,
101
+ } ) => {
102
+ const [ isBusy, setIsBusy ] = useState( false );
103
+ const { removeTemplates } = unlock( useDispatch( editorStore ) );
104
+ return (
105
+ <VStack spacing="5">
106
+ <Text>
107
+ { items.length > 1
108
+ ? sprintf(
109
+ // translators: %d: number of items to delete.
110
+ _n(
111
+ 'Delete %d item?',
112
+ 'Delete %d items?',
113
+ items.length
114
+ ),
115
+ items.length
116
+ )
117
+ : sprintf(
118
+ // translators: %s: The template or template part's titles
119
+ __( 'Delete "%s"?' ),
120
+ getItemTitle( items[ 0 ] )
121
+ ) }
122
+ </Text>
123
+ <HStack justify="right">
124
+ <Button
125
+ variant="tertiary"
126
+ onClick={ closeModal }
127
+ disabled={ isBusy }
128
+ __experimentalIsFocusable
129
+ >
130
+ { __( 'Cancel' ) }
131
+ </Button>
132
+ <Button
133
+ variant="primary"
134
+ onClick={ async () => {
135
+ setIsBusy( true );
136
+ if ( onActionStart ) {
137
+ onActionStart( items );
138
+ }
139
+ await removeTemplates( items, {
140
+ allowUndo: false,
141
+ } );
142
+ onActionPerformed?.( items );
143
+ setIsBusy( false );
144
+ closeModal();
145
+ } }
146
+ isBusy={ isBusy }
147
+ disabled={ isBusy }
148
+ __experimentalIsFocusable
149
+ >
150
+ { __( 'Delete' ) }
151
+ </Button>
152
+ </HStack>
153
+ </VStack>
154
+ );
155
+ },
156
+ };
157
+
36
158
  const trashPostAction = {
37
159
  id: 'move-to-trash',
38
160
  label: __( 'Move to Trash' ),
39
161
  isPrimary: true,
40
162
  icon: trash,
41
- isEligible( { status } ) {
42
- return status !== 'trash';
163
+ isEligible( item ) {
164
+ return ! [ 'auto-draft', 'trash' ].includes( item.status );
43
165
  },
44
166
  supportsBulk: true,
45
167
  hideModalHeader: true,
46
- RenderModal: ( { items: posts, closeModal, onActionPerformed } ) => {
168
+ RenderModal: ( {
169
+ items,
170
+ closeModal,
171
+ onActionStart,
172
+ onActionPerformed,
173
+ } ) => {
174
+ const [ isBusy, setIsBusy ] = useState( false );
47
175
  const { createSuccessNotice, createErrorNotice } =
48
176
  useDispatch( noticesStore );
49
177
  const { deleteEntityRecord } = useDispatch( coreStore );
50
178
  return (
51
179
  <VStack spacing="5">
52
180
  <Text>
53
- { posts.length === 1
181
+ { items.length === 1
54
182
  ? sprintf(
55
- // translators: %s: The page's title.
56
- __( 'Are you sure you want to delete "%s"?' ),
57
- getItemTitle( posts[ 0 ] )
183
+ // translators: %s: The item's title.
184
+ __(
185
+ 'Are you sure you want to move to trash "%s"?'
186
+ ),
187
+ getItemTitle( items[ 0 ] )
58
188
  )
59
189
  : sprintf(
60
- // translators: %d: The number of pages (2 or more).
190
+ // translators: %d: The number of items (2 or more).
61
191
  _n(
62
- 'Are you sure you want to delete %d page?',
63
- 'Are you sure you want to delete %d pages?',
64
- posts.length
192
+ 'Are you sure you want to move to trash %d item?',
193
+ 'Are you sure you want to move to trash %d items?',
194
+ items.length
65
195
  ),
66
- posts.length
196
+ items.length
67
197
  ) }
68
198
  </Text>
69
199
  <HStack justify="right">
70
- <Button variant="tertiary" onClick={ closeModal }>
200
+ <Button
201
+ variant="tertiary"
202
+ onClick={ closeModal }
203
+ disabled={ isBusy }
204
+ __experimentalIsFocusable
205
+ >
71
206
  { __( 'Cancel' ) }
72
207
  </Button>
73
208
  <Button
74
209
  variant="primary"
75
210
  onClick={ async () => {
211
+ setIsBusy( true );
212
+ if ( onActionStart ) {
213
+ onActionStart( items );
214
+ }
76
215
  const promiseResult = await Promise.allSettled(
77
- posts.map( ( post ) => {
78
- return deleteEntityRecord(
216
+ items.map( ( item ) =>
217
+ deleteEntityRecord(
79
218
  'postType',
80
- post.type,
81
- post.id,
219
+ item.type,
220
+ item.id,
82
221
  {},
83
222
  { throwOnError: true }
84
- );
85
- } )
223
+ )
224
+ )
86
225
  );
87
226
  // If all the promises were fulfilled with success.
88
227
  if (
@@ -93,33 +232,41 @@ const trashPostAction = {
93
232
  let successMessage;
94
233
  if ( promiseResult.length === 1 ) {
95
234
  successMessage = sprintf(
96
- /* translators: The posts's title. */
97
- __( '"%s" moved to the Trash.' ),
98
- getItemTitle( posts[ 0 ] )
235
+ /* translators: The item's title. */
236
+ __( '"%s" moved to trash.' ),
237
+ getItemTitle( items[ 0 ] )
238
+ );
239
+ } else if ( items[ 0 ].type === 'page' ) {
240
+ successMessage = sprintf(
241
+ /* translators: The number of items. */
242
+ __( '%s items moved to trash.' ),
243
+ items.length
99
244
  );
100
245
  } else {
101
- successMessage = __(
102
- 'Pages moved to the Trash.'
246
+ successMessage = sprintf(
247
+ /* translators: The number of posts. */
248
+ __( '%s items move to trash.' ),
249
+ items.length
103
250
  );
104
251
  }
105
252
  createSuccessNotice( successMessage, {
106
253
  type: 'snackbar',
107
- id: 'trash-post-action',
254
+ id: 'move-to-trash-action',
108
255
  } );
109
256
  } else {
110
- // If there was at lease one failure.
257
+ // If there was at least one failure.
111
258
  let errorMessage;
112
- // If we were trying to move a single post to the trash.
259
+ // If we were trying to delete a single item.
113
260
  if ( promiseResult.length === 1 ) {
114
261
  if ( promiseResult[ 0 ].reason?.message ) {
115
262
  errorMessage =
116
263
  promiseResult[ 0 ].reason.message;
117
264
  } else {
118
265
  errorMessage = __(
119
- 'An error occurred while moving the post to the trash.'
266
+ 'An error occurred while moving to trash the item.'
120
267
  );
121
268
  }
122
- // If we were trying to move multiple posts to the trash
269
+ // If we were trying to delete multiple items.
123
270
  } else {
124
271
  const errorMessages = new Set();
125
272
  const failedPromises = promiseResult.filter(
@@ -134,13 +281,13 @@ const trashPostAction = {
134
281
  }
135
282
  if ( errorMessages.size === 0 ) {
136
283
  errorMessage = __(
137
- 'An error occurred while moving the posts to the trash.'
284
+ 'An error occurred while moving to trash the items.'
138
285
  );
139
286
  } else if ( errorMessages.size === 1 ) {
140
287
  errorMessage = sprintf(
141
288
  /* translators: %s: an error message */
142
289
  __(
143
- 'An error occurred while moving the posts to the trash: %s'
290
+ 'An error occurred while moving to trash the item: %s'
144
291
  ),
145
292
  [ ...errorMessages ][ 0 ]
146
293
  );
@@ -148,7 +295,7 @@ const trashPostAction = {
148
295
  errorMessage = sprintf(
149
296
  /* translators: %s: a list of comma separated error messages */
150
297
  __(
151
- 'Some errors occurred while moving the pages to the trash: %s'
298
+ 'Some errors occurred while moving to trash the items: %s'
152
299
  ),
153
300
  [ ...errorMessages ].join( ',' )
154
301
  );
@@ -159,12 +306,16 @@ const trashPostAction = {
159
306
  } );
160
307
  }
161
308
  if ( onActionPerformed ) {
162
- onActionPerformed( posts );
309
+ onActionPerformed( items );
163
310
  }
311
+ setIsBusy( false );
164
312
  closeModal();
165
313
  } }
314
+ isBusy={ isBusy }
315
+ disabled={ isBusy }
316
+ __experimentalIsFocusable
166
317
  >
167
- { __( 'Delete' ) }
318
+ { __( 'Trash' ) }
168
319
  </Button>
169
320
  </HStack>
170
321
  </VStack>
@@ -296,9 +447,9 @@ function useRestorePostAction() {
296
447
  return status === 'trash';
297
448
  },
298
449
  async callback( posts, onActionPerformed ) {
299
- try {
300
- for ( const post of posts ) {
301
- await editEntityRecord(
450
+ await Promise.allSettled(
451
+ posts.map( ( post ) => {
452
+ return editEntityRecord(
302
453
  'postType',
303
454
  post.type,
304
455
  post.id,
@@ -306,53 +457,101 @@ function useRestorePostAction() {
306
457
  status: 'draft',
307
458
  }
308
459
  );
309
- await saveEditedEntityRecord(
460
+ } )
461
+ );
462
+ const promiseResult = await Promise.allSettled(
463
+ posts.map( ( post ) => {
464
+ return saveEditedEntityRecord(
310
465
  'postType',
311
466
  post.type,
312
467
  post.id,
313
468
  { throwOnError: true }
314
469
  );
315
- }
470
+ } )
471
+ );
316
472
 
317
- createSuccessNotice(
318
- posts.length > 1
319
- ? sprintf(
320
- /* translators: The number of posts. */
321
- __( '%d posts have been restored.' ),
322
- posts.length
323
- )
324
- : sprintf(
325
- /* translators: The number of posts. */
326
- __( '"%s" has been restored.' ),
327
- getItemTitle( posts[ 0 ] )
328
- ),
329
- {
330
- type: 'snackbar',
331
- id: 'restore-post-action',
332
- }
333
- );
473
+ if (
474
+ promiseResult.every(
475
+ ( { status } ) => status === 'fulfilled'
476
+ )
477
+ ) {
478
+ let successMessage;
479
+ if ( posts.length === 1 ) {
480
+ successMessage = sprintf(
481
+ /* translators: The number of posts. */
482
+ __( '"%s" has been restored.' ),
483
+ getItemTitle( posts[ 0 ] )
484
+ );
485
+ } else if ( posts[ 0 ].type === 'page' ) {
486
+ successMessage = sprintf(
487
+ /* translators: The number of posts. */
488
+ __( '%d pages have been restored.' ),
489
+ posts.length
490
+ );
491
+ } else {
492
+ successMessage = sprintf(
493
+ /* translators: The number of posts. */
494
+ __( '%d posts have been restored.' ),
495
+ posts.length
496
+ );
497
+ }
498
+ createSuccessNotice( successMessage, {
499
+ type: 'snackbar',
500
+ id: 'restore-post-action',
501
+ } );
334
502
  if ( onActionPerformed ) {
335
503
  onActionPerformed( posts );
336
504
  }
337
- } catch ( error ) {
505
+ } else {
506
+ // If there was at lease one failure.
338
507
  let errorMessage;
339
- if (
340
- error.message &&
341
- error.code !== 'unknown_error' &&
342
- error.message
343
- ) {
344
- errorMessage = error.message;
345
- } else if ( posts.length > 1 ) {
346
- errorMessage = __(
347
- 'An error occurred while restoring the posts.'
348
- );
508
+ // If we were trying to move a single post to the trash.
509
+ if ( promiseResult.length === 1 ) {
510
+ if ( promiseResult[ 0 ].reason?.message ) {
511
+ errorMessage = promiseResult[ 0 ].reason.message;
512
+ } else {
513
+ errorMessage = __(
514
+ 'An error occurred while restoring the post.'
515
+ );
516
+ }
517
+ // If we were trying to move multiple posts to the trash
349
518
  } else {
350
- errorMessage = __(
351
- 'An error occurred while restoring the post.'
519
+ const errorMessages = new Set();
520
+ const failedPromises = promiseResult.filter(
521
+ ( { status } ) => status === 'rejected'
352
522
  );
523
+ for ( const failedPromise of failedPromises ) {
524
+ if ( failedPromise.reason?.message ) {
525
+ errorMessages.add(
526
+ failedPromise.reason.message
527
+ );
528
+ }
529
+ }
530
+ if ( errorMessages.size === 0 ) {
531
+ errorMessage = __(
532
+ 'An error occurred while restoring the posts.'
533
+ );
534
+ } else if ( errorMessages.size === 1 ) {
535
+ errorMessage = sprintf(
536
+ /* translators: %s: an error message */
537
+ __(
538
+ 'An error occurred while restoring the posts: %s'
539
+ ),
540
+ [ ...errorMessages ][ 0 ]
541
+ );
542
+ } else {
543
+ errorMessage = sprintf(
544
+ /* translators: %s: a list of comma separated error messages */
545
+ __(
546
+ 'Some errors occurred while restoring the posts: %s'
547
+ ),
548
+ [ ...errorMessages ].join( ',' )
549
+ );
550
+ }
353
551
  }
354
-
355
- createErrorNotice( errorMessage, { type: 'snackbar' } );
552
+ createErrorNotice( errorMessage, {
553
+ type: 'snackbar',
554
+ } );
356
555
  }
357
556
  },
358
557
  } ),
@@ -382,24 +581,17 @@ const viewPostAction = {
382
581
  },
383
582
  };
384
583
 
385
- const editPostAction = {
386
- id: 'edit-post',
387
- label: __( 'Edit' ),
388
- isPrimary: true,
389
- icon: edit,
390
- isEligible( { status } ) {
391
- return status !== 'trash';
392
- },
393
- callback( posts, onActionPerformed ) {
394
- if ( onActionPerformed ) {
395
- onActionPerformed( posts );
396
- }
397
- },
398
- };
399
584
  const postRevisionsAction = {
400
585
  id: 'view-post-revisions',
401
- label: __( 'View revisions' ),
402
- isPrimary: false,
586
+ label( items ) {
587
+ const revisionsCount =
588
+ items[ 0 ]._links?.[ 'version-history' ]?.[ 0 ]?.count ?? 0;
589
+ return sprintf(
590
+ /* translators: %s: number of revisions */
591
+ __( 'View revisions (%s)' ),
592
+ revisionsCount
593
+ );
594
+ },
403
595
  isEligible: ( post ) => {
404
596
  if ( post.status === 'trash' ) {
405
597
  return false;
@@ -426,7 +618,37 @@ const renamePostAction = {
426
618
  id: 'rename-post',
427
619
  label: __( 'Rename' ),
428
620
  isEligible( post ) {
429
- return post.status !== 'trash';
621
+ if ( post.status === 'trash' ) {
622
+ return false;
623
+ }
624
+ // Templates, template parts and patterns have special checks for renaming.
625
+ if (
626
+ ! [
627
+ TEMPLATE_POST_TYPE,
628
+ TEMPLATE_PART_POST_TYPE,
629
+ ...Object.values( PATTERN_TYPES ),
630
+ ].includes( post.type )
631
+ ) {
632
+ return true;
633
+ }
634
+ // In the case of templates, we can only rename custom templates.
635
+ if ( post.type === TEMPLATE_POST_TYPE ) {
636
+ return isTemplateRemovable( post ) && post.is_custom;
637
+ }
638
+ // Make necessary checks for template parts and patterns.
639
+ const isTemplatePart = post.type === TEMPLATE_PART_POST_TYPE;
640
+ const isUserPattern = post.type === PATTERN_TYPES.user;
641
+ // In patterns list page we map the templates parts to a different object
642
+ // than the one returned from the endpoint. This is why we need to check for
643
+ // two props whether is custom or has a theme file.
644
+ const isCustomPattern =
645
+ isUserPattern ||
646
+ ( isTemplatePart &&
647
+ ( post.isCustom || post.source === TEMPLATE_ORIGINS.custom ) );
648
+ const hasThemeFile =
649
+ isTemplatePart &&
650
+ ( post.templatePart?.has_theme_file || post.has_theme_file );
651
+ return isCustomPattern && ! hasThemeFile;
430
652
  },
431
653
  RenderModal: ( { items, closeModal, onActionPerformed } ) => {
432
654
  const [ item ] = items;
@@ -500,7 +722,7 @@ const renamePostAction = {
500
722
  },
501
723
  };
502
724
 
503
- export const duplicatePostAction = {
725
+ const duplicatePostAction = {
504
726
  id: 'duplicate-post',
505
727
  label: _x( 'Duplicate', 'action label' ),
506
728
  isEligible( { status } ) {
@@ -614,47 +836,73 @@ export const duplicatePostAction = {
614
836
  },
615
837
  };
616
838
 
839
+ const isTemplatePartRevertable = ( item ) => {
840
+ if ( ! item ) {
841
+ return false;
842
+ }
843
+ const hasThemeFile = item.templatePart?.has_theme_file;
844
+ return canDeleteOrReset( item ) && hasThemeFile;
845
+ };
846
+
617
847
  const resetTemplateAction = {
618
848
  id: 'reset-template',
619
849
  label: __( 'Reset' ),
620
- isEligible: isTemplateRevertable,
850
+ isEligible: ( item ) => {
851
+ return item.type === TEMPLATE_PART_POST_TYPE
852
+ ? isTemplatePartRevertable( item )
853
+ : isTemplateRevertable( item );
854
+ },
855
+ icon: backup,
621
856
  supportsBulk: true,
622
857
  hideModalHeader: true,
623
- RenderModal: ( { items, closeModal, onActionPerformed } ) => {
624
- const { revertTemplate } = unlock( useDispatch( editorStore ) );
858
+ RenderModal: ( {
859
+ items,
860
+ closeModal,
861
+ onActionStart,
862
+ onActionPerformed,
863
+ } ) => {
864
+ const [ isBusy, setIsBusy ] = useState( false );
865
+ const { revertTemplate, removeTemplates } = unlock(
866
+ useDispatch( editorStore )
867
+ );
625
868
  const { saveEditedEntityRecord } = useDispatch( coreStore );
626
869
  const { createSuccessNotice, createErrorNotice } =
627
870
  useDispatch( noticesStore );
628
871
  const onConfirm = async () => {
629
872
  try {
630
- for ( const template of items ) {
631
- await revertTemplate( template, {
632
- allowUndo: false,
633
- } );
634
- await saveEditedEntityRecord(
635
- 'postType',
636
- template.type,
637
- template.id
873
+ if ( items[ 0 ].type === TEMPLATE_PART_POST_TYPE ) {
874
+ await removeTemplates( items );
875
+ } else {
876
+ for ( const template of items ) {
877
+ if ( template.type === TEMPLATE_POST_TYPE ) {
878
+ await revertTemplate( template, {
879
+ allowUndo: false,
880
+ } );
881
+ await saveEditedEntityRecord(
882
+ 'postType',
883
+ template.type,
884
+ template.id
885
+ );
886
+ }
887
+ }
888
+ createSuccessNotice(
889
+ items.length > 1
890
+ ? sprintf(
891
+ /* translators: The number of items. */
892
+ __( '%s items reset.' ),
893
+ items.length
894
+ )
895
+ : sprintf(
896
+ /* translators: The template/part's name. */
897
+ __( '"%s" reset.' ),
898
+ decodeEntities( getItemTitle( items[ 0 ] ) )
899
+ ),
900
+ {
901
+ type: 'snackbar',
902
+ id: 'revert-template-action',
903
+ }
638
904
  );
639
905
  }
640
-
641
- createSuccessNotice(
642
- items.length > 1
643
- ? sprintf(
644
- /* translators: The number of items. */
645
- __( '%s items reset.' ),
646
- items.length
647
- )
648
- : sprintf(
649
- /* translators: The template/part's name. */
650
- __( '"%s" reset.' ),
651
- decodeEntities( items[ 0 ].title.rendered )
652
- ),
653
- {
654
- type: 'snackbar',
655
- id: 'revert-template-action',
656
- }
657
- );
658
906
  } catch ( error ) {
659
907
  let fallbackErrorMessage;
660
908
  if ( items[ 0 ].type === TEMPLATE_POST_TYPE ) {
@@ -690,16 +938,29 @@ const resetTemplateAction = {
690
938
  { __( 'Reset to default and clear all customizations?' ) }
691
939
  </Text>
692
940
  <HStack justify="right">
693
- <Button variant="tertiary" onClick={ closeModal }>
941
+ <Button
942
+ variant="tertiary"
943
+ onClick={ closeModal }
944
+ disabled={ isBusy }
945
+ __experimentalIsFocusable
946
+ >
694
947
  { __( 'Cancel' ) }
695
948
  </Button>
696
949
  <Button
697
950
  variant="primary"
698
951
  onClick={ async () => {
952
+ setIsBusy( true );
953
+ if ( onActionStart ) {
954
+ onActionStart( items );
955
+ }
699
956
  await onConfirm( items );
700
957
  onActionPerformed?.( items );
958
+ setIsBusy( false );
701
959
  closeModal();
702
960
  } }
961
+ isBusy={ isBusy }
962
+ disabled={ isBusy }
963
+ __experimentalIsFocusable
703
964
  >
704
965
  { __( 'Reset' ) }
705
966
  </Button>
@@ -709,269 +970,159 @@ const resetTemplateAction = {
709
970
  },
710
971
  };
711
972
 
712
- /**
713
- * Check if a template is removable.
714
- * Copy from packages/edit-site/src/utils/is-template-removable.js.
715
- *
716
- * @param {Object} template The template entity to check.
717
- * @return {boolean} Whether the template is revertable.
718
- */
719
- function isTemplateRemovable( template ) {
720
- if ( ! template ) {
721
- return false;
722
- }
723
-
724
- return (
725
- template.source === TEMPLATE_ORIGINS.custom && ! template.has_theme_file
726
- );
727
- }
728
-
729
- const deleteTemplateAction = {
730
- id: 'delete-template',
731
- label: __( 'Delete' ),
732
- isEligible: isTemplateRemovable,
733
- supportsBulk: true,
734
- hideModalHeader: true,
735
- RenderModal: ( { items: templates, closeModal, onActionPerformed } ) => {
736
- const { removeTemplates } = unlock( useDispatch( editorStore ) );
973
+ export const duplicatePatternAction = {
974
+ id: 'duplicate-pattern',
975
+ label: _x( 'Duplicate', 'action label' ),
976
+ isEligible: ( item ) => item.type !== TEMPLATE_PART_POST_TYPE,
977
+ modalHeader: _x( 'Duplicate pattern', 'action label' ),
978
+ RenderModal: ( { items, closeModal } ) => {
979
+ const [ item ] = items;
980
+ const isThemePattern = item.type === PATTERN_TYPES.theme;
981
+ const duplicatedProps = useDuplicatePatternProps( {
982
+ pattern:
983
+ isThemePattern || ! item.patternPost ? item : item.patternPost,
984
+ onSuccess: () => closeModal(),
985
+ } );
737
986
  return (
738
- <VStack spacing="5">
739
- <Text>
740
- { templates.length > 1
741
- ? sprintf(
742
- // translators: %d: number of items to delete.
743
- _n(
744
- 'Delete %d item?',
745
- 'Delete %d items?',
746
- templates.length
747
- ),
748
- templates.length
749
- )
750
- : sprintf(
751
- // translators: %s: The template or template part's titles
752
- __( 'Delete "%s"?' ),
753
- decodeEntities(
754
- templates?.[ 0 ]?.title?.rendered
755
- )
756
- ) }
757
- </Text>
758
- <HStack justify="right">
759
- <Button variant="tertiary" onClick={ closeModal }>
760
- { __( 'Cancel' ) }
761
- </Button>
762
- <Button
763
- variant="primary"
764
- onClick={ async () => {
765
- await removeTemplates( templates, {
766
- allowUndo: false,
767
- } );
768
- onActionPerformed?.( templates );
769
- closeModal();
770
- } }
771
- >
772
- { __( 'Delete' ) }
773
- </Button>
774
- </HStack>
775
- </VStack>
987
+ <CreatePatternModalContents
988
+ onClose={ closeModal }
989
+ confirmLabel={ _x( 'Duplicate', 'action label' ) }
990
+ { ...duplicatedProps }
991
+ />
776
992
  );
777
993
  },
778
994
  };
779
995
 
780
- const renameTemplateAction = {
781
- id: 'rename-template',
782
- label: __( 'Rename' ),
783
- isEligible: ( template ) => {
784
- // We can only remove templates or template parts that can be removed.
785
- // Additionally in the case of templates, we can only remove custom templates.
786
- if (
787
- ! isTemplateRemovable( template ) ||
788
- ( template.type === TEMPLATE_POST_TYPE && ! template.is_custom )
789
- ) {
790
- return false;
791
- }
792
- return true;
793
- },
794
- RenderModal: ( { items: templates, closeModal, onActionPerformed } ) => {
795
- const template = templates[ 0 ];
796
- const title = decodeEntities( template.title.rendered );
797
- const [ editedTitle, setEditedTitle ] = useState( title );
798
- const {
799
- editEntityRecord,
800
- __experimentalSaveSpecifiedEntityEdits: saveSpecifiedEntityEdits,
801
- } = useDispatch( coreStore );
802
- const { createSuccessNotice, createErrorNotice } =
803
- useDispatch( noticesStore );
804
- async function onTemplateRename( event ) {
805
- event.preventDefault();
806
- try {
807
- await editEntityRecord(
808
- 'postType',
809
- template.type,
810
- template.id,
811
- {
812
- title: editedTitle,
813
- }
814
- );
815
- // Update state before saving rerenders the list.
816
- setEditedTitle( '' );
817
- closeModal();
818
- // Persist edited entity.
819
- await saveSpecifiedEntityEdits(
820
- 'postType',
821
- template.type,
822
- template.id,
823
- [ 'title' ], // Only save title to avoid persisting other edits.
824
- {
825
- throwOnError: true,
826
- }
827
- );
828
- createSuccessNotice(
829
- template.type === TEMPLATE_POST_TYPE
830
- ? __( 'Template renamed.' )
831
- : __( 'Template part renamed.' ),
832
- {
833
- type: 'snackbar',
834
- }
835
- );
836
- onActionPerformed?.( templates );
837
- } catch ( error ) {
838
- const fallbackErrorMessage =
839
- template.type === TEMPLATE_POST_TYPE
840
- ? __( 'An error occurred while renaming the template.' )
841
- : __(
842
- 'An error occurred while renaming the template part.'
843
- );
844
- const errorMessage =
845
- error.message && error.code !== 'unknown_error'
846
- ? error.message
847
- : fallbackErrorMessage;
848
-
849
- createErrorNotice( errorMessage, { type: 'snackbar' } );
850
- }
996
+ export const duplicateTemplatePartAction = {
997
+ id: 'duplicate-template-part',
998
+ label: _x( 'Duplicate', 'action label' ),
999
+ isEligible: ( item ) => item.type === TEMPLATE_PART_POST_TYPE,
1000
+ modalHeader: _x( 'Duplicate template part', 'action label' ),
1001
+ RenderModal: ( { items, closeModal } ) => {
1002
+ const [ item ] = items;
1003
+ const { createSuccessNotice } = useDispatch( noticesStore );
1004
+ function onTemplatePartSuccess() {
1005
+ createSuccessNotice(
1006
+ sprintf(
1007
+ // translators: %s: The new template part's title e.g. 'Call to action (copy)'.
1008
+ __( '"%s" duplicated.' ),
1009
+ item.title
1010
+ ),
1011
+ { type: 'snackbar', id: 'edit-site-patterns-success' }
1012
+ );
1013
+ closeModal();
851
1014
  }
852
1015
  return (
853
- <form onSubmit={ onTemplateRename }>
854
- <VStack spacing="5">
855
- <TextControl
856
- __nextHasNoMarginBottom
857
- __next40pxDefaultSize
858
- label={ __( 'Name' ) }
859
- value={ editedTitle }
860
- onChange={ setEditedTitle }
861
- required
862
- />
863
- <HStack justify="right">
864
- <Button
865
- variant="tertiary"
866
- onClick={ closeModal }
867
- __next40pxDefaultSize
868
- >
869
- { __( 'Cancel' ) }
870
- </Button>
871
- <Button
872
- variant="primary"
873
- type="submit"
874
- __next40pxDefaultSize
875
- >
876
- { __( 'Save' ) }
877
- </Button>
878
- </HStack>
879
- </VStack>
880
- </form>
1016
+ <CreateTemplatePartModalContents
1017
+ blocks={ item.blocks }
1018
+ defaultArea={ item.templatePart?.area || item.area }
1019
+ defaultTitle={ sprintf(
1020
+ /* translators: %s: Existing template part title */
1021
+ __( '%s (Copy)' ),
1022
+ item.title
1023
+ ) }
1024
+ onCreate={ onTemplatePartSuccess }
1025
+ onError={ closeModal }
1026
+ confirmLabel={ _x( 'Duplicate', 'action label' ) }
1027
+ />
881
1028
  );
882
1029
  },
883
1030
  };
884
1031
 
885
- export function usePostActions( onActionPerformed, actionIds = null ) {
1032
+ export function usePostActions( postType, onActionPerformed ) {
1033
+ const { postTypeObject } = useSelect(
1034
+ ( select ) => {
1035
+ const { getPostType } = select( coreStore );
1036
+ return {
1037
+ postTypeObject: getPostType( postType ),
1038
+ };
1039
+ },
1040
+ [ postType ]
1041
+ );
1042
+
886
1043
  const permanentlyDeletePostAction = usePermanentlyDeletePostAction();
887
1044
  const restorePostAction = useRestorePostAction();
888
- return useMemo(
889
- () => {
890
- // By default, return all actions...
891
- const defaultActions = [
892
- editPostAction,
893
- resetTemplateAction,
894
- viewPostAction,
895
- restorePostAction,
896
- deleteTemplateAction,
897
- permanentlyDeletePostAction,
898
- postRevisionsAction,
899
- duplicatePostAction,
900
- renamePostAction,
901
- renameTemplateAction,
902
- trashPostAction,
903
- ];
904
-
905
- // ... unless `actionIds` was specified, in which case we find the
906
- // actions matching the given IDs.
907
- const actions = actionIds
908
- ? actionIds.map( ( actionId ) =>
909
- defaultActions.find( ( { id } ) => actionId === id )
910
- )
911
- : defaultActions;
912
-
913
- if ( onActionPerformed ) {
914
- for ( let i = 0; i < actions.length; ++i ) {
915
- if ( actions[ i ].callback ) {
916
- const existingCallback = actions[ i ].callback;
917
- actions[ i ] = {
918
- ...actions[ i ],
919
- callback: ( items, _onActionPerformed ) => {
920
- existingCallback( items, ( _items ) => {
921
- if ( _onActionPerformed ) {
922
- _onActionPerformed( _items );
923
- }
924
- onActionPerformed(
925
- actions[ i ].id,
926
- _items
927
- );
928
- } );
929
- },
930
- };
931
- }
932
- if ( actions[ i ].RenderModal ) {
933
- const ExistingRenderModal = actions[ i ].RenderModal;
934
- actions[ i ] = {
935
- ...actions[ i ],
936
- RenderModal: ( props ) => {
937
- return (
938
- <ExistingRenderModal
939
- items={ props.items }
940
- closeModal={ props.closeModal }
941
- onActionPerformed={ ( _items ) => {
942
- if ( props.onActionPerformed ) {
943
- props.onActionPerformed(
944
- _items
945
- );
946
- }
947
- onActionPerformed(
948
- actions[ i ].id,
949
- _items
950
- );
951
- } }
952
- />
953
- );
954
- },
955
- };
956
- }
1045
+ const isTemplateOrTemplatePart = [
1046
+ TEMPLATE_POST_TYPE,
1047
+ TEMPLATE_PART_POST_TYPE,
1048
+ ].includes( postType );
1049
+ const isPattern = postType === PATTERN_POST_TYPE;
1050
+ const isLoaded = !! postTypeObject;
1051
+ const supportsRevisions = !! postTypeObject?.supports?.revisions;
1052
+ return useMemo( () => {
1053
+ if ( ! isLoaded ) {
1054
+ return [];
1055
+ }
1056
+
1057
+ const actions = [
1058
+ postTypeObject?.viewable && viewPostAction,
1059
+ supportsRevisions && postRevisionsAction,
1060
+ globalThis.IS_GUTENBERG_PLUGIN
1061
+ ? ! isTemplateOrTemplatePart &&
1062
+ ! isPattern &&
1063
+ duplicatePostAction
1064
+ : false,
1065
+ isTemplateOrTemplatePart && duplicateTemplatePartAction,
1066
+ isPattern && duplicatePatternAction,
1067
+ renamePostAction,
1068
+ isPattern && exportPatternAsJSONAction,
1069
+ isTemplateOrTemplatePart ? resetTemplateAction : restorePostAction,
1070
+ isTemplateOrTemplatePart || isPattern
1071
+ ? deletePostAction
1072
+ : trashPostAction,
1073
+ ! isTemplateOrTemplatePart && permanentlyDeletePostAction,
1074
+ ].filter( Boolean );
1075
+
1076
+ if ( onActionPerformed ) {
1077
+ for ( let i = 0; i < actions.length; ++i ) {
1078
+ if ( actions[ i ].callback ) {
1079
+ const existingCallback = actions[ i ].callback;
1080
+ actions[ i ] = {
1081
+ ...actions[ i ],
1082
+ callback: ( items, _onActionPerformed ) => {
1083
+ existingCallback( items, ( _items ) => {
1084
+ if ( _onActionPerformed ) {
1085
+ _onActionPerformed( _items );
1086
+ }
1087
+ onActionPerformed( actions[ i ].id, _items );
1088
+ } );
1089
+ },
1090
+ };
1091
+ }
1092
+ if ( actions[ i ].RenderModal ) {
1093
+ const ExistingRenderModal = actions[ i ].RenderModal;
1094
+ actions[ i ] = {
1095
+ ...actions[ i ],
1096
+ RenderModal: ( props ) => {
1097
+ return (
1098
+ <ExistingRenderModal
1099
+ { ...props }
1100
+ onActionPerformed={ ( _items ) => {
1101
+ if ( props.onActionPerformed ) {
1102
+ props.onActionPerformed( _items );
1103
+ }
1104
+ onActionPerformed(
1105
+ actions[ i ].id,
1106
+ _items
1107
+ );
1108
+ } }
1109
+ />
1110
+ );
1111
+ },
1112
+ };
957
1113
  }
958
1114
  }
959
- return actions;
960
- },
1115
+ }
961
1116
 
962
- // Disable reason: if provided, `actionIds` is a shallow array of
963
- // strings, and the strings themselves should be part of the useMemo
964
- // dependencies. Two different disable statements are needed, as the
965
- // first flags what it thinks are missing dependencies, and the second
966
- // flags the array spread operation.
967
- //
968
- // eslint-disable-next-line react-hooks/exhaustive-deps
969
- [
970
- // eslint-disable-next-line react-hooks/exhaustive-deps
971
- ...( actionIds || [] ),
972
- permanentlyDeletePostAction,
973
- restorePostAction,
974
- onActionPerformed,
975
- ]
976
- );
1117
+ return actions;
1118
+ }, [
1119
+ isTemplateOrTemplatePart,
1120
+ isPattern,
1121
+ postTypeObject?.viewable,
1122
+ permanentlyDeletePostAction,
1123
+ restorePostAction,
1124
+ onActionPerformed,
1125
+ isLoaded,
1126
+ supportsRevisions,
1127
+ ] );
977
1128
  }