@wordpress/edit-site 5.26.0 → 5.27.1

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 (340) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/components/actions/index.js +139 -36
  3. package/build/components/actions/index.js.map +1 -1
  4. package/build/components/editor-canvas-container/index.js +1 -1
  5. package/build/components/editor-canvas-container/index.js.map +1 -1
  6. package/build/components/global-styles/font-families.js +3 -2
  7. package/build/components/global-styles/font-families.js.map +1 -1
  8. package/build/components/global-styles/font-family-item.js +3 -4
  9. package/build/components/global-styles/font-family-item.js.map +1 -1
  10. package/build/components/global-styles/font-library-modal/context.js +80 -41
  11. package/build/components/global-styles/font-library-modal/context.js.map +1 -1
  12. package/build/components/global-styles/font-library-modal/font-collection.js +49 -22
  13. package/build/components/global-styles/font-library-modal/font-collection.js.map +1 -1
  14. package/build/components/global-styles/font-library-modal/fonts-grid.js +4 -1
  15. package/build/components/global-styles/font-library-modal/fonts-grid.js.map +1 -1
  16. package/build/components/global-styles/font-library-modal/index.js +4 -4
  17. package/build/components/global-styles/font-library-modal/index.js.map +1 -1
  18. package/build/components/global-styles/font-library-modal/installed-fonts.js +16 -8
  19. package/build/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
  20. package/build/components/global-styles/font-library-modal/library-font-card.js +1 -1
  21. package/build/components/global-styles/font-library-modal/library-font-card.js.map +1 -1
  22. package/build/components/global-styles/font-library-modal/library-font-variant.js +2 -2
  23. package/build/components/global-styles/font-library-modal/library-font-variant.js.map +1 -1
  24. package/build/components/global-styles/font-library-modal/local-fonts.js +13 -4
  25. package/build/components/global-styles/font-library-modal/local-fonts.js.map +1 -1
  26. package/build/components/global-styles/font-library-modal/resolvers.js +49 -20
  27. package/build/components/global-styles/font-library-modal/resolvers.js.map +1 -1
  28. package/build/components/global-styles/font-library-modal/tab-panel-layout.js +6 -2
  29. package/build/components/global-styles/font-library-modal/tab-panel-layout.js.map +1 -1
  30. package/build/components/global-styles/font-library-modal/utils/filter-fonts.js +17 -2
  31. package/build/components/global-styles/font-library-modal/utils/filter-fonts.js.map +1 -1
  32. package/build/components/global-styles/font-library-modal/utils/index.js +103 -17
  33. package/build/components/global-styles/font-library-modal/utils/index.js.map +1 -1
  34. package/build/components/global-styles/font-library-modal/utils/preview-styles.js +4 -3
  35. package/build/components/global-styles/font-library-modal/utils/preview-styles.js.map +1 -1
  36. package/build/components/global-styles/screen-block.js +10 -0
  37. package/build/components/global-styles/screen-block.js.map +1 -1
  38. package/build/components/global-styles/screen-typography.js +4 -1
  39. package/build/components/global-styles/screen-typography.js.map +1 -1
  40. package/build/components/layout/hooks.js +6 -5
  41. package/build/components/layout/hooks.js.map +1 -1
  42. package/build/components/layout/index.js +19 -28
  43. package/build/components/layout/index.js.map +1 -1
  44. package/build/components/layout/router.js +135 -0
  45. package/build/components/layout/router.js.map +1 -0
  46. package/build/components/page-pages/index.js +92 -69
  47. package/build/components/page-pages/index.js.map +1 -1
  48. package/build/components/page-patterns/dataviews-pattern-actions.js +11 -6
  49. package/build/components/page-patterns/dataviews-pattern-actions.js.map +1 -1
  50. package/build/components/page-patterns/index.js +295 -15
  51. package/build/components/page-patterns/index.js.map +1 -1
  52. package/build/components/{page-templates/template-actions.js → page-templates-template-parts/actions.js} +51 -23
  53. package/build/components/page-templates-template-parts/actions.js.map +1 -0
  54. package/build/components/page-templates-template-parts/add-new-template-part.js.map +1 -0
  55. package/build/components/page-templates-template-parts/index.js +395 -0
  56. package/build/components/page-templates-template-parts/index.js.map +1 -0
  57. package/build/components/preferences-modal/index.js +9 -134
  58. package/build/components/preferences-modal/index.js.map +1 -1
  59. package/build/components/revisions/index.js +1 -1
  60. package/build/components/revisions/index.js.map +1 -1
  61. package/build/components/save-button/index.js +4 -2
  62. package/build/components/save-button/index.js.map +1 -1
  63. package/build/components/save-panel/index.js +6 -5
  64. package/build/components/save-panel/index.js.map +1 -1
  65. package/build/components/sidebar/index.js +3 -1
  66. package/build/components/sidebar/index.js.map +1 -1
  67. package/build/components/sidebar-dataviews/dataview-item.js +3 -1
  68. package/build/components/sidebar-dataviews/dataview-item.js.map +1 -1
  69. package/build/components/sidebar-dataviews/default-views.js +4 -2
  70. package/build/components/sidebar-dataviews/default-views.js.map +1 -1
  71. package/build/components/sidebar-dataviews/index.js +2 -2
  72. package/build/components/sidebar-dataviews/index.js.map +1 -1
  73. package/build/components/sidebar-navigation-screen/index.js +8 -7
  74. package/build/components/sidebar-navigation-screen/index.js.map +1 -1
  75. package/build/components/sidebar-navigation-screen-pages/index.js +2 -10
  76. package/build/components/sidebar-navigation-screen-pages/index.js.map +1 -1
  77. package/build/components/sidebar-navigation-screen-pages-dataviews/index.js +26 -3
  78. package/build/components/sidebar-navigation-screen-pages-dataviews/index.js.map +1 -1
  79. package/build/components/sidebar-navigation-screen-templates/index.js +63 -8
  80. package/build/components/sidebar-navigation-screen-templates/index.js.map +1 -1
  81. package/build/components/sidebar-navigation-screen-templates-browse/content.js +76 -0
  82. package/build/components/sidebar-navigation-screen-templates-browse/content.js.map +1 -0
  83. package/build/components/sidebar-navigation-screen-templates-browse/index.js +9 -2
  84. package/build/components/sidebar-navigation-screen-templates-browse/index.js.map +1 -1
  85. package/build/components/site-hub/index.js +3 -1
  86. package/build/components/site-hub/index.js.map +1 -1
  87. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js +47 -12
  88. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  89. package/build/components/sync-state-with-url/use-sync-path-with-url.js +25 -2
  90. package/build/components/sync-state-with-url/use-sync-path-with-url.js.map +1 -1
  91. package/build/hooks/commands/use-edit-mode-commands.js +33 -5
  92. package/build/hooks/commands/use-edit-mode-commands.js.map +1 -1
  93. package/build/hooks/push-changes-to-global-styles/index.js +13 -6
  94. package/build/hooks/push-changes-to-global-styles/index.js.map +1 -1
  95. package/build/hooks/template-part-edit.js +7 -6
  96. package/build/hooks/template-part-edit.js.map +1 -1
  97. package/build/index.js +1 -1
  98. package/build/index.js.map +1 -1
  99. package/build/store/actions.js +11 -29
  100. package/build/store/actions.js.map +1 -1
  101. package/build/store/private-actions.js +85 -1
  102. package/build/store/private-actions.js.map +1 -1
  103. package/build/store/selectors.js +2 -2
  104. package/build/store/selectors.js.map +1 -1
  105. package/build/utils/get-is-list-page.js +1 -1
  106. package/build/utils/get-is-list-page.js.map +1 -1
  107. package/build/utils/use-actual-current-theme.js +32 -0
  108. package/build/utils/use-actual-current-theme.js.map +1 -0
  109. package/build-module/components/actions/index.js +139 -36
  110. package/build-module/components/actions/index.js.map +1 -1
  111. package/build-module/components/editor-canvas-container/index.js +1 -1
  112. package/build-module/components/editor-canvas-container/index.js.map +1 -1
  113. package/build-module/components/global-styles/font-families.js +3 -2
  114. package/build-module/components/global-styles/font-families.js.map +1 -1
  115. package/build-module/components/global-styles/font-family-item.js +4 -5
  116. package/build-module/components/global-styles/font-family-item.js.map +1 -1
  117. package/build-module/components/global-styles/font-library-modal/context.js +82 -42
  118. package/build-module/components/global-styles/font-library-modal/context.js.map +1 -1
  119. package/build-module/components/global-styles/font-library-modal/font-collection.js +49 -22
  120. package/build-module/components/global-styles/font-library-modal/font-collection.js.map +1 -1
  121. package/build-module/components/global-styles/font-library-modal/fonts-grid.js +4 -1
  122. package/build-module/components/global-styles/font-library-modal/fonts-grid.js.map +1 -1
  123. package/build-module/components/global-styles/font-library-modal/index.js +4 -4
  124. package/build-module/components/global-styles/font-library-modal/index.js.map +1 -1
  125. package/build-module/components/global-styles/font-library-modal/installed-fonts.js +16 -8
  126. package/build-module/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
  127. package/build-module/components/global-styles/font-library-modal/library-font-card.js +1 -1
  128. package/build-module/components/global-styles/font-library-modal/library-font-card.js.map +1 -1
  129. package/build-module/components/global-styles/font-library-modal/library-font-variant.js +2 -2
  130. package/build-module/components/global-styles/font-library-modal/library-font-variant.js.map +1 -1
  131. package/build-module/components/global-styles/font-library-modal/local-fonts.js +13 -4
  132. package/build-module/components/global-styles/font-library-modal/local-fonts.js.map +1 -1
  133. package/build-module/components/global-styles/font-library-modal/resolvers.js +45 -18
  134. package/build-module/components/global-styles/font-library-modal/resolvers.js.map +1 -1
  135. package/build-module/components/global-styles/font-library-modal/tab-panel-layout.js +6 -2
  136. package/build-module/components/global-styles/font-library-modal/tab-panel-layout.js.map +1 -1
  137. package/build-module/components/global-styles/font-library-modal/utils/filter-fonts.js +17 -2
  138. package/build-module/components/global-styles/font-library-modal/utils/filter-fonts.js.map +1 -1
  139. package/build-module/components/global-styles/font-library-modal/utils/index.js +99 -16
  140. package/build-module/components/global-styles/font-library-modal/utils/index.js.map +1 -1
  141. package/build-module/components/global-styles/font-library-modal/utils/preview-styles.js +4 -3
  142. package/build-module/components/global-styles/font-library-modal/utils/preview-styles.js.map +1 -1
  143. package/build-module/components/global-styles/screen-block.js +10 -0
  144. package/build-module/components/global-styles/screen-block.js.map +1 -1
  145. package/build-module/components/global-styles/screen-typography.js +4 -1
  146. package/build-module/components/global-styles/screen-typography.js.map +1 -1
  147. package/build-module/components/layout/hooks.js +6 -5
  148. package/build-module/components/layout/hooks.js.map +1 -1
  149. package/build-module/components/layout/index.js +19 -28
  150. package/build-module/components/layout/index.js.map +1 -1
  151. package/build-module/components/layout/router.js +127 -0
  152. package/build-module/components/layout/router.js.map +1 -0
  153. package/build-module/components/page-pages/index.js +91 -70
  154. package/build-module/components/page-pages/index.js.map +1 -1
  155. package/build-module/components/page-patterns/dataviews-pattern-actions.js +11 -6
  156. package/build-module/components/page-patterns/dataviews-pattern-actions.js.map +1 -1
  157. package/build-module/components/page-patterns/index.js +296 -16
  158. package/build-module/components/page-patterns/index.js.map +1 -1
  159. package/build-module/components/{page-templates/template-actions.js → page-templates-template-parts/actions.js} +52 -24
  160. package/build-module/components/page-templates-template-parts/actions.js.map +1 -0
  161. package/build-module/components/page-templates-template-parts/add-new-template-part.js.map +1 -0
  162. package/build-module/components/page-templates-template-parts/index.js +385 -0
  163. package/build-module/components/page-templates-template-parts/index.js.map +1 -0
  164. package/build-module/components/preferences-modal/index.js +12 -136
  165. package/build-module/components/preferences-modal/index.js.map +1 -1
  166. package/build-module/components/revisions/index.js +1 -1
  167. package/build-module/components/revisions/index.js.map +1 -1
  168. package/build-module/components/save-button/index.js +4 -2
  169. package/build-module/components/save-button/index.js.map +1 -1
  170. package/build-module/components/save-panel/index.js +7 -6
  171. package/build-module/components/save-panel/index.js.map +1 -1
  172. package/build-module/components/sidebar/index.js +3 -1
  173. package/build-module/components/sidebar/index.js.map +1 -1
  174. package/build-module/components/sidebar-dataviews/dataview-item.js +3 -1
  175. package/build-module/components/sidebar-dataviews/dataview-item.js.map +1 -1
  176. package/build-module/components/sidebar-dataviews/default-views.js +4 -2
  177. package/build-module/components/sidebar-dataviews/default-views.js.map +1 -1
  178. package/build-module/components/sidebar-dataviews/index.js +2 -2
  179. package/build-module/components/sidebar-dataviews/index.js.map +1 -1
  180. package/build-module/components/sidebar-navigation-screen/index.js +8 -7
  181. package/build-module/components/sidebar-navigation-screen/index.js.map +1 -1
  182. package/build-module/components/sidebar-navigation-screen-pages/index.js +2 -10
  183. package/build-module/components/sidebar-navigation-screen-pages/index.js.map +1 -1
  184. package/build-module/components/sidebar-navigation-screen-pages-dataviews/index.js +27 -4
  185. package/build-module/components/sidebar-navigation-screen-pages-dataviews/index.js.map +1 -1
  186. package/build-module/components/sidebar-navigation-screen-templates/index.js +64 -9
  187. package/build-module/components/sidebar-navigation-screen-templates/index.js.map +1 -1
  188. package/build-module/components/sidebar-navigation-screen-templates-browse/content.js +68 -0
  189. package/build-module/components/sidebar-navigation-screen-templates-browse/content.js.map +1 -0
  190. package/build-module/components/sidebar-navigation-screen-templates-browse/index.js +9 -2
  191. package/build-module/components/sidebar-navigation-screen-templates-browse/index.js.map +1 -1
  192. package/build-module/components/site-hub/index.js +3 -1
  193. package/build-module/components/site-hub/index.js.map +1 -1
  194. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js +47 -11
  195. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  196. package/build-module/components/sync-state-with-url/use-sync-path-with-url.js +25 -2
  197. package/build-module/components/sync-state-with-url/use-sync-path-with-url.js.map +1 -1
  198. package/build-module/hooks/commands/use-edit-mode-commands.js +33 -5
  199. package/build-module/hooks/commands/use-edit-mode-commands.js.map +1 -1
  200. package/build-module/hooks/push-changes-to-global-styles/index.js +13 -6
  201. package/build-module/hooks/push-changes-to-global-styles/index.js.map +1 -1
  202. package/build-module/hooks/template-part-edit.js +7 -6
  203. package/build-module/hooks/template-part-edit.js.map +1 -1
  204. package/build-module/index.js +1 -1
  205. package/build-module/index.js.map +1 -1
  206. package/build-module/store/actions.js +13 -30
  207. package/build-module/store/actions.js.map +1 -1
  208. package/build-module/store/private-actions.js +83 -0
  209. package/build-module/store/private-actions.js.map +1 -1
  210. package/build-module/store/selectors.js +2 -2
  211. package/build-module/store/selectors.js.map +1 -1
  212. package/build-module/utils/get-is-list-page.js +1 -1
  213. package/build-module/utils/get-is-list-page.js.map +1 -1
  214. package/build-module/utils/use-actual-current-theme.js +24 -0
  215. package/build-module/utils/use-actual-current-theme.js.map +1 -0
  216. package/build-style/style-rtl.css +316 -215
  217. package/build-style/style.css +316 -215
  218. package/package.json +42 -42
  219. package/src/components/actions/index.js +236 -84
  220. package/src/components/editor-canvas-container/index.js +1 -1
  221. package/src/components/global-styles/font-families.js +14 -8
  222. package/src/components/global-styles/font-family-item.js +7 -4
  223. package/src/components/global-styles/font-library-modal/context.js +156 -50
  224. package/src/components/global-styles/font-library-modal/font-collection.js +56 -21
  225. package/src/components/global-styles/font-library-modal/fonts-grid.js +6 -2
  226. package/src/components/global-styles/font-library-modal/index.js +4 -4
  227. package/src/components/global-styles/font-library-modal/installed-fonts.js +18 -8
  228. package/src/components/global-styles/font-library-modal/library-font-card.js +2 -1
  229. package/src/components/global-styles/font-library-modal/library-font-variant.js +10 -9
  230. package/src/components/global-styles/font-library-modal/local-fonts.js +14 -4
  231. package/src/components/global-styles/font-library-modal/resolvers.js +50 -17
  232. package/src/components/global-styles/font-library-modal/style.scss +23 -35
  233. package/src/components/global-styles/font-library-modal/tab-panel-layout.js +30 -26
  234. package/src/components/global-styles/font-library-modal/utils/filter-fonts.js +19 -2
  235. package/src/components/global-styles/font-library-modal/utils/index.js +136 -29
  236. package/src/components/global-styles/font-library-modal/utils/preview-styles.js +7 -3
  237. package/src/components/global-styles/font-library-modal/utils/test/filter-fonts.spec.js +40 -10
  238. package/src/components/global-styles/font-library-modal/utils/test/preview-styles.spec.js +5 -5
  239. package/src/components/global-styles/screen-block.js +10 -0
  240. package/src/components/global-styles/screen-typography.js +9 -3
  241. package/src/components/global-styles/style.scss +4 -0
  242. package/src/components/header-edit-mode/style.scss +15 -5
  243. package/src/components/layout/hooks.js +6 -5
  244. package/src/components/layout/index.js +80 -96
  245. package/src/components/layout/router.js +121 -0
  246. package/src/components/layout/style.scss +13 -16
  247. package/src/components/page/style.scss +1 -8
  248. package/src/components/page-pages/index.js +142 -148
  249. package/src/components/page-pages/style.scss +41 -2
  250. package/src/components/page-patterns/dataviews-pattern-actions.js +11 -6
  251. package/src/components/page-patterns/index.js +392 -14
  252. package/src/components/page-patterns/style.scss +36 -2
  253. package/src/components/{page-templates/template-actions.js → page-templates-template-parts/actions.js} +90 -37
  254. package/src/components/{page-templates → page-templates-template-parts}/index.js +198 -169
  255. package/src/components/page-templates-template-parts/style.scss +44 -0
  256. package/src/components/preferences-modal/index.js +8 -211
  257. package/src/components/revisions/index.js +1 -1
  258. package/src/components/save-button/index.js +7 -4
  259. package/src/components/save-panel/index.js +13 -12
  260. package/src/components/sidebar/index.js +4 -5
  261. package/src/components/sidebar-dataviews/dataview-item.js +2 -1
  262. package/src/components/sidebar-dataviews/default-views.js +4 -2
  263. package/src/components/sidebar-dataviews/index.js +8 -6
  264. package/src/components/sidebar-navigation-item/style.scss +1 -1
  265. package/src/components/sidebar-navigation-screen/index.js +19 -10
  266. package/src/components/sidebar-navigation-screen-pages/index.js +2 -10
  267. package/src/components/sidebar-navigation-screen-pages-dataviews/index.js +32 -6
  268. package/src/components/sidebar-navigation-screen-templates/index.js +85 -28
  269. package/src/components/sidebar-navigation-screen-templates/style.scss +9 -0
  270. package/src/components/sidebar-navigation-screen-templates-browse/content.js +73 -0
  271. package/src/components/sidebar-navigation-screen-templates-browse/index.js +10 -1
  272. package/src/components/site-hub/index.js +4 -1
  273. package/src/components/site-hub/style.scss +1 -12
  274. package/src/components/site-icon/style.scss +1 -1
  275. package/src/components/sync-state-with-url/use-init-edited-entity-from-url.js +40 -10
  276. package/src/components/sync-state-with-url/use-sync-path-with-url.js +32 -0
  277. package/src/hooks/commands/use-edit-mode-commands.js +50 -3
  278. package/src/hooks/push-changes-to-global-styles/index.js +29 -23
  279. package/src/hooks/template-part-edit.js +12 -12
  280. package/src/index.js +1 -1
  281. package/src/store/actions.js +17 -51
  282. package/src/store/private-actions.js +133 -0
  283. package/src/store/selectors.js +2 -4
  284. package/src/style.scss +2 -1
  285. package/src/utils/get-is-list-page.js +3 -2
  286. package/src/utils/use-actual-current-theme.js +27 -0
  287. package/build/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js +0 -58
  288. package/build/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js.map +0 -1
  289. package/build/components/global-styles/font-library-modal/utils/get-notice-from-response.js +0 -71
  290. package/build/components/global-styles/font-library-modal/utils/get-notice-from-response.js.map +0 -1
  291. package/build/components/page-main/index.js +0 -44
  292. package/build/components/page-main/index.js.map +0 -1
  293. package/build/components/page-patterns/dataviews-patterns.js +0 -307
  294. package/build/components/page-patterns/dataviews-patterns.js.map +0 -1
  295. package/build/components/page-template-parts/add-new-template-part.js.map +0 -1
  296. package/build/components/page-template-parts/index.js +0 -81
  297. package/build/components/page-template-parts/index.js.map +0 -1
  298. package/build/components/page-templates/index.js +0 -352
  299. package/build/components/page-templates/index.js.map +0 -1
  300. package/build/components/page-templates/template-actions.js.map +0 -1
  301. package/build/components/post-preview/index.js +0 -29
  302. package/build/components/post-preview/index.js.map +0 -1
  303. package/build/components/preferences-modal/enable-feature.js +0 -36
  304. package/build/components/preferences-modal/enable-feature.js.map +0 -1
  305. package/build/components/preferences-modal/enable-panel-option.js +0 -33
  306. package/build/components/preferences-modal/enable-panel-option.js.map +0 -1
  307. package/build-module/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js +0 -52
  308. package/build-module/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js.map +0 -1
  309. package/build-module/components/global-styles/font-library-modal/utils/get-notice-from-response.js +0 -63
  310. package/build-module/components/global-styles/font-library-modal/utils/get-notice-from-response.js.map +0 -1
  311. package/build-module/components/page-main/index.js +0 -36
  312. package/build-module/components/page-main/index.js.map +0 -1
  313. package/build-module/components/page-patterns/dataviews-patterns.js +0 -299
  314. package/build-module/components/page-patterns/dataviews-patterns.js.map +0 -1
  315. package/build-module/components/page-template-parts/add-new-template-part.js.map +0 -1
  316. package/build-module/components/page-template-parts/index.js +0 -73
  317. package/build-module/components/page-template-parts/index.js.map +0 -1
  318. package/build-module/components/page-templates/index.js +0 -344
  319. package/build-module/components/page-templates/index.js.map +0 -1
  320. package/build-module/components/page-templates/template-actions.js.map +0 -1
  321. package/build-module/components/post-preview/index.js +0 -21
  322. package/build-module/components/post-preview/index.js.map +0 -1
  323. package/build-module/components/preferences-modal/enable-feature.js +0 -29
  324. package/build-module/components/preferences-modal/enable-feature.js.map +0 -1
  325. package/build-module/components/preferences-modal/enable-panel-option.js +0 -26
  326. package/build-module/components/preferences-modal/enable-panel-option.js.map +0 -1
  327. package/src/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js +0 -58
  328. package/src/components/global-styles/font-library-modal/utils/get-notice-from-response.js +0 -62
  329. package/src/components/global-styles/font-library-modal/utils/test/getIntersectingFontFaces.spec.js +0 -271
  330. package/src/components/global-styles/font-library-modal/utils/test/makeFormDataFromFontFamily.spec.js +0 -58
  331. package/src/components/page-main/index.js +0 -38
  332. package/src/components/page-patterns/dataviews-patterns.js +0 -380
  333. package/src/components/page-template-parts/index.js +0 -99
  334. package/src/components/page-templates/style.scss +0 -13
  335. package/src/components/post-preview/index.js +0 -16
  336. package/src/components/preferences-modal/enable-feature.js +0 -31
  337. package/src/components/preferences-modal/enable-panel-option.js +0 -23
  338. /package/build/components/{page-template-parts → page-templates-template-parts}/add-new-template-part.js +0 -0
  339. /package/build-module/components/{page-template-parts → page-templates-template-parts}/add-new-template-part.js +0 -0
  340. /package/src/components/{page-template-parts → page-templates-template-parts}/add-new-template-part.js +0 -0
@@ -0,0 +1,9 @@
1
+ .edit-site-sidebar-navigation-screen-templates__templates-group-title.components-item {
2
+ text-transform: uppercase;
3
+ color: $gray-200;
4
+ // 6px right padding to align with + button
5
+ padding: $grid-unit-30 6px $grid-unit-20 $grid-unit-20;
6
+ border-top: 1px solid $gray-800;
7
+ font-size: 11px;
8
+ font-weight: 500;
9
+ }
@@ -0,0 +1,73 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { useEntityRecords } from '@wordpress/core-data';
5
+ import { useMemo } from '@wordpress/element';
6
+ import { __experimentalItemGroup as ItemGroup } from '@wordpress/components';
7
+
8
+ /**
9
+ * Internal dependencies
10
+ */
11
+ import DataViewItem from '../sidebar-dataviews/dataview-item';
12
+ import { useAddedBy } from '../list/added-by';
13
+ import { layout } from '@wordpress/icons';
14
+
15
+ const EMPTY_ARRAY = [];
16
+
17
+ function TemplateDataviewItem( { template, isActive } ) {
18
+ const { text, icon } = useAddedBy( template.type, template.id );
19
+ return (
20
+ <DataViewItem
21
+ key={ text }
22
+ slug={ text }
23
+ title={ text }
24
+ icon={ icon }
25
+ isActive={ isActive }
26
+ isCustom="false"
27
+ />
28
+ );
29
+ }
30
+
31
+ export default function DataviewsTemplatesSidebarContent( {
32
+ activeView,
33
+ postType,
34
+ config,
35
+ } ) {
36
+ const { records } = useEntityRecords( 'postType', postType, {
37
+ per_page: -1,
38
+ } );
39
+ const firstItemPerAuthorText = useMemo( () => {
40
+ const firstItemPerAuthor = records?.reduce( ( acc, template ) => {
41
+ const author = template.author_text;
42
+ if ( author && ! acc[ author ] ) {
43
+ acc[ author ] = template;
44
+ }
45
+ return acc;
46
+ }, {} );
47
+ return (
48
+ ( firstItemPerAuthor && Object.values( firstItemPerAuthor ) ) ??
49
+ EMPTY_ARRAY
50
+ );
51
+ }, [ records ] );
52
+
53
+ return (
54
+ <ItemGroup>
55
+ <DataViewItem
56
+ slug={ 'all' }
57
+ title={ config[ postType ].title }
58
+ icon={ layout }
59
+ isActive={ activeView === 'all' }
60
+ isCustom="false"
61
+ />
62
+ { firstItemPerAuthorText.map( ( template ) => {
63
+ return (
64
+ <TemplateDataviewItem
65
+ key={ template.author_text }
66
+ template={ template }
67
+ isActive={ activeView === template.author_text }
68
+ />
69
+ );
70
+ } ) }
71
+ </ItemGroup>
72
+ );
73
+ }
@@ -3,6 +3,7 @@
3
3
  */
4
4
  import { __ } from '@wordpress/i18n';
5
5
  import { useSelect } from '@wordpress/data';
6
+
6
7
  import { __experimentalUseNavigator as useNavigator } from '@wordpress/components';
7
8
  import { privateApis as routerPrivateApis } from '@wordpress/router';
8
9
 
@@ -16,6 +17,7 @@ import {
16
17
  TEMPLATE_PART_POST_TYPE,
17
18
  } from '../../utils/constants';
18
19
  import { unlock } from '../../lock-unlock';
20
+ import DataviewsTemplatesSidebarContent from './content';
19
21
 
20
22
  const config = {
21
23
  [ TEMPLATE_POST_TYPE ]: {
@@ -40,7 +42,7 @@ export default function SidebarNavigationScreenTemplatesBrowse() {
40
42
  params: { postType },
41
43
  } = useNavigator();
42
44
  const {
43
- params: { didAccessPatternsPage },
45
+ params: { didAccessPatternsPage, activeView = 'all' },
44
46
  } = useLocation();
45
47
 
46
48
  const isTemplatePartsMode = useSelect( ( select ) => {
@@ -56,6 +58,13 @@ export default function SidebarNavigationScreenTemplatesBrowse() {
56
58
  title={ config[ postType ].title }
57
59
  description={ config[ postType ].description }
58
60
  backPath={ config[ postType ].backPath }
61
+ content={
62
+ <DataviewsTemplatesSidebarContent
63
+ activeView={ activeView }
64
+ postType={ postType }
65
+ config={ config }
66
+ />
67
+ }
59
68
  />
60
69
  );
61
70
  }
@@ -180,7 +180,10 @@ const SiteHub = memo( ( { isTransparent, className } ) => {
180
180
  'View site (opens in a new tab)'
181
181
  ) }
182
182
  icon={ external }
183
- className="edit-site-site-hub__site-view-link"
183
+ className={ classnames(
184
+ 'edit-site-site-hub__site-view-link',
185
+ { 'is-transparent': isTransparent }
186
+ ) }
184
187
  />
185
188
  ) }
186
189
  </HStack>
@@ -9,6 +9,7 @@
9
9
  }
10
10
 
11
11
  .edit-site-site-hub__site-title,
12
+ .edit-site-site-hub__site-view-link,
12
13
  .edit-site-site-hub_toggle-command-center {
13
14
  transition: opacity ease 0.1s;
14
15
 
@@ -20,22 +21,10 @@
20
21
  .edit-site-site-hub__site-view-link {
21
22
  flex-grow: 0;
22
23
  margin-right: var(--wp-admin-border-width-focus);
23
- @include break-mobile() {
24
- opacity: 0;
25
- transition: opacity 0.2s ease-in-out;
26
- }
27
- &:focus {
28
- opacity: 1;
29
- }
30
24
  svg {
31
25
  fill: $gray-200;
32
26
  }
33
27
  }
34
- &:hover {
35
- .edit-site-site-hub__site-view-link {
36
- opacity: 1;
37
- }
38
- }
39
28
  }
40
29
 
41
30
  .edit-site-site-hub__post-type {
@@ -9,7 +9,7 @@
9
9
  object-fit: cover;
10
10
  background: #333;
11
11
 
12
- .edit-site-layout.is-full-canvas.is-edit-mode & {
12
+ .edit-site-layout.is-full-canvas & {
13
13
  border-radius: 0;
14
14
  }
15
15
  }
@@ -27,7 +27,7 @@ const postTypesWithoutParentTemplate = [
27
27
  PATTERN_TYPES.user,
28
28
  ];
29
29
 
30
- function useResolveEditedEntityAndContext( { postId, postType } ) {
30
+ function useResolveEditedEntityAndContext( { path, postId, postType } ) {
31
31
  const { hasLoadedAllDependencies, homepageId, url, frontPageTemplateId } =
32
32
  useSelect( ( select ) => {
33
33
  const { getSite, getUnstableBase, getEntityRecords } =
@@ -128,10 +128,25 @@ function useResolveEditedEntityAndContext( { postId, postType } ) {
128
128
  return currentTemplate.id;
129
129
  }
130
130
  }
131
-
132
131
  // If no template is assigned, use the default template.
132
+ let slugToCheck;
133
+ // In `draft` status we might not have a slug available, so we use the `single`
134
+ // post type templates slug(ex page, single-post, single-product etc..).
135
+ // Pages do not need the `single` prefix in the slug to be prioritized
136
+ // through template hierarchy.
137
+ if ( editedEntity.slug ) {
138
+ slugToCheck =
139
+ postTypeToResolve === 'page'
140
+ ? `${ postTypeToResolve }-${ editedEntity.slug }`
141
+ : `single-${ postTypeToResolve }-${ editedEntity.slug }`;
142
+ } else {
143
+ slugToCheck =
144
+ postTypeToResolve === 'page'
145
+ ? 'page'
146
+ : `single-${ postTypeToResolve }`;
147
+ }
133
148
  return getDefaultTemplateId( {
134
- slug: `${ postTypeToResolve }-${ editedEntity?.slug }`,
149
+ slug: slugToCheck,
135
150
  } );
136
151
  }
137
152
 
@@ -144,6 +159,11 @@ function useResolveEditedEntityAndContext( { postId, postType } ) {
144
159
  return resolveTemplateForPostTypeAndId( postType, postId );
145
160
  }
146
161
 
162
+ // Some URLs in list views are different
163
+ if ( path === '/pages' && postId ) {
164
+ return resolveTemplateForPostTypeAndId( 'page', postId );
165
+ }
166
+
147
167
  // If we're rendering the home page, and we have a static home page, resolve its template.
148
168
  if ( homepageId ) {
149
169
  return resolveTemplateForPostTypeAndId( 'page', homepageId );
@@ -161,6 +181,7 @@ function useResolveEditedEntityAndContext( { postId, postType } ) {
161
181
  url,
162
182
  postId,
163
183
  postType,
184
+ path,
164
185
  frontPageTemplateId,
165
186
  ]
166
187
  );
@@ -174,12 +195,25 @@ function useResolveEditedEntityAndContext( { postId, postType } ) {
174
195
  return { postType, postId };
175
196
  }
176
197
 
198
+ // Some URLs in list views are different
199
+ if ( path === '/pages' && postId ) {
200
+ return { postType: 'page', postId };
201
+ }
202
+
177
203
  if ( homepageId ) {
178
204
  return { postType: 'page', postId: homepageId };
179
205
  }
180
206
 
181
207
  return {};
182
- }, [ homepageId, postType, postId ] );
208
+ }, [ homepageId, postType, postId, path ] );
209
+
210
+ if ( path === '/wp_template/all' && postId ) {
211
+ return { isReady: true, postType: 'wp_template', postId, context };
212
+ }
213
+
214
+ if ( path === '/wp_template_part/all' && postId ) {
215
+ return { isReady: true, postType: 'wp_template_part', postId, context };
216
+ }
183
217
 
184
218
  if ( postTypesWithoutParentTemplate.includes( postType ) ) {
185
219
  return { isReady: true, postType, postId, context };
@@ -197,7 +231,8 @@ function useResolveEditedEntityAndContext( { postId, postType } ) {
197
231
  return { isReady: false };
198
232
  }
199
233
 
200
- export function useInitEditedEntity( params ) {
234
+ export default function useInitEditedEntityFromURL() {
235
+ const { params = {} } = useLocation();
201
236
  const { postType, postId, context, isReady } =
202
237
  useResolveEditedEntityAndContext( params );
203
238
 
@@ -209,8 +244,3 @@ export function useInitEditedEntity( params ) {
209
244
  }
210
245
  }, [ isReady, postType, postId, context, setEditedEntity ] );
211
246
  }
212
-
213
- export default function useInitEditedEntityFromURL() {
214
- const { params = {} } = useLocation();
215
- return useInitEditedEntity( params );
216
- }
@@ -82,6 +82,7 @@ export default function useSyncPathWithURL() {
82
82
  postType: navigatorParams?.postType,
83
83
  postId: navigatorParams?.postId,
84
84
  path: undefined,
85
+ layout: undefined,
85
86
  } );
86
87
  } else if (
87
88
  navigatorLocation.path.startsWith( '/page/' ) &&
@@ -91,6 +92,7 @@ export default function useSyncPathWithURL() {
91
92
  postType: 'page',
92
93
  postId: navigatorParams?.postId,
93
94
  path: undefined,
95
+ layout: undefined,
94
96
  } );
95
97
  } else if ( navigatorLocation.path === '/patterns' ) {
96
98
  updateUrlParams( {
@@ -99,12 +101,42 @@ export default function useSyncPathWithURL() {
99
101
  canvas: undefined,
100
102
  path: navigatorLocation.path,
101
103
  } );
104
+ } else if (
105
+ navigatorLocation.path === '/wp_template/all' &&
106
+ ! window?.__experimentalAdminViews
107
+ ) {
108
+ // When the experiment is disabled, we only support table layout.
109
+ // Clear it out from the URL, so layouts other than table cannot be accessed.
110
+ updateUrlParams( {
111
+ postType: undefined,
112
+ categoryType: undefined,
113
+ categoryId: undefined,
114
+ path: navigatorLocation.path,
115
+ layout: undefined,
116
+ } );
117
+ } else if (
118
+ // These sidebar paths are special in the sense that the url in these pages may or may not have a postId and we need to retain it if it has.
119
+ // The "type" property should be kept as well.
120
+ ( navigatorLocation.path === '/pages' &&
121
+ window?.__experimentalAdminViews ) ||
122
+ ( navigatorLocation.path === '/wp_template/all' &&
123
+ window?.__experimentalAdminViews ) ||
124
+ ( navigatorLocation.path === '/wp_template_part/all' &&
125
+ window?.__experimentalAdminViews )
126
+ ) {
127
+ updateUrlParams( {
128
+ postType: undefined,
129
+ categoryType: undefined,
130
+ categoryId: undefined,
131
+ path: navigatorLocation.path,
132
+ } );
102
133
  } else {
103
134
  updateUrlParams( {
104
135
  postType: undefined,
105
136
  postId: undefined,
106
137
  categoryType: undefined,
107
138
  categoryId: undefined,
139
+ layout: undefined,
108
140
  path:
109
141
  navigatorLocation.path === '/'
110
142
  ? undefined
@@ -216,6 +216,8 @@ function useEditUICommands() {
216
216
  showBlockBreadcrumbs,
217
217
  isListViewOpen,
218
218
  isDistractionFree,
219
+ isTopToolbar,
220
+ isFocusMode,
219
221
  } = useSelect( ( select ) => {
220
222
  const { get } = select( preferencesStore );
221
223
  const { getEditorMode } = select( editSiteStore );
@@ -229,6 +231,8 @@ function useEditUICommands() {
229
231
  showBlockBreadcrumbs: get( 'core', 'showBlockBreadcrumbs' ),
230
232
  isListViewOpen: isListViewOpened(),
231
233
  isDistractionFree: get( 'core', 'distractionFree' ),
234
+ isFocusMode: get( 'core', 'focusMode' ),
235
+ isTopToolbar: get( 'core', 'fixedToolbar' ),
232
236
  };
233
237
  }, [] );
234
238
  const { openModal } = useDispatch( interfaceStore );
@@ -271,16 +275,33 @@ function useEditUICommands() {
271
275
 
272
276
  commands.push( {
273
277
  name: 'core/toggle-spotlight-mode',
274
- label: __( 'Toggle spotlight mode' ),
278
+ label: __( 'Toggle spotlight' ),
275
279
  callback: ( { close } ) => {
276
280
  toggle( 'core', 'focusMode' );
277
281
  close();
282
+ createInfoNotice(
283
+ isFocusMode ? __( 'Spotlight off.' ) : __( 'Spotlight on.' ),
284
+ {
285
+ id: 'core/edit-site/toggle-spotlight-mode/notice',
286
+ type: 'snackbar',
287
+ actions: [
288
+ {
289
+ label: __( 'Undo' ),
290
+ onClick: () => {
291
+ toggle( 'core', 'focusMode' );
292
+ },
293
+ },
294
+ ],
295
+ }
296
+ );
278
297
  },
279
298
  } );
280
299
 
281
300
  commands.push( {
282
301
  name: 'core/toggle-distraction-free',
283
- label: __( 'Toggle distraction free' ),
302
+ label: isDistractionFree
303
+ ? __( 'Exit Distraction Free' )
304
+ : __( 'Enter Distraction Free ' ),
284
305
  callback: ( { close } ) => {
285
306
  toggleDistractionFree();
286
307
  close();
@@ -296,6 +317,23 @@ function useEditUICommands() {
296
317
  toggleDistractionFree();
297
318
  }
298
319
  close();
320
+ createInfoNotice(
321
+ isTopToolbar
322
+ ? __( 'Top toolbar off.' )
323
+ : __( 'Top toolbar on.' ),
324
+ {
325
+ id: 'core/edit-site/toggle-top-toolbar/notice',
326
+ type: 'snackbar',
327
+ actions: [
328
+ {
329
+ label: __( 'Undo' ),
330
+ onClick: () => {
331
+ toggle( 'core', 'fixedToolbar' );
332
+ },
333
+ },
334
+ ],
335
+ }
336
+ );
299
337
  },
300
338
  } );
301
339
 
@@ -350,11 +388,20 @@ function useEditUICommands() {
350
388
 
351
389
  commands.push( {
352
390
  name: 'core/toggle-list-view',
353
- label: __( 'Toggle list view' ),
391
+ label: isListViewOpen
392
+ ? __( 'Close List View' )
393
+ : __( 'Open List View' ),
354
394
  icon: listView,
355
395
  callback: ( { close } ) => {
356
396
  setIsListViewOpened( ! isListViewOpen );
357
397
  close();
398
+ createInfoNotice(
399
+ isListViewOpen ? __( 'List View off.' ) : __( 'List View on.' ),
400
+ {
401
+ id: 'core/edit-site/toggle-list-view/notice',
402
+ type: 'snackbar',
403
+ }
404
+ );
358
405
  },
359
406
  } );
360
407
 
@@ -389,30 +389,36 @@ function PushChangesToGlobalStylesControl( {
389
389
  );
390
390
  }
391
391
 
392
- const withPushChangesToGlobalStyles = createHigherOrderComponent(
393
- ( BlockEdit ) => ( props ) => {
394
- const blockEditingMode = useBlockEditingMode();
395
- const isBlockBasedTheme = useSelect(
396
- ( select ) => select( coreStore ).getCurrentTheme()?.is_block_theme,
397
- []
398
- );
399
- const supportsStyles = SUPPORTED_STYLES.some( ( feature ) =>
400
- hasBlockSupport( props.name, feature )
401
- );
402
-
403
- return (
404
- <>
405
- <BlockEdit { ...props } />
406
- { blockEditingMode === 'default' &&
407
- supportsStyles &&
408
- isBlockBasedTheme && (
409
- <InspectorAdvancedControls>
410
- <PushChangesToGlobalStylesControl { ...props } />
411
- </InspectorAdvancedControls>
412
- ) }
413
- </>
414
- );
392
+ function PushChangesToGlobalStyles( props ) {
393
+ const blockEditingMode = useBlockEditingMode();
394
+ const isBlockBasedTheme = useSelect(
395
+ ( select ) => select( coreStore ).getCurrentTheme()?.is_block_theme,
396
+ []
397
+ );
398
+ const supportsStyles = SUPPORTED_STYLES.some( ( feature ) =>
399
+ hasBlockSupport( props.name, feature )
400
+ );
401
+ const isDisplayed =
402
+ blockEditingMode === 'default' && supportsStyles && isBlockBasedTheme;
403
+
404
+ if ( ! isDisplayed ) {
405
+ return null;
415
406
  }
407
+
408
+ return (
409
+ <InspectorAdvancedControls>
410
+ <PushChangesToGlobalStylesControl { ...props } />
411
+ </InspectorAdvancedControls>
412
+ );
413
+ }
414
+
415
+ const withPushChangesToGlobalStyles = createHigherOrderComponent(
416
+ ( BlockEdit ) => ( props ) => (
417
+ <>
418
+ <BlockEdit { ...props } />
419
+ { props.isSelected && <PushChangesToGlobalStyles { ...props } /> }
420
+ </>
421
+ )
416
422
  );
417
423
 
418
424
  addFilter(
@@ -52,16 +52,14 @@ function EditTemplatePartMenuItem( { attributes } ) {
52
52
  }
53
53
 
54
54
  return (
55
- <BlockControls group="other">
56
- <ToolbarButton
57
- { ...linkProps }
58
- onClick={ ( event ) => {
59
- linkProps.onClick( event );
60
- } }
61
- >
62
- { __( 'Edit' ) }
63
- </ToolbarButton>
64
- </BlockControls>
55
+ <ToolbarButton
56
+ { ...linkProps }
57
+ onClick={ ( event ) => {
58
+ linkProps.onClick( event );
59
+ } }
60
+ >
61
+ { __( 'Edit' ) }
62
+ </ToolbarButton>
65
63
  );
66
64
  }
67
65
 
@@ -72,9 +70,11 @@ export const withEditBlockControls = createHigherOrderComponent(
72
70
 
73
71
  return (
74
72
  <>
75
- <BlockEdit { ...props } />
73
+ <BlockEdit key="edit" { ...props } />
76
74
  { isDisplayed && (
77
- <EditTemplatePartMenuItem attributes={ attributes } />
75
+ <BlockControls group="other">
76
+ <EditTemplatePartMenuItem attributes={ attributes } />
77
+ </BlockControls>
78
78
  ) }
79
79
  </>
80
80
  );
package/src/index.js CHANGED
@@ -52,7 +52,6 @@ export function initializeEditor( id, settings ) {
52
52
  // We dispatch actions and update the store synchronously before rendering
53
53
  // so that we won't trigger unnecessary re-renders with useEffect.
54
54
  dispatch( preferencesStore ).setDefaults( 'core/edit-site', {
55
- editorMode: 'visual',
56
55
  welcomeGuide: true,
57
56
  welcomeGuideStyles: true,
58
57
  welcomeGuidePage: true,
@@ -62,6 +61,7 @@ export function initializeEditor( id, settings ) {
62
61
  dispatch( preferencesStore ).setDefaults( 'core', {
63
62
  allowRightClickOverrides: true,
64
63
  distractionFree: false,
64
+ editorMode: 'visual',
65
65
  fixedToolbar: false,
66
66
  focusMode: false,
67
67
  inactivePanels: [],
@@ -5,7 +5,7 @@ import apiFetch from '@wordpress/api-fetch';
5
5
  import { parse, __unstableSerializeAndClean } from '@wordpress/blocks';
6
6
  import deprecated from '@wordpress/deprecated';
7
7
  import { addQueryArgs } from '@wordpress/url';
8
- import { __, sprintf } from '@wordpress/i18n';
8
+ import { __ } from '@wordpress/i18n';
9
9
  import { store as noticesStore } from '@wordpress/notices';
10
10
  import { store as coreStore } from '@wordpress/core-data';
11
11
  import { store as interfaceStore } from '@wordpress/interface';
@@ -13,7 +13,6 @@ import { store as blockEditorStore } from '@wordpress/block-editor';
13
13
  import { store as editorStore } from '@wordpress/editor';
14
14
  import { speak } from '@wordpress/a11y';
15
15
  import { store as preferencesStore } from '@wordpress/preferences';
16
- import { decodeEntities } from '@wordpress/html-entities';
17
16
 
18
17
  /**
19
18
  * Internal dependencies
@@ -25,6 +24,8 @@ import {
25
24
  TEMPLATE_PART_POST_TYPE,
26
25
  NAVIGATION_POST_TYPE,
27
26
  } from '../utils/constants';
27
+ import { removeTemplates } from './private-actions';
28
+
28
29
  /**
29
30
  * Dispatches an action that toggles a feature flag.
30
31
  *
@@ -133,54 +134,9 @@ export const addTemplate =
133
134
  *
134
135
  * @param {Object} template The template object.
135
136
  */
136
- export const removeTemplate =
137
- ( template ) =>
138
- async ( { registry } ) => {
139
- try {
140
- await registry
141
- .dispatch( coreStore )
142
- .deleteEntityRecord( 'postType', template.type, template.id, {
143
- force: true,
144
- } );
145
-
146
- const lastError = registry
147
- .select( coreStore )
148
- .getLastEntityDeleteError(
149
- 'postType',
150
- template.type,
151
- template.id
152
- );
153
-
154
- if ( lastError ) {
155
- throw lastError;
156
- }
157
-
158
- // Depending on how the entity was retrieved it's title might be
159
- // an object or simple string.
160
- const templateTitle =
161
- typeof template.title === 'string'
162
- ? template.title
163
- : template.title?.rendered;
164
-
165
- registry.dispatch( noticesStore ).createSuccessNotice(
166
- sprintf(
167
- /* translators: The template/part's name. */
168
- __( '"%s" deleted.' ),
169
- decodeEntities( templateTitle )
170
- ),
171
- { type: 'snackbar', id: 'site-editor-template-deleted-success' }
172
- );
173
- } catch ( error ) {
174
- const errorMessage =
175
- error.message && error.code !== 'unknown_error'
176
- ? error.message
177
- : __( 'An error occurred while deleting the template.' );
178
-
179
- registry
180
- .dispatch( noticesStore )
181
- .createErrorNotice( errorMessage, { type: 'snackbar' } );
182
- }
183
- };
137
+ export const removeTemplate = ( template ) => {
138
+ return removeTemplates( [ template ] );
139
+ };
184
140
 
185
141
  /**
186
142
  * Action that sets a template part.
@@ -549,7 +505,7 @@ export const switchEditorMode =
549
505
  ( { dispatch, registry } ) => {
550
506
  registry
551
507
  .dispatch( 'core/preferences' )
552
- .set( 'core/edit-site', 'editorMode', mode );
508
+ .set( 'core', 'editorMode', mode );
553
509
 
554
510
  // Unselect blocks when we switch to a non visual mode.
555
511
  if ( mode !== 'visual' ) {
@@ -626,6 +582,16 @@ export const toggleDistractionFree =
626
582
  {
627
583
  id: 'core/edit-site/distraction-free-mode/notice',
628
584
  type: 'snackbar',
585
+ actions: [
586
+ {
587
+ label: __( 'Undo' ),
588
+ onClick: () => {
589
+ registry
590
+ .dispatch( preferencesStore )
591
+ .toggle( 'core', 'distractionFree' );
592
+ },
593
+ },
594
+ ],
629
595
  }
630
596
  );
631
597
  } );