@wordpress/edit-site 5.26.0 → 5.27.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 (330) 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/utils/filter-fonts.js +17 -2
  29. package/build/components/global-styles/font-library-modal/utils/filter-fonts.js.map +1 -1
  30. package/build/components/global-styles/font-library-modal/utils/index.js +103 -17
  31. package/build/components/global-styles/font-library-modal/utils/index.js.map +1 -1
  32. package/build/components/global-styles/font-library-modal/utils/preview-styles.js +4 -3
  33. package/build/components/global-styles/font-library-modal/utils/preview-styles.js.map +1 -1
  34. package/build/components/global-styles/screen-typography.js +4 -1
  35. package/build/components/global-styles/screen-typography.js.map +1 -1
  36. package/build/components/layout/hooks.js +6 -5
  37. package/build/components/layout/hooks.js.map +1 -1
  38. package/build/components/layout/index.js +19 -28
  39. package/build/components/layout/index.js.map +1 -1
  40. package/build/components/layout/router.js +135 -0
  41. package/build/components/layout/router.js.map +1 -0
  42. package/build/components/page-pages/index.js +92 -69
  43. package/build/components/page-pages/index.js.map +1 -1
  44. package/build/components/page-patterns/dataviews-pattern-actions.js +11 -6
  45. package/build/components/page-patterns/dataviews-pattern-actions.js.map +1 -1
  46. package/build/components/page-patterns/index.js +295 -15
  47. package/build/components/page-patterns/index.js.map +1 -1
  48. package/build/components/{page-templates/template-actions.js → page-templates-template-parts/actions.js} +51 -23
  49. package/build/components/page-templates-template-parts/actions.js.map +1 -0
  50. package/build/components/page-templates-template-parts/add-new-template-part.js.map +1 -0
  51. package/build/components/page-templates-template-parts/index.js +395 -0
  52. package/build/components/page-templates-template-parts/index.js.map +1 -0
  53. package/build/components/preferences-modal/index.js +9 -134
  54. package/build/components/preferences-modal/index.js.map +1 -1
  55. package/build/components/revisions/index.js +1 -1
  56. package/build/components/revisions/index.js.map +1 -1
  57. package/build/components/save-button/index.js +4 -2
  58. package/build/components/save-button/index.js.map +1 -1
  59. package/build/components/save-panel/index.js +6 -5
  60. package/build/components/save-panel/index.js.map +1 -1
  61. package/build/components/sidebar/index.js +3 -1
  62. package/build/components/sidebar/index.js.map +1 -1
  63. package/build/components/sidebar-dataviews/dataview-item.js +3 -1
  64. package/build/components/sidebar-dataviews/dataview-item.js.map +1 -1
  65. package/build/components/sidebar-dataviews/default-views.js +4 -2
  66. package/build/components/sidebar-dataviews/default-views.js.map +1 -1
  67. package/build/components/sidebar-dataviews/index.js +2 -2
  68. package/build/components/sidebar-dataviews/index.js.map +1 -1
  69. package/build/components/sidebar-navigation-screen/index.js +8 -7
  70. package/build/components/sidebar-navigation-screen/index.js.map +1 -1
  71. package/build/components/sidebar-navigation-screen-pages/index.js +2 -10
  72. package/build/components/sidebar-navigation-screen-pages/index.js.map +1 -1
  73. package/build/components/sidebar-navigation-screen-pages-dataviews/index.js +26 -3
  74. package/build/components/sidebar-navigation-screen-pages-dataviews/index.js.map +1 -1
  75. package/build/components/sidebar-navigation-screen-templates/index.js +63 -8
  76. package/build/components/sidebar-navigation-screen-templates/index.js.map +1 -1
  77. package/build/components/sidebar-navigation-screen-templates-browse/content.js +76 -0
  78. package/build/components/sidebar-navigation-screen-templates-browse/content.js.map +1 -0
  79. package/build/components/sidebar-navigation-screen-templates-browse/index.js +9 -2
  80. package/build/components/sidebar-navigation-screen-templates-browse/index.js.map +1 -1
  81. package/build/components/site-hub/index.js +3 -1
  82. package/build/components/site-hub/index.js.map +1 -1
  83. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js +47 -12
  84. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  85. package/build/components/sync-state-with-url/use-sync-path-with-url.js +25 -2
  86. package/build/components/sync-state-with-url/use-sync-path-with-url.js.map +1 -1
  87. package/build/hooks/commands/use-edit-mode-commands.js +33 -5
  88. package/build/hooks/commands/use-edit-mode-commands.js.map +1 -1
  89. package/build/hooks/push-changes-to-global-styles/index.js +13 -6
  90. package/build/hooks/push-changes-to-global-styles/index.js.map +1 -1
  91. package/build/hooks/template-part-edit.js +7 -6
  92. package/build/hooks/template-part-edit.js.map +1 -1
  93. package/build/index.js +1 -1
  94. package/build/index.js.map +1 -1
  95. package/build/store/actions.js +11 -29
  96. package/build/store/actions.js.map +1 -1
  97. package/build/store/private-actions.js +85 -1
  98. package/build/store/private-actions.js.map +1 -1
  99. package/build/store/selectors.js +2 -2
  100. package/build/store/selectors.js.map +1 -1
  101. package/build/utils/get-is-list-page.js +1 -1
  102. package/build/utils/get-is-list-page.js.map +1 -1
  103. package/build/utils/use-actual-current-theme.js +32 -0
  104. package/build/utils/use-actual-current-theme.js.map +1 -0
  105. package/build-module/components/actions/index.js +139 -36
  106. package/build-module/components/actions/index.js.map +1 -1
  107. package/build-module/components/editor-canvas-container/index.js +1 -1
  108. package/build-module/components/editor-canvas-container/index.js.map +1 -1
  109. package/build-module/components/global-styles/font-families.js +3 -2
  110. package/build-module/components/global-styles/font-families.js.map +1 -1
  111. package/build-module/components/global-styles/font-family-item.js +4 -5
  112. package/build-module/components/global-styles/font-family-item.js.map +1 -1
  113. package/build-module/components/global-styles/font-library-modal/context.js +82 -42
  114. package/build-module/components/global-styles/font-library-modal/context.js.map +1 -1
  115. package/build-module/components/global-styles/font-library-modal/font-collection.js +49 -22
  116. package/build-module/components/global-styles/font-library-modal/font-collection.js.map +1 -1
  117. package/build-module/components/global-styles/font-library-modal/fonts-grid.js +4 -1
  118. package/build-module/components/global-styles/font-library-modal/fonts-grid.js.map +1 -1
  119. package/build-module/components/global-styles/font-library-modal/index.js +4 -4
  120. package/build-module/components/global-styles/font-library-modal/index.js.map +1 -1
  121. package/build-module/components/global-styles/font-library-modal/installed-fonts.js +16 -8
  122. package/build-module/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
  123. package/build-module/components/global-styles/font-library-modal/library-font-card.js +1 -1
  124. package/build-module/components/global-styles/font-library-modal/library-font-card.js.map +1 -1
  125. package/build-module/components/global-styles/font-library-modal/library-font-variant.js +2 -2
  126. package/build-module/components/global-styles/font-library-modal/library-font-variant.js.map +1 -1
  127. package/build-module/components/global-styles/font-library-modal/local-fonts.js +13 -4
  128. package/build-module/components/global-styles/font-library-modal/local-fonts.js.map +1 -1
  129. package/build-module/components/global-styles/font-library-modal/resolvers.js +45 -18
  130. package/build-module/components/global-styles/font-library-modal/resolvers.js.map +1 -1
  131. package/build-module/components/global-styles/font-library-modal/utils/filter-fonts.js +17 -2
  132. package/build-module/components/global-styles/font-library-modal/utils/filter-fonts.js.map +1 -1
  133. package/build-module/components/global-styles/font-library-modal/utils/index.js +99 -16
  134. package/build-module/components/global-styles/font-library-modal/utils/index.js.map +1 -1
  135. package/build-module/components/global-styles/font-library-modal/utils/preview-styles.js +4 -3
  136. package/build-module/components/global-styles/font-library-modal/utils/preview-styles.js.map +1 -1
  137. package/build-module/components/global-styles/screen-typography.js +4 -1
  138. package/build-module/components/global-styles/screen-typography.js.map +1 -1
  139. package/build-module/components/layout/hooks.js +6 -5
  140. package/build-module/components/layout/hooks.js.map +1 -1
  141. package/build-module/components/layout/index.js +19 -28
  142. package/build-module/components/layout/index.js.map +1 -1
  143. package/build-module/components/layout/router.js +127 -0
  144. package/build-module/components/layout/router.js.map +1 -0
  145. package/build-module/components/page-pages/index.js +91 -70
  146. package/build-module/components/page-pages/index.js.map +1 -1
  147. package/build-module/components/page-patterns/dataviews-pattern-actions.js +11 -6
  148. package/build-module/components/page-patterns/dataviews-pattern-actions.js.map +1 -1
  149. package/build-module/components/page-patterns/index.js +296 -16
  150. package/build-module/components/page-patterns/index.js.map +1 -1
  151. package/build-module/components/{page-templates/template-actions.js → page-templates-template-parts/actions.js} +52 -24
  152. package/build-module/components/page-templates-template-parts/actions.js.map +1 -0
  153. package/build-module/components/page-templates-template-parts/add-new-template-part.js.map +1 -0
  154. package/build-module/components/page-templates-template-parts/index.js +385 -0
  155. package/build-module/components/page-templates-template-parts/index.js.map +1 -0
  156. package/build-module/components/preferences-modal/index.js +12 -136
  157. package/build-module/components/preferences-modal/index.js.map +1 -1
  158. package/build-module/components/revisions/index.js +1 -1
  159. package/build-module/components/revisions/index.js.map +1 -1
  160. package/build-module/components/save-button/index.js +4 -2
  161. package/build-module/components/save-button/index.js.map +1 -1
  162. package/build-module/components/save-panel/index.js +7 -6
  163. package/build-module/components/save-panel/index.js.map +1 -1
  164. package/build-module/components/sidebar/index.js +3 -1
  165. package/build-module/components/sidebar/index.js.map +1 -1
  166. package/build-module/components/sidebar-dataviews/dataview-item.js +3 -1
  167. package/build-module/components/sidebar-dataviews/dataview-item.js.map +1 -1
  168. package/build-module/components/sidebar-dataviews/default-views.js +4 -2
  169. package/build-module/components/sidebar-dataviews/default-views.js.map +1 -1
  170. package/build-module/components/sidebar-dataviews/index.js +2 -2
  171. package/build-module/components/sidebar-dataviews/index.js.map +1 -1
  172. package/build-module/components/sidebar-navigation-screen/index.js +8 -7
  173. package/build-module/components/sidebar-navigation-screen/index.js.map +1 -1
  174. package/build-module/components/sidebar-navigation-screen-pages/index.js +2 -10
  175. package/build-module/components/sidebar-navigation-screen-pages/index.js.map +1 -1
  176. package/build-module/components/sidebar-navigation-screen-pages-dataviews/index.js +27 -4
  177. package/build-module/components/sidebar-navigation-screen-pages-dataviews/index.js.map +1 -1
  178. package/build-module/components/sidebar-navigation-screen-templates/index.js +64 -9
  179. package/build-module/components/sidebar-navigation-screen-templates/index.js.map +1 -1
  180. package/build-module/components/sidebar-navigation-screen-templates-browse/content.js +68 -0
  181. package/build-module/components/sidebar-navigation-screen-templates-browse/content.js.map +1 -0
  182. package/build-module/components/sidebar-navigation-screen-templates-browse/index.js +9 -2
  183. package/build-module/components/sidebar-navigation-screen-templates-browse/index.js.map +1 -1
  184. package/build-module/components/site-hub/index.js +3 -1
  185. package/build-module/components/site-hub/index.js.map +1 -1
  186. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js +47 -11
  187. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  188. package/build-module/components/sync-state-with-url/use-sync-path-with-url.js +25 -2
  189. package/build-module/components/sync-state-with-url/use-sync-path-with-url.js.map +1 -1
  190. package/build-module/hooks/commands/use-edit-mode-commands.js +33 -5
  191. package/build-module/hooks/commands/use-edit-mode-commands.js.map +1 -1
  192. package/build-module/hooks/push-changes-to-global-styles/index.js +13 -6
  193. package/build-module/hooks/push-changes-to-global-styles/index.js.map +1 -1
  194. package/build-module/hooks/template-part-edit.js +7 -6
  195. package/build-module/hooks/template-part-edit.js.map +1 -1
  196. package/build-module/index.js +1 -1
  197. package/build-module/index.js.map +1 -1
  198. package/build-module/store/actions.js +13 -30
  199. package/build-module/store/actions.js.map +1 -1
  200. package/build-module/store/private-actions.js +83 -0
  201. package/build-module/store/private-actions.js.map +1 -1
  202. package/build-module/store/selectors.js +2 -2
  203. package/build-module/store/selectors.js.map +1 -1
  204. package/build-module/utils/get-is-list-page.js +1 -1
  205. package/build-module/utils/get-is-list-page.js.map +1 -1
  206. package/build-module/utils/use-actual-current-theme.js +24 -0
  207. package/build-module/utils/use-actual-current-theme.js.map +1 -0
  208. package/build-style/style-rtl.css +302 -188
  209. package/build-style/style.css +302 -188
  210. package/package.json +42 -42
  211. package/src/components/actions/index.js +236 -84
  212. package/src/components/editor-canvas-container/index.js +1 -1
  213. package/src/components/global-styles/font-families.js +14 -8
  214. package/src/components/global-styles/font-family-item.js +7 -4
  215. package/src/components/global-styles/font-library-modal/context.js +156 -50
  216. package/src/components/global-styles/font-library-modal/font-collection.js +56 -21
  217. package/src/components/global-styles/font-library-modal/fonts-grid.js +6 -2
  218. package/src/components/global-styles/font-library-modal/index.js +4 -4
  219. package/src/components/global-styles/font-library-modal/installed-fonts.js +18 -8
  220. package/src/components/global-styles/font-library-modal/library-font-card.js +2 -1
  221. package/src/components/global-styles/font-library-modal/library-font-variant.js +10 -9
  222. package/src/components/global-styles/font-library-modal/local-fonts.js +14 -4
  223. package/src/components/global-styles/font-library-modal/resolvers.js +50 -17
  224. package/src/components/global-styles/font-library-modal/style.scss +1 -0
  225. package/src/components/global-styles/font-library-modal/utils/filter-fonts.js +19 -2
  226. package/src/components/global-styles/font-library-modal/utils/index.js +136 -29
  227. package/src/components/global-styles/font-library-modal/utils/preview-styles.js +7 -3
  228. package/src/components/global-styles/font-library-modal/utils/test/filter-fonts.spec.js +40 -10
  229. package/src/components/global-styles/font-library-modal/utils/test/preview-styles.spec.js +5 -5
  230. package/src/components/global-styles/screen-typography.js +9 -3
  231. package/src/components/global-styles/style.scss +4 -0
  232. package/src/components/header-edit-mode/style.scss +15 -5
  233. package/src/components/layout/hooks.js +6 -5
  234. package/src/components/layout/index.js +80 -96
  235. package/src/components/layout/router.js +121 -0
  236. package/src/components/layout/style.scss +13 -16
  237. package/src/components/page/style.scss +1 -8
  238. package/src/components/page-pages/index.js +142 -148
  239. package/src/components/page-pages/style.scss +41 -2
  240. package/src/components/page-patterns/dataviews-pattern-actions.js +11 -6
  241. package/src/components/page-patterns/index.js +392 -14
  242. package/src/components/page-patterns/style.scss +36 -2
  243. package/src/components/{page-templates/template-actions.js → page-templates-template-parts/actions.js} +90 -37
  244. package/src/components/{page-templates → page-templates-template-parts}/index.js +198 -169
  245. package/src/components/page-templates-template-parts/style.scss +44 -0
  246. package/src/components/preferences-modal/index.js +8 -211
  247. package/src/components/revisions/index.js +1 -1
  248. package/src/components/save-button/index.js +7 -4
  249. package/src/components/save-panel/index.js +13 -12
  250. package/src/components/sidebar/index.js +4 -5
  251. package/src/components/sidebar-dataviews/dataview-item.js +2 -1
  252. package/src/components/sidebar-dataviews/default-views.js +4 -2
  253. package/src/components/sidebar-dataviews/index.js +8 -6
  254. package/src/components/sidebar-navigation-item/style.scss +1 -1
  255. package/src/components/sidebar-navigation-screen/index.js +19 -10
  256. package/src/components/sidebar-navigation-screen-pages/index.js +2 -10
  257. package/src/components/sidebar-navigation-screen-pages-dataviews/index.js +32 -6
  258. package/src/components/sidebar-navigation-screen-templates/index.js +85 -28
  259. package/src/components/sidebar-navigation-screen-templates/style.scss +9 -0
  260. package/src/components/sidebar-navigation-screen-templates-browse/content.js +73 -0
  261. package/src/components/sidebar-navigation-screen-templates-browse/index.js +10 -1
  262. package/src/components/site-hub/index.js +4 -1
  263. package/src/components/site-hub/style.scss +1 -12
  264. package/src/components/site-icon/style.scss +1 -1
  265. package/src/components/sync-state-with-url/use-init-edited-entity-from-url.js +40 -10
  266. package/src/components/sync-state-with-url/use-sync-path-with-url.js +32 -0
  267. package/src/hooks/commands/use-edit-mode-commands.js +50 -3
  268. package/src/hooks/push-changes-to-global-styles/index.js +29 -23
  269. package/src/hooks/template-part-edit.js +12 -12
  270. package/src/index.js +1 -1
  271. package/src/store/actions.js +17 -51
  272. package/src/store/private-actions.js +133 -0
  273. package/src/store/selectors.js +2 -4
  274. package/src/style.scss +2 -1
  275. package/src/utils/get-is-list-page.js +3 -2
  276. package/src/utils/use-actual-current-theme.js +27 -0
  277. package/build/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js +0 -58
  278. package/build/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js.map +0 -1
  279. package/build/components/global-styles/font-library-modal/utils/get-notice-from-response.js +0 -71
  280. package/build/components/global-styles/font-library-modal/utils/get-notice-from-response.js.map +0 -1
  281. package/build/components/page-main/index.js +0 -44
  282. package/build/components/page-main/index.js.map +0 -1
  283. package/build/components/page-patterns/dataviews-patterns.js +0 -307
  284. package/build/components/page-patterns/dataviews-patterns.js.map +0 -1
  285. package/build/components/page-template-parts/add-new-template-part.js.map +0 -1
  286. package/build/components/page-template-parts/index.js +0 -81
  287. package/build/components/page-template-parts/index.js.map +0 -1
  288. package/build/components/page-templates/index.js +0 -352
  289. package/build/components/page-templates/index.js.map +0 -1
  290. package/build/components/page-templates/template-actions.js.map +0 -1
  291. package/build/components/post-preview/index.js +0 -29
  292. package/build/components/post-preview/index.js.map +0 -1
  293. package/build/components/preferences-modal/enable-feature.js +0 -36
  294. package/build/components/preferences-modal/enable-feature.js.map +0 -1
  295. package/build/components/preferences-modal/enable-panel-option.js +0 -33
  296. package/build/components/preferences-modal/enable-panel-option.js.map +0 -1
  297. package/build-module/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js +0 -52
  298. package/build-module/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js.map +0 -1
  299. package/build-module/components/global-styles/font-library-modal/utils/get-notice-from-response.js +0 -63
  300. package/build-module/components/global-styles/font-library-modal/utils/get-notice-from-response.js.map +0 -1
  301. package/build-module/components/page-main/index.js +0 -36
  302. package/build-module/components/page-main/index.js.map +0 -1
  303. package/build-module/components/page-patterns/dataviews-patterns.js +0 -299
  304. package/build-module/components/page-patterns/dataviews-patterns.js.map +0 -1
  305. package/build-module/components/page-template-parts/add-new-template-part.js.map +0 -1
  306. package/build-module/components/page-template-parts/index.js +0 -73
  307. package/build-module/components/page-template-parts/index.js.map +0 -1
  308. package/build-module/components/page-templates/index.js +0 -344
  309. package/build-module/components/page-templates/index.js.map +0 -1
  310. package/build-module/components/page-templates/template-actions.js.map +0 -1
  311. package/build-module/components/post-preview/index.js +0 -21
  312. package/build-module/components/post-preview/index.js.map +0 -1
  313. package/build-module/components/preferences-modal/enable-feature.js +0 -29
  314. package/build-module/components/preferences-modal/enable-feature.js.map +0 -1
  315. package/build-module/components/preferences-modal/enable-panel-option.js +0 -26
  316. package/build-module/components/preferences-modal/enable-panel-option.js.map +0 -1
  317. package/src/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js +0 -58
  318. package/src/components/global-styles/font-library-modal/utils/get-notice-from-response.js +0 -62
  319. package/src/components/global-styles/font-library-modal/utils/test/getIntersectingFontFaces.spec.js +0 -271
  320. package/src/components/global-styles/font-library-modal/utils/test/makeFormDataFromFontFamily.spec.js +0 -58
  321. package/src/components/page-main/index.js +0 -38
  322. package/src/components/page-patterns/dataviews-patterns.js +0 -380
  323. package/src/components/page-template-parts/index.js +0 -99
  324. package/src/components/page-templates/style.scss +0 -13
  325. package/src/components/post-preview/index.js +0 -16
  326. package/src/components/preferences-modal/enable-feature.js +0 -31
  327. package/src/components/preferences-modal/enable-panel-option.js +0 -23
  328. /package/build/components/{page-template-parts → page-templates-template-parts}/add-new-template-part.js +0 -0
  329. /package/build-module/components/{page-template-parts → page-templates-template-parts}/add-new-template-part.js +0 -0
  330. /package/src/components/{page-template-parts → page-templates-template-parts}/add-new-template-part.js +0 -0
@@ -1,30 +1,16 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import {
5
- PreferencesModal,
6
- PreferencesModalTabs,
7
- PreferencesModalSection,
8
- store as interfaceStore,
9
- } from '@wordpress/interface';
10
- import { __ } from '@wordpress/i18n';
11
- import { useSelect, useDispatch, useRegistry } from '@wordpress/data';
12
- import { store as preferencesStore } from '@wordpress/preferences';
13
- import {
14
- PostTaxonomies,
15
- PostExcerptCheck,
16
- PageAttributesCheck,
17
- PostFeaturedImageCheck,
18
- PostTypeSupportCheck,
19
- store as editorStore,
20
- } from '@wordpress/editor';
4
+ import { store as interfaceStore } from '@wordpress/interface';
5
+ import { useSelect, useDispatch } from '@wordpress/data';
6
+ import { privateApis as editorPrivateApis } from '@wordpress/editor';
21
7
 
22
8
  /**
23
9
  * Internal dependencies
24
10
  */
25
- import EnableFeature from './enable-feature';
26
- import EnablePanelOption from './enable-panel-option';
27
- import { store as editSiteStore } from '../../store';
11
+ import { unlock } from '../../lock-unlock';
12
+
13
+ const { PreferencesModal } = unlock( editorPrivateApis );
28
14
 
29
15
  export const PREFERENCES_MODAL_NAME = 'edit-site/preferences';
30
16
 
@@ -32,201 +18,12 @@ export default function EditSitePreferencesModal() {
32
18
  const isModalActive = useSelect( ( select ) =>
33
19
  select( interfaceStore ).isModalActive( PREFERENCES_MODAL_NAME )
34
20
  );
35
- const { closeModal, openModal } = useDispatch( interfaceStore );
36
- const toggleModal = () =>
37
- isModalActive ? closeModal() : openModal( PREFERENCES_MODAL_NAME );
38
- const registry = useRegistry();
39
- const { closeGeneralSidebar } = useDispatch( editSiteStore );
40
- const { setIsListViewOpened, setIsInserterOpened } =
41
- useDispatch( editorStore );
42
-
43
- const { set: setPreference } = useDispatch( preferencesStore );
44
- const toggleDistractionFree = () => {
45
- registry.batch( () => {
46
- setPreference( 'core', 'fixedToolbar', true );
47
- setIsInserterOpened( false );
48
- setIsListViewOpened( false );
49
- closeGeneralSidebar();
50
- } );
51
- };
52
-
53
- const turnOffDistractionFree = () => {
54
- setPreference( 'core', 'distractionFree', false );
55
- };
21
+ const { closeModal } = useDispatch( interfaceStore );
56
22
 
57
- const sections = [
58
- {
59
- name: 'general',
60
- tabLabel: __( 'General' ),
61
- content: (
62
- <>
63
- <PreferencesModalSection title={ __( 'Interface' ) }>
64
- <EnableFeature
65
- scope="core"
66
- featureName="showListViewByDefault"
67
- help={ __(
68
- 'Opens the block list view sidebar by default.'
69
- ) }
70
- label={ __( 'Always open list view' ) }
71
- />
72
- <EnableFeature
73
- scope="core"
74
- featureName="showBlockBreadcrumbs"
75
- help={ __(
76
- 'Shows block breadcrumbs at the bottom of the editor.'
77
- ) }
78
- label={ __( 'Display block breadcrumbs' ) }
79
- />
80
- <EnableFeature
81
- scope="core"
82
- featureName="allowRightClickOverrides"
83
- help={ __(
84
- 'Allows contextual list view menus via right-click, overriding browser defaults.'
85
- ) }
86
- label={ __( 'Allow right-click contextual menus' ) }
87
- />
88
- </PreferencesModalSection>
89
- <PreferencesModalSection
90
- title={ __( 'Document settings' ) }
91
- description={ __(
92
- 'Select what settings are shown in the document panel.'
93
- ) }
94
- >
95
- <PostTaxonomies
96
- taxonomyWrapper={ ( content, taxonomy ) => (
97
- <EnablePanelOption
98
- label={ taxonomy.labels.menu_name }
99
- panelName={ `taxonomy-panel-${ taxonomy.slug }` }
100
- />
101
- ) }
102
- />
103
- <PostFeaturedImageCheck>
104
- <EnablePanelOption
105
- label={ __( 'Featured image' ) }
106
- panelName="featured-image"
107
- />
108
- </PostFeaturedImageCheck>
109
- <PostExcerptCheck>
110
- <EnablePanelOption
111
- label={ __( 'Excerpt' ) }
112
- panelName="post-excerpt"
113
- />
114
- </PostExcerptCheck>
115
- <PostTypeSupportCheck
116
- supportKeys={ [ 'comments', 'trackbacks' ] }
117
- >
118
- <EnablePanelOption
119
- label={ __( 'Discussion' ) }
120
- panelName="discussion-panel"
121
- />
122
- </PostTypeSupportCheck>
123
- <PageAttributesCheck>
124
- <EnablePanelOption
125
- label={ __( 'Page attributes' ) }
126
- panelName="page-attributes"
127
- />
128
- </PageAttributesCheck>
129
- </PreferencesModalSection>
130
- </>
131
- ),
132
- },
133
- {
134
- name: 'appearance',
135
- tabLabel: __( 'Appearance' ),
136
- content: (
137
- <PreferencesModalSection
138
- title={ __( 'Appearance' ) }
139
- description={ __(
140
- 'Customize the editor interface to suit your needs.'
141
- ) }
142
- >
143
- <EnableFeature
144
- scope="core"
145
- featureName="fixedToolbar"
146
- onToggle={ turnOffDistractionFree }
147
- help={ __(
148
- 'Access all block and document tools in a single place.'
149
- ) }
150
- label={ __( 'Top toolbar' ) }
151
- />
152
- <EnableFeature
153
- scope="core"
154
- featureName="distractionFree"
155
- onToggle={ toggleDistractionFree }
156
- help={ __(
157
- 'Reduce visual distractions by hiding the toolbar and other elements to focus on writing.'
158
- ) }
159
- label={ __( 'Distraction free' ) }
160
- />
161
- <EnableFeature
162
- scope="core"
163
- featureName="focusMode"
164
- help={ __(
165
- 'Highlights the current block and fades other content.'
166
- ) }
167
- label={ __( 'Spotlight mode' ) }
168
- />
169
- </PreferencesModalSection>
170
- ),
171
- },
172
- {
173
- name: 'accessibility',
174
- tabLabel: __( 'Accessibility' ),
175
- content: (
176
- <>
177
- <PreferencesModalSection
178
- title={ __( 'Navigation' ) }
179
- description={ __(
180
- 'Optimize the editing experience for enhanced control.'
181
- ) }
182
- >
183
- <EnableFeature
184
- scope="core"
185
- featureName="keepCaretInsideBlock"
186
- help={ __(
187
- 'Keeps the text cursor within the block boundaries, aiding users with screen readers by preventing unintentional cursor movement outside the block.'
188
- ) }
189
- label={ __( 'Contain text cursor inside block' ) }
190
- />
191
- </PreferencesModalSection>
192
- <PreferencesModalSection title={ __( 'Interface' ) }>
193
- <EnableFeature
194
- scope="core"
195
- featureName="showIconLabels"
196
- label={ __( 'Show button text labels' ) }
197
- help={ __(
198
- 'Show text instead of icons on buttons across the interface.'
199
- ) }
200
- />
201
- </PreferencesModalSection>
202
- </>
203
- ),
204
- },
205
- {
206
- name: 'blocks',
207
- tabLabel: __( 'Blocks' ),
208
- content: (
209
- <>
210
- <PreferencesModalSection title={ __( 'Inserter' ) }>
211
- <EnableFeature
212
- scope="core"
213
- featureName="mostUsedBlocks"
214
- help={ __(
215
- 'Adds a category with the most frequently used blocks in the inserter.'
216
- ) }
217
- label={ __( 'Show most used blocks' ) }
218
- />
219
- </PreferencesModalSection>
220
- </>
221
- ),
222
- },
223
- ];
224
23
  if ( ! isModalActive ) {
225
24
  return null;
226
25
  }
227
26
  return (
228
- <PreferencesModal closeModal={ toggleModal }>
229
- <PreferencesModalTabs sections={ sections } />
230
- </PreferencesModal>
27
+ <PreferencesModal isActive={ isModalActive } onClose={ closeModal } />
231
28
  );
232
29
  }
@@ -78,7 +78,7 @@ function Revisions( { userConfig, blocks } ) {
78
78
  {
79
79
  // Forming a "block formatting context" to prevent margin collapsing.
80
80
  // @see https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Block_formatting_context
81
- `.is-root-container { display: flow-root; } body { position: relative; padding: 32px; }`
81
+ `.is-root-container { display: flow-root; }`
82
82
  }
83
83
  </style>
84
84
  <Disabled className="edit-site-revisions__example-preview__content">
@@ -34,9 +34,7 @@ export default function SaveButton( {
34
34
  const dirtyEntityRecords = __experimentalGetDirtyEntityRecords();
35
35
  const { isSaveViewOpened } = select( editSiteStore );
36
36
  const isActivatingTheme = isResolving( 'activateTheme' );
37
- const previewingTheme = select( coreStore ).getTheme(
38
- currentlyPreviewingTheme()
39
- );
37
+ const currentlyPreviewingThemeId = currentlyPreviewingTheme();
40
38
 
41
39
  return {
42
40
  isDirty: dirtyEntityRecords.length > 0,
@@ -49,7 +47,12 @@ export default function SaveButton( {
49
47
  )
50
48
  ) || isActivatingTheme,
51
49
  isSaveViewOpen: isSaveViewOpened(),
52
- previewingThemeName: previewingTheme?.name?.rendered,
50
+ // Do not call `getTheme` with null, it will cause a request to
51
+ // the server.
52
+ previewingThemeName: currentlyPreviewingThemeId
53
+ ? select( coreStore ).getTheme( currentlyPreviewingThemeId )
54
+ ?.name?.rendered
55
+ : undefined,
53
56
  };
54
57
  }, [] );
55
58
  const { setIsSaveViewOpened } = useDispatch( editSiteStore );
@@ -23,10 +23,8 @@ import { store as coreStore } from '@wordpress/core-data';
23
23
  import { store as editSiteStore } from '../../store';
24
24
  import { unlock } from '../../lock-unlock';
25
25
  import { useActivateTheme } from '../../utils/use-activate-theme';
26
- import {
27
- currentlyPreviewingTheme,
28
- isPreviewingTheme,
29
- } from '../../utils/is-previewing-theme';
26
+ import { useActualCurrentTheme } from '../../utils/use-actual-current-theme';
27
+ import { isPreviewingTheme } from '../../utils/is-previewing-theme';
30
28
 
31
29
  const { EntitiesSavedStatesExtensible } = unlock( privateApis );
32
30
 
@@ -39,19 +37,22 @@ const EntitiesSavedStatesForPreview = ( { onClose } ) => {
39
37
  activateSaveLabel = __( 'Activate' );
40
38
  }
41
39
 
42
- const themeName = useSelect( ( select ) => {
43
- const theme = select( coreStore ).getTheme(
44
- currentlyPreviewingTheme()
45
- );
40
+ const currentTheme = useActualCurrentTheme();
46
41
 
47
- return theme?.name?.rendered;
48
- }, [] );
42
+ const previewingTheme = useSelect(
43
+ ( select ) => select( coreStore ).getCurrentTheme(),
44
+ []
45
+ );
49
46
 
50
47
  const additionalPrompt = (
51
48
  <p>
52
49
  { sprintf(
53
- 'Saving your changes will change your active theme to %s.',
54
- themeName
50
+ /* translators: %1$s: The name of active theme, %2$s: The name of theme to be activated. */
51
+ __(
52
+ 'Saving your changes will change your active theme from %1$s to %2$s.'
53
+ ),
54
+ currentTheme?.name?.rendered ?? '...',
55
+ previewingTheme?.name?.rendered ?? '...'
55
56
  ) }
56
57
  </p>
57
58
  );
@@ -66,11 +66,10 @@ function SidebarScreens() {
66
66
  <SidebarNavigationScreenGlobalStyles />
67
67
  </SidebarScreenWrapper>
68
68
  <SidebarScreenWrapper path="/page">
69
- { window?.__experimentalAdminViews ? (
70
- <SidebarNavigationScreenPagesDataViews />
71
- ) : (
72
- <SidebarNavigationScreenPages />
73
- ) }
69
+ <SidebarNavigationScreenPages />
70
+ </SidebarScreenWrapper>
71
+ <SidebarScreenWrapper path="/pages">
72
+ <SidebarNavigationScreenPagesDataViews />
74
73
  </SidebarScreenWrapper>
75
74
  <SidebarScreenWrapper path="/page/:postId">
76
75
  <SidebarNavigationScreenPage />
@@ -29,7 +29,7 @@ export default function DataViewItem( {
29
29
  suffix,
30
30
  } ) {
31
31
  const {
32
- params: { path },
32
+ params: { path, layout },
33
33
  } = useLocation();
34
34
 
35
35
  const iconToUse =
@@ -37,6 +37,7 @@ export default function DataViewItem( {
37
37
 
38
38
  const linkInfo = useLink( {
39
39
  path,
40
+ layout,
40
41
  activeView: isCustom === 'true' ? customViewId : slug,
41
42
  isCustom,
42
43
  } );
@@ -15,7 +15,9 @@ import {
15
15
  } from '../../utils/constants';
16
16
 
17
17
  export const DEFAULT_CONFIG_PER_VIEW_TYPE = {
18
- [ LAYOUT_TABLE ]: {},
18
+ [ LAYOUT_TABLE ]: {
19
+ primaryField: 'title',
20
+ },
19
21
  [ LAYOUT_GRID ]: {
20
22
  mediaField: 'featured-image',
21
23
  primaryField: 'title',
@@ -27,7 +29,7 @@ export const DEFAULT_CONFIG_PER_VIEW_TYPE = {
27
29
  };
28
30
 
29
31
  const DEFAULT_PAGE_BASE = {
30
- type: LAYOUT_LIST,
32
+ type: LAYOUT_TABLE,
31
33
  search: '',
32
34
  filters: [],
33
35
  page: 1,
@@ -15,7 +15,7 @@ import DataViewItem from './dataview-item';
15
15
  import CustomDataViewsList from './custom-dataviews-list';
16
16
 
17
17
  const PATH_TO_TYPE = {
18
- '/page': 'page',
18
+ '/pages': 'page',
19
19
  };
20
20
 
21
21
  export default function DataViewsSidebarContent() {
@@ -47,11 +47,13 @@ export default function DataViewsSidebarContent() {
47
47
  );
48
48
  } ) }
49
49
  </ItemGroup>
50
- <CustomDataViewsList
51
- activeView={ activeView }
52
- type={ type }
53
- isCustom="true"
54
- />
50
+ { window?.__experimentalAdminViews && (
51
+ <CustomDataViewsList
52
+ activeView={ activeView }
53
+ type={ type }
54
+ isCustom="true"
55
+ />
56
+ ) }
55
57
  </>
56
58
  );
57
59
  }
@@ -33,5 +33,5 @@
33
33
 
34
34
  .edit-site-sidebar-navigation-screen__content .block-editor-list-view-block-select-button {
35
35
  cursor: grab;
36
- padding: $grid-unit-10;
36
+ padding: $grid-unit-10 $grid-unit-10 $grid-unit-10 0;
37
37
  }
@@ -41,17 +41,26 @@ export default function SidebarNavigationScreen( {
41
41
  description,
42
42
  backPath: backPathProp,
43
43
  } ) {
44
- const { dashboardLink, dashboardLinkText } = useSelect( ( select ) => {
45
- const { getSettings } = unlock( select( editSiteStore ) );
46
- return {
47
- dashboardLink: getSettings().__experimentalDashboardLink,
48
- dashboardLinkText: getSettings().__experimentalDashboardLinkText,
49
- };
50
- }, [] );
51
- const { getTheme } = useSelect( coreStore );
44
+ const { dashboardLink, dashboardLinkText, previewingThemeName } = useSelect(
45
+ ( select ) => {
46
+ const { getSettings } = unlock( select( editSiteStore ) );
47
+ const currentlyPreviewingThemeId = currentlyPreviewingTheme();
48
+ return {
49
+ dashboardLink: getSettings().__experimentalDashboardLink,
50
+ dashboardLinkText:
51
+ getSettings().__experimentalDashboardLinkText,
52
+ // Do not call `getTheme` with null, it will cause a request to
53
+ // the server.
54
+ previewingThemeName: currentlyPreviewingThemeId
55
+ ? select( coreStore ).getTheme( currentlyPreviewingThemeId )
56
+ ?.name?.rendered
57
+ : undefined,
58
+ };
59
+ },
60
+ []
61
+ );
52
62
  const location = useLocation();
53
63
  const navigator = useNavigator();
54
- const theme = getTheme( currentlyPreviewingTheme() );
55
64
  const icon = isRTL() ? chevronRight : chevronLeft;
56
65
 
57
66
  return (
@@ -108,7 +117,7 @@ export default function SidebarNavigationScreen( {
108
117
  ? title
109
118
  : sprintf(
110
119
  'Previewing %1$s: %2$s',
111
- theme?.name?.rendered,
120
+ previewingThemeName,
112
121
  title
113
122
  ) }
114
123
  </Heading>
@@ -137,14 +137,6 @@ export default function SidebarNavigationScreenPages() {
137
137
  };
138
138
 
139
139
  const pagesLink = useLink( { path: '/pages' } );
140
- const manageAllPagesProps = window?.__experimentalAdminViews
141
- ? { ...pagesLink }
142
- : {
143
- href: 'edit.php?post_type=page',
144
- onClick: () => {
145
- document.location = 'edit.php?post_type=page';
146
- },
147
- };
148
140
 
149
141
  return (
150
142
  <>
@@ -156,7 +148,7 @@ export default function SidebarNavigationScreenPages() {
156
148
  ) }
157
149
  <SidebarNavigationScreen
158
150
  title={ __( 'Pages' ) }
159
- description={ __( 'Browse and edit pages on your site.' ) }
151
+ description={ __( 'Browse and manage pages.' ) }
160
152
  actions={
161
153
  <SidebarButton
162
154
  icon={ plus }
@@ -230,7 +222,7 @@ export default function SidebarNavigationScreenPages() {
230
222
  ) ) }
231
223
  <SidebarNavigationItem
232
224
  className="edit-site-sidebar-navigation-screen-pages__see-all"
233
- { ...manageAllPagesProps }
225
+ { ...pagesLink }
234
226
  >
235
227
  { __( 'Manage all pages' ) }
236
228
  </SidebarNavigationItem>
@@ -7,9 +7,10 @@ import {
7
7
  } from '@wordpress/components';
8
8
  import { layout } from '@wordpress/icons';
9
9
  import { useMemo } from '@wordpress/element';
10
- import { useEntityRecords } from '@wordpress/core-data';
10
+ import { useEntityRecords, store as coreStore } from '@wordpress/core-data';
11
11
  import { decodeEntities } from '@wordpress/html-entities';
12
12
  import { __ } from '@wordpress/i18n';
13
+ import { useSelect } from '@wordpress/data';
13
14
 
14
15
  /**
15
16
  * Internal dependencies
@@ -41,18 +42,43 @@ export default function SidebarNavigationScreenPagesDataViews() {
41
42
  per_page: -1,
42
43
  }
43
44
  );
44
- const templates = useMemo(
45
- () =>
46
- templateRecords?.filter( ( { slug } ) =>
45
+
46
+ const { frontPage, postsPage } = useSelect( ( select ) => {
47
+ const { getEntityRecord } = select( coreStore );
48
+ const siteSettings = getEntityRecord( 'root', 'site' );
49
+ return {
50
+ frontPage: siteSettings?.page_on_front,
51
+ postsPage: siteSettings?.page_for_posts,
52
+ };
53
+ }, [] );
54
+
55
+ const templates = useMemo( () => {
56
+ if ( ! templateRecords ) {
57
+ return [];
58
+ }
59
+
60
+ const isHomePageBlog = frontPage === postsPage;
61
+ const homeTemplate =
62
+ templateRecords?.find(
63
+ ( template ) => template.slug === 'front-page'
64
+ ) ||
65
+ templateRecords?.find( ( template ) => template.slug === 'home' ) ||
66
+ templateRecords?.find( ( template ) => template.slug === 'index' );
67
+
68
+ return [
69
+ isHomePageBlog ? homeTemplate : null,
70
+ ...templateRecords?.filter( ( { slug } ) =>
47
71
  [ '404', 'search' ].includes( slug )
48
72
  ),
49
- [ templateRecords ]
50
- );
73
+ ].filter( Boolean );
74
+ }, [ templateRecords, frontPage, postsPage ] );
51
75
 
52
76
  return (
53
77
  <SidebarNavigationScreen
54
78
  title={ __( 'Pages' ) }
79
+ description={ __( 'Browse and manage pages.' ) }
55
80
  content={ <DataViewsSidebarContent /> }
81
+ backPath="/page"
56
82
  footer={
57
83
  <VStack spacing={ 0 }>
58
84
  { templates?.map( ( item ) => (
@@ -4,6 +4,7 @@
4
4
  import {
5
5
  __experimentalItemGroup as ItemGroup,
6
6
  __experimentalItem as Item,
7
+ __experimentalVStack as VStack,
7
8
  } from '@wordpress/components';
8
9
  import { __ } from '@wordpress/i18n';
9
10
  import { useEntityRecords } from '@wordpress/core-data';
@@ -30,20 +31,11 @@ const TemplateItem = ( { postType, postId, ...props } ) => {
30
31
 
31
32
  export default function SidebarNavigationScreenTemplates() {
32
33
  const isMobileViewport = useViewportMatch( 'medium', '<' );
33
-
34
34
  const { records: templates, isResolving: isLoading } = useEntityRecords(
35
35
  'postType',
36
36
  TEMPLATE_POST_TYPE,
37
- {
38
- per_page: -1,
39
- }
40
- );
41
-
42
- const sortedTemplates = templates ? [ ...templates ] : [];
43
- sortedTemplates.sort( ( a, b ) =>
44
- a.title.rendered.localeCompare( b.title.rendered )
37
+ { per_page: -1 }
45
38
  );
46
-
47
39
  const browseAllLink = useLink( { path: '/wp_template/all' } );
48
40
  const canCreate = ! isMobileViewport;
49
41
  return (
@@ -66,24 +58,7 @@ export default function SidebarNavigationScreenTemplates() {
66
58
  <>
67
59
  { isLoading && __( 'Loading templates…' ) }
68
60
  { ! isLoading && (
69
- <ItemGroup>
70
- { ! templates?.length && (
71
- <Item>{ __( 'No templates found' ) }</Item>
72
- ) }
73
- { sortedTemplates.map( ( template ) => (
74
- <TemplateItem
75
- postType={ TEMPLATE_POST_TYPE }
76
- postId={ template.id }
77
- key={ template.id }
78
- withChevron
79
- >
80
- { decodeEntities(
81
- template.title?.rendered ||
82
- template.slug
83
- ) }
84
- </TemplateItem>
85
- ) ) }
86
- </ItemGroup>
61
+ <SidebarTemplatesList templates={ templates } />
87
62
  ) }
88
63
  </>
89
64
  }
@@ -97,3 +72,85 @@ export default function SidebarNavigationScreenTemplates() {
97
72
  />
98
73
  );
99
74
  }
75
+
76
+ function TemplatesGroup( { title, templates } ) {
77
+ return (
78
+ <ItemGroup>
79
+ { !! title && (
80
+ <Item className="edit-site-sidebar-navigation-screen-templates__templates-group-title">
81
+ { title }
82
+ </Item>
83
+ ) }
84
+ { templates.map( ( template ) => (
85
+ <TemplateItem
86
+ postType={ TEMPLATE_POST_TYPE }
87
+ postId={ template.id }
88
+ key={ template.id }
89
+ withChevron
90
+ >
91
+ { decodeEntities(
92
+ template.title?.rendered || template.slug
93
+ ) }
94
+ </TemplateItem>
95
+ ) ) }
96
+ </ItemGroup>
97
+ );
98
+ }
99
+ function SidebarTemplatesList( { templates } ) {
100
+ if ( ! templates?.length ) {
101
+ return (
102
+ <ItemGroup>
103
+ <Item>{ __( 'No templates found' ) }</Item>
104
+ </ItemGroup>
105
+ );
106
+ }
107
+ const sortedTemplates = templates ? [ ...templates ] : [];
108
+ sortedTemplates.sort( ( a, b ) =>
109
+ a.title.rendered.localeCompare( b.title.rendered )
110
+ );
111
+ const { hierarchyTemplates, customTemplates, ...plugins } =
112
+ sortedTemplates.reduce(
113
+ ( accumulator, template ) => {
114
+ const {
115
+ original_source: originalSource,
116
+ author_text: authorText,
117
+ } = template;
118
+ if ( originalSource === 'plugin' ) {
119
+ if ( ! accumulator[ authorText ] ) {
120
+ accumulator[ authorText ] = [];
121
+ }
122
+ accumulator[ authorText ].push( template );
123
+ } else if ( template.is_custom ) {
124
+ accumulator.customTemplates.push( template );
125
+ } else {
126
+ accumulator.hierarchyTemplates.push( template );
127
+ }
128
+ return accumulator;
129
+ },
130
+ { hierarchyTemplates: [], customTemplates: [] }
131
+ );
132
+ return (
133
+ <VStack spacing={ 3 }>
134
+ { !! hierarchyTemplates.length && (
135
+ <TemplatesGroup templates={ hierarchyTemplates } />
136
+ ) }
137
+ { !! customTemplates.length && (
138
+ <TemplatesGroup
139
+ title={ __( 'Custom' ) }
140
+ templates={ customTemplates }
141
+ />
142
+ ) }
143
+ { Object.entries( plugins ).map(
144
+ ( [ plugin, pluginTemplates ] ) => {
145
+ return (
146
+ <TemplatesGroup
147
+ key={ plugin }
148
+ title={ plugin }
149
+ templates={ pluginTemplates }
150
+ />
151
+ );
152
+ }
153
+ ) }
154
+ </VStack>
155
+ );
156
+ }