@wordpress/editor 14.4.0 → 14.6.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 (375) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/build/bindings/post-meta.js +12 -0
  3. package/build/bindings/post-meta.js.map +1 -1
  4. package/build/components/blog-title/index.js +1 -1
  5. package/build/components/blog-title/index.js.map +1 -1
  6. package/build/components/commands/index.js +8 -2
  7. package/build/components/commands/index.js.map +1 -1
  8. package/build/components/create-template-part-modal/index.js +1 -0
  9. package/build/components/create-template-part-modal/index.js.map +1 -1
  10. package/build/components/document-bar/index.js +1 -1
  11. package/build/components/document-bar/index.js.map +1 -1
  12. package/build/components/global-styles-provider/index.js +17 -4
  13. package/build/components/global-styles-provider/index.js.map +1 -1
  14. package/build/components/header/index.js +2 -3
  15. package/build/components/header/index.js.map +1 -1
  16. package/build/components/inserter-sidebar/index.js +5 -2
  17. package/build/components/inserter-sidebar/index.js.map +1 -1
  18. package/build/components/page-attributes/parent.js +11 -6
  19. package/build/components/page-attributes/parent.js.map +1 -1
  20. package/build/components/post-actions/actions.js +10 -811
  21. package/build/components/post-actions/actions.js.map +1 -1
  22. package/build/components/post-actions/index.js +20 -19
  23. package/build/components/post-actions/index.js.map +1 -1
  24. package/build/components/post-author/hook.js +10 -3
  25. package/build/components/post-author/hook.js.map +1 -1
  26. package/build/components/post-author/panel.js +2 -1
  27. package/build/components/post-author/panel.js.map +1 -1
  28. package/build/components/post-card-panel/index.js +21 -21
  29. package/build/components/post-card-panel/index.js.map +1 -1
  30. package/build/components/post-comments/index.js +6 -20
  31. package/build/components/post-comments/index.js.map +1 -1
  32. package/build/components/post-featured-image/index.js +2 -0
  33. package/build/components/post-featured-image/index.js.map +1 -1
  34. package/build/components/post-publish-panel/postpublish.js +4 -0
  35. package/build/components/post-publish-panel/postpublish.js.map +1 -1
  36. package/build/components/post-slug/index.js +1 -0
  37. package/build/components/post-slug/index.js.map +1 -1
  38. package/build/components/post-status/index.js +17 -41
  39. package/build/components/post-status/index.js.map +1 -1
  40. package/build/components/post-taxonomies/hierarchical-term-selector.js +2 -1
  41. package/build/components/post-taxonomies/hierarchical-term-selector.js.map +1 -1
  42. package/build/components/post-template/create-new-template-modal.js +3 -0
  43. package/build/components/post-template/create-new-template-modal.js.map +1 -1
  44. package/build/components/post-url/index.js +6 -5
  45. package/build/components/post-url/index.js.map +1 -1
  46. package/build/components/post-url/panel.js +3 -2
  47. package/build/components/post-url/panel.js.map +1 -1
  48. package/build/components/preview-dropdown/index.js +82 -17
  49. package/build/components/preview-dropdown/index.js.map +1 -1
  50. package/build/components/provider/disable-non-page-content-blocks.js +14 -18
  51. package/build/components/provider/disable-non-page-content-blocks.js.map +1 -1
  52. package/build/components/sidebar/post-summary.js +10 -7
  53. package/build/components/sidebar/post-summary.js.map +1 -1
  54. package/build/components/site-discussion/index.js +6 -20
  55. package/build/components/site-discussion/index.js.map +1 -1
  56. package/build/components/template-content-panel/index.js +15 -13
  57. package/build/components/template-content-panel/index.js.map +1 -1
  58. package/build/components/visual-editor/index.js +2 -1
  59. package/build/components/visual-editor/index.js.map +1 -1
  60. package/build/dataviews/actions/duplicate-pattern.js +48 -0
  61. package/build/dataviews/actions/duplicate-pattern.js.map +1 -0
  62. package/build/dataviews/actions/duplicate-post.js +146 -0
  63. package/build/dataviews/actions/duplicate-post.js.map +1 -0
  64. package/build/dataviews/actions/duplicate-post.native.js +9 -0
  65. package/build/dataviews/actions/duplicate-post.native.js.map +1 -0
  66. package/build/dataviews/actions/duplicate-template-part.js +67 -0
  67. package/build/dataviews/actions/duplicate-template-part.js.map +1 -0
  68. package/build/dataviews/actions/export-pattern.native.js +9 -0
  69. package/build/dataviews/actions/export-pattern.native.js.map +1 -0
  70. package/build/dataviews/actions/permanently-delete-post.js +107 -0
  71. package/build/dataviews/actions/permanently-delete-post.js.map +1 -0
  72. package/build/dataviews/actions/rename-post.js +125 -0
  73. package/build/dataviews/actions/rename-post.js.map +1 -0
  74. package/build/dataviews/actions/reorder-page.js +116 -0
  75. package/build/dataviews/actions/reorder-page.js.map +1 -0
  76. package/build/dataviews/actions/reorder-page.native.js +9 -0
  77. package/build/dataviews/actions/reorder-page.native.js.map +1 -0
  78. package/build/dataviews/actions/reset-post.js +1 -1
  79. package/build/dataviews/actions/reset-post.js.map +1 -1
  80. package/build/dataviews/actions/restore-post.js +112 -0
  81. package/build/dataviews/actions/restore-post.js.map +1 -0
  82. package/build/dataviews/actions/trash-post.js +142 -0
  83. package/build/dataviews/actions/trash-post.js.map +1 -0
  84. package/build/dataviews/actions/utils.js +9 -1
  85. package/build/dataviews/actions/utils.js.map +1 -1
  86. package/build/dataviews/actions/view-post-revisions.js +49 -0
  87. package/build/dataviews/actions/view-post-revisions.js.map +1 -0
  88. package/build/dataviews/actions/view-post.js +36 -0
  89. package/build/dataviews/actions/view-post.js.map +1 -0
  90. package/build/dataviews/fields/index.js +32 -0
  91. package/build/dataviews/fields/index.js.map +1 -0
  92. package/build/dataviews/store/private-actions.js +59 -0
  93. package/build/dataviews/store/private-actions.js.map +1 -1
  94. package/build/dataviews/store/private-selectors.js +10 -10
  95. package/build/dataviews/store/private-selectors.js.map +1 -1
  96. package/build/dataviews/store/reducer.js +15 -1
  97. package/build/dataviews/store/reducer.js.map +1 -1
  98. package/build/dataviews/types.js.map +1 -1
  99. package/build/private-apis.js +2 -2
  100. package/build/private-apis.js.map +1 -1
  101. package/build/store/actions.js +16 -2
  102. package/build/store/actions.js.map +1 -1
  103. package/build/store/private-actions.js +9 -2
  104. package/build/store/private-actions.js.map +1 -1
  105. package/build/store/private-selectors.js +33 -2
  106. package/build/store/private-selectors.js.map +1 -1
  107. package/build/store/utils/is-template-revertable.js +1 -1
  108. package/build/store/utils/is-template-revertable.js.map +1 -1
  109. package/build-module/bindings/post-meta.js +12 -0
  110. package/build-module/bindings/post-meta.js.map +1 -1
  111. package/build-module/components/blog-title/index.js +1 -1
  112. package/build-module/components/blog-title/index.js.map +1 -1
  113. package/build-module/components/commands/index.js +8 -2
  114. package/build-module/components/commands/index.js.map +1 -1
  115. package/build-module/components/create-template-part-modal/index.js +1 -0
  116. package/build-module/components/create-template-part-modal/index.js.map +1 -1
  117. package/build-module/components/document-bar/index.js +1 -1
  118. package/build-module/components/document-bar/index.js.map +1 -1
  119. package/build-module/components/global-styles-provider/index.js +17 -4
  120. package/build-module/components/global-styles-provider/index.js.map +1 -1
  121. package/build-module/components/header/index.js +2 -3
  122. package/build-module/components/header/index.js.map +1 -1
  123. package/build-module/components/inserter-sidebar/index.js +5 -2
  124. package/build-module/components/inserter-sidebar/index.js.map +1 -1
  125. package/build-module/components/page-attributes/parent.js +12 -7
  126. package/build-module/components/page-attributes/parent.js.map +1 -1
  127. package/build-module/components/post-actions/actions.js +12 -814
  128. package/build-module/components/post-actions/actions.js.map +1 -1
  129. package/build-module/components/post-actions/index.js +20 -19
  130. package/build-module/components/post-actions/index.js.map +1 -1
  131. package/build-module/components/post-author/hook.js +10 -3
  132. package/build-module/components/post-author/hook.js.map +1 -1
  133. package/build-module/components/post-author/panel.js +2 -1
  134. package/build-module/components/post-author/panel.js.map +1 -1
  135. package/build-module/components/post-card-panel/index.js +21 -21
  136. package/build-module/components/post-card-panel/index.js.map +1 -1
  137. package/build-module/components/post-comments/index.js +7 -23
  138. package/build-module/components/post-comments/index.js.map +1 -1
  139. package/build-module/components/post-featured-image/index.js +2 -0
  140. package/build-module/components/post-featured-image/index.js.map +1 -1
  141. package/build-module/components/post-publish-panel/postpublish.js +4 -0
  142. package/build-module/components/post-publish-panel/postpublish.js.map +1 -1
  143. package/build-module/components/post-slug/index.js +1 -0
  144. package/build-module/components/post-slug/index.js.map +1 -1
  145. package/build-module/components/post-status/index.js +19 -43
  146. package/build-module/components/post-status/index.js.map +1 -1
  147. package/build-module/components/post-taxonomies/hierarchical-term-selector.js +3 -2
  148. package/build-module/components/post-taxonomies/hierarchical-term-selector.js.map +1 -1
  149. package/build-module/components/post-template/create-new-template-modal.js +3 -0
  150. package/build-module/components/post-template/create-new-template-modal.js.map +1 -1
  151. package/build-module/components/post-url/index.js +7 -6
  152. package/build-module/components/post-url/index.js.map +1 -1
  153. package/build-module/components/post-url/panel.js +4 -5
  154. package/build-module/components/post-url/panel.js.map +1 -1
  155. package/build-module/components/preview-dropdown/index.js +84 -19
  156. package/build-module/components/preview-dropdown/index.js.map +1 -1
  157. package/build-module/components/provider/disable-non-page-content-blocks.js +15 -19
  158. package/build-module/components/provider/disable-non-page-content-blocks.js.map +1 -1
  159. package/build-module/components/sidebar/post-summary.js +10 -7
  160. package/build-module/components/sidebar/post-summary.js.map +1 -1
  161. package/build-module/components/site-discussion/index.js +7 -21
  162. package/build-module/components/site-discussion/index.js.map +1 -1
  163. package/build-module/components/template-content-panel/index.js +16 -14
  164. package/build-module/components/template-content-panel/index.js.map +1 -1
  165. package/build-module/components/visual-editor/index.js +2 -1
  166. package/build-module/components/visual-editor/index.js.map +1 -1
  167. package/build-module/dataviews/actions/duplicate-pattern.js +39 -0
  168. package/build-module/dataviews/actions/duplicate-pattern.js.map +1 -0
  169. package/build-module/dataviews/actions/duplicate-post.js +139 -0
  170. package/build-module/dataviews/actions/duplicate-post.js.map +1 -0
  171. package/build-module/dataviews/actions/duplicate-post.native.js +3 -0
  172. package/build-module/dataviews/actions/duplicate-post.native.js.map +1 -0
  173. package/build-module/dataviews/actions/duplicate-template-part.js +58 -0
  174. package/build-module/dataviews/actions/duplicate-template-part.js.map +1 -0
  175. package/build-module/dataviews/actions/export-pattern.native.js +3 -0
  176. package/build-module/dataviews/actions/export-pattern.native.js.map +1 -0
  177. package/build-module/dataviews/actions/permanently-delete-post.js +99 -0
  178. package/build-module/dataviews/actions/permanently-delete-post.js.map +1 -0
  179. package/build-module/dataviews/actions/rename-post.js +118 -0
  180. package/build-module/dataviews/actions/rename-post.js.map +1 -0
  181. package/build-module/dataviews/actions/reorder-page.js +111 -0
  182. package/build-module/dataviews/actions/reorder-page.js.map +1 -0
  183. package/build-module/dataviews/actions/reorder-page.native.js +3 -0
  184. package/build-module/dataviews/actions/reorder-page.native.js.map +1 -0
  185. package/build-module/dataviews/actions/reset-post.js +1 -1
  186. package/build-module/dataviews/actions/reset-post.js.map +1 -1
  187. package/build-module/dataviews/actions/restore-post.js +104 -0
  188. package/build-module/dataviews/actions/restore-post.js.map +1 -0
  189. package/build-module/dataviews/actions/trash-post.js +135 -0
  190. package/build-module/dataviews/actions/trash-post.js.map +1 -0
  191. package/build-module/dataviews/actions/utils.js +7 -1
  192. package/build-module/dataviews/actions/utils.js.map +1 -1
  193. package/build-module/dataviews/actions/view-post-revisions.js +43 -0
  194. package/build-module/dataviews/actions/view-post-revisions.js.map +1 -0
  195. package/build-module/dataviews/actions/view-post.js +30 -0
  196. package/build-module/dataviews/actions/view-post.js.map +1 -0
  197. package/build-module/dataviews/fields/index.js +26 -0
  198. package/build-module/dataviews/fields/index.js.map +1 -0
  199. package/build-module/dataviews/store/private-actions.js +54 -0
  200. package/build-module/dataviews/store/private-actions.js.map +1 -1
  201. package/build-module/dataviews/store/private-selectors.js +8 -9
  202. package/build-module/dataviews/store/private-selectors.js.map +1 -1
  203. package/build-module/dataviews/store/reducer.js +15 -1
  204. package/build-module/dataviews/store/reducer.js.map +1 -1
  205. package/build-module/dataviews/types.js.map +1 -1
  206. package/build-module/private-apis.js +2 -2
  207. package/build-module/private-apis.js.map +1 -1
  208. package/build-module/store/actions.js +16 -2
  209. package/build-module/store/actions.js.map +1 -1
  210. package/build-module/store/private-actions.js +9 -2
  211. package/build-module/store/private-actions.js.map +1 -1
  212. package/build-module/store/private-selectors.js +32 -2
  213. package/build-module/store/private-selectors.js.map +1 -1
  214. package/build-module/store/utils/is-template-revertable.js +1 -1
  215. package/build-module/store/utils/is-template-revertable.js.map +1 -1
  216. package/build-style/style-rtl.css +21 -34
  217. package/build-style/style.css +21 -34
  218. package/build-types/bindings/post-meta.d.ts +6 -0
  219. package/build-types/bindings/post-meta.d.ts.map +1 -1
  220. package/build-types/components/commands/index.d.ts.map +1 -1
  221. package/build-types/components/create-template-part-modal/index.d.ts.map +1 -1
  222. package/build-types/components/global-styles-provider/index.d.ts.map +1 -1
  223. package/build-types/components/header/index.d.ts.map +1 -1
  224. package/build-types/components/inserter-sidebar/index.d.ts.map +1 -1
  225. package/build-types/components/page-attributes/parent.d.ts.map +1 -1
  226. package/build-types/components/post-actions/actions.d.ts +1 -26
  227. package/build-types/components/post-actions/actions.d.ts.map +1 -1
  228. package/build-types/components/post-actions/index.d.ts +3 -2
  229. package/build-types/components/post-actions/index.d.ts.map +1 -1
  230. package/build-types/components/post-author/hook.d.ts +1 -1
  231. package/build-types/components/post-author/hook.d.ts.map +1 -1
  232. package/build-types/components/post-author/panel.d.ts.map +1 -1
  233. package/build-types/components/post-card-panel/index.d.ts +4 -2
  234. package/build-types/components/post-card-panel/index.d.ts.map +1 -1
  235. package/build-types/components/post-comments/index.d.ts.map +1 -1
  236. package/build-types/components/post-slug/index.d.ts.map +1 -1
  237. package/build-types/components/post-status/index.d.ts +2 -1
  238. package/build-types/components/post-status/index.d.ts.map +1 -1
  239. package/build-types/components/post-taxonomies/hierarchical-term-selector.d.ts +1 -17
  240. package/build-types/components/post-taxonomies/hierarchical-term-selector.d.ts.map +1 -1
  241. package/build-types/components/post-template/create-new-template-modal.d.ts.map +1 -1
  242. package/build-types/components/post-url/index.d.ts.map +1 -1
  243. package/build-types/components/post-url/panel.d.ts.map +1 -1
  244. package/build-types/components/preview-dropdown/index.d.ts.map +1 -1
  245. package/build-types/components/provider/disable-non-page-content-blocks.d.ts.map +1 -1
  246. package/build-types/components/sidebar/post-summary.d.ts.map +1 -1
  247. package/build-types/components/site-discussion/index.d.ts.map +1 -1
  248. package/build-types/components/template-content-panel/index.d.ts.map +1 -1
  249. package/build-types/components/visual-editor/index.d.ts.map +1 -1
  250. package/build-types/dataviews/actions/duplicate-pattern.d.ts +5 -0
  251. package/build-types/dataviews/actions/duplicate-pattern.d.ts.map +1 -0
  252. package/build-types/dataviews/actions/duplicate-post.d.ts +5 -0
  253. package/build-types/dataviews/actions/duplicate-post.d.ts.map +1 -0
  254. package/build-types/dataviews/actions/duplicate-post.native.d.ts +3 -0
  255. package/build-types/dataviews/actions/duplicate-post.native.d.ts.map +1 -0
  256. package/build-types/dataviews/actions/duplicate-template-part.d.ts +5 -0
  257. package/build-types/dataviews/actions/duplicate-template-part.d.ts.map +1 -0
  258. package/build-types/dataviews/actions/export-pattern.native.d.ts +3 -0
  259. package/build-types/dataviews/actions/export-pattern.native.d.ts.map +1 -0
  260. package/build-types/dataviews/actions/permanently-delete-post.d.ts +5 -0
  261. package/build-types/dataviews/actions/permanently-delete-post.d.ts.map +1 -0
  262. package/build-types/dataviews/actions/rename-post.d.ts +5 -0
  263. package/build-types/dataviews/actions/rename-post.d.ts.map +1 -0
  264. package/build-types/dataviews/actions/reorder-page.d.ts +8 -0
  265. package/build-types/dataviews/actions/reorder-page.d.ts.map +1 -0
  266. package/build-types/dataviews/actions/reorder-page.native.d.ts +3 -0
  267. package/build-types/dataviews/actions/reorder-page.native.d.ts.map +1 -0
  268. package/build-types/dataviews/actions/reset-post.d.ts.map +1 -1
  269. package/build-types/dataviews/actions/restore-post.d.ts +5 -0
  270. package/build-types/dataviews/actions/restore-post.d.ts.map +1 -0
  271. package/build-types/dataviews/actions/trash-post.d.ts +5 -0
  272. package/build-types/dataviews/actions/trash-post.d.ts.map +1 -0
  273. package/build-types/dataviews/actions/utils.d.ts +5 -3
  274. package/build-types/dataviews/actions/utils.d.ts.map +1 -1
  275. package/build-types/dataviews/actions/view-post-revisions.d.ts +8 -0
  276. package/build-types/dataviews/actions/view-post-revisions.d.ts.map +1 -0
  277. package/build-types/dataviews/actions/view-post.d.ts +8 -0
  278. package/build-types/dataviews/actions/view-post.d.ts.map +1 -0
  279. package/build-types/dataviews/fields/index.d.ts +8 -0
  280. package/build-types/dataviews/fields/index.d.ts.map +1 -0
  281. package/build-types/dataviews/store/private-actions.d.ts +8 -3
  282. package/build-types/dataviews/store/private-actions.d.ts.map +1 -1
  283. package/build-types/dataviews/store/private-selectors.d.ts +2 -1
  284. package/build-types/dataviews/store/private-selectors.d.ts.map +1 -1
  285. package/build-types/dataviews/store/reducer.d.ts +4 -1
  286. package/build-types/dataviews/store/reducer.d.ts.map +1 -1
  287. package/build-types/dataviews/types.d.ts +66 -8
  288. package/build-types/dataviews/types.d.ts.map +1 -1
  289. package/build-types/store/actions.d.ts.map +1 -1
  290. package/build-types/store/private-actions.d.ts.map +1 -1
  291. package/build-types/store/private-selectors.d.ts +11 -0
  292. package/build-types/store/private-selectors.d.ts.map +1 -1
  293. package/build-types/store/reducer.d.ts +1 -0
  294. package/build-types/store/reducer.d.ts.map +1 -1
  295. package/build-types/store/utils/is-template-revertable.d.ts.map +1 -1
  296. package/package.json +36 -36
  297. package/src/bindings/post-meta.js +20 -0
  298. package/src/components/block-manager/style.scss +2 -2
  299. package/src/components/blog-title/index.js +1 -1
  300. package/src/components/commands/index.js +4 -2
  301. package/src/components/create-template-part-modal/index.js +1 -0
  302. package/src/components/document-bar/index.js +1 -1
  303. package/src/components/document-bar/style.scss +1 -1
  304. package/src/components/editor-interface/style.scss +5 -0
  305. package/src/components/error-boundary/style.native.scss +1 -1
  306. package/src/components/error-boundary/style.scss +1 -1
  307. package/src/components/global-styles-provider/index.js +16 -3
  308. package/src/components/header/index.js +1 -2
  309. package/src/components/inserter-sidebar/index.js +10 -4
  310. package/src/components/list-view-sidebar/style.scss +4 -0
  311. package/src/components/page-attributes/parent.js +38 -16
  312. package/src/components/post-actions/actions.js +10 -1044
  313. package/src/components/post-actions/index.js +25 -17
  314. package/src/components/post-author/hook.js +11 -3
  315. package/src/components/post-author/panel.js +3 -1
  316. package/src/components/post-card-panel/index.js +29 -28
  317. package/src/components/post-comments/index.js +7 -20
  318. package/src/components/post-discussion/style.scss +0 -9
  319. package/src/components/post-featured-image/index.js +2 -0
  320. package/src/components/post-format/style.scss +0 -6
  321. package/src/components/post-publish-panel/postpublish.js +8 -2
  322. package/src/components/post-publish-panel/test/__snapshots__/index.js.snap +10 -10
  323. package/src/components/post-slug/index.js +1 -0
  324. package/src/components/post-status/index.js +11 -41
  325. package/src/components/post-status/style.scss +0 -19
  326. package/src/components/post-taxonomies/hierarchical-term-selector.js +3 -1
  327. package/src/components/post-template/create-new-template-modal.js +7 -1
  328. package/src/components/post-url/index.js +15 -9
  329. package/src/components/post-url/panel.js +8 -2
  330. package/src/components/preview-dropdown/index.js +113 -35
  331. package/src/components/preview-dropdown/style.scss +5 -0
  332. package/src/components/provider/disable-non-page-content-blocks.js +27 -24
  333. package/src/components/save-publish-panels/style.scss +3 -3
  334. package/src/components/sidebar/post-summary.js +20 -16
  335. package/src/components/site-discussion/index.js +7 -19
  336. package/src/components/site-discussion/style.scss +0 -14
  337. package/src/components/template-content-panel/index.js +40 -22
  338. package/src/components/visual-editor/index.js +8 -6
  339. package/src/components/visual-editor/style.scss +1 -3
  340. package/src/dataviews/actions/duplicate-pattern.tsx +40 -0
  341. package/src/dataviews/actions/duplicate-post.native.tsx +3 -0
  342. package/src/dataviews/actions/duplicate-post.tsx +174 -0
  343. package/src/dataviews/actions/duplicate-template-part.tsx +70 -0
  344. package/src/dataviews/actions/export-pattern.native.tsx +3 -0
  345. package/src/dataviews/actions/permanently-delete-post.tsx +116 -0
  346. package/src/dataviews/actions/rename-post.tsx +146 -0
  347. package/src/dataviews/actions/reorder-page.native.tsx +3 -0
  348. package/src/dataviews/actions/reorder-page.tsx +125 -0
  349. package/src/dataviews/actions/reset-post.tsx +2 -1
  350. package/src/dataviews/actions/restore-post.tsx +134 -0
  351. package/src/dataviews/actions/trash-post.tsx +196 -0
  352. package/src/dataviews/actions/utils.ts +14 -4
  353. package/src/dataviews/actions/view-post-revisions.tsx +47 -0
  354. package/src/dataviews/actions/view-post.tsx +30 -0
  355. package/src/dataviews/fields/index.ts +26 -0
  356. package/src/dataviews/store/private-actions.ts +109 -0
  357. package/src/dataviews/store/private-selectors.ts +9 -17
  358. package/src/dataviews/store/reducer.ts +20 -1
  359. package/src/dataviews/types.ts +58 -6
  360. package/src/private-apis.js +2 -2
  361. package/src/store/actions.js +36 -13
  362. package/src/store/private-actions.js +9 -5
  363. package/src/store/private-selectors.js +45 -2
  364. package/src/store/test/private-selectors.js +78 -0
  365. package/src/store/utils/is-template-revertable.js +2 -1
  366. package/tsconfig.tsbuildinfo +1 -1
  367. package/build/dataviews/actions/index.js +0 -32
  368. package/build/dataviews/actions/index.js.map +0 -1
  369. package/build-module/dataviews/actions/index.js +0 -24
  370. package/build-module/dataviews/actions/index.js.map +0 -1
  371. package/build-types/dataviews/actions/index.d.ts +0 -2
  372. package/build-types/dataviews/actions/index.d.ts.map +0 -1
  373. package/src/components/document-outline/test/__snapshots__/index.js.snap +0 -111
  374. package/src/components/document-outline/test/index.js +0 -185
  375. package/src/dataviews/actions/index.ts +0 -25
@@ -1,3 +1,8 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import clsx from 'clsx';
5
+
1
6
  /**
2
7
  * WordPress dependencies
3
8
  */
@@ -6,14 +11,17 @@ import {
6
11
  DropdownMenu,
7
12
  MenuGroup,
8
13
  MenuItem,
14
+ MenuItemsChoice,
9
15
  VisuallyHidden,
10
16
  Icon,
11
17
  } from '@wordpress/components';
12
18
  import { __ } from '@wordpress/i18n';
13
- import { check, desktop, mobile, tablet, external } from '@wordpress/icons';
19
+ import { desktop, mobile, tablet, external } from '@wordpress/icons';
14
20
  import { useSelect, useDispatch } from '@wordpress/data';
15
21
  import { store as coreStore } from '@wordpress/core-data';
22
+ import { useEffect, useRef } from '@wordpress/element';
16
23
  import { store as preferencesStore } from '@wordpress/preferences';
24
+ import { store as blockEditorStore } from '@wordpress/block-editor';
17
25
 
18
26
  /**
19
27
  * Internal dependencies
@@ -22,21 +30,50 @@ import { store as editorStore } from '../../store';
22
30
  import PostPreviewButton from '../post-preview-button';
23
31
 
24
32
  export default function PreviewDropdown( { forceIsAutosaveable, disabled } ) {
25
- const { deviceType, homeUrl, isTemplate, isViewable, showIconLabels } =
26
- useSelect( ( select ) => {
27
- const { getDeviceType, getCurrentPostType } = select( editorStore );
28
- const { getUnstableBase, getPostType } = select( coreStore );
29
- const { get } = select( preferencesStore );
30
- const _currentPostType = getCurrentPostType();
31
- return {
32
- deviceType: getDeviceType(),
33
- homeUrl: getUnstableBase()?.home,
34
- isTemplate: _currentPostType === 'wp_template',
35
- isViewable: getPostType( _currentPostType )?.viewable ?? false,
36
- showIconLabels: get( 'core', 'showIconLabels' ),
37
- };
38
- }, [] );
33
+ const {
34
+ deviceType,
35
+ editorMode,
36
+ homeUrl,
37
+ isTemplate,
38
+ isViewable,
39
+ showIconLabels,
40
+ } = useSelect( ( select ) => {
41
+ const { getDeviceType, getCurrentPostType } = select( editorStore );
42
+ const { getUnstableBase, getPostType } = select( coreStore );
43
+ const { get } = select( preferencesStore );
44
+ const { __unstableGetEditorMode } = select( blockEditorStore );
45
+ const _currentPostType = getCurrentPostType();
46
+ return {
47
+ deviceType: getDeviceType(),
48
+ editorMode: __unstableGetEditorMode(),
49
+ homeUrl: getUnstableBase()?.home,
50
+ isTemplate: _currentPostType === 'wp_template',
51
+ isViewable: getPostType( _currentPostType )?.viewable ?? false,
52
+ showIconLabels: get( 'core', 'showIconLabels' ),
53
+ };
54
+ }, [] );
39
55
  const { setDeviceType } = useDispatch( editorStore );
56
+ const { __unstableSetEditorMode } = useDispatch( blockEditorStore );
57
+
58
+ /**
59
+ * Save the original editing mode in a ref to restore it when we exit zoom out.
60
+ */
61
+ const originalEditingMode = useRef( editorMode );
62
+ useEffect( () => {
63
+ if ( editorMode !== 'zoom-out' ) {
64
+ originalEditingMode.current = editorMode;
65
+ }
66
+
67
+ return () => {
68
+ if (
69
+ editorMode === 'zoom-out' &&
70
+ editorMode !== originalEditingMode.current
71
+ ) {
72
+ __unstableSetEditorMode( originalEditingMode.current );
73
+ }
74
+ };
75
+ }, [ editorMode, __unstableSetEditorMode ] );
76
+
40
77
  const isMobile = useViewportMatch( 'medium', '<' );
41
78
  if ( isMobile ) {
42
79
  return null;
@@ -47,6 +84,7 @@ export default function PreviewDropdown( { forceIsAutosaveable, disabled } ) {
47
84
  };
48
85
  const toggleProps = {
49
86
  className: 'editor-preview-dropdown__toggle',
87
+ iconPosition: 'right',
50
88
  size: 'compact',
51
89
  showTooltip: ! showIconLabels,
52
90
  disabled,
@@ -57,42 +95,81 @@ export default function PreviewDropdown( { forceIsAutosaveable, disabled } ) {
57
95
  };
58
96
 
59
97
  const deviceIcons = {
98
+ desktop,
60
99
  mobile,
61
100
  tablet,
62
- desktop,
101
+ };
102
+
103
+ /**
104
+ * The choices for the device type.
105
+ *
106
+ * @type {Array}
107
+ */
108
+ const choices = [
109
+ {
110
+ value: 'Desktop',
111
+ label: __( 'Desktop' ),
112
+ icon: desktop,
113
+ },
114
+ {
115
+ value: 'ZoomOut',
116
+ label: __( 'Desktop (50%)' ),
117
+ icon: desktop,
118
+ },
119
+ {
120
+ value: 'Tablet',
121
+ label: __( 'Tablet' ),
122
+ icon: tablet,
123
+ },
124
+ {
125
+ value: 'Mobile',
126
+ label: __( 'Mobile' ),
127
+ icon: mobile,
128
+ },
129
+ ];
130
+
131
+ const previewValue = editorMode === 'zoom-out' ? 'ZoomOut' : deviceType;
132
+
133
+ /**
134
+ * Handles the selection of a device type.
135
+ *
136
+ * @param {string} value The device type.
137
+ */
138
+ const onSelect = ( value ) => {
139
+ let newEditorMode = originalEditingMode.current;
140
+
141
+ if ( value === 'ZoomOut' ) {
142
+ newEditorMode = 'zoom-out';
143
+ setDeviceType( 'Desktop' );
144
+ } else {
145
+ setDeviceType( value );
146
+ }
147
+
148
+ __unstableSetEditorMode( newEditorMode );
63
149
  };
64
150
 
65
151
  return (
66
152
  <DropdownMenu
67
- className="editor-preview-dropdown"
153
+ className={ clsx(
154
+ 'editor-preview-dropdown',
155
+ `editor-preview-dropdown--${ deviceType.toLowerCase() }`
156
+ ) }
68
157
  popoverProps={ popoverProps }
69
158
  toggleProps={ toggleProps }
70
159
  menuProps={ menuProps }
71
160
  icon={ deviceIcons[ deviceType.toLowerCase() ] }
161
+ text={ editorMode === 'zoom-out' ? __( '50%' ) : undefined }
72
162
  label={ __( 'View' ) }
73
163
  disableOpenOnArrowDown={ disabled }
74
164
  >
75
165
  { ( { onClose } ) => (
76
166
  <>
77
167
  <MenuGroup>
78
- <MenuItem
79
- onClick={ () => setDeviceType( 'Desktop' ) }
80
- icon={ deviceType === 'Desktop' && check }
81
- >
82
- { __( 'Desktop' ) }
83
- </MenuItem>
84
- <MenuItem
85
- onClick={ () => setDeviceType( 'Tablet' ) }
86
- icon={ deviceType === 'Tablet' && check }
87
- >
88
- { __( 'Tablet' ) }
89
- </MenuItem>
90
- <MenuItem
91
- onClick={ () => setDeviceType( 'Mobile' ) }
92
- icon={ deviceType === 'Mobile' && check }
93
- >
94
- { __( 'Mobile' ) }
95
- </MenuItem>
168
+ <MenuItemsChoice
169
+ choices={ choices }
170
+ value={ previewValue }
171
+ onSelect={ onSelect }
172
+ />
96
173
  </MenuGroup>
97
174
  { isTemplate && (
98
175
  <MenuGroup>
@@ -118,6 +195,7 @@ export default function PreviewDropdown( { forceIsAutosaveable, disabled } ) {
118
195
  className="editor-preview-dropdown__button-external"
119
196
  role="menuitem"
120
197
  forceIsAutosaveable={ forceIsAutosaveable }
198
+ aria-label={ __( 'Preview in new tab' ) }
121
199
  textContent={
122
200
  <>
123
201
  { __( 'Preview in new tab' ) }
@@ -1,3 +1,8 @@
1
+ .editor-preview-dropdown .editor-preview-dropdown__toggle.has-icon.has-text {
2
+ padding-right: 4px;
3
+ padding-left: 6px;
4
+ }
5
+
1
6
  .editor-preview-dropdown__button-external {
2
7
  width: 100%;
3
8
  display: flex;
@@ -3,14 +3,19 @@
3
3
  */
4
4
  import { useSelect, useRegistry } from '@wordpress/data';
5
5
  import { store as blockEditorStore } from '@wordpress/block-editor';
6
- import { useEffect } from '@wordpress/element';
6
+ import { useEffect, useMemo } from '@wordpress/element';
7
7
  import { applyFilters } from '@wordpress/hooks';
8
8
 
9
- const DEFAULT_CONTENT_ONLY_BLOCKS = [
9
+ /**
10
+ * Internal dependencies
11
+ */
12
+ import { store as editorStore } from '../../store';
13
+ import { unlock } from '../../lock-unlock';
14
+
15
+ const POST_CONTENT_BLOCK_TYPES = [
10
16
  'core/post-title',
11
17
  'core/post-featured-image',
12
18
  'core/post-content',
13
- 'core/template-part',
14
19
  ];
15
20
 
16
21
  /**
@@ -18,32 +23,30 @@ const DEFAULT_CONTENT_ONLY_BLOCKS = [
18
23
  * page content to be edited.
19
24
  */
20
25
  export default function DisableNonPageContentBlocks() {
21
- const contentOnlyBlocks = applyFilters(
22
- 'editor.postContentBlockTypes',
23
- DEFAULT_CONTENT_ONLY_BLOCKS
26
+ const contentOnlyBlockTypes = useMemo(
27
+ () => [
28
+ ...applyFilters(
29
+ 'editor.postContentBlockTypes',
30
+ POST_CONTENT_BLOCK_TYPES
31
+ ),
32
+ 'core/template-part',
33
+ ],
34
+ []
24
35
  );
25
36
 
26
- // Note that there are two separate subscription because the result for each
37
+ // Note that there are two separate subscriptions because the result for each
27
38
  // returns a new array.
28
- const contentOnlyIds = useSelect( ( select ) => {
29
- const { getBlocksByName, getBlockParents, getBlockName } =
30
- select( blockEditorStore );
31
- return getBlocksByName( contentOnlyBlocks ).filter( ( clientId ) =>
32
- getBlockParents( clientId ).every( ( parentClientId ) => {
33
- const parentBlockName = getBlockName( parentClientId );
34
- return (
35
- // Ignore descendents of the query block.
36
- parentBlockName !== 'core/query' &&
37
- // Enable only the top-most block.
38
- ! contentOnlyBlocks.includes( parentBlockName )
39
- );
40
- } )
41
- );
42
- }, [] );
39
+ const contentOnlyIds = useSelect(
40
+ ( select ) => {
41
+ const { getPostBlocksByName } = unlock( select( editorStore ) );
42
+ return getPostBlocksByName( contentOnlyBlockTypes );
43
+ },
44
+ [ contentOnlyBlockTypes ]
45
+ );
43
46
  const disabledIds = useSelect( ( select ) => {
44
47
  const { getBlocksByName, getBlockOrder } = select( blockEditorStore );
45
- return getBlocksByName( [ 'core/template-part' ] ).flatMap(
46
- ( clientId ) => getBlockOrder( clientId )
48
+ return getBlocksByName( 'core/template-part' ).flatMap( ( clientId ) =>
49
+ getBlockOrder( clientId )
47
50
  );
48
51
  }, [] );
49
52
 
@@ -3,7 +3,7 @@
3
3
  .editor-layout__toggle-sidebar-panel,
4
4
  .editor-layout__toggle-entities-saved-states-panel {
5
5
  z-index: z-index(".editor-layout__toggle-sidebar-panel");
6
- position: fixed !important; // Need to override the default relative positionning
6
+ position: fixed !important; // Necessary to override the default relative positioning.
7
7
  top: -9999em;
8
8
  bottom: auto;
9
9
  left: auto;
@@ -11,8 +11,8 @@
11
11
  box-sizing: border-box;
12
12
  width: $sidebar-width;
13
13
  background-color: $white;
14
- border: 1px dotted $gray-300;
15
- height: auto !important; // Need to override the default sidebar positionnings
14
+ border: $border-width dotted $gray-300;
15
+ height: auto !important; // Necessary to override the default sidebar positioning.
16
16
  padding: $grid-unit-30;
17
17
  display: flex;
18
18
  justify-content: center;
@@ -8,7 +8,6 @@ import { useSelect } from '@wordpress/data';
8
8
  * Internal dependencies
9
9
  */
10
10
  import PluginPostStatusInfo from '../plugin-post-status-info';
11
- import PostActions from '../post-actions';
12
11
  import PostAuthorPanel from '../post-author/panel';
13
12
  import PostCardPanel from '../post-card-panel';
14
13
  import PostContentInformation from '../post-content-information';
@@ -36,16 +35,23 @@ import { PrivatePostLastRevision } from '../post-last-revision';
36
35
  const PANEL_NAME = 'post-status';
37
36
 
38
37
  export default function PostSummary( { onActionPerformed } ) {
39
- const { isRemovedPostStatusPanel } = useSelect( ( select ) => {
40
- // We use isEditorPanelRemoved to hide the panel if it was programatically removed. We do
41
- // not use isEditorPanelEnabled since this panel should not be disabled through the UI.
42
- const { isEditorPanelRemoved, getCurrentPostType } =
43
- select( editorStore );
44
- return {
45
- isRemovedPostStatusPanel: isEditorPanelRemoved( PANEL_NAME ),
46
- postType: getCurrentPostType(),
47
- };
48
- }, [] );
38
+ const { isRemovedPostStatusPanel, postType, postId } = useSelect(
39
+ ( select ) => {
40
+ // We use isEditorPanelRemoved to hide the panel if it was programatically removed. We do
41
+ // not use isEditorPanelEnabled since this panel should not be disabled through the UI.
42
+ const {
43
+ isEditorPanelRemoved,
44
+ getCurrentPostType,
45
+ getCurrentPostId,
46
+ } = select( editorStore );
47
+ return {
48
+ isRemovedPostStatusPanel: isEditorPanelRemoved( PANEL_NAME ),
49
+ postType: getCurrentPostType(),
50
+ postId: getCurrentPostId(),
51
+ };
52
+ },
53
+ []
54
+ );
49
55
 
50
56
  return (
51
57
  <PostPanelSection className="editor-post-summary">
@@ -54,11 +60,9 @@ export default function PostSummary( { onActionPerformed } ) {
54
60
  <>
55
61
  <VStack spacing={ 4 }>
56
62
  <PostCardPanel
57
- actions={
58
- <PostActions
59
- onActionPerformed={ onActionPerformed }
60
- />
61
- }
63
+ postType={ postType }
64
+ postId={ postId }
65
+ onActionPerformed={ onActionPerformed }
62
66
  />
63
67
  <PostFeaturedImagePanel withPanelBody={ false } />
64
68
  <PostExcerptPanel />
@@ -23,29 +23,17 @@ import { store as editorStore } from '../../store';
23
23
 
24
24
  const COMMENT_OPTIONS = [
25
25
  {
26
- label: (
27
- <>
28
- { _x( 'Open', 'Adjective: e.g. "Comments are open"' ) }
29
- <Text variant="muted" size={ 12 }>
30
- { __( 'Visitors can add new comments and replies.' ) }
31
- </Text>
32
- </>
33
- ),
26
+ label: _x( 'Open', 'Adjective: e.g. "Comments are open"' ),
34
27
  value: 'open',
28
+ description: __( 'Visitors can add new comments and replies.' ),
35
29
  },
36
30
  {
37
- label: (
38
- <>
39
- { __( 'Closed' ) }
40
- <Text variant="muted" size={ 12 }>
41
- { __( 'Visitors cannot add new comments or replies.' ) }
42
- </Text>
43
- <Text variant="muted" size={ 12 }>
44
- { __( 'Existing comments remain visible.' ) }
45
- </Text>
46
- </>
47
- ),
31
+ label: __( 'Closed' ),
48
32
  value: '',
33
+ description: [
34
+ __( 'Visitors cannot add new comments or replies.' ),
35
+ __( 'Existing comments remain visible.' ),
36
+ ].join( ' ' ),
49
37
  },
50
38
  ];
51
39
 
@@ -3,17 +3,3 @@
3
3
  padding: $grid-unit-20;
4
4
  }
5
5
 
6
- .editor-site-discussion__options {
7
- // TODO: it's not great to override component styles.. This might be resolved
8
- // by the new radio control component.
9
- .components-radio-control__option {
10
- align-items: flex-start;
11
- }
12
-
13
- label {
14
- .components-text {
15
- display: block;
16
- margin-top: $grid-unit-05;
17
- }
18
- }
19
- }
@@ -2,13 +2,12 @@
2
2
  * WordPress dependencies
3
3
  */
4
4
  import { useSelect, useDispatch } from '@wordpress/data';
5
- import {
6
- store as blockEditorStore,
7
- privateApis as blockEditorPrivateApis,
8
- } from '@wordpress/block-editor';
5
+ import { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';
9
6
  import { PanelBody } from '@wordpress/components';
10
7
  import { __ } from '@wordpress/i18n';
11
8
  import { store as interfaceStore } from '@wordpress/interface';
9
+ import { applyFilters } from '@wordpress/hooks';
10
+ import { useMemo } from '@wordpress/element';
12
11
 
13
12
  /**
14
13
  * Internal dependencies
@@ -19,32 +18,51 @@ import { store as editorStore } from '../../store';
19
18
 
20
19
  const { BlockQuickNavigation } = unlock( blockEditorPrivateApis );
21
20
 
22
- const PAGE_CONTENT_BLOCKS = [
23
- 'core/post-content',
24
- 'core/post-featured-image',
21
+ const POST_CONTENT_BLOCK_TYPES = [
25
22
  'core/post-title',
23
+ 'core/post-featured-image',
24
+ 'core/post-content',
26
25
  ];
27
26
 
28
27
  const TEMPLATE_PART_BLOCK = 'core/template-part';
29
28
 
30
29
  export default function TemplateContentPanel() {
31
- const { enableComplementaryArea } = useDispatch( interfaceStore );
32
- const { clientIds, postType, renderingMode } = useSelect( ( select ) => {
33
- const { getBlocksByName } = select( blockEditorStore );
34
- const { getCurrentPostType } = select( editorStore );
35
- const _postType = getCurrentPostType();
36
- return {
37
- postType: _postType,
38
- clientIds: getBlocksByName(
39
- TEMPLATE_POST_TYPE === _postType
40
- ? TEMPLATE_PART_BLOCK
41
- : PAGE_CONTENT_BLOCKS
30
+ const postContentBlockTypes = useMemo(
31
+ () =>
32
+ applyFilters(
33
+ 'editor.postContentBlockTypes',
34
+ POST_CONTENT_BLOCK_TYPES
42
35
  ),
43
- renderingMode: select( editorStore ).getRenderingMode(),
44
- };
45
- }, [] );
36
+ []
37
+ );
38
+
39
+ const { clientIds, postType, renderingMode } = useSelect(
40
+ ( select ) => {
41
+ const {
42
+ getCurrentPostType,
43
+ getPostBlocksByName,
44
+ getRenderingMode,
45
+ } = unlock( select( editorStore ) );
46
+ const _postType = getCurrentPostType();
47
+ return {
48
+ postType: _postType,
49
+ clientIds: getPostBlocksByName(
50
+ TEMPLATE_POST_TYPE === _postType
51
+ ? TEMPLATE_PART_BLOCK
52
+ : postContentBlockTypes
53
+ ),
54
+ renderingMode: getRenderingMode(),
55
+ };
56
+ },
57
+ [ postContentBlockTypes ]
58
+ );
59
+
60
+ const { enableComplementaryArea } = useDispatch( interfaceStore );
46
61
 
47
- if ( renderingMode === 'post-only' && postType !== TEMPLATE_POST_TYPE ) {
62
+ if (
63
+ ( renderingMode === 'post-only' && postType !== TEMPLATE_POST_TYPE ) ||
64
+ clientIds.length === 0
65
+ ) {
48
66
  return null;
49
67
  }
50
68
 
@@ -107,6 +107,7 @@ function VisualEditor( {
107
107
  } ) {
108
108
  const [ resizeObserver, sizes ] = useResizeObserver();
109
109
  const isMobileViewport = useViewportMatch( 'small', '<' );
110
+ const isTabletViewport = useViewportMatch( 'medium', '<' );
110
111
  const {
111
112
  renderingMode,
112
113
  postContentAttributes,
@@ -341,12 +342,13 @@ function VisualEditor( {
341
342
  } ),
342
343
  ] );
343
344
 
344
- const zoomOutProps = isZoomOutMode
345
- ? {
346
- scale: 'default',
347
- frameSize: '48px',
348
- }
349
- : {};
345
+ const zoomOutProps =
346
+ isZoomOutMode && ! isTabletViewport
347
+ ? {
348
+ scale: 'default',
349
+ frameSize: '48px',
350
+ }
351
+ : {};
350
352
 
351
353
  const forceFullHeight = postType === NAVIGATION_POST_TYPE;
352
354
  const enableResizing =
@@ -1,9 +1,7 @@
1
1
  .editor-visual-editor {
2
2
  position: relative;
3
- display: block;
3
+ display: flex;
4
4
  background-color: $gray-300;
5
- // Make this a stacking context to contain the z-index of children elements.
6
- isolation: isolate;
7
5
 
8
6
  // Centralize the editor horizontally (flex-direction is column).
9
7
  align-items: center;
@@ -0,0 +1,40 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { _x } from '@wordpress/i18n';
5
+ // @ts-ignore
6
+ import { privateApis as patternsPrivateApis } from '@wordpress/patterns';
7
+ import type { Action } from '@wordpress/dataviews';
8
+
9
+ /**
10
+ * Internal dependencies
11
+ */
12
+ import { unlock } from '../../lock-unlock';
13
+ import type { Pattern } from '../types';
14
+
15
+ // Patterns.
16
+ const { CreatePatternModalContents, useDuplicatePatternProps } =
17
+ unlock( patternsPrivateApis );
18
+
19
+ const duplicatePattern: Action< Pattern > = {
20
+ id: 'duplicate-pattern',
21
+ label: _x( 'Duplicate', 'action label' ),
22
+ isEligible: ( item ) => item.type !== 'wp_template_part',
23
+ modalHeader: _x( 'Duplicate pattern', 'action label' ),
24
+ RenderModal: ( { items, closeModal } ) => {
25
+ const [ item ] = items;
26
+ const duplicatedProps = useDuplicatePatternProps( {
27
+ pattern: item,
28
+ onSuccess: () => closeModal?.(),
29
+ } );
30
+ return (
31
+ <CreatePatternModalContents
32
+ onClose={ closeModal }
33
+ confirmLabel={ _x( 'Duplicate', 'action label' ) }
34
+ { ...duplicatedProps }
35
+ />
36
+ );
37
+ },
38
+ };
39
+
40
+ export default duplicatePattern;
@@ -0,0 +1,3 @@
1
+ const duplicatePost = undefined;
2
+
3
+ export default duplicatePost;