@wordpress/edit-site 4.18.0 → 5.0.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 (352) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/build/components/add-new-template/add-custom-template-modal.js +4 -1
  3. package/build/components/add-new-template/add-custom-template-modal.js.map +1 -1
  4. package/build/components/add-new-template/index.js +8 -5
  5. package/build/components/add-new-template/index.js.map +1 -1
  6. package/build/components/add-new-template/new-template-part.js +21 -6
  7. package/build/components/add-new-template/new-template-part.js.map +1 -1
  8. package/build/components/add-new-template/new-template.js +12 -8
  9. package/build/components/add-new-template/new-template.js.map +1 -1
  10. package/build/components/app/index.js +15 -30
  11. package/build/components/app/index.js.map +1 -1
  12. package/build/components/block-editor/editor-canvas.js +64 -0
  13. package/build/components/block-editor/editor-canvas.js.map +1 -0
  14. package/build/components/block-editor/index.js +61 -59
  15. package/build/components/block-editor/index.js.map +1 -1
  16. package/build/components/block-editor/resizable-editor.js +13 -85
  17. package/build/components/block-editor/resizable-editor.js.map +1 -1
  18. package/build/components/editor/index.js +80 -127
  19. package/build/components/editor/index.js.map +1 -1
  20. package/build/components/global-styles/block-preview-panel.js +42 -0
  21. package/build/components/global-styles/block-preview-panel.js.map +1 -0
  22. package/build/components/global-styles/context-menu.js +6 -2
  23. package/build/components/global-styles/context-menu.js.map +1 -1
  24. package/build/components/global-styles/custom-css.js +61 -0
  25. package/build/components/global-styles/custom-css.js.map +1 -0
  26. package/build/components/global-styles/dimensions-panel.js +42 -2
  27. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  28. package/build/components/global-styles/global-styles-provider.js +15 -2
  29. package/build/components/global-styles/global-styles-provider.js.map +1 -1
  30. package/build/components/global-styles/hooks.js +37 -2
  31. package/build/components/global-styles/hooks.js.map +1 -1
  32. package/build/components/global-styles/palette.js +9 -2
  33. package/build/components/global-styles/palette.js.map +1 -1
  34. package/build/components/global-styles/screen-block-list.js +2 -1
  35. package/build/components/global-styles/screen-block-list.js.map +1 -1
  36. package/build/components/global-styles/screen-block.js +10 -2
  37. package/build/components/global-styles/screen-block.js.map +1 -1
  38. package/build/components/global-styles/screen-border.js +43 -0
  39. package/build/components/global-styles/screen-border.js.map +1 -0
  40. package/build/components/global-styles/screen-colors.js +1 -1
  41. package/build/components/global-styles/screen-colors.js.map +1 -1
  42. package/build/components/global-styles/screen-css.js +42 -0
  43. package/build/components/global-styles/screen-css.js.map +1 -0
  44. package/build/components/global-styles/screen-layout.js +0 -5
  45. package/build/components/global-styles/screen-layout.js.map +1 -1
  46. package/build/components/global-styles/screen-root.js +14 -1
  47. package/build/components/global-styles/screen-root.js.map +1 -1
  48. package/build/components/global-styles/screen-style-variations.js +3 -3
  49. package/build/components/global-styles/screen-style-variations.js.map +1 -1
  50. package/build/components/global-styles/typography-panel.js +52 -16
  51. package/build/components/global-styles/typography-panel.js.map +1 -1
  52. package/build/components/global-styles/ui.js +50 -4
  53. package/build/components/global-styles/ui.js.map +1 -1
  54. package/build/components/global-styles/use-global-styles-output.js +47 -8
  55. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  56. package/build/components/global-styles/utils.js +3 -3
  57. package/build/components/global-styles/utils.js.map +1 -1
  58. package/build/components/{editor/global-styles-renderer.js → global-styles-renderer/index.js} +4 -8
  59. package/build/components/global-styles-renderer/index.js.map +1 -0
  60. package/build/components/header-edit-mode/document-actions/index.js +14 -5
  61. package/build/components/header-edit-mode/document-actions/index.js.map +1 -1
  62. package/build/components/header-edit-mode/index.js +31 -17
  63. package/build/components/header-edit-mode/index.js.map +1 -1
  64. package/build/components/keyboard-shortcuts/index.js +14 -1
  65. package/build/components/keyboard-shortcuts/index.js.map +1 -1
  66. package/build/components/layout/index.js +231 -0
  67. package/build/components/layout/index.js.map +1 -0
  68. package/build/components/list/header.js +5 -1
  69. package/build/components/list/header.js.map +1 -1
  70. package/build/components/list/index.js +4 -22
  71. package/build/components/list/index.js.map +1 -1
  72. package/build/components/list/table.js +1 -1
  73. package/build/components/list/table.js.map +1 -1
  74. package/build/components/list/use-register-shortcuts.js +3 -0
  75. package/build/components/list/use-register-shortcuts.js.map +1 -1
  76. package/build/components/navigate-to-link/index.js +1 -3
  77. package/build/components/navigate-to-link/index.js.map +1 -1
  78. package/build/components/routes/index.js +1 -1
  79. package/build/components/routes/index.js.map +1 -1
  80. package/build/components/save-button/index.js +20 -2
  81. package/build/components/save-button/index.js.map +1 -1
  82. package/build/components/sidebar/index.js +42 -0
  83. package/build/components/sidebar/index.js.map +1 -0
  84. package/build/components/sidebar-edit-mode/global-styles-sidebar.js +24 -4
  85. package/build/components/sidebar-edit-mode/global-styles-sidebar.js.map +1 -1
  86. package/build/components/sidebar-edit-mode/index.js +1 -1
  87. package/build/components/sidebar-edit-mode/index.js.map +1 -1
  88. package/build/components/sidebar-edit-mode/template-card/index.js +4 -2
  89. package/build/components/sidebar-edit-mode/template-card/index.js.map +1 -1
  90. package/build/components/sidebar-navigation-item/index.js +53 -0
  91. package/build/components/sidebar-navigation-item/index.js.map +1 -0
  92. package/build/components/sidebar-navigation-screen/index.js +49 -0
  93. package/build/components/sidebar-navigation-screen/index.js.map +1 -0
  94. package/build/components/sidebar-navigation-screen-main/index.js +76 -0
  95. package/build/components/sidebar-navigation-screen-main/index.js.map +1 -0
  96. package/build/components/sidebar-navigation-screen-templates/index.js +188 -0
  97. package/build/components/sidebar-navigation-screen-templates/index.js.map +1 -0
  98. package/build/components/site-icon/index.js +70 -0
  99. package/build/components/site-icon/index.js.map +1 -0
  100. package/build/components/site-title/index.js +55 -0
  101. package/build/components/site-title/index.js.map +1 -0
  102. package/build/components/style-book/index.js +173 -0
  103. package/build/components/style-book/index.js.map +1 -0
  104. package/build/components/{url-query-controller/index.js → sync-state-with-url/use-init-edited-entity-from-url.js} +5 -4
  105. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -0
  106. package/build/components/sync-state-with-url/use-sync-sidebar-path-with-url.js +53 -0
  107. package/build/components/sync-state-with-url/use-sync-sidebar-path-with-url.js.map +1 -0
  108. package/build/components/template-details/index.js +4 -2
  109. package/build/components/template-details/index.js.map +1 -1
  110. package/build/index.js +2 -45
  111. package/build/index.js.map +1 -1
  112. package/build/store/actions.js +93 -43
  113. package/build/store/actions.js.map +1 -1
  114. package/build/store/reducer.js +35 -107
  115. package/build/store/reducer.js.map +1 -1
  116. package/build/store/selectors.js +69 -78
  117. package/build/store/selectors.js.map +1 -1
  118. package/build-module/components/add-new-template/add-custom-template-modal.js +3 -1
  119. package/build-module/components/add-new-template/add-custom-template-modal.js.map +1 -1
  120. package/build-module/components/add-new-template/index.js +7 -5
  121. package/build-module/components/add-new-template/index.js.map +1 -1
  122. package/build-module/components/add-new-template/new-template-part.js +18 -6
  123. package/build-module/components/add-new-template/new-template-part.js.map +1 -1
  124. package/build-module/components/add-new-template/new-template.js +13 -9
  125. package/build-module/components/add-new-template/new-template.js.map +1 -1
  126. package/build-module/components/app/index.js +15 -28
  127. package/build-module/components/app/index.js.map +1 -1
  128. package/build-module/components/block-editor/editor-canvas.js +51 -0
  129. package/build-module/components/block-editor/editor-canvas.js.map +1 -0
  130. package/build-module/components/block-editor/index.js +61 -60
  131. package/build-module/components/block-editor/index.js.map +1 -1
  132. package/build-module/components/block-editor/resizable-editor.js +15 -82
  133. package/build-module/components/block-editor/resizable-editor.js.map +1 -1
  134. package/build-module/components/editor/index.js +81 -124
  135. package/build-module/components/editor/index.js.map +1 -1
  136. package/build-module/components/global-styles/block-preview-panel.js +32 -0
  137. package/build-module/components/global-styles/block-preview-panel.js.map +1 -0
  138. package/build-module/components/global-styles/context-menu.js +7 -3
  139. package/build-module/components/global-styles/context-menu.js.map +1 -1
  140. package/build-module/components/global-styles/custom-css.js +51 -0
  141. package/build-module/components/global-styles/custom-css.js.map +1 -0
  142. package/build-module/components/global-styles/dimensions-panel.js +43 -3
  143. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  144. package/build-module/components/global-styles/global-styles-provider.js +15 -2
  145. package/build-module/components/global-styles/global-styles-provider.js.map +1 -1
  146. package/build-module/components/global-styles/hooks.js +32 -4
  147. package/build-module/components/global-styles/hooks.js.map +1 -1
  148. package/build-module/components/global-styles/palette.js +10 -4
  149. package/build-module/components/global-styles/palette.js.map +1 -1
  150. package/build-module/components/global-styles/screen-block-list.js +2 -1
  151. package/build-module/components/global-styles/screen-block-list.js.map +1 -1
  152. package/build-module/components/global-styles/screen-block.js +8 -2
  153. package/build-module/components/global-styles/screen-block.js.map +1 -1
  154. package/build-module/components/global-styles/screen-border.js +27 -0
  155. package/build-module/components/global-styles/screen-border.js.map +1 -0
  156. package/build-module/components/global-styles/screen-colors.js +1 -1
  157. package/build-module/components/global-styles/screen-colors.js.map +1 -1
  158. package/build-module/components/global-styles/screen-css.js +28 -0
  159. package/build-module/components/global-styles/screen-css.js.map +1 -0
  160. package/build-module/components/global-styles/screen-layout.js +0 -4
  161. package/build-module/components/global-styles/screen-layout.js.map +1 -1
  162. package/build-module/components/global-styles/screen-root.js +14 -1
  163. package/build-module/components/global-styles/screen-root.js.map +1 -1
  164. package/build-module/components/global-styles/screen-style-variations.js +2 -2
  165. package/build-module/components/global-styles/screen-style-variations.js.map +1 -1
  166. package/build-module/components/global-styles/typography-panel.js +53 -16
  167. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  168. package/build-module/components/global-styles/ui.js +48 -5
  169. package/build-module/components/global-styles/ui.js.map +1 -1
  170. package/build-module/components/global-styles/use-global-styles-output.js +48 -9
  171. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  172. package/build-module/components/global-styles/utils.js +4 -4
  173. package/build-module/components/global-styles/utils.js.map +1 -1
  174. package/build-module/components/{editor/global-styles-renderer.js → global-styles-renderer/index.js} +4 -7
  175. package/build-module/components/global-styles-renderer/index.js.map +1 -0
  176. package/build-module/components/header-edit-mode/document-actions/index.js +14 -6
  177. package/build-module/components/header-edit-mode/document-actions/index.js.map +1 -1
  178. package/build-module/components/header-edit-mode/index.js +27 -16
  179. package/build-module/components/header-edit-mode/index.js.map +1 -1
  180. package/build-module/components/keyboard-shortcuts/index.js +13 -1
  181. package/build-module/components/keyboard-shortcuts/index.js.map +1 -1
  182. package/build-module/components/layout/index.js +203 -0
  183. package/build-module/components/layout/index.js.map +1 -0
  184. package/build-module/components/list/header.js +5 -1
  185. package/build-module/components/list/header.js.map +1 -1
  186. package/build-module/components/list/index.js +4 -19
  187. package/build-module/components/list/index.js.map +1 -1
  188. package/build-module/components/list/table.js +1 -1
  189. package/build-module/components/list/table.js.map +1 -1
  190. package/build-module/components/list/use-register-shortcuts.js +3 -0
  191. package/build-module/components/list/use-register-shortcuts.js.map +1 -1
  192. package/build-module/components/navigate-to-link/index.js +1 -3
  193. package/build-module/components/navigate-to-link/index.js.map +1 -1
  194. package/build-module/components/routes/index.js +1 -1
  195. package/build-module/components/routes/index.js.map +1 -1
  196. package/build-module/components/save-button/index.js +21 -2
  197. package/build-module/components/save-button/index.js.map +1 -1
  198. package/build-module/components/sidebar/index.js +30 -0
  199. package/build-module/components/sidebar/index.js.map +1 -0
  200. package/build-module/components/sidebar-edit-mode/global-styles-sidebar.js +27 -7
  201. package/build-module/components/sidebar-edit-mode/global-styles-sidebar.js.map +1 -1
  202. package/build-module/components/sidebar-edit-mode/index.js +3 -3
  203. package/build-module/components/sidebar-edit-mode/index.js.map +1 -1
  204. package/build-module/components/sidebar-edit-mode/template-card/index.js +3 -2
  205. package/build-module/components/sidebar-edit-mode/template-card/index.js.map +1 -1
  206. package/build-module/components/sidebar-navigation-item/index.js +40 -0
  207. package/build-module/components/sidebar-navigation-item/index.js.map +1 -0
  208. package/build-module/components/sidebar-navigation-screen/index.js +39 -0
  209. package/build-module/components/sidebar-navigation-screen/index.js.map +1 -0
  210. package/build-module/components/sidebar-navigation-screen-main/index.js +57 -0
  211. package/build-module/components/sidebar-navigation-screen-main/index.js.map +1 -0
  212. package/build-module/components/sidebar-navigation-screen-templates/index.js +165 -0
  213. package/build-module/components/sidebar-navigation-screen-templates/index.js.map +1 -0
  214. package/build-module/components/site-icon/index.js +55 -0
  215. package/build-module/components/site-icon/index.js.map +1 -0
  216. package/build-module/components/site-title/index.js +43 -0
  217. package/build-module/components/site-title/index.js.map +1 -0
  218. package/build-module/components/style-book/index.js +156 -0
  219. package/build-module/components/style-book/index.js.map +1 -0
  220. package/build-module/components/{url-query-controller/index.js → sync-state-with-url/use-init-edited-entity-from-url.js} +4 -3
  221. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -0
  222. package/build-module/components/sync-state-with-url/use-sync-sidebar-path-with-url.js +43 -0
  223. package/build-module/components/sync-state-with-url/use-sync-sidebar-path-with-url.js.map +1 -0
  224. package/build-module/components/template-details/index.js +3 -2
  225. package/build-module/components/template-details/index.js.map +1 -1
  226. package/build-module/index.js +5 -36
  227. package/build-module/index.js.map +1 -1
  228. package/build-module/store/actions.js +87 -42
  229. package/build-module/store/actions.js.map +1 -1
  230. package/build-module/store/reducer.js +35 -102
  231. package/build-module/store/reducer.js.map +1 -1
  232. package/build-module/store/selectors.js +60 -72
  233. package/build-module/store/selectors.js.map +1 -1
  234. package/build-style/style-rtl.css +558 -354
  235. package/build-style/style.css +558 -354
  236. package/package.json +33 -31
  237. package/src/components/add-new-template/add-custom-template-modal.js +6 -1
  238. package/src/components/add-new-template/index.js +6 -3
  239. package/src/components/add-new-template/new-template-part.js +15 -3
  240. package/src/components/add-new-template/new-template.js +14 -7
  241. package/src/components/add-new-template/style.scss +0 -4
  242. package/src/components/app/index.js +14 -43
  243. package/src/components/block-editor/editor-canvas.js +69 -0
  244. package/src/components/block-editor/index.js +102 -87
  245. package/src/components/block-editor/resizable-editor.js +12 -112
  246. package/src/components/block-editor/style.scss +25 -1
  247. package/src/components/code-editor/style.scss +1 -1
  248. package/src/components/editor/index.js +170 -236
  249. package/src/components/editor/style.scss +1 -29
  250. package/src/components/global-styles/block-preview-panel.js +29 -0
  251. package/src/components/global-styles/context-menu.js +11 -2
  252. package/src/components/global-styles/custom-css.js +73 -0
  253. package/src/components/global-styles/dimensions-panel.js +56 -1
  254. package/src/components/global-styles/global-styles-provider.js +39 -17
  255. package/src/components/global-styles/hooks.js +44 -3
  256. package/src/components/global-styles/palette.js +16 -2
  257. package/src/components/global-styles/screen-block-list.js +2 -1
  258. package/src/components/global-styles/screen-block.js +9 -1
  259. package/src/components/global-styles/screen-border.js +23 -0
  260. package/src/components/global-styles/screen-colors.js +2 -1
  261. package/src/components/global-styles/screen-css.js +33 -0
  262. package/src/components/global-styles/screen-layout.js +0 -3
  263. package/src/components/global-styles/screen-root.js +30 -1
  264. package/src/components/global-styles/screen-style-variations.js +5 -2
  265. package/src/components/global-styles/style.scss +31 -2
  266. package/src/components/global-styles/test/typography-utils.js +82 -98
  267. package/src/components/global-styles/test/use-global-styles-output.js +6 -6
  268. package/src/components/global-styles/typography-panel.js +57 -15
  269. package/src/components/global-styles/ui.js +47 -4
  270. package/src/components/global-styles/use-global-styles-output.js +52 -10
  271. package/src/components/global-styles/utils.js +8 -5
  272. package/src/components/{editor/global-styles-renderer.js → global-styles-renderer/index.js} +3 -9
  273. package/src/components/header-edit-mode/document-actions/index.js +16 -10
  274. package/src/components/header-edit-mode/document-actions/style.scss +8 -1
  275. package/src/components/header-edit-mode/index.js +104 -82
  276. package/src/components/header-edit-mode/style.scss +5 -33
  277. package/src/components/keyboard-shortcuts/index.js +17 -0
  278. package/src/components/layout/index.js +278 -0
  279. package/src/components/layout/style.scss +176 -0
  280. package/src/components/list/header.js +5 -1
  281. package/src/components/list/index.js +12 -31
  282. package/src/components/list/style.scss +10 -4
  283. package/src/components/list/table.js +1 -1
  284. package/src/components/list/use-register-shortcuts.js +4 -0
  285. package/src/components/navigate-to-link/index.js +2 -8
  286. package/src/components/routes/index.js +1 -1
  287. package/src/components/save-button/index.js +17 -1
  288. package/src/components/sidebar/index.js +34 -0
  289. package/src/components/sidebar/style.scss +8 -0
  290. package/src/components/sidebar-edit-mode/global-styles-sidebar.js +42 -7
  291. package/src/components/sidebar-edit-mode/index.js +3 -3
  292. package/src/components/sidebar-edit-mode/navigation-menu-sidebar/style.scss +21 -3
  293. package/src/components/sidebar-edit-mode/settings-header/style.scss +47 -34
  294. package/src/components/sidebar-edit-mode/style.scss +0 -13
  295. package/src/components/sidebar-edit-mode/template-card/index.js +3 -2
  296. package/src/components/sidebar-navigation-item/index.js +51 -0
  297. package/src/components/sidebar-navigation-item/style.scss +17 -0
  298. package/src/components/sidebar-navigation-screen/index.js +55 -0
  299. package/src/components/sidebar-navigation-screen/style.scss +41 -0
  300. package/src/components/sidebar-navigation-screen-main/index.js +72 -0
  301. package/src/components/sidebar-navigation-screen-templates/index.js +181 -0
  302. package/src/components/sidebar-navigation-screen-templates/style.scss +9 -0
  303. package/src/components/site-icon/index.js +56 -0
  304. package/src/components/site-icon/style.scss +10 -0
  305. package/src/components/site-title/index.js +39 -0
  306. package/src/components/style-book/index.js +193 -0
  307. package/src/components/style-book/style.scss +78 -0
  308. package/src/components/{url-query-controller/index.js → sync-state-with-url/use-init-edited-entity-from-url.js} +3 -3
  309. package/src/components/sync-state-with-url/use-sync-sidebar-path-with-url.js +36 -0
  310. package/src/components/template-details/index.js +3 -2
  311. package/src/components/template-details/style.scss +4 -0
  312. package/src/index.js +3 -53
  313. package/src/store/actions.js +93 -48
  314. package/src/store/reducer.js +29 -91
  315. package/src/store/selectors.js +61 -101
  316. package/src/store/test/actions.js +3 -15
  317. package/src/store/test/reducer.js +8 -192
  318. package/src/store/test/selectors.js +3 -42
  319. package/src/style.scss +19 -3
  320. package/build/components/editor/global-styles-renderer.js.map +0 -1
  321. package/build/components/navigation-sidebar/index.js +0 -62
  322. package/build/components/navigation-sidebar/index.js.map +0 -1
  323. package/build/components/navigation-sidebar/navigation-panel/constants.js +0 -77
  324. package/build/components/navigation-sidebar/navigation-panel/constants.js.map +0 -1
  325. package/build/components/navigation-sidebar/navigation-panel/index.js +0 -152
  326. package/build/components/navigation-sidebar/navigation-panel/index.js.map +0 -1
  327. package/build/components/navigation-sidebar/navigation-panel/template-hierarchy.js +0 -81
  328. package/build/components/navigation-sidebar/navigation-panel/template-hierarchy.js.map +0 -1
  329. package/build/components/navigation-sidebar/navigation-toggle/index.js +0 -124
  330. package/build/components/navigation-sidebar/navigation-toggle/index.js.map +0 -1
  331. package/build/components/url-query-controller/index.js.map +0 -1
  332. package/build-module/components/editor/global-styles-renderer.js.map +0 -1
  333. package/build-module/components/navigation-sidebar/index.js +0 -45
  334. package/build-module/components/navigation-sidebar/index.js.map +0 -1
  335. package/build-module/components/navigation-sidebar/navigation-panel/constants.js +0 -49
  336. package/build-module/components/navigation-sidebar/navigation-panel/constants.js.map +0 -1
  337. package/build-module/components/navigation-sidebar/navigation-panel/index.js +0 -131
  338. package/build-module/components/navigation-sidebar/navigation-panel/index.js.map +0 -1
  339. package/build-module/components/navigation-sidebar/navigation-panel/template-hierarchy.js +0 -66
  340. package/build-module/components/navigation-sidebar/navigation-panel/template-hierarchy.js.map +0 -1
  341. package/build-module/components/navigation-sidebar/navigation-toggle/index.js +0 -108
  342. package/build-module/components/navigation-sidebar/navigation-toggle/index.js.map +0 -1
  343. package/build-module/components/url-query-controller/index.js.map +0 -1
  344. package/src/components/navigation-sidebar/index.js +0 -46
  345. package/src/components/navigation-sidebar/navigation-panel/constants.js +0 -94
  346. package/src/components/navigation-sidebar/navigation-panel/index.js +0 -142
  347. package/src/components/navigation-sidebar/navigation-panel/style.scss +0 -159
  348. package/src/components/navigation-sidebar/navigation-panel/template-hierarchy.js +0 -81
  349. package/src/components/navigation-sidebar/navigation-toggle/index.js +0 -114
  350. package/src/components/navigation-sidebar/navigation-toggle/style.scss +0 -71
  351. package/src/components/navigation-sidebar/navigation-toggle/test/__snapshots__/index.js.snap +0 -41
  352. package/src/components/navigation-sidebar/navigation-toggle/test/index.js +0 -69
@@ -18,6 +18,7 @@ import {
18
18
  } from '@wordpress/components';
19
19
  import {
20
20
  __experimentalUseCustomSides as useCustomSides,
21
+ __experimentalHeightControl as HeightControl,
21
22
  __experimentalSpacingSizesControl as SpacingSizesControl,
22
23
  } from '@wordpress/block-editor';
23
24
  import { Icon, positionCenter, stretchWide } from '@wordpress/icons';
@@ -35,8 +36,16 @@ export function useHasDimensionsPanel( name ) {
35
36
  const hasPadding = useHasPadding( name );
36
37
  const hasMargin = useHasMargin( name );
37
38
  const hasGap = useHasGap( name );
39
+ const hasMinHeight = useHasMinHeight( name );
38
40
 
39
- return hasContentSize || hasWideSize || hasPadding || hasMargin || hasGap;
41
+ return (
42
+ hasContentSize ||
43
+ hasWideSize ||
44
+ hasPadding ||
45
+ hasMargin ||
46
+ hasGap ||
47
+ hasMinHeight
48
+ );
40
49
  }
41
50
 
42
51
  function useHasContentSize( name ) {
@@ -74,6 +83,13 @@ function useHasGap( name ) {
74
83
  return settings && supports.includes( 'blockGap' );
75
84
  }
76
85
 
86
+ function useHasMinHeight( name ) {
87
+ const supports = getSupportedGlobalStylesPanels( name );
88
+ const [ settings ] = useSetting( 'dimensions.minHeight', name );
89
+
90
+ return settings && supports.includes( 'minHeight' );
91
+ }
92
+
77
93
  function useHasSpacingPresets() {
78
94
  const [ settings ] = useSetting( 'spacing.spacingSizes' );
79
95
 
@@ -271,12 +287,29 @@ function useBlockGapProps( name ) {
271
287
  };
272
288
  }
273
289
 
290
+ // Props for managing `dimensions.minHeight`.
291
+ function useMinHeightProps( name ) {
292
+ const [ minHeightValue, setMinHeightValue ] = useStyle(
293
+ 'dimensions.minHeight',
294
+ name
295
+ );
296
+ const resetMinHeightValue = () => setMinHeightValue( undefined );
297
+ const hasMinHeightValue = () => !! minHeightValue;
298
+ return {
299
+ minHeightValue,
300
+ setMinHeightValue,
301
+ resetMinHeightValue,
302
+ hasMinHeightValue,
303
+ };
304
+ }
305
+
274
306
  export default function DimensionsPanel( { name } ) {
275
307
  const showContentSizeControl = useHasContentSize( name );
276
308
  const showWideSizeControl = useHasWideSize( name );
277
309
  const showPaddingControl = useHasPadding( name );
278
310
  const showMarginControl = useHasMargin( name );
279
311
  const showGapControl = useHasGap( name );
312
+ const showMinHeightControl = useHasMinHeight( name );
280
313
  const showSpacingPresetsControl = useHasSpacingPresets();
281
314
  const units = useCustomUnits( {
282
315
  availableUnits: useSetting( 'spacing.units', name )[ 0 ] || [
@@ -336,6 +369,14 @@ export default function DimensionsPanel( { name } ) {
336
369
  hasGapValue,
337
370
  } = useBlockGapProps( name );
338
371
 
372
+ // Props for managing `dimensions.minHeight`.
373
+ const {
374
+ minHeightValue,
375
+ setMinHeightValue,
376
+ resetMinHeightValue,
377
+ hasMinHeightValue,
378
+ } = useMinHeightProps( name );
379
+
339
380
  const resetAll = () => {
340
381
  resetPaddingValue();
341
382
  resetMarginValue();
@@ -514,6 +555,20 @@ export default function DimensionsPanel( { name } ) {
514
555
  ) }
515
556
  </ToolsPanelItem>
516
557
  ) }
558
+ { showMinHeightControl && (
559
+ <ToolsPanelItem
560
+ hasValue={ hasMinHeightValue }
561
+ label={ __( 'Min. height' ) }
562
+ onDeselect={ resetMinHeightValue }
563
+ isShownByDefault={ true }
564
+ >
565
+ <HeightControl
566
+ label={ __( 'Min. height' ) }
567
+ value={ minHeightValue }
568
+ onChange={ setMinHeightValue }
569
+ />
570
+ </ToolsPanelItem>
571
+ ) }
517
572
  </ToolsPanel>
518
573
  );
519
574
  }
@@ -45,22 +45,44 @@ const cleanEmptyObject = ( object ) => {
45
45
  };
46
46
 
47
47
  function useGlobalStylesUserConfig() {
48
- const { globalStylesId, settings, styles } = useSelect( ( select ) => {
49
- const _globalStylesId =
50
- select( coreStore ).__experimentalGetCurrentGlobalStylesId();
51
- const record = _globalStylesId
52
- ? select( coreStore ).getEditedEntityRecord(
53
- 'root',
54
- 'globalStyles',
55
- _globalStylesId
56
- )
57
- : undefined;
58
- return {
59
- globalStylesId: _globalStylesId,
60
- settings: record?.settings,
61
- styles: record?.styles,
62
- };
63
- }, [] );
48
+ const { globalStylesId, isReady, settings, styles } = useSelect(
49
+ ( select ) => {
50
+ const { getEditedEntityRecord, hasFinishedResolution } =
51
+ select( coreStore );
52
+ const _globalStylesId =
53
+ select( coreStore ).__experimentalGetCurrentGlobalStylesId();
54
+ const record = _globalStylesId
55
+ ? getEditedEntityRecord(
56
+ 'root',
57
+ 'globalStyles',
58
+ _globalStylesId
59
+ )
60
+ : undefined;
61
+
62
+ let hasResolved = false;
63
+ if (
64
+ hasFinishedResolution(
65
+ '__experimentalGetCurrentGlobalStylesId'
66
+ )
67
+ ) {
68
+ hasResolved = _globalStylesId
69
+ ? hasFinishedResolution( 'getEditedEntityRecord', [
70
+ 'root',
71
+ 'globalStyles',
72
+ _globalStylesId,
73
+ ] )
74
+ : true;
75
+ }
76
+
77
+ return {
78
+ globalStylesId: _globalStylesId,
79
+ isReady: hasResolved,
80
+ settings: record?.settings,
81
+ styles: record?.styles,
82
+ };
83
+ },
84
+ []
85
+ );
64
86
 
65
87
  const { getEditedEntityRecord } = useSelect( coreStore );
66
88
  const { editEntityRecord } = useDispatch( coreStore );
@@ -91,7 +113,7 @@ function useGlobalStylesUserConfig() {
91
113
  [ globalStylesId ]
92
114
  );
93
115
 
94
- return [ !! settings || !! styles, config, setConfig ];
116
+ return [ isReady, config, setConfig ];
95
117
  }
96
118
 
97
119
  function useGlobalStylesBaseConfig() {
@@ -1,7 +1,10 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { get, set, isEqual } from 'lodash';
4
+ import fastDeepEqual from 'fast-deep-equal/es6';
5
+ import { get, set } from 'lodash';
6
+ import { colord, extend } from 'colord';
7
+ import a11yPlugin from 'colord/plugins/a11y';
5
8
 
6
9
  /**
7
10
  * WordPress dependencies
@@ -20,11 +23,14 @@ import {
20
23
  import { getValueFromVariable, getPresetVariableFromValue } from './utils';
21
24
  import { GlobalStylesContext } from './context';
22
25
 
26
+ // Enable colord's a11y plugin.
27
+ extend( [ a11yPlugin ] );
28
+
23
29
  const EMPTY_CONFIG = { settings: {}, styles: {} };
24
30
 
25
31
  export const useGlobalStylesReset = () => {
26
32
  const { user: config, setUserConfig } = useContext( GlobalStylesContext );
27
- const canReset = !! config && ! isEqual( config, EMPTY_CONFIG );
33
+ const canReset = !! config && ! fastDeepEqual( config, EMPTY_CONFIG );
28
34
  return [
29
35
  canReset,
30
36
  useCallback(
@@ -132,7 +138,11 @@ export function useStyle( path, blockName, source = 'all' ) {
132
138
  result = getValueFromVariable(
133
139
  mergedConfig,
134
140
  blockName,
135
- get( userConfig, finalPath ) ?? get( baseConfig, finalPath )
141
+ // The stlyes.css path is allowed to be empty, so don't revert to base if undefined.
142
+ finalPath === 'styles.css'
143
+ ? get( userConfig, finalPath )
144
+ : get( userConfig, finalPath ) ??
145
+ get( baseConfig, finalPath )
136
146
  );
137
147
  break;
138
148
  case 'user':
@@ -323,3 +333,34 @@ export function useGradientsPerOrigin( name ) {
323
333
  return result;
324
334
  }, [ customGradients, themeGradients, defaultGradients ] );
325
335
  }
336
+
337
+ export function useColorRandomizer( name ) {
338
+ const [ themeColors, setThemeColors ] = useSetting(
339
+ 'color.palette.theme',
340
+ name
341
+ );
342
+
343
+ function randomizeColors() {
344
+ /* eslint-disable no-restricted-syntax */
345
+ const randomRotationValue = Math.floor( Math.random() * 225 );
346
+ /* eslint-enable no-restricted-syntax */
347
+
348
+ const newColors = themeColors.map( ( colorObject ) => {
349
+ const { color } = colorObject;
350
+ const newColor = colord( color )
351
+ .rotate( randomRotationValue )
352
+ .toHex();
353
+
354
+ return {
355
+ ...colorObject,
356
+ color: newColor,
357
+ };
358
+ } );
359
+
360
+ setThemeColors( newColors );
361
+ }
362
+
363
+ return window.__experimentalEnableColorRandomizer
364
+ ? [ randomizeColors ]
365
+ : [];
366
+ }
@@ -8,8 +8,10 @@ import {
8
8
  __experimentalZStack as ZStack,
9
9
  __experimentalVStack as VStack,
10
10
  ColorIndicator,
11
+ Button,
11
12
  } from '@wordpress/components';
12
13
  import { __, _n, sprintf } from '@wordpress/i18n';
14
+ import { shuffle } from '@wordpress/icons';
13
15
  import { useMemo } from '@wordpress/element';
14
16
 
15
17
  /**
@@ -17,7 +19,7 @@ import { useMemo } from '@wordpress/element';
17
19
  */
18
20
  import Subtitle from './subtitle';
19
21
  import { NavigationButtonAsItem } from './navigation-button';
20
- import { useSetting } from './hooks';
22
+ import { useColorRandomizer, useSetting } from './hooks';
21
23
  import ColorIndicatorWrapper from './color-indicator-wrapper';
22
24
 
23
25
  const EMPTY_COLORS = [];
@@ -31,6 +33,9 @@ function Palette( { name } ) {
31
33
  'color.defaultPalette',
32
34
  name
33
35
  );
36
+
37
+ const [ randomizeThemeColors ] = useColorRandomizer();
38
+
34
39
  const colors = useMemo(
35
40
  () => [
36
41
  ...( customColors || EMPTY_COLORS ),
@@ -44,7 +49,7 @@ function Palette( { name } ) {
44
49
 
45
50
  const screenPath = ! name
46
51
  ? '/colors/palette'
47
- : '/blocks/' + name + '/colors/palette';
52
+ : '/blocks/' + encodeURIComponent( name ) + '/colors/palette';
48
53
  const paletteButtonText =
49
54
  colors.length > 0
50
55
  ? sprintf(
@@ -82,6 +87,15 @@ function Palette( { name } ) {
82
87
  </HStack>
83
88
  </NavigationButtonAsItem>
84
89
  </ItemGroup>
90
+ { randomizeThemeColors && (
91
+ <Button
92
+ variant="secondary"
93
+ icon={ shuffle }
94
+ onClick={ randomizeThemeColors }
95
+ >
96
+ { __( 'Randomize colors' ) }
97
+ </Button>
98
+ ) }
85
99
  </VStack>
86
100
  );
87
101
  }
@@ -68,7 +68,7 @@ function BlockMenuItem( { block } ) {
68
68
 
69
69
  return (
70
70
  <NavigationButtonAsItem
71
- path={ '/blocks/' + block.name }
71
+ path={ '/blocks/' + encodeURIComponent( block.name ) }
72
72
  aria-label={ navigationButtonLabel }
73
73
  >
74
74
  <HStack justify="flex-start">
@@ -129,6 +129,7 @@ function ScreenBlockList() {
129
129
  ) }
130
130
  />
131
131
  <SearchControl
132
+ __nextHasNoMarginBottom
132
133
  className="edit-site-block-types-search"
133
134
  onChange={ setFilterValue }
134
135
  value={ filterValue }
@@ -2,12 +2,14 @@
2
2
  * WordPress dependencies
3
3
  */
4
4
  import { getBlockType } from '@wordpress/blocks';
5
+ import { __experimentalSpacer as Spacer } from '@wordpress/components';
5
6
 
6
7
  /**
7
8
  * Internal dependencies
8
9
  */
9
10
  import ContextMenu from './context-menu';
10
11
  import ScreenHeader from './header';
12
+ import BlockPreviewPanel from './block-preview-panel';
11
13
 
12
14
  function ScreenBlock( { name } ) {
13
15
  const blockType = getBlockType( name );
@@ -15,7 +17,13 @@ function ScreenBlock( { name } ) {
15
17
  return (
16
18
  <>
17
19
  <ScreenHeader title={ blockType.title } />
18
- <ContextMenu parentMenu={ '/blocks/' + name } name={ name } />
20
+ <Spacer paddingX={ 4 }>
21
+ <BlockPreviewPanel name={ name } />
22
+ </Spacer>
23
+ <ContextMenu
24
+ parentMenu={ '/blocks/' + encodeURIComponent( name ) }
25
+ name={ name }
26
+ />
19
27
  </>
20
28
  );
21
29
  }
@@ -0,0 +1,23 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { __ } from '@wordpress/i18n';
5
+
6
+ /**
7
+ * Internal dependencies
8
+ */
9
+ import ScreenHeader from './header';
10
+ import BorderPanel, { useHasBorderPanel } from './border-panel';
11
+
12
+ function ScreenBorder( { name } ) {
13
+ const hasBorderPanel = useHasBorderPanel( name );
14
+
15
+ return (
16
+ <>
17
+ <ScreenHeader title={ __( 'Border' ) } />
18
+ { hasBorderPanel && <BorderPanel name={ name } /> }
19
+ </>
20
+ );
21
+ }
22
+
23
+ export default ScreenBorder;
@@ -174,7 +174,8 @@ function ButtonColorItem( { name, parentMenu } ) {
174
174
  }
175
175
 
176
176
  function ScreenColors( { name } ) {
177
- const parentMenu = name === undefined ? '' : '/blocks/' + name;
177
+ const parentMenu =
178
+ name === undefined ? '' : '/blocks/' + encodeURIComponent( name );
178
179
 
179
180
  return (
180
181
  <>
@@ -0,0 +1,33 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { __ } from '@wordpress/i18n';
5
+ import { __experimentalVStack as VStack } from '@wordpress/components';
6
+
7
+ /**
8
+ * Internal dependencies
9
+ */
10
+ import ScreenHeader from './header';
11
+ import Subtitle from './subtitle';
12
+ import CustomCSSControl from './custom-css';
13
+
14
+ function ScreenCSS() {
15
+ return (
16
+ <>
17
+ <ScreenHeader
18
+ title={ __( 'CSS' ) }
19
+ description={ __(
20
+ 'Add your own CSS to customize the appearance and layout of your site.'
21
+ ) }
22
+ />
23
+ <div className="edit-site-global-styles-screen-css">
24
+ <VStack spacing={ 3 }>
25
+ <Subtitle>{ __( 'ADDITIONAL CSS' ) }</Subtitle>
26
+ <CustomCSSControl />
27
+ </VStack>
28
+ </div>
29
+ </>
30
+ );
31
+ }
32
+
33
+ export default ScreenCSS;
@@ -6,19 +6,16 @@ import { __ } from '@wordpress/i18n';
6
6
  /**
7
7
  * Internal dependencies
8
8
  */
9
- import BorderPanel, { useHasBorderPanel } from './border-panel';
10
9
  import DimensionsPanel, { useHasDimensionsPanel } from './dimensions-panel';
11
10
  import ScreenHeader from './header';
12
11
 
13
12
  function ScreenLayout( { name } ) {
14
- const hasBorderPanel = useHasBorderPanel( name );
15
13
  const hasDimensionsPanel = useHasDimensionsPanel( name );
16
14
 
17
15
  return (
18
16
  <>
19
17
  <ScreenHeader title={ __( 'Layout' ) } />
20
18
  { hasDimensionsPanel && <DimensionsPanel name={ name } /> }
21
- { hasBorderPanel && <BorderPanel name={ name } /> }
22
19
  </>
23
20
  );
24
21
  }
@@ -75,7 +75,8 @@ function ScreenRoot() {
75
75
  paddingTop={ 2 }
76
76
  /*
77
77
  * 13px matches the text inset of the NavigationButton (12px padding, plus the width of the button's border).
78
- * This is an ad hoc override for this particular instance only and should be reconsidered before making into a pattern.
78
+ * This is an ad hoc override for this instance and the Addtional CSS option below. Other options for matching the
79
+ * the nav button inset should be looked at before reusing further.
79
80
  */
80
81
  paddingX="13px"
81
82
  marginBottom={ 4 }
@@ -98,6 +99,34 @@ function ScreenRoot() {
98
99
  </NavigationButtonAsItem>
99
100
  </ItemGroup>
100
101
  </CardBody>
102
+
103
+ <CardDivider />
104
+
105
+ <CardBody>
106
+ <Spacer
107
+ as="p"
108
+ paddingTop={ 2 }
109
+ paddingX="13px"
110
+ marginBottom={ 4 }
111
+ >
112
+ { __(
113
+ 'Add your own CSS to customize the appearance and layout of your site.'
114
+ ) }
115
+ </Spacer>
116
+ <ItemGroup>
117
+ <NavigationButtonAsItem
118
+ path="/css"
119
+ aria-label={ __( 'Additional CSS' ) }
120
+ >
121
+ <HStack justify="space-between">
122
+ <FlexItem>{ __( 'Custom' ) }</FlexItem>
123
+ <IconWithCurrentColor
124
+ icon={ isRTL() ? chevronLeft : chevronRight }
125
+ />
126
+ </HStack>
127
+ </NavigationButtonAsItem>
128
+ </ItemGroup>
129
+ </CardBody>
101
130
  </Card>
102
131
  );
103
132
  }
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { isEqual } from 'lodash';
5
4
  import classnames from 'classnames';
5
+ import fastDeepEqual from 'fast-deep-equal/es6';
6
6
 
7
7
  /**
8
8
  * WordPress dependencies
@@ -34,7 +34,10 @@ import StylesPreview from './preview';
34
34
  import ScreenHeader from './header';
35
35
 
36
36
  function compareVariations( a, b ) {
37
- return isEqual( a.styles, b.styles ) && isEqual( a.settings, b.settings );
37
+ return (
38
+ fastDeepEqual( a.styles, b.styles ) &&
39
+ fastDeepEqual( a.settings, b.settings )
40
+ );
38
41
  }
39
42
 
40
43
  function Variation( { variation } ) {
@@ -1,3 +1,6 @@
1
+ // Variables
2
+ $block-preview-height: 150px;
3
+
1
4
  .edit-site-global-styles-preview {
2
5
  display: flex;
3
6
  align-items: center;
@@ -28,7 +31,8 @@
28
31
  }
29
32
 
30
33
  .edit-site-global-styles-screen-heading-color,
31
- .edit-site-global-styles-screen-typography {
34
+ .edit-site-global-styles-screen-typography,
35
+ .edit-site-global-styles-screen-css {
32
36
  margin: $grid-unit-20;
33
37
  }
34
38
 
@@ -52,8 +56,12 @@
52
56
  }
53
57
  }
54
58
 
55
- .edit-site-global-styles-header__description,
59
+ .edit-site-global-styles-header__description {
60
+ padding: 0 $grid-unit-20;
61
+ }
62
+
56
63
  .edit-site-block-types-search {
64
+ margin-bottom: $grid-unit-10;
57
65
  padding: 0 $grid-unit-20;
58
66
  }
59
67
 
@@ -117,3 +125,24 @@
117
125
  overflow: hidden;
118
126
  text-overflow: ellipsis;
119
127
  }
128
+
129
+ .edit-site-global-styles__block-preview-panel {
130
+ position: relative;
131
+ width: 100%;
132
+ height: $block-preview-height + 2 * $border-width;
133
+ overflow: auto;
134
+ border: $gray-200 $border-width solid;
135
+ border-radius: $radius-block-ui;
136
+ }
137
+
138
+ .edit-site-global-styles__custom-css-input textarea {
139
+ font-family: $editor_html_font;
140
+ }
141
+
142
+ .edit-site-global-styles__custom-css-theme-css {
143
+ width: 100%;
144
+ line-break: anywhere;
145
+ white-space: break-spaces;
146
+ max-height: 200px;
147
+ overflow-y: scroll;
148
+ }