@wordpress/edit-site 5.30.0 → 5.32.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 (470) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/build/components/block-editor/editor-canvas.js +24 -4
  3. package/build/components/block-editor/editor-canvas.js.map +1 -1
  4. package/build/components/block-editor/site-editor-canvas.js +15 -4
  5. package/build/components/block-editor/site-editor-canvas.js.map +1 -1
  6. package/build/components/block-editor/use-site-editor-settings.js +1 -1
  7. package/build/components/block-editor/use-site-editor-settings.js.map +1 -1
  8. package/build/components/editor/index.js +12 -3
  9. package/build/components/editor/index.js.map +1 -1
  10. package/build/components/editor-canvas-container/index.js +1 -2
  11. package/build/components/editor-canvas-container/index.js.map +1 -1
  12. package/build/components/global-styles/background-panel.js +38 -0
  13. package/build/components/global-styles/background-panel.js.map +1 -0
  14. package/build/components/global-styles/color-palette-panel.js +0 -9
  15. package/build/components/global-styles/color-palette-panel.js.map +1 -1
  16. package/build/components/global-styles/font-families.js +1 -1
  17. package/build/components/global-styles/font-families.js.map +1 -1
  18. package/build/components/global-styles/font-library-modal/context.js +53 -17
  19. package/build/components/global-styles/font-library-modal/context.js.map +1 -1
  20. package/build/components/global-styles/font-library-modal/font-collection.js +4 -3
  21. package/build/components/global-styles/font-library-modal/font-collection.js.map +1 -1
  22. package/build/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js +3 -2
  23. package/build/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js.map +1 -1
  24. package/build/components/global-styles/font-library-modal/installed-fonts.js +1 -1
  25. package/build/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
  26. package/build/components/global-styles/font-library-modal/upload-fonts.js +44 -10
  27. package/build/components/global-styles/font-library-modal/upload-fonts.js.map +1 -1
  28. package/build/components/global-styles/font-library-modal/utils/index.js +22 -4
  29. package/build/components/global-styles/font-library-modal/utils/index.js.map +1 -1
  30. package/build/components/global-styles/font-library-modal/utils/preview-styles.js +3 -0
  31. package/build/components/global-styles/font-library-modal/utils/preview-styles.js.map +1 -1
  32. package/build/components/global-styles/header.js +1 -1
  33. package/build/components/global-styles/header.js.map +1 -1
  34. package/build/components/global-styles/hooks.js +50 -1
  35. package/build/components/global-styles/hooks.js.map +1 -1
  36. package/build/components/global-styles/palette.js +3 -1
  37. package/build/components/global-styles/palette.js.map +1 -1
  38. package/build/components/global-styles/preview-colors.js +2 -2
  39. package/build/components/global-styles/preview-colors.js.map +1 -1
  40. package/build/components/global-styles/preview-iframe.js +0 -1
  41. package/build/components/global-styles/preview-iframe.js.map +1 -1
  42. package/build/components/global-styles/preview-styles.js +2 -2
  43. package/build/components/global-styles/preview-styles.js.map +1 -1
  44. package/build/components/global-styles/root-menu.js +8 -2
  45. package/build/components/global-styles/root-menu.js.map +1 -1
  46. package/build/components/global-styles/screen-background.js +34 -0
  47. package/build/components/global-styles/screen-background.js.map +1 -0
  48. package/build/components/global-styles/screen-color-palette.js +2 -2
  49. package/build/components/global-styles/screen-color-palette.js.map +1 -1
  50. package/build/components/global-styles/screen-colors.js +5 -10
  51. package/build/components/global-styles/screen-colors.js.map +1 -1
  52. package/build/components/global-styles/screen-style-variations.js +3 -37
  53. package/build/components/global-styles/screen-style-variations.js.map +1 -1
  54. package/build/components/global-styles/screen-typography.js +6 -11
  55. package/build/components/global-styles/screen-typography.js.map +1 -1
  56. package/build/components/global-styles/style-variations-container.js +5 -2
  57. package/build/components/global-styles/style-variations-container.js.map +1 -1
  58. package/build/components/global-styles/typography-elements.js +3 -1
  59. package/build/components/global-styles/typography-elements.js.map +1 -1
  60. package/build/components/global-styles/{preview-typography.js → typography-example.js} +4 -2
  61. package/build/components/global-styles/typography-example.js.map +1 -0
  62. package/build/components/global-styles/typography-preview.js +3 -1
  63. package/build/components/global-styles/typography-preview.js.map +1 -1
  64. package/build/components/global-styles/ui.js +4 -1
  65. package/build/components/global-styles/ui.js.map +1 -1
  66. package/build/components/global-styles/utils.js +1 -1
  67. package/build/components/global-styles/utils.js.map +1 -1
  68. package/build/components/global-styles/variations/variations-color.js +13 -7
  69. package/build/components/global-styles/variations/variations-color.js.map +1 -1
  70. package/build/components/global-styles/variations/variations-typography.js +34 -37
  71. package/build/components/global-styles/variations/variations-typography.js.map +1 -1
  72. package/build/components/header-edit-mode/index.js +2 -1
  73. package/build/components/header-edit-mode/index.js.map +1 -1
  74. package/build/components/keyboard-shortcut-help-modal/config.js +6 -0
  75. package/build/components/keyboard-shortcut-help-modal/config.js.map +1 -1
  76. package/build/components/keyboard-shortcut-help-modal/index.js +3 -0
  77. package/build/components/keyboard-shortcut-help-modal/index.js.map +1 -1
  78. package/build/components/keyboard-shortcuts/global.js +17 -3
  79. package/build/components/keyboard-shortcuts/global.js.map +1 -1
  80. package/build/components/layout/animation.js +129 -0
  81. package/build/components/layout/animation.js.map +1 -0
  82. package/build/components/layout/index.js +9 -17
  83. package/build/components/layout/index.js.map +1 -1
  84. package/build/components/layout/router.js +22 -22
  85. package/build/components/layout/router.js.map +1 -1
  86. package/build/components/page-pages/index.js +24 -27
  87. package/build/components/page-pages/index.js.map +1 -1
  88. package/build/components/page-patterns/delete-category-menu-item.js +6 -1
  89. package/build/components/page-patterns/delete-category-menu-item.js.map +1 -1
  90. package/build/components/page-patterns/index.js +19 -32
  91. package/build/components/page-patterns/index.js.map +1 -1
  92. package/build/components/page-patterns/search-items.js +16 -58
  93. package/build/components/page-patterns/search-items.js.map +1 -1
  94. package/build/components/page-patterns/use-patterns.js +9 -9
  95. package/build/components/page-patterns/use-patterns.js.map +1 -1
  96. package/build/components/page-templates-template-parts/actions.js +54 -41
  97. package/build/components/page-templates-template-parts/actions.js.map +1 -1
  98. package/build/components/page-templates-template-parts/index.js +31 -69
  99. package/build/components/page-templates-template-parts/index.js.map +1 -1
  100. package/build/components/plugin-template-setting-panel/index.js +12 -1
  101. package/build/components/plugin-template-setting-panel/index.js.map +1 -1
  102. package/build/components/save-button/index.js +45 -16
  103. package/build/components/save-button/index.js.map +1 -1
  104. package/build/components/save-hub/index.js +8 -112
  105. package/build/components/save-hub/index.js.map +1 -1
  106. package/build/components/save-panel/index.js +14 -9
  107. package/build/components/save-panel/index.js.map +1 -1
  108. package/build/components/sidebar/index.js +3 -8
  109. package/build/components/sidebar/index.js.map +1 -1
  110. package/build/components/sidebar-dataviews/custom-dataviews-list.js +2 -2
  111. package/build/components/sidebar-dataviews/custom-dataviews-list.js.map +1 -1
  112. package/build/components/sidebar-dataviews/dataview-item.js +2 -2
  113. package/build/components/sidebar-dataviews/dataview-item.js.map +1 -1
  114. package/build/components/sidebar-dataviews/default-views.js +3 -3
  115. package/build/components/sidebar-dataviews/default-views.js.map +1 -1
  116. package/build/components/sidebar-dataviews/index.js +5 -4
  117. package/build/components/sidebar-dataviews/index.js.map +1 -1
  118. package/build/components/sidebar-edit-mode/index.js +1 -2
  119. package/build/components/sidebar-edit-mode/index.js.map +1 -1
  120. package/build/components/sidebar-edit-mode/page-panels/index.js +7 -17
  121. package/build/components/sidebar-edit-mode/page-panels/index.js.map +1 -1
  122. package/build/components/sidebar-edit-mode/page-panels/page-content.js +7 -5
  123. package/build/components/sidebar-edit-mode/page-panels/page-content.js.map +1 -1
  124. package/build/components/sidebar-edit-mode/page-panels/page-summary.js +3 -1
  125. package/build/components/sidebar-edit-mode/page-panels/page-summary.js.map +1 -1
  126. package/build/components/sidebar-edit-mode/template-panel/index.js +32 -18
  127. package/build/components/sidebar-edit-mode/template-panel/index.js.map +1 -1
  128. package/build/components/sidebar-navigation-screen-details-footer/index.js +5 -1
  129. package/build/components/sidebar-navigation-screen-details-footer/index.js.map +1 -1
  130. package/build/components/sidebar-navigation-screen-global-styles/index.js +18 -1
  131. package/build/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
  132. package/build/components/sidebar-navigation-screen-navigation-menu/{delete-modal.js → delete-confirm-dialog.js} +4 -5
  133. package/build/components/sidebar-navigation-screen-navigation-menu/delete-confirm-dialog.js.map +1 -0
  134. package/build/components/sidebar-navigation-screen-navigation-menu/more-menu.js +6 -6
  135. package/build/components/sidebar-navigation-screen-navigation-menu/more-menu.js.map +1 -1
  136. package/build/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js +1 -1
  137. package/build/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js.map +1 -1
  138. package/build/components/sidebar-navigation-screen-patterns/index.js +1 -5
  139. package/build/components/sidebar-navigation-screen-patterns/index.js.map +1 -1
  140. package/build/components/sidebar-navigation-screen-template/index.js +5 -1
  141. package/build/components/sidebar-navigation-screen-template/index.js.map +1 -1
  142. package/build/components/sidebar-navigation-screen-templates-browse/content.js +2 -2
  143. package/build/components/sidebar-navigation-screen-templates-browse/content.js.map +1 -1
  144. package/build/components/style-book/index.js +1 -1
  145. package/build/components/style-book/index.js.map +1 -1
  146. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js +3 -3
  147. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  148. package/build/components/sync-state-with-url/use-sync-path-with-url.js +1 -11
  149. package/build/components/sync-state-with-url/use-sync-path-with-url.js.map +1 -1
  150. package/build/components/template-actions/index.js +44 -27
  151. package/build/components/template-actions/index.js.map +1 -1
  152. package/build/components/welcome-guide/editor.js +11 -2
  153. package/build/components/welcome-guide/editor.js.map +1 -1
  154. package/build/hooks/index.js +0 -1
  155. package/build/hooks/index.js.map +1 -1
  156. package/build/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js +15 -2
  157. package/build/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js.map +1 -1
  158. package/build/store/selectors.js +1 -9
  159. package/build/store/selectors.js.map +1 -1
  160. package/build/utils/constants.js +5 -3
  161. package/build/utils/constants.js.map +1 -1
  162. package/build/utils/get-is-list-page.js +1 -1
  163. package/build/utils/get-is-list-page.js.map +1 -1
  164. package/build/utils/math.js +98 -0
  165. package/build/utils/math.js.map +1 -0
  166. package/build-module/components/block-editor/editor-canvas.js +24 -4
  167. package/build-module/components/block-editor/editor-canvas.js.map +1 -1
  168. package/build-module/components/block-editor/site-editor-canvas.js +15 -4
  169. package/build-module/components/block-editor/site-editor-canvas.js.map +1 -1
  170. package/build-module/components/block-editor/use-site-editor-settings.js +1 -1
  171. package/build-module/components/block-editor/use-site-editor-settings.js.map +1 -1
  172. package/build-module/components/editor/index.js +13 -4
  173. package/build-module/components/editor/index.js.map +1 -1
  174. package/build-module/components/editor-canvas-container/index.js +1 -2
  175. package/build-module/components/editor-canvas-container/index.js.map +1 -1
  176. package/build-module/components/global-styles/background-panel.js +31 -0
  177. package/build-module/components/global-styles/background-panel.js.map +1 -0
  178. package/build-module/components/global-styles/color-palette-panel.js +0 -8
  179. package/build-module/components/global-styles/color-palette-panel.js.map +1 -1
  180. package/build-module/components/global-styles/font-families.js +1 -1
  181. package/build-module/components/global-styles/font-families.js.map +1 -1
  182. package/build-module/components/global-styles/font-library-modal/context.js +54 -18
  183. package/build-module/components/global-styles/font-library-modal/context.js.map +1 -1
  184. package/build-module/components/global-styles/font-library-modal/font-collection.js +4 -3
  185. package/build-module/components/global-styles/font-library-modal/font-collection.js.map +1 -1
  186. package/build-module/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js +4 -3
  187. package/build-module/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js.map +1 -1
  188. package/build-module/components/global-styles/font-library-modal/installed-fonts.js +1 -1
  189. package/build-module/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
  190. package/build-module/components/global-styles/font-library-modal/upload-fonts.js +44 -10
  191. package/build-module/components/global-styles/font-library-modal/upload-fonts.js.map +1 -1
  192. package/build-module/components/global-styles/font-library-modal/utils/index.js +22 -4
  193. package/build-module/components/global-styles/font-library-modal/utils/index.js.map +1 -1
  194. package/build-module/components/global-styles/font-library-modal/utils/preview-styles.js +3 -0
  195. package/build-module/components/global-styles/font-library-modal/utils/preview-styles.js.map +1 -1
  196. package/build-module/components/global-styles/header.js +1 -1
  197. package/build-module/components/global-styles/header.js.map +1 -1
  198. package/build-module/components/global-styles/hooks.js +48 -1
  199. package/build-module/components/global-styles/hooks.js.map +1 -1
  200. package/build-module/components/global-styles/palette.js +3 -1
  201. package/build-module/components/global-styles/palette.js.map +1 -1
  202. package/build-module/components/global-styles/preview-colors.js +2 -2
  203. package/build-module/components/global-styles/preview-colors.js.map +1 -1
  204. package/build-module/components/global-styles/preview-iframe.js +0 -1
  205. package/build-module/components/global-styles/preview-iframe.js.map +1 -1
  206. package/build-module/components/global-styles/preview-styles.js +2 -2
  207. package/build-module/components/global-styles/preview-styles.js.map +1 -1
  208. package/build-module/components/global-styles/root-menu.js +9 -3
  209. package/build-module/components/global-styles/root-menu.js.map +1 -1
  210. package/build-module/components/global-styles/screen-background.js +26 -0
  211. package/build-module/components/global-styles/screen-background.js.map +1 -0
  212. package/build-module/components/global-styles/screen-color-palette.js +2 -2
  213. package/build-module/components/global-styles/screen-color-palette.js.map +1 -1
  214. package/build-module/components/global-styles/screen-colors.js +5 -10
  215. package/build-module/components/global-styles/screen-colors.js.map +1 -1
  216. package/build-module/components/global-styles/screen-style-variations.js +4 -38
  217. package/build-module/components/global-styles/screen-style-variations.js.map +1 -1
  218. package/build-module/components/global-styles/screen-typography.js +6 -11
  219. package/build-module/components/global-styles/screen-typography.js.map +1 -1
  220. package/build-module/components/global-styles/style-variations-container.js +5 -2
  221. package/build-module/components/global-styles/style-variations-container.js.map +1 -1
  222. package/build-module/components/global-styles/typography-elements.js +3 -1
  223. package/build-module/components/global-styles/typography-elements.js.map +1 -1
  224. package/build-module/components/global-styles/{preview-typography.js → typography-example.js} +4 -2
  225. package/build-module/components/global-styles/typography-example.js.map +1 -0
  226. package/build-module/components/global-styles/typography-preview.js +3 -1
  227. package/build-module/components/global-styles/typography-preview.js.map +1 -1
  228. package/build-module/components/global-styles/ui.js +4 -1
  229. package/build-module/components/global-styles/ui.js.map +1 -1
  230. package/build-module/components/global-styles/utils.js +1 -1
  231. package/build-module/components/global-styles/utils.js.map +1 -1
  232. package/build-module/components/global-styles/variations/variations-color.js +13 -7
  233. package/build-module/components/global-styles/variations/variations-color.js.map +1 -1
  234. package/build-module/components/global-styles/variations/variations-typography.js +35 -38
  235. package/build-module/components/global-styles/variations/variations-typography.js.map +1 -1
  236. package/build-module/components/header-edit-mode/index.js +2 -1
  237. package/build-module/components/header-edit-mode/index.js.map +1 -1
  238. package/build-module/components/keyboard-shortcut-help-modal/config.js +6 -0
  239. package/build-module/components/keyboard-shortcut-help-modal/config.js.map +1 -1
  240. package/build-module/components/keyboard-shortcut-help-modal/index.js +3 -0
  241. package/build-module/components/keyboard-shortcut-help-modal/index.js.map +1 -1
  242. package/build-module/components/keyboard-shortcuts/global.js +17 -3
  243. package/build-module/components/keyboard-shortcuts/global.js.map +1 -1
  244. package/build-module/components/layout/animation.js +122 -0
  245. package/build-module/components/layout/animation.js.map +1 -0
  246. package/build-module/components/layout/index.js +9 -17
  247. package/build-module/components/layout/index.js.map +1 -1
  248. package/build-module/components/layout/router.js +22 -22
  249. package/build-module/components/layout/router.js.map +1 -1
  250. package/build-module/components/page-pages/index.js +25 -28
  251. package/build-module/components/page-pages/index.js.map +1 -1
  252. package/build-module/components/page-patterns/delete-category-menu-item.js +6 -1
  253. package/build-module/components/page-patterns/delete-category-menu-item.js.map +1 -1
  254. package/build-module/components/page-patterns/index.js +21 -34
  255. package/build-module/components/page-patterns/index.js.map +1 -1
  256. package/build-module/components/page-patterns/search-items.js +14 -55
  257. package/build-module/components/page-patterns/search-items.js.map +1 -1
  258. package/build-module/components/page-patterns/use-patterns.js +9 -9
  259. package/build-module/components/page-patterns/use-patterns.js.map +1 -1
  260. package/build-module/components/page-templates-template-parts/actions.js +54 -40
  261. package/build-module/components/page-templates-template-parts/actions.js.map +1 -1
  262. package/build-module/components/page-templates-template-parts/index.js +34 -72
  263. package/build-module/components/page-templates-template-parts/index.js.map +1 -1
  264. package/build-module/components/plugin-template-setting-panel/index.js +12 -1
  265. package/build-module/components/plugin-template-setting-panel/index.js.map +1 -1
  266. package/build-module/components/save-button/index.js +46 -17
  267. package/build-module/components/save-button/index.js.map +1 -1
  268. package/build-module/components/save-hub/index.js +10 -114
  269. package/build-module/components/save-hub/index.js.map +1 -1
  270. package/build-module/components/save-panel/index.js +14 -9
  271. package/build-module/components/save-panel/index.js.map +1 -1
  272. package/build-module/components/sidebar/index.js +3 -8
  273. package/build-module/components/sidebar/index.js.map +1 -1
  274. package/build-module/components/sidebar-dataviews/custom-dataviews-list.js +2 -2
  275. package/build-module/components/sidebar-dataviews/custom-dataviews-list.js.map +1 -1
  276. package/build-module/components/sidebar-dataviews/dataview-item.js +2 -2
  277. package/build-module/components/sidebar-dataviews/dataview-item.js.map +1 -1
  278. package/build-module/components/sidebar-dataviews/default-views.js +4 -4
  279. package/build-module/components/sidebar-dataviews/default-views.js.map +1 -1
  280. package/build-module/components/sidebar-dataviews/index.js +5 -4
  281. package/build-module/components/sidebar-dataviews/index.js.map +1 -1
  282. package/build-module/components/sidebar-edit-mode/index.js +1 -2
  283. package/build-module/components/sidebar-edit-mode/index.js.map +1 -1
  284. package/build-module/components/sidebar-edit-mode/page-panels/index.js +10 -20
  285. package/build-module/components/sidebar-edit-mode/page-panels/index.js.map +1 -1
  286. package/build-module/components/sidebar-edit-mode/page-panels/page-content.js +7 -5
  287. package/build-module/components/sidebar-edit-mode/page-panels/page-content.js.map +1 -1
  288. package/build-module/components/sidebar-edit-mode/page-panels/page-summary.js +4 -2
  289. package/build-module/components/sidebar-edit-mode/page-panels/page-summary.js.map +1 -1
  290. package/build-module/components/sidebar-edit-mode/template-panel/index.js +33 -19
  291. package/build-module/components/sidebar-edit-mode/template-panel/index.js.map +1 -1
  292. package/build-module/components/sidebar-navigation-screen-details-footer/index.js +5 -1
  293. package/build-module/components/sidebar-navigation-screen-details-footer/index.js.map +1 -1
  294. package/build-module/components/sidebar-navigation-screen-global-styles/index.js +19 -2
  295. package/build-module/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
  296. package/build-module/components/sidebar-navigation-screen-navigation-menu/{delete-modal.js → delete-confirm-dialog.js} +3 -4
  297. package/build-module/components/sidebar-navigation-screen-navigation-menu/delete-confirm-dialog.js.map +1 -0
  298. package/build-module/components/sidebar-navigation-screen-navigation-menu/more-menu.js +6 -6
  299. package/build-module/components/sidebar-navigation-screen-navigation-menu/more-menu.js.map +1 -1
  300. package/build-module/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js +1 -1
  301. package/build-module/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js.map +1 -1
  302. package/build-module/components/sidebar-navigation-screen-patterns/index.js +1 -5
  303. package/build-module/components/sidebar-navigation-screen-patterns/index.js.map +1 -1
  304. package/build-module/components/sidebar-navigation-screen-template/index.js +5 -1
  305. package/build-module/components/sidebar-navigation-screen-template/index.js.map +1 -1
  306. package/build-module/components/sidebar-navigation-screen-templates-browse/content.js +2 -2
  307. package/build-module/components/sidebar-navigation-screen-templates-browse/content.js.map +1 -1
  308. package/build-module/components/style-book/index.js +1 -1
  309. package/build-module/components/style-book/index.js.map +1 -1
  310. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js +3 -3
  311. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  312. package/build-module/components/sync-state-with-url/use-sync-path-with-url.js +1 -11
  313. package/build-module/components/sync-state-with-url/use-sync-path-with-url.js.map +1 -1
  314. package/build-module/components/template-actions/index.js +44 -27
  315. package/build-module/components/template-actions/index.js.map +1 -1
  316. package/build-module/components/welcome-guide/editor.js +11 -2
  317. package/build-module/components/welcome-guide/editor.js.map +1 -1
  318. package/build-module/hooks/index.js +0 -1
  319. package/build-module/hooks/index.js.map +1 -1
  320. package/build-module/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js +15 -2
  321. package/build-module/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js.map +1 -1
  322. package/build-module/store/selectors.js +1 -9
  323. package/build-module/store/selectors.js.map +1 -1
  324. package/build-module/utils/constants.js +4 -2
  325. package/build-module/utils/constants.js.map +1 -1
  326. package/build-module/utils/get-is-list-page.js +1 -1
  327. package/build-module/utils/get-is-list-page.js.map +1 -1
  328. package/build-module/utils/math.js +92 -0
  329. package/build-module/utils/math.js.map +1 -0
  330. package/build-style/style-rtl.css +146 -130
  331. package/build-style/style.css +146 -130
  332. package/package.json +44 -44
  333. package/src/components/block-editor/editor-canvas.js +34 -9
  334. package/src/components/block-editor/site-editor-canvas.js +10 -7
  335. package/src/components/block-editor/use-site-editor-settings.js +0 -2
  336. package/src/components/editor/index.js +11 -4
  337. package/src/components/editor-canvas-container/index.js +0 -1
  338. package/src/components/global-styles/background-panel.js +34 -0
  339. package/src/components/global-styles/color-palette-panel.js +0 -11
  340. package/src/components/global-styles/font-families.js +1 -1
  341. package/src/components/global-styles/font-library-modal/context.js +77 -31
  342. package/src/components/global-styles/font-library-modal/font-collection.js +4 -3
  343. package/src/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js +9 -2
  344. package/src/components/global-styles/font-library-modal/installed-fonts.js +1 -1
  345. package/src/components/global-styles/font-library-modal/style.scss +15 -6
  346. package/src/components/global-styles/font-library-modal/upload-fonts.js +53 -8
  347. package/src/components/global-styles/font-library-modal/utils/index.js +21 -8
  348. package/src/components/global-styles/font-library-modal/utils/preview-styles.js +4 -0
  349. package/src/components/global-styles/header.js +1 -1
  350. package/src/components/global-styles/hooks.js +68 -1
  351. package/src/components/global-styles/palette.js +3 -1
  352. package/src/components/global-styles/preview-colors.js +2 -2
  353. package/src/components/global-styles/preview-iframe.js +0 -1
  354. package/src/components/global-styles/preview-styles.js +2 -2
  355. package/src/components/global-styles/root-menu.js +12 -1
  356. package/src/components/global-styles/screen-background.js +29 -0
  357. package/src/components/global-styles/screen-color-palette.js +2 -2
  358. package/src/components/global-styles/screen-colors.js +4 -15
  359. package/src/components/global-styles/screen-style-variations.js +4 -36
  360. package/src/components/global-styles/screen-typography.js +6 -20
  361. package/src/components/global-styles/style-variations-container.js +2 -1
  362. package/src/components/global-styles/style.scss +15 -10
  363. package/src/components/global-styles/typography-elements.js +5 -1
  364. package/src/components/global-styles/{preview-typography.js → typography-example.js} +3 -1
  365. package/src/components/global-styles/typography-preview.js +3 -1
  366. package/src/components/global-styles/ui.js +5 -0
  367. package/src/components/global-styles/utils.js +1 -1
  368. package/src/components/global-styles/variations/style.scss +32 -23
  369. package/src/components/global-styles/variations/variations-color.js +12 -6
  370. package/src/components/global-styles/variations/variations-typography.js +41 -60
  371. package/src/components/header-edit-mode/index.js +1 -0
  372. package/src/components/header-edit-mode/style.scss +28 -17
  373. package/src/components/keyboard-shortcut-help-modal/config.js +4 -0
  374. package/src/components/keyboard-shortcut-help-modal/index.js +4 -0
  375. package/src/components/keyboard-shortcuts/global.js +16 -4
  376. package/src/components/layout/animation.js +122 -0
  377. package/src/components/layout/index.js +12 -27
  378. package/src/components/layout/router.js +26 -25
  379. package/src/components/layout/style.scss +2 -0
  380. package/src/components/page-pages/index.js +33 -54
  381. package/src/components/page-patterns/delete-category-menu-item.js +7 -0
  382. package/src/components/page-patterns/index.js +22 -31
  383. package/src/components/page-patterns/search-items.js +13 -58
  384. package/src/components/page-patterns/use-patterns.js +17 -10
  385. package/src/components/page-templates-template-parts/actions.js +106 -91
  386. package/src/components/page-templates-template-parts/index.js +41 -93
  387. package/src/components/page-templates-template-parts/style.scss +5 -0
  388. package/src/components/plugin-template-setting-panel/index.js +14 -1
  389. package/src/components/save-button/index.js +55 -26
  390. package/src/components/save-hub/index.js +20 -164
  391. package/src/components/save-panel/index.js +24 -17
  392. package/src/components/sidebar/index.js +2 -8
  393. package/src/components/sidebar-dataviews/custom-dataviews-list.js +2 -2
  394. package/src/components/sidebar-dataviews/dataview-item.js +2 -2
  395. package/src/components/sidebar-dataviews/default-views.js +12 -4
  396. package/src/components/sidebar-dataviews/index.js +5 -4
  397. package/src/components/sidebar-edit-mode/index.js +0 -2
  398. package/src/components/sidebar-edit-mode/page-panels/index.js +31 -62
  399. package/src/components/sidebar-edit-mode/page-panels/page-content.js +10 -10
  400. package/src/components/sidebar-edit-mode/page-panels/page-summary.js +2 -0
  401. package/src/components/sidebar-edit-mode/template-panel/index.js +33 -24
  402. package/src/components/sidebar-edit-mode/template-panel/style.scss +1 -29
  403. package/src/components/sidebar-navigation-screen/style.scss +21 -9
  404. package/src/components/sidebar-navigation-screen-details-footer/index.js +6 -2
  405. package/src/components/sidebar-navigation-screen-global-styles/index.js +29 -2
  406. package/src/components/sidebar-navigation-screen-navigation-menu/{delete-modal.js → delete-confirm-dialog.js} +2 -3
  407. package/src/components/sidebar-navigation-screen-navigation-menu/more-menu.js +11 -9
  408. package/src/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js +6 -3
  409. package/src/components/sidebar-navigation-screen-patterns/index.js +0 -7
  410. package/src/components/sidebar-navigation-screen-template/index.js +6 -1
  411. package/src/components/sidebar-navigation-screen-templates-browse/content.js +2 -2
  412. package/src/components/style-book/index.js +1 -3
  413. package/src/components/sync-state-with-url/use-init-edited-entity-from-url.js +3 -3
  414. package/src/components/sync-state-with-url/use-sync-path-with-url.js +3 -19
  415. package/src/components/template-actions/index.js +63 -46
  416. package/src/components/welcome-guide/editor.js +9 -6
  417. package/src/hooks/index.js +0 -1
  418. package/src/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js +21 -4
  419. package/src/store/selectors.js +3 -15
  420. package/src/style.scss +0 -2
  421. package/src/utils/constants.js +4 -2
  422. package/src/utils/get-is-list-page.js +1 -1
  423. package/src/utils/math.js +93 -0
  424. package/build/components/actions/index.js +0 -321
  425. package/build/components/actions/index.js.map +0 -1
  426. package/build/components/global-styles/preview-typography.js.map +0 -1
  427. package/build/components/sidebar-edit-mode/sidebar-card/index.js +0 -42
  428. package/build/components/sidebar-edit-mode/sidebar-card/index.js.map +0 -1
  429. package/build/components/sidebar-edit-mode/template-panel/template-actions.js +0 -50
  430. package/build/components/sidebar-edit-mode/template-panel/template-actions.js.map +0 -1
  431. package/build/components/sidebar-edit-mode/template-panel/template-areas.js +0 -70
  432. package/build/components/sidebar-edit-mode/template-panel/template-areas.js.map +0 -1
  433. package/build/components/sidebar-navigation-screen-navigation-menu/delete-modal.js.map +0 -1
  434. package/build/components/sidebar-navigation-screen-pages/index.js +0 -175
  435. package/build/components/sidebar-navigation-screen-pages/index.js.map +0 -1
  436. package/build/components/sidebar-navigation-screen-templates/index.js +0 -132
  437. package/build/components/sidebar-navigation-screen-templates/index.js.map +0 -1
  438. package/build/hooks/template-part-edit.js +0 -82
  439. package/build/hooks/template-part-edit.js.map +0 -1
  440. package/build/store/utils.js +0 -71
  441. package/build/store/utils.js.map +0 -1
  442. package/build-module/components/actions/index.js +0 -310
  443. package/build-module/components/actions/index.js.map +0 -1
  444. package/build-module/components/global-styles/preview-typography.js.map +0 -1
  445. package/build-module/components/sidebar-edit-mode/sidebar-card/index.js +0 -34
  446. package/build-module/components/sidebar-edit-mode/sidebar-card/index.js.map +0 -1
  447. package/build-module/components/sidebar-edit-mode/template-panel/template-actions.js +0 -42
  448. package/build-module/components/sidebar-edit-mode/template-panel/template-actions.js.map +0 -1
  449. package/build-module/components/sidebar-edit-mode/template-panel/template-areas.js +0 -63
  450. package/build-module/components/sidebar-edit-mode/template-panel/template-areas.js.map +0 -1
  451. package/build-module/components/sidebar-navigation-screen-navigation-menu/delete-modal.js.map +0 -1
  452. package/build-module/components/sidebar-navigation-screen-pages/index.js +0 -167
  453. package/build-module/components/sidebar-navigation-screen-pages/index.js.map +0 -1
  454. package/build-module/components/sidebar-navigation-screen-templates/index.js +0 -124
  455. package/build-module/components/sidebar-navigation-screen-templates/index.js.map +0 -1
  456. package/build-module/hooks/template-part-edit.js +0 -75
  457. package/build-module/hooks/template-part-edit.js.map +0 -1
  458. package/build-module/store/utils.js +0 -64
  459. package/build-module/store/utils.js.map +0 -1
  460. package/src/components/actions/index.js +0 -411
  461. package/src/components/sidebar-edit-mode/sidebar-card/index.js +0 -34
  462. package/src/components/sidebar-edit-mode/sidebar-card/style.scss +0 -37
  463. package/src/components/sidebar-edit-mode/template-panel/template-actions.js +0 -49
  464. package/src/components/sidebar-edit-mode/template-panel/template-areas.js +0 -86
  465. package/src/components/sidebar-navigation-screen-pages/index.js +0 -238
  466. package/src/components/sidebar-navigation-screen-templates/index.js +0 -156
  467. package/src/components/sidebar-navigation-screen-templates/style.scss +0 -9
  468. package/src/hooks/template-part-edit.js +0 -89
  469. package/src/store/test/utils.js +0 -191
  470. package/src/store/utils.js +0 -69
@@ -5,40 +5,49 @@
5
5
  cursor: pointer;
6
6
 
7
7
  .edit-site-global-styles-variations_item-preview {
8
- padding: $border-width * 2;
9
8
  border-radius: $radius-block-ui;
10
- box-shadow: 0 0 0 $border-width $gray-200;
11
9
  // Shown in Windows 10 high contrast mode.
12
10
  outline: 1px solid transparent;
11
+ position: relative;
12
+ // Add the same transition that block style variations and other buttons have.
13
+ transition: box-shadow 0.1s linear;
14
+ @include reduce-motion("transition");
15
+
16
+ &::after {
17
+ content: "";
18
+ position: absolute;
19
+ top: -$border-width;
20
+ left: -$border-width;
21
+ bottom: -$border-width;
22
+ right: -$border-width;
23
+ // Visually resembles the $radius-block-ui.
24
+ border-radius: $radius-block-ui + $border-width;
25
+ box-shadow: inset 0 0 0 $border-width rgba(0, 0, 0, 0.2);
26
+ // Show a thin outline in Windows high contrast mode, otherwise the button is invisible.
27
+ border: $border-width solid transparent;
28
+ box-sizing: inherit;
29
+ // Add the same transition that block style variations and other buttons have.
30
+ transition: box-shadow 0.1s linear;
31
+ @include reduce-motion("transition");
32
+ }
13
33
 
14
34
  .edit-site-global-styles-color-variations & {
15
35
  padding: $grid-unit-10;
16
36
  }
17
37
  }
18
38
 
19
- &.is-active .edit-site-global-styles-variations_item-preview {
20
- box-shadow: 0 0 0 $border-width $gray-900;
21
- // Shown in Windows 10 high contrast mode.
22
- outline-width: 3px;
39
+ &:not(.is-active):hover .edit-site-global-styles-variations_item-preview::after {
40
+ box-shadow: inset 0 0 0 $border-width rgba(0, 0, 0, 0.4);
23
41
  }
24
42
 
25
- &:hover .edit-site-global-styles-variations_item-preview {
26
- box-shadow: 0 0 0 $border-width var(--wp-admin-theme-color);
27
- }
28
-
29
- &:focus .edit-site-global-styles-variations_item-preview {
30
- box-shadow: 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);
31
- }
32
-
33
- &:focus-visible {
43
+ &.is-active .edit-site-global-styles-variations_item-preview,
44
+ &:focus-visible .edit-site-global-styles-variations_item-preview {
45
+ box-shadow: inset 0 0 0 $border-width $white, 0 0 0 var(--wp-admin-border-width-focus) $gray-900;
34
46
  // Shown in Windows 10 high contrast mode.
35
- outline: 3px solid transparent;
36
- outline-offset: 0;
37
- }
38
- }
47
+ outline-width: 3px;
39
48
 
40
- .edit-site-global-styles_preview-typography {
41
- font-size: 22px;
42
- line-height: 44px;
43
- text-align: center;
49
+ &::after {
50
+ box-shadow: inset 0 0 0 1px $white;
51
+ }
52
+ }
44
53
  }
@@ -5,21 +5,27 @@ import {
5
5
  __experimentalGrid as Grid,
6
6
  __experimentalVStack as VStack,
7
7
  } from '@wordpress/components';
8
- import { __ } from '@wordpress/i18n';
9
8
 
10
9
  /**
11
10
  * Internal dependencies
12
11
  */
13
- import Subtitle from '../subtitle';
14
12
  import Variation from './variation';
15
13
  import StylesPreviewColors from '../preview-colors';
14
+ import { useColorVariations } from '../hooks';
15
+ import Subtitle from '../subtitle';
16
+
17
+ export default function ColorVariations( { title, gap = 2 } ) {
18
+ const colorVariations = useColorVariations();
19
+
20
+ if ( ! colorVariations?.length ) {
21
+ return null;
22
+ }
16
23
 
17
- export default function ColorVariations( { variations } ) {
18
24
  return (
19
25
  <VStack spacing={ 3 }>
20
- <Subtitle level={ 3 }>{ __( 'Presets' ) }</Subtitle>
21
- <Grid columns={ 3 }>
22
- { variations.map( ( variation, index ) => (
26
+ { title && <Subtitle level={ 3 }>{ title }</Subtitle> }
27
+ <Grid columns={ 3 } gap={ gap }>
28
+ { colorVariations.map( ( variation, index ) => (
23
29
  <Variation key={ index } variation={ variation }>
24
30
  { () => <StylesPreviewColors /> }
25
31
  </Variation>
@@ -1,84 +1,65 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { useContext } from '@wordpress/element';
5
4
  import {
6
5
  __experimentalGrid as Grid,
6
+ __experimentalVStack as HStack,
7
7
  __experimentalVStack as VStack,
8
8
  } from '@wordpress/components';
9
- import { __ } from '@wordpress/i18n';
10
- import { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';
11
9
 
12
10
  /**
13
11
  * Internal dependencies
14
12
  */
15
- import { mergeBaseAndUserConfigs } from '../global-styles-provider';
16
- import { unlock } from '../../../lock-unlock';
17
- import { useCurrentMergeThemeStyleVariationsWithUserConfig } from '../../../hooks/use-theme-style-variations/use-theme-style-variations-by-property';
18
- import PreviewTypography from '../preview-typography';
19
- import Subtitle from '../subtitle';
20
- import { getFontFamilies } from '../utils';
13
+ import { useTypographyVariations } from '../hooks';
14
+ import TypographyExample from '../typography-example';
15
+ import PreviewIframe from '../preview-iframe';
21
16
  import Variation from './variation';
17
+ import Subtitle from '../subtitle';
22
18
 
23
- const { GlobalStylesContext } = unlock( blockEditorPrivateApis );
24
-
25
- export default function TypographyVariations() {
26
- const typographyVariations =
27
- useCurrentMergeThemeStyleVariationsWithUserConfig( {
28
- property: 'typography',
29
- filter: ( variation ) =>
30
- variation?.settings?.typography?.fontFamilies &&
31
- Object.keys( variation?.settings?.typography?.fontFamilies )
32
- .length,
33
- } );
34
-
35
- const { base } = useContext( GlobalStylesContext );
36
-
37
- /*
38
- * Filter duplicate variations based on the font families used in the variation.
39
- */
40
- const uniqueTypographyVariations = typographyVariations?.length
41
- ? Object.values(
42
- typographyVariations.reduce( ( acc, variation ) => {
43
- const [ bodyFontFamily, headingFontFamily ] =
44
- getFontFamilies(
45
- mergeBaseAndUserConfigs( base, variation )
46
- );
47
- if (
48
- headingFontFamily?.name &&
49
- bodyFontFamily?.name &&
50
- ! acc[
51
- `${ headingFontFamily?.name }:${ bodyFontFamily?.name }`
52
- ]
53
- ) {
54
- acc[
55
- `${ headingFontFamily?.name }:${ bodyFontFamily?.name }`
56
- ] = variation;
57
- }
19
+ export default function TypographyVariations( { title, gap = 2 } ) {
20
+ const typographyVariations = useTypographyVariations();
58
21
 
59
- return acc;
60
- }, {} )
61
- )
62
- : [];
22
+ if ( ! typographyVariations?.length ) {
23
+ return null;
24
+ }
63
25
 
64
26
  return (
65
27
  <VStack spacing={ 3 }>
66
- <Subtitle level={ 3 }>{ __( 'Presets' ) }</Subtitle>
28
+ { title && <Subtitle level={ 3 }>{ title }</Subtitle> }
67
29
  <Grid
68
30
  columns={ 3 }
31
+ gap={ gap }
69
32
  className="edit-site-global-styles-style-variations-container"
70
33
  >
71
- { typographyVariations && typographyVariations.length
72
- ? uniqueTypographyVariations.map( ( variation, index ) => (
73
- <Variation key={ index } variation={ variation }>
74
- { () => (
75
- <PreviewTypography
76
- variation={ variation }
77
- />
78
- ) }
79
- </Variation>
80
- ) )
81
- : null }
34
+ { typographyVariations &&
35
+ typographyVariations.length &&
36
+ typographyVariations.map( ( variation, index ) => (
37
+ <Variation key={ index } variation={ variation }>
38
+ { ( isFocused ) => (
39
+ <PreviewIframe
40
+ label={ variation?.title }
41
+ isFocused={ isFocused }
42
+ >
43
+ { ( { ratio, key } ) => (
44
+ <HStack
45
+ key={ key }
46
+ spacing={ 10 * ratio }
47
+ justify="center"
48
+ style={ {
49
+ height: '100%',
50
+ overflow: 'hidden',
51
+ } }
52
+ >
53
+ <TypographyExample
54
+ variation={ variation }
55
+ fontSize={ 85 * ratio }
56
+ />
57
+ </HStack>
58
+ ) }
59
+ </PreviewIframe>
60
+ ) }
61
+ </Variation>
62
+ ) ) }
82
63
  </Grid>
83
64
  </VStack>
84
65
  );
@@ -154,6 +154,7 @@ export default function HeaderEditMode() {
154
154
  ? __( 'Show block tools' )
155
155
  : __( 'Hide block tools' )
156
156
  }
157
+ size="compact"
157
158
  />
158
159
  </>
159
160
  ) }
@@ -1,5 +1,3 @@
1
- $header-toolbar-min-width: 335px;
2
-
3
1
  .edit-site-header-edit-mode {
4
2
  height: $header-height;
5
3
  align-items: center;
@@ -16,46 +14,62 @@ $header-toolbar-min-width: 335px;
16
14
  display: flex;
17
15
  border: none;
18
16
  align-items: center;
17
+ flex-grow: 1;
19
18
  flex-shrink: 2;
20
- // We need this to be overflow hidden so the block toolbar can
21
- // overflow scroll. If the overflow is visible, flexbox allows
22
- // the toolbar to grow outside of the allowed container space.
23
- overflow: hidden;
24
19
  // Take up the full height of the header so the border focus
25
20
  // is visible on toolbar buttons.
26
21
  height: 100%;
27
22
  // Allow focus ring to be fully visible on furthest right button.
28
23
  @include break-medium() {
24
+ // Account for the site hub, which is 60x60px.
25
+ flex-basis: calc(37.5% - 60px);
29
26
  padding-right: 2px;
27
+ // We need this to be overflow hidden so the block toolbar can
28
+ // overflow scroll. If the overflow is visible, flexbox allows
29
+ // the toolbar to grow outside of the allowed container space.
30
+ overflow: hidden;
30
31
  }
31
32
  }
32
33
 
33
34
  .edit-site-header-edit-mode__end {
34
35
  display: flex;
35
36
  justify-content: flex-end;
37
+ height: 100%;
38
+ flex-grow: 1;
39
+ flex-shrink: 1;
40
+
41
+ @include break-medium() {
42
+ flex-basis: 37.5%;
43
+ }
36
44
  }
37
45
 
38
46
  .edit-site-header-edit-mode__center {
39
- display: flex;
40
47
  align-items: center;
41
- height: 100%;
48
+ display: flex;
49
+ flex-basis: 100%;
42
50
  flex-grow: 1;
43
- margin: 0 $grid-unit-20;
51
+ flex-shrink: 2;
52
+ height: 100%;
44
53
  justify-content: center;
54
+
45
55
  // Flex items will, by default, refuse to shrink below a minimum
46
56
  // intrinsic width. In order to shrink this flexbox item, and
47
57
  // subsequently truncate child text, we set an explicit min-width.
48
58
  // See https://dev.w3.org/csswg/css-flexbox/#min-size-auto
49
59
  min-width: 0;
60
+
61
+ @include break-medium() {
62
+ flex-basis: 25%;
63
+ }
50
64
  }
51
65
 
52
66
  }
53
67
 
54
68
  .edit-site-header-edit-mode__toolbar {
55
- display: flex;
56
69
  align-items: center;
57
- padding-left: $grid-unit-20;
70
+ display: flex;
58
71
  gap: $grid-unit-10;
72
+ padding-left: $grid-unit-20;
59
73
 
60
74
  @include break-medium() {
61
75
  padding-left: $grid-unit-50 * 0.5;
@@ -87,12 +101,9 @@ $header-toolbar-min-width: 335px;
87
101
  display: inline-flex;
88
102
  align-items: center;
89
103
  flex-wrap: nowrap;
90
- padding-right: $grid-unit-05;
91
-
92
- @include break-small () {
93
- padding-right: $grid-unit-10;
94
- }
95
-
104
+ // Ensure actions do not press against .edit-site-header-edit-mode__center.
105
+ padding-left: $grid-unit-10;
106
+ padding-right: $grid-unit-10;
96
107
  gap: $grid-unit-10;
97
108
  }
98
109
 
@@ -46,4 +46,8 @@ export const textFormattingShortcuts = [
46
46
  'Convert the current paragraph or heading to a heading of level 1 to 6.'
47
47
  ),
48
48
  },
49
+ {
50
+ keyCombination: { modifier: 'primaryShift', character: 'SPACE' },
51
+ description: __( 'Add non breaking space.' ),
52
+ },
49
53
  ];
@@ -142,6 +142,10 @@ export default function KeyboardShortcutHelpModal() {
142
142
  title={ __( 'Text formatting' ) }
143
143
  shortcuts={ textFormattingShortcuts }
144
144
  />
145
+ <ShortcutCategorySection
146
+ title={ __( 'List View shortcuts' ) }
147
+ categoryName="list-view"
148
+ />
145
149
  </Modal>
146
150
  );
147
151
  }
@@ -4,29 +4,41 @@
4
4
  import { useShortcut } from '@wordpress/keyboard-shortcuts';
5
5
  import { useDispatch, useSelect } from '@wordpress/data';
6
6
  import { store as coreStore } from '@wordpress/core-data';
7
+ import { store as editorStore } from '@wordpress/editor';
7
8
 
8
9
  /**
9
10
  * Internal dependencies
10
11
  */
11
12
  import { store as editSiteStore } from '../../store';
13
+ import { unlock } from '../../lock-unlock';
12
14
 
13
15
  function KeyboardShortcutsGlobal() {
14
16
  const { __experimentalGetDirtyEntityRecords, isSavingEntityRecord } =
15
17
  useSelect( coreStore );
18
+ const { hasNonPostEntityChanges } = useSelect( editorStore );
19
+ const { getCanvasMode } = unlock( useSelect( editSiteStore ) );
16
20
  const { setIsSaveViewOpened } = useDispatch( editSiteStore );
17
21
 
18
22
  useShortcut( 'core/edit-site/save', ( event ) => {
19
23
  event.preventDefault();
20
24
 
21
25
  const dirtyEntityRecords = __experimentalGetDirtyEntityRecords();
22
- const isDirty = !! dirtyEntityRecords.length;
26
+ const hasDirtyEntities = !! dirtyEntityRecords.length;
23
27
  const isSaving = dirtyEntityRecords.some( ( record ) =>
24
28
  isSavingEntityRecord( record.kind, record.name, record.key )
25
29
  );
26
-
27
- if ( ! isSaving && isDirty ) {
28
- setIsSaveViewOpened( true );
30
+ const _hasNonPostEntityChanges = hasNonPostEntityChanges();
31
+ const isViewMode = getCanvasMode() === 'view';
32
+ if (
33
+ ( ! hasDirtyEntities || ! _hasNonPostEntityChanges || isSaving ) &&
34
+ ! isViewMode
35
+ ) {
36
+ return;
29
37
  }
38
+ // At this point, we know that there are dirty entities, other than
39
+ // the edited post, and we're not in the process of saving, so open
40
+ // save view.
41
+ setIsSaveViewOpened( true );
30
42
  } );
31
43
 
32
44
  return null;
@@ -0,0 +1,122 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import { Controller } from '@react-spring/web';
5
+
6
+ /**
7
+ * WordPress dependencies
8
+ */
9
+ import { useLayoutEffect, useMemo, useRef } from '@wordpress/element';
10
+
11
+ function getAbsolutePosition( element ) {
12
+ return {
13
+ top: element.offsetTop,
14
+ left: element.offsetLeft,
15
+ };
16
+ }
17
+
18
+ const ANIMATION_DURATION = 300;
19
+
20
+ /**
21
+ * Hook used to compute the styles required to move a div into a new position.
22
+ *
23
+ * The way this animation works is the following:
24
+ * - It first renders the element as if there was no animation.
25
+ * - It takes a snapshot of the position of the block to use it
26
+ * as a destination point for the animation.
27
+ * - It restores the element to the previous position using a CSS transform
28
+ * - It uses the "resetAnimation" flag to reset the animation
29
+ * from the beginning in order to animate to the new destination point.
30
+ *
31
+ * @param {Object} $1 Options
32
+ * @param {*} $1.triggerAnimationOnChange Variable used to trigger the animation if it changes.
33
+ */
34
+ function useMovingAnimation( { triggerAnimationOnChange } ) {
35
+ const ref = useRef();
36
+
37
+ // Whenever the trigger changes, we need to take a snapshot of the current
38
+ // position of the block to use it as a destination point for the animation.
39
+ const { previous, prevRect } = useMemo(
40
+ () => ( {
41
+ previous: ref.current && getAbsolutePosition( ref.current ),
42
+ prevRect: ref.current && ref.current.getBoundingClientRect(),
43
+ } ),
44
+ // eslint-disable-next-line react-hooks/exhaustive-deps
45
+ [ triggerAnimationOnChange ]
46
+ );
47
+
48
+ useLayoutEffect( () => {
49
+ if ( ! previous || ! ref.current ) {
50
+ return;
51
+ }
52
+
53
+ // We disable the animation if the user has a preference for reduced
54
+ // motion.
55
+ const disableAnimation = window.matchMedia(
56
+ '(prefers-reduced-motion: reduce)'
57
+ ).matches;
58
+
59
+ if ( disableAnimation ) {
60
+ return;
61
+ }
62
+
63
+ const controller = new Controller( {
64
+ x: 0,
65
+ y: 0,
66
+ width: prevRect.width,
67
+ height: prevRect.height,
68
+ config: { duration: ANIMATION_DURATION },
69
+ onChange( { value } ) {
70
+ if ( ! ref.current ) {
71
+ return;
72
+ }
73
+ let { x, y, width, height } = value;
74
+ x = Math.round( x );
75
+ y = Math.round( y );
76
+ width = Math.round( width );
77
+ height = Math.round( height );
78
+ const finishedMoving = x === 0 && y === 0;
79
+ ref.current.style.transformOrigin = 'center center';
80
+ ref.current.style.transform = finishedMoving
81
+ ? null // Set to `null` to explicitly remove the transform.
82
+ : `translate3d(${ x }px,${ y }px,0)`;
83
+ ref.current.style.width = finishedMoving
84
+ ? null
85
+ : `${ width }px`;
86
+ ref.current.style.height = finishedMoving
87
+ ? null
88
+ : `${ height }px`;
89
+ },
90
+ } );
91
+
92
+ ref.current.style.transform = undefined;
93
+ const destination = ref.current.getBoundingClientRect();
94
+
95
+ const x = Math.round( prevRect.left - destination.left );
96
+ const y = Math.round( prevRect.top - destination.top );
97
+ const width = destination.width;
98
+ const height = destination.height;
99
+
100
+ controller.start( {
101
+ x: 0,
102
+ y: 0,
103
+ width,
104
+ height,
105
+ from: { x, y, width: prevRect.width, height: prevRect.height },
106
+ } );
107
+
108
+ return () => {
109
+ controller.stop();
110
+ controller.set( {
111
+ x: 0,
112
+ y: 0,
113
+ width: prevRect.width,
114
+ height: prevRect.height,
115
+ } );
116
+ };
117
+ }, [ previous, prevRect ] );
118
+
119
+ return ref;
120
+ }
121
+
122
+ export default useMovingAnimation;
@@ -51,12 +51,13 @@ import { useCommonCommands } from '../../hooks/commands/use-common-commands';
51
51
  import { useEditModeCommands } from '../../hooks/commands/use-edit-mode-commands';
52
52
  import { useIsSiteEditorLoading } from './hooks';
53
53
  import useLayoutAreas from './router';
54
+ import useMovingAnimation from './animation';
54
55
 
55
56
  const { useCommands } = unlock( coreCommandsPrivateApis );
56
57
  const { useCommandContext } = unlock( commandsPrivateApis );
57
58
  const { useGlobalStyle } = unlock( blockEditorPrivateApis );
58
59
 
59
- const ANIMATION_DURATION = 0.5;
60
+ const ANIMATION_DURATION = 0.3;
60
61
 
61
62
  export default function Layout() {
62
63
  // This ensures the edited entity id and type are initialized properly.
@@ -114,7 +115,10 @@ export default function Layout() {
114
115
  const isEditorLoading = useIsSiteEditorLoading();
115
116
  const [ isResizableFrameOversized, setIsResizableFrameOversized ] =
116
117
  useState( false );
117
- const { areas, widths } = useLayoutAreas();
118
+ const { key: routeKey, areas, widths } = useLayoutAreas();
119
+ const animationRef = useMovingAnimation( {
120
+ triggerAnimationOnChange: canvasMode + '__' + routeKey,
121
+ } );
118
122
 
119
123
  // This determines which animation variant should apply to the header.
120
124
  // There is also a `isDistractionFreeHovering` state that gets priority
@@ -239,7 +243,9 @@ export default function Layout() {
239
243
  } }
240
244
  transition={ {
241
245
  type: 'tween',
242
- duration: disableMotion ? 0 : 0.2,
246
+ duration: disableMotion
247
+ ? 0
248
+ : ANIMATION_DURATION,
243
249
  ease: 'easeOut',
244
250
  } }
245
251
  >
@@ -315,22 +321,7 @@ export default function Layout() {
315
321
  <div className="edit-site-layout__canvas-container">
316
322
  { canvasResizer }
317
323
  { !! canvasSize.width && (
318
- <motion.div
319
- whileHover={
320
- canvasMode === 'view'
321
- ? {
322
- scale: 1.005,
323
- transition: {
324
- duration: disableMotion
325
- ? 0
326
- : 0.5,
327
- ease: 'easeOut',
328
- },
329
- }
330
- : {}
331
- }
332
- initial={ false }
333
- layout="position"
324
+ <div
334
325
  className={ classnames(
335
326
  'edit-site-layout__canvas',
336
327
  {
@@ -338,13 +329,7 @@ export default function Layout() {
338
329
  isResizableFrameOversized,
339
330
  }
340
331
  ) }
341
- transition={ {
342
- type: 'tween',
343
- duration: disableMotion
344
- ? 0
345
- : ANIMATION_DURATION,
346
- ease: 'easeOut',
347
- } }
332
+ ref={ animationRef }
348
333
  >
349
334
  <ErrorBoundary>
350
335
  <ResizableFrame
@@ -373,7 +358,7 @@ export default function Layout() {
373
358
  { areas.preview }
374
359
  </ResizableFrame>
375
360
  </ErrorBoundary>
376
- </motion.div>
361
+ </div>
377
362
  ) }
378
363
  </div>
379
364
  ) }