@wordpress/editor 14.3.0 → 14.4.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 (400) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +2 -1
  3. package/build/bindings/api.js +65 -0
  4. package/build/bindings/api.js.map +1 -0
  5. package/build/bindings/pattern-overrides.js +23 -13
  6. package/build/bindings/pattern-overrides.js.map +1 -1
  7. package/build/bindings/post-meta.js +23 -12
  8. package/build/bindings/post-meta.js.map +1 -1
  9. package/build/components/block-settings-menu/content-only-settings-menu.js +4 -1
  10. package/build/components/block-settings-menu/content-only-settings-menu.js.map +1 -1
  11. package/build/components/blog-title/index.js +6 -2
  12. package/build/components/blog-title/index.js.map +1 -1
  13. package/build/components/collapsible-block-toolbar/index.js +2 -3
  14. package/build/components/collapsible-block-toolbar/index.js.map +1 -1
  15. package/build/components/global-styles-provider/index.js +15 -3
  16. package/build/components/global-styles-provider/index.js.map +1 -1
  17. package/build/components/header/back-button.js +7 -8
  18. package/build/components/header/back-button.js.map +1 -1
  19. package/build/components/header/index.js +19 -17
  20. package/build/components/header/index.js.map +1 -1
  21. package/build/components/page-attributes/order.js +1 -67
  22. package/build/components/page-attributes/order.js.map +1 -1
  23. package/build/components/page-attributes/panel.js +1 -4
  24. package/build/components/page-attributes/panel.js.map +1 -1
  25. package/build/components/post-actions/actions.js +126 -33
  26. package/build/components/post-actions/actions.js.map +1 -1
  27. package/build/components/post-card-panel/index.js +8 -2
  28. package/build/components/post-card-panel/index.js.map +1 -1
  29. package/build/components/post-comments/index.js +1 -1
  30. package/build/components/post-comments/index.js.map +1 -1
  31. package/build/components/post-content-information/index.js +7 -1
  32. package/build/components/post-content-information/index.js.map +1 -1
  33. package/build/components/post-discussion/panel.js +2 -2
  34. package/build/components/post-discussion/panel.js.map +1 -1
  35. package/build/components/post-excerpt/panel.js +1 -1
  36. package/build/components/post-excerpt/panel.js.map +1 -1
  37. package/build/components/post-featured-image/index.js +3 -1
  38. package/build/components/post-featured-image/index.js.map +1 -1
  39. package/build/components/post-last-revision/index.js +2 -1
  40. package/build/components/post-last-revision/index.js.map +1 -1
  41. package/build/components/post-publish-button/index.js +4 -11
  42. package/build/components/post-publish-button/index.js.map +1 -1
  43. package/build/components/post-publish-panel/maybe-category-panel.js +4 -1
  44. package/build/components/post-publish-panel/maybe-category-panel.js.map +1 -1
  45. package/build/components/post-publish-panel/maybe-tags-panel.js +2 -1
  46. package/build/components/post-publish-panel/maybe-tags-panel.js.map +1 -1
  47. package/build/components/post-status/index.js +30 -10
  48. package/build/components/post-status/index.js.map +1 -1
  49. package/build/components/post-taxonomies/flat-term-selector.js +17 -6
  50. package/build/components/post-taxonomies/flat-term-selector.js.map +1 -1
  51. package/build/components/post-taxonomies/index.js +7 -1
  52. package/build/components/post-taxonomies/index.js.map +1 -1
  53. package/build/components/post-template/block-theme.js +4 -4
  54. package/build/components/post-template/block-theme.js.map +1 -1
  55. package/build/components/post-template/classic-theme.js +8 -2
  56. package/build/components/post-template/classic-theme.js.map +1 -1
  57. package/build/components/post-template/create-new-template.js +4 -1
  58. package/build/components/post-template/create-new-template.js.map +1 -1
  59. package/build/components/post-template/hooks.js +5 -1
  60. package/build/components/post-template/hooks.js.map +1 -1
  61. package/build/components/post-template/panel.js +8 -2
  62. package/build/components/post-template/panel.js.map +1 -1
  63. package/build/components/post-trash/check.js +6 -4
  64. package/build/components/post-trash/check.js.map +1 -1
  65. package/build/components/post-url/panel.js +6 -2
  66. package/build/components/post-url/panel.js.map +1 -1
  67. package/build/components/posts-per-page/index.js +6 -2
  68. package/build/components/posts-per-page/index.js.map +1 -1
  69. package/build/components/provider/use-block-editor-settings.js +15 -6
  70. package/build/components/provider/use-block-editor-settings.js.map +1 -1
  71. package/build/components/save-publish-panels/index.js +1 -2
  72. package/build/components/save-publish-panels/index.js.map +1 -1
  73. package/build/components/sidebar/index.js +3 -9
  74. package/build/components/sidebar/index.js.map +1 -1
  75. package/build/components/site-discussion/index.js +7 -3
  76. package/build/components/site-discussion/index.js.map +1 -1
  77. package/build/components/template-content-panel/index.js +5 -5
  78. package/build/components/template-content-panel/index.js.map +1 -1
  79. package/build/components/visual-editor/edit-template-blocks-notification.js +4 -4
  80. package/build/components/visual-editor/edit-template-blocks-notification.js.map +1 -1
  81. package/build/components/visual-editor/index.js +5 -2
  82. package/build/components/visual-editor/index.js.map +1 -1
  83. package/build/{hooks → components/visual-editor}/use-select-nearest-editable-block.js +1 -1
  84. package/build/components/visual-editor/use-select-nearest-editable-block.js.map +1 -0
  85. package/build/dataviews/actions/delete-post.js +2 -0
  86. package/build/dataviews/actions/delete-post.js.map +1 -1
  87. package/build/hooks/pattern-overrides.js +1 -1
  88. package/build/hooks/pattern-overrides.js.map +1 -1
  89. package/build/index.js +0 -1
  90. package/build/index.js.map +1 -1
  91. package/build/private-apis.js +3 -0
  92. package/build/private-apis.js.map +1 -1
  93. package/build/utils/media-upload/index.js +35 -2
  94. package/build/utils/media-upload/index.js.map +1 -1
  95. package/build-module/bindings/api.js +57 -0
  96. package/build-module/bindings/api.js.map +1 -0
  97. package/build-module/bindings/pattern-overrides.js +23 -13
  98. package/build-module/bindings/pattern-overrides.js.map +1 -1
  99. package/build-module/bindings/post-meta.js +23 -12
  100. package/build-module/bindings/post-meta.js.map +1 -1
  101. package/build-module/components/block-settings-menu/content-only-settings-menu.js +4 -1
  102. package/build-module/components/block-settings-menu/content-only-settings-menu.js.map +1 -1
  103. package/build-module/components/blog-title/index.js +6 -2
  104. package/build-module/components/blog-title/index.js.map +1 -1
  105. package/build-module/components/collapsible-block-toolbar/index.js +1 -2
  106. package/build-module/components/collapsible-block-toolbar/index.js.map +1 -1
  107. package/build-module/components/global-styles-provider/index.js +15 -3
  108. package/build-module/components/global-styles-provider/index.js.map +1 -1
  109. package/build-module/components/header/back-button.js +5 -7
  110. package/build-module/components/header/back-button.js.map +1 -1
  111. package/build-module/components/header/index.js +19 -19
  112. package/build-module/components/header/index.js.map +1 -1
  113. package/build-module/components/page-attributes/order.js +4 -70
  114. package/build-module/components/page-attributes/order.js.map +1 -1
  115. package/build-module/components/page-attributes/panel.js +1 -6
  116. package/build-module/components/page-attributes/panel.js.map +1 -1
  117. package/build-module/components/post-actions/actions.js +127 -34
  118. package/build-module/components/post-actions/actions.js.map +1 -1
  119. package/build-module/components/post-card-panel/index.js +8 -2
  120. package/build-module/components/post-card-panel/index.js.map +1 -1
  121. package/build-module/components/post-comments/index.js +2 -2
  122. package/build-module/components/post-comments/index.js.map +1 -1
  123. package/build-module/components/post-content-information/index.js +7 -1
  124. package/build-module/components/post-content-information/index.js.map +1 -1
  125. package/build-module/components/post-discussion/panel.js +3 -3
  126. package/build-module/components/post-discussion/panel.js.map +1 -1
  127. package/build-module/components/post-excerpt/panel.js +1 -1
  128. package/build-module/components/post-excerpt/panel.js.map +1 -1
  129. package/build-module/components/post-featured-image/index.js +3 -1
  130. package/build-module/components/post-featured-image/index.js.map +1 -1
  131. package/build-module/components/post-last-revision/index.js +2 -1
  132. package/build-module/components/post-last-revision/index.js.map +1 -1
  133. package/build-module/components/post-publish-button/index.js +4 -11
  134. package/build-module/components/post-publish-button/index.js.map +1 -1
  135. package/build-module/components/post-publish-panel/maybe-category-panel.js +4 -1
  136. package/build-module/components/post-publish-panel/maybe-category-panel.js.map +1 -1
  137. package/build-module/components/post-publish-panel/maybe-tags-panel.js +2 -1
  138. package/build-module/components/post-publish-panel/maybe-tags-panel.js.map +1 -1
  139. package/build-module/components/post-status/index.js +30 -10
  140. package/build-module/components/post-status/index.js.map +1 -1
  141. package/build-module/components/post-taxonomies/flat-term-selector.js +17 -6
  142. package/build-module/components/post-taxonomies/flat-term-selector.js.map +1 -1
  143. package/build-module/components/post-taxonomies/index.js +7 -1
  144. package/build-module/components/post-taxonomies/index.js.map +1 -1
  145. package/build-module/components/post-template/block-theme.js +4 -4
  146. package/build-module/components/post-template/block-theme.js.map +1 -1
  147. package/build-module/components/post-template/classic-theme.js +8 -2
  148. package/build-module/components/post-template/classic-theme.js.map +1 -1
  149. package/build-module/components/post-template/create-new-template.js +4 -1
  150. package/build-module/components/post-template/create-new-template.js.map +1 -1
  151. package/build-module/components/post-template/hooks.js +5 -1
  152. package/build-module/components/post-template/hooks.js.map +1 -1
  153. package/build-module/components/post-template/panel.js +8 -2
  154. package/build-module/components/post-template/panel.js.map +1 -1
  155. package/build-module/components/post-trash/check.js +6 -4
  156. package/build-module/components/post-trash/check.js.map +1 -1
  157. package/build-module/components/post-url/panel.js +6 -2
  158. package/build-module/components/post-url/panel.js.map +1 -1
  159. package/build-module/components/posts-per-page/index.js +6 -2
  160. package/build-module/components/posts-per-page/index.js.map +1 -1
  161. package/build-module/components/provider/use-block-editor-settings.js +15 -6
  162. package/build-module/components/provider/use-block-editor-settings.js.map +1 -1
  163. package/build-module/components/save-publish-panels/index.js +1 -2
  164. package/build-module/components/save-publish-panels/index.js.map +1 -1
  165. package/build-module/components/sidebar/index.js +3 -9
  166. package/build-module/components/sidebar/index.js.map +1 -1
  167. package/build-module/components/site-discussion/index.js +8 -4
  168. package/build-module/components/site-discussion/index.js.map +1 -1
  169. package/build-module/components/template-content-panel/index.js +5 -5
  170. package/build-module/components/template-content-panel/index.js.map +1 -1
  171. package/build-module/components/visual-editor/edit-template-blocks-notification.js +4 -4
  172. package/build-module/components/visual-editor/edit-template-blocks-notification.js.map +1 -1
  173. package/build-module/components/visual-editor/index.js +5 -2
  174. package/build-module/components/visual-editor/index.js.map +1 -1
  175. package/build-module/{hooks → components/visual-editor}/use-select-nearest-editable-block.js +1 -1
  176. package/build-module/components/visual-editor/use-select-nearest-editable-block.js.map +1 -0
  177. package/build-module/dataviews/actions/delete-post.js +2 -0
  178. package/build-module/dataviews/actions/delete-post.js.map +1 -1
  179. package/build-module/hooks/pattern-overrides.js +1 -1
  180. package/build-module/hooks/pattern-overrides.js.map +1 -1
  181. package/build-module/index.js +0 -1
  182. package/build-module/index.js.map +1 -1
  183. package/build-module/private-apis.js +3 -0
  184. package/build-module/private-apis.js.map +1 -1
  185. package/build-module/utils/media-upload/index.js +36 -3
  186. package/build-module/utils/media-upload/index.js.map +1 -1
  187. package/build-style/style-rtl.css +78 -42
  188. package/build-style/style.css +78 -42
  189. package/build-types/bindings/api.d.ts +25 -0
  190. package/build-types/bindings/api.d.ts.map +1 -0
  191. package/build-types/bindings/pattern-overrides.d.ts +5 -6
  192. package/build-types/bindings/pattern-overrides.d.ts.map +1 -1
  193. package/build-types/bindings/post-meta.d.ts +5 -7
  194. package/build-types/bindings/post-meta.d.ts.map +1 -1
  195. package/build-types/components/autocompleters/user.d.ts +2 -2
  196. package/build-types/components/autocompleters/user.d.ts.map +1 -1
  197. package/build-types/components/block-settings-menu/plugin-block-settings-menu-item.d.ts.map +1 -1
  198. package/build-types/components/blog-title/index.d.ts.map +1 -1
  199. package/build-types/components/collapsible-block-toolbar/index.d.ts +1 -2
  200. package/build-types/components/collapsible-block-toolbar/index.d.ts.map +1 -1
  201. package/build-types/components/document-bar/index.d.ts.map +1 -1
  202. package/build-types/components/document-outline/check.d.ts.map +1 -1
  203. package/build-types/components/document-outline/index.d.ts.map +1 -1
  204. package/build-types/components/editor-history/redo.d.ts +1 -1
  205. package/build-types/components/editor-history/undo.d.ts +1 -1
  206. package/build-types/components/editor-notices/index.d.ts.map +1 -1
  207. package/build-types/components/editor-snackbars/index.d.ts.map +1 -1
  208. package/build-types/components/entities-saved-states/index.d.ts.map +1 -1
  209. package/build-types/components/global-styles-provider/index.d.ts.map +1 -1
  210. package/build-types/components/header/back-button.d.ts +1 -0
  211. package/build-types/components/header/back-button.d.ts.map +1 -1
  212. package/build-types/components/header/index.d.ts.map +1 -1
  213. package/build-types/components/local-autosave-monitor/index.d.ts.map +1 -1
  214. package/build-types/components/media-categories/index.d.ts.map +1 -1
  215. package/build-types/components/more-menu/tools-more-menu-group.d.ts.map +1 -1
  216. package/build-types/components/more-menu/view-more-menu-group.d.ts.map +1 -1
  217. package/build-types/components/page-attributes/check.d.ts.map +1 -1
  218. package/build-types/components/page-attributes/order.d.ts +1 -1
  219. package/build-types/components/page-attributes/order.d.ts.map +1 -1
  220. package/build-types/components/page-attributes/panel.d.ts.map +1 -1
  221. package/build-types/components/page-attributes/parent.d.ts.map +1 -1
  222. package/build-types/components/plugin-document-setting-panel/index.d.ts.map +1 -1
  223. package/build-types/components/plugin-post-publish-panel/index.d.ts.map +1 -1
  224. package/build-types/components/plugin-post-status-info/index.d.ts.map +1 -1
  225. package/build-types/components/plugin-pre-publish-panel/index.d.ts.map +1 -1
  226. package/build-types/components/plugin-sidebar/index.d.ts.map +1 -1
  227. package/build-types/components/plugin-sidebar-more-menu-item/index.d.ts.map +1 -1
  228. package/build-types/components/post-actions/actions.d.ts.map +1 -1
  229. package/build-types/components/post-author/check.d.ts.map +1 -1
  230. package/build-types/components/post-author/index.d.ts.map +1 -1
  231. package/build-types/components/post-author/panel.d.ts.map +1 -1
  232. package/build-types/components/post-card-panel/index.d.ts.map +1 -1
  233. package/build-types/components/post-content-information/index.d.ts.map +1 -1
  234. package/build-types/components/post-discussion/panel.d.ts.map +1 -1
  235. package/build-types/components/post-excerpt/check.d.ts.map +1 -1
  236. package/build-types/components/post-excerpt/index.d.ts.map +1 -1
  237. package/build-types/components/post-excerpt/panel.d.ts.map +1 -1
  238. package/build-types/components/post-excerpt/plugin.d.ts.map +1 -1
  239. package/build-types/components/post-featured-image/check.d.ts.map +1 -1
  240. package/build-types/components/post-featured-image/panel.d.ts.map +1 -1
  241. package/build-types/components/post-format/index.d.ts.map +1 -1
  242. package/build-types/components/post-format/panel.d.ts.map +1 -1
  243. package/build-types/components/post-last-revision/check.d.ts.map +1 -1
  244. package/build-types/components/post-last-revision/index.d.ts.map +1 -1
  245. package/build-types/components/post-last-revision/panel.d.ts.map +1 -1
  246. package/build-types/components/post-locked-modal/index.d.ts.map +1 -1
  247. package/build-types/components/post-pending-status/check.d.ts.map +1 -1
  248. package/build-types/components/post-pending-status/index.d.ts.map +1 -1
  249. package/build-types/components/post-preview-button/index.d.ts.map +1 -1
  250. package/build-types/components/post-publish-button/index.d.ts.map +1 -1
  251. package/build-types/components/post-publish-panel/maybe-category-panel.d.ts.map +1 -1
  252. package/build-types/components/post-saved-state/index.d.ts +1 -1
  253. package/build-types/components/post-saved-state/index.d.ts.map +1 -1
  254. package/build-types/components/post-schedule/check.d.ts.map +1 -1
  255. package/build-types/components/post-schedule/index.d.ts.map +1 -1
  256. package/build-types/components/post-schedule/label.d.ts.map +1 -1
  257. package/build-types/components/post-schedule/panel.d.ts.map +1 -1
  258. package/build-types/components/post-slug/check.d.ts.map +1 -1
  259. package/build-types/components/post-slug/index.d.ts.map +1 -1
  260. package/build-types/components/post-status/index.d.ts.map +1 -1
  261. package/build-types/components/post-sticky/check.d.ts.map +1 -1
  262. package/build-types/components/post-sticky/index.d.ts.map +1 -1
  263. package/build-types/components/post-switch-to-draft-button/index.d.ts.map +1 -1
  264. package/build-types/components/post-sync-status/index.d.ts.map +1 -1
  265. package/build-types/components/post-taxonomies/check.d.ts.map +1 -1
  266. package/build-types/components/post-taxonomies/flat-term-selector.d.ts +9 -7
  267. package/build-types/components/post-taxonomies/flat-term-selector.d.ts.map +1 -1
  268. package/build-types/components/post-taxonomies/hierarchical-term-selector.d.ts +13 -11
  269. package/build-types/components/post-taxonomies/hierarchical-term-selector.d.ts.map +1 -1
  270. package/build-types/components/post-taxonomies/index.d.ts.map +1 -1
  271. package/build-types/components/post-template/block-theme.d.ts.map +1 -1
  272. package/build-types/components/post-template/classic-theme.d.ts.map +1 -1
  273. package/build-types/components/post-template/create-new-template.d.ts.map +1 -1
  274. package/build-types/components/post-template/hooks.d.ts.map +1 -1
  275. package/build-types/components/post-template/panel.d.ts.map +1 -1
  276. package/build-types/components/post-text-editor/index.d.ts.map +1 -1
  277. package/build-types/components/post-trash/check.d.ts.map +1 -1
  278. package/build-types/components/post-trash/index.d.ts.map +1 -1
  279. package/build-types/components/post-type-support-check/index.d.ts.map +1 -1
  280. package/build-types/components/post-url/check.d.ts.map +1 -1
  281. package/build-types/components/post-url/index.d.ts.map +1 -1
  282. package/build-types/components/post-url/label.d.ts.map +1 -1
  283. package/build-types/components/post-url/panel.d.ts.map +1 -1
  284. package/build-types/components/post-visibility/check.d.ts.map +1 -1
  285. package/build-types/components/post-visibility/index.d.ts.map +1 -1
  286. package/build-types/components/posts-per-page/index.d.ts.map +1 -1
  287. package/build-types/components/preferences-modal/enable-plugin-document-setting-panel.d.ts.map +1 -1
  288. package/build-types/components/provider/index.d.ts.map +1 -1
  289. package/build-types/components/provider/use-block-editor-settings.d.ts.map +1 -1
  290. package/build-types/components/save-publish-panels/index.d.ts.map +1 -1
  291. package/build-types/components/sidebar/index.d.ts.map +1 -1
  292. package/build-types/components/site-discussion/index.d.ts.map +1 -1
  293. package/build-types/components/template-content-panel/index.d.ts +1 -3
  294. package/build-types/components/template-content-panel/index.d.ts.map +1 -1
  295. package/build-types/components/theme-support-check/index.d.ts.map +1 -1
  296. package/build-types/components/time-to-read/index.d.ts.map +1 -1
  297. package/build-types/components/unsaved-changes-warning/index.d.ts.map +1 -1
  298. package/build-types/components/visual-editor/edit-template-blocks-notification.d.ts +1 -1
  299. package/build-types/components/visual-editor/edit-template-blocks-notification.d.ts.map +1 -1
  300. package/build-types/components/visual-editor/index.d.ts.map +1 -1
  301. package/build-types/components/visual-editor/use-select-nearest-editable-block.d.ts.map +1 -0
  302. package/build-types/components/word-count/index.d.ts.map +1 -1
  303. package/build-types/dataviews/actions/delete-post.d.ts.map +1 -1
  304. package/build-types/dataviews/api.d.ts +1 -1
  305. package/build-types/dataviews/api.d.ts.map +1 -1
  306. package/build-types/dataviews/store/private-selectors.d.ts +0 -1
  307. package/build-types/dataviews/store/private-selectors.d.ts.map +1 -1
  308. package/build-types/hooks/custom-sources-backwards-compatibility.d.ts +1 -1
  309. package/build-types/hooks/custom-sources-backwards-compatibility.d.ts.map +1 -1
  310. package/build-types/hooks/pattern-overrides.d.ts.map +1 -1
  311. package/build-types/private-apis.d.ts.map +1 -1
  312. package/build-types/store/actions.d.ts.map +1 -1
  313. package/build-types/store/private-actions.d.ts.map +1 -1
  314. package/build-types/store/reducer.d.ts.map +1 -1
  315. package/build-types/store/selectors.d.ts +0 -1
  316. package/build-types/store/selectors.d.ts.map +1 -1
  317. package/build-types/utils/media-upload/index.d.ts.map +1 -1
  318. package/package.json +38 -37
  319. package/src/bindings/api.js +57 -0
  320. package/src/bindings/pattern-overrides.js +28 -17
  321. package/src/bindings/post-meta.js +19 -14
  322. package/src/components/block-settings-menu/content-only-settings-menu.js +4 -4
  323. package/src/components/blog-title/index.js +7 -2
  324. package/src/components/collapsible-block-toolbar/index.js +1 -3
  325. package/src/components/collapsible-block-toolbar/style.scss +0 -3
  326. package/src/components/document-bar/style.scss +1 -5
  327. package/src/components/document-tools/style.scss +4 -4
  328. package/src/components/editor-interface/style.scss +4 -0
  329. package/src/components/global-styles-provider/index.js +22 -11
  330. package/src/components/header/back-button.js +6 -6
  331. package/src/components/header/index.js +26 -25
  332. package/src/components/header/style.scss +64 -21
  333. package/src/components/inserter-sidebar/style.scss +1 -6
  334. package/src/components/page-attributes/order.js +3 -77
  335. package/src/components/page-attributes/panel.js +1 -7
  336. package/src/components/post-actions/actions.js +150 -32
  337. package/src/components/post-card-panel/index.js +8 -2
  338. package/src/components/post-comments/index.js +2 -2
  339. package/src/components/post-content-information/index.js +7 -1
  340. package/src/components/post-discussion/panel.js +5 -3
  341. package/src/components/post-excerpt/panel.js +2 -1
  342. package/src/components/post-featured-image/index.js +5 -1
  343. package/src/components/post-last-revision/index.js +1 -0
  344. package/src/components/post-panel-row/style.scss +0 -1
  345. package/src/components/post-publish-button/index.js +4 -17
  346. package/src/components/post-publish-panel/maybe-category-panel.js +4 -1
  347. package/src/components/post-publish-panel/maybe-tags-panel.js +1 -1
  348. package/src/components/post-status/index.js +18 -10
  349. package/src/components/post-taxonomies/flat-term-selector.js +19 -5
  350. package/src/components/post-taxonomies/index.js +8 -1
  351. package/src/components/post-template/block-theme.js +5 -1
  352. package/src/components/post-template/classic-theme.js +8 -3
  353. package/src/components/post-template/create-new-template.js +4 -1
  354. package/src/components/post-template/hooks.js +8 -2
  355. package/src/components/post-template/panel.js +10 -2
  356. package/src/components/post-trash/check.js +9 -5
  357. package/src/components/post-url/panel.js +7 -2
  358. package/src/components/posts-per-page/index.js +7 -2
  359. package/src/components/provider/use-block-editor-settings.js +15 -6
  360. package/src/components/save-publish-panels/index.js +1 -4
  361. package/src/components/sidebar/index.js +2 -5
  362. package/src/components/site-discussion/index.js +9 -4
  363. package/src/components/template-content-panel/index.js +3 -2
  364. package/src/components/visual-editor/edit-template-blocks-notification.js +5 -1
  365. package/src/components/visual-editor/index.js +5 -2
  366. package/src/components/visual-editor/style.scss +0 -1
  367. package/src/{hooks → components/visual-editor}/use-select-nearest-editable-block.js +1 -1
  368. package/src/dataviews/actions/delete-post.tsx +2 -0
  369. package/src/hooks/pattern-overrides.js +1 -1
  370. package/src/index.js +0 -1
  371. package/src/private-apis.js +6 -0
  372. package/src/store/test/actions.js +9 -3
  373. package/src/utils/media-upload/index.js +38 -3
  374. package/tsconfig.tsbuildinfo +1 -1
  375. package/build/bindings/index.js +0 -22
  376. package/build/bindings/index.js.map +0 -1
  377. package/build/hooks/use-select-nearest-editable-block.js.map +0 -1
  378. package/build/store/utils/get-filtered-template-parts.js +0 -71
  379. package/build/store/utils/get-filtered-template-parts.js.map +0 -1
  380. package/build/utils/set-nested-value.js +0 -44
  381. package/build/utils/set-nested-value.js.map +0 -1
  382. package/build-module/bindings/index.js +0 -17
  383. package/build-module/bindings/index.js.map +0 -1
  384. package/build-module/hooks/use-select-nearest-editable-block.js.map +0 -1
  385. package/build-module/store/utils/get-filtered-template-parts.js +0 -64
  386. package/build-module/store/utils/get-filtered-template-parts.js.map +0 -1
  387. package/build-module/utils/set-nested-value.js +0 -38
  388. package/build-module/utils/set-nested-value.js.map +0 -1
  389. package/build-types/bindings/index.d.ts +0 -2
  390. package/build-types/bindings/index.d.ts.map +0 -1
  391. package/build-types/hooks/use-select-nearest-editable-block.d.ts.map +0 -1
  392. package/build-types/store/utils/get-filtered-template-parts.d.ts +0 -3
  393. package/build-types/store/utils/get-filtered-template-parts.d.ts.map +0 -1
  394. package/build-types/utils/set-nested-value.d.ts +0 -20
  395. package/build-types/utils/set-nested-value.d.ts.map +0 -1
  396. package/src/bindings/index.js +0 -15
  397. package/src/store/utils/get-filtered-template-parts.js +0 -69
  398. package/src/store/utils/test/get-filtered-template-parts.js +0 -189
  399. package/src/utils/set-nested-value.js +0 -39
  400. /package/build-types/{hooks → components/visual-editor}/use-select-nearest-editable-block.d.ts +0 -0
@@ -33,8 +33,10 @@ function PostTemplateToggle( { isOpen, onClick } ) {
33
33
  return availableTemplates[ templateSlug ];
34
34
  }
35
35
  const template =
36
- select( coreStore ).canUser( 'create', 'templates' ) &&
37
- select( editorStore ).getCurrentTemplateId();
36
+ select( coreStore ).canUser( 'create', {
37
+ kind: 'postType',
38
+ name: 'wp_template',
39
+ } ) && select( editorStore ).getCurrentTemplateId();
38
40
  return (
39
41
  template?.title ||
40
42
  template?.slug ||
@@ -78,7 +80,10 @@ function PostTemplateDropdownContent( { onClose } ) {
78
80
  ( select ) => {
79
81
  const { canUser, getEntityRecords } = select( coreStore );
80
82
  const editorSettings = select( editorStore ).getEditorSettings();
81
- const canCreateTemplates = canUser( 'create', 'templates' );
83
+ const canCreateTemplates = canUser( 'create', {
84
+ kind: 'postType',
85
+ name: 'wp_template',
86
+ } );
82
87
  const _currentTemplateId =
83
88
  select( editorStore ).getCurrentTemplateId();
84
89
  return {
@@ -17,7 +17,10 @@ export default function CreateNewTemplate( { onClick } ) {
17
17
  const { canCreateTemplates } = useSelect( ( select ) => {
18
18
  const { canUser } = select( coreStore );
19
19
  return {
20
- canCreateTemplates: canUser( 'create', 'templates' ),
20
+ canCreateTemplates: canUser( 'create', {
21
+ kind: 'postType',
22
+ name: 'wp_template',
23
+ } ),
21
24
  };
22
25
  }, [] );
23
26
  const [ isCreateModalOpen, setIsCreateModalOpen ] = useState( false );
@@ -23,8 +23,14 @@ export function useAllowSwitchingTemplates() {
23
23
  const { postType, postId } = useEditedPostContext();
24
24
  return useSelect(
25
25
  ( select ) => {
26
- const { getEntityRecord, getEntityRecords } = select( coreStore );
27
- const siteSettings = getEntityRecord( 'root', 'site' );
26
+ const { canUser, getEntityRecord, getEntityRecords } =
27
+ select( coreStore );
28
+ const siteSettings = canUser( 'read', {
29
+ kind: 'root',
30
+ name: 'site',
31
+ } )
32
+ ? getEntityRecord( 'root', 'site' )
33
+ : undefined;
28
34
  const templates = getEntityRecords( 'postType', 'wp_template', {
29
35
  per_page: -1,
30
36
  } );
@@ -48,12 +48,20 @@ export default function PostTemplatePanel() {
48
48
  }
49
49
 
50
50
  const canCreateTemplates =
51
- select( coreStore ).canUser( 'create', 'templates' ) ?? false;
51
+ select( coreStore ).canUser( 'create', {
52
+ kind: 'postType',
53
+ name: 'wp_template',
54
+ } ) ?? false;
52
55
  return canCreateTemplates;
53
56
  }, [] );
54
57
 
55
58
  const canViewTemplates = useSelect( ( select ) => {
56
- return select( coreStore ).canUser( 'read', 'templates' ) ?? false;
59
+ return (
60
+ select( coreStore ).canUser( 'read', {
61
+ kind: 'postType',
62
+ name: 'wp_template',
63
+ } ) ?? false
64
+ );
57
65
  }, [] );
58
66
 
59
67
  if ( ( ! isBlockTheme || ! canViewTemplates ) && isVisible ) {
@@ -21,13 +21,17 @@ export default function PostTrashCheck( { children } ) {
21
21
  const { canTrashPost } = useSelect( ( select ) => {
22
22
  const { isEditedPostNew, getCurrentPostId, getCurrentPostType } =
23
23
  select( editorStore );
24
- const { getPostType, canUser } = select( coreStore );
25
- const postType = getPostType( getCurrentPostType() );
24
+ const { canUser } = select( coreStore );
25
+ const postType = getCurrentPostType();
26
26
  const postId = getCurrentPostId();
27
27
  const isNew = isEditedPostNew();
28
- const resource = postType?.rest_base || ''; // eslint-disable-line camelcase
29
- const canUserDelete =
30
- postId && resource ? canUser( 'delete', resource, postId ) : false;
28
+ const canUserDelete = !! postId
29
+ ? canUser( 'delete', {
30
+ kind: 'postType',
31
+ name: postType,
32
+ id: postId,
33
+ } )
34
+ : false;
31
35
 
32
36
  return {
33
37
  canTrashPost: ( ! isNew || postId ) && canUserDelete,
@@ -61,8 +61,13 @@ export default function PostURLPanel() {
61
61
  function PostURLToggle( { isOpen, onClick } ) {
62
62
  const { slug, isFrontPage, postLink } = useSelect( ( select ) => {
63
63
  const { getCurrentPostId, getCurrentPost } = select( editorStore );
64
- const { getEditedEntityRecord } = select( coreStore );
65
- const siteSettings = getEditedEntityRecord( 'root', 'site' );
64
+ const { getEditedEntityRecord, canUser } = select( coreStore );
65
+ const siteSettings = canUser( 'read', {
66
+ kind: 'root',
67
+ name: 'site',
68
+ } )
69
+ ? getEditedEntityRecord( 'root', 'site' )
70
+ : undefined;
66
71
  const _id = getCurrentPostId();
67
72
  return {
68
73
  slug: select( editorStore ).getEditedPostSlug(),
@@ -24,8 +24,13 @@ export default function PostsPerPage() {
24
24
  const { postsPerPage, isTemplate, postSlug } = useSelect( ( select ) => {
25
25
  const { getEditedPostAttribute, getCurrentPostType } =
26
26
  select( editorStore );
27
- const { getEditedEntityRecord } = select( coreStore );
28
- const siteSettings = getEditedEntityRecord( 'root', 'site' );
27
+ const { getEditedEntityRecord, canUser } = select( coreStore );
28
+ const siteSettings = canUser( 'read', {
29
+ kind: 'root',
30
+ name: 'site',
31
+ } )
32
+ ? getEditedEntityRecord( 'root', 'site' )
33
+ : undefined;
29
34
  return {
30
35
  isTemplate: getCurrentPostType() === TEMPLATE_POST_TYPE,
31
36
  postSlug: getEditedPostAttribute( 'slug' ),
@@ -83,8 +83,6 @@ const BLOCK_EDITOR_SETTINGS = [
83
83
  '__unstableIsPreviewMode',
84
84
  '__unstableResolvedAssets',
85
85
  '__unstableIsBlockBasedTheme',
86
- '__experimentalArchiveTitleTypeLabel',
87
- '__experimentalArchiveTitleNameLabel',
88
86
  ];
89
87
 
90
88
  const {
@@ -135,7 +133,10 @@ function useBlockEditorSettings( settings, postType, postId, renderingMode ) {
135
133
  const { getBlockTypes } = select( blocksStore );
136
134
  const { getBlocksByName, getBlockAttributes } =
137
135
  select( blockEditorStore );
138
- const siteSettings = canUser( 'read', 'settings' )
136
+ const siteSettings = canUser( 'read', {
137
+ kind: 'root',
138
+ name: 'site',
139
+ } )
139
140
  ? getEntityRecord( 'root', 'site' )
140
141
  : undefined;
141
142
 
@@ -169,8 +170,15 @@ function useBlockEditorSettings( settings, postType, postId, renderingMode ) {
169
170
  hiddenBlockTypes: get( 'core', 'hiddenBlockTypes' ),
170
171
  isDistractionFree: get( 'core', 'distractionFree' ),
171
172
  keepCaretInsideBlock: get( 'core', 'keepCaretInsideBlock' ),
172
- hasUploadPermissions: canUser( 'create', 'media' ) ?? true,
173
- userCanCreatePages: canUser( 'create', 'pages' ),
173
+ hasUploadPermissions:
174
+ canUser( 'create', {
175
+ kind: 'root',
176
+ name: 'media',
177
+ } ) ?? true,
178
+ userCanCreatePages: canUser( 'create', {
179
+ kind: 'postType',
180
+ name: 'page',
181
+ } ),
174
182
  pageOnFront: siteSettings?.page_on_front,
175
183
  pageForPosts: siteSettings?.page_for_posts,
176
184
  userPatternCategories: getUserPatternCategories(),
@@ -303,7 +311,7 @@ function useBlockEditorSettings( settings, postType, postId, renderingMode ) {
303
311
  __experimentalUndo: undo,
304
312
  // Check whether we want all site editor frames to have outlines
305
313
  // including the navigation / pattern / parts editors.
306
- outlineMode: postType === 'wp_template',
314
+ outlineMode: ! isDistractionFree && postType === 'wp_template',
307
315
  // Check these two properties: they were not present in the site editor.
308
316
  __experimentalCreatePageEntity: createPageEntity,
309
317
  __experimentalUserCanCreatePages: userCanCreatePages,
@@ -345,6 +353,7 @@ function useBlockEditorSettings( settings, postType, postId, renderingMode ) {
345
353
  setIsInserterOpened,
346
354
  sectionRootClientId,
347
355
  globalStylesData,
356
+ globalStylesLinksData,
348
357
  ] );
349
358
  }
350
359
 
@@ -14,7 +14,6 @@ import PostPublishPanel from '../post-publish-panel';
14
14
  import PluginPrePublishPanel from '../plugin-pre-publish-panel';
15
15
  import PluginPostPublishPanel from '../plugin-post-publish-panel';
16
16
  import { store as editorStore } from '../../store';
17
- import { unlock } from '../../lock-unlock';
18
17
 
19
18
  const { Fill, Slot } = createSlotFill( 'ActionsPanel' );
20
19
 
@@ -41,9 +40,7 @@ export default function SavePublishPanels( {
41
40
  isEditedPostDirty,
42
41
  hasNonPostEntityChanges,
43
42
  } = select( editorStore );
44
- const _hasOtherEntitiesChanges =
45
- hasNonPostEntityChanges() ||
46
- unlock( select( editorStore ) ).hasPostMetaChanges();
43
+ const _hasOtherEntitiesChanges = hasNonPostEntityChanges();
47
44
  return {
48
45
  publishSidebarOpened: isPublishSidebarOpened(),
49
46
  isPublishable:
@@ -51,7 +51,6 @@ const SIDEBAR_ACTIVE_BY_DEFAULT = Platform.select( {
51
51
  const SidebarContent = ( {
52
52
  tabName,
53
53
  keyboardShortcut,
54
- renderingMode,
55
54
  onActionPerformed,
56
55
  extraPanels,
57
56
  } ) => {
@@ -112,7 +111,7 @@ const SidebarContent = ( {
112
111
  <Tabs.TabPanel tabId={ sidebars.document } focusable={ false }>
113
112
  <PostSummary onActionPerformed={ onActionPerformed } />
114
113
  <PluginDocumentSettingPanel.Slot />
115
- <TemplateContentPanel renderingMode={ renderingMode } />
114
+ <TemplateContentPanel />
116
115
  <TemplatePartContentPanel />
117
116
  <PostTransformPanel />
118
117
  <PostTaxonomiesPanel />
@@ -129,7 +128,7 @@ const SidebarContent = ( {
129
128
 
130
129
  const Sidebar = ( { extraPanels, onActionPerformed } ) => {
131
130
  useAutoSwitchEditorSidebars();
132
- const { tabName, keyboardShortcut, showSummary, renderingMode } = useSelect(
131
+ const { tabName, keyboardShortcut, showSummary } = useSelect(
133
132
  ( select ) => {
134
133
  const shortcut = select(
135
134
  keyboardShortcutsStore
@@ -158,7 +157,6 @@ const Sidebar = ( { extraPanels, onActionPerformed } ) => {
158
157
  TEMPLATE_PART_POST_TYPE,
159
158
  NAVIGATION_POST_TYPE,
160
159
  ].includes( select( editorStore ).getCurrentPostType() ),
161
- renderingMode: select( editorStore ).getRenderingMode(),
162
160
  };
163
161
  },
164
162
  []
@@ -185,7 +183,6 @@ const Sidebar = ( { extraPanels, onActionPerformed } ) => {
185
183
  tabName={ tabName }
186
184
  keyboardShortcut={ keyboardShortcut }
187
185
  showSummary={ showSummary }
188
- renderingMode={ renderingMode }
189
186
  onActionPerformed={ onActionPerformed }
190
187
  extraPanels={ extraPanels }
191
188
  />
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { __ } from '@wordpress/i18n';
4
+ import { __, _x } from '@wordpress/i18n';
5
5
  import { useSelect, useDispatch } from '@wordpress/data';
6
6
  import { store as coreStore } from '@wordpress/core-data';
7
7
  import {
@@ -25,7 +25,7 @@ const COMMENT_OPTIONS = [
25
25
  {
26
26
  label: (
27
27
  <>
28
- { __( 'Open' ) }
28
+ { _x( 'Open', 'Adjective: e.g. "Comments are open"' ) }
29
29
  <Text variant="muted" size={ 12 }>
30
30
  { __( 'Visitors can add new comments and replies.' ) }
31
31
  </Text>
@@ -55,8 +55,13 @@ export default function SiteDiscussion() {
55
55
  ( select ) => {
56
56
  const { getEditedPostAttribute, getCurrentPostType } =
57
57
  select( editorStore );
58
- const { getEditedEntityRecord } = select( coreStore );
59
- const siteSettings = getEditedEntityRecord( 'root', 'site' );
58
+ const { getEditedEntityRecord, canUser } = select( coreStore );
59
+ const siteSettings = canUser( 'read', {
60
+ kind: 'root',
61
+ name: 'site',
62
+ } )
63
+ ? getEditedEntityRecord( 'root', 'site' )
64
+ : undefined;
60
65
  return {
61
66
  isTemplate: getCurrentPostType() === TEMPLATE_POST_TYPE,
62
67
  postSlug: getEditedPostAttribute( 'slug' ),
@@ -27,9 +27,9 @@ const PAGE_CONTENT_BLOCKS = [
27
27
 
28
28
  const TEMPLATE_PART_BLOCK = 'core/template-part';
29
29
 
30
- export default function TemplateContentPanel( { renderingMode } ) {
30
+ export default function TemplateContentPanel() {
31
31
  const { enableComplementaryArea } = useDispatch( interfaceStore );
32
- const { clientIds, postType } = useSelect( ( select ) => {
32
+ const { clientIds, postType, renderingMode } = useSelect( ( select ) => {
33
33
  const { getBlocksByName } = select( blockEditorStore );
34
34
  const { getCurrentPostType } = select( editorStore );
35
35
  const _postType = getCurrentPostType();
@@ -40,6 +40,7 @@ export default function TemplateContentPanel( { renderingMode } ) {
40
40
  ? TEMPLATE_PART_BLOCK
41
41
  : PAGE_CONTENT_BLOCKS
42
42
  ),
43
+ renderingMode: select( editorStore ).getRenderingMode(),
43
44
  };
44
45
  }, [] );
45
46
 
@@ -40,7 +40,11 @@ export default function EditTemplateBlocksNotification( { contentRef } ) {
40
40
 
41
41
  const canEditTemplate = useSelect(
42
42
  ( select ) =>
43
- select( coreStore ).canUser( 'create', 'templates' ) ?? false
43
+ !! select( coreStore ).canUser( 'create', {
44
+ kind: 'postType',
45
+ name: 'wp_template',
46
+ } ),
47
+ []
44
48
  );
45
49
 
46
50
  const [ isDialogOpen, setIsDialogOpen ] = useState( false );
@@ -34,7 +34,7 @@ import { store as editorStore } from '../../store';
34
34
  import { unlock } from '../../lock-unlock';
35
35
  import EditTemplateBlocksNotification from './edit-template-blocks-notification';
36
36
  import ResizableEditor from '../resizable-editor';
37
- import useSelectNearestEditableBlock from '../../hooks/use-select-nearest-editable-block';
37
+ import useSelectNearestEditableBlock from './use-select-nearest-editable-block';
38
38
  import {
39
39
  NAVIGATION_POST_TYPE,
40
40
  PATTERN_POST_TYPE,
@@ -142,7 +142,10 @@ function VisualEditor( {
142
142
  const editorSettings = getEditorSettings();
143
143
  const supportsTemplateMode = editorSettings.supportsTemplateMode;
144
144
  const postTypeObject = getPostType( postTypeSlug );
145
- const canEditTemplate = canUser( 'create', 'templates' );
145
+ const canEditTemplate = canUser( 'create', {
146
+ kind: 'postType',
147
+ name: 'wp_template',
148
+ } );
146
149
  const currentTemplateId = getCurrentTemplateId();
147
150
  const template = currentTemplateId
148
151
  ? getEditedEntityRecord(
@@ -1,6 +1,5 @@
1
1
  .editor-visual-editor {
2
2
  position: relative;
3
- height: 100%;
4
3
  display: block;
5
4
  background-color: $gray-300;
6
5
  // Make this a stacking context to contain the z-index of children elements.
@@ -8,7 +8,7 @@ import { store as blockEditorStore } from '@wordpress/block-editor';
8
8
  /**
9
9
  * Internal dependencies
10
10
  */
11
- import { unlock } from '../lock-unlock';
11
+ import { unlock } from '../../lock-unlock';
12
12
 
13
13
  const DISTANCE_THRESHOLD = 500;
14
14
 
@@ -78,6 +78,7 @@ const deletePostAction: Action< Post > = {
78
78
  onClick={ closeModal }
79
79
  disabled={ isBusy }
80
80
  accessibleWhenDisabled
81
+ __next40pxDefaultSize
81
82
  >
82
83
  { __( 'Cancel' ) }
83
84
  </Button>
@@ -95,6 +96,7 @@ const deletePostAction: Action< Post > = {
95
96
  isBusy={ isBusy }
96
97
  disabled={ isBusy }
97
98
  accessibleWhenDisabled
99
+ __next40pxDefaultSize
98
100
  >
99
101
  { __( 'Delete' ) }
100
102
  </Button>
@@ -41,7 +41,7 @@ const withPatternOverrideControls = createHigherOrderComponent(
41
41
 
42
42
  return (
43
43
  <>
44
- <BlockEdit { ...props } />
44
+ <BlockEdit key="edit" { ...props } />
45
45
  { props.isSelected && isSupportedBlock && (
46
46
  <ControlsWithStoreSubscription { ...props } />
47
47
  ) }
package/src/index.js CHANGED
@@ -1,7 +1,6 @@
1
1
  /**
2
2
  * Internal dependencies
3
3
  */
4
- import './bindings';
5
4
  import './hooks';
6
5
 
7
6
  export { storeConfig, store } from './store';
@@ -24,6 +24,10 @@ import {
24
24
  GlobalStylesProvider,
25
25
  } from './components/global-styles-provider';
26
26
  import registerDefaultActions from './dataviews/actions';
27
+ import {
28
+ registerCoreBlockBindingsSources,
29
+ bootstrapBlockBindingsSourcesFromServer,
30
+ } from './bindings/api';
27
31
 
28
32
  const { store: interfaceStore, ...remainingInterfaceApis } = interfaceApis;
29
33
 
@@ -43,6 +47,8 @@ lock( privateApis, {
43
47
  ViewMoreMenuGroup,
44
48
  ResizableEditor,
45
49
  registerDefaultActions,
50
+ registerCoreBlockBindingsSources,
51
+ bootstrapBlockBindingsSourcesFromServer,
46
52
 
47
53
  // This is a temporary private API while we're updating the site editor to use EditorProvider.
48
54
  useBlockEditorSettings,
@@ -90,7 +90,9 @@ describe( 'Post actions', () => {
90
90
  method === 'GET' &&
91
91
  path.startsWith( '/wp/v2/types/post' )
92
92
  ) {
93
- return {};
93
+ return {
94
+ json: () => Promise.resolve( {} ),
95
+ };
94
96
  }
95
97
 
96
98
  throw {
@@ -178,7 +180,9 @@ describe( 'Post actions', () => {
178
180
  path.startsWith( '/wp/v2/types/post' ) ||
179
181
  path.startsWith( `/wp/v2/posts/${ postId }` )
180
182
  ) {
181
- return {};
183
+ return {
184
+ json: () => Promise.resolve( {} ),
185
+ };
182
186
  }
183
187
  }
184
188
 
@@ -262,7 +266,9 @@ describe( 'Post actions', () => {
262
266
  method === 'GET' &&
263
267
  path.startsWith( '/wp/v2/types/post' )
264
268
  ) {
265
- return {};
269
+ return {
270
+ json: () => Promise.resolve( {} ),
271
+ };
266
272
  }
267
273
 
268
274
  throw {
@@ -1,7 +1,12 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import { v4 as uuid } from 'uuid';
5
+
1
6
  /**
2
7
  * WordPress dependencies
3
8
  */
4
- import { select } from '@wordpress/data';
9
+ import { select, dispatch } from '@wordpress/data';
5
10
  import { uploadMedia } from '@wordpress/media-utils';
6
11
 
7
12
  /**
@@ -32,7 +37,16 @@ export default function mediaUpload( {
32
37
  onFileChange,
33
38
  } ) {
34
39
  const { getCurrentPost, getEditorSettings } = select( editorStore );
40
+ const {
41
+ lockPostAutosaving,
42
+ unlockPostAutosaving,
43
+ lockPostSaving,
44
+ unlockPostSaving,
45
+ } = dispatch( editorStore );
46
+
35
47
  const wpAllowedMimeTypes = getEditorSettings().allowedMimeTypes;
48
+ const lockKey = `image-upload-${ uuid() }`;
49
+ let imageIsUploading = false;
36
50
  maxUploadFileSize =
37
51
  maxUploadFileSize || getEditorSettings().maxUploadFileSize;
38
52
  const currentPost = getCurrentPost();
@@ -41,18 +55,39 @@ export default function mediaUpload( {
41
55
  typeof currentPost?.id === 'number'
42
56
  ? currentPost.id
43
57
  : currentPost?.wp_id;
58
+ const setSaveLock = () => {
59
+ lockPostSaving( lockKey );
60
+ lockPostAutosaving( lockKey );
61
+ imageIsUploading = true;
62
+ };
63
+
44
64
  const postData = currentPostId ? { post: currentPostId } : {};
65
+ const clearSaveLock = () => {
66
+ unlockPostSaving( lockKey );
67
+ unlockPostAutosaving( lockKey );
68
+ imageIsUploading = false;
69
+ };
45
70
 
46
71
  uploadMedia( {
47
72
  allowedTypes,
48
73
  filesList,
49
- onFileChange,
74
+ onFileChange: ( file ) => {
75
+ if ( ! imageIsUploading ) {
76
+ setSaveLock();
77
+ } else {
78
+ clearSaveLock();
79
+ }
80
+ onFileChange( file );
81
+ },
50
82
  additionalData: {
51
83
  ...postData,
52
84
  ...additionalData,
53
85
  },
54
86
  maxUploadFileSize,
55
- onError: ( { message } ) => onError( message ),
87
+ onError: ( { message } ) => {
88
+ clearSaveLock();
89
+ onError( message );
90
+ },
56
91
  wpAllowedMimeTypes,
57
92
  } );
58
93
  }