@wordpress/edit-site 5.4.0 → 5.6.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 (339) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/build/components/add-new-template/add-custom-template-modal.js +12 -3
  3. package/build/components/add-new-template/add-custom-template-modal.js.map +1 -1
  4. package/build/components/add-new-template/new-template-part.js +8 -7
  5. package/build/components/add-new-template/new-template-part.js.map +1 -1
  6. package/build/components/add-new-template/new-template.js +19 -16
  7. package/build/components/add-new-template/new-template.js.map +1 -1
  8. package/build/components/app/index.js +4 -2
  9. package/build/components/app/index.js.map +1 -1
  10. package/build/components/block-editor/editor-canvas.js +2 -1
  11. package/build/components/block-editor/editor-canvas.js.map +1 -1
  12. package/build/components/editor/index.js +5 -7
  13. package/build/components/editor/index.js.map +1 -1
  14. package/build/components/global-styles/border-panel.js +20 -159
  15. package/build/components/global-styles/border-panel.js.map +1 -1
  16. package/build/components/global-styles/context-menu.js +13 -11
  17. package/build/components/global-styles/context-menu.js.map +1 -1
  18. package/build/components/global-styles/dimensions-panel.js +41 -487
  19. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  20. package/build/components/global-styles/duotone-panel.js +78 -0
  21. package/build/components/global-styles/duotone-panel.js.map +1 -0
  22. package/build/components/global-styles/filter-utils.js +17 -0
  23. package/build/components/global-styles/filter-utils.js.map +1 -0
  24. package/build/components/global-styles/hooks.js +11 -26
  25. package/build/components/global-styles/hooks.js.map +1 -1
  26. package/build/components/global-styles/preview.js +9 -5
  27. package/build/components/global-styles/preview.js.map +1 -1
  28. package/build/components/global-styles/screen-block-list.js +6 -11
  29. package/build/components/global-styles/screen-block-list.js.map +1 -1
  30. package/build/components/global-styles/screen-border.js +14 -6
  31. package/build/components/global-styles/screen-border.js.map +1 -1
  32. package/build/components/global-styles/screen-filters.js +46 -0
  33. package/build/components/global-styles/screen-filters.js.map +1 -0
  34. package/build/components/global-styles/screen-layout.js +13 -5
  35. package/build/components/global-styles/screen-layout.js.map +1 -1
  36. package/build/components/global-styles/screen-root.js +2 -1
  37. package/build/components/global-styles/screen-root.js.map +1 -1
  38. package/build/components/global-styles/screen-style-variations.js +2 -1
  39. package/build/components/global-styles/screen-style-variations.js.map +1 -1
  40. package/build/components/global-styles/screen-variations.js +1 -1
  41. package/build/components/global-styles/screen-variations.js.map +1 -1
  42. package/build/components/global-styles/shadow-panel.js +6 -4
  43. package/build/components/global-styles/shadow-panel.js.map +1 -1
  44. package/build/components/global-styles/typography-panel.js +2 -5
  45. package/build/components/global-styles/typography-panel.js.map +1 -1
  46. package/build/components/global-styles/ui.js +7 -1
  47. package/build/components/global-styles/ui.js.map +1 -1
  48. package/build/components/keyboard-shortcut-help-modal/config.js +12 -0
  49. package/build/components/keyboard-shortcut-help-modal/config.js.map +1 -1
  50. package/build/components/keyboard-shortcuts/edit-mode.js +124 -0
  51. package/build/components/keyboard-shortcuts/edit-mode.js.map +1 -0
  52. package/build/components/keyboard-shortcuts/global.js +48 -0
  53. package/build/components/keyboard-shortcuts/global.js.map +1 -0
  54. package/build/components/keyboard-shortcuts/index.js +67 -0
  55. package/build/components/keyboard-shortcuts/index.js.map +1 -1
  56. package/build/components/keyboard-shortcuts/register.js +153 -0
  57. package/build/components/keyboard-shortcuts/register.js.map +1 -0
  58. package/build/components/layout/index.js +12 -1
  59. package/build/components/layout/index.js.map +1 -1
  60. package/build/components/list/added-by.js +127 -136
  61. package/build/components/list/added-by.js.map +1 -1
  62. package/build/components/list/index.js +2 -1
  63. package/build/components/list/index.js.map +1 -1
  64. package/build/components/list/table.js +9 -7
  65. package/build/components/list/table.js.map +1 -1
  66. package/build/components/routes/link.js +4 -1
  67. package/build/components/routes/link.js.map +1 -1
  68. package/build/components/save-hub/index.js +82 -0
  69. package/build/components/save-hub/index.js.map +1 -0
  70. package/build/components/save-panel/index.js +11 -1
  71. package/build/components/save-panel/index.js.map +1 -1
  72. package/build/components/sidebar/index.js +27 -17
  73. package/build/components/sidebar/index.js.map +1 -1
  74. package/build/components/sidebar-button/index.js +30 -0
  75. package/build/components/sidebar-button/index.js.map +1 -0
  76. package/build/components/sidebar-edit-mode/global-styles-sidebar.js +8 -2
  77. package/build/components/sidebar-edit-mode/global-styles-sidebar.js.map +1 -1
  78. package/build/components/sidebar-navigation-screen/index.js +14 -11
  79. package/build/components/sidebar-navigation-screen/index.js.map +1 -1
  80. package/build/components/sidebar-navigation-screen-main/index.js +16 -16
  81. package/build/components/sidebar-navigation-screen-main/index.js.map +1 -1
  82. package/build/components/sidebar-navigation-screen-navigation-item/index.js +22 -26
  83. package/build/components/sidebar-navigation-screen-navigation-item/index.js.map +1 -1
  84. package/build/components/sidebar-navigation-screen-navigation-menus/index.js +97 -14
  85. package/build/components/sidebar-navigation-screen-navigation-menus/index.js.map +1 -1
  86. package/build/components/sidebar-navigation-screen-navigation-menus/loader.js +19 -0
  87. package/build/components/sidebar-navigation-screen-navigation-menus/loader.js.map +1 -0
  88. package/build/components/sidebar-navigation-screen-navigation-menus/navigation-menu-content.js +77 -0
  89. package/build/components/sidebar-navigation-screen-navigation-menus/navigation-menu-content.js.map +1 -0
  90. package/build/components/sidebar-navigation-screen-template/index.js +66 -27
  91. package/build/components/sidebar-navigation-screen-template/index.js.map +1 -1
  92. package/build/components/sidebar-navigation-screen-templates/index.js +30 -17
  93. package/build/components/sidebar-navigation-screen-templates/index.js.map +1 -1
  94. package/build/components/sidebar-navigation-screen-templates-browse/index.js +14 -10
  95. package/build/components/sidebar-navigation-screen-templates-browse/index.js.map +1 -1
  96. package/build/components/site-hub/index.js +3 -1
  97. package/build/components/site-hub/index.js.map +1 -1
  98. package/build/components/style-book/index.js +151 -21
  99. package/build/components/style-book/index.js.map +1 -1
  100. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js +36 -34
  101. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  102. package/build/components/sync-state-with-url/use-sync-canvas-mode-with-url.js +24 -8
  103. package/build/components/sync-state-with-url/use-sync-canvas-mode-with-url.js.map +1 -1
  104. package/build/components/sync-state-with-url/use-sync-path-with-url.js +67 -18
  105. package/build/components/sync-state-with-url/use-sync-path-with-url.js.map +1 -1
  106. package/build/components/template-details/index.js +5 -10
  107. package/build/components/template-details/index.js.map +1 -1
  108. package/build/components/template-part-converter/convert-to-regular.js +8 -12
  109. package/build/components/template-part-converter/convert-to-regular.js.map +1 -1
  110. package/build/components/template-part-converter/convert-to-template-part.js +2 -2
  111. package/build/components/template-part-converter/convert-to-template-part.js.map +1 -1
  112. package/build/components/template-part-converter/index.js +19 -14
  113. package/build/components/template-part-converter/index.js.map +1 -1
  114. package/build/components/use-edited-entity-record/index.js +6 -6
  115. package/build/components/use-edited-entity-record/index.js.map +1 -1
  116. package/build/index.js +13 -22
  117. package/build/index.js.map +1 -1
  118. package/build/store/actions.js +2 -2
  119. package/build/store/actions.js.map +1 -1
  120. package/build/utils/get-is-list-page.js +1 -1
  121. package/build/utils/get-is-list-page.js.map +1 -1
  122. package/build/utils/history.js +8 -2
  123. package/build/utils/history.js.map +1 -1
  124. package/build-module/components/add-new-template/add-custom-template-modal.js +13 -4
  125. package/build-module/components/add-new-template/add-custom-template-modal.js.map +1 -1
  126. package/build-module/components/add-new-template/new-template-part.js +8 -7
  127. package/build-module/components/add-new-template/new-template-part.js.map +1 -1
  128. package/build-module/components/add-new-template/new-template.js +21 -17
  129. package/build-module/components/add-new-template/new-template.js.map +1 -1
  130. package/build-module/components/app/index.js +3 -2
  131. package/build-module/components/app/index.js.map +1 -1
  132. package/build-module/components/block-editor/editor-canvas.js +2 -1
  133. package/build-module/components/block-editor/editor-canvas.js.map +1 -1
  134. package/build-module/components/editor/index.js +5 -6
  135. package/build-module/components/editor/index.js.map +1 -1
  136. package/build-module/components/global-styles/border-panel.js +21 -157
  137. package/build-module/components/global-styles/border-panel.js.map +1 -1
  138. package/build-module/components/global-styles/context-menu.js +14 -11
  139. package/build-module/components/global-styles/context-menu.js.map +1 -1
  140. package/build-module/components/global-styles/dimensions-panel.js +43 -480
  141. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  142. package/build-module/components/global-styles/duotone-panel.js +67 -0
  143. package/build-module/components/global-styles/duotone-panel.js.map +1 -0
  144. package/build-module/components/global-styles/filter-utils.js +9 -0
  145. package/build-module/components/global-styles/filter-utils.js.map +1 -0
  146. package/build-module/components/global-styles/hooks.js +11 -26
  147. package/build-module/components/global-styles/hooks.js.map +1 -1
  148. package/build-module/components/global-styles/preview.js +10 -6
  149. package/build-module/components/global-styles/preview.js.map +1 -1
  150. package/build-module/components/global-styles/screen-block-list.js +6 -8
  151. package/build-module/components/global-styles/screen-block-list.js.map +1 -1
  152. package/build-module/components/global-styles/screen-border.js +12 -3
  153. package/build-module/components/global-styles/screen-border.js.map +1 -1
  154. package/build-module/components/global-styles/screen-filters.js +33 -0
  155. package/build-module/components/global-styles/screen-filters.js.map +1 -0
  156. package/build-module/components/global-styles/screen-layout.js +11 -2
  157. package/build-module/components/global-styles/screen-layout.js.map +1 -1
  158. package/build-module/components/global-styles/screen-root.js +2 -1
  159. package/build-module/components/global-styles/screen-root.js.map +1 -1
  160. package/build-module/components/global-styles/screen-style-variations.js +2 -1
  161. package/build-module/components/global-styles/screen-style-variations.js.map +1 -1
  162. package/build-module/components/global-styles/screen-variations.js +1 -1
  163. package/build-module/components/global-styles/screen-variations.js.map +1 -1
  164. package/build-module/components/global-styles/shadow-panel.js +6 -4
  165. package/build-module/components/global-styles/shadow-panel.js.map +1 -1
  166. package/build-module/components/global-styles/typography-panel.js +2 -5
  167. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  168. package/build-module/components/global-styles/ui.js +6 -1
  169. package/build-module/components/global-styles/ui.js.map +1 -1
  170. package/build-module/components/keyboard-shortcut-help-modal/config.js +12 -0
  171. package/build-module/components/keyboard-shortcut-help-modal/config.js.map +1 -1
  172. package/build-module/components/keyboard-shortcuts/edit-mode.js +108 -0
  173. package/build-module/components/keyboard-shortcuts/edit-mode.js.map +1 -0
  174. package/build-module/components/keyboard-shortcuts/global.js +37 -0
  175. package/build-module/components/keyboard-shortcuts/global.js.map +1 -0
  176. package/build-module/components/keyboard-shortcuts/index.js +65 -0
  177. package/build-module/components/keyboard-shortcuts/index.js.map +1 -1
  178. package/build-module/components/keyboard-shortcuts/register.js +141 -0
  179. package/build-module/components/keyboard-shortcuts/register.js.map +1 -0
  180. package/build-module/components/layout/index.js +10 -1
  181. package/build-module/components/layout/index.js.map +1 -1
  182. package/build-module/components/list/added-by.js +126 -138
  183. package/build-module/components/list/added-by.js.map +1 -1
  184. package/build-module/components/list/index.js +2 -1
  185. package/build-module/components/list/index.js.map +1 -1
  186. package/build-module/components/list/table.js +9 -7
  187. package/build-module/components/list/table.js.map +1 -1
  188. package/build-module/components/routes/link.js +5 -2
  189. package/build-module/components/routes/link.js.map +1 -1
  190. package/build-module/components/save-hub/index.js +68 -0
  191. package/build-module/components/save-hub/index.js.map +1 -0
  192. package/build-module/components/save-panel/index.js +8 -1
  193. package/build-module/components/save-panel/index.js.map +1 -1
  194. package/build-module/components/sidebar/index.js +24 -19
  195. package/build-module/components/sidebar/index.js.map +1 -1
  196. package/build-module/components/sidebar-button/index.js +18 -0
  197. package/build-module/components/sidebar-button/index.js.map +1 -0
  198. package/build-module/components/sidebar-edit-mode/global-styles-sidebar.js +8 -2
  199. package/build-module/components/sidebar-edit-mode/global-styles-sidebar.js.map +1 -1
  200. package/build-module/components/sidebar-navigation-screen/index.js +12 -12
  201. package/build-module/components/sidebar-navigation-screen/index.js.map +1 -1
  202. package/build-module/components/sidebar-navigation-screen-main/index.js +16 -16
  203. package/build-module/components/sidebar-navigation-screen-main/index.js.map +1 -1
  204. package/build-module/components/sidebar-navigation-screen-navigation-item/index.js +24 -30
  205. package/build-module/components/sidebar-navigation-screen-navigation-item/index.js.map +1 -1
  206. package/build-module/components/sidebar-navigation-screen-navigation-menus/index.js +91 -14
  207. package/build-module/components/sidebar-navigation-screen-navigation-menus/index.js.map +1 -1
  208. package/build-module/components/sidebar-navigation-screen-navigation-menus/loader.js +11 -0
  209. package/build-module/components/sidebar-navigation-screen-navigation-menus/loader.js.map +1 -0
  210. package/build-module/components/sidebar-navigation-screen-navigation-menus/navigation-menu-content.js +66 -0
  211. package/build-module/components/sidebar-navigation-screen-navigation-menus/navigation-menu-content.js.map +1 -0
  212. package/build-module/components/sidebar-navigation-screen-template/index.js +67 -30
  213. package/build-module/components/sidebar-navigation-screen-template/index.js.map +1 -1
  214. package/build-module/components/sidebar-navigation-screen-templates/index.js +28 -18
  215. package/build-module/components/sidebar-navigation-screen-templates/index.js.map +1 -1
  216. package/build-module/components/sidebar-navigation-screen-templates-browse/index.js +13 -10
  217. package/build-module/components/sidebar-navigation-screen-templates-browse/index.js.map +1 -1
  218. package/build-module/components/site-hub/index.js +3 -1
  219. package/build-module/components/site-hub/index.js.map +1 -1
  220. package/build-module/components/style-book/index.js +152 -25
  221. package/build-module/components/style-book/index.js.map +1 -1
  222. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js +36 -34
  223. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  224. package/build-module/components/sync-state-with-url/use-sync-canvas-mode-with-url.js +24 -8
  225. package/build-module/components/sync-state-with-url/use-sync-canvas-mode-with-url.js.map +1 -1
  226. package/build-module/components/sync-state-with-url/use-sync-path-with-url.js +65 -18
  227. package/build-module/components/sync-state-with-url/use-sync-path-with-url.js.map +1 -1
  228. package/build-module/components/template-details/index.js +5 -9
  229. package/build-module/components/template-details/index.js.map +1 -1
  230. package/build-module/components/template-part-converter/convert-to-regular.js +9 -13
  231. package/build-module/components/template-part-converter/convert-to-regular.js.map +1 -1
  232. package/build-module/components/template-part-converter/convert-to-template-part.js +3 -3
  233. package/build-module/components/template-part-converter/convert-to-template-part.js.map +1 -1
  234. package/build-module/components/template-part-converter/index.js +20 -15
  235. package/build-module/components/template-part-converter/index.js.map +1 -1
  236. package/build-module/components/use-edited-entity-record/index.js +6 -6
  237. package/build-module/components/use-edited-entity-record/index.js.map +1 -1
  238. package/build-module/index.js +16 -23
  239. package/build-module/index.js.map +1 -1
  240. package/build-module/store/actions.js +2 -2
  241. package/build-module/store/actions.js.map +1 -1
  242. package/build-module/utils/get-is-list-page.js +1 -1
  243. package/build-module/utils/get-is-list-page.js.map +1 -1
  244. package/build-module/utils/history.js +9 -3
  245. package/build-module/utils/history.js.map +1 -1
  246. package/build-style/style-rtl.css +203 -143
  247. package/build-style/style.css +203 -143
  248. package/package.json +31 -31
  249. package/src/components/add-new-template/add-custom-template-modal.js +14 -10
  250. package/src/components/add-new-template/new-template-part.js +7 -9
  251. package/src/components/add-new-template/new-template.js +60 -38
  252. package/src/components/add-new-template/style.scss +12 -6
  253. package/src/components/app/index.js +9 -6
  254. package/src/components/block-editor/editor-canvas.js +2 -1
  255. package/src/components/block-editor/style.scss +1 -1
  256. package/src/components/editor/index.js +62 -65
  257. package/src/components/editor/style.scss +0 -6
  258. package/src/components/global-styles/border-panel.js +24 -199
  259. package/src/components/global-styles/context-menu.js +18 -12
  260. package/src/components/global-styles/dimensions-panel.js +43 -577
  261. package/src/components/global-styles/duotone-panel.js +82 -0
  262. package/src/components/global-styles/filter-utils.js +9 -0
  263. package/src/components/global-styles/hooks.js +12 -36
  264. package/src/components/global-styles/preview.js +155 -140
  265. package/src/components/global-styles/screen-block-list.js +6 -11
  266. package/src/components/global-styles/screen-border.js +10 -3
  267. package/src/components/global-styles/screen-filters.js +27 -0
  268. package/src/components/global-styles/screen-layout.js +9 -2
  269. package/src/components/global-styles/screen-root.js +1 -1
  270. package/src/components/global-styles/screen-style-variations.js +5 -1
  271. package/src/components/global-styles/screen-variations.js +0 -1
  272. package/src/components/global-styles/shadow-panel.js +4 -3
  273. package/src/components/global-styles/style.scss +10 -0
  274. package/src/components/global-styles/typography-panel.js +5 -7
  275. package/src/components/global-styles/ui.js +6 -1
  276. package/src/components/keyboard-shortcut-help-modal/config.js +10 -0
  277. package/src/components/keyboard-shortcuts/edit-mode.js +116 -0
  278. package/src/components/keyboard-shortcuts/global.js +35 -0
  279. package/src/components/keyboard-shortcuts/index.js +70 -0
  280. package/src/components/keyboard-shortcuts/register.js +157 -0
  281. package/src/components/layout/index.js +19 -0
  282. package/src/components/layout/style.scss +9 -4
  283. package/src/components/list/added-by.js +152 -155
  284. package/src/components/list/index.js +3 -1
  285. package/src/components/list/style.scss +5 -13
  286. package/src/components/list/table.js +11 -9
  287. package/src/components/routes/link.js +9 -2
  288. package/src/components/save-hub/index.js +78 -0
  289. package/src/components/save-hub/style.scss +15 -0
  290. package/src/components/save-panel/index.js +8 -1
  291. package/src/components/sidebar/index.js +33 -16
  292. package/src/components/sidebar/style.scss +4 -3
  293. package/src/components/sidebar-button/index.js +21 -0
  294. package/src/components/sidebar-button/style.scss +24 -0
  295. package/src/components/sidebar-edit-mode/global-styles-sidebar.js +3 -7
  296. package/src/components/sidebar-edit-mode/style.scss +16 -0
  297. package/src/components/sidebar-navigation-item/style.scss +1 -23
  298. package/src/components/sidebar-navigation-screen/index.js +37 -38
  299. package/src/components/sidebar-navigation-screen/style.scss +16 -9
  300. package/src/components/sidebar-navigation-screen-main/index.js +24 -11
  301. package/src/components/sidebar-navigation-screen-navigation-item/index.js +39 -26
  302. package/src/components/sidebar-navigation-screen-navigation-menus/index.js +99 -12
  303. package/src/components/sidebar-navigation-screen-navigation-menus/loader.js +9 -0
  304. package/src/components/sidebar-navigation-screen-navigation-menus/navigation-menu-content.js +78 -0
  305. package/src/components/sidebar-navigation-screen-navigation-menus/style.scss +108 -1
  306. package/src/components/sidebar-navigation-screen-template/index.js +89 -30
  307. package/src/components/sidebar-navigation-screen-template/style.scss +25 -0
  308. package/src/components/sidebar-navigation-screen-templates/index.js +29 -14
  309. package/src/components/sidebar-navigation-screen-templates/style.scss +0 -5
  310. package/src/components/sidebar-navigation-screen-templates-browse/index.js +12 -6
  311. package/src/components/site-hub/index.js +5 -1
  312. package/src/components/site-hub/style.scss +5 -1
  313. package/src/components/style-book/index.js +234 -55
  314. package/src/components/style-book/style.scss +1 -45
  315. package/src/components/sync-state-with-url/use-init-edited-entity-from-url.js +28 -23
  316. package/src/components/sync-state-with-url/use-sync-canvas-mode-with-url.js +38 -8
  317. package/src/components/sync-state-with-url/use-sync-path-with-url.js +77 -17
  318. package/src/components/template-details/index.js +4 -8
  319. package/src/components/template-part-converter/convert-to-regular.js +10 -17
  320. package/src/components/template-part-converter/convert-to-template-part.js +9 -16
  321. package/src/components/template-part-converter/index.js +28 -12
  322. package/src/components/use-edited-entity-record/index.js +26 -18
  323. package/src/index.js +11 -22
  324. package/src/store/actions.js +2 -2
  325. package/src/store/test/actions.js +0 -2
  326. package/src/style.scss +3 -1
  327. package/src/utils/get-is-list-page.js +1 -1
  328. package/src/utils/history.js +13 -9
  329. package/build/components/navigation-inspector/index.js +0 -161
  330. package/build/components/navigation-inspector/index.js.map +0 -1
  331. package/build/components/navigation-inspector/navigation-menu.js +0 -62
  332. package/build/components/navigation-inspector/navigation-menu.js.map +0 -1
  333. package/build-module/components/navigation-inspector/index.js +0 -146
  334. package/build-module/components/navigation-inspector/index.js.map +0 -1
  335. package/build-module/components/navigation-inspector/navigation-menu.js +0 -52
  336. package/build-module/components/navigation-inspector/navigation-menu.js.map +0 -1
  337. package/src/components/navigation-inspector/index.js +0 -191
  338. package/src/components/navigation-inspector/navigation-menu.js +0 -66
  339. package/src/components/navigation-inspector/style.scss +0 -46
@@ -1,605 +1,71 @@
1
- /**
2
- * External dependencies
3
- */
4
- import classnames from 'classnames';
5
-
6
1
  /**
7
2
  * WordPress dependencies
8
3
  */
9
- import { __ } from '@wordpress/i18n';
10
- import {
11
- __experimentalToolsPanel as ToolsPanel,
12
- __experimentalToolsPanelItem as ToolsPanelItem,
13
- __experimentalBoxControl as BoxControl,
14
- __experimentalHStack as HStack,
15
- __experimentalUnitControl as UnitControl,
16
- __experimentalUseCustomUnits as useCustomUnits,
17
- __experimentalView as View,
18
- } from '@wordpress/components';
19
- import {
20
- __experimentalUseCustomSides as useCustomSides,
21
- HeightControl,
22
- __experimentalSpacingSizesControl as SpacingSizesControl,
23
- privateApis as blockEditorPrivateApis,
24
- } from '@wordpress/block-editor';
25
- import { Icon, positionCenter, stretchWide } from '@wordpress/icons';
4
+ import { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';
5
+ import { useMemo } from '@wordpress/element';
26
6
 
27
7
  /**
28
8
  * Internal dependencies
29
9
  */
30
- import { useSupportedStyles } from './hooks';
31
10
  import { unlock } from '../../private-apis';
32
11
 
33
- const { useGlobalSetting, useGlobalStyle } = unlock( blockEditorPrivateApis );
34
-
35
- const AXIAL_SIDES = [ 'horizontal', 'vertical' ];
36
-
37
- export function useHasDimensionsPanel( name ) {
38
- const hasContentSize = useHasContentSize( name );
39
- const hasWideSize = useHasWideSize( name );
40
- const hasPadding = useHasPadding( name );
41
- const hasMargin = useHasMargin( name );
42
- const hasGap = useHasGap( name );
43
- const hasMinHeight = useHasMinHeight( name );
44
-
45
- return (
46
- hasContentSize ||
47
- hasWideSize ||
48
- hasPadding ||
49
- hasMargin ||
50
- hasGap ||
51
- hasMinHeight
52
- );
53
- }
54
-
55
- function useHasContentSize( name ) {
56
- const supports = useSupportedStyles( name );
57
- const [ settings ] = useGlobalSetting( 'layout.contentSize', name );
58
-
59
- return settings && supports.includes( 'contentSize' );
60
- }
12
+ const {
13
+ useGlobalStyle,
14
+ useGlobalSetting,
15
+ useSettingsForBlockElement,
16
+ DimensionsPanel: StylesDimensionsPanel,
17
+ } = unlock( blockEditorPrivateApis );
61
18
 
62
- function useHasWideSize( name ) {
63
- const supports = useSupportedStyles( name );
64
- const [ settings ] = useGlobalSetting( 'layout.wideSize', name );
65
-
66
- return settings && supports.includes( 'wideSize' );
67
- }
68
-
69
- function useHasPadding( name ) {
70
- const supports = useSupportedStyles( name );
71
- const [ settings ] = useGlobalSetting( 'spacing.padding', name );
72
-
73
- return settings && supports.includes( 'padding' );
74
- }
75
-
76
- function useHasMargin( name ) {
77
- const supports = useSupportedStyles( name );
78
- const [ settings ] = useGlobalSetting( 'spacing.margin', name );
79
-
80
- return settings && supports.includes( 'margin' );
81
- }
82
-
83
- function useHasGap( name ) {
84
- const supports = useSupportedStyles( name );
85
- const [ settings ] = useGlobalSetting( 'spacing.blockGap', name );
86
-
87
- return settings && supports.includes( 'blockGap' );
88
- }
89
-
90
- function useHasMinHeight( name ) {
91
- const supports = useSupportedStyles( name );
92
- const [ settings ] = useGlobalSetting( 'dimensions.minHeight', name );
93
-
94
- return settings && supports.includes( 'minHeight' );
95
- }
96
-
97
- function useHasSpacingPresets() {
98
- const [ settings ] = useGlobalSetting( 'spacing.spacingSizes' );
99
- const { custom, theme, default: defaultPresets } = settings || {};
100
- const presets = custom ?? theme ?? defaultPresets ?? [];
101
-
102
- return settings && presets.length > 0;
103
- }
104
-
105
- function filterValuesBySides( values, sides ) {
106
- if ( ! sides ) {
107
- // If no custom side configuration all sides are opted into by default.
108
- return values;
19
+ export default function DimensionsPanel( { name, variation = '' } ) {
20
+ let prefixParts = [];
21
+ if ( variation ) {
22
+ prefixParts = [ 'variations', variation ].concat( prefixParts );
109
23
  }
24
+ const prefix = prefixParts.join( '.' );
110
25
 
111
- // Only include sides opted into within filtered values.
112
- const filteredValues = {};
113
- sides.forEach( ( side ) => {
114
- if ( side === 'vertical' ) {
115
- filteredValues.top = values.top;
116
- filteredValues.bottom = values.bottom;
117
- }
118
- if ( side === 'horizontal' ) {
119
- filteredValues.left = values.left;
120
- filteredValues.right = values.right;
121
- }
122
- filteredValues[ side ] = values[ side ];
26
+ const [ style ] = useGlobalStyle( prefix, name, 'user', false );
27
+ const [ inheritedStyle, setStyle ] = useGlobalStyle( prefix, name, 'all', {
28
+ shouldDecodeEncode: false,
123
29
  } );
30
+ const [ rawSettings, setSettings ] = useGlobalSetting( '', name );
31
+ const settings = useSettingsForBlockElement( rawSettings, name );
124
32
 
125
- return filteredValues;
126
- }
127
-
128
- function splitStyleValue( value ) {
129
- // Check for shorthand value (a string value).
130
- if ( value && typeof value === 'string' ) {
131
- // Convert to value for individual sides for BoxControl.
33
+ // These intermediary objects are needed because the "layout" property is stored
34
+ // in settings rather than styles.
35
+ const inheritedStyleWithLayout = useMemo( () => {
132
36
  return {
133
- top: value,
134
- right: value,
135
- bottom: value,
136
- left: value,
37
+ ...inheritedStyle,
38
+ layout: settings.layout,
137
39
  };
138
- }
139
-
140
- return value;
141
- }
40
+ }, [ inheritedStyle, settings.layout ] );
142
41
 
143
- function splitGapValue( value ) {
144
- // Check for shorthand value (a string value).
145
- if ( value && typeof value === 'string' ) {
146
- // If the value is a string, treat it as a single side (top) for the spacing controls.
42
+ const styleWithLayout = useMemo( () => {
147
43
  return {
148
- top: value,
44
+ ...style,
45
+ layout: settings.layout,
149
46
  };
150
- }
47
+ }, [ style, settings.layout ] );
151
48
 
152
- if ( value ) {
153
- return {
154
- ...value,
155
- right: value?.left,
156
- bottom: value?.top,
157
- };
158
- }
49
+ const onChange = ( newStyle ) => {
50
+ const updatedStyle = { ...newStyle };
51
+ delete updatedStyle.layout;
52
+ setStyle( updatedStyle );
159
53
 
160
- return value;
161
- }
162
-
163
- // Props for managing `layout.contentSize`.
164
- function useContentSizeProps( name ) {
165
- const [ contentSizeValue, setContentSizeValue ] = useGlobalSetting(
166
- 'layout.contentSize',
167
- name
168
- );
169
- const [ userSetContentSizeValue ] = useGlobalSetting(
170
- 'layout.contentSize',
171
- name,
172
- 'user'
173
- );
174
- const hasUserSetContentSizeValue = () => !! userSetContentSizeValue;
175
- const resetContentSizeValue = () => setContentSizeValue( '' );
176
- return {
177
- contentSizeValue,
178
- setContentSizeValue,
179
- hasUserSetContentSizeValue,
180
- resetContentSizeValue,
181
- };
182
- }
183
-
184
- // Props for managing `layout.wideSize`.
185
- function useWideSizeProps( name ) {
186
- const [ wideSizeValue, setWideSizeValue ] = useGlobalSetting(
187
- 'layout.wideSize',
188
- name
189
- );
190
- const [ userSetWideSizeValue ] = useGlobalSetting(
191
- 'layout.wideSize',
192
- name,
193
- 'user'
194
- );
195
- const hasUserSetWideSizeValue = () => !! userSetWideSizeValue;
196
- const resetWideSizeValue = () => setWideSizeValue( '' );
197
- return {
198
- wideSizeValue,
199
- setWideSizeValue,
200
- hasUserSetWideSizeValue,
201
- resetWideSizeValue,
202
- };
203
- }
204
-
205
- // Props for managing `spacing.padding`.
206
- function usePaddingProps( name, variation = '' ) {
207
- const prefix = variation ? `variations.${ variation }.` : '';
208
- const [ rawPadding, setRawPadding ] = useGlobalStyle(
209
- prefix + 'spacing.padding',
210
- name
211
- );
212
- const paddingValues = splitStyleValue( rawPadding );
213
- const paddingSides = useCustomSides( name, 'padding' );
214
- const isAxialPadding =
215
- paddingSides &&
216
- paddingSides.some( ( side ) => AXIAL_SIDES.includes( side ) );
217
-
218
- const setPaddingValues = ( newPaddingValues ) => {
219
- const padding = filterValuesBySides( newPaddingValues, paddingSides );
220
- setRawPadding( padding );
221
- };
222
- const resetPaddingValue = () => setPaddingValues( {} );
223
- const [ userSetPaddingValue ] = useGlobalStyle(
224
- prefix + 'spacing.padding',
225
- name,
226
- 'user'
227
- );
228
- // The `hasPaddingValue` check does not need a parsed value, as `userSetPaddingValue` will be `undefined` if not set.
229
- const hasPaddingValue = () => !! userSetPaddingValue;
230
-
231
- return {
232
- paddingValues,
233
- paddingSides,
234
- isAxialPadding,
235
- setPaddingValues,
236
- resetPaddingValue,
237
- hasPaddingValue,
238
- };
239
- }
240
-
241
- // Props for managing `spacing.margin`.
242
- function useMarginProps( name, variation = '' ) {
243
- const prefix = variation ? `variations.${ variation }.` : '';
244
- const [ rawMargin, setRawMargin ] = useGlobalStyle(
245
- prefix + 'spacing.margin',
246
- name
247
- );
248
- const marginValues = splitStyleValue( rawMargin );
249
- const marginSides = useCustomSides( name, 'margin' );
250
- const isAxialMargin =
251
- marginSides &&
252
- marginSides.some( ( side ) => AXIAL_SIDES.includes( side ) );
253
-
254
- const setMarginValues = ( newMarginValues ) => {
255
- const margin = filterValuesBySides( newMarginValues, marginSides );
256
- setRawMargin( margin );
257
- };
258
- const resetMarginValue = () => setMarginValues( {} );
259
- const hasMarginValue = () =>
260
- !! marginValues && Object.keys( marginValues ).length;
261
-
262
- return {
263
- marginValues,
264
- marginSides,
265
- isAxialMargin,
266
- setMarginValues,
267
- resetMarginValue,
268
- hasMarginValue,
269
- };
270
- }
271
-
272
- // Props for managing `spacing.blockGap`.
273
- function useBlockGapProps( name, variation = '' ) {
274
- const prefix = variation ? `variations.${ variation }.` : '';
275
- const [ gapValue, setGapValue ] = useGlobalStyle(
276
- prefix + 'spacing.blockGap',
277
- name
278
- );
279
- const gapValues = splitGapValue( gapValue );
280
- const gapSides = useCustomSides( name, 'blockGap' );
281
- const isAxialGap =
282
- gapSides && gapSides.some( ( side ) => AXIAL_SIDES.includes( side ) );
283
- const resetGapValue = () => setGapValue( undefined );
284
- const [ userSetGapValue ] = useGlobalStyle(
285
- prefix + 'spacing.blockGap',
286
- name,
287
- 'user'
288
- );
289
- const hasGapValue = () => !! userSetGapValue;
290
- const setGapValues = ( nextBoxGapValue ) => {
291
- if ( ! nextBoxGapValue ) {
292
- setGapValue( null );
293
- }
294
- // If axial gap is not enabled, treat the 'top' value as the shorthand gap value.
295
- if ( ! isAxialGap && nextBoxGapValue?.hasOwnProperty( 'top' ) ) {
296
- setGapValue( nextBoxGapValue.top );
297
- } else {
298
- setGapValue( {
299
- top: nextBoxGapValue?.top,
300
- left: nextBoxGapValue?.left,
54
+ if ( newStyle.layout !== settings.layout ) {
55
+ setSettings( {
56
+ ...rawSettings,
57
+ layout: newStyle.layout,
301
58
  } );
302
59
  }
303
60
  };
304
- return {
305
- gapValue,
306
- gapValues,
307
- gapSides,
308
- isAxialGap,
309
- setGapValue,
310
- setGapValues,
311
- resetGapValue,
312
- hasGapValue,
313
- };
314
- }
315
-
316
- // Props for managing `dimensions.minHeight`.
317
- function useMinHeightProps( name, variation = '' ) {
318
- const prefix = variation ? `variations.${ variation }.` : '';
319
- const [ minHeightValue, setMinHeightValue ] = useGlobalStyle(
320
- prefix + 'dimensions.minHeight',
321
- name
322
- );
323
- const resetMinHeightValue = () => setMinHeightValue( undefined );
324
- const hasMinHeightValue = () => !! minHeightValue;
325
- return {
326
- minHeightValue,
327
- setMinHeightValue,
328
- resetMinHeightValue,
329
- hasMinHeightValue,
330
- };
331
- }
332
-
333
- export default function DimensionsPanel( { name, variation = '' } ) {
334
- const showContentSizeControl = useHasContentSize( name );
335
- const showWideSizeControl = useHasWideSize( name );
336
- const showPaddingControl = useHasPadding( name );
337
- const showMarginControl = useHasMargin( name );
338
- const showGapControl = useHasGap( name );
339
- const showMinHeightControl = useHasMinHeight( name );
340
- const showSpacingPresetsControl = useHasSpacingPresets();
341
- const units = useCustomUnits( {
342
- availableUnits: useGlobalSetting( 'spacing.units', name )[ 0 ] || [
343
- '%',
344
- 'px',
345
- 'em',
346
- 'rem',
347
- 'vw',
348
- ],
349
- } );
350
-
351
- // Props for managing `layout.contentSize`.
352
- const {
353
- contentSizeValue,
354
- setContentSizeValue,
355
- hasUserSetContentSizeValue,
356
- resetContentSizeValue,
357
- } = useContentSizeProps( name );
358
-
359
- // Props for managing `layout.wideSize`.
360
- const {
361
- wideSizeValue,
362
- setWideSizeValue,
363
- hasUserSetWideSizeValue,
364
- resetWideSizeValue,
365
- } = useWideSizeProps( name );
366
-
367
- // Props for managing `spacing.padding`.
368
- const {
369
- paddingValues,
370
- paddingSides,
371
- isAxialPadding,
372
- setPaddingValues,
373
- resetPaddingValue,
374
- hasPaddingValue,
375
- } = usePaddingProps( name, variation );
376
-
377
- // Props for managing `spacing.margin`.
378
- const {
379
- marginValues,
380
- marginSides,
381
- isAxialMargin,
382
- setMarginValues,
383
- resetMarginValue,
384
- hasMarginValue,
385
- } = useMarginProps( name, variation );
386
-
387
- // Props for managing `spacing.blockGap`.
388
- const {
389
- gapValue,
390
- gapValues,
391
- gapSides,
392
- isAxialGap,
393
- setGapValue,
394
- setGapValues,
395
- resetGapValue,
396
- hasGapValue,
397
- } = useBlockGapProps( name, variation );
398
-
399
- // Props for managing `dimensions.minHeight`.
400
- const {
401
- minHeightValue,
402
- setMinHeightValue,
403
- resetMinHeightValue,
404
- hasMinHeightValue,
405
- } = useMinHeightProps( name, variation );
406
-
407
- const resetAll = () => {
408
- resetPaddingValue();
409
- resetMarginValue();
410
- resetGapValue();
411
- resetContentSizeValue();
412
- resetWideSizeValue();
413
- };
414
61
 
415
62
  return (
416
- <ToolsPanel
417
- label={ __( 'Dimensions' ) }
418
- resetAll={ resetAll }
419
- headingLevel={ 3 }
420
- >
421
- { ( showContentSizeControl || showWideSizeControl ) && (
422
- <span className="span-columns">
423
- { __( 'Set the width of the main content area.' ) }
424
- </span>
425
- ) }
426
- { showContentSizeControl && (
427
- <ToolsPanelItem
428
- className="single-column"
429
- label={ __( 'Content size' ) }
430
- hasValue={ hasUserSetContentSizeValue }
431
- onDeselect={ resetContentSizeValue }
432
- isShownByDefault={ true }
433
- >
434
- <HStack alignment="flex-end" justify="flex-start">
435
- <UnitControl
436
- label={ __( 'Content' ) }
437
- labelPosition="top"
438
- __unstableInputWidth="80px"
439
- value={ contentSizeValue || '' }
440
- onChange={ ( nextContentSize ) => {
441
- setContentSizeValue( nextContentSize );
442
- } }
443
- units={ units }
444
- />
445
- <View>
446
- <Icon icon={ positionCenter } />
447
- </View>
448
- </HStack>
449
- </ToolsPanelItem>
450
- ) }
451
- { showWideSizeControl && (
452
- <ToolsPanelItem
453
- className="single-column"
454
- label={ __( 'Wide size' ) }
455
- hasValue={ hasUserSetWideSizeValue }
456
- onDeselect={ resetWideSizeValue }
457
- isShownByDefault={ true }
458
- >
459
- <HStack alignment="flex-end" justify="flex-start">
460
- <UnitControl
461
- label={ __( 'Wide' ) }
462
- labelPosition="top"
463
- __unstableInputWidth="80px"
464
- value={ wideSizeValue || '' }
465
- onChange={ ( nextWideSize ) => {
466
- setWideSizeValue( nextWideSize );
467
- } }
468
- units={ units }
469
- />
470
- <View>
471
- <Icon icon={ stretchWide } />
472
- </View>
473
- </HStack>
474
- </ToolsPanelItem>
475
- ) }
476
- { showPaddingControl && (
477
- <ToolsPanelItem
478
- hasValue={ hasPaddingValue }
479
- label={ __( 'Padding' ) }
480
- onDeselect={ resetPaddingValue }
481
- isShownByDefault={ true }
482
- className={ classnames( {
483
- 'tools-panel-item-spacing': showSpacingPresetsControl,
484
- } ) }
485
- >
486
- { ! showSpacingPresetsControl && (
487
- <BoxControl
488
- values={ paddingValues }
489
- onChange={ setPaddingValues }
490
- label={ __( 'Padding' ) }
491
- sides={ paddingSides }
492
- units={ units }
493
- allowReset={ false }
494
- splitOnAxis={ isAxialPadding }
495
- />
496
- ) }
497
- { showSpacingPresetsControl && (
498
- <SpacingSizesControl
499
- values={ paddingValues }
500
- onChange={ setPaddingValues }
501
- label={ __( 'Padding' ) }
502
- sides={ paddingSides }
503
- units={ units }
504
- allowReset={ false }
505
- splitOnAxis={ isAxialPadding }
506
- />
507
- ) }
508
- </ToolsPanelItem>
509
- ) }
510
- { showMarginControl && (
511
- <ToolsPanelItem
512
- hasValue={ hasMarginValue }
513
- label={ __( 'Margin' ) }
514
- onDeselect={ resetMarginValue }
515
- isShownByDefault={ true }
516
- className={ classnames( {
517
- 'tools-panel-item-spacing': showSpacingPresetsControl,
518
- } ) }
519
- >
520
- { ! showSpacingPresetsControl && (
521
- <BoxControl
522
- values={ marginValues }
523
- onChange={ setMarginValues }
524
- label={ __( 'Margin' ) }
525
- sides={ marginSides }
526
- units={ units }
527
- allowReset={ false }
528
- splitOnAxis={ isAxialMargin }
529
- />
530
- ) }
531
- { showSpacingPresetsControl && (
532
- <SpacingSizesControl
533
- values={ marginValues }
534
- onChange={ setMarginValues }
535
- label={ __( 'Margin' ) }
536
- sides={ marginSides }
537
- units={ units }
538
- allowReset={ false }
539
- splitOnAxis={ isAxialMargin }
540
- />
541
- ) }
542
- </ToolsPanelItem>
543
- ) }
544
- { showGapControl && (
545
- <ToolsPanelItem
546
- hasValue={ hasGapValue }
547
- label={ __( 'Block spacing' ) }
548
- onDeselect={ resetGapValue }
549
- isShownByDefault={ true }
550
- className={ classnames( {
551
- 'tools-panel-item-spacing': showSpacingPresetsControl,
552
- } ) }
553
- >
554
- { ! showSpacingPresetsControl &&
555
- ( isAxialGap ? (
556
- <BoxControl
557
- label={ __( 'Block spacing' ) }
558
- min={ 0 }
559
- onChange={ setGapValues }
560
- units={ units }
561
- sides={ gapSides }
562
- values={ gapValues }
563
- allowReset={ false }
564
- splitOnAxis={ isAxialGap }
565
- />
566
- ) : (
567
- <UnitControl
568
- label={ __( 'Block spacing' ) }
569
- __unstableInputWidth="80px"
570
- min={ 0 }
571
- onChange={ setGapValue }
572
- units={ units }
573
- value={ gapValue }
574
- />
575
- ) ) }
576
- { showSpacingPresetsControl && (
577
- <SpacingSizesControl
578
- label={ __( 'Block spacing' ) }
579
- min={ 0 }
580
- onChange={ setGapValues }
581
- sides={ isAxialGap ? gapSides : [ 'top' ] } // Use 'top' as the shorthand property in non-axial configurations.
582
- values={ gapValues }
583
- allowReset={ false }
584
- splitOnAxis={ isAxialGap }
585
- />
586
- ) }
587
- </ToolsPanelItem>
588
- ) }
589
- { showMinHeightControl && (
590
- <ToolsPanelItem
591
- hasValue={ hasMinHeightValue }
592
- label={ __( 'Min. height' ) }
593
- onDeselect={ resetMinHeightValue }
594
- isShownByDefault={ true }
595
- >
596
- <HeightControl
597
- label={ __( 'Min. height' ) }
598
- value={ minHeightValue }
599
- onChange={ setMinHeightValue }
600
- />
601
- </ToolsPanelItem>
602
- ) }
603
- </ToolsPanel>
63
+ <StylesDimensionsPanel
64
+ inheritedValue={ inheritedStyleWithLayout }
65
+ value={ styleWithLayout }
66
+ onChange={ onChange }
67
+ settings={ settings }
68
+ includeLayoutControls
69
+ />
604
70
  );
605
71
  }