@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
@@ -47,7 +47,7 @@ export default function getIntersectingFontFaces( incoming, existing ) {
47
47
  } );
48
48
  }
49
49
  );
50
- matches.push( { ...existingFont, fontFace: matchingFaces } );
50
+ matches.push( { ...incomingFont, fontFace: matchingFaces } );
51
51
  } else {
52
52
  matches.push( incomingFont );
53
53
  }
@@ -1,8 +1,12 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import { paramCase as kebabCase } from 'change-case';
5
+
1
6
  /**
2
7
  * Internal dependencies
3
8
  */
4
9
  import { FONT_WEIGHTS, FONT_STYLES } from './constants';
5
- import { formatFontFamily } from './preview-styles';
6
10
 
7
11
  export function setUIValuesNeeded( font, extraValues = {} ) {
8
12
  if ( ! font.name && ( font.fontFamily || font.slug ) ) {
@@ -85,14 +89,10 @@ export async function loadFontFaceInBrowser( fontFace, source, addTo = 'all' ) {
85
89
  }
86
90
 
87
91
  // eslint-disable-next-line no-undef
88
- const newFont = new FontFace(
89
- formatFontFamily( fontFace.fontFamily ),
90
- dataSource,
91
- {
92
- style: fontFace.fontStyle,
93
- weight: fontFace.fontWeight,
94
- }
95
- );
92
+ const newFont = new FontFace( fontFace.fontFamily, dataSource, {
93
+ style: fontFace.fontStyle,
94
+ weight: fontFace.fontWeight,
95
+ } );
96
96
 
97
97
  const loadedFace = await newFont.load();
98
98
 
@@ -129,9 +129,20 @@ export function getDisplaySrcFromFontFace( input, urlPrefix ) {
129
129
  return src;
130
130
  }
131
131
 
132
+ // This function replicates one behavior of _wp_to_kebab_case().
133
+ // Additional context: https://github.com/WordPress/gutenberg/issues/53695
134
+ export function wpKebabCase( str ) {
135
+ // If a string contains a digit followed by a number, insert a dash between them.
136
+ return kebabCase( str ).replace(
137
+ /([a-zA-Z])(\d)|(\d)([a-zA-Z])/g,
138
+ '$1$3-$2$4'
139
+ );
140
+ }
141
+
132
142
  export function makeFormDataFromFontFamilies( fontFamilies ) {
133
143
  const formData = new FormData();
134
144
  const newFontFamilies = fontFamilies.map( ( family, familyIndex ) => {
145
+ family.slug = wpKebabCase( family.slug );
135
146
  if ( family?.fontFace ) {
136
147
  family.fontFace = family.fontFace.map( ( face, faceIndex ) => {
137
148
  if ( face.file ) {
@@ -5,7 +5,7 @@ import getIntersectingFontFaces from '../get-intersecting-font-faces';
5
5
 
6
6
  describe( 'getIntersectingFontFaces', () => {
7
7
  it( 'returns matching font faces for matching font family', () => {
8
- const intendedFontsFamilies = [
8
+ const incomingFontFamilies = [
9
9
  {
10
10
  slug: 'lobster',
11
11
  fontFace: [
@@ -30,15 +30,15 @@ describe( 'getIntersectingFontFaces', () => {
30
30
  ];
31
31
 
32
32
  const result = getIntersectingFontFaces(
33
- intendedFontsFamilies,
33
+ incomingFontFamilies,
34
34
  existingFontFamilies
35
35
  );
36
36
 
37
- expect( result ).toEqual( intendedFontsFamilies );
37
+ expect( result ).toEqual( incomingFontFamilies );
38
38
  } );
39
39
 
40
40
  it( 'returns empty array when there is no match', () => {
41
- const intendedFontsFamilies = [
41
+ const incomingFontFamilies = [
42
42
  {
43
43
  slug: 'lobster',
44
44
  fontFace: [
@@ -63,7 +63,7 @@ describe( 'getIntersectingFontFaces', () => {
63
63
  ];
64
64
 
65
65
  const result = getIntersectingFontFaces(
66
- intendedFontsFamilies,
66
+ incomingFontFamilies,
67
67
  existingFontFamilies
68
68
  );
69
69
 
@@ -71,7 +71,7 @@ describe( 'getIntersectingFontFaces', () => {
71
71
  } );
72
72
 
73
73
  it( 'returns matching font faces', () => {
74
- const intendedFontsFamilies = [
74
+ const incomingFontFamilies = [
75
75
  {
76
76
  slug: 'lobster',
77
77
  fontFace: [
@@ -129,7 +129,7 @@ describe( 'getIntersectingFontFaces', () => {
129
129
  ];
130
130
 
131
131
  const result = getIntersectingFontFaces(
132
- intendedFontsFamilies,
132
+ incomingFontFamilies,
133
133
  existingFontFamilies
134
134
  );
135
135
 
@@ -137,7 +137,7 @@ describe( 'getIntersectingFontFaces', () => {
137
137
  } );
138
138
 
139
139
  it( 'returns empty array when the first list is empty', () => {
140
- const intendedFontsFamilies = [];
140
+ const incomingFontFamilies = [];
141
141
 
142
142
  const existingFontFamilies = [
143
143
  {
@@ -152,7 +152,7 @@ describe( 'getIntersectingFontFaces', () => {
152
152
  ];
153
153
 
154
154
  const result = getIntersectingFontFaces(
155
- intendedFontsFamilies,
155
+ incomingFontFamilies,
156
156
  existingFontFamilies
157
157
  );
158
158
 
@@ -160,7 +160,7 @@ describe( 'getIntersectingFontFaces', () => {
160
160
  } );
161
161
 
162
162
  it( 'returns empty array when the second list is empty', () => {
163
- const intendedFontsFamilies = [
163
+ const incomingFontFamilies = [
164
164
  {
165
165
  slug: 'lobster',
166
166
  fontFace: [
@@ -175,7 +175,7 @@ describe( 'getIntersectingFontFaces', () => {
175
175
  const existingFontFamilies = [];
176
176
 
177
177
  const result = getIntersectingFontFaces(
178
- intendedFontsFamilies,
178
+ incomingFontFamilies,
179
179
  existingFontFamilies
180
180
  );
181
181
 
@@ -183,7 +183,7 @@ describe( 'getIntersectingFontFaces', () => {
183
183
  } );
184
184
 
185
185
  it( 'returns intersecting font family when there are no fonfaces', () => {
186
- const intendedFontsFamilies = [
186
+ const incomingFontFamilies = [
187
187
  {
188
188
  slug: 'piazzolla',
189
189
  fontFace: [ { fontStyle: 'normal', fontWeight: '400' } ],
@@ -200,7 +200,7 @@ describe( 'getIntersectingFontFaces', () => {
200
200
  ];
201
201
 
202
202
  const result = getIntersectingFontFaces(
203
- intendedFontsFamilies,
203
+ incomingFontFamilies,
204
204
  existingFontFamilies
205
205
  );
206
206
 
@@ -208,7 +208,7 @@ describe( 'getIntersectingFontFaces', () => {
208
208
  } );
209
209
 
210
210
  it( 'returns intersecting if there is an intended font face and is not present in the returning it should not be returned', () => {
211
- const intendedFontsFamilies = [
211
+ const incomingFontFamilies = [
212
212
  {
213
213
  slug: 'piazzolla',
214
214
  fontFace: [ { fontStyle: 'normal', fontWeight: '400' } ],
@@ -226,7 +226,7 @@ describe( 'getIntersectingFontFaces', () => {
226
226
  ];
227
227
 
228
228
  const result = getIntersectingFontFaces(
229
- intendedFontsFamilies,
229
+ incomingFontFamilies,
230
230
  existingFontFamilies
231
231
  );
232
232
  const expected = [
@@ -237,4 +237,35 @@ describe( 'getIntersectingFontFaces', () => {
237
237
  ];
238
238
  expect( result ).toEqual( expected );
239
239
  } );
240
+
241
+ it( 'updates font family definition using the incoming data', () => {
242
+ const incomingFontFamilies = [
243
+ {
244
+ slug: 'gothic-a1',
245
+ fontFace: [ { fontStyle: 'normal', fontWeight: '400' } ],
246
+ fontFamily: "'Gothic A1', serif",
247
+ },
248
+ ];
249
+
250
+ const existingFontFamilies = [
251
+ {
252
+ slug: 'gothic-a1',
253
+ fontFace: [ { fontStyle: 'normal', fontWeight: '400' } ],
254
+ fontFamily: 'Gothic A1, serif',
255
+ },
256
+ ];
257
+
258
+ const result = getIntersectingFontFaces(
259
+ incomingFontFamilies,
260
+ existingFontFamilies
261
+ );
262
+ const expected = [
263
+ {
264
+ slug: 'gothic-a1',
265
+ fontFace: [ { fontStyle: 'normal', fontWeight: '400' } ],
266
+ fontFamily: "'Gothic A1', serif",
267
+ },
268
+ ];
269
+ expect( result ).toEqual( expected );
270
+ } );
240
271
  } );
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Internal dependencies
3
+ */
4
+ import { wpKebabCase } from '../index';
5
+
6
+ describe( 'wpKebabCase', () => {
7
+ it( 'should insert a dash between a letter and a digit', () => {
8
+ const input = 'abc1def';
9
+ const expectedOutput = 'abc-1def';
10
+ expect( wpKebabCase( input ) ).toEqual( expectedOutput );
11
+
12
+ const input2 = 'abc1def2ghi';
13
+ const expectedOutput2 = 'abc-1def-2ghi';
14
+ expect( wpKebabCase( input2 ) ).toEqual( expectedOutput2 );
15
+ } );
16
+
17
+ it( 'should not insert a dash between two letters', () => {
18
+ const input = 'abcdef';
19
+ const expectedOutput = 'abcdef';
20
+ expect( wpKebabCase( input ) ).toEqual( expectedOutput );
21
+ } );
22
+
23
+ it( 'should not insert a dash between a digit and a hyphen', () => {
24
+ const input = 'abc1-def';
25
+ const expectedOutput = 'abc-1-def';
26
+ expect( wpKebabCase( input ) ).toEqual( expectedOutput );
27
+ } );
28
+ } );
@@ -12,7 +12,7 @@ import {
12
12
  import { isRTL, __ } from '@wordpress/i18n';
13
13
  import { chevronRight, chevronLeft } from '@wordpress/icons';
14
14
 
15
- function ScreenHeader( { title, description } ) {
15
+ function ScreenHeader( { title, description, onBack } ) {
16
16
  return (
17
17
  <VStack spacing={ 0 }>
18
18
  <View>
@@ -27,6 +27,7 @@ function ScreenHeader( { title, description } ) {
27
27
  icon={ isRTL() ? chevronRight : chevronLeft }
28
28
  isSmall
29
29
  aria-label={ __( 'Navigate to the previous view' ) }
30
+ onClick={ onBack }
30
31
  />
31
32
  <Spacer>
32
33
  <Heading
@@ -9,7 +9,13 @@ import {
9
9
  __experimentalHStack as HStack,
10
10
  } from '@wordpress/components';
11
11
  import { useSelect } from '@wordpress/data';
12
- import { useState, useMemo, useEffect, useRef } from '@wordpress/element';
12
+ import {
13
+ useState,
14
+ useEffect,
15
+ useRef,
16
+ useDeferredValue,
17
+ memo,
18
+ } from '@wordpress/element';
13
19
  import {
14
20
  BlockIcon,
15
21
  privateApis as blockEditorPrivateApis,
@@ -99,22 +105,16 @@ function BlockMenuItem( { block } ) {
99
105
  );
100
106
  }
101
107
 
102
- function ScreenBlockList() {
108
+ function BlockList( { filterValue } ) {
103
109
  const sortedBlockTypes = useSortedBlockTypes();
104
- const [ filterValue, setFilterValue ] = useState( '' );
105
110
  const debouncedSpeak = useDebounce( speak, 500 );
106
- const isMatchingSearchTerm = useSelect(
107
- ( select ) => select( blocksStore ).isMatchingSearchTerm,
108
- []
109
- );
110
- const filteredBlockTypes = useMemo( () => {
111
- if ( ! filterValue ) {
112
- return sortedBlockTypes;
113
- }
114
- return sortedBlockTypes.filter( ( blockType ) =>
115
- isMatchingSearchTerm( blockType, filterValue )
116
- );
117
- }, [ filterValue, sortedBlockTypes, isMatchingSearchTerm ] );
111
+ const { isMatchingSearchTerm } = useSelect( blocksStore );
112
+
113
+ const filteredBlockTypes = ! filterValue
114
+ ? sortedBlockTypes
115
+ : sortedBlockTypes.filter( ( blockType ) =>
116
+ isMatchingSearchTerm( blockType, filterValue )
117
+ );
118
118
 
119
119
  const blockTypesListRef = useRef();
120
120
 
@@ -140,6 +140,27 @@ function ScreenBlockList() {
140
140
  debouncedSpeak( resultsFoundMessage, count );
141
141
  }, [ filterValue, debouncedSpeak ] );
142
142
 
143
+ return (
144
+ <div
145
+ ref={ blockTypesListRef }
146
+ className="edit-site-block-types-item-list"
147
+ >
148
+ { filteredBlockTypes.map( ( block ) => (
149
+ <BlockMenuItem
150
+ block={ block }
151
+ key={ 'menu-itemblock-' + block.name }
152
+ />
153
+ ) ) }
154
+ </div>
155
+ );
156
+ }
157
+
158
+ const MemoizedBlockList = memo( BlockList );
159
+
160
+ function ScreenBlockList() {
161
+ const [ filterValue, setFilterValue ] = useState( '' );
162
+ const deferredFilterValue = useDeferredValue( filterValue );
163
+
143
164
  return (
144
165
  <>
145
166
  <ScreenHeader
@@ -156,17 +177,7 @@ function ScreenBlockList() {
156
177
  label={ __( 'Search for blocks' ) }
157
178
  placeholder={ __( 'Search' ) }
158
179
  />
159
- <div
160
- ref={ blockTypesListRef }
161
- className="edit-site-block-types-item-list"
162
- >
163
- { filteredBlockTypes.map( ( block ) => (
164
- <BlockMenuItem
165
- block={ block }
166
- key={ 'menu-itemblock-' + block.name }
167
- />
168
- ) ) }
169
- </div>
180
+ <MemoizedBlockList filterValue={ deferredFilterValue } />
170
181
  </>
171
182
  );
172
183
  }
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { __ } from '@wordpress/i18n';
4
+ import { __, sprintf } from '@wordpress/i18n';
5
5
  import {
6
6
  Button,
7
7
  __experimentalUseNavigator as useNavigator,
@@ -10,6 +10,7 @@ import {
10
10
  __experimentalSpacer as Spacer,
11
11
  } from '@wordpress/components';
12
12
  import { useSelect, useDispatch } from '@wordpress/data';
13
+ import { store as coreStore } from '@wordpress/core-data';
13
14
  import { useContext, useState, useEffect } from '@wordpress/element';
14
15
  import {
15
16
  privateApis as blockEditorPrivateApis,
@@ -32,22 +33,43 @@ const { GlobalStylesContext, areGlobalStyleConfigsEqual } = unlock(
32
33
  );
33
34
 
34
35
  function ScreenRevisions() {
35
- const { goBack } = useNavigator();
36
- const { user: userConfig, setUserConfig } =
36
+ const { goTo } = useNavigator();
37
+ const { user: currentEditorGlobalStyles, setUserConfig } =
37
38
  useContext( GlobalStylesContext );
38
- const { blocks, editorCanvasContainerView } = useSelect( ( select ) => {
39
- return {
40
- editorCanvasContainerView: unlock(
41
- select( editSiteStore )
42
- ).getEditorCanvasContainerView(),
43
- blocks: select( blockEditorStore ).getBlocks(),
44
- };
45
- }, [] );
39
+ const { blocks, editorCanvasContainerView, revisionsCount } = useSelect(
40
+ ( select ) => {
41
+ const {
42
+ getEntityRecord,
43
+ __experimentalGetCurrentGlobalStylesId,
44
+ __experimentalGetDirtyEntityRecords,
45
+ } = select( coreStore );
46
+ const isDirty = __experimentalGetDirtyEntityRecords().length > 0;
47
+ const globalStylesId = __experimentalGetCurrentGlobalStylesId();
48
+ const globalStyles = globalStylesId
49
+ ? getEntityRecord( 'root', 'globalStyles', globalStylesId )
50
+ : undefined;
51
+ let _revisionsCount =
52
+ globalStyles?._links?.[ 'version-history' ]?.[ 0 ]?.count || 0;
53
+ // one for the reset item.
54
+ _revisionsCount++;
55
+ // one for any dirty changes (unsaved).
56
+ if ( isDirty ) {
57
+ _revisionsCount++;
58
+ }
59
+ return {
60
+ editorCanvasContainerView: unlock(
61
+ select( editSiteStore )
62
+ ).getEditorCanvasContainerView(),
63
+ blocks: select( blockEditorStore ).getBlocks(),
64
+ revisionsCount: _revisionsCount,
65
+ };
66
+ },
67
+ []
68
+ );
46
69
  const { revisions, isLoading, hasUnsavedChanges } =
47
70
  useGlobalStylesRevisions();
48
- const [ selectedRevisionId, setSelectedRevisionId ] = useState();
49
- const [ globalStylesRevision, setGlobalStylesRevision ] =
50
- useState( userConfig );
71
+ const [ currentlySelectedRevision, setCurrentlySelectedRevision ] =
72
+ useState( currentEditorGlobalStyles );
51
73
  const [
52
74
  isLoadingRevisionWithUnsavedChanges,
53
75
  setIsLoadingRevisionWithUnsavedChanges,
@@ -55,16 +77,14 @@ function ScreenRevisions() {
55
77
  const { setEditorCanvasContainerView } = unlock(
56
78
  useDispatch( editSiteStore )
57
79
  );
58
-
59
- useEffect( () => {
60
- if ( editorCanvasContainerView !== 'global-styles-revisions' ) {
61
- goBack();
62
- setEditorCanvasContainerView( editorCanvasContainerView );
63
- }
64
- }, [ editorCanvasContainerView ] );
80
+ const selectedRevisionMatchesEditorStyles = areGlobalStyleConfigsEqual(
81
+ currentlySelectedRevision,
82
+ currentEditorGlobalStyles
83
+ );
65
84
 
66
85
  const onCloseRevisions = () => {
67
- goBack();
86
+ goTo( '/' ); // Return to global styles main panel.
87
+ setEditorCanvasContainerView( undefined );
68
88
  };
69
89
 
70
90
  const restoreRevision = ( revision ) => {
@@ -77,26 +97,61 @@ function ScreenRevisions() {
77
97
  };
78
98
 
79
99
  const selectRevision = ( revision ) => {
80
- setGlobalStylesRevision( {
100
+ setCurrentlySelectedRevision( {
81
101
  styles: revision?.styles || {},
82
102
  settings: revision?.settings || {},
83
103
  id: revision?.id,
84
104
  } );
85
- setSelectedRevisionId( revision?.id );
86
105
  };
87
106
 
107
+ useEffect( () => {
108
+ if ( editorCanvasContainerView !== 'global-styles-revisions' ) {
109
+ goTo( '/' ); // Return to global styles main panel.
110
+ setEditorCanvasContainerView( editorCanvasContainerView );
111
+ }
112
+ }, [ editorCanvasContainerView ] );
113
+
114
+ const firstRevision = revisions[ 0 ];
115
+ const currentlySelectedRevisionId = currentlySelectedRevision?.id;
116
+ const shouldSelectFirstItem =
117
+ !! firstRevision?.id &&
118
+ ! selectedRevisionMatchesEditorStyles &&
119
+ ! currentlySelectedRevisionId;
120
+
121
+ useEffect( () => {
122
+ /*
123
+ * Ensure that the first item is selected and loaded into the preview pane
124
+ * when no revision is selected and the selected styles don't match the current editor styles.
125
+ * This is required in case editor styles are changed outside the revisions panel,
126
+ * e.g., via the reset styles function of useGlobalStylesReset().
127
+ * See: https://github.com/WordPress/gutenberg/issues/55866
128
+ */
129
+ if ( shouldSelectFirstItem ) {
130
+ setCurrentlySelectedRevision( {
131
+ styles: firstRevision?.styles || {},
132
+ settings: firstRevision?.settings || {},
133
+ id: firstRevision?.id,
134
+ } );
135
+ }
136
+ }, [ shouldSelectFirstItem, firstRevision ] );
137
+
138
+ // Only display load button if there is a revision to load and it is different from the current editor styles.
88
139
  const isLoadButtonEnabled =
89
- !! globalStylesRevision?.id &&
90
- ! areGlobalStyleConfigsEqual( globalStylesRevision, userConfig );
140
+ !! currentlySelectedRevisionId && ! selectedRevisionMatchesEditorStyles;
91
141
  const shouldShowRevisions = ! isLoading && revisions.length;
92
142
 
93
143
  return (
94
144
  <>
95
145
  <ScreenHeader
96
- title={ __( 'Revisions' ) }
146
+ title={
147
+ revisionsCount &&
148
+ // translators: %s: number of revisions.
149
+ sprintf( __( 'Revisions (%s)' ), revisionsCount )
150
+ }
97
151
  description={ __(
98
- 'Revisions are added to the timeline when style changes are saved.'
152
+ 'Click on previously saved styles to preview them. To restore a selected version to the editor, hit "Apply." When you\'re ready, use the Save button to save your changes.'
99
153
  ) }
154
+ onBack={ onCloseRevisions }
100
155
  />
101
156
  { isLoading && (
102
157
  <Spinner className="edit-site-global-styles-screen-revisions__loading" />
@@ -105,13 +160,13 @@ function ScreenRevisions() {
105
160
  <>
106
161
  <Revisions
107
162
  blocks={ blocks }
108
- userConfig={ globalStylesRevision }
163
+ userConfig={ currentlySelectedRevision }
109
164
  onClose={ onCloseRevisions }
110
165
  />
111
166
  <div className="edit-site-global-styles-screen-revisions">
112
167
  <RevisionsButtons
113
168
  onChange={ selectRevision }
114
- selectedRevisionId={ selectedRevisionId }
169
+ selectedRevisionId={ currentlySelectedRevisionId }
115
170
  userRevisions={ revisions }
116
171
  />
117
172
  { isLoadButtonEnabled && (
@@ -120,8 +175,9 @@ function ScreenRevisions() {
120
175
  variant="primary"
121
176
  className="edit-site-global-styles-screen-revisions__button"
122
177
  disabled={
123
- ! globalStylesRevision?.id ||
124
- globalStylesRevision?.id === 'unsaved'
178
+ ! currentlySelectedRevisionId ||
179
+ currentlySelectedRevisionId ===
180
+ 'unsaved'
125
181
  }
126
182
  onClick={ () => {
127
183
  if ( hasUnsavedChanges ) {
@@ -130,12 +186,12 @@ function ScreenRevisions() {
130
186
  );
131
187
  } else {
132
188
  restoreRevision(
133
- globalStylesRevision
189
+ currentlySelectedRevision
134
190
  );
135
191
  }
136
192
  } }
137
193
  >
138
- { globalStylesRevision?.id === 'parent'
194
+ { currentlySelectedRevisionId === 'parent'
139
195
  ? __( 'Reset to defaults' )
140
196
  : __( 'Apply' ) }
141
197
  </Button>
@@ -147,7 +203,7 @@ function ScreenRevisions() {
147
203
  isOpen={ isLoadingRevisionWithUnsavedChanges }
148
204
  confirmButtonText={ __( 'Apply' ) }
149
205
  onConfirm={ () =>
150
- restoreRevision( globalStylesRevision )
206
+ restoreRevision( currentlySelectedRevision )
151
207
  }
152
208
  onCancel={ () =>
153
209
  setIsLoadingRevisionWithUnsavedChanges( false )