@wordpress/edit-site 5.22.0 → 5.24.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 (524) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/build/components/actions/index.js +115 -15
  3. package/build/components/actions/index.js.map +1 -1
  4. package/build/components/add-new-template/new-template.js +0 -7
  5. package/build/components/add-new-template/new-template.js.map +1 -1
  6. package/build/components/block-editor/site-editor-canvas.js +7 -2
  7. package/build/components/block-editor/site-editor-canvas.js.map +1 -1
  8. package/build/components/block-editor/use-site-editor-settings.js +54 -63
  9. package/build/components/block-editor/use-site-editor-settings.js.map +1 -1
  10. package/build/components/dataviews/add-filter.js +91 -0
  11. package/build/components/dataviews/add-filter.js.map +1 -0
  12. package/build/components/dataviews/constants.js +14 -0
  13. package/build/components/dataviews/constants.js.map +1 -0
  14. package/build/components/dataviews/dataviews.js +30 -9
  15. package/build/components/dataviews/dataviews.js.map +1 -1
  16. package/build/components/dataviews/filter-summary.js +62 -0
  17. package/build/components/dataviews/filter-summary.js.map +1 -0
  18. package/build/components/dataviews/filters.js +37 -48
  19. package/build/components/dataviews/filters.js.map +1 -1
  20. package/build/components/dataviews/index.js +9 -2
  21. package/build/components/dataviews/index.js.map +1 -1
  22. package/build/components/dataviews/item-actions.js +139 -17
  23. package/build/components/dataviews/item-actions.js.map +1 -1
  24. package/build/components/dataviews/pagination.js +7 -2
  25. package/build/components/dataviews/pagination.js.map +1 -1
  26. package/build/components/dataviews/reset-filters.js +33 -0
  27. package/build/components/dataviews/reset-filters.js.map +1 -0
  28. package/build/components/dataviews/search.js +1 -0
  29. package/build/components/dataviews/search.js.map +1 -1
  30. package/build/components/dataviews/view-actions.js +49 -32
  31. package/build/components/dataviews/view-actions.js.map +1 -1
  32. package/build/components/dataviews/view-grid.js +48 -25
  33. package/build/components/dataviews/view-grid.js.map +1 -1
  34. package/build/components/dataviews/view-list.js +130 -14
  35. package/build/components/dataviews/view-list.js.map +1 -1
  36. package/build/components/dataviews/view-side-by-side.js +20 -0
  37. package/build/components/dataviews/view-side-by-side.js.map +1 -0
  38. package/build/components/editor/index.js +52 -56
  39. package/build/components/editor/index.js.map +1 -1
  40. package/build/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js +1 -1
  41. package/build/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js.map +1 -1
  42. package/build/components/global-styles/font-library-modal/utils/index.js +15 -2
  43. package/build/components/global-styles/font-library-modal/utils/index.js.map +1 -1
  44. package/build/components/global-styles/header.js +4 -2
  45. package/build/components/global-styles/header.js.map +1 -1
  46. package/build/components/global-styles/screen-block-list.js +22 -16
  47. package/build/components/global-styles/screen-block-list.js.map +1 -1
  48. package/build/components/global-styles/screen-revisions/index.js +66 -24
  49. package/build/components/global-styles/screen-revisions/index.js.map +1 -1
  50. package/build/components/global-styles/screen-revisions/revisions-buttons.js +52 -24
  51. package/build/components/global-styles/screen-revisions/revisions-buttons.js.map +1 -1
  52. package/build/components/global-styles/screen-revisions/use-global-styles-revisions.js +9 -3
  53. package/build/components/global-styles/screen-revisions/use-global-styles-revisions.js.map +1 -1
  54. package/build/components/global-styles/screen-root.js +3 -3
  55. package/build/components/global-styles/screen-root.js.map +1 -1
  56. package/build/components/global-styles/ui.js +31 -39
  57. package/build/components/global-styles/ui.js.map +1 -1
  58. package/build/components/global-styles-renderer/index.js +1 -1
  59. package/build/components/global-styles-renderer/index.js.map +1 -1
  60. package/build/components/header-edit-mode/document-actions/index.js +21 -16
  61. package/build/components/header-edit-mode/document-actions/index.js.map +1 -1
  62. package/build/components/header-edit-mode/document-tools/index.js +160 -0
  63. package/build/components/header-edit-mode/document-tools/index.js.map +1 -0
  64. package/build/components/header-edit-mode/index.js +50 -117
  65. package/build/components/header-edit-mode/index.js.map +1 -1
  66. package/build/components/header-edit-mode/more-menu/index.js +1 -1
  67. package/build/components/header-edit-mode/more-menu/index.js.map +1 -1
  68. package/build/components/header-edit-mode/more-menu/site-export.js +2 -6
  69. package/build/components/header-edit-mode/more-menu/site-export.js.map +1 -1
  70. package/build/components/layout/index.js +4 -19
  71. package/build/components/layout/index.js.map +1 -1
  72. package/build/components/list/added-by.js +44 -54
  73. package/build/components/list/added-by.js.map +1 -1
  74. package/build/components/{page-content-focus-manager → page-content-focus-notifications}/back-to-page-notification.js +11 -15
  75. package/build/components/page-content-focus-notifications/back-to-page-notification.js.map +1 -0
  76. package/build/components/{page-content-focus-manager → page-content-focus-notifications}/edit-template-notification.js +9 -13
  77. package/build/components/page-content-focus-notifications/edit-template-notification.js.map +1 -0
  78. package/build/components/page-content-focus-notifications/index.js +22 -0
  79. package/build/components/page-content-focus-notifications/index.js.map +1 -0
  80. package/build/components/page-main/index.js +2 -1
  81. package/build/components/page-main/index.js.map +1 -1
  82. package/build/components/page-pages/index.js +137 -88
  83. package/build/components/page-pages/index.js.map +1 -1
  84. package/build/components/page-pages/side-editor.js +25 -0
  85. package/build/components/page-pages/side-editor.js.map +1 -0
  86. package/build/components/page-patterns/grid-item.js +2 -2
  87. package/build/components/page-patterns/grid-item.js.map +1 -1
  88. package/build/components/page-patterns/patterns-list.js +3 -3
  89. package/build/components/page-patterns/patterns-list.js.map +1 -1
  90. package/build/components/page-patterns/use-patterns.js +2 -2
  91. package/build/components/page-patterns/use-patterns.js.map +1 -1
  92. package/build/components/page-templates/dataviews-templates.js +316 -0
  93. package/build/components/page-templates/dataviews-templates.js.map +1 -0
  94. package/build/components/page-templates/template-actions.js +168 -0
  95. package/build/components/page-templates/template-actions.js.map +1 -0
  96. package/build/components/preferences-modal/index.js +1 -1
  97. package/build/components/preferences-modal/index.js.map +1 -1
  98. package/build/components/save-button/index.js +9 -6
  99. package/build/components/save-button/index.js.map +1 -1
  100. package/build/components/save-hub/index.js +14 -0
  101. package/build/components/save-hub/index.js.map +1 -1
  102. package/build/components/sidebar/index.js +1 -2
  103. package/build/components/sidebar/index.js.map +1 -1
  104. package/build/components/sidebar-dataviews/add-new-view.js +124 -0
  105. package/build/components/sidebar-dataviews/add-new-view.js.map +1 -0
  106. package/build/components/sidebar-dataviews/custom-dataviews-list.js +191 -0
  107. package/build/components/sidebar-dataviews/custom-dataviews-list.js.map +1 -0
  108. package/build/components/sidebar-dataviews/dataview-item.js +71 -0
  109. package/build/components/sidebar-dataviews/dataview-item.js.map +1 -0
  110. package/build/components/sidebar-dataviews/default-views.js +65 -0
  111. package/build/components/sidebar-dataviews/default-views.js.map +1 -0
  112. package/build/components/sidebar-dataviews/index.js +21 -38
  113. package/build/components/sidebar-dataviews/index.js.map +1 -1
  114. package/build/components/sidebar-edit-mode/default-sidebar.js +2 -6
  115. package/build/components/sidebar-edit-mode/default-sidebar.js.map +1 -1
  116. package/build/components/sidebar-edit-mode/index.js +6 -5
  117. package/build/components/sidebar-edit-mode/index.js.map +1 -1
  118. package/build/components/sidebar-edit-mode/page-panels/edit-template.js +18 -29
  119. package/build/components/sidebar-edit-mode/page-panels/edit-template.js.map +1 -1
  120. package/build/components/sidebar-edit-mode/page-panels/hooks.js +22 -8
  121. package/build/components/sidebar-edit-mode/page-panels/hooks.js.map +1 -1
  122. package/build/components/sidebar-edit-mode/page-panels/page-status.js +8 -5
  123. package/build/components/sidebar-edit-mode/page-panels/page-status.js.map +1 -1
  124. package/build/components/sidebar-edit-mode/page-panels/page-summary.js +5 -8
  125. package/build/components/sidebar-edit-mode/page-panels/page-summary.js.map +1 -1
  126. package/build/components/sidebar-edit-mode/page-panels/reset-default-template.js +6 -14
  127. package/build/components/sidebar-edit-mode/page-panels/reset-default-template.js.map +1 -1
  128. package/build/components/sidebar-edit-mode/page-panels/swap-template-button.js +4 -12
  129. package/build/components/sidebar-edit-mode/page-panels/swap-template-button.js.map +1 -1
  130. package/build/components/sidebar-edit-mode/plugin-sidebar/index.js +2 -6
  131. package/build/components/sidebar-edit-mode/plugin-sidebar/index.js.map +1 -1
  132. package/build/components/sidebar-edit-mode/settings-header/index.js +10 -6
  133. package/build/components/sidebar-edit-mode/settings-header/index.js.map +1 -1
  134. package/build/components/sidebar-edit-mode/template-panel/hooks.js +3 -3
  135. package/build/components/sidebar-edit-mode/template-panel/hooks.js.map +1 -1
  136. package/build/components/sidebar-navigation-screen-global-styles/index.js +1 -1
  137. package/build/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
  138. package/build/components/sidebar-navigation-screen-navigation-menu/navigation-menu-editor.js +1 -1
  139. package/build/components/sidebar-navigation-screen-navigation-menu/navigation-menu-editor.js.map +1 -1
  140. package/build/components/sidebar-navigation-screen-page/index.js +23 -4
  141. package/build/components/sidebar-navigation-screen-page/index.js.map +1 -1
  142. package/build/components/sidebar-navigation-screen-page/page-details.js +3 -11
  143. package/build/components/sidebar-navigation-screen-page/page-details.js.map +1 -1
  144. package/build/components/sidebar-navigation-screen-patterns/use-theme-patterns.js +1 -1
  145. package/build/components/sidebar-navigation-screen-patterns/use-theme-patterns.js.map +1 -1
  146. package/build/components/site-hub/index.js +18 -6
  147. package/build/components/site-hub/index.js.map +1 -1
  148. package/build/components/start-template-options/index.js +12 -16
  149. package/build/components/start-template-options/index.js.map +1 -1
  150. package/build/components/style-book/index.js +22 -12
  151. package/build/components/style-book/index.js.map +1 -1
  152. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js +150 -55
  153. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  154. package/build/components/template-part-converter/convert-to-regular.js +1 -1
  155. package/build/components/template-part-converter/convert-to-regular.js.map +1 -1
  156. package/build/components/welcome-guide/page.js +2 -2
  157. package/build/components/welcome-guide/page.js.map +1 -1
  158. package/build/components/welcome-guide/template.js +6 -3
  159. package/build/components/welcome-guide/template.js.map +1 -1
  160. package/build/hooks/commands/use-edit-mode-commands.js +24 -14
  161. package/build/hooks/commands/use-edit-mode-commands.js.map +1 -1
  162. package/build/hooks/push-changes-to-global-styles/index.js +3 -1
  163. package/build/hooks/push-changes-to-global-styles/index.js.map +1 -1
  164. package/build/hooks/template-part-edit.js +6 -2
  165. package/build/hooks/template-part-edit.js.map +1 -1
  166. package/build/index.js +0 -3
  167. package/build/index.js.map +1 -1
  168. package/build/store/actions.js +39 -83
  169. package/build/store/actions.js.map +1 -1
  170. package/build/store/private-actions.js +2 -27
  171. package/build/store/private-actions.js.map +1 -1
  172. package/build/store/private-selectors.js +0 -23
  173. package/build/store/private-selectors.js.map +1 -1
  174. package/build/store/reducer.js +1 -40
  175. package/build/store/reducer.js.map +1 -1
  176. package/build/store/selectors.js +33 -67
  177. package/build/store/selectors.js.map +1 -1
  178. package/build/utils/constants.js +3 -14
  179. package/build/utils/constants.js.map +1 -1
  180. package/build-module/components/actions/index.js +113 -14
  181. package/build-module/components/actions/index.js.map +1 -1
  182. package/build-module/components/add-new-template/new-template.js +0 -7
  183. package/build-module/components/add-new-template/new-template.js.map +1 -1
  184. package/build-module/components/block-editor/site-editor-canvas.js +7 -2
  185. package/build-module/components/block-editor/site-editor-canvas.js.map +1 -1
  186. package/build-module/components/block-editor/use-site-editor-settings.js +54 -62
  187. package/build-module/components/block-editor/use-site-editor-settings.js.map +1 -1
  188. package/build-module/components/dataviews/add-filter.js +84 -0
  189. package/build-module/components/dataviews/add-filter.js.map +1 -0
  190. package/build-module/components/dataviews/constants.js +6 -0
  191. package/build-module/components/dataviews/constants.js.map +1 -0
  192. package/build-module/components/dataviews/dataviews.js +29 -9
  193. package/build-module/components/dataviews/dataviews.js.map +1 -1
  194. package/build-module/components/dataviews/filter-summary.js +55 -0
  195. package/build-module/components/dataviews/filter-summary.js.map +1 -0
  196. package/build-module/components/dataviews/filters.js +37 -48
  197. package/build-module/components/dataviews/filters.js.map +1 -1
  198. package/build-module/components/dataviews/index.js +1 -1
  199. package/build-module/components/dataviews/index.js.map +1 -1
  200. package/build-module/components/dataviews/item-actions.js +142 -20
  201. package/build-module/components/dataviews/item-actions.js.map +1 -1
  202. package/build-module/components/dataviews/pagination.js +7 -2
  203. package/build-module/components/dataviews/pagination.js.map +1 -1
  204. package/build-module/components/dataviews/reset-filters.js +26 -0
  205. package/build-module/components/dataviews/reset-filters.js.map +1 -0
  206. package/build-module/components/dataviews/search.js +1 -0
  207. package/build-module/components/dataviews/search.js.map +1 -1
  208. package/build-module/components/dataviews/view-actions.js +50 -33
  209. package/build-module/components/dataviews/view-actions.js.map +1 -1
  210. package/build-module/components/dataviews/view-grid.js +49 -26
  211. package/build-module/components/dataviews/view-grid.js.map +1 -1
  212. package/build-module/components/dataviews/view-list.js +132 -16
  213. package/build-module/components/dataviews/view-list.js.map +1 -1
  214. package/build-module/components/dataviews/view-side-by-side.js +12 -0
  215. package/build-module/components/dataviews/view-side-by-side.js.map +1 -0
  216. package/build-module/components/editor/index.js +55 -59
  217. package/build-module/components/editor/index.js.map +1 -1
  218. package/build-module/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js +1 -1
  219. package/build-module/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js.map +1 -1
  220. package/build-module/components/global-styles/font-library-modal/utils/index.js +14 -2
  221. package/build-module/components/global-styles/font-library-modal/utils/index.js.map +1 -1
  222. package/build-module/components/global-styles/header.js +4 -2
  223. package/build-module/components/global-styles/header.js.map +1 -1
  224. package/build-module/components/global-styles/screen-block-list.js +23 -17
  225. package/build-module/components/global-styles/screen-block-list.js.map +1 -1
  226. package/build-module/components/global-styles/screen-revisions/index.js +67 -25
  227. package/build-module/components/global-styles/screen-revisions/index.js.map +1 -1
  228. package/build-module/components/global-styles/screen-revisions/revisions-buttons.js +51 -24
  229. package/build-module/components/global-styles/screen-revisions/revisions-buttons.js.map +1 -1
  230. package/build-module/components/global-styles/screen-revisions/use-global-styles-revisions.js +9 -3
  231. package/build-module/components/global-styles/screen-revisions/use-global-styles-revisions.js.map +1 -1
  232. package/build-module/components/global-styles/screen-root.js +3 -3
  233. package/build-module/components/global-styles/screen-root.js.map +1 -1
  234. package/build-module/components/global-styles/ui.js +31 -39
  235. package/build-module/components/global-styles/ui.js.map +1 -1
  236. package/build-module/components/global-styles-renderer/index.js +1 -1
  237. package/build-module/components/global-styles-renderer/index.js.map +1 -1
  238. package/build-module/components/header-edit-mode/document-actions/index.js +21 -16
  239. package/build-module/components/header-edit-mode/document-actions/index.js.map +1 -1
  240. package/build-module/components/header-edit-mode/document-tools/index.js +152 -0
  241. package/build-module/components/header-edit-mode/document-tools/index.js.map +1 -0
  242. package/build-module/components/header-edit-mode/index.js +54 -121
  243. package/build-module/components/header-edit-mode/index.js.map +1 -1
  244. package/build-module/components/header-edit-mode/more-menu/index.js +1 -1
  245. package/build-module/components/header-edit-mode/more-menu/index.js.map +1 -1
  246. package/build-module/components/header-edit-mode/more-menu/site-export.js +2 -6
  247. package/build-module/components/header-edit-mode/more-menu/site-export.js.map +1 -1
  248. package/build-module/components/layout/index.js +5 -20
  249. package/build-module/components/layout/index.js.map +1 -1
  250. package/build-module/components/list/added-by.js +45 -56
  251. package/build-module/components/list/added-by.js.map +1 -1
  252. package/build-module/components/{page-content-focus-manager → page-content-focus-notifications}/back-to-page-notification.js +11 -15
  253. package/build-module/components/page-content-focus-notifications/back-to-page-notification.js.map +1 -0
  254. package/build-module/components/{page-content-focus-manager → page-content-focus-notifications}/edit-template-notification.js +9 -13
  255. package/build-module/components/page-content-focus-notifications/edit-template-notification.js.map +1 -0
  256. package/build-module/components/page-content-focus-notifications/index.js +14 -0
  257. package/build-module/components/page-content-focus-notifications/index.js.map +1 -0
  258. package/build-module/components/page-main/index.js +2 -1
  259. package/build-module/components/page-main/index.js.map +1 -1
  260. package/build-module/components/page-pages/index.js +141 -90
  261. package/build-module/components/page-pages/index.js.map +1 -1
  262. package/build-module/components/page-pages/side-editor.js +17 -0
  263. package/build-module/components/page-pages/side-editor.js.map +1 -0
  264. package/build-module/components/page-patterns/grid-item.js +2 -2
  265. package/build-module/components/page-patterns/grid-item.js.map +1 -1
  266. package/build-module/components/page-patterns/patterns-list.js +4 -4
  267. package/build-module/components/page-patterns/patterns-list.js.map +1 -1
  268. package/build-module/components/page-patterns/use-patterns.js +3 -3
  269. package/build-module/components/page-patterns/use-patterns.js.map +1 -1
  270. package/build-module/components/page-templates/dataviews-templates.js +308 -0
  271. package/build-module/components/page-templates/dataviews-templates.js.map +1 -0
  272. package/build-module/components/page-templates/template-actions.js +157 -0
  273. package/build-module/components/page-templates/template-actions.js.map +1 -0
  274. package/build-module/components/preferences-modal/index.js +1 -1
  275. package/build-module/components/preferences-modal/index.js.map +1 -1
  276. package/build-module/components/save-button/index.js +11 -8
  277. package/build-module/components/save-button/index.js.map +1 -1
  278. package/build-module/components/save-hub/index.js +14 -0
  279. package/build-module/components/save-hub/index.js.map +1 -1
  280. package/build-module/components/sidebar/index.js +1 -2
  281. package/build-module/components/sidebar/index.js.map +1 -1
  282. package/build-module/components/sidebar-dataviews/add-new-view.js +116 -0
  283. package/build-module/components/sidebar-dataviews/add-new-view.js.map +1 -0
  284. package/build-module/components/sidebar-dataviews/custom-dataviews-list.js +182 -0
  285. package/build-module/components/sidebar-dataviews/custom-dataviews-list.js.map +1 -0
  286. package/build-module/components/sidebar-dataviews/dataview-item.js +63 -0
  287. package/build-module/components/sidebar-dataviews/dataview-item.js.map +1 -0
  288. package/build-module/components/sidebar-dataviews/default-views.js +57 -0
  289. package/build-module/components/sidebar-dataviews/default-views.js.map +1 -0
  290. package/build-module/components/sidebar-dataviews/index.js +22 -39
  291. package/build-module/components/sidebar-dataviews/index.js.map +1 -1
  292. package/build-module/components/sidebar-edit-mode/default-sidebar.js +2 -6
  293. package/build-module/components/sidebar-edit-mode/default-sidebar.js.map +1 -1
  294. package/build-module/components/sidebar-edit-mode/index.js +6 -5
  295. package/build-module/components/sidebar-edit-mode/index.js.map +1 -1
  296. package/build-module/components/sidebar-edit-mode/page-panels/edit-template.js +20 -31
  297. package/build-module/components/sidebar-edit-mode/page-panels/edit-template.js.map +1 -1
  298. package/build-module/components/sidebar-edit-mode/page-panels/hooks.js +21 -7
  299. package/build-module/components/sidebar-edit-mode/page-panels/hooks.js.map +1 -1
  300. package/build-module/components/sidebar-edit-mode/page-panels/page-status.js +9 -6
  301. package/build-module/components/sidebar-edit-mode/page-panels/page-status.js.map +1 -1
  302. package/build-module/components/sidebar-edit-mode/page-panels/page-summary.js +6 -8
  303. package/build-module/components/sidebar-edit-mode/page-panels/page-summary.js.map +1 -1
  304. package/build-module/components/sidebar-edit-mode/page-panels/reset-default-template.js +8 -16
  305. package/build-module/components/sidebar-edit-mode/page-panels/reset-default-template.js.map +1 -1
  306. package/build-module/components/sidebar-edit-mode/page-panels/swap-template-button.js +5 -13
  307. package/build-module/components/sidebar-edit-mode/page-panels/swap-template-button.js.map +1 -1
  308. package/build-module/components/sidebar-edit-mode/plugin-sidebar/index.js +2 -6
  309. package/build-module/components/sidebar-edit-mode/plugin-sidebar/index.js.map +1 -1
  310. package/build-module/components/sidebar-edit-mode/settings-header/index.js +10 -6
  311. package/build-module/components/sidebar-edit-mode/settings-header/index.js.map +1 -1
  312. package/build-module/components/sidebar-edit-mode/template-panel/hooks.js +4 -4
  313. package/build-module/components/sidebar-edit-mode/template-panel/hooks.js.map +1 -1
  314. package/build-module/components/sidebar-navigation-screen-global-styles/index.js +1 -1
  315. package/build-module/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
  316. package/build-module/components/sidebar-navigation-screen-navigation-menu/navigation-menu-editor.js +1 -1
  317. package/build-module/components/sidebar-navigation-screen-navigation-menu/navigation-menu-editor.js.map +1 -1
  318. package/build-module/components/sidebar-navigation-screen-page/index.js +23 -4
  319. package/build-module/components/sidebar-navigation-screen-page/index.js.map +1 -1
  320. package/build-module/components/sidebar-navigation-screen-page/page-details.js +3 -11
  321. package/build-module/components/sidebar-navigation-screen-page/page-details.js.map +1 -1
  322. package/build-module/components/sidebar-navigation-screen-patterns/use-theme-patterns.js +2 -2
  323. package/build-module/components/sidebar-navigation-screen-patterns/use-theme-patterns.js.map +1 -1
  324. package/build-module/components/site-hub/index.js +19 -7
  325. package/build-module/components/site-hub/index.js.map +1 -1
  326. package/build-module/components/start-template-options/index.js +13 -16
  327. package/build-module/components/start-template-options/index.js.map +1 -1
  328. package/build-module/components/style-book/index.js +22 -12
  329. package/build-module/components/style-book/index.js.map +1 -1
  330. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js +150 -56
  331. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  332. package/build-module/components/template-part-converter/convert-to-regular.js +1 -1
  333. package/build-module/components/template-part-converter/convert-to-regular.js.map +1 -1
  334. package/build-module/components/welcome-guide/page.js +2 -2
  335. package/build-module/components/welcome-guide/page.js.map +1 -1
  336. package/build-module/components/welcome-guide/template.js +6 -3
  337. package/build-module/components/welcome-guide/template.js.map +1 -1
  338. package/build-module/hooks/commands/use-edit-mode-commands.js +24 -14
  339. package/build-module/hooks/commands/use-edit-mode-commands.js.map +1 -1
  340. package/build-module/hooks/push-changes-to-global-styles/index.js +4 -2
  341. package/build-module/hooks/push-changes-to-global-styles/index.js.map +1 -1
  342. package/build-module/hooks/template-part-edit.js +6 -2
  343. package/build-module/hooks/template-part-edit.js.map +1 -1
  344. package/build-module/index.js +0 -3
  345. package/build-module/index.js.map +1 -1
  346. package/build-module/store/actions.js +37 -80
  347. package/build-module/store/actions.js.map +1 -1
  348. package/build-module/store/private-actions.js +1 -25
  349. package/build-module/store/private-actions.js.map +1 -1
  350. package/build-module/store/private-selectors.js +0 -22
  351. package/build-module/store/private-selectors.js.map +1 -1
  352. package/build-module/store/reducer.js +1 -38
  353. package/build-module/store/reducer.js.map +1 -1
  354. package/build-module/store/selectors.js +27 -62
  355. package/build-module/store/selectors.js.map +1 -1
  356. package/build-module/utils/constants.js +1 -11
  357. package/build-module/utils/constants.js.map +1 -1
  358. package/build-style/style-rtl.css +221 -181
  359. package/build-style/style.css +221 -181
  360. package/package.json +41 -41
  361. package/src/components/actions/index.js +150 -14
  362. package/src/components/add-new-template/new-template.js +0 -5
  363. package/src/components/block-editor/site-editor-canvas.js +8 -2
  364. package/src/components/block-editor/style.scss +0 -87
  365. package/src/components/block-editor/use-site-editor-settings.js +68 -89
  366. package/src/components/dataviews/README.md +80 -83
  367. package/src/components/dataviews/add-filter.js +108 -0
  368. package/src/components/dataviews/constants.js +5 -0
  369. package/src/components/dataviews/dataviews.js +28 -10
  370. package/src/components/dataviews/filter-summary.js +79 -0
  371. package/src/components/dataviews/filters.js +48 -58
  372. package/src/components/dataviews/index.js +1 -1
  373. package/src/components/dataviews/item-actions.js +169 -30
  374. package/src/components/dataviews/pagination.js +9 -4
  375. package/src/components/dataviews/reset-filters.js +26 -0
  376. package/src/components/dataviews/search.js +1 -0
  377. package/src/components/dataviews/style.scss +89 -9
  378. package/src/components/dataviews/view-actions.js +77 -49
  379. package/src/components/dataviews/view-grid.js +63 -38
  380. package/src/components/dataviews/view-list.js +182 -18
  381. package/src/components/dataviews/view-side-by-side.js +9 -0
  382. package/src/components/editor/index.js +135 -123
  383. package/src/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js +1 -1
  384. package/src/components/global-styles/font-library-modal/utils/index.js +20 -9
  385. package/src/components/global-styles/font-library-modal/utils/test/getIntersectingFontFaces.spec.js +46 -15
  386. package/src/components/global-styles/font-library-modal/utils/test/wpKebabCase.spec.js +28 -0
  387. package/src/components/global-styles/header.js +2 -1
  388. package/src/components/global-styles/screen-block-list.js +37 -26
  389. package/src/components/global-styles/screen-revisions/index.js +91 -35
  390. package/src/components/global-styles/screen-revisions/revisions-buttons.js +65 -45
  391. package/src/components/global-styles/screen-revisions/style.scss +52 -28
  392. package/src/components/global-styles/screen-revisions/use-global-styles-revisions.js +15 -6
  393. package/src/components/global-styles/screen-root.js +2 -1
  394. package/src/components/global-styles/style.scss +0 -11
  395. package/src/components/global-styles/ui.js +60 -75
  396. package/src/components/global-styles-renderer/index.js +1 -1
  397. package/src/components/header-edit-mode/document-actions/index.js +20 -18
  398. package/src/components/header-edit-mode/document-tools/index.js +201 -0
  399. package/src/components/header-edit-mode/index.js +87 -184
  400. package/src/components/header-edit-mode/more-menu/index.js +1 -1
  401. package/src/components/header-edit-mode/more-menu/site-export.js +2 -6
  402. package/src/components/header-edit-mode/style.scss +35 -2
  403. package/src/components/layout/index.js +4 -11
  404. package/src/components/layout/style.scss +6 -18
  405. package/src/components/list/added-by.js +24 -64
  406. package/src/components/list/style.scss +11 -13
  407. package/src/components/{page-content-focus-manager → page-content-focus-notifications}/back-to-page-notification.js +10 -22
  408. package/src/components/{page-content-focus-manager → page-content-focus-notifications}/edit-template-notification.js +9 -13
  409. package/src/components/page-content-focus-notifications/index.js +14 -0
  410. package/src/components/page-main/index.js +6 -1
  411. package/src/components/page-pages/index.js +167 -91
  412. package/src/components/page-pages/side-editor.js +14 -0
  413. package/src/components/page-patterns/grid-item.js +3 -3
  414. package/src/components/page-patterns/patterns-list.js +10 -4
  415. package/src/components/page-patterns/use-patterns.js +4 -3
  416. package/src/components/page-templates/dataviews-templates.js +345 -0
  417. package/src/components/page-templates/style.scss +13 -0
  418. package/src/components/page-templates/template-actions.js +209 -0
  419. package/src/components/preferences-modal/index.js +1 -1
  420. package/src/components/save-button/index.js +37 -24
  421. package/src/components/save-hub/index.js +15 -0
  422. package/src/components/save-hub/style.scss +7 -0
  423. package/src/components/sidebar/index.js +1 -2
  424. package/src/components/sidebar-dataviews/add-new-view.js +141 -0
  425. package/src/components/sidebar-dataviews/custom-dataviews-list.js +229 -0
  426. package/src/components/sidebar-dataviews/dataview-item.js +67 -0
  427. package/src/components/sidebar-dataviews/default-views.js +59 -0
  428. package/src/components/sidebar-dataviews/index.js +36 -45
  429. package/src/components/sidebar-dataviews/style.scss +29 -0
  430. package/src/components/sidebar-edit-mode/default-sidebar.js +6 -6
  431. package/src/components/sidebar-edit-mode/index.js +13 -9
  432. package/src/components/sidebar-edit-mode/page-panels/edit-template.js +31 -57
  433. package/src/components/sidebar-edit-mode/page-panels/hooks.js +20 -9
  434. package/src/components/sidebar-edit-mode/page-panels/page-status.js +6 -6
  435. package/src/components/sidebar-edit-mode/page-panels/page-summary.js +10 -8
  436. package/src/components/sidebar-edit-mode/page-panels/reset-default-template.js +13 -12
  437. package/src/components/sidebar-edit-mode/page-panels/style.scss +14 -19
  438. package/src/components/sidebar-edit-mode/page-panels/swap-template-button.js +10 -9
  439. package/src/components/sidebar-edit-mode/plugin-sidebar/index.js +6 -6
  440. package/src/components/sidebar-edit-mode/settings-header/index.js +8 -9
  441. package/src/components/sidebar-edit-mode/template-panel/hooks.js +11 -7
  442. package/src/components/sidebar-navigation-screen/style.scss +1 -0
  443. package/src/components/sidebar-navigation-screen-global-styles/index.js +1 -1
  444. package/src/components/sidebar-navigation-screen-navigation-menu/navigation-menu-editor.js +1 -1
  445. package/src/components/sidebar-navigation-screen-page/index.js +24 -3
  446. package/src/components/sidebar-navigation-screen-page/page-details.js +4 -17
  447. package/src/components/sidebar-navigation-screen-patterns/use-theme-patterns.js +2 -2
  448. package/src/components/sidebar-navigation-screen-template/style.scss +6 -1
  449. package/src/components/site-hub/index.js +9 -8
  450. package/src/components/start-template-options/index.js +14 -12
  451. package/src/components/style-book/index.js +48 -35
  452. package/src/components/sync-state-with-url/use-init-edited-entity-from-url.js +182 -63
  453. package/src/components/template-part-converter/convert-to-regular.js +1 -1
  454. package/src/components/welcome-guide/page.js +2 -2
  455. package/src/components/welcome-guide/template.js +4 -2
  456. package/src/hooks/commands/use-edit-mode-commands.js +22 -16
  457. package/src/hooks/push-changes-to-global-styles/index.js +13 -6
  458. package/src/hooks/template-part-edit.js +4 -2
  459. package/src/index.js +0 -8
  460. package/src/store/actions.js +42 -96
  461. package/src/store/private-actions.js +1 -24
  462. package/src/store/private-selectors.js +0 -22
  463. package/src/store/reducer.js +0 -39
  464. package/src/store/selectors.js +43 -95
  465. package/src/store/test/actions.js +14 -169
  466. package/src/store/test/reducer.js +0 -62
  467. package/src/store/test/selectors.js +0 -117
  468. package/src/style.scss +2 -0
  469. package/src/utils/constants.js +1 -11
  470. package/build/components/block-editor/block-editor-provider/default-block-editor-provider.js +0 -77
  471. package/build/components/block-editor/block-editor-provider/default-block-editor-provider.js.map +0 -1
  472. package/build/components/block-editor/block-editor-provider/index.js +0 -31
  473. package/build/components/block-editor/block-editor-provider/index.js.map +0 -1
  474. package/build/components/block-editor/block-editor-provider/navigation-block-editor-provider.js +0 -110
  475. package/build/components/block-editor/block-editor-provider/navigation-block-editor-provider.js.map +0 -1
  476. package/build/components/block-editor/block-editor-provider/use-page-content-blocks.js +0 -84
  477. package/build/components/block-editor/block-editor-provider/use-page-content-blocks.js.map +0 -1
  478. package/build/components/block-editor/index.js +0 -30
  479. package/build/components/block-editor/index.js.map +0 -1
  480. package/build/components/dataviews/in-filter.js +0 -49
  481. package/build/components/dataviews/in-filter.js.map +0 -1
  482. package/build/components/page-content-focus-manager/back-to-page-notification.js.map +0 -1
  483. package/build/components/page-content-focus-manager/disable-non-page-content-blocks.js +0 -50
  484. package/build/components/page-content-focus-manager/disable-non-page-content-blocks.js.map +0 -1
  485. package/build/components/page-content-focus-manager/edit-template-notification.js.map +0 -1
  486. package/build/components/page-content-focus-manager/index.js +0 -61
  487. package/build/components/page-content-focus-manager/index.js.map +0 -1
  488. package/build/components/page-pages/default-views.js +0 -62
  489. package/build/components/page-pages/default-views.js.map +0 -1
  490. package/build/components/sidebar-edit-mode/page-panels/publish-date.js +0 -87
  491. package/build/components/sidebar-edit-mode/page-panels/publish-date.js.map +0 -1
  492. package/build-module/components/block-editor/block-editor-provider/default-block-editor-provider.js +0 -69
  493. package/build-module/components/block-editor/block-editor-provider/default-block-editor-provider.js.map +0 -1
  494. package/build-module/components/block-editor/block-editor-provider/index.js +0 -23
  495. package/build-module/components/block-editor/block-editor-provider/index.js.map +0 -1
  496. package/build-module/components/block-editor/block-editor-provider/navigation-block-editor-provider.js +0 -102
  497. package/build-module/components/block-editor/block-editor-provider/navigation-block-editor-provider.js.map +0 -1
  498. package/build-module/components/block-editor/block-editor-provider/use-page-content-blocks.js +0 -78
  499. package/build-module/components/block-editor/block-editor-provider/use-page-content-blocks.js.map +0 -1
  500. package/build-module/components/block-editor/index.js +0 -22
  501. package/build-module/components/block-editor/index.js.map +0 -1
  502. package/build-module/components/dataviews/in-filter.js +0 -41
  503. package/build-module/components/dataviews/in-filter.js.map +0 -1
  504. package/build-module/components/page-content-focus-manager/back-to-page-notification.js.map +0 -1
  505. package/build-module/components/page-content-focus-manager/disable-non-page-content-blocks.js +0 -43
  506. package/build-module/components/page-content-focus-manager/disable-non-page-content-blocks.js.map +0 -1
  507. package/build-module/components/page-content-focus-manager/edit-template-notification.js.map +0 -1
  508. package/build-module/components/page-content-focus-manager/index.js +0 -52
  509. package/build-module/components/page-content-focus-manager/index.js.map +0 -1
  510. package/build-module/components/page-pages/default-views.js +0 -55
  511. package/build-module/components/page-pages/default-views.js.map +0 -1
  512. package/build-module/components/sidebar-edit-mode/page-panels/publish-date.js +0 -80
  513. package/build-module/components/sidebar-edit-mode/page-panels/publish-date.js.map +0 -1
  514. package/src/components/block-editor/block-editor-provider/default-block-editor-provider.js +0 -75
  515. package/src/components/block-editor/block-editor-provider/index.js +0 -29
  516. package/src/components/block-editor/block-editor-provider/navigation-block-editor-provider.js +0 -114
  517. package/src/components/block-editor/block-editor-provider/test/use-page-content-blocks.js +0 -116
  518. package/src/components/block-editor/block-editor-provider/use-page-content-blocks.js +0 -90
  519. package/src/components/block-editor/index.js +0 -28
  520. package/src/components/dataviews/in-filter.js +0 -45
  521. package/src/components/page-content-focus-manager/disable-non-page-content-blocks.js +0 -52
  522. package/src/components/page-content-focus-manager/index.js +0 -51
  523. package/src/components/page-pages/default-views.js +0 -60
  524. package/src/components/sidebar-edit-mode/page-panels/publish-date.js +0 -94
@@ -15,6 +15,8 @@ import { pencil } from '@wordpress/icons';
15
15
  import { __unstableStripHTML as stripHTML } from '@wordpress/dom';
16
16
  import { escapeAttribute } from '@wordpress/escape-html';
17
17
  import { safeDecodeURIComponent, filterURLForDisplay } from '@wordpress/url';
18
+ import { useEffect } from '@wordpress/element';
19
+ import { privateApis as routerPrivateApis } from '@wordpress/router';
18
20
 
19
21
  /**
20
22
  * Internal dependencies
@@ -27,13 +29,20 @@ import PageDetails from './page-details';
27
29
  import PageActions from '../page-actions';
28
30
  import SidebarNavigationScreenDetailsFooter from '../sidebar-navigation-screen-details-footer';
29
31
 
32
+ const { useHistory } = unlock( routerPrivateApis );
33
+
30
34
  export default function SidebarNavigationScreenPage() {
31
- const navigator = useNavigator();
32
35
  const { setCanvasMode } = unlock( useDispatch( editSiteStore ) );
36
+ const history = useHistory();
33
37
  const {
34
38
  params: { postId },
39
+ goTo,
35
40
  } = useNavigator();
36
- const { record } = useEntityRecord( 'postType', 'page', postId );
41
+ const { record, hasResolved } = useEntityRecord(
42
+ 'postType',
43
+ 'page',
44
+ postId
45
+ );
37
46
 
38
47
  const { featuredMediaAltText, featuredMediaSourceUrl } = useSelect(
39
48
  ( select ) => {
@@ -61,6 +70,18 @@ export default function SidebarNavigationScreenPage() {
61
70
  [ record ]
62
71
  );
63
72
 
73
+ // Redirect to the main pages navigation screen if the page is not found or has been deleted.
74
+ useEffect( () => {
75
+ if ( hasResolved && ! record ) {
76
+ history.push( {
77
+ path: '/page',
78
+ postId: undefined,
79
+ postType: undefined,
80
+ canvas: 'view',
81
+ } );
82
+ }
83
+ }, [ hasResolved, history ] );
84
+
64
85
  const featureImageAltText = featuredMediaAltText
65
86
  ? decodeEntities( featuredMediaAltText )
66
87
  : decodeEntities( record?.title?.rendered || __( 'Featured image' ) );
@@ -76,7 +97,7 @@ export default function SidebarNavigationScreenPage() {
76
97
  postId={ postId }
77
98
  toggleProps={ { as: SidebarButton } }
78
99
  onRemove={ () => {
79
- navigator.goTo( '/page' );
100
+ goTo( '/page' );
80
101
  } }
81
102
  />
82
103
  <SidebarButton
@@ -105,26 +105,13 @@ export default function PageDetails( { id } ) {
105
105
  const { record } = useEntityRecord( 'postType', 'page', id );
106
106
  const { parentTitle, templateTitle, isPostsPage } = useSelect(
107
107
  ( select ) => {
108
- const { getEditedPostContext } = unlock( select( editSiteStore ) );
109
- const postContext = getEditedPostContext();
110
- const templates = select( coreStore ).getEntityRecords(
108
+ const { getEditedPostId } = unlock( select( editSiteStore ) );
109
+ const template = select( coreStore ).getEntityRecord(
111
110
  'postType',
112
111
  TEMPLATE_POST_TYPE,
113
- { per_page: -1 }
112
+ getEditedPostId()
114
113
  );
115
- // Template title.
116
- const templateSlug =
117
- // Checks that the post type matches the current theme's post type, otherwise
118
- // the templateSlug returns 'home'.
119
- postContext?.postType === 'page'
120
- ? postContext?.templateSlug
121
- : null;
122
- const _templateTitle =
123
- templates && templateSlug
124
- ? templates.find(
125
- ( template ) => template.slug === templateSlug
126
- )?.title?.rendered
127
- : null;
114
+ const _templateTitle = template?.title?.rendered;
128
115
 
129
116
  // Parent page title.
130
117
  const _parentTitle = record?.parent
@@ -9,7 +9,7 @@ import { useMemo } from '@wordpress/element';
9
9
  * Internal dependencies
10
10
  */
11
11
  import { filterOutDuplicatesByName } from '../page-patterns/utils';
12
- import { PATTERN_CORE_SOURCES } from '../../utils/constants';
12
+ import { EXCLUDED_PATTERN_SOURCES } from '../../utils/constants';
13
13
  import { unlock } from '../../lock-unlock';
14
14
  import { store as editSiteStore } from '../../store';
15
15
 
@@ -32,7 +32,7 @@ export default function useThemePatterns() {
32
32
  [ ...( blockPatterns || [] ), ...( restBlockPatterns || [] ) ]
33
33
  .filter(
34
34
  ( pattern ) =>
35
- ! PATTERN_CORE_SOURCES.includes( pattern.source )
35
+ ! EXCLUDED_PATTERN_SOURCES.includes( pattern.source )
36
36
  )
37
37
  .filter( filterOutDuplicatesByName )
38
38
  .filter( ( pattern ) => pattern.inserter !== false ),
@@ -11,6 +11,8 @@
11
11
 
12
12
  img {
13
13
  border-radius: $grid-unit-15;
14
+ width: 20px;
15
+ height: 20px;
14
16
  }
15
17
 
16
18
  svg {
@@ -21,7 +23,10 @@
21
23
  .edit-site-sidebar-navigation-screen-template__added-by-description-author-icon {
22
24
  width: 24px;
23
25
  height: 24px;
24
- margin-right: $grid-unit-10;
26
+ margin-right: $grid-unit-05;
27
+ display: inline-flex;
28
+ align-items: center;
29
+ justify-content: center;
25
30
  }
26
31
 
27
32
  .edit-site-sidebar-navigation-screen-template__template-area-button {
@@ -18,7 +18,7 @@ import { __ } from '@wordpress/i18n';
18
18
  import { store as blockEditorStore } from '@wordpress/block-editor';
19
19
  import { store as coreStore } from '@wordpress/core-data';
20
20
  import { decodeEntities } from '@wordpress/html-entities';
21
- import { forwardRef } from '@wordpress/element';
21
+ import { memo } from '@wordpress/element';
22
22
  import { search, external } from '@wordpress/icons';
23
23
  import { store as commandsStore } from '@wordpress/commands';
24
24
  import { displayShortcut } from '@wordpress/keycodes';
@@ -32,7 +32,7 @@ import { unlock } from '../../lock-unlock';
32
32
 
33
33
  const HUB_ANIMATION_DURATION = 0.3;
34
34
 
35
- const SiteHub = forwardRef( ( { isTransparent, ...restProps }, ref ) => {
35
+ const SiteHub = memo( ( { isTransparent, className } ) => {
36
36
  const { canvasMode, dashboardLink, homeUrl, siteTitle } = useSelect(
37
37
  ( select ) => {
38
38
  const { getCanvasMode, getSettings } = unlock(
@@ -84,12 +84,13 @@ const SiteHub = forwardRef( ( { isTransparent, ...restProps }, ref ) => {
84
84
 
85
85
  return (
86
86
  <motion.div
87
- ref={ ref }
88
- { ...restProps }
89
- className={ classnames(
90
- 'edit-site-site-hub',
91
- restProps.className
92
- ) }
87
+ className={ classnames( 'edit-site-site-hub', className ) }
88
+ variants={ {
89
+ isDistractionFree: { x: '-100%' },
90
+ isDistractionFreeHovering: { x: 0 },
91
+ view: { x: 0 },
92
+ edit: { x: 0 },
93
+ } }
93
94
  initial={ false }
94
95
  transition={ {
95
96
  type: 'tween',
@@ -3,7 +3,7 @@
3
3
  */
4
4
  import { Modal, Flex, FlexItem, Button } from '@wordpress/components';
5
5
  import { __ } from '@wordpress/i18n';
6
- import { useState, useEffect, useMemo } from '@wordpress/element';
6
+ import { useState, useMemo } from '@wordpress/element';
7
7
  import {
8
8
  __experimentalBlockPatternsList as BlockPatternsList,
9
9
  store as blockEditorStore,
@@ -13,8 +13,6 @@ import { useAsyncList } from '@wordpress/compose';
13
13
  import { store as preferencesStore } from '@wordpress/preferences';
14
14
  import { parse } from '@wordpress/blocks';
15
15
  import { store as coreStore, useEntityBlockEditor } from '@wordpress/core-data';
16
- import apiFetch from '@wordpress/api-fetch';
17
- import { addQueryArgs } from '@wordpress/url';
18
16
 
19
17
  /**
20
18
  * Internal dependencies
@@ -23,18 +21,22 @@ import { store as editSiteStore } from '../../store';
23
21
  import { TEMPLATE_POST_TYPE } from '../../utils/constants';
24
22
 
25
23
  function useFallbackTemplateContent( slug, isCustom = false ) {
26
- const [ templateContent, setTemplateContent ] = useState( '' );
27
-
28
- useEffect( () => {
29
- apiFetch( {
30
- path: addQueryArgs( '/wp/v2/templates/lookup', {
24
+ return useSelect(
25
+ ( select ) => {
26
+ const { getEntityRecord, getDefaultTemplateId } =
27
+ select( coreStore );
28
+ const templateId = getDefaultTemplateId( {
31
29
  slug,
32
30
  is_custom: isCustom,
33
31
  ignore_empty: true,
34
- } ),
35
- } ).then( ( { content } ) => setTemplateContent( content.raw ) );
36
- }, [ isCustom, slug ] );
37
- return templateContent;
32
+ } );
33
+ return templateId
34
+ ? getEntityRecord( 'postType', TEMPLATE_POST_TYPE, templateId )
35
+ ?.content?.raw
36
+ : undefined;
37
+ },
38
+ [ slug, isCustom ]
39
+ );
38
40
  }
39
41
 
40
42
  function useStartPatterns( fallbackContent ) {
@@ -7,13 +7,10 @@ import classnames from 'classnames';
7
7
  * WordPress dependencies
8
8
  */
9
9
  import {
10
- __unstableComposite as Composite,
11
- __unstableUseCompositeState as useCompositeState,
12
- __unstableCompositeItem as CompositeItem,
13
10
  Disabled,
14
11
  TabPanel,
12
+ privateApis as componentsPrivateApis,
15
13
  } from '@wordpress/components';
16
-
17
14
  import { __, sprintf } from '@wordpress/i18n';
18
15
  import {
19
16
  getCategories,
@@ -43,6 +40,12 @@ const { ExperimentalBlockEditorProvider, useGlobalStyle } = unlock(
43
40
  blockEditorPrivateApis
44
41
  );
45
42
 
43
+ const {
44
+ CompositeV2: Composite,
45
+ CompositeItemV2: CompositeItem,
46
+ useCompositeStoreV2: useCompositeStore,
47
+ } = unlock( componentsPrivateApis );
48
+
46
49
  // The content area of the Style Book is rendered within an iframe so that global styles
47
50
  // are applied to elements within the entire content area. To support elements that are
48
51
  // not part of the block previews, such as headings and layout for the block previews,
@@ -66,6 +69,8 @@ const STYLE_BOOK_IFRAME_STYLES = `
66
69
  padding: 16px;
67
70
  width: 100%;
68
71
  box-sizing: border-box;
72
+ scroll-margin-top: 32px;
73
+ scroll-margin-bottom: 32px;
69
74
  }
70
75
 
71
76
  .edit-site-style-book__example.is-selected {
@@ -332,6 +337,7 @@ const StyleBookBody = ( {
332
337
  }
333
338
  isSelected={ isSelected }
334
339
  onSelect={ onSelect }
340
+ key={ category }
335
341
  />
336
342
  </Iframe>
337
343
  );
@@ -339,12 +345,14 @@ const StyleBookBody = ( {
339
345
 
340
346
  const Examples = memo(
341
347
  ( { className, examples, category, label, isSelected, onSelect } ) => {
342
- const composite = useCompositeState( { orientation: 'vertical' } );
348
+ const compositeStore = useCompositeStore( { orientation: 'vertical' } );
349
+
343
350
  return (
344
351
  <Composite
345
- { ...composite }
352
+ store={ compositeStore }
346
353
  className={ className }
347
354
  aria-label={ label }
355
+ role="grid"
348
356
  >
349
357
  { examples
350
358
  .filter( ( example ) =>
@@ -354,7 +362,6 @@ const Examples = memo(
354
362
  <Example
355
363
  key={ example.name }
356
364
  id={ `example-${ example.name }` }
357
- composite={ composite }
358
365
  title={ example.title }
359
366
  blocks={ example.blocks }
360
367
  isSelected={ isSelected( example.name ) }
@@ -368,7 +375,7 @@ const Examples = memo(
368
375
  }
369
376
  );
370
377
 
371
- const Example = ( { composite, id, title, blocks, isSelected, onClick } ) => {
378
+ const Example = ( { id, title, blocks, isSelected, onClick } ) => {
372
379
  const originalSettings = useSelect(
373
380
  ( select ) => select( blockEditorStore ).getSettings(),
374
381
  []
@@ -385,35 +392,41 @@ const Example = ( { composite, id, title, blocks, isSelected, onClick } ) => {
385
392
  );
386
393
 
387
394
  return (
388
- <CompositeItem
389
- { ...composite }
390
- className={ classnames( 'edit-site-style-book__example', {
391
- 'is-selected': isSelected,
392
- } ) }
393
- id={ id }
394
- aria-label={ sprintf(
395
- // translators: %s: Title of a block, e.g. Heading.
396
- __( 'Open %s styles in Styles panel' ),
397
- title
398
- ) }
399
- onClick={ onClick }
400
- role="button"
401
- as="div"
402
- >
403
- <span className="edit-site-style-book__example-title">
404
- { title }
405
- </span>
406
- <div className="edit-site-style-book__example-preview" aria-hidden>
407
- <Disabled className="edit-site-style-book__example-preview__content">
408
- <ExperimentalBlockEditorProvider
409
- value={ renderedBlocks }
410
- settings={ settings }
395
+ <div role="row">
396
+ <div role="gridcell">
397
+ <CompositeItem
398
+ className={ classnames( 'edit-site-style-book__example', {
399
+ 'is-selected': isSelected,
400
+ } ) }
401
+ id={ id }
402
+ aria-label={ sprintf(
403
+ // translators: %s: Title of a block, e.g. Heading.
404
+ __( 'Open %s styles in Styles panel' ),
405
+ title
406
+ ) }
407
+ render={ <div /> }
408
+ role="button"
409
+ onClick={ onClick }
410
+ >
411
+ <span className="edit-site-style-book__example-title">
412
+ { title }
413
+ </span>
414
+ <div
415
+ className="edit-site-style-book__example-preview"
416
+ aria-hidden
411
417
  >
412
- <BlockList renderAppender={ false } />
413
- </ExperimentalBlockEditorProvider>
414
- </Disabled>
418
+ <Disabled className="edit-site-style-book__example-preview__content">
419
+ <ExperimentalBlockEditorProvider
420
+ value={ renderedBlocks }
421
+ settings={ settings }
422
+ >
423
+ <BlockList renderAppender={ false } />
424
+ </ExperimentalBlockEditorProvider>
425
+ </Disabled>
426
+ </div>
427
+ </CompositeItem>
415
428
  </div>
416
- </CompositeItem>
429
+ </div>
417
430
  );
418
431
  };
419
432
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { useEffect } from '@wordpress/element';
4
+ import { useEffect, useMemo } from '@wordpress/element';
5
5
  import { useSelect, useDispatch } from '@wordpress/data';
6
6
  import { store as coreDataStore } from '@wordpress/core-data';
7
7
  import { privateApis as routerPrivateApis } from '@wordpress/router';
@@ -20,75 +20,194 @@ import {
20
20
 
21
21
  const { useLocation } = unlock( routerPrivateApis );
22
22
 
23
- export default function useInitEditedEntityFromURL() {
24
- const { params: { postId, postType } = {} } = useLocation();
25
- const { isRequestingSite, homepageId, url } = useSelect( ( select ) => {
26
- const { getSite, getUnstableBase } = select( coreDataStore );
27
- const siteData = getSite();
28
- const base = getUnstableBase();
23
+ const postTypesWithoutParentTemplate = [
24
+ TEMPLATE_POST_TYPE,
25
+ TEMPLATE_PART_POST_TYPE,
26
+ NAVIGATION_POST_TYPE,
27
+ PATTERN_TYPES.user,
28
+ ];
29
29
 
30
- return {
31
- isRequestingSite: ! base,
32
- homepageId:
33
- siteData?.show_on_front === 'page'
34
- ? siteData.page_on_front
35
- : null,
36
- url: base?.home,
37
- };
38
- }, [] );
30
+ function useResolveEditedEntityAndContext( { postId, postType } ) {
31
+ const { hasLoadedAllDependencies, homepageId, url, frontPageTemplateId } =
32
+ useSelect( ( select ) => {
33
+ const { getSite, getUnstableBase, getEntityRecords } =
34
+ select( coreDataStore );
35
+ const siteData = getSite();
36
+ const base = getUnstableBase();
37
+ const templates = getEntityRecords(
38
+ 'postType',
39
+ TEMPLATE_POST_TYPE,
40
+ {
41
+ per_page: -1,
42
+ }
43
+ );
44
+ let _frontPateTemplateId;
45
+ if ( templates ) {
46
+ const frontPageTemplate = templates.find(
47
+ ( t ) => t.slug === 'front-page'
48
+ );
49
+ _frontPateTemplateId = frontPageTemplate
50
+ ? frontPageTemplate.id
51
+ : false;
52
+ }
39
53
 
40
- const {
41
- setEditedEntity,
42
- setTemplate,
43
- setTemplatePart,
44
- setPage,
45
- setNavigationMenu,
46
- } = useDispatch( editSiteStore );
54
+ return {
55
+ hasLoadedAllDependencies: !! base && !! siteData,
56
+ homepageId:
57
+ siteData?.show_on_front === 'page'
58
+ ? siteData.page_on_front.toString()
59
+ : null,
60
+ url: base?.home,
61
+ frontPageTemplateId: _frontPateTemplateId,
62
+ };
63
+ }, [] );
47
64
 
48
- useEffect( () => {
49
- if ( postType && postId ) {
50
- switch ( postType ) {
51
- case TEMPLATE_POST_TYPE:
52
- setTemplate( postId );
53
- break;
54
- case TEMPLATE_PART_POST_TYPE:
55
- setTemplatePart( postId );
56
- break;
57
- case NAVIGATION_POST_TYPE:
58
- setNavigationMenu( postId );
59
- break;
60
- case PATTERN_TYPES.user:
61
- setEditedEntity( postType, postId );
62
- break;
63
- default:
64
- setPage( {
65
- context: { postType, postId },
66
- } );
65
+ /**
66
+ * This is a hook that recreates the logic to resolve a template for a given WordPress postID postTypeId
67
+ * in order to match the frontend as closely as possible in the site editor.
68
+ *
69
+ * It is not possible to rely on the server logic because there maybe unsaved changes that impact the template resolution.
70
+ */
71
+ const resolvedTemplateId = useSelect(
72
+ ( select ) => {
73
+ // If we're rendering a post type that doesn't have a template
74
+ // no need to resolve its template.
75
+ if ( postTypesWithoutParentTemplate.includes( postType ) ) {
76
+ return undefined;
77
+ }
78
+
79
+ const {
80
+ getEditedEntityRecord,
81
+ getEntityRecords,
82
+ getDefaultTemplateId,
83
+ __experimentalGetTemplateForLink,
84
+ } = select( coreDataStore );
85
+
86
+ function resolveTemplateForPostTypeAndId(
87
+ postTypeToResolve,
88
+ postIdToResolve
89
+ ) {
90
+ // For the front page, we always use the front page template if existing.
91
+ if (
92
+ postTypeToResolve === 'page' &&
93
+ homepageId === postIdToResolve
94
+ ) {
95
+ // We're still checking whether the front page template exists.
96
+ // Don't resolve the template yet.
97
+ if ( frontPageTemplateId === undefined ) {
98
+ return undefined;
99
+ }
100
+
101
+ if ( !! frontPageTemplateId ) {
102
+ return frontPageTemplateId;
103
+ }
104
+ }
105
+
106
+ const editedEntity = getEditedEntityRecord(
107
+ 'postType',
108
+ postTypeToResolve,
109
+ postIdToResolve
110
+ );
111
+ if ( ! editedEntity ) {
112
+ return undefined;
113
+ }
114
+ // First see if the post/page has an assigned template and fetch it.
115
+ const currentTemplateSlug = editedEntity.template;
116
+ if ( currentTemplateSlug ) {
117
+ const currentTemplate = getEntityRecords(
118
+ 'postType',
119
+ TEMPLATE_POST_TYPE,
120
+ {
121
+ per_page: -1,
122
+ }
123
+ )?.find( ( { slug } ) => slug === currentTemplateSlug );
124
+ if ( currentTemplate ) {
125
+ return currentTemplate.id;
126
+ }
127
+ }
128
+
129
+ // If no template is assigned, use the default template.
130
+ return getDefaultTemplateId( {
131
+ slug: `${ postTypeToResolve }-${ editedEntity?.slug }`,
132
+ } );
133
+ }
134
+
135
+ if ( ! hasLoadedAllDependencies ) {
136
+ return undefined;
137
+ }
138
+
139
+ // If we're rendering a specific page, post... we need to resolve its template.
140
+ if ( postType && postId ) {
141
+ return resolveTemplateForPostTypeAndId( postType, postId );
142
+ }
143
+
144
+ // If we're rendering the home page, and we have a static home page, resolve its template.
145
+ if ( homepageId ) {
146
+ return resolveTemplateForPostTypeAndId( 'page', homepageId );
67
147
  }
68
148
 
69
- return;
149
+ // If we're not rendering a specific page, use the front page template.
150
+ if ( url ) {
151
+ const template = __experimentalGetTemplateForLink( url );
152
+ return template?.id;
153
+ }
154
+ },
155
+ [
156
+ homepageId,
157
+ hasLoadedAllDependencies,
158
+ url,
159
+ postId,
160
+ postType,
161
+ frontPageTemplateId,
162
+ ]
163
+ );
164
+
165
+ const context = useMemo( () => {
166
+ if ( postTypesWithoutParentTemplate.includes( postType ) ) {
167
+ return {};
168
+ }
169
+
170
+ if ( postType && postId ) {
171
+ return { postType, postId };
70
172
  }
71
173
 
72
- // In all other cases, we need to set the home page in the site editor view.
73
174
  if ( homepageId ) {
74
- setPage( {
75
- context: { postType: 'page', postId: homepageId },
76
- } );
77
- } else if ( ! isRequestingSite ) {
78
- setPage( {
79
- path: url,
80
- } );
175
+ return { postType: 'page', postId: homepageId };
176
+ }
177
+
178
+ return {};
179
+ }, [ homepageId, postType, postId ] );
180
+
181
+ if ( postTypesWithoutParentTemplate.includes( postType ) ) {
182
+ return { isReady: true, postType, postId, context };
183
+ }
184
+
185
+ if ( hasLoadedAllDependencies ) {
186
+ return {
187
+ isReady: resolvedTemplateId !== undefined,
188
+ postType: TEMPLATE_POST_TYPE,
189
+ postId: resolvedTemplateId,
190
+ context,
191
+ };
192
+ }
193
+
194
+ return { isReady: false };
195
+ }
196
+
197
+ export function useInitEditedEntity( params ) {
198
+ const { postType, postId, context, isReady } =
199
+ useResolveEditedEntityAndContext( params );
200
+
201
+ const { setEditedEntity } = useDispatch( editSiteStore );
202
+
203
+ useEffect( () => {
204
+ if ( isReady ) {
205
+ setEditedEntity( postType, postId, context );
81
206
  }
82
- }, [
83
- url,
84
- postId,
85
- postType,
86
- homepageId,
87
- isRequestingSite,
88
- setEditedEntity,
89
- setPage,
90
- setTemplate,
91
- setTemplatePart,
92
- setNavigationMenu,
93
- ] );
207
+ }, [ isReady, postType, postId, context, setEditedEntity ] );
208
+ }
209
+
210
+ export default function useInitEditedEntityFromURL() {
211
+ const { params = {} } = useLocation();
212
+ return useInitEditedEntity( params );
94
213
  }
@@ -26,7 +26,7 @@ export default function ConvertToRegularBlocks( { clientId, onClose } ) {
26
26
  onClose();
27
27
  } }
28
28
  >
29
- { __( 'Detach blocks from template part' ) }
29
+ { __( 'Detach' ) }
30
30
  </MenuItem>
31
31
  );
32
32
  }
@@ -23,8 +23,8 @@ export default function WelcomeGuidePage() {
23
23
  'core/edit-site',
24
24
  'welcomeGuide'
25
25
  );
26
- const { hasPageContentFocus } = select( editSiteStore );
27
- return isPageActive && ! isEditorActive && hasPageContentFocus();
26
+ const { isPage } = select( editSiteStore );
27
+ return isPageActive && ! isEditorActive && isPage();
28
28
  }, [] );
29
29
 
30
30
  if ( ! isVisible ) {
@@ -5,6 +5,7 @@ import { useDispatch, useSelect } from '@wordpress/data';
5
5
  import { Guide } from '@wordpress/components';
6
6
  import { __ } from '@wordpress/i18n';
7
7
  import { store as preferencesStore } from '@wordpress/preferences';
8
+ import { store as editorStore } from '@wordpress/editor';
8
9
 
9
10
  /**
10
11
  * Internal dependencies
@@ -23,12 +24,13 @@ export default function WelcomeGuideTemplate() {
23
24
  'core/edit-site',
24
25
  'welcomeGuide'
25
26
  );
26
- const { isPage, hasPageContentFocus } = select( editSiteStore );
27
+ const { isPage } = select( editSiteStore );
28
+ const { getRenderingMode } = select( editorStore );
27
29
  return (
28
30
  isTemplateActive &&
29
31
  ! isEditorActive &&
30
32
  isPage() &&
31
- ! hasPageContentFocus()
33
+ getRenderingMode() === 'template-only'
32
34
  );
33
35
  }, [] );
34
36